譚浩強(qiáng)經(jīng)典教材《C語言程序設(shè)計(jì)》課件_電子版_第1頁
譚浩強(qiáng)經(jīng)典教材《C語言程序設(shè)計(jì)》課件_電子版_第2頁
譚浩強(qiáng)經(jīng)典教材《C語言程序設(shè)計(jì)》課件_電子版_第3頁
譚浩強(qiáng)經(jīng)典教材《C語言程序設(shè)計(jì)》課件_電子版_第4頁
譚浩強(qiáng)經(jīng)典教材《C語言程序設(shè)計(jì)》課件_電子版_第5頁
已閱讀5頁,還剩157頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、譚浩強(qiáng)c程序設(shè)計(jì)課件1 C語言概述1.1 語言的發(fā)展過程語言是在 70 年代初問世的。一九七八年由美國電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了語言。同時(shí)由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為K&R,也有人稱之為K&R標(biāo)準(zhǔn)。但是,在K&R中并沒有定義一個(gè)完整的標(biāo)準(zhǔn)C 語言,后來由美國國家標(biāo)準(zhǔn)協(xié)會(huì)(American National Standards Institute)在此基礎(chǔ)上制定了一個(gè)C 語言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱之為ANSI C。1.2 當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語言早期的C 語言主要

2、是用于UNIX系統(tǒng)。由于語言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識(shí),到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語言之一。1.3 語言版本目前最流行的語言有以下幾種:Microsoft C 或稱 MS CBorland Turbo C 或稱 Turbo CAT&T C這些語言版本不僅實(shí)現(xiàn)了ANSI C標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴(kuò)充,使之更加方便、完美。1.4 語言的特點(diǎn)1C語言簡潔、緊湊,使用方便、靈活。ANSI C一共只有32個(gè)關(guān)鍵字:autobreakcasecharconstcontinuedefaultdo

3、double else enum extern float for goto if int long register return short signed static sizof struct switch typedef union unsigned void volatilewhile9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。Turbo C擴(kuò)充了11個(gè)關(guān)鍵字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal注意:在C語言中,關(guān)鍵字都是小寫的。2運(yùn)算符豐富。共有34種。C把括號(hào)、賦值、逗號(hào)等都作為運(yùn)算符處理。從而

4、使C的運(yùn)算類型極為豐富,可以實(shí)現(xiàn)其他高級(jí)語言難以實(shí)現(xiàn)的運(yùn)算。3數(shù)據(jù)結(jié)構(gòu)類型豐富。4具有結(jié)構(gòu)化的控制語句。5語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。6C語言允許直接訪問物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。因此有人把它稱為中級(jí)語言。7生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。8與匯編語言相比,用C語言寫的程序可移植性好。但是,C語言對(duì)程序員要求也高,程序員用C寫程序會(huì)感到限制少、靈活性大,功能強(qiáng),但較其他高級(jí)語言在學(xué)習(xí)上要困難一些。1.5 面向?qū)ο蟮某绦蛟O(shè)計(jì)語言在C的基礎(chǔ)上,一九八三年又由貝爾實(shí)驗(yàn)室的Bjarne Strou-strup推出了C+。 C+進(jìn)一

5、步擴(kuò)充和完善了語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C+目前流行的最新版本是Borland C+, Symantec C+和Microsoft VisualC+。C+提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個(gè)語言的復(fù)雜性,掌握起來有一定難度。1.6 和C是C+的基礎(chǔ),C+語言和語言在很多方面是兼容的。因此,掌握了語言,再進(jìn)一步學(xué)習(xí)C+就能以一種熟悉的語法來學(xué)習(xí)面向?qū)ο蟮恼Z言,從而達(dá)到事半功倍的目的。1.7 簡單的程序介紹為了說明語言源程序結(jié)構(gòu)的特點(diǎn),先看以下幾個(gè)程序。這

6、幾個(gè)程序由簡到難,表現(xiàn)了語言源程序在組成結(jié)構(gòu)上的特點(diǎn)。雖然有關(guān)內(nèi)容還未介紹,但可從這些例子中了解到組成一個(gè)C源程序的基本部分和書寫格式。【例1.1】main()printf(世界,您好!n);l main是主函數(shù)的函數(shù)名,表示這是一個(gè)主函數(shù)。l 每一個(gè)C源程序都必須有,且只能有一個(gè)主函數(shù)(main函數(shù))。l 函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。l printf函數(shù)是一個(gè)由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù),可在程序中直接調(diào)用?!纠?.2】#include#includemain()double x,s;printf(input number:n);scanf(%lf,&x);

7、s=sin(x);printf(sine of %lf is %lfn,x,s);l include稱為文件包含命令l 擴(kuò)展名為.h的文件稱為頭文件l 定義兩個(gè)實(shí)數(shù)變量,以被后面程序使用l 顯示提示信息l 從鍵盤獲得一個(gè)實(shí)數(shù)xl 求x的正弦,并把它賦給變量sl 顯示程序運(yùn)算結(jié)果l main函數(shù)結(jié)束程序的功能是從鍵盤輸入一個(gè)數(shù)x,求x的正弦值,然后輸出結(jié)果。在main()之前的兩行稱為預(yù)處理命令(詳見后面)。預(yù)處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括號(hào)或引號(hào)內(nèi)指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴(kuò)展名為.h。因此也稱

8、為頭文件或首部文件。語言的頭文件中包括了各個(gè)標(biāo)準(zhǔn)庫函數(shù)的函數(shù)原型。因此,凡是在程序中調(diào)用一個(gè)庫函數(shù)時(shí),都必須包含該函數(shù)原型所在的頭文件。在本例中,使用了三個(gè)庫函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出函數(shù)printf。sin函數(shù)是數(shù)學(xué)函數(shù),其頭文件為math.h文件,因此在程序的主函數(shù)前用include命令包含了math.h。scanf和printf是標(biāo)準(zhǔn)輸入輸出函數(shù),其頭文件為stdio.h,在主函數(shù)前也用include命令包含了stdio.h文件。需要說明的是,C語言規(guī)定對(duì)scanf和printf這兩個(gè)函數(shù)可以省去對(duì)其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#inclu

9、de。同樣,在例1.1中使用了printf函數(shù),也省略了包含命令。在例題中的主函數(shù)體中又分為兩部分,一部分為說明部分,另一部為分執(zhí)行部分。說明是指變量的類型說明。例題1.1中未使用任何變量,因此無說明部分。語言規(guī)定,源程序中所有用到的變量都必須先說明,后使用,否則將會(huì)出錯(cuò)。這一點(diǎn)是編譯型高級(jí)程序設(shè)計(jì)語言的一個(gè)特點(diǎn),與解釋型的BASIC語言是不同的。說明部分是C源程序結(jié)構(gòu)中很重要的組成部分。本例中使用了兩個(gè)變量x,s,用來表示輸入的自變量和sin函數(shù)值。由于sin函數(shù)要求這兩個(gè)量必須是雙精度浮點(diǎn)型,故用類型說明符double來說明這兩個(gè)變量。說明部分后的四行為執(zhí)行部分或稱為執(zhí)行語句部分,用以完成

10、程序的功能。執(zhí)行部分的第一行是輸出語句,調(diào)用printf函數(shù)在顯示器上輸出提示字符串,請(qǐng)操作人員輸入自變量x的值。第二行為輸入語句,調(diào)用scanf函數(shù),接受鍵盤上輸入的數(shù)并存入變量x中。第三行是調(diào)用sin函數(shù)并把函數(shù)值送到變量s中。第四行是用printf 函數(shù)輸出變量s的值,即x的正弦值。程序結(jié)束。運(yùn)行本程序時(shí),首先在顯示器屏幕上給出提示串input number,這是由執(zhí)行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數(shù),如5,按下回車鍵,接著在屏幕上給出計(jì)算結(jié)果。1.8 輸入和輸出函數(shù)在前兩個(gè)例子中用到了輸入和輸出函數(shù)scanf和 printf,在以后要詳細(xì)介紹。這里我們先簡單介紹一下它

11、們的格式,以便下面使用。scanf和 printf這兩個(gè)函數(shù)分別稱為格式輸入函數(shù)和格式輸出函數(shù)。其意義是按指定的格式輸入輸出值。因此,這兩個(gè)函數(shù)在括號(hào)中的參數(shù)表都由以下兩部分組成:“格式控制串”,參數(shù)表 格式控制串是一個(gè)字符串,必須用雙引號(hào)括起來,它表示了輸入輸出量的數(shù)據(jù)類型。各種類型的格式表示法可參閱第三章。在printf函數(shù)中還可以在格式控制串內(nèi)出現(xiàn)非格式控制字符,這時(shí)在顯示屏幕上將原文照印。參數(shù)表中給出了輸入或輸出的量。當(dāng)有多個(gè)量時(shí),用逗號(hào)間隔。例如:printf(sine of %lf is %lfn,x,s);其中%lf為格式字符,表示按雙精度浮點(diǎn)數(shù)處理。它在格式串中兩次現(xiàn),對(duì)應(yīng)了x

12、和s兩個(gè)變量。其余字符為非格式字符則照原樣輸出在屏幕上?!纠?.3】int max(int a,int b); /*函數(shù)說明*/main() /*主函數(shù)*/int x,y,z; /*變量說明*/int max(int a,int b); /*函數(shù)說明*/printf(input two numbers:n);scanf(%d%d,&x,&y); /*輸入x,y值*/z=max(x,y); /*調(diào)用max函數(shù)*/printf(maxmum=%d,z); /*輸出*/int max(int a,int b) /*定義max函數(shù)*/if(ab)return a;else return b; /*把結(jié)

13、果返回主調(diào)函數(shù)*/上面例中程序的功能是由用戶輸入兩個(gè)整數(shù),程序執(zhí)行后輸出其中較大的數(shù)。本程序由兩個(gè)函數(shù)組成,主函數(shù)和max 函數(shù)。函數(shù)之間是并列關(guān)系??蓮闹骱瘮?shù)中調(diào)用其它函數(shù)。max 函數(shù)的功能是比較兩個(gè)數(shù),然后把較大的數(shù)返回給主函數(shù)。max 函數(shù)是一個(gè)用戶自定義函數(shù)。因此在主函數(shù)中要給出說明(程序第三行)??梢姡诔绦虻恼f明部分中,不僅可以有變量說明,還可以有函數(shù)說明。關(guān)于函數(shù)的詳細(xì)內(nèi)容將在以后第五章介紹。在程序的每行后用/*和*/括起來的內(nèi)容為注釋部分,程序不執(zhí)行注釋部分。上例中程序的執(zhí)行過程是,首先在屏幕上顯示提示串,請(qǐng)用戶輸入兩個(gè)數(shù),回車后由scanf函數(shù)語句接收這兩個(gè)數(shù)送入變量x,y

14、中,然后調(diào)用max函數(shù),并把x,y 的值傳送給max函數(shù)的參數(shù)a,b。在max函數(shù)中比較a,b的大小,把大者返回給主函數(shù)的變量z,最后在屏幕上輸出z的值。1.9 源程序的結(jié)構(gòu)特點(diǎn)一個(gè)語言源程序可以由一個(gè)或多個(gè)源文件組成。每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成。一個(gè)源程序不論由多少個(gè)文件組成,都有一個(gè)且只能有一個(gè)main函數(shù),即主函數(shù)。源程序中可以有預(yù)處理命令(include 命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。每一個(gè)說明,每一個(gè)語句都必須以分號(hào)結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號(hào)“”之后不能加分號(hào)。標(biāo)識(shí)符,關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。若已有明顯的間隔符,也可不再

15、加空格來間隔。1.10 書寫程序時(shí)應(yīng)遵循的規(guī)則從書寫清晰,便于閱讀,理解,維護(hù)的角度出發(fā),在書寫程序時(shí)應(yīng)遵循以下規(guī)則:一個(gè)說明或一個(gè)語句占一行。用 括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。一般與該結(jié)構(gòu)語句的第一個(gè)字母對(duì)齊,并單獨(dú)占一行。低一層次的語句或說明可比高一層次的語句或說明縮進(jìn)若干格后書寫。以便看起來更加清晰,增加程序的可讀性。在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。1.11 語言的字符集字符是組成語言的最基本的元素。語言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號(hào)。字母小寫字母az共26個(gè)大寫字母AZ共2

16、6個(gè)數(shù)字09共10個(gè)空白符空格符、制表符、換行符等統(tǒng)稱為空白符??瞻追辉谧址A亢妥址A恐衅鹱饔?。在其它地方出現(xiàn)時(shí),只起間隔作用,編譯程序?qū)λ鼈兒雎圆挥?jì)。因此在程序中使用空白符與否,對(duì)程序的編譯不發(fā)生影響,但在程序中適當(dāng)?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。標(biāo)點(diǎn)和特殊字符1.12 語言詞匯在語言中使用的詞匯分為六類:標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。標(biāo)識(shí)符在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C 規(guī)定,標(biāo)識(shí)符只能是字母(AZ,az)、數(shù)字(09)、下劃線(_)組成的字符串,并且其第一個(gè)字符必須是字母或下劃線

17、。以下標(biāo)識(shí)符是合法的:a, x, x3, BOOK_1, sum5以下標(biāo)識(shí)符是非法的:3s 以數(shù)字開頭s*T 出現(xiàn)非法字符*-3x 以減號(hào)開頭bowy-1 出現(xiàn)非法字符-(減號(hào))在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符的長度,但它受各種版本的C 語言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。例如在某版本C 中規(guī)定標(biāo)識(shí)符前八位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前八位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。(2)在標(biāo)識(shí)符中,大小寫是有區(qū)別的。例如BOOK和book 是兩個(gè)不同的標(biāo)識(shí)符。(3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,作到“顧名思義

18、”。關(guān)鍵字關(guān)鍵字是由語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。語言的關(guān)鍵字分為以下幾類:類型說明符用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如前面例題中用到的int,double等語句定義符用于表示一個(gè)語句的功能。如例1.3中用到的if else就是條件語句的語句定義符。預(yù)處理命令字用于表示一個(gè)預(yù)處理命令。如前面各例中用到的include。運(yùn)算符語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。分隔符在語言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要用在類型說明和函數(shù)參數(shù)表中,分隔各個(gè)變量??崭?/p>

19、多用于語句各單詞之間,作間隔符。在關(guān)鍵字,標(biāo)識(shí)符之間必須要有一個(gè)以上的空格符作間隔,否則將會(huì)出現(xiàn)語法錯(cuò)誤,例如把int a;寫成 inta;C編譯器會(huì)把inta當(dāng)成一個(gè)標(biāo)識(shí)符處理,其結(jié)果必然出錯(cuò)。常量C 語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。在后面章節(jié)中將專門給予介紹。注釋符C 語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時(shí),不對(duì)注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對(duì)暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調(diào)試結(jié)束后再去掉注釋符。

20、1.13 Turbo C 2.0集成開發(fā)環(huán)境的使用1.13.1 Turbo C 2.0簡介和啟動(dòng)我們上機(jī)實(shí)習(xí)和將來考試都是使用Borland Turbo C 2.0這個(gè)版本。該系統(tǒng)是DOS操作系統(tǒng)支持下的軟件,在windows 98環(huán)境下,可以在DOS窗口下運(yùn)行。我們機(jī)房是在D盤根目錄下建立一個(gè)TC 子目 錄下安裝Turbo C 2.0系統(tǒng)的。 TC下還建立了兩個(gè)了目錄LIB和INCLUDE, LIB子目錄中存放庫文件, INCLUDE 子目錄中存放所有頭文件。在DOS環(huán)境下或在windows 98的DOS窗口下運(yùn)行運(yùn)行Turbo C 2.0時(shí), 只要在TC 子目錄下鍵入TC并回車即可進(jìn)入Tu

21、rbo C 2. 0 集成開發(fā)環(huán)境。在windows 98環(huán)境下,也可以選運(yùn)行菜單,然后鍵入d:tctc即可,也可以在tc文件夾找到tc.exe文件,然后用鼠標(biāo)雙擊該文件名也可進(jìn)入Turbo C 2. 0 集成開發(fā)環(huán)境。Turbo C 是美國Borland 公司的產(chǎn)品,Borland公司是一家專門從事軟件開發(fā)、研制的大公司。該公司相繼推出了一套 Turbo系列軟件, 如Turbo BASIC, TurboPascal, Turbo Prolog, 這些軟件很受用戶歡迎。該公司在1987年首次推出TurboC 1.0 產(chǎn)品, 其中使用了全然一新的集成開發(fā)環(huán)境, 即使用了一系列下拉式菜單, 將文本

22、編輯、程序編譯、連接以及程序運(yùn)行一體化, 大大方便了程序的開發(fā)。1988年, Borland 公司又推出Turbo C1.5版本, 增加了圖形庫和文本窗口函數(shù)庫等, 而Turbo C 2.0 則是該公司1989年出版的。Turbo C2.0在原來集成開發(fā)環(huán)境的基礎(chǔ)上增加了查錯(cuò)功能, 并可以在Tiny模式下直接生成.COM (數(shù)據(jù)、代碼、堆棧處在同一64K 內(nèi)存中) 文件。還可對(duì)數(shù)學(xué)協(xié)處理器 (支持8087/80287/80387等)進(jìn)行仿真。Borland公司后來又推出了面向?qū)ο蟮某绦蜍浖黅urbo C+,它繼承發(fā)展Turbo C 2.0 的集成開發(fā)環(huán)境, 并包含了面向?qū)ο蟮幕舅枷牒驮O(shè)計(jì)方

23、法。1991年為了適用Microsoft 公司的Windows 3.0 版本, Borland 公司又將Turbo C+ 作了更新, 即Turbo C 的新一代產(chǎn)品Borlandc C+也已經(jīng)問世了。1.13.2 Turbo C 2.0集成開發(fā)環(huán)境進(jìn)入Turbo C 2.0集成開發(fā)環(huán)境中后, 屏幕上顯示:(圖略)其中頂上一行為Turbo C 2.0 主菜單, 中間窗口為編輯區(qū), 接下來是信息窗 口, 最底下一行為參考行。這四個(gè)窗口構(gòu)成了Turbo C 2.0的主屏幕, 以后的編程、 編譯、調(diào)試以及運(yùn)行都將在這個(gè)主屏幕中進(jìn)行。主菜單在Turbo C 2.0主屏幕頂上一行, 顯示下列內(nèi)容:File

24、 Edit Run Compile Project Options Debug Break/watch除Edit外, 其它各項(xiàng)均有子菜單, 只要用Alt加上某項(xiàng)中第一個(gè)字母, 就可進(jìn)入該項(xiàng)的子菜單中。1.13.3 File菜單按Alt+F可進(jìn)入File菜單, 如圖(略):File菜單的子菜單共有9項(xiàng),分別敘述如下:1. Load:裝入一個(gè)文件, 可用類似DOS的通配符(如*.C)來進(jìn)行列表選擇。也可裝入其它擴(kuò)展名的文件, 只要給出文件名(或只給路徑)即可。該項(xiàng)的熱鍵為F3, 即只要按F3即可進(jìn)入該項(xiàng), 而不需要先進(jìn)入File菜單再選此項(xiàng)。2. Pick:將最近裝入編輯窗口的8個(gè)文件列成一個(gè)表讓

25、用戶選擇, 選擇后將該程序裝入編輯區(qū), 并將光標(biāo)置在上次修改過的地方。其熱健為Alt-F3。3. New:新建文件, 缺省文件名為NONAME.C, 存盤時(shí)可改名。4. Save:將編輯區(qū)中的文件存盤, 若文件名是NONAME.C時(shí), 將詢問是否更改文件名, 其熱鍵為F2。5. Write to:可由用戶給出文件名將編輯區(qū)中的文件存盤, 若該文件已存在, 則詢問要不要 覆蓋。6. Directory:顯示目錄及目錄中的文件, 并可由用戶選擇。7. Change dir:顯示當(dāng)前默認(rèn)目錄, 用戶可以改變默認(rèn)目錄。8. Os shell:暫時(shí)退出Turbo C 2.0到DOS提示符下, 此時(shí)可以運(yùn)

26、行DOS 命令, 若想回到 Turbo C 2.0中, 只要在DOS狀態(tài)下鍵入EXIT即可。9. Quit:退出Turbo C 2.0, 返回到DOS操作系統(tǒng)中, 其熱鍵為Alt+X。 說明:以上各項(xiàng)可用光標(biāo)鍵移動(dòng)色棒進(jìn)行選擇, 回車則執(zhí)行。也可用每一項(xiàng)的第一個(gè)大寫字母直接選擇。若要退到主菜單或從它的下一級(jí)菜單列表框退回均可用Esc鍵, Turbo C 2.0所有菜單均采用這種方法進(jìn)行操作, 以下不再說明。1.13.4 Edit菜單按Alt+E可進(jìn)入編輯菜單, 若再回車, 則光標(biāo)出現(xiàn)在編輯窗口, 此時(shí)用戶可以 進(jìn)行文本編輯。編輯方法基本與wordstar相同, 可用F1鍵獲得有關(guān)編輯方法的幫助

27、信息。1. 與編輯有關(guān)的功能鍵如下:F1 獲得Turbo C 2.0編輯命令的幫助信息;F5 擴(kuò)大編輯窗口到整個(gè)屏幕;F6 在編輯窗口與信息窗口之間進(jìn)行切換;F10 從編輯窗口轉(zhuǎn)到主菜單。2. 編輯命令簡介:PageUp 向前翻頁P(yáng)ageDn 向后翻頁Home 將光標(biāo)移到所在行的開始End 將光標(biāo)移到所在行的結(jié)尾Ctrl+Y 刪除光標(biāo)所在的一行Ctrl+T 刪除光標(biāo)所在處的一個(gè)詞Ctrl+KB 設(shè)置塊開始Ctrl+KK 設(shè)置塊結(jié)尾Ctrl+KV 塊移動(dòng)Ctrl+KC 塊拷貝Ctrl+KY 塊刪除Ctrl+KR 讀文件Ctrl+KW 存文件Ctrl+KP 塊文件打印Ctrl+F1 如果光標(biāo)所在處

28、為Turbo C 2.0庫函數(shù), 則獲得有關(guān)該函數(shù)的幫助信息Ctrl+Q 查找Turbo C 2.0雙界符的后匹配符Ctrl+Q 查找Turbo C 2.0雙界符的前匹配符 說明:1) Turbo C 2.0的雙界符包括以下幾種符號(hào):a) 花括符 和b) 尖括符 c) 圓括符 (和)d) 方括符 和e) 注釋符 /*和*/f) 雙引號(hào) g) 單引號(hào) 2) Turbo C 2.0在編輯文件時(shí)還有一種功能, 就是能夠自動(dòng)縮進(jìn), 即光標(biāo)定位和上一個(gè)非空字符對(duì)齊。在編輯窗口中, Ctrl+OL為自動(dòng)縮進(jìn)開關(guān)的控制鍵。1.13.5 Run菜單按Alt+R可進(jìn)入Run菜單, 該菜單有以下各項(xiàng):(圖略)1.

29、 Run:運(yùn)行由Project/Project name項(xiàng)指定的文件名或當(dāng)前編輯區(qū)的文件。如果對(duì)上次編譯后的源代碼未做過修改, 則直接運(yùn)行到下一個(gè)斷點(diǎn)(沒有斷點(diǎn)則運(yùn)行到結(jié)束)。否則先進(jìn)行編譯、連接后才運(yùn)行, 其熱鍵為Ctrl+F9。2. Program reset:中止當(dāng)前的調(diào)試, 釋放分給程序的空間, 其熱鍵為Ctrl+F2。3. Go to cursor::調(diào)試程序時(shí)使用, 選擇該項(xiàng)可使程序運(yùn)行到光標(biāo)所在行。光標(biāo)所在行必須為一條可執(zhí)行語句, 否則提示錯(cuò)誤。其熱鍵為F4。4. Trace into:在執(zhí)行一條調(diào)用其它用戶定義的子函數(shù)時(shí), 若用Trace into項(xiàng), 則執(zhí)行長條將跟蹤到該子函

30、數(shù)內(nèi)部去執(zhí)行, 其熱鍵為F7。5. Step over:執(zhí)行當(dāng)前函數(shù)的下一條語句, 即使用戶函數(shù)調(diào)用, 執(zhí)行長條也不會(huì)跟蹤進(jìn)函數(shù) 內(nèi)部, 其熱鍵為F8。6. User screen:顯示程序運(yùn)行時(shí)在屏幕上顯示的結(jié)果。其熱鍵為Alt+F5。1.13.6 Compile菜單按Alt+C可進(jìn)入Compile菜單, 該菜單有以下幾個(gè)內(nèi)容,如圖所示:(略)(略)1. Compile to OBJ:將一個(gè)C源文件編譯生成.OBJ目標(biāo)文件, 同時(shí)顯示生成的文件名。其熱鍵為 Alt+F9。2. Make EXE file:此命令生成一個(gè).EXE的文件, 并顯示生成的.EXE文件名。其中.EXE文件名是下面幾項(xiàng)

31、之一:1) 由Project/Project name說明的項(xiàng)目文件名。2) 若沒有項(xiàng)目文件名, 則由Primary C file說明的源文件。3) 若以上兩項(xiàng)都沒有文件名, 則為當(dāng)前窗口的文件名。3. Link EXE file:把當(dāng)前.OBJ文件及庫文件連接在一起生成.EXE文件。4. Build all:重新編譯項(xiàng)目里的所有文件, 并進(jìn)行裝配生成.EXE文件。該命令不作過時(shí)檢查 (上面的幾條命令要作過時(shí)檢查, 即如果目前項(xiàng)目里源文件的日期和時(shí)間與目標(biāo)文件相同或更早, 則拒絕對(duì)源文件進(jìn)行編譯)。5. Primary C file:當(dāng)在該項(xiàng)中指定了主文件后, 在以后的編譯中, 如沒有項(xiàng)目文件

32、名則編譯此項(xiàng)中規(guī)定的主C文件, 如果編譯中有錯(cuò)誤, 則將此文件調(diào)入編輯窗口, 不管目前窗口 中是不是主C文件。6. Get info:獲得有關(guān)當(dāng)前路徑、源文件名、源文件字節(jié)大小、編譯中的錯(cuò)誤數(shù)目、可用空間等信息,如圖:(略)1.13.7 Project菜單按Alt+P可進(jìn)入Project菜單, 該菜單包括以下內(nèi)容,如圖所示:(略)1. Project name:項(xiàng)目名具有.PRJ的擴(kuò)展名, 其中包括將要編譯、連接的文件名。例如有一個(gè)程 序由file1.c, file2.c, file3.c組成, 要將這3個(gè)文件編譯裝配成一個(gè)file.exe的執(zhí)行文件, 可以先建立一個(gè)file.prj的項(xiàng)目文件

33、, 其內(nèi)容如下:file1.cfile2.cfile3.c此時(shí)將file.prj放入Project name項(xiàng)中, 以后進(jìn)行編譯時(shí)將自動(dòng)對(duì)項(xiàng)目文件中規(guī)定的三個(gè)源文件分別進(jìn)行編譯。然后連接成file.exe文件。如果其中有些文件已經(jīng)編譯成.OBJ文件, 而又沒有修改過, 可直接寫上.OBJ擴(kuò) 展名。此時(shí)將不再編譯而只進(jìn)行連接。例如:file1.objfile2.cfile3.c將不對(duì)file1.c進(jìn)行編譯, 而直接連接。說明: 當(dāng)項(xiàng)目文件中的每個(gè)文件無擴(kuò)展名時(shí), 均按源文件對(duì)待, 另外, 其中的文件也可以是庫文件, 但必須寫上擴(kuò)展名.LIB。2. Break make on:由用戶選擇是否在有W

34、arining、Errors、Fatal Errors時(shí)或Link之前退出Make編譯。3. Auto dependencies:當(dāng)開關(guān)置為on, 編譯時(shí)將檢查源文件與對(duì)應(yīng)的.OBJ文件日期和時(shí)間, 否則不進(jìn) 行檢查。4. Clear project:清除Project/Project name中的項(xiàng)目文件名。5. Remove messages:把錯(cuò)誤信息從信息窗口中清除掉。1.13.8 Options菜單按Alt+O可進(jìn)入Options菜單, 該菜單對(duì)初學(xué)者來說要謹(jǐn)慎使用,該菜單有以下幾個(gè)內(nèi)容,如圖所示:(略)(略)1. Compiler:本項(xiàng)選擇又有許多子菜單, 可以讓用戶選擇硬件配置、

35、存儲(chǔ)模型、調(diào)試技術(shù)、 代碼優(yōu)化、對(duì)話信息控制和宏定義。這些子菜單如圖所示:(略)(略)1) Model:共有Tiny, small, medium, compact, large, huge 六種不同模式可由同戶選 擇。2) Define:打開一個(gè)宏定義框, 同戶可輸入宏定義。多重定義可同分號(hào), 賦值可用等號(hào)。3) Code generation:它又有許多任選項(xiàng), 這些任選項(xiàng)告訴編譯器產(chǎn)生什么樣的目標(biāo)代碼。2 Calling convention 可選擇C或Pascal方式傳遞參數(shù)。2 Instruction set 可選擇8088/8086或80186/80286指令系列。2 Floati

36、ng point 可選擇仿真浮點(diǎn)、數(shù)學(xué)協(xié)處理器浮點(diǎn)或無浮點(diǎn)運(yùn)算。2 Default char type 規(guī)定char的類型。2 Alignonent 規(guī)定地址對(duì)準(zhǔn)原則。2 Merge duplicate strings 作優(yōu)化用, 將重復(fù)的字符串合并在一起。2 Standard stack frame 產(chǎn)生一個(gè)標(biāo)準(zhǔn)的棧結(jié)構(gòu)。2 Test stack overflow 產(chǎn)生一段程序運(yùn)行時(shí)檢測堆棧溢出的代碼。2 Line number 在.OBJ文件中放進(jìn)行號(hào)以供調(diào)試時(shí)用。2 OBJ debug information 在.OBJ文件中產(chǎn)生調(diào)試信息。4) Optimization:它又有許多任選項(xiàng)

37、。2 Optimize for選擇是對(duì)程序小型化還是對(duì)程序速度進(jìn)行優(yōu)化處理。2 Use register variable 用來選擇是否允許使用寄存器變量。2 Register optimization盡可能使用寄存器變量以減少過多的取數(shù)操作。2 Jump optimization通過去除多余的跳轉(zhuǎn)和調(diào)整循環(huán)與開關(guān)語句的辦法, 壓縮代碼。5) Source:它又有許多任選項(xiàng)。2 Indentifier length說明標(biāo)識(shí)符有效字符的個(gè)數(shù), 默認(rèn)為32個(gè)。2 Nested comments是否允許嵌套注釋。2 ANSI keywords only是只允許ANSI關(guān)鍵字還是也允許Turbo C2

38、.0關(guān)鍵字。6) Error2 Error stop after多少個(gè)錯(cuò)誤時(shí)停止編譯, 默認(rèn)為25個(gè)。2 Warning stop after多少個(gè)警告錯(cuò)誤時(shí)停止編譯, 默認(rèn)為100個(gè)。2 Display warning2 Portability warning移植性警告錯(cuò)誤。2 ANSI Violations侵犯了ANSI關(guān)鍵字的警告錯(cuò)誤。2 Common error常見的警告錯(cuò)誤。2 Less common error少見的警告錯(cuò)誤。7) Names :用于改變段(segment)、組(group) 和類(class)的名字,默認(rèn)值為CODE, DATA, BSS。2. Linker:本菜

39、單設(shè)置有關(guān)連接的選擇項(xiàng), 它有以下內(nèi)容,如圖所示:(略)(略)1) Map file menu 選擇是否產(chǎn)生.MAP文件。2) Initialize segments是否在連接時(shí)初始化沒有初始化的段。3) Devault libraries是否在連接其它編譯程序產(chǎn)生的目標(biāo)文件時(shí)去尋找其缺省庫。4) Graphics library 是否連接graphics庫中的函數(shù)。5) Warn duplicate symbols當(dāng)有重復(fù)符號(hào)時(shí)產(chǎn)生警告信息。6) Stack warinig是否讓連接程序產(chǎn)生No stack的警告信息。7) Case-sensitive link是否區(qū)分大、小寫字。 3. E

40、nvironment:菜單規(guī)定是否對(duì)某些文件自動(dòng)存盤及制表鍵和屏幕大小的設(shè)置,它有以下內(nèi)容,如圖所示:(略)(略)1) Message tracking:2 Current file 跟蹤在編輯窗口中的文件錯(cuò)誤。2 All files跟蹤所有文件錯(cuò)誤。2 Off 不跟蹤。2) Keep message :編譯前是否清除Message窗口中的信息。3) Config auto save:選on時(shí), 在Run, Shell或退出集成開發(fā)環(huán)境之前,如果Turbo C 2.0的配置被改過, 則所做的改動(dòng)將存入配置文件中。選off時(shí)不存。4) Edit auto save:是否在Run或Shell之前,

41、 自動(dòng)存儲(chǔ)編輯的源文件。5) Backup file:是否在源文件存盤時(shí)產(chǎn)生后備文件(.BAK文件)。6) Tab size:設(shè)置制表鍵大小, 默認(rèn)為8。7) Zoomed windows:將現(xiàn)行活動(dòng)窗口放大到整個(gè)屏幕, 其熱鍵為F5。8) Screen size設(shè)置屏幕文本大小。4. Directories:規(guī)定編譯、連接所需文件的路徑, 有下列各項(xiàng),如圖所示:(略)(略)(1) Include directories:包含文件的路徑, 多個(gè)子目錄用;分開。(2) Library directories:庫文件路徑, 多個(gè)子目錄用;分開。(3) Output directoried:輸出文件

42、(.OBJ, .EXE, .MAP文件)的目錄。(4) Turbo C directoried:Turbo C 所在的目錄。(5) Pick file name:定義加載的pick文件名, 如不定義則從currentpick file中取。5. Arguments:允許用戶使用命令行參數(shù)。6. Save options:保存所有選擇的編譯、連接、調(diào)試和項(xiàng)目到配置文件中, 缺省的配置文件為TCCONFIG.TC。7. Retrive options裝入一個(gè)配置文件到TC中, TC將使用該文件的選擇項(xiàng)。1.13.9 Debug菜單按Alt+D可選擇Debug菜單, 該菜單主要用于查錯(cuò), 它包括以下

43、內(nèi)容,如圖所示:(略)1. Evaluate1) Expression要計(jì)算結(jié)果的表達(dá)式。2) Result顯示表達(dá)式的計(jì)算結(jié)果。3) New value賦給新值。2. Call stack:該項(xiàng)不可接觸。而在Turbo C debuger 時(shí)用于檢查堆棧情況。3. Find function在運(yùn)行Turbo C debugger時(shí)用于顯示規(guī)定的函數(shù)。4. Refresh display如果編輯窗口偶然被用戶窗口重寫了可用此恢復(fù)編輯窗口的內(nèi)容。1.13.10 Break/watch菜單按Alt+B可進(jìn)入Break/watch菜單, 該菜單有以下內(nèi)容,如圖所示:(略)1. Add watch:

44、向監(jiān)視窗口插入一監(jiān)視表達(dá)式。2. Delete watch:從監(jiān)視窗口中刪除當(dāng)前的監(jiān)視表達(dá)式。3. Edit watch:在監(jiān)視窗口中編輯一個(gè)監(jiān)視表達(dá)式。4. Remove all :watches從監(jiān)視窗口中刪除所有的監(jiān)視表達(dá)式。5. Toggle breakpoint:對(duì)光標(biāo)所在的行設(shè)置或清除斷點(diǎn)。6. Clear all breakpoints:清除所有斷點(diǎn)。7. View next breakpoint:將光標(biāo)移動(dòng)到下一個(gè)斷點(diǎn)處。1.13.11 Turbo C 2.0的配置文件所謂配置文件是包含Turbo C 2.0有關(guān)信息的文件, 其中存有編譯、連接的選擇和路徑等信息??梢杂孟率龇椒?/p>

45、建立Turbo C 2.0的配置:1. 建立用戶自命名的配置文件:可以從Options菜單中選擇Options/Save options命令, 將當(dāng)前集成開發(fā)環(huán)境的所有配置存入一個(gè)由用戶命名的配置文件中。下次啟動(dòng)TC時(shí)只要在DOS下鍵入: tc/c就會(huì)按這個(gè)配置文件中的內(nèi)容作為Turbo C 2.0的選擇。2. 若設(shè)置Options/Environment/Config auto save 為on, 則退出集成開發(fā)環(huán)境時(shí), 當(dāng)前的設(shè)置會(huì)自動(dòng)存放到Turbo C 2.0配置文件TCCONFIG.TC中。Turbo C 在啟動(dòng)時(shí)會(huì)自動(dòng)尋找這個(gè)配置文件。3. 用TCINST設(shè)置Turbo C的有關(guān)配

46、置, 并將結(jié)果存入TC.EXE中。Turbo C 在啟動(dòng)時(shí), 若沒有找到配置文件, 則取TC.EXE中的缺省值。2 程序的靈魂算法一個(gè)程序應(yīng)包括:l 對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure)。l 對(duì)操作的描述。即操作步驟,也就是算法(algorithm)。Nikiklaus Wirth提出的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序教材認(rèn)為:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境這4個(gè)方面是一個(gè)程序涉及人員所應(yīng)具備的知識(shí)。本課程的目的是使同學(xué)知道怎樣編寫一個(gè)C程序,進(jìn)行編寫程序的初步訓(xùn)練,因此,只介紹算法的初步知識(shí)。2.1 算法的概念做任何

47、事情都有一定的步驟。為解決一個(gè)問題而采取的方法和步驟,就稱為算法。l 計(jì)算機(jī)算法:計(jì)算機(jī)能夠執(zhí)行的算法。l 計(jì)算機(jī)算法可分為兩大類:n 數(shù)值運(yùn)算算法:求解數(shù)值;n 非數(shù)值運(yùn)算算法:事務(wù)管理領(lǐng)域。2.2 簡單算法舉例【例2.1】求12345。最原始方法:步驟1:先求12,得到結(jié)果2。步驟2:將步驟1得到的乘積2乘以3,得到結(jié)果6。步驟3:將6再乘以4,得24。步驟4:將24再乘以5,得120。這樣的算法雖然正確,但太繁。改進(jìn)的算法:S1: 使t=1S2: 使i=2S3: 使ti, 乘積仍然放在在變量t中,可表示為titS4: 使i的值+1,即i+1iS5: 如果i5, 返回重新執(zhí)行步驟S3以及其

48、后的S4和S5;否則,算法結(jié)束。如果計(jì)算100!只需將S5:若i5改成i100即可。如果該求1357911,算法也只需做很少的改動(dòng):S1: 1tS2: 3iS3: titS4: i+2tS5:若i11, 返回S3,否則,結(jié)束。該算法不僅正確,而且是計(jì)算機(jī)較好的算法,因?yàn)橛?jì)算機(jī)是高速運(yùn)算的自動(dòng)機(jī)器,實(shí)現(xiàn)循環(huán)輕而易舉。思考:若將 S5寫成:S5:若i11, 返回S3;否則,結(jié)束?!纠?.2】有50個(gè)學(xué)生,要求將他們之中成績?cè)?0分以上者打印出來。如果,n表示學(xué)生學(xué)號(hào),ni表示第個(gè)學(xué)生學(xué)號(hào);g表示學(xué)生成績,gi表示第個(gè)學(xué)生成績;則算法可表示如下:S1: 1iS2: 如果gi80,則打印ni和gi,否

49、則不打印S3: i+1iS4:若i50, 返回S2,否則,結(jié)束?!纠?.3】判定2000 2500年中的每一年是否閏年,將結(jié)果輸出。潤年的條件:1) 能被4整除,但不能被100整除的年份;2) 能被100整除,又能被400整除的年份;設(shè)y為被檢測的年份,則算法可表示如下:S1: 2000yS2:若y不能被4整除,則輸出y“不是閏年”,然后轉(zhuǎn)到S6S3:若y能被4整除,不能被100整除,則輸出y“是閏年”,然后轉(zhuǎn)到S6S4:若y能被100整除,又能被400整除,輸出y“是閏年” 否則輸出y“不是閏年”,然后轉(zhuǎn)到S6S5:輸出y“不是閏年”。S6:y+1yS7:當(dāng)y2500時(shí), 返回S2繼續(xù)執(zhí)行,

50、否則,結(jié)束?!纠?.4】求。算法可表示如下:S1: sigh=1S2: sum=1S3: deno=2S4: sigh=(-1)sigh S5: term= sigh(1/deno )S6: term=sum+termS7: deno= deno +1S8:若deno100,返回S4;否則,結(jié)束?!纠?.5】對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。算法可表示如下:S1: 輸入n的值S2: i=2S3: n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,則打印n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5: i+1i S6:如果in-1,返回S3;否則打印n“是素?cái)?shù)”;然后算法結(jié)束。改

51、進(jìn):S6:如果i,返回S3;否則打印n“是素?cái)?shù)”;然后算法結(jié)束。2.3 算法的特性l 有窮性:一個(gè)算法應(yīng)包含有限的操作步驟而不能是無限的。 l 確定性:算法中每一個(gè)步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的、模棱兩可的。l 有零個(gè)或多個(gè)輸入。l 有一個(gè)或多個(gè)輸出。l 有效性:算法中每一個(gè)步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。對(duì)于程序設(shè)計(jì)人員,必須會(huì)設(shè)計(jì)算法,并根據(jù)算法寫出程序。2.4 怎樣表示一個(gè)算法2.4.1 用自然語言表示算法除了很簡單的問題,一般不用自然語言表示算法。2.4.2 用流程圖表示算法流程圖表示算法,直觀形象,易于理解?!纠?.6】將例2.1求5!的算用流程圖表示。【例2.7】將例2.2的算用流程圖表示?!纠?.8】將例2.3判定閏年的算用流程圖表示?!纠?.9】將例2.4求的算用流程圖表示。一個(gè)流程圖包

溫馨提示

  • 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)論