




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計——2010年度春季學(xué)期CProgrammingLanguage教學(xué)安排適應(yīng)專業(yè):非計算機(jī)專業(yè)學(xué)時:48先修課程:計算機(jī)文化基礎(chǔ)教材:《C語言程序設(shè)計》,馬德駿等編著任課教師:鐘鈺2教學(xué)環(huán)節(jié)課前預(yù)習(xí)講授作業(yè)(上機(jī))答疑答疑時間:星期四 12:00~13:30地點(diǎn):鑒主-12樓-計算機(jī)技術(shù)研究所第6周到第18周考試3上機(jī)安排地點(diǎn):南湖計算中心機(jī)房時間:待定上機(jī)內(nèi)容:隨教學(xué)進(jìn)度根據(jù)配套的實(shí)驗書(上機(jī)調(diào)試每次課堂作業(yè))要求:所有作業(yè)必須獨(dú)立完成作業(yè)必須經(jīng)上機(jī)調(diào)試通過上機(jī)考勤3次缺席,按不及格處理發(fā)現(xiàn)上機(jī)時間玩游戲等,按缺席一次處理4實(shí)驗安排實(shí)驗一1機(jī)時TurboC集成環(huán)境的熟悉與使用實(shí)驗二1機(jī)時數(shù)據(jù)類型、運(yùn)算符和表達(dá)式實(shí)驗三2機(jī)時順序程序設(shè)計實(shí)驗四2機(jī)時選擇結(jié)構(gòu)程序設(shè)計實(shí)驗五4機(jī)時循環(huán)結(jié)構(gòu)程序設(shè)計實(shí)驗六4機(jī)時數(shù)組實(shí)驗七4機(jī)時函數(shù)實(shí)驗八2機(jī)時指針5課程要求課前請做好預(yù)習(xí)保持課堂安靜,頭腦清醒,思維活躍認(rèn)真、獨(dú)立、按時完成并提交作業(yè)重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時間6計算機(jī)技術(shù)研究所鐘鈺caddilester@C語言程序設(shè)計Lecture1
CProgrammingLanguage教學(xué)目的:掌握“文化基礎(chǔ)”中的相關(guān)概念,明確學(xué)習(xí)方法,了解C語言基本知識。教學(xué)要求:明確本課程的目標(biāo)及學(xué)習(xí)方法,復(fù)習(xí)“文化基礎(chǔ)”中與C語言相關(guān)的知識:數(shù)制、編碼、計算機(jī)系統(tǒng)組成,了解算法的概念及表示、C語言及標(biāo)識符、C語言基本結(jié)構(gòu)。學(xué)時:2學(xué)時81.1引言1.2算法和程序設(shè)計初步1.3C語言簡介1.4集成開發(fā)環(huán)境TurboC2.0簡介9數(shù)據(jù)非數(shù)值數(shù)據(jù):編碼數(shù)值數(shù)據(jù):二進(jìn)制定點(diǎn)法浮點(diǎn)法西文:ASCII漢字:國標(biāo)碼圖形:……信息與數(shù)據(jù):信息存在于自然界,有多種形式;數(shù)據(jù)是信息在計算機(jī)中的表示,以二進(jìn)制形式存在。原碼、反碼、補(bǔ)碼數(shù)制轉(zhuǎn)換10有符定點(diǎn)整數(shù)ds
dndn-1dn-2……..d1
↑↑
符號位
數(shù)值部分小數(shù)點(diǎn)無符定點(diǎn)整數(shù)dndn-1dn-2…………..d1
↑
數(shù)值部分小數(shù)點(diǎn)11數(shù)值數(shù)據(jù)的編碼方法:
前面討論的是數(shù)值數(shù)據(jù)在計算機(jī)中的存放格式,下面討論對數(shù)值數(shù)據(jù)進(jìn)行編碼的方法。
①原碼表示法:(假定用八個二進(jìn)制位表示)
a=+51(a)2=(+00110011)2
則[a]原=00110011a=-127(a)2=(-01111111)2則[a]原=11111111
原碼表示法在八個二進(jìn)制位中的表示范圍:
-127≤a≤+127[+0]原=00000000[-0]原=10000000
要點(diǎn):最高位作為符號位,若正數(shù),則最高位是0,若負(fù)數(shù),則最高位是1。
12②反碼表示法:(假定用八個二進(jìn)制位表示)通過一個二進(jìn)制整數(shù)的原碼得到所謂反碼:當(dāng)a為正數(shù)時,[a]
原=[a]
反
,當(dāng)a為負(fù)數(shù)時,則保持[a]
原的符號位不變,其余各個二進(jìn)制位逐位取反,即0變1,1變0。如:
a=+51[a]原=00110011則[a]
反
=[a]
原=00110011a=-51[a]原=10110011則[a]反=11001100
反碼表示法在八個二進(jìn)制位中的表示范圍:
-127≤a≤+127[+0]反=00000000[-0]反=11111111
要點(diǎn):由原碼得到反碼。若正數(shù),則反碼與原碼相同,若負(fù)數(shù),則最高位不變,其余逐位取反。
13③補(bǔ)碼表示法:(假定用八個二進(jìn)制位表示)通過一個二進(jìn)制整數(shù)的反碼得到所謂補(bǔ)碼:當(dāng)a≥0時,[a]
補(bǔ)=[a]
反
,當(dāng)a<0時,則[a]
補(bǔ)=[a]
反+1,如:
a=+51[a]原=00110011則[a]補(bǔ)=[a]
反
=[a]
原=00110011a=-51[a]原=10110011[a]反=11001100則[a]補(bǔ)=[a]
反+1
=11001101
補(bǔ)碼表示法在八個二進(jìn)制位中的表示范圍:
-128≤a≤+127[+0]補(bǔ)=00000000
[-128]補(bǔ)=10000000
要點(diǎn):由反碼得到補(bǔ)碼。若正數(shù),則反碼與補(bǔ)碼相同,若負(fù)數(shù),則補(bǔ)碼等于反碼加1。
在補(bǔ)碼表示法中,0的表示是唯一的,而最小值可達(dá)-128。14在上述介紹當(dāng)中我們是以八位二進(jìn)制位為例,同樣,我們可以將其推廣到十六位,三十二位等二進(jìn)制位中去,需要注意的是數(shù)值范圍將發(fā)生變化。
思考:以上介紹的原碼、反碼、補(bǔ)碼都是有符定點(diǎn)整數(shù)的編碼方式,若以八位二進(jìn)制位表示無符定點(diǎn)整數(shù),則其范圍是0到255。
在TurboC中:
有符整數(shù)是按有符定點(diǎn)整數(shù)格式的補(bǔ)碼表示的,
無符整數(shù)是按無符定點(diǎn)整數(shù)格式表示的。15什么是程序設(shè)計語言?
自然語言,如漢語、英語等,隨人類發(fā)展進(jìn)步而自然形成的,人之間交流信息的工具和媒介。程序語言是一類人造語言,“編程語言”、“程序語言”或“語言”。描述計算用的工具。
程序語言是人與計算機(jī)“交流”的媒介:人能用程序語言描述計算過程,計算機(jī)可接受這種描述,完成所需計算。人用程序語言寫程序,指揮計算機(jī)完成各種工作。一、程序設(shè)計語言概述161、機(jī)器語言:計算機(jī)可以直接識別和執(zhí)行的二進(jìn)制語言。2、匯編語言:用“助記符”來表示機(jī)器指令。
如:ADDA,BSUBA,B它必須經(jīng)過一個叫匯編程序的系統(tǒng)軟件翻譯成機(jī)器語言程序(即目標(biāo)程序)后才能執(zhí)行。3、算法語言:亦稱為面向過程的程序設(shè)計語言,不依賴于機(jī)器。計算機(jī)也不能直接執(zhí)行算法語言描述的源程序,必須先經(jīng)過編譯程序編譯成目標(biāo)程序后,才能由計算機(jī)執(zhí)行。二、程序設(shè)計語言的發(fā)展簡史174、面向任務(wù)的程序設(shè)計語言:是非過程化的語言,不需要知道問題是如何求解的,只需描述需求解的問題是什么。數(shù)據(jù)庫操作語言便是。5、面向?qū)ο蟮某绦蛟O(shè)計語言:認(rèn)為系統(tǒng)是由許多對象組成的,對象通過消息相互聯(lián)系和相互作用,從而完成系統(tǒng)的功能。如C++,設(shè)計的程序更易懂,更適合更大規(guī)模的程序開發(fā)。18新語言不斷提出,老語言被淘汰或改變推動程序語言發(fā)展的主要原因:1)編程中取得的新認(rèn)識;隨著程序設(shè)計實(shí)踐,人們對程序該怎樣做,怎樣描述等不斷產(chǎn)生新認(rèn)識。2)計算機(jī)應(yīng)用發(fā)展。應(yīng)用領(lǐng)域不斷提出新要求。新認(rèn)識和要求促使人們改造已有語言,提出新語言 目前使用較廣的語言包括FORTRAN、C、C++、PASCAL、Ada、Java等。“常規(guī)語言”。
非常規(guī)語言:LISP、Smalltalk、PROLOG、ML等。程序語言發(fā)展現(xiàn)狀19三、翻譯方式高級語言源程序目標(biāo)程序(code)編譯方式解釋方式“翻譯”20用高級語言書寫的源程序機(jī)器指令程序函數(shù)庫編譯程序編譯用高級語言書寫的源程序執(zhí)行結(jié)果解釋程序函數(shù)庫解釋并執(zhí)行21用計算機(jī)解決問題的基本過程:一、程序設(shè)計技術(shù)分析問題確定解決問題方案確定實(shí)現(xiàn)算法編寫程序運(yùn)行程序整理結(jié)果程序設(shè)計的核心任務(wù):設(shè)計算法程序=算法+數(shù)據(jù)結(jié)構(gòu)22
算法:為解決特定問題所使用的確定的且有限的步驟或方案。
特點(diǎn):
有窮性確定性有輸入有輸出有效性23常用的算法描述方法:用自然語言表示用偽碼表示用傳統(tǒng)流程圖用N_S流程圖(教材P6)二、算法的表示結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu):順序、選擇、循環(huán)基本原則:所有結(jié)構(gòu)都可以由這三種基本結(jié)構(gòu)組成、單入口、單出口、限制使用GOTO語句24
[例1.1]求一個班學(xué)生的平均成績。設(shè)A等(85分)12人,B等(70分)16人,C等(60分)6人,D等(按50分計算)5人。三、簡單算法舉例開始A=12B=16C=6D=5SUM=85×A+70×B+C×60+D×50AVER=SUM/(A+B+C+D)輸出AVER的值結(jié)束AA25[例1.2]輸出一個數(shù)的絕對值。輸入XX>=0嗎?NY輸出-X輸出X開始輸入XX>=0嗎?YN結(jié)束輸出-X輸出X26
[例1.3]輸入10個數(shù),把其中的正數(shù)輸出。開始N=0N<10嗎?X>=0嗎?N=N+1輸入
XY結(jié)束NYN輸出X27[例1.4]輸入10個數(shù),求它們的平均值。N=0,SUM=0當(dāng)N<10輸入XSUM=SUM+XN=N+1AVER=SUM/10輸出AVER的值28
[例1.5]輸入50個學(xué)生的成績,統(tǒng)計出得優(yōu)秀的人數(shù)。N=0,M=0當(dāng)N<50輸入一個學(xué)生成績G
G>90
YM=M+1N=N+1N輸出M的值291、對一個班的40個學(xué)生逐個檢查,將身高1.60米以上的學(xué)生挑出來。2、求Y的值,X由用戶給出-1(x<0)Y=0(x=0)1(x>0)3、求1+3+5+..99。4、根據(jù)輸入的年月,輸出此月份對應(yīng)的天數(shù)課堂練習(xí)
N=0當(dāng)N<40輸入一個學(xué)生身高HH>160Y輸出姓名N=N+1N輸入XX<0?YY=-1NX=0?NYY=0Y=1N=1,SUM=0當(dāng)N<=99SUM=SUM+NN=N+2輸出SUM的值30開始輸入年月Y是閏年M=2day=30day=31day=28day=29M=1、3、5…12結(jié)束YNYNYN31產(chǎn)生背景產(chǎn)生過程時間:1972~1973地點(diǎn):美國貝爾實(shí)驗室目的:UNIX操作系統(tǒng)設(shè)計人: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)的ANSIC一、C語言發(fā)展歷史32語言簡潔、緊湊、靈活運(yùn)算符和數(shù)據(jù)類型豐富程序設(shè)計結(jié)構(gòu)化、模塊化生成目標(biāo)代碼質(zhì)量高可移植性好二、C語言的特點(diǎn)>>>>>C語言有很多種,如:MicrosoftC、TurboC、QuickC、BorlandC++、VisualC等。本課程通過TurboC的環(huán)境來學(xué)習(xí)C語言。
33/*example1.1ThefirstCProgram*/#include<stdio.h>main(){
printf(“Hello,World!”);}三、C程序格式和結(jié)構(gòu)特點(diǎn)例1.1第一個程序Hello,World!輸出:Hello,World!
注釋
編譯預(yù)處理
函數(shù)
語句34
參照例題,編寫一個C程序,在屏幕上輸出以下信息:**************Verygood!**************35例1.2/*example1.2calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){
int
a,b,sum;
a=10;
b=24;
sum=add(a,b);
printf(”sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/int
add(int
x,int
y){
int
z;
z=x+y;
return(z);}運(yùn)行結(jié)果:sum=34函數(shù)語句預(yù)處理命令注釋36格式特點(diǎn)習(xí)慣用小寫字母,大小寫敏感不使用行號,無程序行概念可使用空行和空格常用鋸齒形書寫格式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);}37結(jié)構(gòu)特點(diǎn)函數(shù)與主函數(shù)程序由一個或多個函數(shù)組成必須有且只能有一個主函數(shù)main()程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。程序語句C程序由語句組成用“;”作為語句終止符注釋/**/為注釋,不能嵌套不產(chǎn)生編譯代碼例:/*Thisisthemain/*ofexample1.1*/*/
非法編譯預(yù)處理命令38scanf是C語言的標(biāo)準(zhǔn)輸入函數(shù);“%f”是格式輸入符號,表示用戶輸入的數(shù)據(jù)應(yīng)該是實(shí)數(shù),“&”的含義是“取地址”。調(diào)用average函數(shù),求出平均值并賦值給變量aver。return語句將aver1的值返回給主調(diào)函數(shù)main,返回值是通過函數(shù)名average帶回到main的調(diào)用處例1.3從鍵盤上輸入三個數(shù),求該三個數(shù)的平均值floataverage(floata1,floatb1,floatc1){floataver1;aver1=(a1+b1+c1)/3;return(aver1);}main(){floata,b,c,aver;
printf("pleaseinputa,b,c:");
scanf("%f%f%f",&a,&b,&c);
aver=average(a,b,c);
printf("theaverageis%4.1f",aver);}四、簡單的C程序介紹39
源程序不能直接執(zhí)行。為完成C程序描述的計算,必須先把C程序轉(zhuǎn)換成計算機(jī)可執(zhí)行的程序。這個轉(zhuǎn)換稱為C程序的加工,是C語言系統(tǒng)的主要功能。程序加工通常分兩步:編譯:編譯程序處理源程序,生成相應(yīng)機(jī)器語言目標(biāo)模塊(目標(biāo)文件)。目標(biāo)模塊不能執(zhí)行,其中缺少必要的C程序運(yùn)行系統(tǒng)和庫提供的功能。連接:連接程序把目標(biāo)模塊與運(yùn)行系統(tǒng)、庫功能模塊組合起來,構(gòu)成完整的可執(zhí)行程序。一、在TurboC環(huán)境下建立及運(yùn)行文件源程序目標(biāo)程序可執(zhí)行程序內(nèi)容程序設(shè)計語言機(jī)器語言機(jī)器語言可執(zhí)行不可以不可以可以文件名后綴.c.obj.exe40C源程序目標(biāo)程序可執(zhí)行程序C語言函數(shù)庫編譯連接C源程序的加工過程41FILE----NEWFILE----WRITETOFILE----SAVE(F2)FILE----LOAD(F3)COMPILE----MakeEXEfile(F9)RUN----RUN(Ctrl+F9)RUN---USERSCREEN(ALT+F5)編寫TurboC新程序42二、TurboC菜單的功能和使用方法使用Alt+首字母(F10)激活菜單使用光標(biāo)移動鍵選擇命令按回車鍵確定43File(文件)菜單
Load(F3):打開文件。Pick(Alt+F3):列出最后裝入的8個文件名,可以從文件列表中選擇所需文件。New:新建文件。Save(F2):保存文件。Write:另存為。Directory:顯示當(dāng)前工作目錄的文件列表Changedir:指定當(dāng)前目錄,用于保存用戶文件。OSshell進(jìn)入操作系統(tǒng)環(huán)境,并顯示:
TypeExittoreturntoTurboCQuit(Alt+X)退出TurboC44Run(運(yùn)行)菜單
Run(Ctrl+F9):生成編譯文件OBJ;生成可執(zhí)行文件EXE;并運(yùn)行當(dāng)前程序。
Programreset(Ctrl+F2);程序重啟,終止當(dāng)前調(diào)試過程,回到初始狀態(tài)。
Gotocursor(F4):使程序運(yùn)行到當(dāng)前光標(biāo)所在的行。
Traceinto(F7):跟蹤,單步執(zhí)行。
Stepover(F8):跟蹤,單步執(zhí)行。但不進(jìn)入被調(diào)函數(shù)內(nèi)跟蹤。
UserScreen(Alt+F5)顯示運(yùn)行結(jié)果,按任意鍵返回。45Compile(編譯)菜單
CompiletoOBJ:生成目標(biāo)文件(OBJ文件)
MakeEXEfile:生成可執(zhí)行文件(EXE文件)
LinkEXEfile:將當(dāng)前的OBJ文件和庫文件連接生成EXE文件
Buildall:重新編譯連接Project中的全部程序,生成EXE文件。
PrimaryCfile:指定文件作為編譯對象,以替代編輯窗口中的文件。
Getinto:在彈出的窗口中顯示有關(guān)文件的信息。
46Project(項目)菜單
Projectname:指定項目文件名(PRJ文件)Breakmakeon:指定終止編譯的條件。有四個選項:Warning編譯中遇警告停止Error編譯中遇錯誤停止Fatal編譯后發(fā)現(xiàn)錯誤停止Link只生成OBJ文件,不進(jìn)行連接(不生成EXE文件)Autodependencies:指定若程序已經(jīng)修改,則在運(yùn)行前是否重新編譯連接。(Off或On)Clearproject:清除當(dāng)前項目文件Removemessages:刪除信息窗口的錯誤提示47Options(選項)菜單
Compiler:指定編譯選項Linker:指定連接選項Environment:指定工作環(huán)境Directories:是改變工作路徑Arguments:指定參數(shù)SaveOptions:保存選項RetrieveOptions:從環(huán)境文件中恢復(fù)選項48Debug(調(diào)試)菜單
Evaluate:計算變量或表達(dá)式的值,顯示結(jié)果。Callstack:當(dāng)調(diào)試程序調(diào)用多級函數(shù)時,顯示調(diào)用棧。Findfunction:查找函數(shù),在編輯窗口顯示被查找的函數(shù)的源程序。Refreshdisplay:刷新屏幕。Displayswapping:指定在調(diào)試程序時若程序產(chǎn)生輸出是否切換到用戶屏幕。Sourcedebugging:指定進(jìn)行源程序調(diào)試的選項。49Break(中斷)菜單
Addwatch:增加監(jiān)視表達(dá)式Deletewatch:刪除指定的監(jiān)視表達(dá)式Editwatch:編輯監(jiān)視表達(dá)式Removeallwatches:刪除全部監(jiān)視表達(dá)式Togglebreakpoint:設(shè)置/取消程序調(diào)試時的中斷點(diǎn)Clearallbreakpoints:清除全部中斷點(diǎn)Viewnextbreakpoint:將光標(biāo)定位在下一個中斷點(diǎn)。50與數(shù)據(jù)類型有關(guān)的:
char int float double signed long void struct union short
typedef
enum
sizeof unsigned 與存儲類別有關(guān)的:
auto
extern
register
static與程序控制結(jié)構(gòu)有關(guān)的:
do while for if else switch case default goto continue break return
(由系統(tǒng)定義,不能重作其它定義)32個關(guān)鍵字:<51if()~else~for()~while()~do~while()continuebreakswitchgotoreturn9種控制語句:<52C語言 Pascal語言
{} BEGIN….END if(e)s; IF(e)THENs inti; VARi:INTEGER
inta[10]; VARa:ARRAY[1..10]OFINTEGERintf(); FUNCTIONf():INTEGER
int*p; VARp:^IN
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南都市職業(yè)學(xué)院《大學(xué)音樂基礎(chǔ)與鑒賞》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安鐵路職業(yè)技術(shù)學(xué)院《城市生態(tài)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 土方承包合同書
- 公對公借款合同擔(dān)保人
- 公益宣傳片電視播出合作合同
- 房屋租賃轉(zhuǎn)讓合同
- 房地產(chǎn)營銷代理合同
- 外墻翻新施工合同書
- 勞動爭議勞務(wù)派遣合同簽訂
- 學(xué)校教職工勞動合同
- 2025年4月版安全法律法規(guī)標(biāo)準(zhǔn)文件清單
- 2025年合肥高新國有房屋租賃經(jīng)營有限公司社會招聘14人筆試參考題庫附帶答案詳解
- 品管圈PDCA改善案例-降低住院患者跌倒發(fā)生率
- 山東省自然科學(xué)基金申報書-面上項目
- 110KV變電所一次部分設(shè)計
- 鋼結(jié)構(gòu)安裝工程檢驗批驗收記錄表(共14頁)
- 蘇教版五下數(shù)學(xué)小數(shù)報全套高清晰含答案
- 電鍍污泥與粘土混合制磚重金屬浸出毒性實(shí)驗
- 家庭《弟子規(guī)》力行表
- 幼兒園食堂人員考試及答案
- 水利部《水利工程維修養(yǎng)護(hù)定額標(biāo)準(zhǔn)》(試點(diǎn))
評論
0/150
提交評論