課件計(jì)算概論Lecture 7_第1頁(yè)
課件計(jì)算概論Lecture 7_第2頁(yè)
課件計(jì)算概論Lecture 7_第3頁(yè)
課件計(jì)算概論Lecture 7_第4頁(yè)
課件計(jì)算概論Lecture 7_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算概論 (Introduction to Computing),主講人:馬思偉 北京大學(xué)數(shù)字媒體研究所 ,第七講 程序結(jié)構(gòu),復(fù)習(xí),程序的基本框架 編譯預(yù)處理: #include, #define 自定義函數(shù)的聲明 主函數(shù):main() 自定義函數(shù)的定義 程序的基本元素 標(biāo)識(shí)符和關(guān)鍵字 標(biāo)識(shí)符是以字母,下劃線( _ ) 開(kāi)始的一個(gè)字符序列,后面可以跟字母,下劃線,數(shù)字 關(guān)鍵字:具有專門(mén)的意義和用途,不能當(dāng)作一般的標(biāo)識(shí)符使用 數(shù)據(jù)類型、常量和變量 基本數(shù)據(jù)類型:整型、短整型、長(zhǎng)整型、單精度浮點(diǎn)型、雙精度浮點(diǎn)型、字符型、空類型 常量:直接使用;#define定義 變量:內(nèi)存空間 運(yùn)算符和表達(dá)式 算

2、術(shù)、關(guān)系、邏輯、位運(yùn)算、賦值、條件運(yùn)算 語(yǔ)句和控制流,數(shù)據(jù)類型、常量和變量,表達(dá)式中的數(shù)據(jù)類型轉(zhuǎn)換,兩種方式 強(qiáng)制轉(zhuǎn)換,使用 (DataType) 強(qiáng)制轉(zhuǎn)換,例 int a, b=1; float c=4.3; a = b + (int) c; 賦值表達(dá)式也會(huì)進(jìn)行強(qiáng)制轉(zhuǎn)換 a = b + c; 自動(dòng)轉(zhuǎn)換,表達(dá)式運(yùn)算中低精度變量自動(dòng)向高精度轉(zhuǎn)換 區(qū)別上面的a = b + (int) c;與a = b + c; 區(qū)別 c = 5/2; 與 c = 5.0/2; a = 5.0/2;與a = 5/2;,字符數(shù)據(jù)類型,字符類型數(shù)據(jù)與整數(shù)(0-255), 區(qū)別 char c1 = 0;賦初值為字符0 c

3、har c1= 0; 字符類型數(shù)據(jù)的運(yùn)算 char c2 = A; printf(“%c”, c2+1); 特殊類型字符 反斜線(Backslash) 退格(Backspace)b 回車(Carriage return)r 進(jìn)紙符(Form feed)f 制表符(Form feed)t 換行(New line)n 單引號(hào)(Single quote),自加自減運(yùn)算,區(qū)別+在變量前后 j = +i; 表示先將i的值加1,再賦給j,如果i的值是5,則j的值是6。(先給變量加1,再使用變量) j = i+; 表示先將i的值賦給j,再把i的值加1,如果i的值是5,則j的值是5。(先使用變量,再給變量加1

4、),課堂練習(xí),以下程序的輸出結(jié)果是( )。 main( ) int a=4,b=5; float c= a/b; printf(“%fn”,c); A 不確定值 B 0.8 C 0.000000 D 0 以下程序的輸出結(jié)果是( )。 main( ) int a=4,b=5; float c= (float)a/b; printf(“%fn”,c); A 不確定值 B 0.800000 C 0.000000 D 0 7. 當(dāng)執(zhí)行完以下語(yǔ)句后,變量a的值為( ),d的值為( ),e的值為( )。 a=6; b=+a; c=-a; d=a+; e=a-; 答案:C; B; 6, 6, 7,運(yùn)算符與表

5、達(dá)式,關(guān)系表達(dá)式:使用關(guān)系運(yùn)算符和括號(hào)將操作數(shù)連接起來(lái)的表達(dá)式稱為關(guān)系表達(dá)式: (大于),=(大于等于), y,(x+1) = 4,(-3+a-b*5) 1) if (a,運(yùn)算符優(yōu)先級(jí),最高優(yōu)先級(jí): ,-, , () /左右結(jié)合 單目運(yùn)算:-, , !, +, -, !(), sizeof /右結(jié)合 算術(shù)乘除運(yùn)算: *, /, % /左結(jié)合 算術(shù)加減運(yùn)算:+, - /左結(jié)合 移位運(yùn)算: , , = /左結(jié)合 相等關(guān)系運(yùn)算:=, != /左結(jié)合 按位與: 賦值語(yǔ)句,如:x = y + z; 函數(shù)調(diào)用語(yǔ)句,如:scanf(“%d”, 程序控制語(yǔ)句 空語(yǔ)句 ,輸入輸出,在標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù)(stdi

6、o.h)中,提供了通過(guò)標(biāo)準(zhǔn)輸入輸出設(shè)備(鍵盤(pán)和顯示器)進(jìn)行數(shù)據(jù)的輸入輸出函數(shù): 單個(gè)字符輸入:int getchar(),返回的是字符的ASCII碼 單個(gè)字符輸出:int putchar(int) 格式化輸入:int scanf(constrol_string, arg1, arg2, ) 格式化輸出:int printf(constrol_string, arg1, arg2, ),輸入輸出,getchar(), putchar(),輸入輸出,scanf() 和printf()的基本格式控制符有: %d:整數(shù)(int) %ld:整數(shù)(long) %hd:整數(shù)(short) %c:字符(cha

7、r) %s:字符串(字符數(shù)組) %f:?jiǎn)尉雀↑c(diǎn)數(shù)(float) %lf:雙精度浮點(diǎn)數(shù)(double),輸入輸出,在scanf()中的格式控制中,還可以控制多個(gè)輸入數(shù)據(jù)之間的分隔標(biāo)記,如:scanf(“%c,%d,%f”, 如果n的值為10,則輸出效果為,程序結(jié)構(gòu),順序程序結(jié)構(gòu):程序順序地執(zhí)行語(yǔ)句,語(yǔ)句出現(xiàn)的順序就是其執(zhí)行順序 循環(huán)程序結(jié)構(gòu):程序反復(fù)執(zhí)行某些語(yǔ)句 分支程序結(jié)構(gòu):控制多路選一的分支情況,三種結(jié)構(gòu)語(yǔ)句,程序控制語(yǔ)句及其控制說(shuō)明: 分支控制語(yǔ)句:if-else, switch-case/default 循環(huán)控制語(yǔ)句:while, do-while, for 此外,還有一些與程序轉(zhuǎn)移控

8、制有關(guān)的語(yǔ)句:break, continue, return 用大括號(hào)()把修飾性描述和語(yǔ)句組合在一起的,稱為復(fù)合語(yǔ)句。復(fù)合語(yǔ)句在語(yǔ)法上和簡(jiǎn)單語(yǔ)句是一樣的(代碼段:也包括不含有修飾性描述的情況),分支控制if-else,兩種形式 if (表達(dá)式) 語(yǔ)句/語(yǔ)句組 if (表達(dá)式) 語(yǔ)句/語(yǔ)句組 else 語(yǔ)句/語(yǔ)句組2 例 if (i0) y=x/i; else x=i; y=-x; ,分支控制if-else,嵌套if-else, 最近鄰原則-else與最近的if語(yǔ)句共同構(gòu)成一句 if (i0) if (ji) x=j; else x=i; 區(qū)別 if (i0) if (ji) x=j; els

9、e x=i;,分支控制if-else,分支控制if-else,分支控制if-else,分支控制if-else,多分支語(yǔ)句switch-case/default,另一類問(wèn)題,通常我們需要將一個(gè)表達(dá)式的值與多個(gè)不同的常量按順序進(jìn)行比較,選擇其中的匹配項(xiàng),執(zhí)行相應(yīng)部分的語(yǔ)句。這就是多分支語(yǔ)句。,多分支語(yǔ)句switch-case/default,表達(dá)式expression的值類型必須是整型或字符型:char, short, int, long case子句中的值valueI也必須是整型或字符型常量,而且所有case子句中的值應(yīng)是不同的 可以有任意數(shù)目的case條件,但不能有兩個(gè)完全相同的case表達(dá)式

10、,多分支語(yǔ)句switch-case/default,執(zhí)行switch語(yǔ)句時(shí),首先對(duì)表達(dá)式expression求值,然后與每個(gè)case子句中的常量值比較,若找到匹配的常量(相等),程序就執(zhí)行該分支的語(yǔ)句,直到整個(gè)switch語(yǔ)句結(jié)束,或者遇到一個(gè)break語(yǔ)句 如果所有條件都不滿足,且有default語(yǔ)句,則從default語(yǔ)句開(kāi)始執(zhí)行 default語(yǔ)句只能有一個(gè),但不必一定在最后,多分支語(yǔ)句switch-case/default,例 switch (c) case A: capa+; case a: lettera+; default: total+; ,例 switch (i) case

11、-1: n+; break; case 0: z+; break; case 1: p+; break; ,例 case a: case b: case c: case d: case e: case f: x+; 另: if (c=a) ,多分支語(yǔ)句switch-case/default,課堂練習(xí),1以下程序的輸出結(jié)果是( )。 void main() int k1=1,k2=2,k3=3,x=15; if(!k1) x-; else if(k2) if(k3) x=4; else x=3; printf(“x=%dn”,x); A x=4 B x=15 C x=14 D x=3 答案 A,

12、程序設(shè)計(jì)一般過(guò)程,例題 海水以半圓形侵蝕陸地,每年 50平方公里的速度,第一年開(kāi)始 在(0, 0)點(diǎn),問(wèn)給定坐標(biāo)(x, y), 第 幾年該點(diǎn)將被侵蝕,(x, y),程序設(shè)計(jì)一般過(guò)程,問(wèn)題分析 該點(diǎn)在第n年被侵蝕,表示以從原點(diǎn)到該點(diǎn) 間距離為半徑的半圓面積小于n年侵蝕的總 土地面積,而大于n-1年侵蝕的總面積 n=|(x2+ y2)*/2/50| | |表示上取整,程序設(shè)計(jì)一般過(guò)程,程序設(shè)計(jì) 確定程序的輸入輸出:讀入點(diǎn)坐標(biāo)x, y 確定輸入和中間計(jì)算結(jié)果的存儲(chǔ)方式:存儲(chǔ)實(shí)數(shù)變量x, y;計(jì)算出的整數(shù)年份n 確定計(jì)算過(guò)程:n=|(x2+ y2)*/2/50|,程序設(shè)計(jì)一般過(guò)程,程序?qū)崿F(xiàn),#incl

13、ude /將輸入輸出用到的庫(kù)函數(shù)(C語(yǔ)言中的函數(shù))包含進(jìn)來(lái) #include /將計(jì)算用到的庫(kù)函數(shù)包含進(jìn)來(lái) void main() /程序開(kāi)始 float x, y; /用來(lái)存放讀入的坐標(biāo)值 int year; /用于保存計(jì)算出來(lái)的年數(shù) scanf(%f%f, /將算出來(lái)的年數(shù)輸出到屏幕上 /程序結(jié)束 ,程序設(shè)計(jì)一般過(guò)程,程序調(diào)試運(yùn)行 輸入數(shù)據(jù) 驗(yàn)證結(jié)果,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 掌握從分析問(wèn)題到算法設(shè)計(jì)再到程序?qū)崿F(xiàn)的全過(guò)程 多做練習(xí),多讀優(yōu)秀代碼、模仿樣例解決類似問(wèn)題、分析問(wèn)題設(shè)計(jì)算法、總結(jié)經(jīng)驗(yàn),學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序

14、在內(nèi)存中的運(yùn)行過(guò)程 程序的構(gòu)成:語(yǔ)句 程序的執(zhí)行 順序執(zhí)行 分支、循環(huán)、函數(shù)調(diào)用可以改變執(zhí)行順序 程序的生存空間 內(nèi)存:存放程序與運(yùn)算結(jié)果(中間結(jié)果),#include stdafx.h int main() printf(Hello World!n); return 0; ,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 描述計(jì)算過(guò)程 基本語(yǔ)法 變量定義、引用;分支語(yǔ)句;循環(huán)語(yǔ)句;函數(shù)結(jié)構(gòu) 函數(shù)庫(kù) 基本算法,#include stdafx.h int main() int a=1, b=2; printf(%d, a+b); ,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的

15、運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 例 求一組數(shù)中的最大值、最小值: 逐個(gè)比較記住當(dāng)前的最大/最小值 判斷某年是否是閏年 數(shù)制轉(zhuǎn)換 判讀某數(shù)是否是素?cái)?shù) 字符串處理 ,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 掌握從分析問(wèn)題到算法設(shè)計(jì)再到程序?qū)崿F(xiàn)的全過(guò)程 分析問(wèn)題抽象數(shù)學(xué)模型設(shè)計(jì)計(jì)算過(guò)程和數(shù)據(jù)存儲(chǔ)方式代碼調(diào)試,學(xué)習(xí)程序設(shè)計(jì)五要素,理解程序在內(nèi)存中的運(yùn)行過(guò)程 掌握一門(mén)高級(jí)程序設(shè)計(jì)語(yǔ)言 掌握基本的計(jì)算方法 掌握從分析問(wèn)題到算法設(shè)計(jì)再到程序?qū)崿F(xiàn)的全過(guò)程 多做練習(xí),多讀優(yōu)秀代碼、模仿樣例解決類似問(wèn)題、分析問(wèn)題設(shè)計(jì)算法、總結(jié)經(jīng)驗(yàn) 避免

16、重復(fù)的語(yǔ)法錯(cuò)誤,程序閱讀理解,輸入輸出 #include /包含輸入輸出函數(shù)的頭文件 int main() /主函數(shù) /主函數(shù)開(kāi)始記號(hào) int baby, mum; /定義兩個(gè)整型變量baby, mum scanf(“%dn”, /程序運(yùn)行結(jié)束返回 /主函數(shù)結(jié)束的記號(hào),程序閱讀理解,表達(dá)式 #include int main() int x, y, z; /定義三個(gè)整數(shù)變量 printf(Li Mings first calculator n); /顯示輸出 printf(Please input the first integer:n); /顯示輸出 scanf(%d, ,程序閱讀理解,分支

17、語(yǔ)句 #include int main() int x, y, z; /定義三個(gè)整數(shù)變量 char q; printf(Li Mings sencond calculator n); /顯示輸出 printf(Please input the operator:n); /顯示輸出 scanf(“%c”, /從鍵盤(pán)輸入一個(gè)整數(shù),switch(q) case +: z = x + y; break; case -: z = x - y; break; case *: z = x * y; break; case /: z = x / y; break; default: z = x; print

18、f(%d%c%d = %dn, x, q, y, z); /顯示輸出 printf(How great it is!n); /顯示輸出 return 0; ,程序閱讀理解,循環(huán)語(yǔ)句 #include int main() int i, b; /定義整數(shù)變量 int sum = 0; /定義整數(shù)變量 int a10; /定義整數(shù)數(shù)組變量,10個(gè)整數(shù)元素 for (i=1; i=10; i+) /循環(huán),從i=1開(kāi)始,i=11時(shí)結(jié)束 scanf(%d, ,程序閱讀理解,判斷語(yǔ)句,#include int main() int n, a, i; scanf (%d, ,程序閱讀理解,隨機(jī)數(shù) #include #i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論