一、程序設(shè)計(jì)基本知識_第1頁
一、程序設(shè)計(jì)基本知識_第2頁
一、程序設(shè)計(jì)基本知識_第3頁
一、程序設(shè)計(jì)基本知識_第4頁
一、程序設(shè)計(jì)基本知識_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一、程序設(shè)計(jì)基本知識

1.1程序與程序語言

1.2.1程序與程序語言

1.計(jì)算機(jī)語言

什么是計(jì)算機(jī)語言?為什么要使用計(jì)算機(jī)語言?過去,一提到語言這個(gè)詞,人們自然想到的是像英語、漢語等這樣的自然語言,因?yàn)樗侨撕腿讼嗷ソ涣餍畔⒉豢扇鄙俚墓ぞ?。而今天,?jì)算機(jī)遍布了我們生活的每一個(gè)角落,除了人和人之間的相互交流之外,我們必須和計(jì)算機(jī)交流。用什么樣的方式和計(jì)算機(jī)做最直接的交流呢?人們自然想到的是最古老也最方便的方式--語言。人和人交流用的是雙方都能聽懂和讀懂的自然語言,同樣,人和計(jì)算機(jī)交流也要用人和計(jì)算機(jī)都容易接受和理解的語言,這就是計(jì)算機(jī)語言。人們用自然語言講述和書寫,目的是給另外的人傳播信息。同樣,我們使用計(jì)算機(jī)語言把我們的意圖表達(dá)給計(jì)算機(jī),目的是使用計(jì)算機(jī)。

計(jì)算機(jī)語言是根據(jù)計(jì)算機(jī)的特點(diǎn)而編制的,它沒有自然語言那么豐富多樣,而只是有限規(guī)則的集合,所以它簡單易學(xué)。但是,也正因?yàn)樗歉鶕?jù)機(jī)器的特點(diǎn)編制的,所以交流中無法意會(huì)和言傳,而更多地表現(xiàn)了說一不二,表現(xiàn)了"規(guī)則"的嚴(yán)謹(jǐn)。例如該是";"的地方不能寫成".",該寫"a"的地方不能寫成"A",這使得人和計(jì)算機(jī)的交流在一開始會(huì)有些不習(xí)慣。不過,只要認(rèn)識到計(jì)算機(jī)語言的特點(diǎn),注意學(xué)習(xí)方法,把必須的嚴(yán)謹(jǐn)和恰當(dāng)?shù)撵`活相結(jié)合,一切都會(huì)得心應(yīng)手。

2.程序

我們知道,計(jì)算機(jī)是一種具有內(nèi)部存儲(chǔ)能力的自動(dòng)、高效的電子設(shè)備,它最本質(zhì)的使命就是執(zhí)行指令所規(guī)定的操作。如果我們需要計(jì)算機(jī)完成什么工作,只要將其步驟用諸條指令的形式描述出來,并把這些指令存放在計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中,需要結(jié)果時(shí)就向計(jì)算機(jī)發(fā)出一個(gè)簡單的命令,計(jì)算機(jī)就會(huì)自動(dòng)逐條順序執(zhí)行操作,全部指令執(zhí)行完就得到了預(yù)期的結(jié)果。這種可以被連續(xù)執(zhí)行的一條條指令的集合稱為計(jì)算機(jī)的程序。也就是說,程序是計(jì)算機(jī)指令的序列,編制程序的工作就是為計(jì)算機(jī)安排指令序列。

但是,我們知道,指令是二進(jìn)制編碼,用它編制程序既難記憶,又難掌握,所以,計(jì)算機(jī)工作者就研制出了各種計(jì)算機(jī)能夠懂得、人們又方便使用的計(jì)算機(jī)語言,程序就是用計(jì)算機(jī)語言來編寫的。因此,計(jì)算機(jī)語言通常被稱為"程序語言",一個(gè)計(jì)算機(jī)程序總是用某種程序語言書寫的。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第1頁。

3.程序語言的發(fā)展

程序語言的產(chǎn)生和發(fā)展,直接推動(dòng)了計(jì)算機(jī)的普及和應(yīng)用。自第一個(gè)高級語言問世以來,人們已發(fā)明了上千種程序語言,常用的也有上百種。這些語言之間有什么區(qū)別,我們應(yīng)該學(xué)習(xí)哪一種?

計(jì)算機(jī)語言按使用方式和功能別可分為低級語言和高級語言。低級語言包括機(jī)器語言和匯編語言。機(jī)器語言就是計(jì)算機(jī)指令的集合,它與計(jì)算機(jī)同時(shí)誕生,是第一代的計(jì)算機(jī)語言;匯編語言是用符號來表示計(jì)算機(jī)指令,被稱為第二代語言。機(jī)器語言和匯編語言都是圍繞特定的計(jì)算機(jī)或計(jì)算機(jī)族而設(shè)計(jì)的,是面向計(jì)算機(jī)的語言。要使用這種語言必須了解計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),而且難學(xué)、難寫、難記憶,把這種語言稱為低級語言。因?yàn)榈图壵Z言是難以普及應(yīng)用的,為此便產(chǎn)生了第三代語言--高級語言。它采用了完全符號化的描述形式,用類似自然語言的形式描述對問題的處理過程,用數(shù)學(xué)表達(dá)式的形式描述對數(shù)據(jù)的計(jì)算過程??梢姡呒壵Z言只是要求人們向計(jì)算機(jī)描述問題的求解過程,而不關(guān)心計(jì)算機(jī)的內(nèi)部結(jié)構(gòu),所以把高級語言稱為"面向過程語言",它易于被人們理解和接受。典型的面向過程語言有BASIC、FORTRAN、COBOL、C、Pascal等等。

隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,自從80年代以來,眾多的第四代非過程化語言、第五代智能化語言也競相推出。如果說第三代語言要求人們告訴計(jì)算機(jī)怎么做,那么第四代語言只要求人們告訴計(jì)算機(jī)做什么。因此,人們稱第四代語言是"面向?qū)ο笳Z言"。面向?qū)ο蟾拍畹奶岢鍪窍鄬τ?面向過程"的一次革命,面向?qū)ο蠹夹g(shù)在系統(tǒng)程序設(shè)計(jì)、多媒體應(yīng)用、數(shù)據(jù)庫等諸多領(lǐng)域得到廣泛應(yīng)用。但是,"面向過程"是程序設(shè)計(jì)的基礎(chǔ),尤其對于程序設(shè)計(jì)的初學(xué)者。所以,我們將以面向過程的C程序設(shè)計(jì)語言為背景,主要介紹程序設(shè)計(jì)的基本概念和方法。在本書最后一章中,我們將結(jié)合VisualC++6.0,介紹面向?qū)ο蟪绦蛟O(shè)計(jì)語言的基本概念和初步使用。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第1頁。上一頁下一頁1.2算法和算法的表示

1.2.1算法的概念

1.算法的基本概念一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第2頁。

什么是算法?當(dāng)代著名計(jì)算機(jī)科學(xué)家D.E.Knuth在他撰寫的《THEARTOFCOMPUTERPROGRAMMING》一書中寫到:"一個(gè)算法,就是一個(gè)有窮規(guī)則的集合,其中之規(guī)則規(guī)定了一個(gè)解決某一特定類型的問題的運(yùn)算序列。"簡單地說,任何解決問題的過程都是由一定的步驟組成的,把解決問題確定的方法和有限的步驟稱作為算法。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第2頁。需要說明的是,不是只有計(jì)算問題才有算法。例如,加工一張寫字臺,其加工順序是:桌腿桌面抽屜組裝,這就是加工這張寫字臺的算法。當(dāng)然,如果是按"抽屜桌面桌腿組裝"這樣的順序加工,那就是加工這張寫字臺有另一種算法,這其中沒有計(jì)算問題。通常計(jì)算機(jī)算法分為兩大類:數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法。數(shù)值運(yùn)算是指對問題求數(shù)值解,例如對微分方程求解、對函數(shù)的定積分求解、對高次方程求解等,都屬于數(shù)值運(yùn)算范圍。非數(shù)值運(yùn)算包括非常廣泛的領(lǐng)域,例如資料檢索、事務(wù)管理、數(shù)據(jù)處理等。數(shù)值運(yùn)算有確定的數(shù)學(xué)模型,一般都有比較成熟的算法。許多常用算法通常還會(huì)被編寫成通用程序并匯編成各種程序庫的形式,用戶需要時(shí)可直接調(diào)用。例如數(shù)學(xué)程序庫、數(shù)學(xué)軟件包等。而非數(shù)值運(yùn)算的種類繁多,要求不一,很難提供統(tǒng)一規(guī)范的算法。在一些關(guān)于算法分析的著作中,一般也只是對典型算法作詳細(xì)討論,其它更多的非數(shù)值運(yùn)算是需要用戶設(shè)計(jì)其算法的。下面通過三個(gè)簡單的問題說明設(shè)計(jì)算法的思維方法。

例1-1:有黑和藍(lán)兩個(gè)墨水瓶,但卻錯(cuò)把黑墨水裝在了藍(lán)墨水瓶子里,而藍(lán)墨水錯(cuò)裝在了黑墨水瓶子里,要求將其互換。

算法分析:這是一個(gè)非數(shù)值運(yùn)算問題。因?yàn)閮蓚€(gè)瓶子的墨水不能直接交換,所以,解決這一問題的關(guān)鍵是需要引入第三個(gè)墨水瓶。設(shè)第三個(gè)墨水瓶為白色,其交換步驟如下:

①將黑瓶中的藍(lán)墨水裝入白瓶中;

②將藍(lán)瓶中的黑墨水裝入黑瓶中;

③將白瓶中的藍(lán)墨水裝入藍(lán)瓶中;

④交換結(jié)束。

例1-2:計(jì)算函數(shù)M(x)的值。函數(shù)M(x)為:其中,a,b,c為常數(shù)。

算法分析:本題是一個(gè)數(shù)值運(yùn)算問題。其中M代表要計(jì)算的函數(shù)值,有兩個(gè)不同的表達(dá)式,根據(jù)x的取值決定采用哪一個(gè)算式。根據(jù)計(jì)算機(jī)具有邏輯判斷的基本功能,用計(jì)算機(jī)解題的算法如下:

①將a、b、c和x的值輸入到計(jì)算機(jī);

②判斷x≤a?如果條件成立,執(zhí)行第③步,否則執(zhí)行第④步;

③按表達(dá)式bx+a2計(jì)算出結(jié)果存放到M中,然后執(zhí)行第⑤步;

④按表達(dá)式a(c-x)+c3計(jì)算出結(jié)果存放到M中,然后執(zhí)行第⑤步;

⑤輸出M的值;

⑥算法結(jié)束。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第3頁。

例1-3:給定兩個(gè)正整數(shù)m和n(m≥n),求它們的最大公約數(shù)。

算法分析:這也是一個(gè)數(shù)值運(yùn)算問題,它有成熟的算法,我國數(shù)學(xué)家秦九韶在《算書九章》一書中曾記載了這個(gè)算法。求最大公約數(shù)的問題一般用輾轉(zhuǎn)相除法(也稱歐幾里德算法)求解。

例如:設(shè)m35,n15,余數(shù)用r表示。它們的最大公約數(shù)的求法如下:

35/15商2余數(shù)為5以n作m,以r作n,繼續(xù)相除;

15/5商3余數(shù)為0當(dāng)余數(shù)為零時(shí),所得n即為兩數(shù)的最大公約數(shù)。

所以35和15兩數(shù)的最大公約數(shù)為5。

用這種方法求兩數(shù)的最大公約數(shù),其算法可以描述如下:

①將兩個(gè)正整數(shù)存放到變量m和n中;

②求余數(shù):計(jì)算m除以n,將所得余數(shù)存放到變量r中;

③判斷余數(shù)是否為0:若余數(shù)為0則執(zhí)行第⑤步,否則執(zhí)行第④步;

④更新被除數(shù)和余數(shù):將n的值存放到m中,將r的值存放到n中,并轉(zhuǎn)向第②步繼續(xù)循環(huán)執(zhí)行;

⑤輸出n的當(dāng)前值,算法結(jié)束。

如此循環(huán),直到得到結(jié)果。

由上述三個(gè)簡單的例子可以看出,一個(gè)算法由若干操作步驟構(gòu)成,并且這些操作是按一定的控制結(jié)構(gòu)所規(guī)定的次序執(zhí)行。如例1-1中的四個(gè)操作步驟是順序執(zhí)行的,稱之為順序結(jié)構(gòu)。而在例1-2中,則不是按操作步驟順序執(zhí)行,也不是所有步驟都執(zhí)行。如第三步和第四步的兩個(gè)操作就不能同時(shí)被執(zhí)行,它們需要根據(jù)條件判斷決定執(zhí)行哪個(gè)操作,這種結(jié)構(gòu)稱之為分支結(jié)構(gòu)。在例1-3中不僅包含了判斷,而且需要重復(fù)執(zhí)行。如第二步到第五步之間的步驟就需要根據(jù)條件判斷是否重復(fù)執(zhí)行,并且一直延續(xù)到條件"余數(shù)為0"為止,這種具有重復(fù)執(zhí)行功能的結(jié)構(gòu)稱之為循環(huán)結(jié)構(gòu)。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第3頁。

2.算法的兩要素

由上述三個(gè)例子可以看出,任何簡單或復(fù)雜的算法都是由基本功能操作和控制結(jié)構(gòu)這兩個(gè)要素組成。不論計(jì)算機(jī)的種類如何之多,但它們最基本的功能操作是一致的。計(jì)算機(jī)的基本功能操作包括以下四個(gè)方面:

(1)邏輯運(yùn)算:與、或、非;

(2)算術(shù)運(yùn)算:加、減、乘、除;

(3)數(shù)據(jù)比較:大于、小于、等于、不等于、大于等于、小于等于;

(4)數(shù)據(jù)傳送:輸入、輸出、賦值。

算法的控制結(jié)構(gòu)決定了算法的執(zhí)行順序。如以上例題所示,算法的基本控制結(jié)構(gòu)通常包括順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。不論是簡單的還是復(fù)雜的算法,都是由這三種基本控制結(jié)構(gòu)組合而成的。

算法是對程序控制結(jié)構(gòu)的描述,而數(shù)據(jù)結(jié)構(gòu)是對程序中數(shù)據(jù)的描述。因?yàn)樗惴ǖ奶幚韺ο蟊厝皇菃栴}中所涉及到的相關(guān)數(shù)據(jù),所以不能離開數(shù)據(jù)結(jié)構(gòu)去抽象地分析程序的算法,也不能脫離算法去孤立地研究程序的數(shù)據(jù)結(jié)構(gòu),而只能從算法和數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一上去認(rèn)識程序。但是,在計(jì)算機(jī)的高級語言中,數(shù)據(jù)結(jié)構(gòu)是通過數(shù)據(jù)類型表現(xiàn)的,本書在第三章、第七章、第十章和第十一章中,將通過對C語言數(shù)據(jù)類型的詳細(xì)描述說明數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計(jì)中的作用。這里我們只討論算法的問題。

需要強(qiáng)調(diào)的是,設(shè)計(jì)算法與演繹數(shù)學(xué)有明顯區(qū)別,演繹數(shù)學(xué)是以公理系統(tǒng)為基礎(chǔ),通過有限次推演完成對問題的求解。每次推演都是對問題的進(jìn)一步求解,如此不斷推演,直到能將問題的解完全描述出來為止。而設(shè)計(jì)算法則是充分利用解題環(huán)境所提供的基本操作,對輸入數(shù)據(jù)進(jìn)行逐步加工、變換和處理,從而達(dá)到解決問題的目的。上一頁下一頁1.3結(jié)構(gòu)化程序設(shè)計(jì)方法一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第4頁。

程序設(shè)計(jì)的基本目標(biāo)是用算法對問題的原始數(shù)據(jù)進(jìn)行處理,從而獲得所期望的效果。但這僅僅是程序設(shè)計(jì)的基本要求。要全面提高程序的質(zhì)量,提高編程效率,使程序具有良好的可讀性、可靠性、可維護(hù)性以及良好的結(jié)構(gòu),編制出好的程序來,應(yīng)當(dāng)是每位程序設(shè)計(jì)工作者追求的目標(biāo)。而要做到這一點(diǎn),就必須掌握正確的程序設(shè)計(jì)方法和技術(shù)。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第4頁。

1.3.1程序的三種基本結(jié)構(gòu)

結(jié)構(gòu)化程序的概念首先是從以往編程過程中無限制地使用轉(zhuǎn)移語句而提出的。轉(zhuǎn)移語句可以使程序的控制流程強(qiáng)制性的轉(zhuǎn)向程序的任一處,在傳統(tǒng)流程圖中,就是用上節(jié)我們提到的"很隨意"的流程線來描述這種轉(zhuǎn)移功能。如果一個(gè)程序中多處出現(xiàn)這種轉(zhuǎn)移情況,將會(huì)導(dǎo)致程序流程無序可尋,程序結(jié)構(gòu)雜亂無章,這樣的程序是令人難以理解和接受的,并且容易出錯(cuò)。尤其是在實(shí)際軟件產(chǎn)品的開發(fā)中,更多的追求軟件的可讀性和可修改性,象這種結(jié)構(gòu)和風(fēng)格的程序是不允許出現(xiàn)的。為此提出了程序的三種基本結(jié)構(gòu)。

在討論算法時(shí)我們列舉了程序的順序、選擇和循環(huán)三種控制流程,這就是結(jié)構(gòu)化程序設(shè)計(jì)方法強(qiáng)調(diào)使用的三種基本結(jié)構(gòu)。算法的實(shí)現(xiàn)過程是由一系列操作組成的,這些操作之間的執(zhí)行次序就是程序的控制結(jié)構(gòu)。1996年,計(jì)算機(jī)科學(xué)家Bohm和Jacopini證明了這樣的事實(shí):任何簡單或復(fù)雜的算法都可以由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組合而成。所以,這三種結(jié)構(gòu)就被稱為程序設(shè)計(jì)的三種基本結(jié)構(gòu)。也是結(jié)構(gòu)化程序設(shè)計(jì)必須采用的結(jié)構(gòu)。

1.順序結(jié)構(gòu)

順序結(jié)構(gòu)表示程序中的各操作是按照它們出現(xiàn)的先后順序執(zhí)行的,其流程如圖1-6所示。圖中的s1和s2表示兩個(gè)處理步驟,這些處理步驟可以是一個(gè)非轉(zhuǎn)移操作或多個(gè)非轉(zhuǎn)移操作序列,甚至可以是空操作,也可以是三種基本結(jié)構(gòu)中的任一結(jié)構(gòu)。整個(gè)順序結(jié)構(gòu)只有一個(gè)入口點(diǎn)a和一個(gè)出口點(diǎn)b。這種結(jié)構(gòu)的特點(diǎn)是:程序從入口點(diǎn)a開始,按順序執(zhí)行所有操作,直到出口點(diǎn)b處,所以稱為順序結(jié)構(gòu)。上一節(jié)圖1-2表示的就是一個(gè)順序結(jié)構(gòu)的流程圖。事實(shí)上,不論程序中包含了什么樣的結(jié)構(gòu),而程序的總流程都是順序結(jié)構(gòu)的。例如,在圖1-3、圖1-4和圖1-5所表示的流程圖中,其總體結(jié)構(gòu)流程都是自上而下順序執(zhí)行的。

一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第5頁。2.選擇結(jié)構(gòu)

選擇結(jié)構(gòu)表示程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(zhí)行。選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。

雙選擇是典型的選擇結(jié)構(gòu)形式,其流程如圖1-8所示,圖中的s1和s2與順序結(jié)構(gòu)中的說明相同。由圖中可見,在結(jié)構(gòu)的入口點(diǎn)a處是一個(gè)判斷框,表示程序流程出現(xiàn)了兩個(gè)可供選擇的分支,如果條件滿足執(zhí)行s1處理,否則執(zhí)行s2處理。值得注意的是,在這兩個(gè)分支中只能選擇一條且必須選擇一條執(zhí)行,但不論選擇了哪一條分支執(zhí)行,最后流程都一定到達(dá)結(jié)構(gòu)的出口點(diǎn)b處。前面的圖1-3中就采用了雙選擇結(jié)構(gòu)流程圖。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第5頁。

當(dāng)s1和s2中的任意一個(gè)處理為空時(shí),說明結(jié)構(gòu)中只有一個(gè)可供選擇的分支,如果條件滿足執(zhí)行s1處理,否則順序向下到流程出口b處。也就是說,當(dāng)條件不滿足時(shí),什么也沒執(zhí)行,所以稱為單選擇結(jié)構(gòu),如圖1-7所示。多選擇結(jié)構(gòu)是指程序流程中遇到如圖1-9所示的s1、s2、……、sn等多個(gè)分支,程序執(zhí)行方向?qū)⒏鶕?jù)條件確定。如果滿足條件1則執(zhí)行s1處理,如果滿足條件n則執(zhí)行Sn處理,總之要根據(jù)判斷條件選擇多個(gè)分支的其中之一執(zhí)行。不論選擇了哪一條分支,最后流程要到達(dá)同一個(gè)出口處。如果所有分支的條件都不滿足,則直接到達(dá)出口。有些程序語言不支持多選擇結(jié)構(gòu),但所有的結(jié)構(gòu)化程序設(shè)計(jì)語言都是支持的,C語言是面向過程的結(jié)構(gòu)化程序設(shè)計(jì)語言,它可以非常簡便的實(shí)現(xiàn)這一功能。本書在第五章將詳細(xì)介紹各種形式的選擇結(jié)構(gòu)應(yīng)用問題。

3.循環(huán)結(jié)構(gòu)

循環(huán)結(jié)構(gòu)表示程序反復(fù)執(zhí)行某個(gè)或某些操作,直到某條件為假(或?yàn)檎妫r(shí)才可終止循環(huán)。在循環(huán)結(jié)構(gòu)中最主要的是:什么情況下執(zhí)行循環(huán)?哪些操作需要循環(huán)執(zhí)行?循環(huán)結(jié)構(gòu)的基本形式有兩種:當(dāng)型循環(huán)和直到型循環(huán),其流程如圖1-10所示。圖中虛線框內(nèi)的操作稱為循環(huán)體,是指從循環(huán)入口點(diǎn)a到循環(huán)出口點(diǎn)b之間的處理步驟,這就是需要循環(huán)執(zhí)行的部分。而什么情況下執(zhí)行循環(huán)則要根據(jù)條件判斷。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第6頁。當(dāng)型結(jié)構(gòu):表示先判斷條件,當(dāng)滿足給定的條件時(shí)執(zhí)行循環(huán)體,并且在循環(huán)終端處流程自動(dòng)返回到循環(huán)入口;如果條件不滿足,則退出循環(huán)體直接到達(dá)流程出口處。因?yàn)槭?當(dāng)條件滿足時(shí)執(zhí)行循環(huán)",即先判斷后執(zhí)行,所以稱為當(dāng)型循環(huán)。其流程如圖1-10(a)所示。

直到型循環(huán):表示從結(jié)構(gòu)入口處直接執(zhí)行循環(huán)體,在循環(huán)終端處判斷條件,如果條件不滿足,返回入口處繼續(xù)執(zhí)行循環(huán)體,直到條件為真時(shí)再退出循環(huán)到達(dá)流程出口處,是先執(zhí)行后判斷。因?yàn)槭?直到條件為真時(shí)為止",所以稱為直到型循環(huán)。其流程如圖1-10(b)所示。本章圖1-5用迭代法求和的流程圖就是一個(gè)典型的直到型循環(huán)結(jié)構(gòu)。

同樣,循環(huán)型結(jié)構(gòu)也只有一個(gè)入口點(diǎn)a和一個(gè)出口點(diǎn)b,循環(huán)終止是指流程執(zhí)行到了循環(huán)的出口點(diǎn)。圖中所表示的S處理可以是一個(gè)或多個(gè)操作,也可以是一個(gè)完整的結(jié)構(gòu)或一個(gè)過程。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第6頁。整個(gè)虛線框中是一個(gè)循環(huán)結(jié)構(gòu)。

通過三種基本控制結(jié)構(gòu)可以看到,結(jié)構(gòu)化程序中的任意基本結(jié)構(gòu)都具有唯一入口和唯一出口,并且程序不會(huì)出現(xiàn)死循環(huán)。在程序的靜態(tài)形式與動(dòng)態(tài)執(zhí)行流程之間具有良好的對應(yīng)關(guān)系。上一頁下一頁本章小結(jié)一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第7頁。

本章介紹的基本內(nèi)容有:語言、程序和程序設(shè)計(jì);算法、算法設(shè)計(jì)和算法的表示;程序結(jié)構(gòu)、結(jié)構(gòu)化程序和程序風(fēng)格。

語言是交流的工具,程序是指令的集合,而程序設(shè)計(jì)就是用計(jì)算機(jī)語言對所要解決的問題進(jìn)行完整而準(zhǔn)確的描述過程。一個(gè)完整的程序應(yīng)該涉及到以下四個(gè)方面的問題:

數(shù)據(jù)結(jié)構(gòu)、算法、編程語言、程序設(shè)計(jì)方法

程序設(shè)計(jì)過程的五個(gè)步驟是:①分析問題,建立數(shù)學(xué)模型;②確定數(shù)據(jù)結(jié)構(gòu)和算法;③編制程序;④測試程序。其中第①、②步就是確定解決問題的方案;第③步是用程序語言把這個(gè)解決方案嚴(yán)格的描述出來;第④步是在計(jì)算機(jī)上測試這個(gè)程序。在這里,工作過程的第①、②步與其他領(lǐng)域里解決問題的方法相類似,只是考慮問題的基礎(chǔ)不同、出發(fā)點(diǎn)不同。在程序設(shè)計(jì)領(lǐng)域里,我們需要從計(jì)算的觀點(diǎn)、程序的觀點(diǎn)出發(fā),由此引出了數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)以及算法的表示等新問題。這是本章的重點(diǎn),也是程序設(shè)計(jì)的基礎(chǔ)。第③、④步是程序設(shè)計(jì)工作的特殊問題。由于程序設(shè)計(jì)具有嚴(yán)格規(guī)定的組成結(jié)構(gòu),各種結(jié)構(gòu)有明確定義的功能和形式,要把問題解決方案轉(zhuǎn)變?yōu)榉线@些結(jié)構(gòu)的形式,這也不是輕而易舉的,需要掌握相關(guān)的技術(shù)和方法。由此引出了程序的三種基本結(jié)構(gòu)、流程圖、N-S圖和結(jié)構(gòu)化程序設(shè)計(jì)等方法和技術(shù)。這些都是程序設(shè)計(jì)的基本知識,每一個(gè)程序設(shè)計(jì)工作者都必須掌握。

會(huì)用一些常用算法(例如迭代法、枚舉法、遞歸法等)解決實(shí)際問題,對于初學(xué)者來說,是至關(guān)重要的。許多初學(xué)者往往是把要解決的問題首先和程序設(shè)計(jì)語言中的語句聯(lián)系在一起,影響了程序設(shè)計(jì)質(zhì)量。設(shè)計(jì)算法和編寫程序要分開考慮,當(dāng)你還沒有學(xué)習(xí)程序語言時(shí),就學(xué)會(huì)針對一些簡單問題設(shè)計(jì)算法,這是學(xué)習(xí)程序設(shè)計(jì)入門的好方法。

程序的結(jié)構(gòu)化技術(shù)是程序設(shè)計(jì)的基本技術(shù),它使得程序在邏輯上層次分明、結(jié)構(gòu)清晰、易讀、易維護(hù),從而提高程序質(zhì)量和開發(fā)效率。采用結(jié)構(gòu)化程序設(shè)計(jì)方法,并且用流程圖表示算法是必須的。將算法轉(zhuǎn)換成程序代碼,并注意程序風(fēng)格,這都是編寫代碼時(shí)要注意的問題。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第7頁。上一頁下一頁習(xí)題一

一、單選題

1-1.以下______是面向過程的程序設(shè)計(jì)語言。

A.機(jī)器語言B.匯編語言C.高級語言D.第四代語言1-2.程序設(shè)計(jì)一般包含以下四個(gè)步驟,其中首先應(yīng)該完成的是______。

A.設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法B.建立數(shù)學(xué)模型

C.編寫程序D.調(diào)試運(yùn)行程序1-3.以下常用算法中,適合計(jì)算等差級數(shù)的算法是______。

A.枚舉法B.遞推法C.分治法D.排序法1-4.以下不屬于算法基本特征的是______。

A.有窮性B.有效性C.可靠性D.有一個(gè)或多個(gè)輸出1-5.下面描述中,不正確的是______。

A.程序就是軟件,但軟件不僅僅是程序。

B.程序是指令的集合,計(jì)算機(jī)語言是編寫程序的工具。

C.計(jì)算機(jī)語言都是形式化語言,它有嚴(yán)格的語法規(guī)則和定義。

D.計(jì)算機(jī)語言只能編寫程序而不能表示算法。1-6.下面描述中,正確的是______。

A.結(jié)構(gòu)化程序設(shè)計(jì)方法是面向過程程序設(shè)計(jì)的主流。

B.算法就是計(jì)算方法。

C.一個(gè)正確的程序就是指程序書寫正確。

D.計(jì)算機(jī)語言是編寫程序的工具而不是表示算法的工具。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第8頁。1-7.下面描述中,不正確的是______。

A.遞歸法的關(guān)鍵是必須有一個(gè)遞歸終止條件。

B.遞歸算法要求語言具有反復(fù)自我調(diào)用子程序的能力。

C.對于同一個(gè)問題,遞推算法比遞歸算法的執(zhí)行時(shí)間要長。

D.遞推算法總可以轉(zhuǎn)換為一個(gè)遞歸算法。一、程序設(shè)計(jì)基本知識全文共9頁,當(dāng)前為第8頁。1-8.N-S圖與傳統(tǒng)流程圖比較,其主要優(yōu)點(diǎn)是______。

A.杜絕了程序的無條件轉(zhuǎn)移。

B.具有順序、選擇和循環(huán)三種基本結(jié)構(gòu)。

C.簡單、直

溫馨提示

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

最新文檔

評論

0/150

提交評論