C語言及程序設(shè)計(jì)(第2版)課件第1章 概述_第1頁
C語言及程序設(shè)計(jì)(第2版)課件第1章 概述_第2頁
C語言及程序設(shè)計(jì)(第2版)課件第1章 概述_第3頁
C語言及程序設(shè)計(jì)(第2版)課件第1章 概述_第4頁
C語言及程序設(shè)計(jì)(第2版)課件第1章 概述_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

參考書與課時(shí)安排

參考書C程序設(shè)計(jì)(第四版)譚浩強(qiáng)清華大學(xué)出版社全國計(jì)算機(jī)等級(jí)考試二級(jí)教程——C語言程序設(shè)計(jì)……

課時(shí)安排授課:36學(xué)時(shí)上機(jī):28學(xué)時(shí)

上機(jī)安排上機(jī)地點(diǎn):計(jì)算中心機(jī)房上機(jī)實(shí)驗(yàn)題目:隨上課進(jìn)度布置要求:上機(jī)實(shí)驗(yàn)題目要事先做在紙上課程要求

課前做好預(yù)習(xí)保持課堂安靜,認(rèn)真聽講、思考上課、上機(jī)考勤上機(jī)實(shí)驗(yàn)題目、作業(yè)必須獨(dú)立、按時(shí)完成,且經(jīng)上機(jī)調(diào)試重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間考核期末:全校統(tǒng)一考試、閉卷、筆試平時(shí)成績10%+實(shí)驗(yàn)成績10%+期末考試80%第1章C語言概述

為什么要學(xué)習(xí)C語言

C語言發(fā)展歷史

C語言特點(diǎn)

C程序格式和結(jié)構(gòu)特點(diǎn)(重點(diǎn))

C程序的開發(fā)過程(重點(diǎn))為什么要學(xué)習(xí)C語言本課程是向?qū)W習(xí)者介紹結(jié)構(gòu)化(模塊化)程序設(shè)計(jì)的基本思想和方法,了解用計(jì)算機(jī)解決問題的一般方法,掌握程序設(shè)計(jì)的思路和基本方法,掌握編寫和調(diào)試簡單應(yīng)用程序的方法,使學(xué)習(xí)者養(yǎng)成利用計(jì)算機(jī)解決工作、生活中的實(shí)際問題的習(xí)慣,提高計(jì)算機(jī)方面的能力和素質(zhì)。程序設(shè)計(jì)語言C語言是一種程序設(shè)計(jì)語言。那么什么是程序設(shè)計(jì)語言?是用來編寫計(jì)算機(jī)程序的語言C語言程序:#include<math.h>main(){floatx;x=56+2*sqrt(24)/(85-34);printf("%f",x);}

算式:舉例CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000加

10010000減用助記符號(hào)描述的指令系統(tǒng)如ADDA,B面向機(jī)器的語言機(jī)器語言匯編語言高級(jí)語言面向過程面向?qū)ο蟪绦蛟O(shè)計(jì)是數(shù)據(jù)被加工的過程1.1

C語言的發(fā)展史程序設(shè)計(jì)語言的發(fā)展

產(chǎn)生背景產(chǎn)生過程時(shí)間:1972~1973地點(diǎn):美國貝爾實(shí)驗(yàn)室目的:UNIX操作系統(tǒng)設(shè)計(jì)人:Ken.Thompson和Dennis.M.RitchieC標(biāo)準(zhǔn)標(biāo)準(zhǔn)C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年國際標(biāo)準(zhǔn)的ANSICC語言發(fā)展過程語言簡潔、緊湊、靈活運(yùn)算符和數(shù)據(jù)類型豐富程序設(shè)計(jì)結(jié)構(gòu)化、模塊化生成目標(biāo)代碼質(zhì)量高可移植性好>>>>>>1.2

C語言特點(diǎn)32個(gè)關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile<9種控制語句:

if()~else~for()~while()~do~while()continuebreakswitchgotoreturn<34種運(yùn)算符:算術(shù)運(yùn)算符:+-*/%++--關(guān)系運(yùn)算符:<<===>>=!=邏輯運(yùn)算符:!&&||位運(yùn)算符:<<>>~|^&賦值運(yùn)算符:=及其擴(kuò)展條件運(yùn)算符:?:逗號(hào)運(yùn)算符:,指針運(yùn)算符:*&求字節(jié)數(shù):sizeof強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:.->下標(biāo)運(yùn)算符:[]其它:()-<<C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef數(shù)值類型字符類型char枚舉類型enum整型實(shí)型單精度型float雙精度型double短整型short長整型long整型int數(shù)組結(jié)構(gòu)體struct共用體union<結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu):順序結(jié)構(gòu):按語句的書寫順序依次執(zhí)行分支結(jié)構(gòu):根據(jù)條件有選擇地執(zhí)行某部分語句循環(huán)結(jié)構(gòu):循環(huán)條件+循環(huán)體程序設(shè)計(jì)結(jié)構(gòu)化、模塊化例1.1第一個(gè)程序,打印Hello,Howdoyoudo!/*example1.1ThefirstCProgram*/#include<stdio.h>main(){

printf("Hello,Howdoyoudo!");}注釋編譯預(yù)處理命令主函數(shù)輸出:Hello,Howdoyoudo!1.3

簡單的C語言程序、結(jié)構(gòu)和書寫格式輸出語句例1.2計(jì)算兩個(gè)數(shù)的和,并在顯示器上輸出結(jié)果。#include<stdio.h>main(){floatx,y,sum;/*定義變量*/x=4.6,y=7.85;sum=x+y;printf("x+y=%.2f",sum);

}注釋編譯預(yù)處理命令主函數(shù)輸出:x+y=12.45輸出語句賦值語句例1.3/*example1.3calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){inta,b,sum;a=10;b=24;sum=add(a,b);printf("sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty){intz;z=x+y;return(z);}運(yùn)行結(jié)果:sum=34函數(shù)編譯預(yù)處理命令語句注釋例1.2計(jì)算兩個(gè)數(shù)的和,并在顯示器上輸出結(jié)果。#include<stdio.h>main(){floatx,y,sum;/*定義變量*/x=4.6,y=7.85;sum=x+y;printf("x+y=%.2f",sum);

}注釋編譯預(yù)處理命令主函數(shù)輸出:x+y=12.45輸出語句賦值語句解析:#include預(yù)處理命令

預(yù)處理命令以“#”開頭,一般放在最前面。

#include<stdio.h>stdio.h表示標(biāo)準(zhǔn)輸入輸出頭文件(standardinput/outputheader)。main()函數(shù)程序由一個(gè)或多個(gè)函數(shù)組成。函數(shù)是C程序的基本單位。必須有且只能有一個(gè)主函數(shù)main()。程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過調(diào)用得以執(zhí)行。

語句

C程序由語句組成,每一個(gè)語句用“;”作為終止符。

花括號(hào){…}

注釋/**/

在“/”和“*”之間不能有空格,且“/*”和“*/”必須配對使用。注釋是供人閱讀的,并不參與編譯和運(yùn)行。注釋可以出現(xiàn)在程序的任何地方。一個(gè)較長的注釋可以單放一行,或者是多行。添加必要的注釋可以提高程序的可讀性。

結(jié)構(gòu)特點(diǎn)程序由一個(gè)或多個(gè)函數(shù)組成。函數(shù)是C程序的基本單位。

必須有且只能有一個(gè)主函數(shù)main()。

程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過調(diào)用得以執(zhí)行。

main函數(shù)可以程序的放在任何位置。main(){

……………….………………

…………..

……………….

……………

………………..}main(){

inti,j,sum;sum=0;for(i=1;i<10;i++)

{for(j=1;j<10;j++)

{sum+=i*j;

}

}printf("%d\n",sum);}

書寫格式

習(xí)慣用小寫字母,字母大小寫不同。語句以分號(hào)(;)結(jié)束。程序的書寫格式靈活。

{}必須成對出現(xiàn)。

/*注釋信息*/

常用縮進(jìn)(鋸齒形)格式書寫。編輯鏈接編譯執(zhí)行1.4

C程序的開發(fā)過程及開發(fā)環(huán)境程序代碼的錄入,生成源程序*.c語法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj與其它目標(biāo)程序或庫鏈接裝配,生成可執(zhí)行程序*.exe一、C程序開發(fā)過程

開始

編輯

編譯

連接

執(zhí)行

有錯(cuò)?

結(jié)果正確?

結(jié)束

源程序File.c目標(biāo)程序file.obj庫函數(shù)和其它目標(biāo)程序可執(zhí)行目標(biāo)程序file.exe無

正確

不正確

語法錯(cuò)誤(SyntaxError)如何檢測程序的語法錯(cuò)誤:編譯前瀏覽程序的源代碼看是否有明顯的錯(cuò)誤;編譯時(shí),當(dāng)編譯程序發(fā)現(xiàn)語法錯(cuò)誤時(shí),會(huì)把這些錯(cuò)誤的位置指出,并告訴您錯(cuò)誤的原因,即可以根據(jù)編譯程序所給予的信息更正錯(cuò)誤。二、常見錯(cuò)誤分析注意:某位置上一個(gè)真正的語法錯(cuò)誤可能導(dǎo)致編譯器誤認(rèn)為它發(fā)現(xiàn)了其他錯(cuò)誤。

例如,示例程序中未能正確聲明n2,n3,當(dāng)后面用到這些變量時(shí),編譯器可能會(huì)發(fā)現(xiàn)更多錯(cuò)誤。實(shí)際上不用立刻試圖改正所有發(fā)現(xiàn)的錯(cuò)誤,只是修改前一個(gè)或前兩個(gè),然后重新編譯,其余的某些錯(cuò)誤就可能會(huì)消失。一直這樣做直到程序能夠運(yùn)行為止。發(fā)現(xiàn)的錯(cuò)誤位置比真正的錯(cuò)誤要滯后一行。

例如,編譯器要編譯下一行時(shí)才發(fā)現(xiàn)上一行缺少了一個(gè)分號(hào),因此如果編譯器指出某行少了一個(gè)分號(hào)請檢查上一行。語義錯(cuò)誤(SemanticError)

如何檢測程序的語義錯(cuò)誤:比較程序?qū)嶋H得到的結(jié)果和你預(yù)期的結(jié)果;按照程序的執(zhí)行順序通過手工方式一步一步跟蹤程序,并記錄每個(gè)變量,從而可以監(jiān)視程序狀態(tài)以便發(fā)現(xiàn)是否存在語義錯(cuò)誤,但注意一定要按照你實(shí)際所寫的代碼去執(zhí)行而不要按照你期望的那樣去執(zhí)行。二、常見錯(cuò)誤分析當(dāng)問題規(guī)模太大時(shí),可以選擇跟蹤其中的一小部分在程序的關(guān)鍵處加入額外的printf()語句以監(jiān)視所選的變量的值,使用完后再去掉printf()語句;利用調(diào)試器,調(diào)試器是一種程序,它能夠運(yùn)行另一個(gè)程序并檢查該程序的變量。

編譯器的警告消息

警告表明盡管代碼正確,但有可能不是程序員所需要的。警告不終止編譯。二、常見錯(cuò)誤分析三、VisualC++6.0集成開發(fā)環(huán)境及其使用1.啟動(dòng)VisualC++6.0Windows2000(/Windowsxp)/開始/程序/MicrosoftVisualStudio6.0/MicrosoftVisualC++6.0VisualC++6.0集成開發(fā)環(huán)境及其使用1.啟動(dòng)VisualC++6.0啟動(dòng)后VisualC++6.0集成開發(fā)環(huán)境及其使用2.在指定位置D:\創(chuàng)建C源程序文件文件\新建\“文件”選項(xiàng)卡\C++sourceFile\xxx.c與目錄VisualC++6.0集成開發(fā)環(huán)境及其使用3.輸入C源程序VisualC++6.0集成開發(fā)環(huán)境及其使用4.編譯,將C源程序文件翻譯成目標(biāo)文件.obj編譯\編譯xxx.cVisualC++6.0集成開發(fā)環(huán)境及其使用4.編譯,將C源程序文件翻譯成目標(biāo)文件.obj

編譯前提示是否創(chuàng)建默認(rèn)的項(xiàng)目工作區(qū)(workspace)?VisualC++6.0集成開發(fā)環(huán)境及其使用4.編譯,將C源程序文件翻譯成目標(biāo)文件.obj每創(chuàng)建一個(gè)c程序,VC都會(huì)創(chuàng)建一個(gè)相應(yīng)的工作區(qū)(workspace)。所謂“工作區(qū)”是一種管理C程序的方法。一個(gè)C程序通常包含源代碼文件(.c)、工作區(qū)文件(.dsw)、工作區(qū)配置文件(.opt)等,還有調(diào)試子文件夾(debug)。程序員通常只需創(chuàng)建源代碼文件,其他文件在編譯期間自動(dòng)生成。VisualC++6.0集成開發(fā)環(huán)境及其使用4.編譯,將C源程序文件翻譯成目標(biāo)文件.obj編譯結(jié)果VisualC++6.0集成開發(fā)環(huán)境及其使用4.編譯,將C源程序文件翻譯成目標(biāo)文件.obj編譯通過時(shí),可以在工作區(qū)視圖中看到目前創(chuàng)建的模塊和文件結(jié)構(gòu)。VisualC++6.0集成開發(fā)環(huán)境及其使用5.連接,將目標(biāo)文件.obj與系統(tǒng)文件連接成可執(zhí)行文件xxx.exe編譯\構(gòu)件xxx.exeVisualC++6.0集成開發(fā)環(huán)境及其使用6.執(zhí)行,將可執(zhí)行文件xxx.exe裝載到內(nèi)存并執(zhí)行編譯\執(zhí)行xxx.exeVisualC++6.0集成開發(fā)環(huán)境及其使用6.執(zhí)行,將可執(zhí)行文件xxx.exe裝載到內(nèi)存并執(zhí)行執(zhí)行的結(jié)果VisualC++6.0集成開發(fā)環(huán)境及其使用此時(shí),在位置D:\創(chuàng)建了一個(gè)C程序\debuga.exea.dswa.c······D:\VisualC++6.0集成開發(fā)環(huán)境及其使用7.關(guān)閉工作區(qū),創(chuàng)建下一個(gè)C程序。\debuga.exeb.exea.dswa.c······b.dswb.c······D:\VisualC++6.0集成開發(fā)環(huán)境及其使用如何運(yùn)行之前創(chuàng)建的C程序?文件\打開工作區(qū)\***.dsw文件四、TurboC集成開發(fā)環(huán)境及其使用(一)啟動(dòng)Turbo.c:有兩種方法。在WINDOS下,雙擊我的電腦在c盤或其它盤上找到TurboC或TC圖標(biāo)并雙擊它,再雙擊TC.exe文件。在DOS提示符下鍵入:TC(二)建立一個(gè)新文件

1.按F10,進(jìn)入主菜單,控制光標(biāo)選中FILE2.回車,進(jìn)入FILE的子菜單

3.按光標(biāo)控制鍵↓,選中“NEW”4.回車,進(jìn)入編輯窗口,文件名被自動(dòng)命名為“noname.c”TurboC集成開發(fā)環(huán)境及其使用(三)編輯源程序逐個(gè)輸入字符刪除一個(gè)字符:按delete鍵插入字符插入一行:Ctrl+n刪除一行:Ctrl+y刪除一個(gè)單詞:Ctrl+t定義塊首:Ctrl+kb;定義塊尾:Ctrl+kk刪除一個(gè)塊:Ctrl+ky復(fù)制一個(gè)塊:Ctrl+kc移動(dòng)一個(gè)塊:Ctrl+kv(四)存盤不改文件名:F10FILESave(F2)回車改文件名:F10

FILE

WriteTo

回車輸入新的文件名(五)調(diào)入原有的文件1.F10→FILE→Load(F3)顯示的是上次打開的文件名,在其中輸入所需的文件名即可。2.選擇文件名 …Load(F3)→*.c→回車3.從本次用過的文件名中查找 FILE→Pick:顯示的是本次上機(jī)剛剛調(diào)用過的文件名,縮小了查找范圍。4.不僅輸入文件名,而且搜索所有類型文件。*.*(六)暫時(shí)脫離TurboC,進(jìn)入DOS環(huán)境

F10→File→DOSShell

在DOS下進(jìn)行文件管理在DOS提示符下輸入exit返回TurboC(七)編譯:按

F9

鍵(八)運(yùn)行:Ctrl+F9(九)看運(yùn)行結(jié)果:Alt+F5(十)程序調(diào)試:

F8---StepoverF7---TraceintoF4---GotoCursorCtrl+F7---AddWatchCtrl+F8---ToggleBreakpointCtrl+F2---ProgramReset

TC的使用的演示:小結(jié):

C語言歷史/特點(diǎn)/書寫格式/開發(fā)過程(一)算法1.什么是算法?簡單地理解,算法是指為解決某個(gè)問題所使用的操作步驟。

算法的特性

正確的算法應(yīng)該滿足5個(gè)特性:有窮性確定性有效性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出

1.5*算法和結(jié)構(gòu)化(模塊化)程序設(shè)計(jì)(選講)2.算法的評(píng)價(jià)標(biāo)準(zhǔn)

正確的算法應(yīng)該滿足4個(gè)標(biāo)準(zhǔn):正確性一個(gè)好算法必須達(dá)到預(yù)先規(guī)定的功能和性能要求??勺x性算法應(yīng)當(dāng)思路清晰、層次分明、易讀易懂,易于調(diào)試程序、發(fā)現(xiàn)錯(cuò)誤。健壯性好的算法能夠?qū)φ`操作和非法的輸入做出適當(dāng)?shù)姆磻?yīng)和合理的處理。高效率和低存儲(chǔ)量高效率是指算法的執(zhí)行速度快、運(yùn)行時(shí)間短。低存儲(chǔ)量是指占用的存儲(chǔ)空間少。3.算法的表示流程圖符號(hào)用圖框表示各種類型的操作,用箭頭表示這些操作的順序。數(shù)據(jù)輸入框或輸出框數(shù)據(jù)處理框開始框或結(jié)束框判斷框流程線連接點(diǎn)開始定義標(biāo)識(shí)符x、y、sum為變量sum=x+y輸出sum的值結(jié)束x=4.6,y=7.85#include<stdio.h>main(){floatx,y,sum;x=4.6,y=7.85;sum=x+y;printf("x+y=%.2f",sum);

}例如N-S圖:去掉流程圖中的流線,把整個(gè)算法描述在一個(gè)矩形框中。順序

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論