版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第二講:程序設(shè)計(jì)基礎(chǔ)(2)林夢香北京航空航天大學(xué)2010年9月計(jì)算機(jī)軟件技術(shù)基礎(chǔ)(1)數(shù)據(jù)在計(jì)算機(jī)中如何表示?如何存儲(chǔ)?(2)對數(shù)據(jù)實(shí)施哪些操作?如何控制?(3)數(shù)據(jù)如何輸入到計(jì)算機(jī)?(4)計(jì)算結(jié)果(數(shù)據(jù))如何輸出和保存?程序設(shè)計(jì)需要確定:輸入設(shè)備(鼠標(biāo)、鍵盤等) 輸出設(shè)備(顯示器、打印機(jī)等)磁盤 網(wǎng)絡(luò)I/O總線主存儲(chǔ)器程序計(jì)數(shù)器(PC)算術(shù)邏輯單元(ALU)寄存器堆CPU存儲(chǔ)器總線I/O設(shè)備計(jì)算機(jī)通過I/O設(shè)備進(jìn)行數(shù)據(jù)的輸入輸出計(jì)算機(jī)的外部設(shè)備 輸入設(shè)備: 輸入命令和數(shù)據(jù); 輸出設(shè)備: 顯示程序的運(yùn)行結(jié)果; 磁盤設(shè)備: 長期存放程序文件和數(shù)據(jù)文件; 文件輸入/輸出設(shè)備和外部存儲(chǔ)設(shè)備的物理特征
2、完全不同!C語言中把所有的I/O設(shè)備都看作“文件”,用同一批函數(shù)對它們進(jìn)行輸入/輸出操作。 輸入設(shè)備輸入設(shè)備文件 輸出設(shè)備輸出設(shè)備文件 外部存儲(chǔ)設(shè)備程序文件、數(shù)據(jù)文件流C語言通過一個(gè)稱為“流”的邏輯設(shè)備間接操作文件;流實(shí)際是一個(gè)FILE類型的變量, FILE類型是一個(gè)結(jié)構(gòu)類型,定義在stdio.h中。程序需要與文件交換數(shù)據(jù)時(shí):先在程序與文件之間建立一個(gè)流(用fopen函數(shù));用標(biāo)準(zhǔn)輸入/輸出函數(shù),通過流讀/寫文件;數(shù)據(jù)交換結(jié)束后,撤銷流(用fclose函數(shù))。文件操作打開/關(guān)閉文件的打開(建立流): FILE *fp; fp= fopen(char * filename,char * mode
3、);文件的關(guān)閉(撤銷流): int fclose(FILE *fp);文件操作讀/寫函數(shù)字符的輸入輸出函數(shù) int getc(FILE *fp); int putc(int c,FILE *fp);字符串的輸入輸出函數(shù): char fgets(char *s,int n,FILE *fp) ; int fputs(char *s,FILE *fp);格式化輸入/輸出函數(shù): fscanf(FILE *fp,”輸入格式”,輸入項(xiàng)) ; fprintf(FILE *fp, ”輸出格式”,輸出項(xiàng));C程序運(yùn)行時(shí)自動(dòng)建立3個(gè)流:1、 stdin,與鍵盤聯(lián)系;2、 stdout,與顯示屏幕聯(lián)系;3、 st
4、derr,與顯示屏幕聯(lián)系。特點(diǎn): 這些流由系統(tǒng)自動(dòng)將其打開、關(guān)閉,程序不需管。標(biāo)準(zhǔn)設(shè)備文件標(biāo)準(zhǔn)設(shè)備文件的讀/寫字符輸入輸出函數(shù): getchar(), putchar()字符串的輸入輸出函數(shù): gets(), puts()格式化輸入/輸出函數(shù): scanf(), printf() 要求: 從鍵盤輸入10個(gè)數(shù)字,將這10個(gè)數(shù)字及其平均值保存到磁盤文件data.txt中。文件操作:例一#include int main(void) FILE *fp; int var,i,sum=0; float average; fp=fopen(“data.txt”, “ w”); for(i=0;i10;i+
5、) printf(“input number :&d”,i+1); scanf(“%d”,&var); sum=sum+var; fprintf(fp, “ %dn”,var); average=(float)sum/10.0; fprintf(fp, “ The average is %6.2f”,average); fclose(fp);要求: 從鍵盤輸入一些字符,逐個(gè)把它們保存到磁盤文件中,輸入結(jié)束標(biāo)志為#。文件操作:例二#include int main(void) FILE *fp; char ch,filename10; scanf(%s,filename); if(fp=fope
6、n(filename,w)=NULL) printf(cannot open filen); exit(0); ch=getchar(); ch=getchar(); while(ch!=#) fputc(ch,fp); ch=getchar(); fclose(fp);程序設(shè)計(jì)要點(diǎn)(二): 化復(fù)雜為簡單例: 設(shè)計(jì)一程序,要求能夠查詢學(xué)生的成績、計(jì)算平均成績和總學(xué)分、按照總學(xué)分排序。分析: 程序的基本功能: 1、成績的輸入(存入文件); 2、成績的查詢(按學(xué)號); 3、計(jì)算平均成績和總學(xué)分; 4、按總學(xué)分排序; 5、查詢結(jié)果的輸出。模塊化程序設(shè)計(jì)思想: 逐步分解、分而治之 優(yōu)點(diǎn): 每個(gè)模塊可以
7、獨(dú)立設(shè)計(jì)和實(shí)現(xiàn),利于提高效率、隔離錯(cuò)誤和維護(hù)模塊化程序設(shè)計(jì)程序組織C語言中用函數(shù)組織程序,一個(gè)C程序由一個(gè)主函數(shù)和若干個(gè)函數(shù)構(gòu)成。主函數(shù)(main)是程序開始執(zhí)行的入口;C函數(shù)是一個(gè)獨(dú)立完成某個(gè)功能的語句塊;函數(shù)與函數(shù)之間通過輸入?yún)?shù)和返回值(輸出)來聯(lián)系;函數(shù)的定義函數(shù)定義的格式為: 返回類型 函數(shù)名(參數(shù)表) 函數(shù)體;用戶自定義函數(shù),則必須在源代碼中說明函數(shù)原型,函數(shù)原型可以只包含參數(shù)的類型;標(biāo)準(zhǔn)庫函數(shù)的函數(shù)原型都在頭文件中提供,程序可以用#include指令包含這些原型文件;注意:C不允許函數(shù)定義嵌套,即在函數(shù)定義中再定義一個(gè)函數(shù)是非法的。函數(shù)聲明和調(diào)用C語言中,一個(gè)函數(shù)必須在函數(shù)聲明(
8、函數(shù)原型)后才能被調(diào)用,函數(shù)聲明的作用是告知編譯器:函數(shù)值類型、參數(shù)個(gè)數(shù)及類型,以便編譯器對函數(shù)調(diào)用進(jìn)行正確性檢查。函數(shù)調(diào)用: 函數(shù)名(實(shí)參1,實(shí)參2,)函數(shù)定義、聲明和調(diào)用int plus(int,int);int main(void) int a,b,c; a=4; b=5; c=plus(a,b); printf(“a+b=%d”,c); int plus(int x,int y) int z; z=x+y; return(z); 問題一:函數(shù)間的參數(shù)傳遞1、使用全局變量2、使用參數(shù)(形參-實(shí)參) 按值傳遞 實(shí)參將數(shù)據(jù)復(fù)制到形參; 每次只傳遞一個(gè)數(shù)據(jù)按地址傳遞 將實(shí)參的存儲(chǔ)地址傳遞到形參
9、(指針變量); 每次可傳遞多個(gè)數(shù)據(jù)。全局變量的例子int add1,add2;int main(void) int c; add1=4; add2=5; c=plus(); printf(“add1+add2=%d”,c);int plus() int z; z=add1+add2; return(z);傳遞值的例子int plus(int, int);int main(void) int a,b,c; a=4; b=5; c=plus(a,b); printf(“1. a+b=%d”,c); printf(“2. a+b=%d”,a+b); int plus(int x,int y) int
10、 z; z=x+y; x=8; y=10; return(z); 傳遞地址的例子int plus(int *, int *);int main(void) int a,b,c; a=4; b=5; c=plus(&a,&b); printf(“1. a+b=%d”,c); printf(“2. a+b=%d”,a+b); int plus(int *px,int *py) int z; z=*px+*py; *px=8; *py=10; return(z); 問題二:變量生存期和作用域程序運(yùn)行時(shí),內(nèi)存被分為4個(gè)部分:代碼區(qū)、 全局?jǐn)?shù)據(jù)區(qū)、 堆區(qū)、 棧區(qū)。變量的存儲(chǔ)類型: static: 全局?jǐn)?shù)
11、據(jù)區(qū) auto : 棧區(qū) register: 通用寄存器變量生存期:程序運(yùn)行期間變量存在的時(shí)間。與變量存儲(chǔ)類型和聲明位置有關(guān): 1、靜態(tài)生命期:變量被分配在全局?jǐn)?shù)據(jù)區(qū)。其生存期與程序的運(yùn)行期相同。如全局變量、靜態(tài)全局變量、靜態(tài)局部變量。 2、局部生命期:變量分配在棧區(qū)。其生存期與函數(shù)運(yùn)行期相同。 3、動(dòng)態(tài)生命期:變量分配在堆區(qū)。其生存期由程序中特定的函數(shù)調(diào)用來調(diào)用和釋放。變量的生存期變量的作用域變量在源程序中的有效范圍,與變量聲明的位置有關(guān)。全局變量:在函數(shù)之外聲明的變量稱為全局變量,可以為本文件中其它函數(shù)所共用。全局變量存放在全局?jǐn)?shù)據(jù)區(qū)。在聲明全局變量時(shí),若未專門初始化,則編譯器將其初始化為
12、0。局部變量:在一個(gè)函數(shù)內(nèi)部聲明的變量是局部變量,它只在本函數(shù)范圍內(nèi)是可見的。局部變量存放在棧區(qū)。如果局部變量不被顯式初始化,則其內(nèi)容是不可預(yù)料的。int plus(void);int add1,add2;int main(void) int c; add1=4; add2=5; c=plus(); printf(“add1+add2=%d”,c);int plus() int z; z=add1+add2; return(z);小 結(jié)程序(計(jì)算)的本質(zhì): 數(shù)據(jù)的輸入、操作、輸出 程序(函數(shù))的結(jié)構(gòu) (輸入/輸出、數(shù)據(jù)處理)變量是程序的核心變量的本質(zhì);變量的數(shù)據(jù)類型(普通變量(基礎(chǔ)類型 變量、聚合類型變量)、指針變量);程序運(yùn)行結(jié)束后,變量中保存的數(shù)據(jù)隨之丟失;需長期保存的數(shù)據(jù)應(yīng)保存在文件中,存儲(chǔ)在外部存儲(chǔ)設(shè)備(磁盤等)。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆河北省灤縣實(shí)驗(yàn)中學(xué)生物高三第一學(xué)期期末經(jīng)典試題含解析
- 內(nèi)科科普講座
- 彩鋼瓦頂棚施工方案(3篇)
- 田徑館管理制度范文(3篇)
- 移動(dòng)生物安全室管理制度(3篇)
- 紡織助劑樣品閉環(huán)管理制度(3篇)
- 蔬菜制品分裝管理制度(3篇)
- 退役軍人之家管理制度(3篇)
- 鉆井隊(duì)考勤管理制度(3篇)
- 納米技術(shù)與微機(jī)械
- 大健康養(yǎng)肝護(hù)肝針專題課件
- 物流公司托板管理制度
- 道路高程測量成果記錄表-自動(dòng)計(jì)算
- 關(guān)于醫(yī)院“十五五”發(fā)展規(guī)劃(2026-2030)
- DB31-T 1587-2025 城市軌道交通智能化運(yùn)營技術(shù)規(guī)范
- 醫(yī)療護(hù)理操作評分細(xì)則
- 自考-經(jīng)濟(jì)思想史知識點(diǎn)大全
- 冬季駕駛車輛安全培訓(xùn)
- 2024年山東省胸痛中心質(zhì)控報(bào)告
- 醫(yī)學(xué)師承出師考核申請表
- 晚期癌癥疼痛控制課件
評論
0/150
提交評論