程式設計方法學部分答案精華版

2021-03-04 09:39:16 字數 4802 閱讀 7375

1. 程式設計方法學產生的歷史背景:軟體危機。

2.什麼是程式設計方法學:程式設計方法學是講述程式的性質以及程式設計的理論和方法的一門學科,內容包括結構程式設計、資料抽象與模組化程式設計、程式正確性證明、程式變換、程式的形式說明與推導、程式綜合技術、物件導向的程式設計法、大型程式設計方法學基礎等

程式設計方法學與結構程式設計的關係:程式設計方法學是在結構程式設計的基礎上逐步發展完善起來的。

4. d.gries教授將已有的對結構程式設計的不同解釋歸納為幾種?:13,主要有6種。

5. 什麼是結構程式設計?:結構程式設計是一種進行程式設計的原則和方法,按照這種原則和方法設計出的程式的特點是結構清晰、容易閱讀、容易修改、容易驗證。

6. 結構程式設計的目標是什麼?:得到乙個好結構程式

7. 結構化程式由哪些結構組成:序列結構、選擇結構、迴圈結構

8. 什麼是逐步求精程式設計方法:就是在編制乙個程式時,首先考慮程式的整體結構而忽視一些細節問題,然後逐步地、一層一層地細化程式直至用所選用的語言完全描述每乙個細節,即得到所期望的程式為止。

9. 逐步求精的優點是什麼?:逐步求精的最大優點是擺脫了傳統的程式設計方法的束縛,按照先全域性後區域性,先整體後細節、先抽象後具體的過程組織人們的思維活動,使得編寫的程式結構清晰、容易閱讀、容易修改、同時還可以結合逐步求精的過程進行程式正確性驗證,即採取邊設計,邊驗證的方法,以簡化程式正確性的驗證。

1. 流程圖程式:乙個程式可以用流程圖的形式表示出來,這種程式稱為流程圖程式。

嚴格地講,流程圖是乙個描述程式的控制流程和指令執**況的有向圖。他是程式的一種比較直觀的表達形式。乙個程式的流程圖通常由函式節點、謂詞節點、匯點3種節點組成

2正規程式:1具有乙個入口線和乙個出口線2、對每乙個節點,都有一條從入口線到出口線的通路該點。

3、基本程式:乙個正規程式,如果不包含多於乙個節點的正規子程式。

4. 結構化程式:由基本程式的乙個固定的基集合構造出的復合程式稱為結構化程式。

5. 程式函式:已知一正規程式p,對於每乙個初始的資料狀態x,若程式是終止的,那麼有確定的最終資料狀態y。

對於每乙個給定的x,值y是唯一的,那麼所有的有序對的集合定義了乙個函式,我們稱這個函式為程式p的程式函式,記為[p]。

6. 程式函式等價:如果程式p1和p2是相同的程式函式,稱他們是函式等價的。

7. 結構化定理:任一正規程式都可以函式等價於乙個由集合產生的結構化程式。

1. 物件導向的程式設計方法是新型的結構化程式設計:20世紀80年代

2. 什麼是應用框架:乙個框架是乙個可復用的設計元件,它規定了應用的體系結構,闡明了整個設計、協作元件之間的依賴關係、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為元件復用提供了上下文關係。

3. 框架與一般類庫的主要區別:反向呼叫。

1. 證明與測試的區別:除錯的方法雖然可以幫助人們發現程式中的錯誤,但是卻不能證明程式中沒有錯誤,並且只能對很有限的幾組初始值進行試算。

它不能證明程式是正確的。程式正確性證明不僅可以證明順序程式的正確性,而且利用這些方法還可以證明非正確性程式及並行程式的正確性。

2、部分正確性與完全正確性:(1)若對每乙個使得ψ(ζ)為真,並且程式計算終止的輸入資訊ζ、ψ(ζ,p(ζ))為真,程式p關於ψ和ψ是部分正確的。p(ζ)表示和輸入ζ相對應的程式p的輸出資訊。

(2)若對每乙個使得ψ(ζ)為真的輸入資訊ζ,程式的計算都要終止,並且ψ(ζ,p(ζ))為真,稱程式p關於ψ和ψ是完全正確的。乙個程式是完全正確的等價於該程式是部分正確的同時又是終止的。

3. 不變式斷言法的步驟:(1)建立斷言。

乙個程式除了要建立輸入,輸出斷言外,如果程式中有迴圈出現,還要建立相應於該迴圈的不變式斷言,即在迴圈中選取乙個斷點,在斷點處建立乙個適當的斷言,使迴圈每次執行到斷點時,斷言都為真。(2)建立檢驗條件。在迴圈中建立斷點後,程式執行中所有可能的通路就可以分解為幾條有限的通路。

對每一條通路建立乙個檢驗條件。所謂檢驗條件就是程式執行通過該通路時應滿足的條件。具體的講,如果將每一條通路看做一段程式,它的輸入斷言,輸出斷言分別為ψi(x,y),ψi(x,y),而通過此通路的條件為ri(x,y),通過此通路後y的值變為ri(x,y),則應有檢驗條件ψi(x,y)∧ri(x,y)=>ψi(x,ri(x,y)),y是程式執行中的一組中間變數,x是輸入量,符號=>是蘊涵符(3)證明檢驗條件。

即證明步驟(2)中所得到的所以檢驗條件,如果每一條通路檢驗條件均為真,該程式是部分正確的。

4.子目標斷言法與不變式斷言法的區別:(1)兩種方法對迴圈所建立的斷言不同。

不變式斷言描述了程式變數y的中間值與初值之間的關係,而子目標斷言描述的事y的中間值與迴圈終止時的最終值yf之間的關係。(2)兩種方法進行歸納的方向不同。不變式斷言法沿著程式正常執行的方向進行歸納,而子目標斷言則沿著相反方向進行歸納。

5. hoare定義的賦值公理、推理規則:賦值公理 y<---g(x,y)

6. hoare推理過程的兩種形式:組裝、分解。

7. 良序集:設(w,)是乙個偏序集,如果不存在由w中的元素構成的無限遞減序列a0a1a2...,則稱(w,)為良序集。

8. 良序集方法的步驟:設程式p的輸入斷言為ψ(x),利用良序集方法證明p關於ψ(x)是終止的,可按一下步驟:

(1)選取乙個點集去截斷程式的各個迴圈部分,並且在每乙個截斷點i處建立乙個中間斷言qi(x,y)。這樣,程式就被分解為若干條通路,同時規定每一條通路都不包含有中間截斷點。(2)選取乙個良序集(w,),並且在每乙個截斷點i處定義乙個終止表示式ei(x,y)。

(3)證明所選取的斷言是「良斷言」,即對每乙個從程式入口到截斷點j的通路a有ψ(x)∧ra(x,y)=>qj(x,ra(x,y)),而對於每乙個由截斷點i到截斷點j的通路a有 qi(x,y)∧ra(x,y)=>qj(x,ra(x,y)),ra和ra分別表示通過通路a的條件及通過通路a以後變數y的值。(4)證明終止表示式是良函式。即對於每乙個截斷點i有qi(x,y)=>ei(x,y)∈w.。

(5)證明終止條件成立。即對於每乙個由截斷點i到截斷點j且某個迴圈的一部分通路a有qi(x,y)∧ra(x,y)=>[ei(x,y)ej(x,ra(x,y))]。

9. 計數器方法:它的基本思想是對程式中的每乙個迴圈附加乙個新的變數(通常稱為計數器),在進入該迴圈前,計數器置0,迴圈通路每執行一次,計數器加1.

同時,對每乙個迴圈提供乙個新的中間斷言,它表示相應的計數器不會超過某個固定的界限。進一步,證明此中間斷言是不變式斷言,這樣就可以斷定迴圈只能執行有限次,因而程式是終止的。

1. f=[p]的含義,作用:假設已知一程式p和一預期函式f,若有f=[p],稱程式p正確地實現了函式f,或者說程式p是正確的。

2. 定理6.1 a c d:

已知預期函式f和基本程式p,則f=[p]的充分必要條件是:對所有的x∈d(f),程式p終止。且對不同的基本程式,函式f分別滿足下列關係:

a:對序列程式,即p=g;h,有f=

c:對if-then-else程式,即

p=if p then g else h fi 有f=

d:對while-do程式,即p=while p do g od 有f=

4.分離規則:如果乙個條件規則的所有謂詞都是分離的,稱它為分散規則。

5. 定理6.2 假設f(x)=[while p(x)do g(x) od],x0∈d(f)是變數在迴圈入口處的值,則對任意x∈d(f),q(x)=(f(x)=f(x0)),是此while-do迴圈的乙個不變式。

1. 迭代與遞迴:遞迴是一種比迭代迴圈更強的迴圈結構,可以證明每個迭代程式原則上總可以轉換成與等價的遞迴程式,但是,反之不然,即並不是每個遞迴程式都可以轉換成與它等價的迭代程式。

但就效率而言,遞迴程式的實現往往要比迭代程式耗費更多的時間與儲存空間。

2. 結構歸納法步驟和使用:(1)證明對於「最簡單」的資料,程式執行正確;(2)假設對於「較簡單」的資料,程式執行正確【歸納假設】,在此基礎上證明對於「較複雜」的資料,程式亦執行正確。

3. 良序歸納法步驟:設(w,)是乙個良序集,p(x)乙個命題,為了證明對於所有的x∈w,p(x)為真,只要(1)證明p(x0)為真(2)歸納假設:

假設對於所有的x』 x,p(x』)都為真,在此基礎上證明p(x)為真。

1. 謂詞變換器 wp(s,r):對於任意程式段s和期望通過執行s而建立的謂詞r,謂詞wp(s,r)表示所有符合下列條件的集合。

如果s從wp(s,r)中的任一狀態開始執行,一定能在有限的時間裡終止於乙個滿足r的狀態,顯然對於固定的s來說,wp(s,r)可以看做是謂詞r的函式,且函式值也是謂詞,因此通常將他稱為謂詞變換器。

2. 賦值語句、wp的幾條性質:

性質1 對任何的程式段s,有wp(s,f)=f

性質2 對任何程式段s和任何後謂詞r1和r2,如果對於所有狀態有r1=>r2,則對於所有的狀態有 wp(s,r1)=>wp(s,r2)

性質3 對任何程式段s和任何後謂詞r1和r2及所有的狀態有(wp(s,r1)∧wp(s,r2))=wp(s,r1∧r2)

性質4 對任何程式段s和任何後謂詞r1和r2及所有的狀態有wp(s,r1)∨wp(s,r2))=wp(s,r1∨r2)

3. 面向目標的程式推導:序列、選擇、迴圈

1、弱化謂詞的方法:4條,主要是前兩條。刪去乙個合取分量,如謂詞a^b^c可被減弱為a^b或a^c等

2、用變數代替乙個常量,如謂詞(i:01. 變換的目的:將好結構的程式改造成執行效率高的程式,將某些型別的遞迴程式轉化為相應的迭代程式從而提高程式的執行效率。

2. 程式變換的基本思想:程式變換的基本思想是把程式設計工作分為兩個階段進行,即程式生成階段和程式改高階段。

在程式生成階段,先用一種清晰和抽象的語言來描述演算法,並在此基礎上設計乙個面向問題的,易於理解的、正確的函式型遞迴程式,這時暫不考慮程式的執行效率。在程式改高階段,將通過一系列保持正確性的變換規則,對程式的資料結構和演算法進行求精,最終將該程式轉換為乙個具體的面向過程且執行效率高的程式文字。

程式設計方法學考試簡答

第一章1.程式設計方法學產生的歷史背景 答 軟體危機。2.什麼是程式設計方法學 答 簡單地說,程式設計方法學是講述程式的性質以及程式設計的理論和方法的一門學科。3.程式設計方法學與結構程式設計的關係 答 在程式設計方法學中,結構程式佔著十分重要的位置,可以說,程式設計方法學是在結構程式設計的基礎上逐...

2019法碩 非法學 刑法學部分考試分析指導

今年考研法碩考試已經結束,整張試卷延續去年的試卷結構,刑法學共考查20道單項選擇題 5道多項選擇題 2道簡答題 1道辨析題 1道法條分析題和1道案例分析題,分值與往年持平,考察內容與新大綱要求保持一致。從今年試題中刑法學部分具體考查的知識點來看,不難發現 重者恒重 的規律。所謂 重者恒重 是指重要的...

法律碩士聯考刑法學部分之共同犯罪

刑法學部分之共同犯罪 編輯 四聯法碩 我國刑法學關於共同犯罪人的分類,是以作用為主 兼顧行為分工的標準,將共犯人分為主犯 從犯 脅從犯和教唆犯。在構成共同犯罪的基礎上,又根據罪責自負的原則,主犯 從犯 脅從犯以及教唆犯的刑事責任又有所不同。綜觀歷年考題,共同犯罪是乙個常考考點。下面結合乙個辨析題來分...