正文 第三章 計算機中的程序(二)(3 / 3)

(3)判別框

棱形框稱為判別框,框內說明需要進行的判斷。它往往以一種命題的形式描述,例如:相應地結果有兩種可能;成立或不成立,分別注以Yes或這與計算機使用的二值邏輯一致,所以程序在每次判別後形成二路分支。如果要獲得二路以上的分支,即判別結果可能有二個以上的結論,往往需要分成幾次判斷。例如A與B比較有三種可能:等於、大於、小於,用二值邏輯形式判別就需要分成二次,如先判A=B-得到等於或不等二種分支,如果不等,再判A>B-再得到大於或小於二種分支,二次判別共形成三路分支。

(4)連接符

如果流程圖很長,在一張圖紙上畫不下;或者流程圖結構比較複雜,如果將所有程序框之間的連線都完整連通,有可能反而使整體結構不清晰,因而需要分段畫。最好將流程圖分為幾部分,中間用圓圈作為連接符號,圓圈內注以數字或字符如ABC……,就如同注明“轉xx頁”與“接xx頁”一類的連接方法。

(5)箭頭

在處理框中常采用的操作描述形式,這是一種替代運算,標準的約定是指:用箭頭一邊的變量值去取代箭頭指向那邊的變量值。

(6)其它注釋

除了前麵一些常見的有習慣約定的描述符號外,還可以加注一些你認為需要的說明。而流程常注明流向,以表明操作序列的先後。

二、程序的基本結構

對於不同的任務,算法不同,程序流程自然不同。但是分析一下可以發現,各種程序流程中大致包含下述幾種基本的結構形態。

1.順序結構

最簡單的程序結構是無分支的程序形態,整個程序的語句(或指令)都是順序執行的,它基本上是將所有需要執行的操作從頭到尾依次列出。

2.分支結構

計算機進行運算處理的特點之一,就是能根據處理過程中出現的不同結果或狀態,由機器自動判定。為了決定後繼操作,相應地程序中需要設置判別,並緊跟著設置兩路分支以供選擇。這樣的程序就不僅能適應某種特定的數據組合,即使變量值變化,程序也具有通用性。稍為複雜一點的程序,一般都具荷判別與分支的結構形態。

3.循環結構

在許多程序中往往有這樣的情況出現,需要多次重複執行一串相同的操作,僅僅是處理對象在參數上有些不同。例如我們對一個數組中的各數據都加1,操作是相同的即A—A+1,隻是每次從存儲器中讀取參數時需將地址碼加1,依次讀取。又如我們在查找文件名時,常需對表示文件名的字符串進行比較,看是否相符。這類操作也是重複的,隻是讀取字符的地址依次變化。再如,我們要將一個數據塊傳送至指定的存儲區域,數據塊中的數據,也是一個一個灘傳送,操作相同。這樣的例子很多。對這類任務,如果我們對每一步相同的操作都用相同1句去描述,程序勢必很長,以致讓人厭煩。正確的做法是讓計算機重複執行一種相同的操作。例如,數據傳送後地址加1,相應地程序中隻需要描述這種操作一遍,但必須規定循環終止的條件。例如規定循環次數,或者規定找到所需字符為止等。

4.子程序

在編製程序中往往有一些基本的運算處理程序段需要多次地用到,可以將它們編寫成子程序供主程序調用,以免重複編製並改善程序結構。事實上有許多子程序,不同用戶都需要用到。例如華方、三角函數、二十進製轉換……等,可以最優化的方式編成標準子程序,作為一種軟件資源提供用戶使用。用戶為自身的任務所編製的程序,從用戶的角度稱為“主程序”,供公用的程序段稱為“子程序”。當主程序運行到某一基本運算時,例如開平方,隻要在主程序中設置調用子程序的語句或指令即可,不必再單獨編寫開方程序段子程序執完畢,將通過返回語句或指令返回主程序,然後繼續下去。

本章小節

(1)計算機按程序控製工作,或者說計算機的基本工作方式就是執行程序。計算機硬件所能識別的是按嚴格約定格式的機器代碼。

(2)高級程序設計語言有許多種,一般是通用的,與機器本身屬性相分離。程序設計語言,有其嚴格的約定與規則,以字符為表示基礎。有的語言與數學表達式_近,有的與邏輯式相近,有的采取與英語相近的結構與詞組,各具特色。

(3)彙編語言是麵向具體機型的程序設計語言,它以助記符的形式描述機器指令,也需經過編譯,成為可執行的機器代碼。

(4)每種計算機都有自己的指令係統,它規定了計算機硬件所能執行的各種基本操作,是硬件與軟件的界麵。在有關的技術資料中常以兩種形式介紹指令係統,一種形式是數字代碼表亦的約定格式,另一種是彙編符號表本。

(5)程序的編製可分為幾種層次進行:以擬定編程方案時先用程序流程框圖描述程序的結構與運算處理的步驟;用程序設計語言編製程序;輸入計算機並調用相應的翻譯程序,譯成與機器指令對應的機器代碼,計算機即可運行。