05循環(huán)程序設(shè)計(jì).ppt_第1頁(yè)
05循環(huán)程序設(shè)計(jì).ppt_第2頁(yè)
05循環(huán)程序設(shè)計(jì).ppt_第3頁(yè)
05循環(huán)程序設(shè)計(jì).ppt_第4頁(yè)
05循環(huán)程序設(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、循環(huán)程序設(shè)計(jì),5,目錄,5.1 概述,計(jì)算機(jī)程序由若干語(yǔ)句順序組成。順序結(jié)構(gòu)的程序只能按照語(yǔ)句的先后順序從前向后依次執(zhí)行,分支結(jié)構(gòu)程序雖然允許在執(zhí)行了某個(gè)判斷后跳過(guò)某些語(yǔ)句執(zhí)行后面的語(yǔ)句,但也只能按語(yǔ)句的前后次序執(zhí)行。有時(shí),需要在程序中重復(fù)執(zhí)行某個(gè)語(yǔ)句或語(yǔ)句塊,就需要循環(huán)結(jié)構(gòu)。,生活中的例子,擊鼓傳花:大家坐成一個(gè)圈,鼓聲響起的時(shí)候?qū)⒒ㄊ樞蚪坏较乱粋€(gè)人的手里,依次向下傳遞,當(dāng)鼓聲突然中斷時(shí)停止傳花,花束落在誰(shuí)的手里便成為輸家 4100米接力賽跑:第1個(gè)人跑完100米后將接力棒傳給第2個(gè)人,第2個(gè)人再跑100米,然后是第3個(gè)人,直到第4個(gè)人跑完最后一個(gè)100米,計(jì)算sum=1+2+3+100,

2、1,計(jì)算sum=1+2+3+100,1,#include void main( ) int i=1, sum=0 ; while ( i = 100 ) sum = sum + i ; i+ ; printf ( “Sum = %d n”, sum ) ; ,循環(huán)體,循環(huán)控制條件,循環(huán)控制變量,循環(huán)的初始化,計(jì)算sum=2+4+6+100,2,#include void main( ) int i=0, sum=0 ; while ( i = 100 ) sum = sum + i ; i+=2 ; printf ( “Sum = %d n”, sum ) ; ,循環(huán)次數(shù)取決于循環(huán)控制變量,5

3、.2 while語(yǔ)句和do-while語(yǔ)句,格式: while( 表達(dá)式 ) 語(yǔ)句 do 語(yǔ)句 while( 表達(dá)式 ) ;,說(shuō)明: 括號(hào)中的“表達(dá)式”是循環(huán)控制條件,但不限于關(guān)系表達(dá)式和邏輯表達(dá)式 “語(yǔ)句”是單一語(yǔ)句,但可以是復(fù)合語(yǔ)句 如果while語(yǔ)句的括號(hào)后面只有“;”,則循環(huán)體為空。如果do-while語(yǔ)句的括號(hào)后面(分號(hào)前面)還有其他符號(hào),則出現(xiàn)語(yǔ)法錯(cuò)誤,while語(yǔ)句的執(zhí)行過(guò)程,while語(yǔ)句的執(zhí)行過(guò)程是: 計(jì)算“表達(dá)式”的值; 若“表達(dá)式”的值不時(shí)0,為“真”,繼續(xù)執(zhí)行;否則,結(jié)束循環(huán),轉(zhuǎn)到while語(yǔ)句后面的語(yǔ)句繼續(xù)執(zhí)行程序; 執(zhí)行“語(yǔ)句”部分,即執(zhí)行循環(huán)體; 返回繼續(xù)執(zhí)行。,

4、do-while語(yǔ)句的執(zhí)行過(guò)程,循環(huán)語(yǔ)句的特點(diǎn),while循環(huán)是“先判斷后循環(huán)”,如果開始時(shí)循環(huán)條件不滿足,循環(huán)體就一次也不執(zhí)行 do-while循環(huán)是“先循環(huán)后判斷”,即使第一次判斷的結(jié)果為“假”,循環(huán)體也已經(jīng)執(zhí)行了一次 但不論哪種循環(huán),循環(huán)體中必須包含能夠使循環(huán)條件變?yōu)椤凹佟钡倪\(yùn)算,循環(huán)的變化形式計(jì)算sum=1+2+3+100,3,#include void main( ) int i=1, sum=0 ; while ( i= 100 ) sum = sum + i+ ; printf ( “Sum = %d n”, sum ) ; ,#include void main( ) int

5、i=1, sum=0 ; do sum = sum + i ; i+; while ( i= 100 ); printf ( “Sum = %d n”, sum ) ; ,循環(huán)的嵌套,如果在一個(gè)循環(huán)的循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)則稱為循環(huán)的嵌套,其中被嵌套的循環(huán)稱為內(nèi)循環(huán),而嵌套了內(nèi)循環(huán)的是外循環(huán) 內(nèi)循環(huán)還可以嵌套循環(huán),形成多級(jí)(層)嵌套,順序打印110的階乘,即1!、2!、10!,4,本題的關(guān)鍵是求階乘 數(shù)學(xué)上,n!=123(n-1)n,外循環(huán),內(nèi)循環(huán),#include void main( ) int i=1, j ; float f ; while( i = 10 ) j = 1; f

6、= 1; while( j = i ) f = f * j; j + ; printf( “ %2d! = %.0f n”, i, f ); i + ; ,對(duì)比程序: #include void main( ) int i=1; float f = 1; while( i = 10 ) f = f * i; printf( %2d! = %.0f n, i, f ); i + ; ,循環(huán)的嵌套不僅可以發(fā)生在相同語(yǔ)句之間,如while嵌套while、do-while嵌套do-while,while語(yǔ)句和do-while語(yǔ)句也可以互相嵌套 (1)while(.)(2)while() while()

7、do while(); (3)do(4)do while()do while() ; while() ;,錯(cuò)誤的嵌 套形式,循環(huán)必須是完整的,不允許內(nèi)外循環(huán)交叉嵌套 f = 1; while( i 10) i=1; do f = f * i; i +; while( i10 );,混亂的控 制條件,內(nèi)外循環(huán)的循環(huán)控制條件通常是分開的,相對(duì)獨(dú)立的 i=1; s=0; while ( i 3 ) s = s + f; i = 1; f=1; while( i5) i +=2; f = f * i; i+ ;,應(yīng)用舉例,方法一:將輸入的5位數(shù)看作是5個(gè)獨(dú)立的數(shù)字字符,依次讀取每一個(gè)數(shù)字字符,將其轉(zhuǎn)化

8、為對(duì)應(yīng)的數(shù)字后再求和 將數(shù)組字符ch轉(zhuǎn)化為數(shù)字的方法為ch-0,輸入一個(gè)5位數(shù),計(jì)算并輸出各位的和,5,#include void main( ) char ch ; int i=0, sum = 0; printf(“Enter a number with 5 digits: ”); while( i 5 ) ch = getchar( ); sum += ch - 0 ; /* 將數(shù)字字符轉(zhuǎn)化為對(duì)應(yīng)的數(shù)字 */ i+ ; printf( “Sum of these 5 digits is %dn”, sum ) ; ,幾種常見(jiàn)運(yùn)算: 如果ch為數(shù)字字符,則表達(dá)式ch - 0的值為對(duì)應(yīng)的數(shù)字

9、 如果ch為大寫字母,則表達(dá)式 ch-A+z 為對(duì)應(yīng)的小寫字母 如果ch為小寫字母,則表達(dá)式 ch-a+A 為對(duì)應(yīng)的大寫字母,方法二:將輸入的5位數(shù)看作一個(gè)整數(shù),先讀取該整數(shù),再分離出各位數(shù)字 對(duì)于整數(shù)x,其個(gè)位數(shù)為 x%10 要求整數(shù)x的十位數(shù),可以先令x=x/10,再求x的個(gè)位數(shù),輸入一個(gè)5位數(shù),計(jì)算并輸出各位的和,5,#include void main( ) int x, x1, r, sum = 0; printf(Enter a number: ); scanf( %d, ,任意輸入一行字符,統(tǒng)計(jì)字母a和A的個(gè)數(shù),6,#include void main( ) char ch; i

10、nt count=0; printf( Enter characters: ); do ch = getchar( ); if( ch=A | ch=a ) count+; while( ch != n ); printf( Counter of a or A: %dn , count ); ,利用公式 求 的近似值,7,分析:等式右邊的第n項(xiàng)為 因此可將公式變形為 如何計(jì)算(-1)n+1 呢?可能首先想到的是用指數(shù)運(yùn)算,其實(shí)大可不必,可以取f的初值為-1,那么第1項(xiàng)為f=-f,第2項(xiàng)也是f=-f,,#include void main( ) int f = -1, n =1 ; float

11、t, pi = 0 ;/* t為最后一項(xiàng)的值 */ do f = -f ;/* 第n項(xiàng)的符號(hào) */ t = 1.0 / ( 2*n -1 ) ;/* 用1.0是為了避免整除 */ pi += f * t ; n+ ; while( t 1e-5 ); pi = 4 * pi ; printf( PI = %.4f n, pi ) ; ,5.3 for語(yǔ)句,for語(yǔ)句是最常用的循環(huán)控制語(yǔ)句。for語(yǔ)句的功能強(qiáng)大,使用靈活,變化多樣,for語(yǔ)句的用法,for( 表達(dá)式1 ; 表達(dá)式2 ; 表達(dá)式3 ) 語(yǔ)句 “表達(dá)式1”用于循環(huán)的初始化 “表達(dá)式2”是for語(yǔ)句的循環(huán)控制條件,可以是任何形式的表達(dá)

12、式 “表達(dá)式3”用于修改循環(huán)控制變量的值,目的是使“表達(dá)式2”的值變?yōu)?,以結(jié)束循環(huán) “語(yǔ)句”部分是for語(yǔ)句的循環(huán)體,可以是單一語(yǔ)句,也可以是復(fù)合語(yǔ)句,for語(yǔ)句的執(zhí)行過(guò)程,使用for語(yǔ)句編程計(jì)算sum=1+2+3+100,8,#include void main( ) int i, sum=0 ; for( i =1 ; i=100 ; i+) sum += i ; printf( Sum = %d n, sum ); ,任意輸入10個(gè)數(shù),求平均值,9,#include void main( ) int i ; float x, sum=0 ; printf( Enter 10 numbe

13、rs one by one: n ); for( i =1 ; i=10 ; i+) scanf( %f, ,循環(huán)的嵌套,for語(yǔ)句可以嵌套for語(yǔ)句構(gòu)成循環(huán)的嵌套,也可以與while語(yǔ)句、do-while語(yǔ)句互相嵌套,順序打印110的階乘,即1!、2!、10!,10,#include void main( ) int i, j ; float f ; for( i=1; i = 10 ; i+ ) f = 1; for( j=1; j = i ; j+ ) f = f * j; printf( %2d! = %.0f n, i, f ); ,#include void main( ) int

14、 i=1, j ; float f ; while( i = 10 ) j = 1; f = 1; while( j = i ) f = f * j; j + ; printf( “ %2d! = %.0f n”, i, f ); i + ; ,打印幾何圖形,11,對(duì)于這類問(wèn)題,每行中星號(hào)的個(gè)數(shù)、總行數(shù)等都應(yīng)該用循環(huán)結(jié)構(gòu)進(jìn)行控制,而不是直接輸出若干行字符串,#include void main( ) int i, j ; for(i=1; i = 4; i+ ) for( j = 0; ji ; j+ ) putchar( ); for( j = 1; j=6 ; j+ ) putchar(*

15、); putchar(n); ,甲、乙兩個(gè)會(huì)計(jì)進(jìn)行點(diǎn)鈔票比賽,甲的速度為5張/秒,乙為8張/秒。乙在甲已經(jīng)點(diǎn)了100張鈔票后才開始,問(wèn):要多長(zhǎng)時(shí)間乙就可以超過(guò)甲?,12,經(jīng)過(guò) t 秒,甲點(diǎn)過(guò)的鈔票數(shù)有 x=100+5t 張,乙的為 y=8t 張 問(wèn)題就是求 yx 時(shí)的 t 值,#include void main( ) int t ; int x=100, y=0 ; for( t=0 ; x y ; t+ ) x = 100+5*t ; y = 8 * t; printf( Time is %d secondsn, t); ,for語(yǔ)句的變化形式,可以省略for語(yǔ)句的“表達(dá)式1”或“表達(dá)式3

16、”,也可以都省略(相當(dāng)于while語(yǔ)句),#include void main( ) char ch ; for( ; (ch=getchar( ) ) !=n ; ) putchar( ch ) ; ,將用鍵盤輸入的若干字符順序輸出到屏幕上,13,如果省略“表達(dá)式2”,則循環(huán)控制條件總為“真”,下面的語(yǔ)句是“合法”的,但構(gòu)成了“死循環(huán)”: for( i=1; ; i+) sum += i ;,下面的程序在運(yùn)行時(shí)會(huì)因?yàn)椤俺粤恪倍鲥e(cuò): #include void main( ) char i ; int sum=0 ; for( i=1; ; i+)sum += 1000 / i ; pri

17、ntf( sum=%d n, sum); ,5.4 循環(huán)的控制,復(fù)雜的循環(huán)控制條件 對(duì)循環(huán)的控制問(wèn)題,不僅僅是防止“死循環(huán)”,還包括選擇恰當(dāng)?shù)臅r(shí)機(jī),正確地結(jié)束循環(huán)有的時(shí)候,循環(huán)控制條件是復(fù)雜的,還可能是多種條件的綜合,假設(shè)每個(gè)班最多有30個(gè)人,依次輸入每個(gè)人的成績(jī),如果輸入的不是0100之間的數(shù),或者已經(jīng)輸入了30個(gè)數(shù),則結(jié)束輸入,計(jì)算平均成績(jī),14,#include void main( ) int i = 0, flag=1 ; float score, ave = 0 ; printf( Enter scores one by one:n ); while ( i 100 ) flag

18、= 0; else ave += score; i+ ; if( i 0 ) ave = ave / i; printf(Average: %.2fn, ave); ,【例】 輸入兩個(gè)正整數(shù) m 和 n,求其最大公約數(shù)和最小公倍數(shù)。,分析: 1. 用輾轉(zhuǎn)相除法求最大公約數(shù)。 m 對(duì) n 求余數(shù)為 a,若a0,則 m n,n a,繼續(xù)求余;否則 n 為最大公約數(shù)。 例如,設(shè) m=12, n=21,次數(shù)被除數(shù) 除數(shù) 余數(shù),1122112,2,21,12,9,3,12,9,3,4,9,3,0,3,注意 保留m、n的原始值,以便求最小公倍數(shù),#include main ( ) int m, n, m1

19、, n1, a; printf (輸入兩個(gè)正整數(shù):); scanf (%d, %d, ,【例】 輸入兩個(gè)正整數(shù) m 和 n,求其最大公約數(shù)和最小公倍數(shù)。,【例5.3 】用Newton迭代法求下面方程在1.5附近的近似根。 2x3 - 4x2 + 3x - 6 = 0,1.5 附近意為取初值 x0 = 1.5,2. 把 xn 存于變量 x 中,x存于 y 中,則容易求得 y: y = - f(x) / f (x) f(x) 應(yīng)自己求,計(jì)算機(jī)不會(huì)求導(dǎo),xn+1 = xn +x 即等于 x + y 此后 x 值已無(wú)用,可將 xn+1 的值存于 x 中。語(yǔ)句 x = x + y,xn+1,xn,x,3

20、. y是相鄰兩次迭代的差,可用 |y| 作迭代終止條件。,#include #include main ( ) float x, y, y1, eps ; printf (輸入 : ) ; scanf (%f, ,【例】 打印九九乘法口訣。,#include main ( ) int m, n; m = 1; while ( m =9 ) n = 1; while ( n = m ) printf (%1d%1d=%-4d, m, n, m*n ); n+; printf (n); m+; ,?,#include main ( ) int m, n; for ( m =1; m =9 ; m+

21、 ) for ( n = 1; n = m; n+ ) printf (%1d%1d=%-4d, m, n, m*n ); printf (n); m+; ,一. break 語(yǔ)句 用 break 語(yǔ)句可以結(jié)束 switch 結(jié)構(gòu)和三種循環(huán)。,【例5.6】 判斷整數(shù) m 是否為素?cái)?shù)。,因此,判斷 m 是否為素?cái)?shù)的算法是: 1、依次用 2 k 之間的數(shù)整除 m,如果找到某個(gè)整數(shù) r 能整除 m,則 m 必不是素?cái)?shù); 2、如果找不到 r,則可以斷定 m 為素?cái)?shù)。,分析: 素?cái)?shù)是能被其他整數(shù)整除的數(shù),即如果 m 是素?cái)?shù),則必然存在 r、t(1 r、t m)使得 m = r t 成立,#include

22、 #include main ( ) int m, i, k; printf (輸入一個(gè)整數(shù):); scanf (%d, ,結(jié)束循環(huán),即轉(zhuǎn)到 for 循環(huán)的下一個(gè)語(yǔ)句 break 總是與 if 的一起使用,二. continue 語(yǔ)句 用 continue 語(yǔ)句可以結(jié)束本次循環(huán),即忽略循環(huán)體中剩余的語(yǔ)句。,【例】 打印 100200 之間不能被 3 整除的整數(shù)。,#include main ( ) int n; for ( n = 100; n = 200; n+) if ( n%3 = 0) continue; printf (%d , n); ,能整除,不打印,main() int i,j

23、,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%d”,x); ,第一次循環(huán) 第二次循環(huán) x=1 j=0 x=1 x=5 j=1 j=2 x=2 j=1 j=3 j=3 x=6 x=7 x=3 x=4 x=8,X=8,main(0 int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+;break; case 3: a+;b+; printf(

24、“a=%d,b=%d”,a,b); ,a=2,b=1,【例】 按照下面的遞推公式,求 Fibonacci 數(shù)列1,1,2,3,5,8的前40項(xiàng): F1 = 1n 1 F2 = 1n 2 Fn = Fn-1 + Fn-2n 3,分析,(4) 此數(shù)列增長(zhǎng)很快,宜用長(zhǎng)整型。每行輸出4個(gè)數(shù),即每輸出4個(gè)數(shù)后輸出一個(gè)換行符。,(1) F1、F2 直接賦值并輸出;,(2) 進(jìn)行 19 次循環(huán),每次計(jì)算并輸出兩項(xiàng);,(3) F3 = F1+ F2,此后 F1已無(wú)用,F(xiàn)3可存于 F1,即用語(yǔ)句F1 = F1+ F2,F4 = F2+ F3,F(xiàn)3已在 F1中,此后F2已無(wú)用,F(xiàn)4可存于F2,即用語(yǔ)句 F2 =

25、F2+F1,依此類推算出f5、f6直至f39、f40,#include main ( ) int i; long int f1, f2; f1 = 1; f2 = 1; printf (%16ld%16ld, f1, f2 ); for ( i = 2; i = 20; i+) f1 = f1 + f2; f2 = f2 + f1; printf (%16ld%16ld, f1, f2 ); if ( i % 2 = 0 ) printf (n); ,【例】 判斷m是否為素?cái)?shù),【例】 求100200之間的全部素?cái)?shù)。,#include #include main ( ) int m, i, k;

26、 printf (輸入一個(gè)整數(shù):); scanf (%d, else printf (%d不是素?cái)?shù)n, m); ,int n=0;,for ( m = 101; m 200; m = m + 2 ) if ( n % 10 = 0 ) printf (n);,if ( i k ) printf (%6d, m ); n+; ,#include #include main ( ) int m, i, k, n = 0; for ( m = 101; m k ) printf (%6d, m); n+; ,【例】張丘建的“百雞問(wèn)題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問(wèn)雞翁、母

27、、雛各幾何 ?,#include main ( ) int cocks = 0, hens, chicks; while (cocks = 19 ) hens = 0; while ( hens = 33 ) chicks = 100 - cocks - hens; if ( 5 * cocks + 3 * hens + chicks / 3 = 100 ) printf ( %d %d %dn, cocks, hens, chicks ); hens = hens + 1; cocks = cocks +1; ,順序打印1001000之間所有9的倍數(shù),如果一個(gè)數(shù)同時(shí)也是7的倍數(shù)則停止打印,1

28、6,#include void main( ) int i ; for( i=100; i1000; i+) if( i % 9 !=0 ) continue ; printf( %5d, i ) ; if( i % 7 =0 ) break; ,goto語(yǔ)句,goto語(yǔ)句是從早期程序設(shè)計(jì)語(yǔ)言遺留下來(lái)的一個(gè)語(yǔ)句,稱為無(wú)條件跳轉(zhuǎn)語(yǔ)句,已被淘汰 goto語(yǔ)句的使用格式是: goto 語(yǔ)句標(biāo)號(hào) ; “語(yǔ)句標(biāo)號(hào)”是一個(gè)特殊的標(biāo)識(shí)符,由字母、數(shù)字或下劃線組成(第一個(gè)字符不能是數(shù)字),后面跟冒號(hào)“:”,放在語(yǔ)句行的最前頭,#include void main( ) int i =100; while( i

29、1000 ) if( i % 9 !=0 ) goto Next ; printf( “%5d”, i ) ; Next:i +; ,打印所有的1001000之間的9的倍數(shù),18,谷角猜想:對(duì)于任意一個(gè)自然數(shù) n,若n為偶數(shù),則將其除以2;若n為奇數(shù),則將其乘以3,然后再加1。如此反復(fù),經(jīng)過(guò)有限次運(yùn)算后,總可以得到自然數(shù)1。試編程驗(yàn)證之。,21,#include void main( ) int n ; printf( Enter a number: ) ; scanf( %d, ,5.6 程序調(diào)試,對(duì)于程序設(shè)計(jì)而言,即使優(yōu)秀的程序員也不能保證不會(huì)犯錯(cuò)誤 一個(gè)優(yōu)秀的程序,不在于使用了先進(jìn)的算法

30、,而在于僅僅包含少量的錯(cuò)誤 程序中的錯(cuò)誤是在所難免的,關(guān)鍵是發(fā)現(xiàn)并糾正錯(cuò)誤 初學(xué)程序設(shè)計(jì)的人有必要從一開始就養(yǎng)成良好的習(xí)慣,培養(yǎng)嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng),并逐步掌握一些編程技巧,程序調(diào)試的一般策略,程序中的錯(cuò)誤一般可分為 語(yǔ)法錯(cuò)誤比較容易發(fā)現(xiàn),通常,有語(yǔ)法錯(cuò)誤的程序不能通過(guò)編譯和連接,也就不能生成可執(zhí)行的程序 邏輯錯(cuò)誤又叫語(yǔ)義錯(cuò)誤,也就是不能正確地表達(dá)所需要的功能,是較常見(jiàn)的錯(cuò)誤之一。其外部表現(xiàn)為,程序可以運(yùn)行,但有時(shí)出錯(cuò),有時(shí)又不出錯(cuò)。邏輯錯(cuò)誤通常比較難于被發(fā)現(xiàn),查錯(cuò)和糾錯(cuò)對(duì)任何程序員來(lái)說(shuō)都是挑戰(zhàn) 設(shè)計(jì)錯(cuò)誤比較少見(jiàn),通常是由于對(duì)問(wèn)題的分析不徹底造成的,糾正這類錯(cuò)誤需要重新設(shè)計(jì)程序,調(diào)試程序的一般步驟為

31、: 靜態(tài)檢查,也就是人工檢查,是在完成程序設(shè)計(jì)后,在上機(jī)調(diào)試前,仔細(xì)地對(duì)程序代碼進(jìn)行全面的檢查通過(guò)靜態(tài)檢查,不僅可以發(fā)現(xiàn)程序中的語(yǔ)法錯(cuò)誤,也可以發(fā)現(xiàn)邏輯錯(cuò)誤,甚至發(fā)現(xiàn)設(shè)計(jì)上的缺陷為便于查錯(cuò),應(yīng)力求做到編碼的標(biāo)準(zhǔn)化、文檔化,增強(qiáng)編碼的可讀性、可理解性、可維護(hù)性要做到:采用結(jié)構(gòu)化方法,劃分功能模塊和程序段,采用必要的縮進(jìn)和對(duì)齊,簡(jiǎn)化表達(dá)式,每行只有一個(gè)語(yǔ)句,盡量使用注釋,使用有意義的標(biāo)識(shí)符, 動(dòng)態(tài)檢查,是指通過(guò)上機(jī)調(diào)試發(fā)現(xiàn)錯(cuò)誤的過(guò)程。完成編碼后,可以借助編譯程序檢查隱藏的語(yǔ)法錯(cuò)誤,如錯(cuò)誤標(biāo)識(shí)符、非法的表達(dá)式、錯(cuò)誤的函數(shù)調(diào)用等。利用連接程序,可以檢查連接錯(cuò)誤,如調(diào)用了未定義的函數(shù)、缺乏必要的函數(shù)定義等。通過(guò)試運(yùn)行程序,可以發(fā)現(xiàn)一些邏輯錯(cuò)誤,如錯(cuò)誤的計(jì)算、有問(wèn)題的輸入和輸出等,程序中的錯(cuò)誤有兩種,即Error和WarningError是必須要糾正的,任何Error都會(huì)導(dǎo)致編譯或連接失敗Warning一般不影響生成可執(zhí)行的“程序”,但程序有缺陷合格的程序員不僅要糾正致命Error,也要糾正Warn

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論