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

主站蜘蛛池模板: 在线毛片网站| 国产天天射| 久久黄色影院| 亚洲无限乱码一二三四区| 香蕉色综合| 99热这里只有精品5| 日韩av在线直播| 精品无码国产自产野外拍在线| 综1合AV在线播放| 欧美日本不卡| 在线免费观看AV| 久草视频福利在线观看| 最新亚洲人成无码网站欣赏网 | 国内精品九九久久久精品| 九色免费视频| 丰满人妻久久中文字幕| 伊人久久大香线蕉影院| 福利视频99| 日本午夜影院| 久久综合九九亚洲一区| 美女无遮挡免费视频网站| AV老司机AV天堂| 无套av在线| 日韩精品免费一线在线观看| 波多野结衣一区二区三区88| 亚洲成av人无码综合在线观看| 99视频在线免费观看| 日本三级欧美三级| 国产成人高清精品免费软件| 996免费视频国产在线播放| 中文字幕一区二区人妻电影| 欧美另类第一页| 成人噜噜噜视频在线观看| 在线免费观看AV| 亚洲国产精品日韩欧美一区| 亚洲成在线观看 | 国产区网址| 久久久久亚洲Av片无码观看| 亚洲一区二区无码视频| 国产精品自在线天天看片| 日韩在线成年视频人网站观看| 免费可以看的无遮挡av无码| 国产超碰在线观看| 欧美区一区二区三| 波多野结衣无码视频在线观看| 国产 在线视频无码| 狠狠色丁婷婷综合久久| 日韩福利在线观看| 无码专区第一页| 国产91色在线| 性欧美在线| 亚洲AV一二三区无码AV蜜桃| 最新精品国偷自产在线| 国产乱子伦视频在线播放| 手机在线国产精品| 夜夜操狠狠操| 免费无遮挡AV| 美女内射视频WWW网站午夜 | 漂亮人妻被中出中文字幕久久| 三上悠亚在线精品二区| 一区二区三区精品视频在线观看| 夜精品a一区二区三区| 亚洲 日韩 激情 无码 中出| 精品自窥自偷在线看| 国产精品亚欧美一区二区| 伊人久久大香线蕉影院| 国产手机在线小视频免费观看| 国产成人精品一区二区| 亚洲男人天堂2020| 波多野结衣久久高清免费| 日韩中文字幕免费在线观看 | 亚洲AV无码乱码在线观看代蜜桃| 国产青青草视频| 国内精自视频品线一二区| 欧洲日本亚洲中文字幕| 日韩精品一区二区三区大桥未久| 波多野结衣国产精品| 在线不卡免费视频| 精品人妻无码中字系列| 国产麻豆福利av在线播放 | 日韩 欧美 国产 精品 综合| 99热亚洲精品6码|