IT計(jì)算機(jī)課件1 概述、算法_第1頁
IT計(jì)算機(jī)課件1 概述、算法_第2頁
IT計(jì)算機(jī)課件1 概述、算法_第3頁
IT計(jì)算機(jī)課件1 概述、算法_第4頁
IT計(jì)算機(jī)課件1 概述、算法_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

?本章要點(diǎn)

?c語言的特點(diǎn)

?c程序的結(jié)構(gòu)

■在計(jì)算機(jī)上運(yùn)行C程序的方法

?主要內(nèi)容

1.1c語言出現(xiàn)的歷史背景

1.2C程序的特點(diǎn)

1.3簡(jiǎn)單的C語言程序介紹

1.4運(yùn)行C程序的步驟和方法

1.1C語言出現(xiàn)的歷史背景

?c語言是國際上廣泛流行的高級(jí)語言。

?C語言是在B語言的基礎(chǔ)上發(fā)展起來的。

?B(BCPL)語言是1970年由美國貝爾實(shí)驗(yàn)室設(shè)計(jì)

的,并用于編寫了第一個(gè)UNIX操作系統(tǒng),在PDP7

上實(shí)現(xiàn)。優(yōu)點(diǎn):精練,接近硬件,缺點(diǎn):過于簡(jiǎn)

單,數(shù)據(jù)無類型。

?1973年貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基

礎(chǔ)上設(shè)計(jì)出了C語言,對(duì)B取長(zhǎng)補(bǔ)短,并用之改寫

了原來用匯編編寫的UNIX,(即UNIX第5版),但

僅在貝爾實(shí)驗(yàn)室使用。

1.1C語言出現(xiàn)的歷史背景

?1975年UNIX第6版發(fā)布,C優(yōu)點(diǎn)突出引起關(guān)注。

01977年出現(xiàn)了《可移植C語言編譯程序》,推動(dòng)了

UNIX在各種機(jī)器上實(shí)現(xiàn),C語言也得到推廣,其發(fā)

展相輔相成。

?1978年影響深遠(yuǎn)的名著《TheCProgramming

Language》由BrianMKernighan和Dennis

M.Ritchie合著,被稱為標(biāo)準(zhǔn)C。

之后,C語言先后移植到大、中、小、微型計(jì)算機(jī)

上,已獨(dú)立于UNIX和PDP,風(fēng)靡世界,成為最廣泛的

幾種計(jì)算機(jī)語言之一。

1.1C語言出現(xiàn)的歷史背景

?19834,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語言各種

版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSIC,

比標(biāo)準(zhǔn)C有了很大的發(fā)展。

1988年K&R按照ANSIC修改了他們的《TheC

ProgrammingLanguage》o

.:?1987年,ANSI公布了新標(biāo)準(zhǔn)——87ANSICo

?1990年,國際標(biāo)準(zhǔn)化組織接受了87ANSIC為ISOC

的標(biāo)準(zhǔn)QS09899—1990)。

?1994年,ISO又修訂了C語言標(biāo)準(zhǔn)。

?目前流行的C語言編譯系統(tǒng)大多是以ANSIC為基礎(chǔ)

進(jìn)行開發(fā)的。

1.1C語言出現(xiàn)的歷史背景

說明:

不同版本的c編譯系統(tǒng)所實(shí)現(xiàn)的語言功能和

語法規(guī)則又略有差別,因此讀者應(yīng)了解所用的

c語言編譯系統(tǒng)的特點(diǎn)(可以參閱有關(guān)手冊(cè))。

本書的敘述基本上以ANSIC為基礎(chǔ)。

1.2C語言的特點(diǎn)

(1)語言簡(jiǎn)潔、緊湊,使用方便、靈活。32個(gè)關(guān)鍵

字、9種控制語句,程序形式自由。

(2)運(yùn)算符豐富。34種運(yùn)算符。

(3)數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。

(4)具有結(jié)構(gòu)化的控制語句,是完全模塊化和結(jié)

構(gòu)化的語言。

(5)語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。

12C語言的特點(diǎn)

(6)允許直接訪問物理地址,能進(jìn)行位操作,能

實(shí)現(xiàn)匯編語言的大部分功能,可直接對(duì)硬件進(jìn)

行操作。兼有高級(jí)和低級(jí)語言的特點(diǎn)。

(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比

匯編程序生成的目標(biāo)代碼效率低10%-20%。

(8)程序可移植性好(與匯編語言比)?;旧?/p>

不做修改就能用于各種型號(hào)的計(jì)算機(jī)和各種

操作系統(tǒng)。

1.2C語言的特點(diǎn)

問題:既然有了面向?qū)︳腃++語言,為什么還

要學(xué)習(xí)C語言?

解釋I:C++是由于開發(fā)大型應(yīng)用軟件的需要而產(chǎn)

生的,并不是所有的人都要去編寫大型軟件。

解釋2-面向?qū)ο蟮幕A(chǔ)是面向過程。C++是面向

對(duì)象的語言,c是面向過程的,學(xué)起來比c語言

困難得多,所以不太適合程序設(shè)計(jì)的初學(xué)者。

說明:本程序的作用是輸出一行信息:

ThisisaCprogram.

#include<stdio.h>/*文件包含*/

voidmain()/*主函數(shù)*/

{/*函數(shù)體開始*/

printf(nThisisaCprogram.\n''M*輸出語句*/

}/*函數(shù)體茸束*/

說明:main-主函數(shù)名,void-函數(shù)類型

每個(gè)C程序必須有一個(gè)主函數(shù)main

是函數(shù)開始和結(jié)束的標(biāo)志,不可省

?每個(gè)C語句以分號(hào)結(jié)束

?:?使用標(biāo)準(zhǔn)庫函數(shù)時(shí)應(yīng)在程序開頭一行寫:’

ttinclude<stdio.h>

說明:輸出一行信息:sumis579

例1.2求兩數(shù)之和

ttinclude<stdio.h>

voidmain()/*求兩數(shù)之和*/

(

inta,b,sum;/*聲明,定義變量為整型*/

/*以下3行為C語句*/

a=123;b=456;

sum=a+b;

printf(sumis%d'n”,sum);

說明:/**/表不注釋。注釋只是給人看的,對(duì)

編譯和運(yùn)行不起作用。所以可以用漢字或英文字

符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單

獨(dú)成為一行。

1.3簡(jiǎn)單的C語言程序介紹

c程序:

(1)c程序是由函數(shù)構(gòu)成的。這使得程序容易實(shí)現(xiàn)

模塊化。

(2)一個(gè)函數(shù)由兩部分組成:

函數(shù)的首部:例1.3中的max函數(shù)首部

intmax(intx,inty)

函數(shù)體:花括號(hào)內(nèi)的部分。若一個(gè)函數(shù)有多個(gè)花

括號(hào),則最外層的一對(duì)花括號(hào)為函數(shù)體的范圍。

函數(shù)體包括兩部分:

聲明部分:inta,b,c;可缺省

執(zhí)行部分:由若干個(gè)語句組成。可缺省

1.3簡(jiǎn)單的C語言程序介紹

注意:

函數(shù)的聲明部分和執(zhí)行部分都可缺省,例如:

voiddump()

{

)

這是一個(gè)空函數(shù),什么也不做,但是合法的函數(shù)。

1.3簡(jiǎn)單的C語言程序介紹

小結(jié):

(3)C程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)

的位置無關(guān)。

(4)C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句,

一個(gè)語句可以分寫在多行上,C程序沒有行號(hào)。

(5)每個(gè)語句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。

(6)C語言本身沒有輸入輸出語句。輸入和輸出的操

作是由庫函數(shù)scanf和printf等函數(shù)來完成的。C

對(duì)輸入輸出實(shí)行“函數(shù)化”。

1.4運(yùn)行C程F

1.4.1運(yùn)行C程序的步驟

?上機(jī)輸入與編存源程后

?對(duì)源程序進(jìn)行編譯

?與庫函數(shù)連接

?運(yùn)行目標(biāo)程序

1.4運(yùn)行C程序的步驟和方法

1.4.2上機(jī)運(yùn)行C程序的方法

?目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的。

可以用不同的編譯系統(tǒng)對(duì)C程序進(jìn)行操作。

?常用的有TurboC2.0、TurboC++3.0、VisualC++

等。

?TurboC++3.0:是一個(gè)集成環(huán)境,它具有方便、直觀

和易用的界面,雖然它也是DOS環(huán)境下的集成環(huán)境,但

是可以把啟動(dòng)TurboC++3.0集成環(huán)境的DOS執(zhí)行文件

tc.exe生成快捷方式,也可以用鼠標(biāo)操作。

?VisualC++:也可以用VisualC++對(duì)C程序進(jìn)行編譯。

例:TurboC++3.0的使用

將TurboC++3.0編譯程序裝入磁盤某一目錄下

例如:

放在C盤根目錄下一級(jí)TC3.0子目錄下。

⑴進(jìn)入TurboC++3.0集成環(huán)境

①在DOS環(huán)境下

C:\TC3,0>tc/

②在Windows環(huán)境下

找到可執(zhí)行文件tc.exe,執(zhí)行該文件。

主菜單:11個(gè)菜單項(xiàng):

FileEditSearchRunCompileDebugProject

OptionsWindowHelp

(2)編輯源文件

新建:?jiǎn)螕簟癋ile”菜單下的“New”,

TurboC++IDE

?

?

.?.

.,.

.?

.,-

.,.

.,.

.,.

.,.

.,.

.,,

.?.

?.?

?,.

,.-

?.?

?.?.-

?.?

?.■

?.?

?.■

,.■

?.■

,.■

".■

,.■

?."

,.

?."

?.■

,.■

?.?

?.?

?.■

?.?

?.

>1

修改:選擇“File”一“Open”(即單擊“File”的下

拉菜單中的“Open”項(xiàng),修改已有的源程序。

在編輯(EDIT)狀態(tài)下光標(biāo)表示當(dāng)前進(jìn)行編輯的位

置,在此位置可以進(jìn)行插入、刪除或修改,直到

自己滿意為止。

wine

Name

\TC3.0\M

BARCHARTPLOTEMP.C

BGIDEMO.iPLOTEMP1.C

CH2<25.iPL0TEHP2.C

CPftSDEMOPL0TEMP3.C

GETOPT.CPL0TEMP4.C

GREP2MSGPL0TEMP5.C

HELLO.CPL0TEMP6.C

MfiTHERR.iSALESTAG.C

:\TC3.0\M.C

ARCHART.C145。00am

保存:在編輯(EDIT)狀態(tài)下光標(biāo)表示當(dāng)前進(jìn)行編輯

的位置,在此位置可以進(jìn)行插入、刪除或修改,

直到自己滿意為止。

(3)對(duì)源程序進(jìn)行編譯

選擇“Compile”(或“Alt+F9”)對(duì)源程序進(jìn)行編譯。

cLcpp源程序,出現(xiàn)1個(gè)錯(cuò)誤(error),0個(gè)警告

(warming)。

(4)將目標(biāo)程序進(jìn)行連接

選擇菜單“Compile”—>"Link”,如果不出現(xiàn)

方陶彳奈舞J一個(gè)后綴為.exe的可執(zhí)行文件。

選菜單“Run”一“Run”(或按“Ctrl+F9”

鍵)。

(6)退出TurboC++3.0環(huán)境

選擇“File”-“Quit”。

?本章要點(diǎn)

■算法的概念

■算法的表示

■結(jié)構(gòu)化程序設(shè)計(jì)方法

?主要內(nèi)容

2.1算法的概念

2.2簡(jiǎn)單算法舉例

2.3算出的特性

2.4怎樣表示一個(gè)算法

2.5化程序設(shè)計(jì)方沫

一個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容:

?:?對(duì)數(shù)據(jù)的描述:數(shù)據(jù)結(jié)構(gòu)(datastructure)

對(duì)操作的描述:算法(algorithm)

著名計(jì)算機(jī)科學(xué)家沃思提出一個(gè)公式:

數(shù)據(jù)結(jié)構(gòu)+算法=程序

完整的程序設(shè)計(jì)應(yīng)該是:

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

2.1算法的概念

廣義地說,為解決一個(gè)問題而采取的方法和步

驟,就稱為“算法”。

對(duì)同一個(gè)問題,可有不同的解題方法和步驟

100

例:求n

n=\

等方法1:1+2,+3,+4,一直加到100加99次

?方法2:100+(1+99)+(2+98)+..+(49+51)+50

=100+49X100+50加51次

2.1算法的概念

為了有效地進(jìn)行解題,不僅需要保證算法正確,

還要考慮算法的質(zhì)量,選擇合適的算法。希望方

法簡(jiǎn)單,運(yùn)算步驟少。

計(jì)算機(jī)算法可分為兩大類別:

?:?數(shù)值運(yùn)算算法:求數(shù)值解,例如求方程的根、求

函數(shù)的定積分等。

?:?非數(shù)值運(yùn)算:包括的面十分廣泛,最常見的是用

于事務(wù)管理領(lǐng)域,例如圖書檢索、人事管理、行

車調(diào)度管理等。

2.2簡(jiǎn)單算法舉例

例2.1:求1X2X3X4X5

步驟1:先求1x2,得到結(jié)果2

步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6

步驟3:將6再乘以4,得24

步驟4:修24再乘以5,得120

如果要求1*2x…x1000,則要寫999個(gè)步驟

可以設(shè)兩個(gè)變量:一個(gè)變量代表被乘數(shù),一個(gè)變

量代表乘數(shù)。不另設(shè)變量存放乘積結(jié)果,而直

接將每一步驟的乘積放在被乘數(shù)變量中。設(shè)P為

被乘數(shù),i為乘數(shù)。用循環(huán)算法來求結(jié)果,算法

可改寫:

S1:使p=l。

S2:使i=2。

S3:使pXi,乘積仍放在變量p11^,可表示為:pXip

S4:使i的值加1,BPi+lio

S5:如果i不大于5,返回重新執(zhí)行步驟S3以及其后

的步驟S4和S5;否則,算法結(jié)束。最后得到p的值就

是5!的值。

如果題目改為:求1x3x5X.......X1000算法只

需作很少的改動(dòng):

?si:1—P岑當(dāng)而依

S2:3一i

S3:pXi一p

S4:i+2Tp

S5:若臼1,返回S3。否則,結(jié)束。

用這種方法表示的算法具有通用性、靈活

性。S3到S5組成一個(gè)循環(huán),在實(shí)現(xiàn)算法時(shí)要

反復(fù)多次執(zhí)行S3,S4,S5等步驟,直到某一時(shí)

刻,執(zhí)行S5步驟時(shí)經(jīng)過判斷,乘數(shù)i已超過規(guī)

定的數(shù)值而不返回S3步驟為止。此時(shí)算法結(jié)束,

變量P的值就是所求結(jié)果。

例2.2有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者打印出來。設(shè)n表

示學(xué)號(hào),小代表第一個(gè)學(xué)生學(xué)號(hào),代表第i個(gè)學(xué)生學(xué)號(hào)。用G代表學(xué)生

成績(jī),gj代表第i個(gè)學(xué)生成績(jī),算法表示如下:

S1:1Ti

S2:如果》80,則打印和,否則不打印。

S3:i+1一i

S4:如果i450,返回S2,繼續(xù)執(zhí)行。否則算法結(jié)束

變量i作為下標(biāo),用來控制序號(hào)(第幾個(gè)學(xué)生,第

幾個(gè)成績(jī))。當(dāng)i超過50時(shí),表示已對(duì)50個(gè)學(xué)生的

成績(jī)處理完畢,算法結(jié)束。

例2.3判定2000?2500年中的每一年是否閏年,將結(jié)果輸出。

分析:閏年的條件是:(1)能被4整除,但不能被100整除

的年份都是閏年,如1996,2004年是閏年;(2)能被100

整除,又能被400整除的年份是閏年。如1600,2000年

是閏年。不符合這兩個(gè)條件的年份不是閏年。

變量i作為下標(biāo),用來控制序號(hào)(第幾個(gè)學(xué)生,第

幾個(gè)成績(jī))。當(dāng)i超過50時(shí),表示已對(duì)50個(gè)學(xué)生的

成績(jī)處理完畢,算法結(jié)束。

設(shè)y為被檢測(cè)的年份,算法可表示如下:

S1:2000一y

S2:若y不能被4整除,貝》輸出y“不是閏年”。然后轉(zhuǎn)

到S6。

S3:若y能被4整除,不能被100整除,則輸出y“是閏

年”。然后轉(zhuǎn)到S6。

S4:若y能被100整除,又能被400整除,輸出y“是閏

年力,否則輸出“不是閏年”。然后轉(zhuǎn)到S6。

S5:輸出y“不是閏年”。

S6:y+1—>y

S7:當(dāng)y42500時(shí),轉(zhuǎn)S2繼續(xù)執(zhí)行,如y>2500,算法

停止。

以上算法中每做一步都分別分離

出一些范圍(巳能判定為閏年或

非閏年),逐步縮小范圍,直至①y不能被

執(zhí)行S5時(shí),只可能是非閏年。4整除

“其它”包括能被4整除,又能被非閏年

100整除,而不能被400整除的那

些年份(如1990)是非閏年。

/y被100②y被4整除,

整除,又能但不能被10。

被400整除整除

閏年閏年

④其他

非閏年

例2.4求11算法如下:

111

1——+———+■4-

234

S1:sign=l單詞作變量名,以使算

S2sum=l法更易于理解:

S3deno=2sum表示累加和,deno是

S4sign=(-1)xsign英文分母(denominator)

S5term=signx(1/deno)縮寫,sign代表數(shù)值的符

S6sum=sum+term號(hào),term代表某一項(xiàng)。

S7deno=deno+l

S8若deno4100返回S4,否則算法結(jié)束。

反復(fù)執(zhí)行S4到S8步驟,直到分母大于100為止

o一共執(zhí)行了99次循環(huán),向sum累加入了99個(gè)分

數(shù)。sum最后的值就是多項(xiàng)式的值。

例2.5對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。

概念:所謂素?cái)?shù),是指除了1和該數(shù)本身之外,不能被

其它任何整數(shù)整除的數(shù)。例如,13是素?cái)?shù)。因?yàn)樗?/p>

不能被2,3,4,…,12整除。

分析:判斷一個(gè)數(shù)n(n>3)是否素?cái)?shù)的方法:

將n作為被除數(shù),將2到(n-1)各個(gè)整數(shù)輪流作為除數(shù),

如果都不能被整除,則n為素?cái)?shù)。

算法如下:

S1:輸入n的值

S2:i=2(i作為除數(shù))

S3:n被i除,得余數(shù)r

S4:如果r=0,表示n能被i整除,則打印n“不是

素?cái)?shù)”,算法結(jié)束。否則執(zhí)行S5

S5:i+1一i

S6:如果i4n-l,返回S3。否則打印n“是素

數(shù)”。然后結(jié)束。

實(shí)際上,n不必被2到(n-1)的整數(shù)除,只需被2到n/2

間整數(shù)除,甚至只需被2到爪之間的整數(shù)除即可

2.3算法的特性

一個(gè)算法應(yīng)該具有以下特點(diǎn):

?有窮性:包含有限的操作步驟。

確定性:算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的。

?有零個(gè)或多個(gè)輸入:輸入是指在執(zhí)行算法時(shí)需要

從外界取得必要的信息。

?有一個(gè)或多個(gè)輸出:算法的目的是為了求解,

“解”就是輸出。>

?有效性:算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)

行,并得到確定的結(jié)果。

2.4算法的表示

可以用不同的方法表示算法,常用的有:

e自然語言

8流程圖

③汩S流程圖

8偽代碼

2.4.1用自然語言表示算法

自然語言就是人們?nèi)粘J褂玫恼Z言,可以是

漢語或英語或其它語言。用自然語言表示通俗

易懂,但文字冗長(zhǎng),容易出現(xiàn)“歧義性”。自

然語言表示的含義往往不大嚴(yán)格,要根據(jù)上下

文才能判斷其正確含義,描述包含分支和循環(huán)

的算法時(shí)也不很方便。因此,除了那些很簡(jiǎn)單

的問題外,一般不用自然語言描述算法。

2.4.2用流程圖表示算法

常用的流程圖符號(hào):

CD<>口

起止框判斷框處理框輸入/輸出框

o

二II

注釋框流向線連接點(diǎn)

例2.6將求5!的算法用流程圖表示

如果需要將最后結(jié)

果打印出來,可在

菱形框的下面加一

個(gè)輸出框。

例2.7將例2.2的算法用流程圖

表示。打印50名學(xué)生中成績(jī)?cè)?0

分以上者的學(xué)號(hào)和成績(jī)。

J__

如果如果包括7

/輸入n)、gj/----------

這個(gè)輸入數(shù)據(jù)

|i+10i

的部分,流程

N

圖為——<Q>50^>

l=?i

-YN

1

L輸出ni、gi/

1?工?

i+1-

---------------------------<^i>50>

例2.8將例2.3判定

閏年的算法用流程

圖表示

例2.9將例2.4的算法用流程圖表示

11111

1——+————+—......+-----

23499100

例2.10將例2.5判斷素?cái)?shù)的算法用流程圖

表示

小結(jié):

流程圖是表示算法的較好的工具。

一個(gè)流程圖包括以下幾部分:

⑴表示相應(yīng)操作的框;

⑵帶箭頭的流程線;

⑶框內(nèi)外必要的文字說明。

2.三種基本結(jié)構(gòu)

三種基本結(jié)構(gòu):

順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

用這三種基本結(jié)構(gòu)作為表示一個(gè)良好算法的

基本單元。

三種基本結(jié)構(gòu)的圖示:

A

AB

B

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

選擇結(jié)構(gòu)

當(dāng)型(While型)循環(huán)結(jié)構(gòu)直到型(Until型)循環(huán)

三種基本結(jié)構(gòu)的共同特點(diǎn):

⑴只有一個(gè)入口。

⑵只有一個(gè)出口。(請(qǐng)注意:一個(gè)菱形判斷框有兩

個(gè)出口,而一個(gè)選擇結(jié)構(gòu)只有一個(gè)出口。不要將

菱形框的出口和選擇結(jié)構(gòu)的出口混淆。)

⑶結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。

(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。

不正確的流程表示:

t

B

圖中沒有一條從入口到出口

的路徑通過A框流程內(nèi)的死循環(huán)

小結(jié):

?由三種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可

以解決任何復(fù)雜的問題。由基本結(jié)構(gòu)所構(gòu)

成的算法屬于“結(jié)構(gòu)化”的算法,它不存

在無規(guī)律的轉(zhuǎn)向,只在本基本結(jié)構(gòu)內(nèi)才允

許存在分支和向前或向后的跳轉(zhuǎn)。

2.4.4用N-S流程圖表示算法

1973年美國學(xué)者提出了一種新的流程圖形式。在

這種流程圖中,完全去掉了帶箭頭的流程線。全部

算法寫在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其它

的從屬于它的框,或者說,由一些基本的框組成一

個(gè)大的框。這種流程圖又稱N—S結(jié)構(gòu)化流程圖。

N-S流程圖用以下的流程圖符號(hào):

A

直到Pi成立

⑴順序結(jié)構(gòu)當(dāng)Pi成立

(2)選擇結(jié)構(gòu)

A

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

用三種N-S流程圖中的基本框,可以組成復(fù)雜的N-S流程圖。圖中的A框或B

框,可以是一個(gè)簡(jiǎn)單的操作,也可以是三個(gè)基本結(jié)構(gòu)之一。

A框可以是一個(gè)選擇結(jié)構(gòu)

B框可以是一個(gè)循環(huán)結(jié)構(gòu)

例2.11將例2.1的求5!算

法用N?S圖表不

1令

20i

t*i=>t

i+l今i

直到i〉5

輸出t

N-S圖表示算法的優(yōu)點(diǎn)

?:?比文字描述直觀、形象、易于理解;比傳

統(tǒng)流程圖緊湊易畫。尤其是它廢除了流程線,

整個(gè)算法結(jié)構(gòu)是由各個(gè)基本結(jié)構(gòu)按順序組成

的,N—S流程圖中的上下順序就是執(zhí)行時(shí)的

順序。用N—S圖表示的算法都是結(jié)構(gòu)化的算

法,因?yàn)樗豢赡艹霈F(xiàn)流程無規(guī)律的跳轉(zhuǎn),

而只能自上而下地順序執(zhí)行。

小結(jié):

?一個(gè)結(jié)構(gòu)化的算法是由一些基本結(jié)構(gòu)順序組成

的。在基本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),

流程的轉(zhuǎn)移只存在于一個(gè)基本結(jié)構(gòu)范圍之內(nèi)(如

循環(huán)中流程的跳轉(zhuǎn));一個(gè)非結(jié)構(gòu)化的算法可

以用一個(gè)等價(jià)的結(jié)構(gòu)化算法代替,其功能不變。

如果一個(gè)算法不能分解為若干個(gè)基本結(jié)構(gòu),則

它必然不是一個(gè)結(jié)構(gòu)化的算法。

2.4.5用位代碼表示算法(學(xué))

?概念:偽代碼是用介于自然語言和計(jì)算機(jī)語言之

間的文字和符號(hào)來描述算法。

?特點(diǎn):它如同一'篇文章一'樣,自上而下地寫下

來。每一行(或幾行)表示一個(gè)基本操作。它不用

圖形符號(hào),因此書寫方便、格式緊湊,也比較

好懂,也便于向計(jì)算機(jī)語言算法(即程序)過渡。

?用處:適用于設(shè)計(jì)過程中需要反復(fù)修改時(shí)的流程

描述。

2.4.6用計(jì)算機(jī)語言表示算法

?概念:用計(jì)算機(jī)實(shí)現(xiàn)算法。計(jì)算機(jī)是無法識(shí)別流

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論