




已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1,第 一 章,C語言概述,2,教學(xué)目標(biāo),1.了解C語言的發(fā)展歷史和特點 2.熟悉C語言程序的基本結(jié)構(gòu) 3.掌握C語言常見算法及其用程序流程圖和N/S圖表示算法 4.熟悉C語言字符集、標(biāo)識符號與關(guān)鍵字的相關(guān)知識 5.掌握在Turbo C環(huán)境下調(diào)試C程序的上機步驟,3,教學(xué)要點,C語言程序的基本結(jié)構(gòu) 算法的描述,4,C語言的發(fā)展過程,C語言是國際上流行的、很有發(fā)展前途的計算機高級語言。它既可以用來編寫系統(tǒng)軟件,也可以用來編寫應(yīng)用程序。 以前操作系統(tǒng)等系統(tǒng)軟件主要采用匯編語言編寫。匯編語言依賴于計算機硬件,程序的可讀性、可移植性都比較差。為了提高可讀性和可移植性,人們希望采用高級語言編寫這些軟件,但是一般的高級語言難以實現(xiàn)匯編語言的某些操作,特別是針對硬件的一些操作(如:內(nèi)存地址的讀寫-直接硬件、二進制位的操作)。人們設(shè)法尋找一種既具有一般高級語言特性,又具有低級語言特性的語言,C語言就在這種情況下應(yīng)運而生。,5,C語言的發(fā)展過程,20世紀(jì)70年代初 問世 1978 美國電話電報公司(A&T)貝爾實驗室 發(fā)表 C語言 1983 美國國家標(biāo)準(zhǔn)協(xié)會 制定 C語言標(biāo)準(zhǔn)(ANSI C) 1987 美國國家標(biāo)準(zhǔn)協(xié)會 公布 新C語言標(biāo)準(zhǔn)(87 ANSI C) 1990 ISO 接收 87 ANSI C 為 ISO C 注:現(xiàn)在使用的各種C語言編譯系統(tǒng)(Turbo C、Visual C、Borland C等)雖然基本部分是相同的,但也有些不同,6,C語言的發(fā)展過程,ALGOL60,CPL,BCPL,B,C,標(biāo)準(zhǔn)C,ANSI C,ISO C,7,C語言的發(fā)展過程,匯編語言 機器語言,低級語言:具有面向硬件系統(tǒng)便于直接訪問硬件的特點功能,但沒有數(shù)據(jù)類型,不易閱讀、記憶、推廣。,C 語言,吸取了高級語言和低級語言優(yōu)點,兼而有之。, FORTRAN語言 pascal語言 BASIC 語言,高級語言:具有豐富的數(shù)據(jù)類型和運算符,便于描述數(shù)據(jù)結(jié)構(gòu),既具有強有力的表達力,可加快開發(fā)速度,提高工作效率,面向用戶、便于記憶、書寫和閱讀等。,8,C語言的特點,1、語言簡潔、緊湊、結(jié)構(gòu)清晰、使用方便、靈活; 2、C語言的運算符非常豐富、功能更強大 ; 3、提供了豐富的數(shù)據(jù)類型; 4、具有結(jié)構(gòu)化的控制語句,用函數(shù)作為程序的模塊單 位,便于實現(xiàn)程序的模塊化; 5、C語言對語法限制不嚴(yán)格,程序設(shè)計自由度大; 6、C語言允許直接訪問物理地址,能進行位(bit)操作; 7、生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行速度快; 8、C語言編寫的程序具有良好的可移植性;,9,C語言程序的基本結(jié)構(gòu) 例子 (1),main( ) printf(“Hello World!n”); 說明: 本程序功能:本程序的功能是輸出一行信息:Hello World! 1、main表示“主函數(shù)”。每個C語言程序都必須有一個main函數(shù),它是每一個C語言程序的執(zhí)行起始點(入口點)。main()表示“主函數(shù)”main的函數(shù)頭。 2、用 括起來的是“主函數(shù)”main的函數(shù)體。main函數(shù)中的所有操作(或:語句)都在這一對 之間。也就是說main函數(shù)的所有操作都在main函數(shù)體中。 3、“主函數(shù)”main中只有一條語句,它是C語言的庫函數(shù),功能是用于程序的輸出(顯示在屏幕上),本例用于將一個字符串“Hello World!n”的內(nèi)容輸出。即在屏幕上顯示:Hello World! (回車/換行) 4、注意:每條語句用“;”號結(jié)束語句。,10,C語言程序的基本結(jié)構(gòu) 例子 (2),main( ) /* 計算兩數(shù)之和 */ int a,b,sum; /* 這是定義變量,聲明部分 */ a=100;b=99; /* 以下3行為C執(zhí)行語句部分 */ sum=a+b; printf(“sum=%dn”,sum); 說明: 1、同樣此程序也必須包含一個main函數(shù)作為程序執(zhí)行的起點。之間為main函數(shù)的函數(shù)體, main函數(shù)所有操作均在main函數(shù)體中。 2、/* */括起來的部分是一段注釋,注釋只是為了改善程序的可讀性,在編譯、運行時不起 作用(事實上編譯時會跳過注釋,目標(biāo)代碼中不會包含注釋)。注釋可以放在程序任何位 置,并允許占用多行,只是需要注意“/*”、“*/”匹配,一般不要嵌套注釋。 3、int a,b,sum;是變量聲明。聲明了三個具有整數(shù)類型的變量a,b,sum。C語言的變量必須先聲明再使用。 4、a=100;b=99;是兩條賦值語句。將整數(shù)100賦給整型變量a,將整數(shù)99賦給整型變量b。 a,b兩個變量分別為123,456。注意這是兩條賦值語句,每條語句均用“;”結(jié)束。 5、sum=a+b;是將a,b兩變量內(nèi)容相加,然后將結(jié)果賦值給整型變量sum。 6、printf(“sum=%dn”,sum);是調(diào)用庫函數(shù)輸出sum的結(jié)果。%d為格式控制表示sum的值以 十進制整數(shù)形式輸出。程序運行后,輸出(顯示):sum=199_ (回車/換行),11,C語言程序的基本結(jié)構(gòu)例子(3),main( ) /* 主函數(shù) */ int a,b,c; /*聲明部分定義變量*/ scanf(“%d,%d”, /* main函數(shù)體結(jié)束 */,int max(int x,int y) /* 計算兩數(shù)中較大的數(shù) */ int z; /* 聲明部分,定義變量 */ if(xy)z=x; else z=y; return (z); /* 將z值返回,通過max帶回調(diào)用處 */ /* max函數(shù)體結(jié)束 */,12,C語言程序的基本結(jié)構(gòu)例子(3)介紹,說明: 輸入兩個整數(shù),計算兩者較大的數(shù),并輸出。 1、本程序包括兩個函數(shù)。其中主函數(shù)main仍然是整個程序執(zhí)行的起點。函數(shù)max計算兩數(shù)中較大的數(shù)。 2、主函數(shù)main調(diào)用scanf函數(shù)獲得兩個整數(shù),存入a,b兩個變量,然后調(diào)用函數(shù)max獲得兩個數(shù)字中較大的值,并賦給變量c。最后輸出變量c的值(結(jié)果)。 3、int max(int x,int y)是函數(shù)max的函數(shù)頭,函數(shù)max的函數(shù)頭表明此函數(shù)獲得兩個整數(shù),返回一個整數(shù)。 4、函數(shù)max同樣也用 將函數(shù)體括起來。max的函數(shù)體是函數(shù)max的具體實現(xiàn)。從參數(shù)表獲得數(shù)據(jù),處理后得到結(jié)果z,然后將z返回調(diào)用函數(shù)main。 5、本例還表明函數(shù)除了調(diào)用庫函數(shù)外,還可以調(diào)用用戶自己定義,編制的函數(shù)。,13,C語言程序的基本結(jié)構(gòu)總結(jié),1、C程序由函數(shù)構(gòu)成(C是函數(shù)式的語言,函數(shù)是C程序的基本單位)(以例1.3說明) 一個C源程序至少包含一個main函數(shù),也可以包含一個main函數(shù)和若干個其它函數(shù)。函數(shù)是C程序的基本單位。 被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫函數(shù),也可以是用戶根據(jù)需要自己編寫設(shè)計的函數(shù)。C是函數(shù)式的語言,程序的全部工作都是由各個函數(shù)完成。編寫C程序就是編寫一個個函數(shù)。 C函數(shù)庫非常豐富,ANSI C提供100多個庫函數(shù),Turbo C提供300多個庫函數(shù)。,14,C語言程序的基本結(jié)構(gòu)總結(jié),2、一個函數(shù)由函數(shù)首部和函數(shù)體兩部分組成 (以例1.3的max函數(shù)說明) 函數(shù)首部:一個函數(shù)的第一行。 返回值類型 函數(shù)名(函數(shù)參數(shù)類型1 函數(shù)參數(shù)名1,函數(shù)參數(shù)類型n,函數(shù)參數(shù)名n) 注意:函數(shù)可以沒有參數(shù),但是后面的一對()不能省略,這是格式的規(guī)定。 函數(shù)體:函數(shù)首部下用一對括起來的部分。如果函數(shù)體內(nèi)有多個 ,最外層是函數(shù)體的范圍。函數(shù)體一般包括聲明部分、執(zhí)行部分兩部分。 聲明部分:在這部分定義本函數(shù)所使用的變量; 執(zhí)行部分:由若干條語句組成命令序列(可以在其中調(diào)用其它函數(shù)); 。,15,C語言程序的基本結(jié)構(gòu)總結(jié),3、C程序書寫格式自由 一行可以寫幾個語句,一個語句也可以寫在多行上。 C程序沒有行號,也沒有FORTRAN,COBOL那樣嚴(yán)格規(guī)定書寫格式(語句必須從某一列開始)。 4、每條語句的最后必須有一個分號“;”表示語句的結(jié)束。 函數(shù)首部后面不跟分號,16,C語言程序的基本結(jié)構(gòu)總結(jié),5、可以使用/* */對C程序中的任何部分作注釋 注釋可以提高程序可讀性,使用注釋是編程人員的良好習(xí)慣。 編寫好的程序往往需要修改、完善,事實上沒有一個應(yīng)用系統(tǒng)是不需要修改、完善的。很多人會發(fā)現(xiàn)自己編寫的程序在經(jīng)歷了一些時間以后,由于缺乏必要的文檔、必要的注釋,最后連自己都很難再讀懂。需要花費大量時間重新思考、理解原來的程序。這浪費了大量的時間。如果一開始編程就對程序進行注釋,剛開始麻煩一些,但日后可以節(jié)省大量的時間。 一個實際的系統(tǒng)往往是多人合作開發(fā),程序文檔、注釋是其中重要的交流工具。,17,C語言程序的基本結(jié)構(gòu)總結(jié),6、main函數(shù)(主函數(shù))是每個程序執(zhí)行的起始點 (以例1.3說明) 一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在程序中的位置??梢詫ain函數(shù)放在整個程序的最前面,也可以放在整個程序的最后,或者放在其它函數(shù)之間。,18,一個程序應(yīng)包括兩個方面的內(nèi)容:,對數(shù)據(jù)的描述:數(shù)據(jù)結(jié)構(gòu)(data structure) 對操作的描述:算法(algorithm),著名計算機科學(xué)家沃思提出一個公式: 數(shù)據(jù)結(jié)構(gòu) + 算法 = 程序,數(shù)據(jù)結(jié)構(gòu)算法程序設(shè)計方法語言工具,完整的程序設(shè)計應(yīng)該是:,算法及其描述,19,算法及其描述,算法:為解決一個問題而采取的方法和步驟。 計算機算法分為兩大類別: 數(shù)值運算算法(解一元二次方程的算法 ) 非數(shù)值運算算法(圖書檢索、信息查詢) 算法的特征: 有窮性:包含有限的操作步驟 確定性:算法中的每一個步驟都應(yīng)當(dāng)是確定的 有零個或多個輸入:輸入是指在執(zhí)行算法時需要從外界取得必要的信息 有一個或多個輸出:算法的目的是為了求解,“解” 就是輸出 可行性:算法中的每一個步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果 。,20,例1.4: 求12345,步驟1:先求12,得到結(jié)果2 步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6 步驟3:將6再乘以4,得24 步驟4:將24再乘以5,得120,太繁瑣,如果要求121000,則要寫999個步驟,算法及其描述簡單算法舉例,21,S1:使t=1 S2:使i=2 S3:使ti,乘積仍放在變量t中,可表示為: ti t S4:使i的值加1,即i+1 i。 S5:如果i不大于5,返回重新執(zhí)行步驟S3以及其后的步驟S4和S5;否則,算法結(jié)束。最后得到t的值就是5!的值。,可以設(shè)兩個變量:一個變量代表被乘數(shù),一個變量代表乘數(shù)。不另設(shè)變量存放乘積結(jié)果,而直接將每一步驟的乘積放在被乘數(shù)變量中。設(shè)t為被乘數(shù),i為乘數(shù)。用循環(huán)算法來求結(jié)果, 算法可改寫:,22,S1:1 t S2:3 i S3:ti t S4:i+2 i S5:若i1000,返回S3。否則,結(jié)束。,如果題目改為:求1351000算法只需作很少的改動:,算法簡練,23,用這種方法表示的算法具有通用性、靈活性。S3到S5組成一個循環(huán),在實現(xiàn)算法時 要反復(fù)多次執(zhí)行S3,S4,S5等步驟,直到某一時刻,執(zhí)行S5步驟時經(jīng)過判斷,乘數(shù)i已超過規(guī)定的數(shù)值而不返回S3步驟為止。此時算法結(jié)束,變量t的值就是所求結(jié)果。,算法及其描述簡單算法舉例,24,算法的描述,用自然語言表示算法 含義不嚴(yán)格、有歧異性 用流程圖表示算法,25,算法的描述流程圖,順序結(jié)構(gòu),選擇結(jié)構(gòu),26,算法的描述流程圖,當(dāng)型(While型)循環(huán)結(jié)構(gòu),直到型(Until型)循環(huán),27,三種基本結(jié)構(gòu)的共同特點: (1)只有一個入口; (2)只有一個出口;(請注意:一個菱形判斷框有兩個出口,而一個選擇結(jié)構(gòu)只有一個出口。不要將菱形框的出口和選擇結(jié)構(gòu)的出口混淆。) (3)結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行到; (4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。,28,圖中沒有一條從入口到出口的路徑通過A框。,不正確的流程表示:,流程內(nèi)的死循環(huán),29,小結(jié):,流程圖是表示算法的較好的工具。一個流程圖包括以下幾部分 : (1)表示相應(yīng)操作的框; (2)帶箭頭的流程線; (3)框內(nèi)外必要的文字說明。,30,算法及其描述流程圖舉例,開始,輸入N,i=1,S=S+i,i=i+1,輸出S,結(jié)束,是,求1+2+3+10的流程圖,S=0,i=10,否,31,將求5!的算法用流程圖表示,如果需要將最后結(jié)果打印出來,可在菱形框的下面加一個輸出框。,32,算法的描述N/S圖,1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框內(nèi),在該框內(nèi)還可以包含其它的從屬于它的框,或者說,由一些基本的框組成一個大的框。這種流程圖又稱N-S結(jié)構(gòu)化流程圖 。,33,算法的描述N/S圖,三種基本結(jié)構(gòu),A B,A,當(dāng)P成立,A,直到P成立,順序結(jié)構(gòu),選擇結(jié)構(gòu),While型循環(huán)結(jié)構(gòu),Untile型循環(huán)結(jié)構(gòu),34,用三種N-S流程圖中的基本框,可以組成復(fù)雜的N-S流程圖。圖中的A框或B框,可以是一個簡單的操作,也可以是三個基本結(jié)構(gòu)之一。,A框可以是一個選擇結(jié)構(gòu),B框可以是一個循環(huán)結(jié)構(gòu),35,算法的描述N/S圖(舉例),求1+2+3+10的和,S=0,i=1,S=S+i,i=i+1,當(dāng)i=10,打印S,36,求5!算法用N-S圖表示,也可以改成當(dāng)型循環(huán),37,N-S圖表示算法的優(yōu)點,比文字描述直觀、形象、 易于理解;比傳統(tǒng)流程圖緊湊易畫。尤其是它廢除了流程線,整個算法結(jié)構(gòu)是由各個基本結(jié)構(gòu)按順序組成的,N-S流程圖中的上下順序就是執(zhí)行時的順序。用N-S圖表示的算法都是結(jié)構(gòu)化的算法,因為它不可能出現(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行。,38,算法的描述用偽代碼表示算法,概念:偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。 特點:它如同一篇文章一樣 ,自上而下地寫下來。每一行(或幾行)表示一個基本操作。它不用圖形符號,因此書寫方便 、格式緊湊,也比較好懂,也便于向計算機語言算法(即程序)過渡。 用處:適用于設(shè)計過程中需要反復(fù)修改時的流程描述。,39,算法的描述用偽代碼表示算法,“打印x的絕對值”的算法可以用偽代碼表示如下: IF x is positive THEN print x ELSE print x 也可以用漢字偽代碼表示: 若 x為正 打印 x 否則 打印 -x 也可以中英文混用,如: IF x 為正 print x ELSE print -x,求1+2+3+10。 開始 置s的初值為0 置i的初值為1 當(dāng)i=10,執(zhí)行下面操作: 使s=si 使i=i+1 (循環(huán)體到此結(jié)束) 打印s的值 結(jié)束,40,算法的描述用計算機語言表示算法,概念:用計算機實現(xiàn)算法。計算機是無法識別流程圖和偽代碼的。只有用計算機語言編寫的程序才能被計算機執(zhí)行。因此在用流程圖或偽代碼描述出一個算法后,還要將它轉(zhuǎn)換成計算機語言程序。 特點:用計算機語言表示算法必須嚴(yán)格遵循所用的語言的語法規(guī)則,這是和偽代碼不同的。 用處:要完成一件工作,包括設(shè)計算法和實現(xiàn)算法兩個部分。設(shè)計算法的目的是為了實現(xiàn)算法。,41,算法的描述用計算機語言表示算法,求1+2+3+10。 main( ) int i,s; s=0; i=1; while (i=10) s=s+i; i=i+1; printf(”%d”, s); ,42,算法的描述用計算機語言表示算法,求 main( ) int sign=1; float deno=2.0, sum=1.0, term; while(deno=100) sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1; printf(”%f”,sum); ,43,C語言字符集、標(biāo)識符與關(guān)鍵字,C語言字符集 1.字母 az, AZ 52個 2.數(shù)字 09 10個 3.空白符號 包括空格符、制表符和換行符 4.標(biāo)點和特殊字符 如逗號、分號等 標(biāo)識符 變量、符號常量、函數(shù)的名字 命名規(guī)則是:以字母或下劃線開頭,后面可以跟字母、數(shù)字或下劃線。 相關(guān)特性(1)C語言區(qū)分大小寫,因此大寫字母和小寫字母是兩個不同的字符; (2)標(biāo)識符中所能包含的字符個數(shù)不同版本的C語言集成環(huán)境要求也不一樣。 (3)在定義標(biāo)識符時應(yīng)遵守“見名知意”的原則,即用有含意的英文單詞或短語的縮寫作為標(biāo)識符,以增強程序的可讀性。 (4)在C語言中,要求對所用到的標(biāo)識符“先定義后使用” 。,字符是組成語言的最基本的元素。C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度河北省護師類之護師(初級)模擬考試試卷B卷含答案
- 2025江蘇興化市招聘教師67人筆試參考題庫附答案解析及參考答案詳解一套
- 2025江蘇揚州大數(shù)據(jù)集團子公司管理人員招聘1人筆試備考題庫及1套完整答案詳解
- 2025江蘇揚州寶應(yīng)縣“鄉(xiāng)村振興青年人才”招聘67人筆試備考試題及一套參考答案詳解
- 2025河北叢臺區(qū)選聘農(nóng)村黨務(wù)(村務(wù))工作者42人筆試備考題庫及參考答案詳解一套
- 2024年河北邯鄲成安縣事業(yè)單位招聘工作人員255名筆試備考題庫及1套參考答案詳解
- 2025廣東選拔汕頭市市級鄉(xiāng)村振興人才80人筆試備考試題及1套參考答案詳解
- 江西省九師聯(lián)盟2024-2025學(xué)年高二下學(xué)期3月月考物理試題(解析版)
- 九師聯(lián)盟2024-2025學(xué)年高二下學(xué)期6月摸底聯(lián)考化學(xué)試題(含答案)
- 炸雞店的品牌故事與企業(yè)文化
- 摘除聯(lián)鎖保護系統(tǒng)應(yīng)急預(yù)案
- 營造林技能競賽試題及答案
- 如何撰寫高水平的博士論文
- 國開學(xué)前兒童科學(xué)教育活動指導(dǎo)形考1-4試題及答案
- 風(fēng)口風(fēng)閥安裝施工流程及工藝工法
- 2023陜西省教師招聘考試《教育心理學(xué)》重點題型匯編
- 2023年電池車間MES解決方案
- 撤銷強制執(zhí)行申請書
- 希臘文化介紹課件
- 2022-2023學(xué)年貴州省畢節(jié)市威寧縣小升初全真模擬數(shù)學(xué)檢測卷含答案
- BSCI驗廠全套程序文件
評論
0/150
提交評論