《C語言程序設計》課件算法及結(jié)構(gòu)化程序設計方法_第1頁
《C語言程序設計》課件算法及結(jié)構(gòu)化程序設計方法_第2頁
《C語言程序設計》課件算法及結(jié)構(gòu)化程序設計方法_第3頁
《C語言程序設計》課件算法及結(jié)構(gòu)化程序設計方法_第4頁
《C語言程序設計》課件算法及結(jié)構(gòu)化程序設計方法_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

概述

程序設計的關(guān)鍵是設計算法,算法與程序設計和數(shù)據(jù)結(jié)構(gòu)密切相關(guān)。

算法是解決問題的一系列操作步驟的集合,是設計思路的描述,也是指令的有限序列。

比如,廚師做菜時,都經(jīng)過一系列的步驟——洗菜、切菜、配菜、炒菜和裝盤。用計算機解題的步驟就叫算法,編程人員必須告訴計算機先做什么,再做什么,即按照算法的思想去工作,從而解決實際問題。

(數(shù)據(jù)結(jié)構(gòu)+算法=程序)1、有窮性:有限步驟之內(nèi)正常結(jié)束,不能形成無窮循環(huán)。算法的特性:2、確定性:算法中的每一個步驟必須有確定含義,無二義性得以實現(xiàn)。3、可行性:原則上能精確進行,操作可通過已實現(xiàn)基本運算執(zhí)行有限次而完成。4、有輸入:有多個或0個輸入。5、有輸出:至少有一個或多個輸出。算法的評價標準

設計算法時,通常需要考慮達到以下目標:

一般可分為四個層次:(1)程序不含語法錯誤;(2)程序?qū)τ趲捉M輸入數(shù)據(jù)能夠得出滿足規(guī)格說明要求的結(jié)果;(3)程序?qū)τ诰倪x擇的典型、苛刻而帶有刁難性的幾組輸入數(shù)據(jù)能夠得出滿足規(guī)格說明要求的結(jié)果;(軟件測試)(4)程序?qū)τ谝磺泻戏ǖ妮斎霐?shù)據(jù)都能產(chǎn)生滿足規(guī)格說明要求的結(jié)果。(極為困難)2、可讀性3、健壯性(魯棒性)4、高效率與低存儲量需求例如:求n個數(shù)的最大值問題給出算法如下:

max:=0;for(i=1;i<=n;i++)

{scanf("%f",x);if(x>max)max=x;}正確?1、正確性算法的表示(1)流程圖:是描述算法最常用的一種方法,它是用圖形符號來表示算法。描述方法:自然語言、數(shù)學方法、某種計算機語言描述規(guī)范的方法:流程圖、N-S結(jié)構(gòu)流程圖、偽代碼和PAD圖等。起至框輸入輸出判斷框處理框或流程線連接點注釋框算法的表示(2)N-S結(jié)構(gòu)流程圖:完全去掉了流程線,全部算法寫在一個矩形框內(nèi),而且在框內(nèi)還可以包含其他的框。N-S結(jié)構(gòu)流程圖算法清晰,流程不會無規(guī)律亂轉(zhuǎn)移。N-S結(jié)構(gòu)流程圖基本元素流程圖例1:求三個整數(shù)的和開始輸出sum的值結(jié)束輸入x,y,zsum=x+y+z輸出sum的值sum=x+y+z輸入x,y,zN-S結(jié)構(gòu)流程圖main(){floatx,y,z,sum;scanf("%f%f%f\n",&x,&y,&z);

sum=x+y+z;printf("sum=%f\n",sum);}結(jié)構(gòu)化程序設計的方法伴隨著軟件產(chǎn)業(yè)的蓬勃發(fā)展,軟件系統(tǒng)變得越來越復雜,開發(fā)成本越來越高,而且在開發(fā)過程出現(xiàn)一系列問題,將軟件開發(fā)與維護過程中遇到的一系列嚴重問題被人們稱為“軟件危機”。為此,荷蘭學者E.W.Dijkstra提出了程序設計中常用的GOTO語句的三大危害,并由此產(chǎn)生了結(jié)構(gòu)化程序設計方法,隨后誕生了基于這一設計方法的程序設計語言Pascal、C語言等。

結(jié)構(gòu)化程序設計語言的簡潔明了及豐富的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu),為程序員提供了極大的方便性與靈活性。

結(jié)構(gòu)化程序設計的方法

結(jié)構(gòu)化程序設計思想采用了模塊分解與功能抽象和自頂向下、分而治之的方法,解決人腦思維能力的局限性和所處理問題的復雜性之間的矛盾,從而便于開發(fā)和維護,減少程序的出錯概率和提高軟件的開發(fā)效率。

采用結(jié)構(gòu)化程序設計方法應遵循的原則:

1、自頂向下

2、模塊化

3、限制使用GOTO語句一、自頂向下設計方法敘述要解決的問題定義輸入和輸出設計算法將算法轉(zhuǎn)換C語句測試程序問題分解逐步細化開始結(jié)束二、模塊化

將一個大任務分成若干個較小的部分,每一部分承擔一定的功能,稱為“功能模塊”。每個模塊可以分別編程和調(diào)試,然后組成一個完整的程序。模塊的劃分遵循一些基本原則,如模塊內(nèi)部聯(lián)系要緊密,關(guān)聯(lián)程度要高;模塊間的接口要盡可能簡單,以減少模塊間的數(shù)據(jù)傳遞。三、限制使用GOTO語句

goto語句無條件跳轉(zhuǎn),會降低代碼的可讀性。結(jié)構(gòu)化程序質(zhì)量的衡量標準同樣以正確性作為前提。在正確的前提下,程序符合“清晰第一,效率第二”的質(zhì)量標準。#include<stdio.h>intmain(){inti=10,s=0;

L1:s+=i;i--;

if(i!=0){gotoL1;}printf("s=%d\n",s);return0;}#include<stdio.h>intmain(){inti=10,s=0;

while(i){s+=i;i--;}printf("s=%d\n",s);return0;}一個好的程序在滿足運行結(jié)果正確的基本條件之后,首先要有良好的結(jié)構(gòu),使程序清晰易懂。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論