20101程序設(shè)計概述whz_第1頁
20101程序設(shè)計概述whz_第2頁
20101程序設(shè)計概述whz_第3頁
20101程序設(shè)計概述whz_第4頁
20101程序設(shè)計概述whz_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子郵件:C 語言程序設(shè)計1教學時間理論授課:54學時; 第1周開始到14周上機實驗:18學時;具體時間一般從第3周開始,周數(shù)3, 5,7,9,10,11,12,13,14周;(待確定)2022/9/142教學參考書理論教材:C語言程序設(shè)計,劉韶濤、潘秀霞、應(yīng)暉編著;實驗教材: C語言程序設(shè)計學習指導與上機實踐,劉韶濤、潘秀霞、應(yīng)暉編著;參考材料1:C語言程序設(shè)計(第2版),譚浩強參考材料2:C語言程序設(shè)計學習輔導,譚浩強參考材料3:有關(guān)Turbo C 2.0,3.0的參考資料參考材料4:有關(guān)Viusal C+ 6.0的參考資料2022/9/143課程成績考試形式:省統(tǒng)考(上機)二級C語言;沒

2、有筆試;課程成績:統(tǒng)考成績90%+平時成績10%(考勤、作業(yè)、提問);2022/9/144Turbo C 2.0狀態(tài)欄主菜單信息窗口編輯窗口快捷鍵2022/9/145Turbo C 2.0步驟1: 編輯初始C程序步驟2: 編譯 *.c 文件得到目標程序步驟3: 鏈接 *.obj 與C庫函數(shù)及其它目標文件步驟4: 運行 *.exe2022/9/146學習方法自動化和信息化,需要掌握一門計算機編程工具;C語言是目前最流行的語言;學C語言與學英語一樣,需要記憶和實踐;建議平時多上機實踐和考前多做模擬題;學會自主學習,網(wǎng)上精品課程,C語言視頻講座等;2022/9/147第1章 程序設(shè)計概述81.1計算

3、機系統(tǒng)計算機系統(tǒng)由硬件和軟件構(gòu)成馮諾依曼的通用計算機方案: 計算機硬件由五個基本部分組成:運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備; 用二進制表示計算機的指令和數(shù)據(jù); 存儲程序和程序控制:將程序和數(shù)據(jù)放在存儲器中,并讓計算機自動地執(zhí)行程序。2022/9/149首先,我們來看看計算機是如何工作的。 1.1計算機系統(tǒng)2022/9/1410程序員需要知道的硬件知識存儲器與數(shù)據(jù)在計算機中的存儲程序和數(shù)據(jù)都存儲在存儲器中;常常涉及的術(shù)語:位:(bit)存儲一個二進制代碼0或1的最小單元稱為位,簡寫為b 字節(jié):(byte)連續(xù)的8個位組成的存儲單元稱為字節(jié),簡寫為B 字:(word)連續(xù)多個字節(jié)組成的存

4、儲單元稱為字。統(tǒng)一稱32位二進制為一個“長字”,而稱16位二進制為一個“短字”地址:為了訪問方便,每個字節(jié)都分配一個編號,稱為“地址”,在多數(shù)計算機中,地址是從低到高連續(xù)編址的,最小從0開始,最大到實際內(nèi)存結(jié)束。 2022/9/1411程序員需要知道的硬件知識16位系統(tǒng)的內(nèi)存結(jié)構(gòu) 11110000001010106148220002022/9/1412程序員需要知道的硬件知識存儲單元的地址與存儲單元的值存儲單元的編號稱為該存儲單元的地址。它可以字節(jié)或字編號。內(nèi)存儲器的單元很多,一般以字節(jié)計算 存儲單元中的內(nèi)容稱該存儲單元的值。要嚴格區(qū)分存儲單元的地址和存儲單元的值概念。614822000202

5、2/9/1413在高級程序設(shè)計語言中涉及存儲單元,必須把變量名、存儲單元地址、存儲單元值三個概念一同考慮。一旦定義了一個變量,就在內(nèi)存中開辟了一個存儲單元,具有確定的存儲單元地址,但存儲單元的值是不確定的,用“?”表示。程序員需要知道的硬件知識sum=1+2+3+4+100的計算步驟。 設(shè):i 計數(shù)器,累加器sum sum=sum+ii=i+1?37num存入3到num中取出num值: 3存入7到num取出num值: 7下面以存放整型數(shù)據(jù)的存儲單元num為例,討論存數(shù)和取數(shù)的特點,2022/9/1414十進制數(shù)位置: 3 2 1 0 -1 -2 1 2 3 5 . 4 5 =1103+2102

6、+3101+5100+410-1+510-2權(quán)重:103 102 101 100 10-1 10-2 二進制數(shù)位置: 3 2 1 0 -1 -2 -31 0 1 1 . 0 0 1 =123+022+121+120+02-1+02-2+12-3權(quán)重: 23 22 21 20 21 2-2 2-3十六進制數(shù)位置: 2 1 0 A 0 E =10 162+0161+14160權(quán)重:162 161 160 八進制數(shù)位置: 2 1 0 7 0 5 =782+081+580權(quán)重: 82 81 80 1.1.3 計算機計數(shù)系統(tǒng)1.數(shù)制及其轉(zhuǎn)換 2022/9/14151.1.3 計算機計數(shù)系統(tǒng)2.數(shù)值在計算

7、機中的表示在計算機中一般用“0”表示正號,用“1”表示負號,符號位放在數(shù)的最高位。數(shù)據(jù)在內(nèi)存中是以二進制補碼形式存放的。例如,整型變量i在內(nèi)存中占二個字節(jié),其表示如圖:1001010ii101111111111110110ii正數(shù)的補碼=原碼負數(shù)的補碼=絕對值的原碼取反+12022/9/14161.1.3 計算機計數(shù)系統(tǒng)2.數(shù)值在計算機中的表示浮點型數(shù)據(jù)在內(nèi)存中按照指數(shù)形式存儲。系統(tǒng)把一個浮點型數(shù)據(jù)分成小數(shù)和指數(shù)部分分別存放。例如,一個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。4個字節(jié)(32位)中,多少位來表示小數(shù)部分,多少位表示指數(shù)部分,由編譯系統(tǒng)自定。小數(shù)部分占的位數(shù)越多,數(shù)的有效數(shù)字越

8、多,精度也就越高。指數(shù)部分占的位數(shù)越多,則能表示的數(shù)值范圍越大。 2022/9/14172.數(shù)值在計算機中的表示實數(shù)3.14159在內(nèi)存中的存放形式:+ 314159 + 1數(shù)符小數(shù)部分指數(shù)+.3141591013.141591.1.3 計算機計數(shù)系統(tǒng)2022/9/14182.數(shù)值在計算機中的表示由于位數(shù)所限,計算機處理的數(shù)也就有一定限度,太大的數(shù)或太小的數(shù)計算機中無法用所限的位數(shù)表示時,就發(fā)生了上溢和下溢。又由于十進制轉(zhuǎn)換成二進制數(shù)的過程中,常會發(fā)生有限的小數(shù)會轉(zhuǎn)換成無限的小數(shù),這時必需要截取有效位數(shù),這使得計算機處理數(shù)值運算過程中會出現(xiàn)不精確的問題。1.1.3 計算機計數(shù)系統(tǒng)2022/9/

9、14191.2 程序設(shè)計語言程序員用各種程序設(shè)計語言編寫計算機指令。某些指令能夠直接被計算機執(zhí)行,而其它的指令還需要通過中間的翻譯過程才可被計算機執(zhí)行。當今使用的計算機語言有上百種,大致可分為如下三類:機器語言、匯編語言和高級語言2022/9/1420機器語言高級語言匯編語言機器語言的每一條語句都是二進制形式的指令代碼,從屬于硬件設(shè)備,一般隨CPU的不同而不同。例如 0101011 加 0101101 減匯編語言用助記符代替機器語言的操作碼,例如 ADD 加但是匯編語言還是面向機器的。而且因機而異高級語言用簡單的英文單詞和熟悉的數(shù)學表達式,并且用戶不必了解計算機的指令系統(tǒng),主要考慮解題算法的實

10、現(xiàn)。高級語言編寫的源程序可以在不同的計算機上使用,但是必須經(jīng)過編譯成機器語言才能執(zhí)行。計算機語言的分類機器語言、匯編語言和高級語言2022/9/1421匯編或高級語言 機器語言的方式:編譯:將原程序(高級語言編寫)翻譯成目標代碼(機器語言)。計算機執(zhí)行程序時執(zhí)行的是目標代碼。解釋:計算機在執(zhí)行程序時,邊解釋邊執(zhí)行。1.3高級語言程序的創(chuàng)建和運行過程2022/9/14221.3高級語言程序的創(chuàng)建和運行過程這個過程包括4步:(1)編寫和編輯程序;(2)編譯程序;(3)將程序和需要 的庫模塊相連接;(4)執(zhí)行程序。 庫文本編輯器#include int main()編譯器連接器運行器00110001

11、01100001110000111-源代碼目標代碼可執(zhí)行代碼結(jié)果程序員2022/9/14231.4 程序設(shè)計基礎(chǔ)算法和數(shù)據(jù)結(jié)構(gòu)計算機是按程序所規(guī)定的內(nèi)容和步驟進行工作的。所以對每一個學習計算機知識的人來說,首先都應(yīng)建立起“程序”的概念,并且學習程序設(shè)計的有關(guān)知識。2022/9/1424程序與程序設(shè)計一、程序(Program)為使計算機完成一個預(yù)定的任務(wù)而設(shè)計的一系列語句或指令 main() int a,b,c; a=100; b=200; c=a+b; printf(“sum=%dn”,c); stud.c2022/9/1425 main() int a,b,c; a=100; b=200;

12、c=a+b; printf(“sum=%dn”,c); 對數(shù)據(jù)的描述 對操作的描述 一個程序應(yīng)包括兩方面的內(nèi)容一、程序(Program)數(shù)據(jù)結(jié)構(gòu) 算法2022/9/14260021班 學生成績表單姓 名英語高數(shù)總分春風8867夏天8079秋雨9283冬雪7690 EXAMPLE1-1:請計算下列給出的成績表單中“春風”的總成績2022/9/1427姓 名英語高數(shù)總分春風8867夏天8079秋雨9283冬雪7690 英語和高數(shù)成績均用整型數(shù)據(jù)表示: int score1, score2, sum; 數(shù)據(jù)結(jié)構(gòu) 確定算法sum=score1+score2 score1=88 score2=67 Be

13、ginsum=0score1=88Score2=67sum=score1+score2輸出sumEnd2022/9/1428姓 名英語高數(shù)總分春風8867夏天8079秋雨9283冬雪7690 數(shù)據(jù)結(jié)構(gòu) 確定算法 編寫代碼 main() int score1, score2,sum=0; score1=88; score2=67; sum=score1+score2; printf(“sum=%dn”, sum); Beginsum=0score1=88Score2=67sum=score1+score2輸出sumEnd2022/9/1429姓 名英語高數(shù)總分春風8867夏天8079秋雨9283

14、冬雪7690 數(shù)據(jù)結(jié)構(gòu) 確定算法 編寫代碼 main() int score1, score2,sum=0; score1=88; score2=67; sum=score1+score2; printf(“sum=%dn”, sum); 調(diào)試運行 整理結(jié)果并攥寫文檔程序名稱:sum.c程序員:李曉程序功能:計算學生成績代碼編寫日期:2008年9月7日該程序算法用下列程序流程圖描述: 1552022/9/1430問題的求解程序設(shè)計的過程就是問題求解的過程.應(yīng)用計算機求解問題是一個復(fù)雜的過程,包括問題分析,建立數(shù)據(jù)模型,設(shè)計算法,編程,調(diào)試和測試,文檔整理等。學習程序設(shè)計,要按這個步驟一步一步地

15、解決問題。掌握和學會問題求解方法,是學習高級語言的重點,也是最大難點。它將貫穿于教學的整個過程,滲透到各個教學環(huán)節(jié)。 問題分析建立數(shù)據(jù)模型設(shè)計算法編輯調(diào)試和測試文檔整理圖1. 問題求解過程2022/9/1431有窮性:包含有限的操作步驟。確定性:算法中的每一個步驟都應(yīng)當是確定的。 有零個或多個輸入:輸入是指在執(zhí)行算法時需要從外界取得必要的信息。 有一個或多個輸出:算法的目的是為了求解,“解” 就是輸出,沒有輸出的算法是沒有意義的。 有效性:算法中的每一個步驟都應(yīng)當能有效地執(zhí)行,并得到確定的結(jié)果 。所謂“算法”,是指為解決一個問題所采取的方法和步驟。1.4.1算法的特性2022/9/1432描述

16、工具 程序流程圖 N-S圖 PAD 圖 偽代碼 1.4.2 算法的表示2022/9/1433X1 起止端點 輸入/輸出 一般處理 子程序或函數(shù)調(diào)用 條件判斷 流程線1、程序流程圖2022/9/1434Beginsum=0score1=88Score2=67sum=score1+score2輸出sumEnd 請用程序流程圖描述求解下列問題的算法姓 名英語高數(shù)總分春風8867EXAMPLE1-2:2022/9/1435用程序流程圖表示的三種基本結(jié)構(gòu)ABC 順序結(jié)構(gòu) AexpT 選擇結(jié)構(gòu) ABexpTF2022/9/1436 case expcase 1 case ncase 2 選擇結(jié)構(gòu) 2022

17、/9/1437AexpTF循環(huán)結(jié)構(gòu) expTAF2022/9/1438三種基本結(jié)構(gòu)的共同特點:(1)只有一個入口; (2)只有一個出口;(請注意:一個菱形判斷框有兩個出口,而一個選擇結(jié)構(gòu)只有一個出口。) (3)結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行到;(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。 2022/9/1439 設(shè):a=100 b=200 現(xiàn)將a與b中的值互換。請用程序流程圖描述其互換過程EXAMPLE1-3:ab100200t100200 100 Begina=100b=200t=aa=bb=t輸出a,bEnd2022/9/1440 輸入a與b兩個值,若ab則輸出a。請用程序流程圖描述其執(zhí)

18、行過程。EXAMPLE1-4:BeginTF輸入a,bab輸出aEnd2022/9/1441 輸入a與b兩個值,若ab則輸出a,否則輸出b。 請用程序流程圖描述其執(zhí)行過程。EXAMPLE1-5:Begin輸入a,babTm=aFm=b輸出mEnd2022/9/1442BeginEnd輸入a,b,c 三個值,請輸出三個值中最大的一個。 請用程序流程圖描述其執(zhí)行過程。輸出 m輸入a,b,cabTm=am=bFmcm=cFTEXERCISES1-6:2022/9/1443 輸入a,b,c 三個值,請按 其值從大到小排序并輸出。 要求用程序流程圖描述其排 序過程。EXERCISES1-7:2022/9

19、/1444BeginEnd輸出a,b,c輸入a,b,cabTt=a a=bb=tFacFTt=a a=cc=tbcFt=b b=cc=tT2022/9/1445Beginsum=0 i=1sum=sum+i輸出sumEnd請用程序流程圖描述:sum=1+2+3+4+100的計算步驟。 設(shè):i 計數(shù)器:i=i+1 sum 為累加器: sum=sum+ii= i+1Ti100FEXAMPLE1-8:2022/9/1446 從鍵盤輸入30名學生的高數(shù)成績 并輸出高數(shù)成績小于60分的值,并統(tǒng) 計出小于60的有多少人。 要求用程序流程圖描述其解決該 問題的算法。設(shè):i 總?cè)藬?shù)計數(shù)器:i= i+1 (i=

20、30) gs 為輸入的成績 num 記錄不及格人數(shù): num=num+1EXERCISES1-9:2022/9/1447End輸出 numYi=30NBegini=0, num=0 gs60F輸入 gs輸出 gsTnum=num+1i= i+11122設(shè):i 總?cè)藬?shù)計數(shù)器:i= i+1 (i=30) gs 為輸入的成績 num 記錄不及格人數(shù): num=num+12022/9/1448 順序結(jié)構(gòu)1973 年 美國學者 I.Nassi、B.Shneiderman A BT Fexp A B exp A 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)2、N-S 圖expA2022/9/1449 描述計算: sum=1+2+3

21、+4+100 sum=0, i=1 i 100 sum=sum+i i=i+1 輸出 sum EXAMPLE1-10:2022/9/1450N-S圖表示算法的優(yōu)點:比文字描述直觀、形象、易于理解;比傳統(tǒng)流程圖緊湊易畫,而且廢除了流程線,整個算法結(jié)構(gòu)是由各個基本結(jié)構(gòu)按順序組成的。N-S流程圖中的上下順序就是執(zhí)行時的順序,寫算法和讀算法只需從上到下,十分方便。用N-S圖表示的算法都是結(jié)構(gòu)化的算法,因為它不可能出現(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行。2022/9/1451偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。特點:它如同一篇文章一樣,自上而下地寫下來。不用圖形符號,因

22、此書寫方便、格式緊湊,也便于向計算機語言算法(即程序)過渡。用處:適用于設(shè)計過程中需要反復(fù)修改時的流程描述。3 、 偽代碼表示算法2022/9/1452EXAMPLE1-11:偽代碼表示“打印x的絕對值”的算法. IF x is positive THEN print x ELSE print -x也可以用漢字偽代碼表示: 若 x為正 打印 x 否則 打印 -x也可以中英文混用,如: IF x 為正 print x ELSE print -x2022/9/1453EXAMPLE1-12:分別用偽代碼、流程圖和N-S圖求一元二次方程的根。偽代碼input a,b,cd=b2-4acif d0 t

23、hen if d=0 then x1,x2=-b/(2a) else x1=(-b+d)/(2a) x2=(-b-d)/(2a) end if print x1,x2else p=-b/(2a) q= -d/(2a) print p+q,”+”,p-q,”i”end if2022/9/1454EXAMPLE1-12:分別用偽代碼、流程圖和N-S圖求一元二次方程的根。流程圖Begin輸入a、b、cd=b2-4acd0d=0 x1,2=-b/(2a)x1=(-b+d)/2ax1=(-b-d)/2ap=-b/(2a)q= -d/(2a)打印 x1,x2打印:x1=p+qix2=p-qiend2022

24、/9/1455EXAMPLE1-12:分別用偽代碼、流程圖和N-S圖求一元二次方程的根。N-S圖d0TFTFd=0輸入a,b,cd=b2-4acp=-b/(2a)q= -d/(2a)x1,2=-b/(2a)x1=(-b+d)/2ax1=(-b-d)/2a打印:x1=p+qix2=p-qi打印x1,x22022/9/14561.5結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序就是用高級語言表示的結(jié)構(gòu)化算法。用三種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化的程序,這種程序便于編寫、便于閱讀、便于修改和維護。結(jié)構(gòu)化程序設(shè)計方法的基本思路是:把一個復(fù)雜問題的求解過程分階段進行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。 2022/9/14571.5結(jié)構(gòu)化程序設(shè)計采取以下方法來保證得到結(jié)構(gòu)化的程序:自頂向下;逐步細化;模塊化設(shè)計;結(jié)構(gòu)化編碼。2022/9/1458兩種不同的方法:自頂向下,逐步細化;自下而上,逐步積累。2022/9/1459這種逐步分解的方法就叫做“自頂向下,逐步細化”。 自頂向下,逐步細化2022/9

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論