程序設計語言基本概念與試題.docx
《程序設計語言基本概念與試題.docx》由會員分享,可在線閱讀,更多相關《程序設計語言基本概念與試題.docx(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
程序設計語言基本概念與試題 一、基本概念 在計算機中,程序設計語言可劃分為低級語言和高級語言兩大類,與高級語言相比,用低級語言開發(fā)的程序,其運行效率高,但開發(fā)效率低。與程序設計相關的基本概念如下。 (1)低級語言:又稱面向機器語言,它是特定的計算機系統(tǒng)所固有的語言。 (2)匯編語言:是機器語言的一種提升,它使用了一些助記符來表示機器指令中的操作碼和操作數(shù)。但它仍然是一種和計算機機器語言十分接近的語言,使用起來仍然不太方便。 (3)高級語言:與人們的自然語言比較接近,使用起來很方便,也極大的提高了程序設計效率。 (4)編譯程序:也稱編譯器,將源程序翻譯成目標語言程序,然后在計算機上運行目標程序。雖然執(zhí)行效率高,但編寫出來的程序可讀性很差,且難以修改和維護。 (5)解釋程序:也稱解釋器,它或者直接解釋執(zhí)行源程序,或者將源程序翻譯成某種中間代碼后再加以執(zhí)行。 (6)程序設計語言:程序設計語言的定義都涉及語法、語義和語用等方面。 (7)語法是指由程序語言的基本符號組成程序中的各個語法成分(包括程序)的一組規(guī)則,其中由基本字符構成的符號(單詞)書寫規(guī)則稱為詞法規(guī)則,由符號構成語法成分的規(guī)則稱為語法規(guī)則。 (8)語義是程序語言中按語法規(guī)則構成的各個語法成分的含義,分為靜態(tài)語義和動態(tài)語義。 (9)語用表示了構成語言的各個記號和使用者的關系,涉及符號的來源、使用和影響。 (10)語境是指理解和實現(xiàn)程序設計語言的環(huán)境,包括編譯環(huán)境和運行環(huán)境。 二、程序設計語言的分類 1.命令式程序設計語言 命令式程序設計語言是基于動作的語言,在這種語言中,計算被看成是動作的序列。 結構化程序設計語言屬于命令式語言類,其結構特性主要有:一是用自頂向下逐步精化的方法編程,二是按照模塊組裝的方法編程,三是程序只包含順序、判定(分支)及循環(huán)結構,而且每種構造只允許單入口和單出口。C語言、PASCAl等都是典型的結構化程序設計語言。 2.面向對象程序設計語言 面向對象的程序設計在很大程度上應歸功于從模擬領域發(fā)展起來的Simula,Simula提出了類和對象的概念。C++、Java和smalltalk是面向對象程序設計語言的代表。 3.函數(shù)式程序設計語言 函數(shù)式程序設計語言是一類以λ-演算為基礎的語言,其概念來自于Lisp,一個在 1958年為了人工智能應用而設計的語言。函數(shù)是一種對應規(guī)則(映射),它使定義域中每個元素和值域中唯一的元素對應。 函數(shù)定義1:Square[x]:=xx 函數(shù)定義2:Plustwo[x]:= Plusone[Plusone[x]] 函數(shù)定義3:fact[n]:=if n =0 then 1 else nfact[n-1] 4.邏輯型程序設計語言 邏輯型程序設計語言是一類以形式邏輯為基礎的語言,其代表是建立在關系理論和一階謂詞理論基礎上的Prolog(Programming in Logic)。Prolog程序是一系列事實、數(shù)據(jù)對象或事實間的具體關系和規(guī)則的集合。通過查詢操作把事實和規(guī)則輸入數(shù)據(jù)庫。用戶通過輸入查詢來執(zhí)行程序。在 Prolog中,關鍵操作是模式匹配,通過匹配一組變量與一個預先定義的模式并將該組變量賦給該模式來完成操作。 三、程序設計語言的基本成分 1.數(shù)據(jù)成分 數(shù)據(jù)成分指的是一種程序語言的數(shù)據(jù)類型。 (1)常量和變量 按照程序運行時數(shù)據(jù)的值能否改變,將數(shù)據(jù)分為常量和變量。變量具有左值和右值,在程序運行過程中其右值可以改變;常量只有右值,在程序運行過程中不能改變。 (2)全局變量和局部變量 按照數(shù)據(jù)的作用域范圍,可分為全局變量和局部變量。系統(tǒng)為全局變量分配的存儲空間在程序運行的過程中一般是不改變的,而為局部變量分配的存儲單元是動態(tài)改變的。 (3)數(shù)據(jù)類型 按照數(shù)據(jù)組織形式不同可將數(shù)據(jù)分為基本類型、用戶定義類型、構造類型和其他類型。 基本類型:整型(int)、字符型(char)、實型(float、double)和布爾類型(bool)。 特殊類型:空類型(void)。 用戶定義類型:枚舉類型(enum)。 構造類型:數(shù)組、結構、聯(lián)合。 指針類型:type *。 抽象數(shù)據(jù)類型:類類型。 2.運算成分 程序語言的運算成分指明允許使用的運算符號及運算規(guī)則。大多數(shù)高級程序語言的基本運算可分成算術運算、關系運算和邏輯運算,有些語言如C(C++)還提供位運算。 3.控制成分 控制成分指明語言允許表述的控制結構。 (1)順序結構 順序結構用來表示一個計算操作序列,從第一個操作開始,按順序依次執(zhí)行后續(xù)的操作,直到最后一個操作,如圖2-1所示。(2)選擇結構選擇結構提供了在兩種或多種分支中選擇其中一個的邏輯,如圖2-2所示。 圖 2-1 順序結構示意圖 圖 2-2 選擇結構示意圖 (3)循環(huán)結構 循環(huán)結構描述了重復計算的過程,通常由三部分組成:初始化、循環(huán)體和循環(huán)條件。主要有兩種形式:while型循環(huán)結構和do-while型循環(huán)結構,如圖2-3所示。 (4)C(C++)語言提供的控制語句 ①復合語句 復合語句用于描述順序控制結構。復合語句是一個整體,要么全部執(zhí)行,要么一條語句也不執(zhí)行。 ② if語句和switch語句 if語句實現(xiàn)的是雙分支的選擇結構,其一般形式為: 1. if(表達式) 2. 語句1; 3. else 4. 語句2; 需要注意的是if和else的匹配關系。 switch語句描述了多分支的選擇結構,其一般形式為: 1. switch(表達式){ 2. case常量表達式1:語句1; 3. case常量表達式2:語句2; 4. 5. … 6. case常量表達式n:語句n; 7. default:語句n+1; 8. 9. } ③ 循環(huán)語句主要指while語句、do-while語句和for語句。 while語句描述了先判斷條件再執(zhí)行循環(huán)體的控制結構,其一般形式為: 1. while(條件表達式) 2. { 3. 4. 循環(huán)體語句; 5. 6. } do-while語句描述了先執(zhí)行循環(huán)再判斷條件的控制結構,其一般格式是: 1. do 2. 3. 循環(huán)體語句; 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ù)做什么和怎么做。其一般格式是: 1. 返回值類型函數(shù)名(形參表) 2. { 3. 函數(shù)體; 4. } 5. ②函數(shù)聲明 函數(shù)應該先聲明后引用。如果程序中對一個函數(shù)的調(diào)用在該函數(shù)的定義之前進行,則應該在調(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)了函數(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ù)傳遞相應類型的值(副本),則稱為是傳值調(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)用時為形參分配存儲單元;調(diào)用函數(shù)前,首先計算實參的值,調(diào)用時將實參的值放入形參的存儲單元;被調(diào)用函數(shù)內(nèi)部對形參單元中的數(shù)據(jù)進行直接訪問。 (2)引用調(diào)用(Call by Reference)引用是C++中增加的數(shù)據(jù)類型,當形式參數(shù)為引用類型時,形參名實際上是實參的別名,函數(shù)中對形參的訪問和修改實際上就是針對相應實際參數(shù)所作的訪問和改變。 實際上,引用調(diào)用是將實參的地址傳遞給形參,使得形參的地址就是對應實參的地址。引用調(diào)用的參數(shù)傳遞和被調(diào)用函數(shù)內(nèi)對參數(shù)的使用主要按下述原則處理:函數(shù)定義時形參被當作局部變量看待,在函數(shù)被調(diào)用時為形參分配存儲單元;調(diào)用時將實參的地址放入形參的存儲單元;被調(diào)用函數(shù)內(nèi)部對形參單元中的數(shù)據(jù)(地址)進行間接訪問。 怎么考 【試題 2-1】2011年 11月真題 20 若C程序的表達式中引用了未賦初值的變量,則( 20)。 (20)A. 編譯時一定會報告錯誤信息,該程序不能允許 B. 可以通過編譯并運行,但運行時一定會報告異常 C. 可以通過編譯,但鏈接時一定會報告錯誤而不能運行 D. 可以通過編譯并運行,但運行結果不一定是期望的結果 分析:全局變量和靜態(tài)局部變量在定義時如果沒有初始化,編譯時會自動初始化為0;而普通的局部變量,如果沒有初始化,則其值是一個隨機數(shù)。在 C程序表達式中,只要引用的變量定義了,就可以通過編譯并運行,但運行結果不一定是期望的結果。【答案:d】 【試題 2-2】2011年 11月真題 49、50 函數(shù)t、f的定義如下所示,其中, a是整型全局變量。設調(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)用,則形參值的變化直接反映到實參。 本題中如果在函數(shù)t中采用傳值方式調(diào)用函數(shù)f,a的值傳給形參r,在函數(shù)f中,a的值變?yōu)?,r的值為10并返回賦給變量x,由于a是全局變量,退出函數(shù)f后a的值依然為6,所以函數(shù)t的輸出結果為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的輸出結果為24。 【答案:(49)B (50)D】 【試題 2-3】2011年 11月真題 57 在KMP模式匹配算法中,需要求解模式串 p的next函數(shù)值,其定義如下(其中, j為模式串字符的序號)。對于模式串“abaabaca”,其next函數(shù)值序列為( 57)。 (57)A. 01111111 B. 01122341 C. 01234567 D. 01122334 分析:模式串“abaabaca”的next函數(shù)值序列如下。 當j=1時,next[1]=0;當j=2時,k不存在,next[2]=1;當j=3時,不存在滿足條件的k,next[3]=1;當j=4時,p1=p3=a,存在k=2,使得 p1 p2 Lpk .1= pj.k +1 pj.k +2 L pj.1 ,故next[4]=2;當j=5時,存在k=2,使得 p1 p2 Lpk .1= pj.k +1 pj.k +2 L pj.1 ,即p1=p4=a,故next[5]=2;當j=6時,存在k=3,使得’p1p2’ =’p4p5’ ,故 next[6]=3;當j=7時,存在k=4,使得’p1p2 p3’ =’p4p5 p6’ ,故next[7]=4;當j=8時,不存在滿足條件的k值,故 next[8]=1?!敬鸢福築】 【試題 2-4】2011年 5月真題 22 若一種程序設計語言規(guī)定其程序中的數(shù)據(jù)必須具有類型,則有利于( 22)。 ①在翻譯程序的過程中為數(shù)據(jù)合理分配存儲單元 ②對參與表達式計算的數(shù)據(jù)對象進行檢查 ③定義和應用動態(tài)數(shù)據(jù)結構 ④規(guī)定數(shù)據(jù)對象的取值范圍及能夠進行的運算 ⑤對數(shù)據(jù)進行強制類型轉換 (22)A.①②③ B.①②④ C.②④⑤ D.③④⑤ 分析:數(shù)據(jù)是程序操作的對象,類型說明數(shù)據(jù)占用的內(nèi)存和存放形式。數(shù)據(jù)類型不僅可用于在基礎機器中完成對值得布局,還可以用于檢查表達式中對運算的應用是否正確?!敬鸢福築】 【試題 2-5】2011年 5月真題 48 以下關于高級程序設計語言翻譯的敘述中,正確的是( 48)。 (48)A.可以先進行語法分析,再進行詞法分析 B.在語法分析階段可以發(fā)現(xiàn)程序中的所有錯誤 C.語義分析階段的工作與目標機器的體系結構密切相關 D.目標代碼生成階段的工作與目標機器的體系結構密切相關 分析:對于高級程序設計語言,編譯程序會把編寫的源程序翻譯成與之等價的目標程序。編譯程序的工作過程分為:詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標代碼生成。語法分析要在詞法分析的基礎上,根據(jù)語言的語法規(guī)則將單詞符號序列分解成各類語法單位??梢?,要先進行詞法分析,然后進行語法分析,故選項A錯誤。在語法分析階段能發(fā)現(xiàn)語法錯誤,但不能發(fā)現(xiàn)語義錯誤,因此選項B錯誤。語義分析階段主要檢查源程序是否包含靜態(tài)語義錯誤,并收集類型信息供后面的代碼生成階段使用,可見,語義分析階段工作與與目標機器的體系結構關聯(lián)不大,選項C錯誤。目標代碼生成階段的任務是把中間代碼變化成特定機器上的絕對指令代碼、可重定位的指令代碼或匯編指令代碼,這個階段的工作與具體的機器密切相關?!敬鸢福?D】 【試題 2-6】2011年 5月真題 50 傳值與傳地址是函數(shù)調(diào)用時常采用的信息傳遞方式,( 50)。 (50)A.在傳值方式下,是將形參的值傳給實參 B.在傳值方式下,形參可以是任意形式的表達式 C.在傳地址方式下,是將實參的地址傳給形參 D.在傳地址方式下,實參可以是任意形式的表達式分析:在傳值方式下,是將實參的值傳給形參,形參不能向實際參數(shù)傳遞信息;實參可以是表達式或常量,也可以是變量或數(shù)組元素。 在傳地址方式下,是將實參的地址傳給形參,實參和形參都指向同一個對象,被調(diào)用函數(shù)中對形式參數(shù)的修改實際上就是對實際參數(shù)的修改,可以實現(xiàn)數(shù)據(jù)的雙向傳遞。實參必須是變量地址、數(shù)組名,不能是表達式或常量。 形參就是形式參數(shù),用一個變量來代表,不能是表達式?!敬鸢福篊】 【試題 2-7】2010年 11月真題 50 以下關于匯編語言的敘述中,錯誤的是(50)。 (50)A.匯編語言源程序中的指令語句將被翻譯成機器代碼 B.匯編程序先將源程序中的偽指令翻譯成機器代碼,然后再翻譯指令語句 C.匯編程序以匯編語言源程序為輸入,以機器語言表示的目標程序為輸出 D.匯編語言的指令語句必須具有操作碼字段,可以沒有操作數(shù)字段 分析:匯編程序的功能是將會變語言所編寫的源程序翻譯成機器指令程序。匯編語言源程序語句可分為指令語句、偽指令語句和宏指令語句。指令語句匯編后產(chǎn)生相應的機器代碼;偽指令語句指示匯編程序在匯編源程序時完成某些操作,匯編后不產(chǎn)生機器代碼?!敬鸢福築】 【試題 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)A.15 B.16 C.31 D.32 分析:第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)結束。可以計算count++語句執(zhí)行的次數(shù)為:1+2+4+8=15【答案:A】 【試題 2-9】2010年 5月真題 33 程序的三種基本控制結構是(33)。 (33)A.過程、子程序分程序 B.順序、選擇和重復 C.遞歸、堆棧和隊列 D.調(diào)用、返回和跳轉 分析:程序的三種基本控制結構是順序結構、選擇結構和重復結構?!敬鸢福築】 【試題 2-10】2009年 5月真題 20 函數(shù)調(diào)用時,基本的參數(shù)傳遞方式有傳值與傳地址兩種,( 20)。 (20)A.在傳值方式下,形參將值傳給實參 B.在傳值方式下,實參不能是數(shù)組元素 C.在傳地址方式下,形參和實參間可以實現(xiàn)數(shù)據(jù)的雙向傳遞 D.在傳地址方式下,實參可以是任意的變量和表達式 分 析:首先看A選項,傳值方式下,對應的實參和形參是兩個獨立的實體,占用不同的內(nèi)存單元,調(diào)用函數(shù)時,系統(tǒng)把實參值復制一份給形參,便斷開二者的聯(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 下面關于程序語言的敘述,錯誤的是( 22)。 (22)A.腳本語言屬于動態(tài)語言,其程序結構可以在運行中改變 B.腳本語言一般通過腳本引擎解釋執(zhí)行,不產(chǎn)生獨立保存的目標程序 C.PHP、JavaScript屬于靜態(tài)語言,其所有成分可在編譯時確定 D.C語言屬于靜態(tài)語言,其所有成分可在編譯時確定 分 析:腳本語言,又叫動態(tài)語言,是一種編程語言控制軟件的應用程序。腳本語言與編程語言有很多相似地方,其函數(shù)與編程語言比較類似,也涉及到變量,它與編程語言最大的區(qū)別是編程語言的語法和規(guī)則更為嚴格和復雜一些。腳本語言一般都有相應的腳本引擎來解釋執(zhí)行,一般需要解釋器才能運行。Python、JavaScript、ASP、PHP、PERL、Nuva都是腳本語言。另外,腳本語言是一種解釋性的語言,它不像 C\C++等可以編譯成二進制代碼,以可執(zhí)行文件的形式存在。【答案:C】 【試題 2-12】2008年 12月真題 21 程序設計語言一般都提供多種循環(huán)語句,例如實現(xiàn)先判斷循環(huán)條件再執(zhí)行循環(huán)體的while語句和先執(zhí)行循環(huán)體再判斷循環(huán)條件的do-while語句。關于這兩種循環(huán)語句,在不改變循環(huán)體的條件下,( 21)是正確的。 (21)A.while語句的功能可由do-while語句實現(xiàn) B.do-while語句的功能可由while語句實現(xiàn) C.若已知循環(huán)體的次數(shù),則只能使用while語句 D.循環(huán)條件相同時,do-while語句的執(zhí)行效率更高分 析:do-while語句的循環(huán)體至少執(zhí)行一次,即執(zhí)行1~n次,而while語句的循環(huán)體可以不執(zhí)行,也可 以執(zhí)行n次,因此do-while語句的功能可由while語句實現(xiàn)?!敬鸢福築】 【試題 2-13】2008年 5月真題 22 下列敘述中錯誤的是( 22)。 (22)A.面向對象程序設計語言可支持過程化的程序設計 B.給定算法的時間復雜性與實現(xiàn)該算法所采用的程序設計語言無關 C.與匯編語言相比,采用腳本語言編程可獲得更高的運行效率 D.面向對象程序設計語言不支持對一個對象的成員變量進行直接訪問 分 析:本題考查基本概念問題。C選項明顯是錯誤的,腳本語言與匯編語言不是一個意義層面上的語言,而且匯編語言是接近計算機硬件的語言,運行效率是非常高的?!敬鸢福篊】- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 程序設計語言 基本概念 試題
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.italysoccerbets.com/p-12786773.html