【文章內(nèi)容簡介】
? 使用 PAD符號設(shè)計的程序必然是結(jié)構(gòu)化的程序 . ? PAD圖所描繪的程序結(jié)構(gòu)十分清晰 . ? 用 PAD圖表現(xiàn)程序邏輯 ,易讀,易記,易懂 . ? 容易將 PAD圖 轉(zhuǎn)換成高級語言源程序 .可用軟件工具實現(xiàn)自動轉(zhuǎn)換 . ? 即可以表示程序邏輯 ,也可以描繪數(shù)據(jù)結(jié)構(gòu) . ? 支持自頂向下 ,逐步求精方法的使用 . 主講教師:李剛 x4 T F DoUntil x5 i g h f k x1 T F b DoUntil x6 a j x2 1 c DoWhile x3 2 3 d e k : 例: NS圖與 PAD的轉(zhuǎn)換 主講教師:李剛 開始 ? 結(jié)束 ? a j Until x5 i Until x6 b x1 k f x4 g h def k x2 d e 1 2 3 While x3 c 主講教師:李剛 判定表 程序流程圖、 NS圖、 PAD圖或過程設(shè)計語言 (PDL)都不易清楚的描述含有多重嵌套的條件選擇。判定表可以清晰的表示復(fù)雜的條件組合與其對應(yīng)的處理之間的關(guān)系。 例子 假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過 30公斤的行李。當(dāng)行李重量 超過 30公斤時,對頭等艙的國內(nèi)乘客超重部分每公斤收費(fèi) 4 元,對其它艙的國內(nèi) 乘客超重部分每公斤收費(fèi) 6 元,對外國乘客超重部分每公斤收費(fèi)比國內(nèi)乘客多一 倍,對殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。用判定表來表示與上述 每種條件組合相對應(yīng)的動作。 所有條件 條件組合矩陣 與每種條件組合 所對應(yīng)的動作表 所有可能的 動作列表 國內(nèi)乘客 頭 等 艙 殘疾乘客 行李 ≤30kg 免費(fèi) (W30)*2 (W30)*3 (W30)*4 (W30)*6 (W30)*8 (W30)*2 T T T F T T T T T T T T T T F F F F F F F F F F F F F F F F F F F 主講教師:李剛 判定樹 行李費(fèi) 算 法 行李重量 W30 國內(nèi)乘客 外國乘客 頭等艙 其它艙 殘疾乘客 (W30)*2 正常乘客 (W30)*4 殘疾乘客 (W30)*3 正常乘客 (W30)*6 頭等艙 其它艙 殘疾乘客 (W30)*4 正常乘客 (W30)*8 殘疾乘客 (W30)*6 正常乘客 (W30)*12 行李重量 W≤30 免費(fèi) 主講教師:李剛 1 2 3 4 5 教授 T F F F 副教授 F T F F 講師 F F T F 助教 F F F T 講座 T F F F F 50 30 25 20 15 例:某校制定了教師的講課課時津貼標(biāo)準(zhǔn) 。對于各種性質(zhì)的講座 ,無論教師是什么職稱 ,每課時津貼費(fèi)一律是 50元;而對于一般的授課 ,則根據(jù)教師的職稱來決定每課時津貼費(fèi):教授30元 , 副教授 25元 , 講師 20元 , 助教 15元 。 主講教師:李剛 教師課時津貼判定樹 課時津貼 一般授課 講座 教授 副教授 講師 助教 30 25 20 15 50 主講教師:李剛 6.過程設(shè)計語言 PDL 過程設(shè)計語言 PDL也稱為偽碼 PC( Pseudo Code),它是用正文形式表示數(shù)據(jù)數(shù)據(jù)和自 理過程的設(shè)計工具。 PDL具用嚴(yán)格的關(guān)鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu); 另一方面, PDL表示實際操作和條件的內(nèi)部語法通常又是靈活自由的,以便適應(yīng)各種工程 項目的需要。因此,一般來說, PDL是一種“混雜”的語言,它使用一種語言(如自然語 言)的詞匯,同時卻使用另一種語言(結(jié)構(gòu)化程序設(shè)計語言)的語法 例:求最大數(shù)的算法用 PDL或偽碼描 述如下: ater a vector Set Maximum to the value of The first element in the vector Do for each element From the second one to the last If value of the elemant is greater Than the Maximum value Set Maximom to value of the elemeat ENDIF ENDDOPrint the Maximum value 也可簡寫為: Input array A DO for I=2 to N If MAXA(I) Set MAX=A(I) ENDIF ENDDO Print MAX 主講教師:李剛 一、 Jackson 程序設(shè)計方法 前面介紹了面向數(shù)據(jù)流的設(shè)計方法,即概括數(shù)據(jù)流確定是軟件結(jié)的方法。下面要介紹一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,即用數(shù)據(jù)結(jié)構(gòu)作為程序設(shè)計的基礎(chǔ)。 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法的最終目標(biāo)是得出對程序處理過程的描述。這種設(shè)計方法最適合在詳細(xì)設(shè)計階段使用,也就是說,在完成了軟件結(jié)構(gòu)的總體設(shè)計之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來設(shè)計每個模塊的處理過程。 Jackon程序設(shè)計方法是由英國人 。這個方法在設(shè)計較簡單的數(shù)據(jù)處理系統(tǒng)時特別方便。 167。 詳細(xì)設(shè)計( SD) 主講教師:李剛 一. Jackon圖 數(shù)據(jù)結(jié)構(gòu)種類繁多,但是它們的數(shù)據(jù)元素之間的邏輯關(guān)系只有順序、選擇和重復(fù)三類。因此,邏輯數(shù)據(jù)結(jié)構(gòu)也只有這三類。 1.順序結(jié)構(gòu) 順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次 A B C D 例圖: A由 B、 C、 D三個元素順序組成 主講教師:李剛 2.選擇結(jié)構(gòu) 選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用該數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。 3.重復(fù)結(jié)構(gòu) 重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時的條件,由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成 A B0 C0 D0 根據(jù)條件, A是 B或 C或 D中的某一個。 A B* A由 B出現(xiàn) N次( N≥0)組成 (注意: B的右上角有 *) 主講教師:李剛 二.改進(jìn)的 Jackon圖 上面的后兩個圖中,選擇條件和循環(huán)結(jié)束條件無法標(biāo)出,影響了圖的表達(dá)能力,不易譯成程序。建議使用改進(jìn)的 Jackon圖。 (a)順序結(jié)構(gòu) (b)選擇結(jié)構(gòu) s(i)為 (c)可選結(jié)構(gòu)為 (b)的 (d)重復(fù)結(jié)構(gòu) i是循環(huán)結(jié) BCD 中任一都 條件 , i是分支條件 特殊情形 束條件的編號 不能是選擇和 重復(fù)的數(shù)據(jù)元素 A B C D A Bo Co Do A Bo A B* _o S(i) S(i) 主講教師:李剛 順序結(jié)構(gòu) A seq B C D A end 選擇結(jié)構(gòu) A select cond1 B A or cond2 C A or cond3 D A end 重復(fù)結(jié)構(gòu) A iter until cond B A end 主講教師:李剛 三. Jackson方法 Jackson結(jié)構(gòu)程序設(shè)計方法由下列五步組成: 1.分析、確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用 jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。 2.找出輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元: 3.由描繪數(shù)據(jù)結(jié)構(gòu)的 Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的 Jackson圖: ( 1)為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框; ( 2)根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中乘余的每個數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分列為它們畫對應(yīng)的處理框。 ( 3)根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中乘余的每個數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次為它們畫出對應(yīng)的處理框。 4.列出所有的操作和條件,將它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。 5.用偽碼表示程序。(有下劃 的為關(guān)鍵字 ) 主講教師:李剛 用偽碼表示程序處 理過程 確定輸入輸出 數(shù)據(jù)結(jié)構(gòu) 確定數(shù)據(jù)結(jié)構(gòu)中有對 應(yīng)關(guān)系的數(shù)據(jù)單元 從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出 程序結(jié)構(gòu)圖 列出所有操作和條件 并分配到程序結(jié)構(gòu)圖 中適當(dāng)?shù)奈恢? 設(shè)計步驟 主講教師:李剛 正文文件 字符串 * 字符 * 非空格 0 空格 0 I I S 輸出表格 表格體 空格總數(shù) 串信息 * 字符串 空格數(shù) I 應(yīng)用舉例: 一個正文文件由若干個 記錄組成,每個記錄是 一個字符串。要求統(tǒng)計 每個記錄中空格字符的 個數(shù)以及文件中空格字 符的總個數(shù)。要求的輸 出數(shù)據(jù)格式是,每復(fù)制 一行輸入字符串之后, 另起一行印出這個字符 串中的空格數(shù),最后印 出文件中空格總個數(shù)。 主講教師:李剛 統(tǒng)計表格 程序體 印總數(shù) 處理字符串 * 印字符串 分析字符串 I 印空格數(shù) 分析字串 * I 處理空格 * 處理非空格 * S 主講教師:李剛 統(tǒng)計表格 程序體 印總數(shù) 處理字符串 * 印字 符串 分析字符串 I( 1) 印空 格數(shù) 分析字串 * I(2 ) 處理空格 * 處理非空格 * S(3) 2 9 11 3 1 6 4 7 13 13 停止 關(guān)閉文件 印出空格總數(shù) 打開文件 讀入字符串 Totalsum:=0 文件結(jié)束 印出字符串 字符串結(jié)束 字符是空格 Sum:=sum+1 Pointer:=pointer+1 10 12 8 9 Sum:=0 Pointer:=1 Totalsum:=totalsum+sum 讀入字符串 主講教師:李剛 統(tǒng)計空格 seq 打開文件 讀入字符串 totalsum=0 程序體 iter until文件結(jié)束 處理字符串 seq 印字符串 seq 印出字符串 印出字符串 end sum t=0 pointer t=1 …… 主講教師:李剛 例:高考后將考生的基本情況文件 ( 簡稱考生基本情況文件 ) 和考生高考成績文件 ( 簡稱考分文件 ) 合并成一個新文件 ( 簡稱考生新文件 ) 。 考生基本情況文件和考分文件都是由考生記錄組成的 。 為簡便起見 , 考生基本情況文件中的考生記錄的內(nèi)容包括:準(zhǔn)考證號 、 姓名 、通訊地址 。 考分文件中的考生記錄的內(nèi)容包括:準(zhǔn)考證號和各門考分 。 合并后的考生新文件自然也是由考生記錄組成 , 內(nèi)容包括:準(zhǔn)