版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計(jì)主講:陶海軍主講:陶海軍教材、參考書與課時(shí)安排l教材教材C C語言程序設(shè)計(jì)語言程序設(shè)計(jì) 賈宗璞賈宗璞 許合利編許合利編 中國礦業(yè)大中國礦業(yè)大學(xué)出版社;學(xué)出版社;l參考書參考書C C程序設(shè)計(jì)程序設(shè)計(jì). . 譚浩強(qiáng)譚浩強(qiáng)著著. .清華大學(xué)出版社;清華大學(xué)出版社;C C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)程序設(shè)計(jì)題解與上機(jī)指導(dǎo). .譚浩強(qiáng)譚浩強(qiáng)編著編著. .清華大學(xué)清華大學(xué)出版社;出版社;l課時(shí)安排課時(shí)安排授課:授課:第第1-131-13教學(xué)周周二、周五,教學(xué)周周二、周五,5252學(xué)時(shí)學(xué)時(shí) 實(shí)驗(yàn)上機(jī)安排:1-4班:班: 上機(jī)時(shí)間:上機(jī)時(shí)間:第第2、3、515周周一下午周周一下午3、4節(jié),節(jié), 第第
2、14周周周二上午周二上午1、2節(jié)節(jié) 地點(diǎn):地點(diǎn):計(jì)算機(jī)中心微機(jī)室計(jì)算機(jī)中心微機(jī)室(1)、()、(2前)前)5-8班:班: 上機(jī)時(shí)間:上機(jī)時(shí)間:第第2、3、515周周三下午周周三下午3、4節(jié),第節(jié),第 15周周周四上午周四上午1、2節(jié)節(jié) 地點(diǎn):地點(diǎn):計(jì)算機(jī)中心微機(jī)室計(jì)算機(jī)中心微機(jī)室(1)、()、(2前)前)l上機(jī)內(nèi)容:上機(jī)內(nèi)容: 隨教學(xué)進(jìn)度的習(xí)題和實(shí)驗(yàn)以及課堂布置作業(yè)隨教學(xué)進(jìn)度的習(xí)題和實(shí)驗(yàn)以及課堂布置作業(yè)l要求要求: :l有問題有問題及時(shí)及時(shí)向老師或其他同學(xué)請(qǐng)教向老師或其他同學(xué)請(qǐng)教l作業(yè)必須經(jīng)作業(yè)必須經(jīng)上機(jī)調(diào)試通過,上機(jī)調(diào)試通過,所有作業(yè)必須所有作業(yè)必須獨(dú)立獨(dú)立完成完成l上機(jī)考勤上機(jī)考勤4 4次
3、次缺席,平時(shí)成績不及格處理缺席,平時(shí)成績不及格處理l發(fā)現(xiàn)上機(jī)時(shí)間發(fā)現(xiàn)上機(jī)時(shí)間上網(wǎng),聊天,打游戲上網(wǎng),聊天,打游戲,平時(shí)成績按不及格,平時(shí)成績按不及格處理。處理。課程要求l課前請(qǐng)做好預(yù)習(xí)課前請(qǐng)做好預(yù)習(xí)l保持課堂安靜,頭腦清醒,思維活躍保持課堂安靜,頭腦清醒,思維活躍l認(rèn)真、獨(dú)立、按時(shí)完成作業(yè)認(rèn)真、獨(dú)立、按時(shí)完成作業(yè)l重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間1 C語言概述重點(diǎn)、難點(diǎn)l本章重點(diǎn):本章重點(diǎn):lC C語言的特點(diǎn)語言的特點(diǎn)lC C語言程序的基本結(jié)構(gòu)語言程序的基本結(jié)構(gòu)l算法及其描述方法算法及其描述方法l結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法l本章難點(diǎn):本章難點(diǎn):
4、lC C語言與其他高級(jí)語言的區(qū)別語言與其他高級(jí)語言的區(qū)別l算法的流程圖、算法的流程圖、N-SN-S圖描述方法圖描述方法 內(nèi)容提要l1.1 C1.1 C語言的發(fā)展及特點(diǎn)語言的發(fā)展及特點(diǎn)l1.1.1 C1.1.1 C語言的發(fā)展語言的發(fā)展l1.1.2 C1.1.2 C語言的特點(diǎn)語言的特點(diǎn)l1.2 C1.2 C語言程序的基本結(jié)構(gòu)語言程序的基本結(jié)構(gòu)l1.3 1.3 算法及其描述算法及其描述l1.3.1 1.3.1 算法的概念算法的概念l1.3.2 1.3.2 算法的描述方法算法的描述方法l1.4 1.4 程序設(shè)計(jì)方法程序設(shè)計(jì)方法l1.4.1 1.4.1 程序設(shè)計(jì)的一般步驟程序設(shè)計(jì)的一般步驟l1.4.2
5、1.4.2 結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法1.1 C語言的發(fā)展及特點(diǎn)l1.1.1 C1.1.1 C語言的發(fā)展語言的發(fā)展 在在C C語言誕生以前,系統(tǒng)軟件主要是用語言誕生以前,系統(tǒng)軟件主要是用匯編語言匯編語言編編寫的。由于匯編語言程序依賴于計(jì)算機(jī)硬件,所以其寫的。由于匯編語言程序依賴于計(jì)算機(jī)硬件,所以其可可讀性和可移植性讀性和可移植性都很差;而一般的高級(jí)語言又都很差;而一般的高級(jí)語言又難以實(shí)現(xiàn)難以實(shí)現(xiàn)對(duì)計(jì)算機(jī)硬件的直接操作對(duì)計(jì)算機(jī)硬件的直接操作( (這正是匯編語言的優(yōu)勢(shì)這正是匯編語言的優(yōu)勢(shì)) ),于,于是人們盼望能有一種兼有匯編語言和高級(jí)語言特性的新是人們盼望能有一種兼有匯編語言和高級(jí)語言
6、特性的新語言。語言。lC C語言就是在這種背景下于語言就是在這種背景下于2020世紀(jì)世紀(jì)7070年代年代初問世的,當(dāng)初問世的,當(dāng)時(shí)主要是用于時(shí)主要是用于UNIXUNIX系統(tǒng)系統(tǒng)的開發(fā)。的開發(fā)。l19781978年由美國電話電報(bào)公司年由美國電話電報(bào)公司(AT&T)(AT&T)貝爾實(shí)驗(yàn)室貝爾實(shí)驗(yàn)室正式發(fā)表正式發(fā)表了了C C語言。語言。l同時(shí)由同時(shí)由B.W.KernighanB.W.Kernighan和和D.M.RitchieD.M.Ritchie合著了著名的合著了著名的The C Programming LanguageThe C Programming Language一書,通常
7、簡稱為一書,通常簡稱為K&RK&R,也有人稱之為,也有人稱之為K&RK&R標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。l美國國家標(biāo)準(zhǔn)化協(xié)會(huì)美國國家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI(American National ANSI(American National Standards Institute)Standards Institute)在此基礎(chǔ)上制定了一個(gè)在此基礎(chǔ)上制定了一個(gè)C C語言標(biāo)語言標(biāo)準(zhǔn),于準(zhǔn),于19831983年發(fā)表,通常稱之為年發(fā)表,通常稱之為ANSI CANSI C。l在微機(jī)上使用的在微機(jī)上使用的C C編譯系統(tǒng)主要有編譯系統(tǒng)主要有Microsoft CMicrosoft C、Turbo T
8、urbo C C、Quick CQuick C、Borland CBorland C等,它們不僅實(shí)現(xiàn)了等,它們不僅實(shí)現(xiàn)了ANSI CANSI C標(biāo)標(biāo)準(zhǔn),而且還各自作了一些擴(kuò)充,使之更加方便、完美。準(zhǔn),而且還各自作了一些擴(kuò)充,使之更加方便、完美。l如今如今C+C+又成為了高級(jí)語言的主流,又成為了高級(jí)語言的主流,C+C+是面向?qū)ο蟮某淌敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言,但它的基礎(chǔ)是序設(shè)計(jì)語言,但它的基礎(chǔ)是C C 語言,且二者在很多方面語言,且二者在很多方面是兼容的。因此,掌握了是兼容的。因此,掌握了C C語言,再去學(xué)習(xí)語言,再去學(xué)習(xí)C+C+,就會(huì)達(dá),就會(huì)達(dá)到事半功倍的效果。到事半功倍的效果。l本書敘述以本書
9、敘述以ANSI CANSI C為基礎(chǔ),為基礎(chǔ), C C語言上機(jī)實(shí)驗(yàn)時(shí)用的是語言上機(jī)實(shí)驗(yàn)時(shí)用的是VC+ 6.0VC+ 6.0。 1.1.2 C語言的特點(diǎn)(1) (1) 與自然語言比較與自然語言比較異同點(diǎn)異同點(diǎn)自然語言自然語言C C語言語言信息交流信息交流交流雙方地位平等交流雙方地位平等且均有思維、推理能力且均有思維、推理能力人機(jī)對(duì)話人機(jī)對(duì)話( (采取命令方式采取命令方式) )計(jì)算機(jī)一般無思維、推理能力,具有計(jì)計(jì)算機(jī)一般無思維、推理能力,具有計(jì)算與邏輯判斷能力算與邏輯判斷能力語法規(guī)則語法規(guī)則句法規(guī)則句法規(guī)則靈活靈活( (可省略、顛倒部分內(nèi)可省略、顛倒部分內(nèi)容容) )如:如:“走,上課去!走,上課去
10、!”“上課去,走!上課去,走!”( (上面兩句話意思相同,且上面兩句話意思相同,且都省略了主語都省略了主語) )固定固定( (一般不可省略、顛倒,必須按部一般不可省略、顛倒,必須按部就班就班) )如:如:scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);x=a+b;x=a+b;( (上面兩條上面兩條C C語句顛倒后將可能得不到正語句顛倒后將可能得不到正確結(jié)果確結(jié)果) )表達(dá)方式表達(dá)方式多樣多樣算法多樣算法多樣例 C語言與Pascal語言比較C語言 Pascal語言 含義 BEGIN.END 復(fù)合語句if(e) s; IF(e) THEN s
11、 條件語句int i ; VAR i:INTEGER 定義i為整型變量 int a10; VAR a:ARRAY1.10 OF INTEGER 定義整型數(shù)組aint f(); FUNCTION f():INTEGER 定義f為返值整型的函數(shù)int *p; VAR p:INTEGER 定義p為指向整型變量的指針i+= 2; i=i+2 賦值i+2ii+,+i; i=i+1 i自增值l(2) C(2) C語言的主要特點(diǎn):語言的主要特點(diǎn):l1) C1) C語言簡潔、緊湊,使用方便、靈活。語言簡潔、緊湊,使用方便、靈活。ANSI CANSI C一共只有一共只有3232個(gè)個(gè)關(guān)鍵字關(guān)鍵字( (見附錄見附錄
12、),如,如intint、longlong、floatfloat、ifif、whilewhile、dodo等;等;9 9種控制語句,程序書寫自由,種控制語句,程序書寫自由,主要用小寫字母表示主要用小寫字母表示。l2) 2) 運(yùn)算符豐富。共有運(yùn)算符豐富。共有3434種運(yùn)算符種運(yùn)算符( (見附錄見附錄)。C C語言把括號(hào)、語言把括號(hào)、賦值、逗號(hào)等都作為運(yùn)算符處理,從而使賦值、逗號(hào)等都作為運(yùn)算符處理,從而使C C語言的運(yùn)算類型極語言的運(yùn)算類型極為豐富,可以方便地實(shí)現(xiàn)其他高級(jí)語言難以實(shí)現(xiàn)的功能。為豐富,可以方便地實(shí)現(xiàn)其他高級(jí)語言難以實(shí)現(xiàn)的功能。l3) 3) 數(shù)據(jù)結(jié)構(gòu)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。
13、數(shù)據(jù)結(jié)構(gòu)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。C C語言語言的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能實(shí)現(xiàn)各種復(fù)雜數(shù)據(jù)結(jié)構(gòu)構(gòu)體類型、共用體類型等。能實(shí)現(xiàn)各種復(fù)雜數(shù)據(jù)結(jié)構(gòu)( (如鏈表、如鏈表、樹、棧等樹、棧等) )的運(yùn)算。尤其是指針類型數(shù)據(jù),使用起來更為靈活、的運(yùn)算。尤其是指針類型數(shù)據(jù),使用起來更為靈活、多樣。多樣。l4) 4) 具有結(jié)構(gòu)化的控制語句。用具有結(jié)構(gòu)化的控制語句。用函數(shù)作為程序的基本單位函數(shù)作為程序的基本單位,便,便于實(shí)現(xiàn)程序的模塊化。于實(shí)現(xiàn)程序的模塊化。C C語言是良好的結(jié)構(gòu)化語言,符合現(xiàn)代
14、語言是良好的結(jié)構(gòu)化語言,符合現(xiàn)代編程風(fēng)格的要求。編程風(fēng)格的要求。l5) 5) 語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。如對(duì)數(shù)組下標(biāo)越語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。如對(duì)數(shù)組下標(biāo)越界不做檢查;對(duì)變量的類型使用比較靈活,如整型數(shù)據(jù)與字符界不做檢查;對(duì)變量的類型使用比較靈活,如整型數(shù)據(jù)與字符型數(shù)據(jù)可以通用。型數(shù)據(jù)可以通用。l6) 6) C C語言允許直接訪問物理地址,能進(jìn)行位語言允許直接訪問物理地址,能進(jìn)行位(bit)(bit)操作操作,能實(shí),能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。因此有現(xiàn)匯編語言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。因此有人把它稱為中級(jí)語言。人把它稱為中級(jí)語言。l7)
15、 7) 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,可達(dá)到匯編語言生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,可達(dá)到匯編語言程序的程序的80%80%。l8) 8) 與匯編語言相比,用與匯編語言相比,用C C語言寫的程序可移植性好。語言寫的程序可移植性好。 1.2 C語言程序的基本結(jié)構(gòu)語言程序的基本結(jié)構(gòu)l程序程序(programprogram)是)是為實(shí)現(xiàn)特定目標(biāo)或解為實(shí)現(xiàn)特定目標(biāo)或解決特定問題而用計(jì)算機(jī)語言編寫的命令序決特定問題而用計(jì)算機(jī)語言編寫的命令序列的集合列的集合。l使用使用C C語言編寫的程序稱為語言編寫的程序稱為C C語言源程序語言源程序( (簡稱簡稱C C語言程序或語言程序或C C程序程序) )。
16、 例1-1 求兩個(gè)整數(shù)之和void main() /*函數(shù)首部*/ int a,b,sum; /*定義整型變量a,b,sum */ printf(Please input two integers:n); /*輸出提示信息,增強(qiáng)交互性*/ scanf(%d%d,&a,&b); /*輸入兩個(gè)整數(shù),并賦給a,b */ sum=a+b; /*計(jì)算a與b的和,并賦給sum */ printf(%d+%d=%dn,a,b,sum); /*輸出a、b、sum*/ 程序運(yùn)行情況如下:程序運(yùn)行情況如下:Please input two integers:68 (表示空格, 表示按Enter鍵)
17、 6+8=14例1-2 求兩個(gè)整數(shù)中的較大者#include /*編譯預(yù)處理*/void main( ) /*主函數(shù)首部*/ int x,y,z; /*定義整型變量x、y、z */ int max(int a,int b); /*聲明函數(shù)max*/ printf(Please input two integers:n); /*輸出提示信息*/ scanf(%d,%d,&x,&y); /*輸入x,y值*/ z=max(x,y); /*調(diào)用max函數(shù)*/ printf(The maximum number is %d.n,z); /*輸出結(jié)果*/int max(int a,int
18、b) /*max函數(shù)首部*/ if(ab) return a; /*條件語句,實(shí)現(xiàn)選擇結(jié)構(gòu)*/ else return b; /*把結(jié)果返回主調(diào)函數(shù)*/程序運(yùn)行情況如下:Please input two integers:6,8The maximum number is 8.C程序的基本結(jié)構(gòu)(1) C(1) C程序可由一個(gè)或多個(gè)函數(shù)構(gòu)成,程序可由一個(gè)或多個(gè)函數(shù)構(gòu)成,函數(shù)是函數(shù)是C C程序的基本程序的基本單位單位。(2) (2) C C程序必須有一個(gè)且只能有一個(gè)程序必須有一個(gè)且只能有一個(gè)mainmain函數(shù)函數(shù),即主函數(shù)。,即主函數(shù)。(3) (3) 一個(gè)一個(gè)C C程序總是從主函數(shù)開始執(zhí)行程序總是
19、從主函數(shù)開始執(zhí)行,而不論主函數(shù)在,而不論主函數(shù)在整個(gè)程序中位置如何。主函數(shù)執(zhí)行完了,整個(gè)程序也就整個(gè)程序中位置如何。主函數(shù)執(zhí)行完了,整個(gè)程序也就執(zhí)行完了。執(zhí)行完了。(4) C(4) C程序中可以有程序中可以有編譯預(yù)處理命令編譯預(yù)處理命令( (如如includeinclude命令命令) )。(5) (5) 每一個(gè)語句都必須以分號(hào)結(jié)尾。每一個(gè)語句都必須以分號(hào)結(jié)尾。但編譯預(yù)處理命令、但編譯預(yù)處理命令、函數(shù)首部函數(shù)首部( (即函數(shù)的起始行即函數(shù)的起始行) )和花括號(hào)和花括號(hào)“ ”之后不能加分之后不能加分號(hào)。號(hào)。(6) C(6) C語言本身沒有輸入輸出語句,語言本身沒有輸入輸出語句,輸入輸出功能是用輸輸
20、入輸出功能是用輸入輸出庫函數(shù)來實(shí)現(xiàn)的。入輸出庫函數(shù)來實(shí)現(xiàn)的。(7) (7) “/ /* *”和和“* */ /”為注釋符為注釋符,二者之間的部分為注釋。,二者之間的部分為注釋。C程序的書寫規(guī)則(1) (1) 一個(gè)聲明或一條語句占一行。一個(gè)聲明或一條語句占一行。當(dāng)然當(dāng)然C C程序允許一行寫程序允許一行寫多條語句,也允許一條語句寫在多行上,且無需續(xù)行符。多條語句,也允許一條語句寫在多行上,且無需續(xù)行符。(2) (2) 用用 括起來的部分,通常表示程序的某一層次結(jié)構(gòu)。括起來的部分,通常表示程序的某一層次結(jié)構(gòu)。 一般與該結(jié)構(gòu)語句的第一個(gè)字母對(duì)齊,一般與該結(jié)構(gòu)語句的第一個(gè)字母對(duì)齊,“ ”最好單最好單獨(dú)占
21、一行。獨(dú)占一行。(3) (3) 低一層次的語句或聲明可比高一層次的語句或聲明縮低一層次的語句或聲明可比高一層次的語句或聲明縮進(jìn)若干格后書寫。進(jìn)若干格后書寫。以便看起來更加清晰,增加程序的可以便看起來更加清晰,增加程序的可讀性。讀性。在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。l格式特點(diǎn)l習(xí)慣用小寫字母,大小寫敏感l(wèi)不使用行號(hào),無程序行概念l可使用空行和空格l常用鋸齒形書寫格式 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述main( ) . . . . . . .main( ) int i , j , sum; sum=0; for
22、(i=1; i10;i+) for(j=1;j100結(jié)束NY圖1-6 例1-3的流程圖l對(duì)于順序、分支和循環(huán)這三種基本結(jié)構(gòu),有以下共同特對(duì)于順序、分支和循環(huán)這三種基本結(jié)構(gòu),有以下共同特點(diǎn):點(diǎn):l1) 1) 雖然結(jié)構(gòu)內(nèi)部的某些基本框并不是也不可能是單入雖然結(jié)構(gòu)內(nèi)部的某些基本框并不是也不可能是單入口和單出口口和單出口( (比如選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中的判斷框有兩比如選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中的判斷框有兩個(gè)出口個(gè)出口) ),但,但整個(gè)結(jié)構(gòu)只有一個(gè)入口和一個(gè)出口整個(gè)結(jié)構(gòu)只有一個(gè)入口和一個(gè)出口。l2) 2) 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。也就是說,。也就是說,對(duì)每一個(gè)基本框來說
23、,都應(yīng)當(dāng)有一條從入口到出口的路對(duì)每一個(gè)基本框來說,都應(yīng)當(dāng)有一條從入口到出口的路徑通過它。徑通過它。l3) 3) 結(jié)構(gòu)內(nèi)不存在結(jié)構(gòu)內(nèi)不存在“死循環(huán)死循環(huán)”( (無終止的循環(huán)無終止的循環(huán)) ),在有限,在有限時(shí)間內(nèi)必能結(jié)束執(zhí)行過程。時(shí)間內(nèi)必能結(jié)束執(zhí)行過程。l已經(jīng)證明,由以上三種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),已經(jīng)證明,由以上三種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以解決任何復(fù)雜的問題。可以解決任何復(fù)雜的問題。由這三種基本結(jié)構(gòu)所構(gòu)成的由這三種基本結(jié)構(gòu)所構(gòu)成的算法屬于算法屬于“結(jié)構(gòu)化結(jié)構(gòu)化”的算法,這種設(shè)計(jì)方法也稱為結(jié)構(gòu)的算法,這種設(shè)計(jì)方法也稱為結(jié)構(gòu)化程序設(shè)計(jì)方法,化程序設(shè)計(jì)方法,主要有以下三個(gè)要求:主要有以下
24、三個(gè)要求:l1) 1) 結(jié)構(gòu)化程序的控制結(jié)構(gòu)只能由順序、分支和循環(huán)三結(jié)構(gòu)化程序的控制結(jié)構(gòu)只能由順序、分支和循環(huán)三種基本結(jié)構(gòu)構(gòu)成種基本結(jié)構(gòu)構(gòu)成( (當(dāng)然也可以由這三種基本結(jié)構(gòu)進(jìn)行組當(dāng)然也可以由這三種基本結(jié)構(gòu)進(jìn)行組合形成新的結(jié)構(gòu),但必須要滿足基本結(jié)構(gòu)所要求的三個(gè)合形成新的結(jié)構(gòu),但必須要滿足基本結(jié)構(gòu)所要求的三個(gè)條件條件) )。l2) 2) 整個(gè)程序是由許多個(gè)這三種結(jié)構(gòu)的程序塊串聯(lián)起來整個(gè)程序是由許多個(gè)這三種結(jié)構(gòu)的程序塊串聯(lián)起來的。的。因?yàn)檫@三種結(jié)構(gòu)都只有一個(gè)入口和一個(gè)出口,所以因?yàn)檫@三種結(jié)構(gòu)都只有一個(gè)入口和一個(gè)出口,所以是可以把它們串聯(lián)起來的。是可以把它們串聯(lián)起來的。l3) 3) 整個(gè)程序只有一個(gè)入
25、口和出口整個(gè)程序只有一個(gè)入口和出口。 結(jié)構(gòu)化的流程圖描述算法的特點(diǎn)l用這種結(jié)構(gòu)化的流程圖描述算法用這種結(jié)構(gòu)化的流程圖描述算法直觀形象直觀形象,比,比較清楚地顯示出各個(gè)框之間的邏輯關(guān)系。較清楚地顯示出各個(gè)框之間的邏輯關(guān)系。l但是這種流程圖但是這種流程圖占用篇幅較多占用篇幅較多,尤其當(dāng)算法比,尤其當(dāng)算法比較復(fù)雜時(shí),畫流程圖既費(fèi)時(shí)又不方便。較復(fù)雜時(shí),畫流程圖既費(fèi)時(shí)又不方便。l基本結(jié)構(gòu)的順序組合可以表示任何復(fù)雜的算法,基本結(jié)構(gòu)的順序組合可以表示任何復(fù)雜的算法,這樣我們可以這樣我們可以省去基本結(jié)構(gòu)之間的流程線。省去基本結(jié)構(gòu)之間的流程線。(3) 用N-S流程圖描述算法l19731973年美國學(xué)者年美國學(xué)者
26、I.I.N Nassiassi和和B.B.S Shneidermanhneiderman提出提出了一種新的流程圖形式。在這種流程圖中,完了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全去掉了帶箭頭的流程線。全部算法寫在一個(gè)全部算法寫在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其他的從屬于矩形框內(nèi),在該框內(nèi)還可以包含其他的從屬于它的框,它的框,或者說,由一些基本的框組成一個(gè)大或者說,由一些基本的框組成一個(gè)大的框。這種流程圖稱為的框。這種流程圖稱為N-SN-S結(jié)構(gòu)化流程圖,適用結(jié)構(gòu)化流程圖,適用于結(jié)構(gòu)化程序設(shè)計(jì),而且所用篇幅較少,因而于結(jié)構(gòu)化程序設(shè)計(jì),而且所用篇幅較少,因而很受歡迎。很受歡
27、迎。l1) 順序結(jié)構(gòu):l2) 選擇結(jié)構(gòu):l3) 循環(huán)結(jié)構(gòu): 例1-3的N-S圖 打印sum1sum2deno1sign( 1)signsignsign(1/deno)termsumtermsumdeno1deno 直到deno100圖1-11 例1-3的N-S圖N-S圖描述算法的特點(diǎn)l用傳統(tǒng)的流程圖和用傳統(tǒng)的流程圖和N-SN-S圖描述算法,圖描述算法,直觀直觀易懂易懂l但但畫起來比較費(fèi)事畫起來比較費(fèi)事。 (4) 用偽代碼描述算法l偽代碼偽代碼(pseudo code)(pseudo code)是用介于是用介于自然語言自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)來描述算和計(jì)算機(jī)語言之間的文字和符號(hào)來描述
28、算法。法。 l它它不用圖形符號(hào)不用圖形符號(hào),因此書寫方便、格式緊,因此書寫方便、格式緊湊,也比較好懂,湊,也比較好懂,便于向計(jì)算機(jī)語言描述便于向計(jì)算機(jī)語言描述的算法的算法( (即程序即程序) )過渡過渡。 例1-3的算法可以用偽代碼描述如下 BEGIN (算法開始) 1sum 2deno 1sign while deno 100 (-1)signsign sign1/denoterm sumtermsum deno1deno print sumEND (算法結(jié)束)偽代碼描述算法的特點(diǎn)l偽代碼書寫格式比較自由,容易表達(dá)出設(shè)偽代碼書寫格式比較自由,容易表達(dá)出設(shè)計(jì)者的思想。計(jì)者的思想。同時(shí),用偽代碼
29、很容易寫出同時(shí),用偽代碼很容易寫出結(jié)構(gòu)化的算法,并且寫出的算法也很容易結(jié)構(gòu)化的算法,并且寫出的算法也很容易修改。修改。l用偽代碼描述算法不如流程圖直觀用偽代碼描述算法不如流程圖直觀,可能,可能會(huì)出現(xiàn)邏輯上的錯(cuò)誤會(huì)出現(xiàn)邏輯上的錯(cuò)誤( (例如循環(huán)或選擇結(jié)例如循環(huán)或選擇結(jié)構(gòu)的范圍搞錯(cuò)等構(gòu)的范圍搞錯(cuò)等) )。 (5) 用計(jì)算機(jī)語言描述算法l要完成一件工作,包括要完成一件工作,包括設(shè)計(jì)算法設(shè)計(jì)算法和和實(shí)現(xiàn)算法實(shí)現(xiàn)算法兩兩個(gè)部分。個(gè)部分。 l我們的任務(wù)是用計(jì)算機(jī)解題,也就是要用計(jì)算我們的任務(wù)是用計(jì)算機(jī)解題,也就是要用計(jì)算機(jī)實(shí)現(xiàn)算法。機(jī)實(shí)現(xiàn)算法。計(jì)算機(jī)是無法識(shí)別自然語言、流計(jì)算機(jī)是無法識(shí)別自然語言、流程圖和
30、偽代碼的。程圖和偽代碼的。只有用計(jì)算機(jī)語言編寫的程只有用計(jì)算機(jī)語言編寫的程序才能被計(jì)算機(jī)執(zhí)行序才能被計(jì)算機(jī)執(zhí)行( (當(dāng)然還要編譯成二進(jìn)制目當(dāng)然還要編譯成二進(jìn)制目標(biāo)程序標(biāo)程序) )。因此,在用流程圖或偽代碼描述出一因此,在用流程圖或偽代碼描述出一個(gè)算法后,還要將它轉(zhuǎn)換成計(jì)算機(jī)語言程序。個(gè)算法后,還要將它轉(zhuǎn)換成計(jì)算機(jī)語言程序。 例1-3的算法可以用C語言描述如下 main() int sign=1; float deno=2.0,sum=1.0,term; while(deno=100) sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1;
31、printf(The sum is %f.n,sum);程序運(yùn)行結(jié)果為:The sum is 0.688172.1.4 程序設(shè)計(jì)方法程序設(shè)計(jì)方法l1.4.1 1.4.1 程序設(shè)計(jì)的一般步驟程序設(shè)計(jì)的一般步驟(1) (1) 分析問題并確定數(shù)據(jù)結(jié)構(gòu)分析問題并確定數(shù)據(jù)結(jié)構(gòu) (2) (2) 算法設(shè)計(jì)算法設(shè)計(jì)(3) (3) 編寫程序編寫程序(4) (4) 上機(jī)調(diào)試上機(jī)調(diào)試(5) (5) 整理寫出文檔資料整理寫出文檔資料 1.4.2 結(jié)構(gòu)化程序設(shè)計(jì)方法(1) (1) 自頂向下,逐步細(xì)化自頂向下,逐步細(xì)化(2) (2) 模塊化設(shè)計(jì)模塊化設(shè)計(jì)(3) (3) 結(jié)構(gòu)化編碼結(jié)構(gòu)化編碼1.4.1 運(yùn)行程序的步驟上機(jī)輸
32、入與編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫函數(shù)連接運(yùn)行目標(biāo)程序 運(yùn)行程序的步驟和方法Visual C+ 6.0 上機(jī)操作上機(jī)操作第一步,啟動(dòng)第一步,啟動(dòng) Microsoft Visual C+ 6.0第二步,創(chuàng)建一個(gè)工程第二步,創(chuàng)建一個(gè)工程第三步,修改新工程的配置第三步,修改新工程的配置 第四步,確認(rèn)創(chuàng)建新工程第四步,確認(rèn)創(chuàng)建新工程 第五步,創(chuàng)建新工程完畢第五步,創(chuàng)建新工程完畢 添加一個(gè)文件到一個(gè)空的工程中添加一個(gè)文件到一個(gè)空的工程中第一步,創(chuàng)建新的第一步,創(chuàng)建新的 .c 源文件源文件第二步,查看源文件第二步,查看源文件編寫程序編寫程序第一步,編寫源代碼第一步,編寫源代碼 第二步,打開第二步,打開“編譯編譯”工具欄工具欄第三步,編譯第三步,編譯第四步,除錯(cuò)第四步,除錯(cuò)運(yùn)行程序運(yùn)行程序l單擊 Build 工具欄中的紅色感嘆號(hào)按鈕,就可以運(yùn)行一個(gè)編譯好的程序:l上機(jī)作業(yè):1.編寫一個(gè)C程序,輸出下列信息: * Very good! *2.編寫一個(gè)C程序,輸出一個(gè)幾何圖形,如三角形: * * * * * *3.
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年四川省廣安市中考英語試題含解析
- 蘇教版六年級(jí)心理健康教育教案
- 全省小學(xué)數(shù)學(xué)教師賽課一等獎(jiǎng)數(shù)學(xué)一年級(jí)上冊(cè)(人教2024年新編)《6和7的加、減法應(yīng)用》課件
- 全省小學(xué)數(shù)學(xué)教師賽課一等獎(jiǎng)數(shù)學(xué)一年級(jí)上冊(cè)(人教2024年新編)《在校園里找一找》課件
- 2014-2018年全球PET瓶胚注塑機(jī)行業(yè)市場(chǎng)調(diào)查及前期規(guī)劃分析報(bào)告
- 2024至2030年中國手持式管道清理機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國彈性布數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2010-2012年環(huán)氧丙烷行業(yè)分析及企業(yè)競(jìng)爭力分析報(bào)告
- 2024至2030年中國聲音傳感器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國印刷電路板型端子臺(tái)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 高中數(shù)學(xué)奧賽輔導(dǎo)教材(共十講)
- 警航無人機(jī)培訓(xùn)考試題庫大全-下(判斷題)
- 新型冠狀病毒肺炎診療方案第八版
- 《研學(xué)旅行課程設(shè)計(jì)》課件-體驗(yàn)式學(xué)習(xí)課程單元設(shè)計(jì)
- 第五單元第五章 病毒(人教版八年級(jí)上冊(cè)生物)
- 2024年河南資本集團(tuán)招聘筆試參考題庫附帶答案詳解
- 公立幼兒園食堂財(cái)務(wù)的管理制度4篇
- 2022-2023學(xué)年北京市大興區(qū)亦莊實(shí)驗(yàn)中學(xué)七年級(jí)(上)期中數(shù)學(xué)試卷
- 學(xué)生心理健康一生一策檔案模板
- 燃?xì)庑袠I(yè)應(yīng)合力加強(qiáng)反恐防范
- 大學(xué)烹飪職業(yè)生涯
評(píng)論
0/150
提交評(píng)論