999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言程序設計語法知識體系結構總結

2009-09-06 06:26:48郭俊鳳王開鑄
計算機教育 2009年22期

郭俊鳳 王開鑄

摘要:本文就C語言程序設計知識體系結構進行深入的分析與歸納,提出C語言程序設計的語法方面的知識體系結構。首先,討論知識體系結構中各概念的定義;其次,分別給出C語言的語法知識體系和程序設計的語法知識體系。為設計C語言程序設計題庫提供理論基礎。

關鍵詞:知識體系;C語言程序設計;C語言語法;C程序語法

中圖分類號:G642 文獻標識碼:A

1知識體系

定義1:知識是指特定事物、普遍事理、方法、過程、式樣、結構和原理等在大腦中的記憶,以及它們間的關系的記憶。知識是無限的,而結合某一領域的知識卻是有限的。也就是說,C語言程序設計知識體系結構中有關它們的語法知識體系是客觀存在的。

定義2:知識點是指具體領域中符合定義1的知識。知識的表現形式是概念、判斷、推理。其中概念分為具體概念和抽象概念。它們的表現形式是具體事物和抽象名詞。2500年前荀況稱它們為實知和名知。而判斷是描述事物的屬性或事物間的關系,他們的表現形式是由詞語組成的命題,即陳述句;推理是一段原委的敘述,它由一個或多個句子組成。從它們的語義內容來看,C語言知識可以分為14類:定義,功能,組成,作用,特征,區別,算法,分類,原理,方法,策略,過程,應用,方法。

定義3:知識單元是指知識在語義上是同一概念的性質和(或)同一種屬關系等知識組成的知識點集合。知識單元的大小是與知識單元中知識點的多少成正比。而由可滿足某一應用的最少知識點組成的知識單元稱為獨立知識單元。例如:C語言的常量是一個知識單元,而常量中的十進制常量是一個獨立知識單元。

定義4:知識塊是指在語義上有聯系的若干個知識單元的集合。知識塊的大小與集合中知識單元的多少成正比。而由可滿足某些應用的最少獨立知識單元組成的知識塊稱為獨立知識塊。例如:C語言中的基本數據類型是一個知識塊,而十進制數據類型、值域和對應的運算符是一個獨立知識塊。

定義5:知識體系是指能夠構成一個完整應用的若干的知識塊的結合。知識體系的大小是與知識塊的多少成正比的。而構成一個最小的完整應用的最少知識塊的集合稱為獨立知識體系。

定義6:知識體系結構是指知識體系中知識點間和(或)知識單元間和(或)知識塊間具有橫向的直接或間接關系的知識體系。例如:數組是一個知識塊,指針也是一個知識塊。那么指針數組或數組指針是這兩個知識橫向聯系產生的知識塊。具有這樣知識塊的知識體系稱為知識體系結構。知識體系結構也存在一個基本的知識體系結構。

領域知識體系結構是指一個具體領域的知識體系結構,本文就是探討和提出“C語言程序設計”這個具體領域的知識體系結構。

2C語言程序設計的知識體系

現用backus的元語言來描述C語言程序設計的知識體系。該元語言有三個符號:<>、??=、|,其中,<>里面存放非終極符,??=是將其左邊的非終極符替換成其右邊的內容。|表示“或者”。例如:<字>??=<字母>|<數字>|<特殊符號>是一個元語言的表示,其意思是字可被替換成字母或者數字或者特殊符號。<函數>??=<函數頭><函數體>。其意思是函數可被替換成函數頭和函數體。或者說,函數是由函數頭和函數體兩部分組成。本文為了研究方便,把可選項括在元符號“[”和“]”中。

??=

??=

??=

這三個產生式表示C語言程序設計知識體系由六個知識體系組成的。其中,C語言語法知識體系是指C語言的組成及其每個成分的組成規則。同理,C程序設計的語法知識體系是指該程序的組成及其每個成分的組成規則。

C語言語義知識體系是指C語言的各個成分的含義及其在語境中的含義。同理,C程序設計的語義是指程序的各個成分的含義及其在語境中的含義。

語用原本是描述該語言成分在計算機中如何實現的含義,即計算機受到程序的“刺激”后,它有什么反應。當語用這個詞用在程序設計中時,是指使用者用程序的成分、部分、整體在解題中的用途。即它們的功能。惟獨語用在這一點上,它的知識體系是無限的。

本文僅探討C語言語法知識體系和C程序設計語法知識體系。

3C語言語法知識體系

??=<字><詞><句>

3.1字

<字>??=<字母>|<數字>|<特殊符號>

<字母>??=<大寫字母>|<小寫字母>

<大寫字母>??=A|B|C|……|Z

<小寫字母>??=a | b | c |……| z

<數字>??=0 | 1 | 2 | 3 |……| 9

<特殊符號>??= +|–|*|/|%|<|>|=|&|||! | : |, |; |. |_|#|″|′||~|∧|?|空格符|[|]|{|}|(|) ,由上可知,C語言有92個字。

3.2詞

<詞>??=<標識符>|<關鍵詞>|<運算符>|<分隔符>|<常量>|<注釋符>

<標識符>??=<字母>|<下劃線>|<標識符><數字>|<標識符><字母>|<標識符><下劃線>

<關鍵詞>??=auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned| void|volatile|while

<運算符>??=<成員類運算符>|<目類運算符>|<乘法類運算符>|<加法類運算符>|<移位類運算符>|<關系類運算符>|<等號類運算符>|<位運算符>|<邏輯運算符>|<條件運算符>|<賦值類運算符>| <逗號運算符>

<成員運算符>??=() | [] | . | –>

<目類運算符>??= ! | ~ | ++ | – – | – |(類型)| * | & | sizeof

<乘法類運算符>??=* | / | %

<加法類運算符>??= +| –

<移位類運算符>??=<< | >>

<關系類運算符>??=< | <= | > | >=

<等號類運算符>??= != | = =

<位類運算符>??= & | ∧| |

<邏輯類運算符>??=&& | ||

<條件運算符>??=?:

<賦值類運算符>??= += | – =| *= | /= | %= | < <= | >>= | &=| ∧= | != | =

<逗號運算符>??=,

<分隔符>??=,| 空格符 | ; | : | {}

<注釋符>??= /* */

<常量>??=<數值常量>|<字符常量>|<字符串常量>

<數值常量>??=<十進制常量>|<八進制常量>|<十六進制常量>

<十進制常量>??=<整數>|<實數>|<科學數表示>

<整數>??= <無符號整數>|+<無符號整數>|-<無符號整數

<無符號整數>??=<數字>|<無符號整數><數字>

<實數>??=<無符號整數>|<十進制小數>|<無符號小數><十進制小數>

<十進制小數>??=.<無符號整數>

<科學數表示>??=<實數><指數>

<指數>??=e<整數>|E<整數>

<八進制常量>??=<八進制整數>

<八進制整數>??=0<八進制數字>

<八進制數字>??=0 | 1 | 2 | 3 | 4 | 5 | 6 | 7

<十六進制常量>??=<十六進制整數>

<十六進制整數>??=0x<十六進制數字>

<十六進制數字>??=0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F

<字符常量>??=<字>

<字符串常量>??=”<字符串>”

<字符串>??=<字>|<字符串><字>

由上可知,C語言有六類詞,除關鍵詞有32個,運算符43個,分隔符有5個,注釋符有1個以外,每類詞都有自己的組成規則。符合規則的詞為正確的詞,否則為錯誤的詞。共有上述18條規則。

3.3詞組

C語言只有一種詞組,稱為表達式。表達式是由運算符與運算對象組成的。C語言的基本表達式有15個,基本表達式是指一個運算符和它的運算對象組成的。它們是:

<表達式>??=<本原表達式>|*<表達式>|&<表達式>|-<表達式>|!<表達式>|~<表達式>|++<類值>|– –<類值>|<類值>++|<類值>– –|sizeof<表達式>|(類型名)<表達式>|<表達式><二目運算符><表達式>|<表達式>?<表達式>:<表達式>|<表達式>,<表達式>

<本原表達式>??=<標識符>|<常量>|<字符串>|<表達式>|<本原表達式>(<表達式表>opt)|<本原表達式>[<表達式>]|<類值>.<標識符>|<本原表達式>-><標識符>

<類值>??=<標識符>|<本原表達式>[<表達式>]|<類值>.<標識符>|<本原表達式>-><標識符>|*<表達式>|(<類值>)

<本原表達式運算符>??= () | [] | . | –>

它們具有最高優先級。它們的結合性是從左到右的。

<一目運算符>??= * | & | – | ! | ~ | ++ | – – | sizeof | (<類型名>)

它們的優先級僅次于本原表達式運算符,而高于任何二目運算符的優先級。它們的結合性是從右到左的。

<二目運算符>??= * | / | % | + | – | >> | << | < | > | <= | >= | = = | != | & |∧| | | && | || |

它們的優先級僅次于一目運算符,高于賦值運算符的優先級。它們的結合性是從左到右的。它們間的優先級是按它們的排序遞減的。

<三目運算符>??=? :

它們的優先級次于一目運算符和二目運算符,高于賦值運算符。它的結合性是自右至左的。

<賦值運算符>??= =| += | – = | *= | /= | %= | >>= | <<= | &= | ∧= | !=

它們的優先級次于二目運算符的優先級,高于逗號運算符的優先級。所有的賦值運算符具有同一個優先級,同時,它們的結合性是從右到左的。

<逗號運算符>??=,

逗號運算符的優先級最低,而它的結合性是從左到右的。

3.4句

<句>??=<類型說明句>|<執行句>

<類型說明句>??=<類型說明句區分符>|[<初始化說明符表>];

<類型說明句區分符>??=<類型區分符>[<初始化說明符表>] |<存儲級區分符>[<初始化說明符表>]

<存儲級區分符>??=auto | static | extern | register | typedef

<類型區分符>??=char | int | short | long | unsigned | float | double | <構造型區分符> | <類型定義名>

<初始化說明符>??=<說明符>[<初始化>]

<說明符>??=<標識符>|(<說明符>)|<說明符>[<常量表達式>]

<構造型區分符>??=<結構聯合區分符>|<枚舉區分符>

<結構聯合區分符>??=struct{<結構說明句表>} |struct<標識符>{<結構說明句表>}|struct<標識符>|union{<結構說明句表>}|union<標識符>{<結構說明句表>}|union<標識符>

<結構說明句表>??=<結構說明句>|<結構說明句><結構說明句表>

<結構說明句>??=<類型區分符><結構說明符表>;

<結構說明符表>??=<結構說明符>|<結構說明符>,<結構說明符表>

<結構說明符>??=<說明符>|<說明符>:<常量表達式>|:<常量表達式>

<初始化>??=<表達式>|={<初始化表>}|={<初始化表>,}

<初始化表>??=<表達式>|<初始化表>,<初始化表>| {<初始化表>}

<構造類型說明語句>??=<結構聯合類型說明語句>|<枚舉類型說明語句>

<結構聯合類型說明語句>??=<結構聯合保留字><結構聯合類型句>{<結構聯合成員說明語句表>}<結構聯合對象表>

<枚舉區分符>??= enum<類型名>{常量名表}; | enum{常量名表}; | enum<類型名>;

<常量名表>??=<常量名>|<常量名>=<初始化表>|<常量名>,<常量名表>|<常量名>=<初始化表>,<常量名表>

<類型名>??=<標識符>

<復合語句>??={[<執行句表>][<執行語句表>]}

<類型說明句表>??=<類型說明句>|<類型說明句><類型說明句表>

<執行句表>??=<執行句>|<執行句><執行句表>

<執行句>??=<復合句>|<表達式>;|if (<表達式>)<執行句>|if(<表達式>)<執行句>else<執行句> |while(<表達式>)<執行句>|do <執行句>while(<表達式>);

|for([<表達式1>];[<表達式2>]); [<表達式3>])<執行句>

|switch (<表達式>)<執行句>|case <常量表達式>:<執行句>

|default:<執行句>|break;|continue;|return ;|return <表達式>

|goto<標識符>;|<標識符>:<執行句>| ; |<調用語句>

4C程序語法知識體系

4.1程序

<程序>??=[<預處理>]<外部定義句>|[<預處理>]<外部定義句><程序>

<外部定義句>??=<函數定義句>|<數據定義句>

<函數定義句>??=[<類型區分符>]<函數說明符><函數體>

<函數說明符>??=<說明符>([<參數表>])

<參數表>??=<標識符>|<標識符>,<參數表>| <說明句>|<說明句>,<參數表>

<函數體>??=<類型說明句表><函數語句>|<函數語句>

<函數語句>??={[<類型說明句表>] <執行句表>}

<數據定義句>??=[extern][<類型區分符>][<初始化說明符表>];|[static]<類型區分符>[<初始化說明符表>];

4.2預處理

#define<標識符><詞串>

<詞串>??=<詞><詞串>

#define<標識符>(<標識符>,……,<標識符>)<詞串>

#undef<標識符>

#include<<文件名>>

#include“<文件名>”

#if <常量表達式>

#ifdef<標識符>

#ifndef<標識符>

#else

#endif

#line<常量><標識符>

參考文獻:

[1] 王開鑄. 實用C語言程序設計[M]. 哈爾濱:哈爾濱工業大學出版社,2002.

[2] 譚浩強. C語言程序設計[M]. 3版. 北京:清華大學出版社,2005.

[3] 郭俊鳳,朱景福. C程序設計案例教程[M]. 北京:清華大學出版社.2009.

Summary of System Structure of Grammatical Knowledge in C Language Programming

GUO Jun-feng, WANG Kai-zhu

(Heilongjiang East College, Harbin 150086, China)

Abstract: This paper analyses and generalizes system structure of knowledge on C language programming design deeply,and puts forward a system structure on grammatical knowledge of C language programming design. At first,we discuss on every definition of conceptions in system structure of knowledge; Then, we give the system of grammatical knowledge on C language and on programming design respectively. It also provides theoretical basis for designing exam database of C language programming design.

Key words: system structure of knowledge; C language programming design; C language grammar; C programming grammar

主站蜘蛛池模板: 强奷白丝美女在线观看| 欧美a级在线| 久久青草精品一区二区三区| 成人午夜天| 亚洲综合狠狠| 日本欧美一二三区色视频| 国产欧美日韩va另类在线播放| 午夜精品一区二区蜜桃| 亚洲精品中文字幕无乱码| 亚洲第一黄片大全| 人妻夜夜爽天天爽| 久久久亚洲色| 无码在线激情片| 精品国产网| 成人伊人色一区二区三区| 亚洲第一视频网| 成人韩免费网站| 国产极品美女在线播放| 97久久精品人人| 亚洲一区二区约美女探花| 中文字幕亚洲专区第19页| 制服丝袜无码每日更新| 久久这里只有精品23| 996免费视频国产在线播放| 国产成人AV男人的天堂| 亚洲欧美在线综合图区| 美女视频黄频a免费高清不卡| 国产一级一级毛片永久| 国产男人天堂| 激情网址在线观看| 最新亚洲人成网站在线观看| 欧美日韩精品一区二区在线线 | 91国内外精品自在线播放| 成人久久精品一区二区三区| 亚洲成人网在线观看| 亚洲欧美在线综合一区二区三区 | 人妻无码中文字幕第一区| 妇女自拍偷自拍亚洲精品| 狠狠色香婷婷久久亚洲精品| 91无码人妻精品一区| 91麻豆国产视频| 亚洲精品无码AV电影在线播放| 亚洲高清国产拍精品26u| AV无码一区二区三区四区| 亚洲一区波多野结衣二区三区| 玖玖免费视频在线观看| 中文字幕 欧美日韩| 亚洲国产欧洲精品路线久久| 99精品这里只有精品高清视频| 手机在线免费不卡一区二| 亚洲乱亚洲乱妇24p| 波多野结衣爽到高潮漏水大喷| 五月天福利视频| 色综合激情网| 手机在线免费不卡一区二| 国产情侣一区二区三区| 中文字幕在线观看日本| 国产人妖视频一区在线观看| 狠狠亚洲婷婷综合色香| 色综合天天综合中文网| 久久国产黑丝袜视频| 高h视频在线| 噜噜噜久久| 亚洲a级在线观看| 色网在线视频| 日本不卡视频在线| 日韩毛片免费| 久久伊人操| 一级爆乳无码av| 午夜丁香婷婷| 国产精品自在线天天看片| 国产成人艳妇AA视频在线| 婷婷伊人久久| 国产欧美日韩va另类在线播放| 精品国产黑色丝袜高跟鞋| 波多野结衣久久高清免费| 亚洲综合色婷婷中文字幕| 夜夜操天天摸| 国产青榴视频| 亚洲精品国产日韩无码AV永久免费网 | 老司机午夜精品视频你懂的| 久久黄色视频影|