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