<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 4.3.1 頂層設計 根據 calendar 程序的規格說明,很容易設計一個簡單的 IPO 模式的算法:首先從用戶處 獲得年份輸入 year,然后計算該年份 1 月 1 日是星期幾,最后按特定格式輸出年歷。我們用 偽代碼來表示該算法,如下: ``` 輸入 year 計算 year 年 1 月 1 日是星期幾 輸出年歷 ``` 這個算法屬于高層設計,其中第二、第三兩個步驟都不是一目了然能直接編碼實現的, 但我們不妨假設每個步驟都由一個函數實現,從而可以利用這些函數實現程序。 首先,盡管第一個步驟“輸入 year”看上去很容易用 input 語句實現,但我們仍然先 用一個頂層模塊——函數 getYear()來表示該步驟的實現。函數 getYear()負責從用戶 處獲得輸入并返回給主程序使用,因此我們將函數的返回值賦值給主程序變量 year。至此, 我們的 calendar 程序取得了第一個進展: ``` def main(): year = getYear() ``` 其次,計算 year 年 1 月 1 日是星期幾,這個步驟不是那么顯然,但我們仍然假設函數firstDay()能夠實現該步驟,這個函數以 year 作為輸入,然后返回一個代表星期幾的值(例如,用 0 表示星期天,用 1 到 6 分別表示星期一到星期六)。在主程序中添加一行調用firstDay()的語句,并將函數返回值賦值給主程序變量 w,這時程序就進展到如下形式: def main(): ``` year = getYear() w = firstDay(year) ``` 最后一步是輸出年歷,仍然假設函數 printCalendar()能夠實現該步驟,此函數需要用到的信息包括 year 和 w,無需提供返回值。在 main 中添加相應的函數調用語句之后,得到 calendar 程序的完整結構如下: ``` def main(): year = getYear() w = firstDay(year) printCalendar(year,w) ``` 至此,我們做出了 calendar 程序的頂層設計,將原始問題分解成了三個模塊,當然各模塊的細節尚不清楚。主程序雖然只有寥寥 3 行,看上去不過是上面的算法偽代碼略加細化的 結果,但它確實滿足程序規格說明的要求。此外,我們還為對應每個模塊的函數聲明了函數 名、參數和返回值,這些信息構成了函數的接口(interface)。在 main 這個層次,并不需要 關心 getYear()等函數的實現細節,只需要關注它們對于給定的參數能返回預定的數據。 亦即,只關心每個子程序“做什么”,而非“怎么做”。函數接口正是表達“做什么”信息的。 自頂向下設計中經常使用一種設計工具——結構圖(或稱模塊層次圖),其中用矩形表 示程序模塊,用兩個矩形之間的連線表示模塊間的調用關系,在連線旁邊用箭頭和標注來指 明模塊之間的界面信息。各模塊分別處于不同層次,高層模塊是調用模塊(或控制模塊), 低層模塊是被調用模塊(或受控模塊)。結構圖最頂層就主程序(總控模塊)。例如,calendar 程序的頂層設計可以用如圖 4.7 所示的結構圖來表示。 ![](https://box.kancloud.cn/2016-02-22_56cafcdf2d735.png) 圖 4.7 calendar 程序的頂層結構圖 在結構圖中,越處于下層的模塊,其細節程度就越高,即更加精化。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看