程序設(shè)計語言基本概念與試題_第1頁
程序設(shè)計語言基本概念與試題_第2頁
程序設(shè)計語言基本概念與試題_第3頁
程序設(shè)計語言基本概念與試題_第4頁
程序設(shè)計語言基本概念與試題_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、程序設(shè)計語言基本概念與試題一、基本概念在計算機中,程序設(shè)計語言可劃分為低級語言和高級語言兩大類,與高級語言相比,用低級語言開發(fā)的程序,其運行效率高,但開發(fā)效率低。與程序設(shè)計相關(guān)的基本概念如下。(1)低級語言:又稱面向機器語言,它是特定的計算機系統(tǒng)所固有的語言。(2)匯編語言:是機器語言的一種提升,它使用了一些助記符來表示機器指令中的操作碼和操作數(shù)。但它仍然是一種和計算機機器語言十分接近的語言,使用起來仍然不太方便。(3)高級語言:與人們的自然語言比較接近,使用起來很方便,也極大的提高了程序設(shè)計效率。(4)編譯程序:也稱編譯器,將源程序翻譯成目標語言程序,然后在計算機上運行目標程序。雖然執(zhí)行效率

2、高,但編寫出來的程序可讀性很差,且難以修改和維護。(5)解釋程序:也稱解釋器,它或者直接解釋執(zhí)行源程序,或者將源程序翻譯成某種中間代碼后再加以執(zhí)行。(6)程序設(shè)計語言:程序設(shè)計語言的定義都涉及語法、語義和語用等方面。(7)語法是指由程序語言的基本符號組成程序中的各個語法成分(包括程序)的一組規(guī)則,其中由基本字符構(gòu)成的符號(單詞)書寫規(guī)則稱為詞法規(guī)則,由符號構(gòu)成語法成分的規(guī)則稱為語法規(guī)則。(8)語義是程序語言中按語法規(guī)則構(gòu)成的各個語法成分的含義,分為靜態(tài)語義和動態(tài)語義。(9)語用表示了構(gòu)成語言的各個記號和使用者的關(guān)系,涉及符號的來源、使用和影響。(10)語境是指理解和實現(xiàn)程序設(shè)計語言的環(huán)境,包括

3、編譯環(huán)境和運行環(huán)境。二、程序設(shè)計語言的分類1命令式程序設(shè)計語言命令式程序設(shè)計語言是基于動作的語言,在這種語言中,計算被看成是動作的序列。結(jié)構(gòu)化程序設(shè)計語言屬于命令式語言類,其結(jié)構(gòu)特性主要有:一是用自頂向下逐步精化的方法編程,二是按照模塊組裝的方法編程,三是程序只包含順序、判定(分支)及循環(huán)結(jié)構(gòu),而且每種構(gòu)造只允許單入口和單出口。C語言、PASCAl等都是典型的結(jié)構(gòu)化程序設(shè)計語言。2面向?qū)ο蟪绦蛟O(shè)計語言面向?qū)ο蟮某绦蛟O(shè)計在很大程度上應(yīng)歸功于從模擬領(lǐng)域發(fā)展起來的Simula,Simula提出了類和對象的概念。C+、Java和smalltalk是面向?qū)ο蟪绦蛟O(shè)計語言的代表。3函數(shù)式程序設(shè)計語言函數(shù)式

4、程序設(shè)計語言是一類以-演算為基礎(chǔ)的語言,其概念來自于Lisp,一個在 1958年為了人工智能應(yīng)用而設(shè)計的語言。函數(shù)是一種對應(yīng)規(guī)則(映射),它使定義域中每個元素和值域中唯一的元素對應(yīng)。函數(shù)定義1:Squarex:=x×x函數(shù)定義2:Plustwox:= PlusonePlusonex函數(shù)定義3:factn:=if n =0 then 1 else n×factn-14邏輯型程序設(shè)計語言邏輯型程序設(shè)計語言是一類以形式邏輯為基礎(chǔ)的語言,其代表是建立在關(guān)系理論和一階謂詞理論基礎(chǔ)上的Prolog(Programming in Logic)。Prolog程序是一系列事實、數(shù)據(jù)對象或事實

5、間的具體關(guān)系和規(guī)則的集合。通過查詢操作把事實和規(guī)則輸入數(shù)據(jù)庫。用戶通過輸入查詢來執(zhí)行程序。在 Prolog中,關(guān)鍵操作是模式匹配,通過匹配一組變量與一個預(yù)先定義的模式并將該組變量賦給該模式來完成操作。三、程序設(shè)計語言的基本成分1數(shù)據(jù)成分數(shù)據(jù)成分指的是一種程序語言的數(shù)據(jù)類型。(1)常量和變量按照程序運行時數(shù)據(jù)的值能否改變,將數(shù)據(jù)分為常量和變量。變量具有左值和右值,在程序運行過程中其右值可以改變;常量只有右值,在程序運行過程中不能改變。(2)全局變量和局部變量按照數(shù)據(jù)的作用域范圍,可分為全局變量和局部變量。系統(tǒng)為全局變量分配的存儲空間在程序運行的過程中一般是不改變的,而為局部變量分配的存儲單元是動

6、態(tài)改變的。(3)數(shù)據(jù)類型按照數(shù)據(jù)組織形式不同可將數(shù)據(jù)分為基本類型、用戶定義類型、構(gòu)造類型和其他類型。基本類型:整型(int)、字符型(char)、實型(float、double)和布爾類型(bool)。特殊類型:空類型(void)。用戶定義類型:枚舉類型(enum)。構(gòu)造類型:數(shù)組、結(jié)構(gòu)、聯(lián)合。指針類型:type *。抽象數(shù)據(jù)類型:類類型。2運算成分程序語言的運算成分指明允許使用的運算符號及運算規(guī)則。大多數(shù)高級程序語言的基本運算可分成算術(shù)運算、關(guān)系運算和邏輯運算,有些語言如C(C+)還提供位運算。3控制成分控制成分指明語言允許表述的控制結(jié)構(gòu)。(1)順序結(jié)構(gòu)順序結(jié)構(gòu)用來表示一個計算操作序列,從第

7、一個操作開始,按順序依次執(zhí)行后續(xù)的操作,直到最后一個操作,如圖2-1所示。(2)選擇結(jié)構(gòu)選擇結(jié)構(gòu)提供了在兩種或多種分支中選擇其中一個的邏輯,如圖2-2所示。 圖 2-1 順序結(jié)構(gòu)示意圖 圖 2-2 選擇結(jié)構(gòu)示意圖(3)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)描述了重復(fù)計算的過程,通常由三部分組成:初始化、循環(huán)體和循環(huán)條件。主要有兩種形式:while型循環(huán)結(jié)構(gòu)和do-while型循環(huán)結(jié)構(gòu),如圖2-3所示。 (4)C(C+)語言提供的控制語句復(fù)合語句復(fù)合語句用于描述順序控制結(jié)構(gòu)。復(fù)合語句是一個整體,要么全部執(zhí)行,要么一條語句也不執(zhí)行。 if語句和switch語句if語句實現(xiàn)的是雙分支的選擇結(jié)

8、構(gòu),其一般形式為: 1. if(表達式)  2. 語句1;   3. else   4. 語句2; 需要注意的是if和else的匹配關(guān)系。switch語句描述了多分支的選擇結(jié)構(gòu),其一般形式為: 1. switch(表達式)   2. case 常量表達式1:語句1;  3.  case 常量表達式2:語句2;  4.  5.    6.  case 常量表達式n:語句n;  7. 

9、60;default:語句n+1;   8.  9.    循環(huán)語句主要指while語句、do-while語句和for語句。 while語句描述了先判斷條件再執(zhí)行循環(huán)體的控制結(jié)構(gòu),其一般形式為:1. while(條件表達式)   2.    3.  4. 循環(huán)體語句;   5.  6.   do-while語句描述了先執(zhí)行循環(huán)再判斷條件的控制結(jié)構(gòu),其一般格式是:1. do   2.  3. 循環(huán)體語句; 

10、 4. while(條件表達式);  for語句的基本格式是:1. for(表達式1;表達式2;表達式3;)循環(huán)體語句; 可用while語句等價地表示為:1. 表達式1;   2. while(表達式2)   3. 循環(huán)體語句;  4. 表達式3;   5.   4函數(shù)函數(shù)是程序模塊的主要成分,它是一段具有獨立功能的程序。函數(shù)的使用涉及三個概念:函數(shù)定義、函數(shù)聲明和函數(shù)調(diào)用。函數(shù)定義函數(shù)定義包括兩部分:函數(shù)首部和函數(shù)體。函數(shù)定義描述了函數(shù)做什么和怎么做。其一般格式是

11、:1. 返回值類型函數(shù)名(形參表)   2.    3. 函數(shù)體;   4.   5.函數(shù)聲明函數(shù)應(yīng)該先聲明后引用。如果程序中對一個函數(shù)的調(diào)用在該函數(shù)的定義之前進行,則應(yīng)該在調(diào)用前對被調(diào)用函數(shù)進行聲明。函數(shù)原型用于聲明函數(shù)。函數(shù)聲明的一般形式為:1. 返回值類型函數(shù)名(形參表); 函數(shù)調(diào)用當在一個函數(shù)(稱為主調(diào)函數(shù))中需要使用另一個函數(shù)(稱為被調(diào)函數(shù))實現(xiàn)的功能時,便以名字進行調(diào)用,稱為函數(shù)調(diào)用。函數(shù)調(diào)用的一般形式為:1. 函數(shù)名(實參表); 四、值調(diào)用和引用調(diào)用在C程序的執(zhí)行過程中,通過函數(shù)調(diào)用實現(xiàn)了函

12、數(shù)定義時描述的功能。函數(shù)體中若調(diào)用自己,則稱為遞歸調(diào)用。C和C+通過傳值方式將實參傳遞給形參。調(diào)用函數(shù)和被調(diào)用函數(shù)之間交換信息的方法主要有兩種:一種是由被調(diào)函數(shù)把返回值返回給主調(diào)函數(shù),另一種是通過參數(shù)帶回信息。函數(shù)調(diào)用時實參與形參間交換信息的方法有值調(diào)用和引用調(diào)用兩種。(1)傳值調(diào)用(Call by Value)若實現(xiàn)函數(shù)調(diào)用時實參向形式參數(shù)傳遞相應(yīng)類型的值(副本),則稱為是傳值調(diào)用。C語言采用的是傳值調(diào)用的方式。傳值調(diào)用最顯著的特征是被調(diào)用的函數(shù)內(nèi)部對形參的修改不影響實參的值。傳值調(diào)用的參數(shù)傳遞和被調(diào)用函數(shù)內(nèi)對參數(shù)的使用主要按下述原則:函數(shù)定義時形參被當作局部變量看待,在函數(shù)被調(diào)用時為形參分

13、配存儲單元;調(diào)用函數(shù)前,首先計算實參的值,調(diào)用時將實參的值放入形參的存儲單元;被調(diào)用函數(shù)內(nèi)部對形參單元中的數(shù)據(jù)進行直接訪問。(2)引用調(diào)用(Call by Reference)引用是C+中增加的數(shù)據(jù)類型,當形式參數(shù)為引用類型時,形參名實際上是實參的別名,函數(shù)中對形參的訪問和修改實際上就是針對相應(yīng)實際參數(shù)所作的訪問和改變。實際上,引用調(diào)用是將實參的地址傳遞給形參,使得形參的地址就是對應(yīng)實參的地址。引用調(diào)用的參數(shù)傳遞和被調(diào)用函數(shù)內(nèi)對參數(shù)的使用主要按下述原則處理:函數(shù)定義時形參被當作局部變量看待,在函數(shù)被調(diào)用時為形參分配存儲單元;調(diào)用時將實參的地址放入形參的存儲單元;被調(diào)用函數(shù)內(nèi)部對形參單元中的數(shù)據(jù)

14、(地址)進行間接訪問。怎么考【試題 2-1】2011年 11月真題 20若C程序的表達式中引用了未賦初值的變量,則( 20)。(20)A. 編譯時一定會報告錯誤信息,該程序不能允許B. 可以通過編譯并運行,但運行時一定會報告異常C. 可以通過編譯,但鏈接時一定會報告錯誤而不能運行D. 可以通過編譯并運行,但運行結(jié)果不一定是期望的結(jié)果分析:全局變量和靜態(tài)局部變量在定義時如果沒有初始化,編譯時會自動初始化為0;而普通的局部變量,如果沒有初始化,則其值是一個隨機數(shù)。在 C程序表達式中,只要引用的變量定義了,就可以通過編譯并運行,但運行結(jié)果不一定是期望的結(jié)果。【答案:d】【試題 2-2】2011年 1

15、1月真題 49、50函數(shù)t、f的定義如下所示,其中, a是整型全局變量。設(shè)調(diào)用函數(shù)t前a的值為5,則在函數(shù)中以傳值調(diào)用( call by value)方式調(diào)用函數(shù)f時,輸出為(49);在函數(shù)t中以引用調(diào)用(call by reference)方式調(diào)用函數(shù)時,輸出為(50)。 (49)A. 12  B. 16  C. 20  D. 24(50)A. 12  B. 16  C. 20  D. 24分析:本題主要考查函數(shù)調(diào)用時參數(shù)的傳遞方式。如果采用傳值方式調(diào)用,則形參值的變化不會影響實參;而采用引用方式調(diào)用,則形參值的變化直接反

16、映到實參。本題中如果在函數(shù)t中采用傳值方式調(diào)用函數(shù)f,a的值傳給形參r,在函數(shù)f中,a的值變?yōu)?,r的值為10并返回賦給變量x,由于a是全局變量,退出函數(shù)f后a的值依然為6,所以函數(shù)t的輸出結(jié)果為16。如果函數(shù)t采用傳值方式調(diào)用函數(shù)f,則形參r就是對實參a的引用,對r的修改就是對a的修改,在執(zhí)行a=r+1時,a和r的值都變?yōu)?,執(zhí)行r=r*2,a和r的值都變?yōu)?2,并將r的值返回給x,因此函數(shù)t的輸出結(jié)果為24。【答案:(49)B (50)D】【試題 2-3】2011年 11月真題 57在KMP模式匹配算法中,需要求解模式串 p的next函數(shù)值,其定義如下(其中, j為模式串字符的序號)。對于

17、模式串“abaabaca”,其next函數(shù)值序列為( 57)。 (57)A. 01111111  B. 01122341  C. 01234567  D. 01122334分析:模式串“abaabaca”的next函數(shù)值序列如下。 當j=1時,next1=0;當j=2時,k不存在,next2=1;當j=3時,不存在滿足條件的k,next3=1;當j=4時,p1=p3=a,存在k=2,使得 ' p1 p2 Lpk .1'=' pj.k +1 pj.k +2 L pj.1' ,故next4=2;當j=5時,存在k=2

18、,使得 ' p1 p2 Lpk .1'=' pj.k +1 pj.k +2 L pj.1' ,即p1=p4=a,故next5=2;當j=6時,存在k=3,使得p1p2 =p4p5 ,故 next6=3;當j=7時,存在k=4,使得p1p2 p3 =p4p5 p6 ,故next7=4;當j=8時,不存在滿足條件的k值,故 next8=1?!敬鸢福築】【試題 2-4】2011年 5月真題 22若一種程序設(shè)計語言規(guī)定其程序中的數(shù)據(jù)必須具有類型,則有利于( 22)。在翻譯程序的過程中為數(shù)據(jù)合理分配存儲單元對參與表達式計算的數(shù)據(jù)對象進行檢查定義和應(yīng)用動態(tài)數(shù)據(jù)結(jié)構(gòu)規(guī)定數(shù)據(jù)對

19、象的取值范圍及能夠進行的運算對數(shù)據(jù)進行強制類型轉(zhuǎn)換(22)A B C D分析:數(shù)據(jù)是程序操作的對象,類型說明數(shù)據(jù)占用的內(nèi)存和存放形式。數(shù)據(jù)類型不僅可用于在基礎(chǔ)機器中完成對值得布局,還可以用于檢查表達式中對運算的應(yīng)用是否正確。【答案:B】【試題 2-5】2011年 5月真題 48以下關(guān)于高級程序設(shè)計語言翻譯的敘述中,正確的是( 48)。(48)A可以先進行語法分析,再進行詞法分析B在語法分析階段可以發(fā)現(xiàn)程序中的所有錯誤C語義分析階段的工作與目標機器的體系結(jié)構(gòu)密切相關(guān)D目標代碼生成階段的工作與目標機器的體系結(jié)構(gòu)密切相關(guān)分析:對于高級程序設(shè)計語言,編譯程序會把編寫的源程序翻譯成與之等價的目標程序。編

20、譯程序的工作過程分為:詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標代碼生成。語法分析要在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞符號序列分解成各類語法單位??梢姡冗M行詞法分析,然后進行語法分析,故選項A錯誤。在語法分析階段能發(fā)現(xiàn)語法錯誤,但不能發(fā)現(xiàn)語義錯誤,因此選項B錯誤。語義分析階段主要檢查源程序是否包含靜態(tài)語義錯誤,并收集類型信息供后面的代碼生成階段使用,可見,語義分析階段工作與與目標機器的體系結(jié)構(gòu)關(guān)聯(lián)不大,選項C錯誤。目標代碼生成階段的任務(wù)是把中間代碼變化成特定機器上的絕對指令代碼、可重定位的指令代碼或匯編指令代碼,這個階段的工作與具體的機器密切相關(guān)。【答案: D】【

21、試題 2-6】2011年 5月真題 50傳值與傳地址是函數(shù)調(diào)用時常采用的信息傳遞方式,( 50)。(50)A在傳值方式下,是將形參的值傳給實參B在傳值方式下,形參可以是任意形式的表達式C在傳地址方式下,是將實參的地址傳給形參D在傳地址方式下,實參可以是任意形式的表達式分析:在傳值方式下,是將實參的值傳給形參,形參不能向?qū)嶋H參數(shù)傳遞信息;實參可以是表達式或常量,也可以是變量或數(shù)組元素。在傳地址方式下,是將實參的地址傳給形參,實參和形參都指向同一個對象,被調(diào)用函數(shù)中對形式參數(shù)的修改實際上就是對實際參數(shù)的修改,可以實現(xiàn)數(shù)據(jù)的雙向傳遞。實參必須是變量地址、數(shù)組名,不能是表達式或常量。形參就是形式參數(shù),

22、用一個變量來代表,不能是表達式。【答案:C】【試題 2-7】2010年 11月真題 50以下關(guān)于匯編語言的敘述中,錯誤的是(50)。(50)A匯編語言源程序中的指令語句將被翻譯成機器代碼B匯編程序先將源程序中的偽指令翻譯成機器代碼,然后再翻譯指令語句C匯編程序以匯編語言源程序為輸入,以機器語言表示的目標程序為輸出D匯編語言的指令語句必須具有操作碼字段,可以沒有操作數(shù)字段分析:匯編程序的功能是將會變語言所編寫的源程序翻譯成機器指令程序。匯編語言源程序語句可分為指令語句、偽指令語句和宏指令語句。指令語句匯編后產(chǎn)生相應(yīng)的機器代碼;偽指令語句指示匯編程序在匯編源程序時完成某些操作,匯編后不產(chǎn)生機器代碼

23、?!敬鸢福築】【試題 2-8】2010年 11月真題 64下面C程序段中count+語句執(zhí)行的次數(shù)為(64)。for(int i=1;i<=11;i*=2)for(int j=1;j<=i;j+)count+;(64)A15 B16 C31 D32分析:第1輪循環(huán),i=1,count+執(zhí)行1次,然后i=2;第2輪循環(huán),i=2,count+執(zhí)行2次,然后i=4;第 3輪循環(huán),i=4,count+執(zhí)行4次,然后i=8;第4輪循環(huán),i=8,count+執(zhí)行8次,然后i=16,i>11,不滿足循環(huán)條件,循環(huán)結(jié)束。可以計算count+語句執(zhí)行的次數(shù)為:1+2+4+8=15【答案:A】【

24、試題 2-9】2010年 5月真題 33程序的三種基本控制結(jié)構(gòu)是(33)。(33)A過程、子程序分程序 B順序、選擇和重復(fù)C遞歸、堆棧和隊列 D調(diào)用、返回和跳轉(zhuǎn)分析:程序的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)?!敬鸢福築】【試題 2-10】2009年 5月真題 20函數(shù)調(diào)用時,基本的參數(shù)傳遞方式有傳值與傳地址兩種,( 20)。(20)A在傳值方式下,形參將值傳給實參B在傳值方式下,實參不能是數(shù)組元素C在傳地址方式下,形參和實參間可以實現(xiàn)數(shù)據(jù)的雙向傳遞D在傳地址方式下,實參可以是任意的變量和表達式分 析:首先看A選項,傳值方式下,對應(yīng)的實參和形參是兩個獨立的實體,占用不同的內(nèi)存單元,調(diào)

25、用函數(shù)時,系統(tǒng)把實參值復(fù)制一份給形參,便斷開二者的聯(lián)系,形參值的改變對實參無影響。因此,“傳值”是單向的,只能由實參傳遞給形參。B選項,形參為傳值方式下的簡單變量,實參可以是與其同類型的常量、變量、數(shù)組元素或表達式。C選項,在傳址方式下,函數(shù)調(diào)用時,系統(tǒng)將實參的地址傳遞給形參,即這時參數(shù)傳遞的不是數(shù)據(jù)本身,而是數(shù)據(jù)在內(nèi)存中的地址。所以在函數(shù)被調(diào)用中,任何對形參的訪問,都被認為是對形參的間接訪問。實參與形參占用相同的存儲單元,傳遞方式是雙向的,形參值的改變將影響實參值。故C選項正確。D選項,形參為傳址方式時,實參如果為常量或表達式,則傳址無效,相當于傳值方式?!敬鸢福?C】【試題 2-11】2009年 5月真題 22下面關(guān)于程序語言的敘述,錯誤的是( 22)。(22)A腳本語言屬于動態(tài)語言,其程序結(jié)構(gòu)可以在運行中改變B腳本語言一般通過腳本引擎解釋執(zhí)行,不產(chǎn)生獨立保存的目標

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論