程序設(shè)計導(dǎo)學(xué).ppt_第1頁
程序設(shè)計導(dǎo)學(xué).ppt_第2頁
程序設(shè)計導(dǎo)學(xué).ppt_第3頁
程序設(shè)計導(dǎo)學(xué).ppt_第4頁
程序設(shè)計導(dǎo)學(xué).ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、程序設(shè)計基礎(chǔ),先修課程:計算機(jī)文化基礎(chǔ),輔導(dǎo)教師 杜彪 email: 個人主頁,網(wǎng)上資源,浙江電大程序設(shè)計基礎(chǔ)課程資料 瑞安電大的網(wǎng)上學(xué)苑 浙江電大在線 瑞安電大杜彪老師個人主頁 課程學(xué)習(xí),程序設(shè)計基礎(chǔ)導(dǎo)學(xué),在學(xué)習(xí)本課程之前,先討論一個問題:編一個程序,輸入10個整數(shù),找出10個整數(shù)中最大的數(shù)并輸出。,例如有 45 68 32 -12 87 25 56 42 98 76,程序設(shè)計方法之一:分而治之,在計算機(jī)內(nèi)存中定義存放10個整數(shù)的空間和存放最大數(shù)的空間; 輸入10個整數(shù); 找出10個整數(shù)中最大的數(shù),并保存; 輸出這個最大的數(shù)。,所謂分而治之,是將一個大問題分解成若干個容易解決的小問題并解決它

2、。對于這個問題可編寫程序如下:,問題一:如何存放10個數(shù),根據(jù)馮.諾依曼結(jié)構(gòu),程序和數(shù)據(jù)是事先存放在內(nèi)存中的,所以這10個數(shù)是事先放在內(nèi)存中; 這10個數(shù)的數(shù)據(jù)類型相同,都是整數(shù); 這10個數(shù)順序存放,一個緊接一個。,數(shù)據(jù)結(jié)構(gòu)程序設(shè)計的前提,數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)和物理結(jié)構(gòu) 邏輯結(jié)構(gòu)數(shù)據(jù)之間在邏輯上的關(guān)系,包括線性結(jié)構(gòu)(線性表,棧,隊列)和非線性結(jié)構(gòu)(樹,圖) 物理結(jié)構(gòu)數(shù)據(jù)在計算機(jī)中的存儲結(jié)構(gòu),包括數(shù)組和鏈表,后續(xù)知識: 數(shù)組可表示線性表,棧,隊列,二叉樹;二維數(shù)組可表示圖; 鏈表可表示線性表,棧,隊列,樹,圖; 數(shù)組和鏈表在表示數(shù)據(jù)的邏輯結(jié)構(gòu)時各有優(yōu)缺點(diǎn)。,數(shù)組最常用的數(shù)據(jù)結(jié)構(gòu),數(shù)組是由若干個

3、類型相同的元素組成;元素的類型決定數(shù)組的類型; 每個數(shù)組有一個數(shù)組名; 數(shù)組中元素在內(nèi)存中是按順序存放的,元素的順序標(biāo)號稱為數(shù)組的下標(biāo); C語言中數(shù)組的下標(biāo)從0開始,最后一個元素的下標(biāo)為n-1 (n是數(shù)組中元素的個數(shù))。,例如,數(shù)組名為A,有10個元素,第一個元素為A0;最后一個元素為A9;,計算機(jī)語言程序設(shè)計時人與計算機(jī)的交流工具,所謂語言,是由一些符號根據(jù)一定的語法規(guī)則所組成的集合,人類的語言由句子組成,計算機(jī)語言由語句組成; 計算機(jī)語言包括機(jī)器語言,匯編語言和高級語言三大類。機(jī)器語言由二進(jìn)制的指令組成,可直接執(zhí)行,但編寫和閱讀不方便;如果把機(jī)器指令和英文縮寫一一對應(yīng),便形成匯編語言;于是

4、,人們便發(fā)明了高級語言,用接近于英語和數(shù)學(xué)公式的方法來編寫程序; 高級語言不能直接執(zhí)行,但可以將整個程序翻譯成機(jī)器語言后再執(zhí)行,這個翻譯的過程稱為編譯;有些高級語言如BASIC可以逐條語句翻譯并執(zhí)行并為解釋執(zhí)行。,變量程序中存放數(shù)據(jù)的基本單元,變量是一個命名的內(nèi)存存儲單元,在程序中可以修改內(nèi)存變量的值。變量在使用前必須進(jìn)行說明。如下面程序段計算表達(dá)式 2*(3+1) 和 表達(dá)式 3*(7-2)的結(jié)果: int r; r=2*(3+1); r=3*(7-2); 其中語句: int r; 說明了一個整型的變量 r, 程序的第一次計算結(jié)果 8 存放在 r 中,后來 r 的值被改寫成 15。: 若要在

5、鍵盤上輸入r的值,使用語句: Scanf(%d, 其中i表示輸入的類型為整型。當(dāng)運(yùn)行到這條語句時,可從鍵盤上輸入一個整數(shù),程序會將這個整數(shù)的值保存到變量r指定的內(nèi)存單元中。,C語言中數(shù)組的定義方法,說明數(shù)組的一般形式為: type namesize; 其中type是數(shù)組元素的類型,除不能是void類型和函數(shù)之外,它可以是任何類型,size是個整常數(shù),用于說明數(shù)組name中最多可存放多少元素,方括號是個數(shù)組類型說明符。例如:說明包含有10個 整數(shù)類型元素的數(shù)組A,使用如下的變量說明語句: int A10; int表示整數(shù)類型,是integer的縮寫。,數(shù)組中元素的引用,數(shù)組中元素的引用,使用表達(dá)

6、式: 數(shù)組名表達(dá)式 其中“表達(dá)式”是一個整型表達(dá)式,其值表示某個元素的序號,例如數(shù)組A的10個元素為: A0 , A1 ,A2 ,A3 ,A4 ,A5 , A6 ,A7 ,A8 ,A9 例如要取得A2的值放在變量m中,可使用: m=A2; : 若要將A3的值改為-12,,可使用: A3=-12;,討論:如何輸入數(shù)組中的元素,這么做行不行? 輸入元素A 0; 輸入元素A 1; 輸入元素A 2; 輸入元素A 3; 輸入元素A 4; 輸入元素A 5; 輸入元素A 6; 輸入元素A 7; 輸入元素A 8; 輸入元素A 9;,循環(huán)解決語句重復(fù)書寫,i從0到9重復(fù)做 輸入A i; 用C語言表達(dá)為: for

7、 (i=0;i10;i+) scanf(%d,這樣的表達(dá)清楚嗎?,C語言中的另一種表達(dá): i=0; while (i10) scanf(%d, ,流程圖描述算法的工具,算法是解決問題的步驟,用文字難以表達(dá),最好用流程圖,輸入數(shù)組中10元素的程序流程圖,N-S圖(盒圖),主程序算法描述,輸入10整數(shù)并輸出其中最大值的算法盒圖,輸入10個數(shù)求最大數(shù)的主程序,前面已介紹定義變量和數(shù)組,及訪問和輸入數(shù)組元素的方法。下面給出主程序,其中/*到*/之間為注解,為了便于理解程序,預(yù)編譯時會自動刪去。,#include int max(int A , int n); void main() /*定義整型變量m

8、用來存放最大值,數(shù)型數(shù)組A存入輸入數(shù)據(jù)*/ int m,A10; int i; /*i用來存放循環(huán)變量*/ /*輸出提示信息,提示用戶輸入*/ printf(“請輸入10個整數(shù),用空格或回車間隔:”); /*輸入10個整數(shù)*/ for (i=0;i10;i+) scanf(%d, ,函數(shù)模塊化程序設(shè)計的主體,在上面這個程序中包括一個main函數(shù),在main函數(shù)中調(diào)用了三個函數(shù):sacnf, printf和max; scanf函數(shù)用來輸入數(shù)據(jù);printf函數(shù)用來輸出數(shù)據(jù);這兩個已經(jīng)在頭文件stdio.h中聲明,是系統(tǒng)預(yù)定義的函數(shù),用戶在#include指令中指出頭文件后可直接使用; max函數(shù)

9、需要用戶自已定義,使用這個函數(shù)時要告訴計算機(jī)函數(shù)名,數(shù)組名及數(shù)組元素的個數(shù);,max函數(shù)的設(shè)計方法,語言中函數(shù)定義的一般形式是: 返回值類型 函數(shù)名(參數(shù)表) 函數(shù)體 我們先不設(shè)計max函數(shù)的函數(shù)體,先設(shè)計函數(shù)頭部;max函數(shù)返回值是數(shù)組中的最大值,其類型同數(shù)組元素的類型相同,為int ;函數(shù)名 為max; 參數(shù)表中的參數(shù)有二個,一個是整型數(shù)據(jù)A,另一個是A中的元素個數(shù)n,之所以有第二個參數(shù)是考慮到函數(shù)的通用性,因?yàn)橛袝r候數(shù)組中元素的個數(shù)不一定是10個。函數(shù)max的頭部形式為: int max(int A , int n) 參數(shù)表中的每個參數(shù)和定義變量類擬,A后的一對方括號表示A是一個數(shù)組,但

10、不要給出數(shù)組的元素個數(shù)。,算法程序設(shè)計的靈魂,現(xiàn)在我們討論一個關(guān)鍵是如何設(shè)計max函數(shù)? 為設(shè)計這個函數(shù),我們要先設(shè)計一個算法,在數(shù)組的n個元素中找出最大值; 方法是讓數(shù)組中的每個元素參加比較大小的比賽,比賽的方法有很多,方法的好壞影響算法的效率;因些算法是程序設(shè)計的靈魂; 算法是在對問充分分析的基礎(chǔ)上得出的,因些對問題的分析非常重要。,問題二:如何求數(shù)組中元素的最大值max函數(shù)的算法分析,求數(shù)組中最大值的比賽方法最好采用擂臺賽,因?yàn)槲覀冎恍璞瘸龅谝幻?;如何上擂臺? 方法是A 0先上擂臺,即假定A 0 暫時最大,將A 0保存到暫時最大者;然后讓A 1與A 0比,若A 1 比A 0大,將A 1存

11、起來,作為暫時的最大者,否則不變;然后讓A 2上,與暫時最大者比,以些類推,直到數(shù)組中最后一個元素A n-1與暫時最大值比,若A n-1比暫時最大值大,則更新這個最大值,否則不變。 如何記錄暫時最大值,一種方法是定義一個變量用來存放暫時最大值的數(shù)值;另一種方法是定義一個整型變量用來記錄暫時最大值的下標(biāo),如果用變量K表示暫時最大值的下標(biāo),則K的初值為0,然后下標(biāo)為1,2,3,,n-1的元依次和A k比較,這樣需定義一個循環(huán)變量i,從1到n-1,若A i A k,則K應(yīng)更新為i。,max函數(shù)的算法設(shè)計,定義一個變量表示暫時最大值的下標(biāo) ,K初值為,max函數(shù)的設(shè)計,int max(int A,in

12、t n) /*定義整型變量k用來存放暫時最大值下標(biāo),初定A0最大,所以K初值為0,i用作循環(huán)變量*/ int k=0,i; /*循環(huán),i從1到n-1, Ai與暫時最大者AK比較*/ for (i=1;i Ak) k=i; /* 若Ai比Ak,更新暫時大者下標(biāo)*/ /*返回最大值*/ return Ak; ,思考題:返回k行不行?,上機(jī)實(shí)驗(yàn),將輸入10個數(shù)求最大數(shù)的主程序和max函數(shù)內(nèi)容合并,保存在一個文件中; 使用VC6.0 或TC2.0來編譯調(diào)試程序,建議使用VC6.0, 有關(guān)VC使用請參考實(shí)驗(yàn)課件 按要求輸入10個整數(shù),觀察運(yùn)行結(jié)果。 習(xí)題:計算1+2+3+4+99+100,將結(jié)果顯示。,

13、實(shí)驗(yàn)注意事項(xiàng),C語言程序由函數(shù)組成,每一個C語言程序有且僅有一個惟一的main函數(shù); C語言是大小敏感的語言,大寫和小寫是有區(qū)別的; 由于程序中一般都要用到printf函數(shù)來輸出結(jié)果,所以必須在程序頭部加上一行 #include 在VC中上機(jī)時,每一個實(shí)驗(yàn)結(jié)束后要關(guān)閉工作區(qū)。,小結(jié),程序的基本結(jié)構(gòu)有三種:順序,分支和循環(huán); 程序設(shè)計的目的是處理信息,信息在計算機(jī)中的存放是數(shù)據(jù)存儲;數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)和存儲結(jié)構(gòu);算法是程序設(shè)計的關(guān)鍵; 算法的描述方法有:偽語言,流程圖,盒圖(N-S圖),小結(jié)和提高,程序=數(shù)據(jù)結(jié)構(gòu)+算法 軟件=程序+文檔 程序容易出錯,程序的正確性難以正確,程序不易讀懂和修改;

14、 軟件是產(chǎn)品,它的生產(chǎn)需要管理,需要用工程化的方法來生產(chǎn)軟件;軟件的生命周期包括計劃階段,開發(fā)階段和維護(hù)階段;具體包括:可行性研究,需求分析,總體設(shè)計,詳細(xì)設(shè)計,編碼,測試,運(yùn)行和維護(hù)階段;每一個階段都需要文檔。,本課程內(nèi)容,第一篇:程序設(shè)計與程序設(shè)計語言概述 第一章導(dǎo)論:計算機(jī)文化基礎(chǔ),計算機(jī)模型 第二章:程序及程序設(shè)計,計算機(jī)語言概念;了解各種高級語言,常量,變量,表達(dá)式,語句,函數(shù); 第三章,第三章C語言程序設(shè)計數(shù)據(jù)類型,運(yùn)算符和表達(dá)式,語句,流程控制,函數(shù),數(shù)組等。 第二篇:數(shù)據(jù)結(jié)構(gòu)和算法 掌握線性結(jié)構(gòu)線性表,棧,隊列的存儲結(jié)構(gòu)和常用操作;層次結(jié)構(gòu)樹的概念,網(wǎng)狀結(jié)構(gòu)圖的概念;查找和排序; 掌握算法的描述方法;算法設(shè)計中常用方法如窮舉法,遞歸法,回溯法等;算法快慢的評價方法時間復(fù)雜度。 第三篇:程序設(shè)計方法與原則 程序設(shè)計方法的發(fā)展:模塊化,結(jié)構(gòu)化,面向?qū)ο蟮龋?軟件工程:用工程化的方法以來計劃,開發(fā)和維護(hù)軟件。,本課程學(xué)習(xí)方法,第一篇:程序設(shè)計與程序設(shè)計語言概述 第一章導(dǎo)論,第二章自學(xué)為主,網(wǎng)上討論 第三章,第三章C語言程序設(shè)計實(shí)驗(yàn)學(xué)習(xí);教師講解實(shí)驗(yàn),做實(shí)驗(yàn)題;完成實(shí)驗(yàn)報告; 第二篇:數(shù)據(jù)結(jié)構(gòu)和算法聽課,做習(xí)題,參加網(wǎng)上討論,下載網(wǎng)上資料,復(fù)習(xí) 第三篇:程序設(shè)計方法與原則聽課,做習(xí)題,復(fù)習(xí),本課程的建議學(xué)習(xí)步驟,自學(xué)第一章和

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論