版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計中山大學(xué)科學(xué)計算與計算機應(yīng)用系馮偉2010-09-15ProgramTutor@163.com首先需要明確的問題?學(xué)習(xí)的建議1、養(yǎng)成良好程序書寫風(fēng)格,包括:結(jié)構(gòu)層次縮進(jìn)風(fēng)格、符號書寫風(fēng)格等。2、精通程序調(diào)試和排錯的能力,包括:程序的編譯、連接、單步跟蹤、編譯的環(huán)境等。3、經(jīng)常讀別人編好的好程序,好程序就像一本好書或是一件好的藝術(shù)品,在讀別人程序的同時,你將能體會別人設(shè)計程序的用心和思想,久而久之,自已也能編出這些程序。4、模仿別人編好的程序,從小到大,任何人都是從模仿開始,直到創(chuàng)造屬于自已的作品。模仿是創(chuàng)新的基礎(chǔ)。沒有模仿,就沒有真正的程序設(shè)計高手。模仿的目的是要把別人的程序徹底變成自已的,作為自已創(chuàng)造作品的基礎(chǔ)。5、把對的程序變錯,初學(xué)者最困惑的是程序出了錯而不知道錯在哪兒。把對的程序故意改錯可以讓你了解錯誤信息產(chǎn)生的真正原因。學(xué)習(xí)的建議(續(xù))學(xué)習(xí)的建議(續(xù))6、做一個大作業(yè),至少千行代碼左右,學(xué)會幾樣非常重要的東西:模塊化程序設(shè)計的好處、模塊與模塊之間信息傳遞的方法、怎樣使程序從無到有直到變得很龐大。7、熟練記住一些常規(guī)算法,這點是不得不說的,這幾個算法是不得不記住的:查找(順序查找,折半查找)、排序(選擇排序、插入排序、冒泡排序、合并排序、快速排序)。其它的建議1、反復(fù)讀書,有的學(xué)生說,老師我讀不懂書,真的讀不懂呢,還是沒有讀呢?正確的讀書是一遍不懂、讀兩遍,兩遍不讀、讀三遍,.....,還不懂?再讀。自學(xué)和自我培養(yǎng)是大學(xué)之道。2、學(xué)習(xí)筆記與課本自注。好記性不如爛筆頭,記下課堂和課下的學(xué)習(xí)要點和心得是極為重要和有效的學(xué)習(xí)方法。作為可能是學(xué)習(xí)唯一紀(jì)念的課本,充當(dāng)筆記本可謂“C程秘籍”。3、萬丈高樓平地起,大程序一定是由每一行代碼構(gòu)成的。注意寫好每一行代碼,多思考幾個問題:這行代碼作用是什么?這行代碼放在這里行嗎?這行代碼不要行嗎?改了會怎樣?如何修改和調(diào)整才最好呢?盡可能精通每一行程序。4、萬事開頭難。只要開始編程了,程序就得完成。有了第1行代碼、再想第2行代碼、.......、隨著代碼增加,你的程序?qū)兊迷絹碓酱?,功能越來越強。必要程度的偏?zhí)狂。5、經(jīng)驗是在實踐中增加的,不斷的實踐,記錄下自已的經(jīng)歷,你擁有的知識和能力就會越多。實踐出真知。學(xué)習(xí)小組建議以宿舍為基礎(chǔ),以充分利用盡可能多的時間和機會組內(nèi)相互討論、互幫互學(xué);建議組內(nèi)推選學(xué)習(xí)程序設(shè)計有余力且愿意幫助組內(nèi)同學(xué)學(xué)習(xí)者為組長,組內(nèi)成員支持組長。每個小組都是以共同學(xué)好程序設(shè)計為目的,應(yīng)有小組集體榮譽感,不能坐視或自認(rèn)落后;組內(nèi)、小組之間加強交流,通過座談、網(wǎng)談等研討和上機實踐,共同提高程序設(shè)計能力。請同學(xué)們以學(xué)習(xí)交流方便、有效為原則,考慮決定、自愿組合。不限于小組長和宿舍負(fù)責(zé)人,每個組員或宿舍成員都有義務(wù)和責(zé)任搞好自己的學(xué)習(xí),并幫助其他同學(xué)的學(xué)習(xí),互幫互學(xué),共同提高,培養(yǎng)團(tuán)隊精神,樹立集體榮譽感。平時作業(yè)1、課堂表現(xiàn):
不定期點名、提問和檢查。2、課后作業(yè)和實驗報告:每周自我復(fù)習(xí)、預(yù)習(xí)、多上機編程實踐;作業(yè)本:書面作業(yè)5次、試驗報告5次。3、學(xué)習(xí)總結(jié):期中、期末2次電子版的個人學(xué)習(xí)小結(jié),階段性總結(jié)個人學(xué)習(xí)的優(yōu)缺點。課程成績評定總成績100分平時作業(yè)成績:20分期中考試成績:20分期末考試成績:60分實驗報告的格式程序設(shè)計實驗報告姓名:XXXX班級:XXXX學(xué)號:XXXX
實驗日期:xxxx年xx月xx日
實驗名稱:認(rèn)識C程序的VC++編譯環(huán)境一、實驗?zāi)康模阂獙W(xué)習(xí)和掌握目標(biāo)。二、實驗內(nèi)容:實驗的題目。三、實驗準(zhǔn)備:實驗前預(yù)先設(shè)計好的程序或方案。四、試驗過程:實驗中碰到的問題及解決和改進(jìn)方案。(尤其找出錯原因并改正和改良程序)五、實驗總結(jié):對實驗過程中的心得體會進(jìn)行總結(jié)。本課程目的1、掌握C語言的語法、語義、語用。2、掌握結(jié)構(gòu)化程序設(shè)計的思想、方法。3、掌握小規(guī)模程序的設(shè)計、編寫、調(diào)試。4、掌握程序設(shè)計中一些常規(guī)算法。本課程內(nèi)容概況一、程序設(shè)計初步。二、基本數(shù)據(jù)類型與基本操作。三、結(jié)構(gòu)化的流程設(shè)計。四、模塊化的函數(shù)設(shè)計。五、復(fù)雜數(shù)據(jù)類型及其操作。六、程序開發(fā)與調(diào)試。課程開講?。ㄒ唬┏绦蛟O(shè)計初步1、C語言入門2、算法和程序概述1C語言入門1.1C語言的歷史演化1.2C語言的特點1.3C語言的風(fēng)格和結(jié)構(gòu)1.4C語言程序的上機1.1C語言的歷史演化1、C語言是國際上廣泛流行的計算機高級語言,既可寫系統(tǒng)軟件,也可寫應(yīng)用軟件。2、匯編語言到C語言自然演變:
匯編語言依賴于計算機硬件,程序的可讀性和可移植性都比較差;低級匯編語言對硬件的直接操作(如:內(nèi)存地址和二進(jìn)制位的操作),高級語言良好的可讀性和可移植性,兩者結(jié)合為C語言。3、開發(fā)Unix操作系統(tǒng)的歷史契機:美國貝爾實驗室的K.Thompson和D.M.Ritchie
匯編語言->B語言->C語言。
C語言歷史發(fā)展過程1970年:B語言(貝爾實驗室)1960年:ALGOL60語言1963年:CPL語言(劍橋大學(xué))1967年:BCPL語言(劍橋大學(xué))1973年:C語言(貝爾實驗室)1978年:傳統(tǒng)C語言1990年:ANSIC語言ANSI對C標(biāo)準(zhǔn)化并獲ISO批準(zhǔn)改進(jìn)和修訂保持優(yōu)點改進(jìn)缺點進(jìn)一步簡化簡化接近硬件1.2C語言的特點1).語句簡潔、緊湊,使用方便、靈活。2).運算符豐富。3).數(shù)據(jù)結(jié)構(gòu)豐富。4).具有結(jié)構(gòu)化控制語句和模塊化函數(shù)。5).語法限制不太嚴(yán)格,程序設(shè)計自由度大。6).能直接對硬件進(jìn)行地址和位操作。7).生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。8).程序可移植性好。C語言的可移植性好、硬件控制能力高,表達(dá)和運算能力強,因此許多大軟件都用C編寫。事實上,前述八個特點可以概括壓縮為下述三大優(yōu)勢:1、具有結(jié)構(gòu)化控制語句,適合結(jié)構(gòu)化程序設(shè)計。2、提供豐富數(shù)據(jù)結(jié)構(gòu),適合復(fù)雜應(yīng)用軟件設(shè)計。3、允許直接訪問地址進(jìn)行位操作,適合系統(tǒng)軟件設(shè)計。
C優(yōu)勢是開發(fā)操作系統(tǒng)和系統(tǒng)應(yīng)用程序以及其它對硬件進(jìn)行操作的情況。為什么要學(xué)習(xí)C語言1.C語言功能強大,表達(dá)能力強。2.生成的目標(biāo)程序效益高,可移植性好。3.既具有高級語言的優(yōu)點,又有低級語言特色。4.C語言又是面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)。5.應(yīng)用面非常廣泛。6.大家自身的需要。幾句題外話Fortran是科學(xué)計算的首選語言,建議自學(xué)掌握數(shù)值計算程序設(shè)計。
Linux操作系統(tǒng)是將來的主流,建議自學(xué)掌握基于該系統(tǒng)的應(yīng)用軟件以及進(jìn)行程序設(shè)計。
Matlab、Mathematica、Maple數(shù)學(xué)計算好幫手。1.3C語言的風(fēng)格和結(jié)構(gòu)#include<stdio.h>/*編譯預(yù)處理命令*/voidmain(){intmax(int,int);/*函數(shù)原型聲明*/inta,b,c;/*變量聲明*/scanf(“%d,%d”,&a,&b);/*格式符、取地址符*/printf("Inputtwonumbersfromkeyboard:\n");c=max(a,b);/*函數(shù)調(diào)用*/printf("max=%d\n",c);}intmax(intx,inty)/*函數(shù)定義*/{ intz; if(x>y) z=x; else z=y; return(z);}
一個簡單的
C程序程序是由一行行符號序列表達(dá)的,空格將符號序列區(qū)分為:關(guān)鍵字:int、if、else、return等說明語句、數(shù)據(jù)性質(zhì);標(biāo)識符:main、max、a、b、c、x、y、z等函數(shù)或變量等名字;運算符:&、=、>等表示指定運算或操作;字符(串):%d、\n、Input…:等的字符或字符列;特殊符號:#、{、}、,、;、/*、*/、(、)等。C程序的基本組成C語言的基本風(fēng)格1).嚴(yán)格區(qū)分大小寫英文字母。2).用“;”作為語句結(jié)束符。3).用大括號“{”和“}”配對標(biāo)識一個語句組。4).書寫格式自由,一行幾句或一句幾行都可以。5).可以使用/*…*/對程序中任何部分做注釋。C語言的基本結(jié)構(gòu)一個C程序由一個或多個函數(shù)組成,但是至少有一個稱為main的函數(shù),該函數(shù)是C語言直接執(zhí)行的函數(shù),其它函數(shù)通過調(diào)用等實現(xiàn)運行。1).一個C程序由一到多個函數(shù)構(gòu)成。2).一個C程序中至少有且只能有一個main函數(shù)。3).程序從main進(jìn)入,從main退出。C語言的書寫風(fēng)格
C程序的書寫風(fēng)格雖不是C程序設(shè)計的內(nèi)容,但是良好的書寫風(fēng)格可以保證程序結(jié)構(gòu)層次清晰,充分體現(xiàn)結(jié)構(gòu)化程序的特點,便于閱讀、理解和排錯。這對于想成為C程序設(shè)計高手的人而言,是必不可少的。1).一般情況下,每個語句占一行。2).行太長時分行書寫,但是要使各行盡量有意義,運算符不要寫在行首。3).注意不同結(jié)構(gòu)層次的不同縮進(jìn),而同一層次語句對齊。
4).適當(dāng)插入空格,以保證程序清晰,易讀。C語言的注釋風(fēng)格1).注釋的目的是程序容易讀。2).每個函數(shù)定義之前一行作注釋。3).只對重要的局部變量作注釋。4).每個全局變量都作注釋,說明該變量的作用及含義。5).對所用的復(fù)雜條件作注釋,說明條件的含義。6).多余或錯誤的注釋是有害的。C語言源程序的建立和運行的基本過程
靜態(tài)檢查目標(biāo)程序可執(zhí)行程序
編輯編譯連接執(zhí)行結(jié)果
源程序
動態(tài)檢查
有錯F.cF.objF.exe有錯有錯有錯1.4C語言程序的上機C語言運行環(huán)境1、TurboC/C++編譯快,代碼效率低,使用方便。2、BorlandC/C++要求內(nèi)存較大,集成環(huán)境功能強大,調(diào)試方便,編譯慢,但代碼效率高。3、VisualC++功能較大,與Windows高度結(jié)合,程序調(diào)試方便。為目前主流C++編譯器。MicrosoftVisualStudio、Code::BlocksVisualC++6.0集成環(huán)境使用1、啟動界面MicrosoftVisualC++工作窗口源代碼編輯窗口輸出窗口(編譯、調(diào)試)ViewWorkspaceviewOutput編譯錯誤信息(Error、Warning)打開方法:ViewWorkspace或Alt+0是顯示程序框架的地方,可從三種角度觀察程序:
ClassView—類視圖
Resourses—資源視圖
FileView—文件視圖從文件的角度從程序資源從類的角度2、工作窗口用戶編輯程序、資源的全屏幕編輯器。在選擇“工作窗口中的”項目時,會出現(xiàn)右圖。程序文件名3、源代碼編輯窗口編譯窗口調(diào)試窗口輸出窗口,可關(guān)閉或打開:組合鍵:Alt+2
菜單:viewOutput
4、輸出窗口輸出窗口可以顯示:編譯錯誤信息(Error、Warning)調(diào)試變量狀態(tài)文件查找結(jié)果等信息。工程管理菜單項編譯,運行程序菜單項5、VC++菜單(1)新建程序(FileNew)(2)輸入或編輯程序(3)保存程序(FileSave–Ctrl+S)(4)編譯程序(BuildCompile–Ctrl+F7)(5)建立程序(BuildBuild–F7)(6)運行程序(BuildExecute–Ctrl+F5)6、程序上機過程首先,在Windows資源管理器的F盤符下建立個人名字目錄。而后,單擊FileNew,在”新建項目”對話框中輸入項目名。(1)新建程序—第一步接上步,當(dāng)按下“OK”按鈕后。(1)新建程序—第二步(1)新建程序—第三步接上步,按下“Finish”按鈕,按下“OK”按鈕。(1)新建程序—第四步單擊FileNew,在“新建文件”對話框中輸入后綴為.c的文件名。(1)新建程序—簡化步驟首先,在Windows資源管理器的F盤符下建立個人名字目錄以及子目錄名。而后,單擊FileNew,在“新建文件”對話框輸入后綴為.c的文件名。(2)編輯程序接上步,按下“OK”按鈕后,輸入、編輯程序方法一:按工具欄上“保存”或“保存所有”所有圖標(biāo)方法二:按Ctrl+S方法三:FileSave
或FileSaveAll(3)保存程序接上步,保存程序編譯程序:Compile(Ctrl+F7)。無錯時的“Output”窗口:建立程序:Build(F7)。無錯時的“Output”窗口:執(zhí)行程序:Execute(Ctrl+F5)。執(zhí)行結(jié)果:(4、5、6)編譯、建立、運行程序(Build菜單)熟悉VC++運行環(huán)境和建立運行C程序的上機試驗1、上機學(xué)習(xí)使用VisualC++6.0系統(tǒng)環(huán)境:系統(tǒng)界面、菜單列表及相應(yīng)功能。2、通過編輯輸入簡單C語言程序,建立、編譯并運行這些例題程序,以掌握C語言程序的建立和運行過程。3、了解和區(qū)分C語言程序的基本組成和結(jié)構(gòu),認(rèn)真領(lǐng)會程序的書寫要求以寫出層次清晰、結(jié)構(gòu)分明的C程序。2.1利用計算機解題的過程2.2算法的概念、特性和表示2.3計算機語言和計算機程序2.4結(jié)構(gòu)化程序設(shè)計的思想和方法2算法和程序概述2.1利用計算機解題的過程使用計算機解題必須按照計算機能夠接受的方式進(jìn)行工作。一般經(jīng)過以下詳細(xì)步驟:1)、明確需解決的問題和最后應(yīng)達(dá)到的要求。2)、分析問題,構(gòu)造模型。比如:建立數(shù)學(xué)模型。3)、選擇和確定算法,畫出流程示意圖。4)、按流程示意圖表示的算法步驟,編寫高級語言程序。5)、編譯和調(diào)試程序。反復(fù)試算修改,得到可用程序。6)、正式運行,得到正確的運算結(jié)果。7)、整理資料,寫出程序說明書等技術(shù)報告。(1)分析問題:確定問題的已知條件和未知條件,確定問題需要輸入和輸出什么等,這是工作的前提和基礎(chǔ)。(2)算法設(shè)計:這是較難的一個步驟,一般一個問題的算法可以有多種,應(yīng)該選擇一個比較好算法的作為為主要實現(xiàn)算法,并畫出流程圖。(3)編寫代碼:選擇合適的程序語言實現(xiàn)算法,這是最為簡單的一步。(4)程序調(diào)試與運行:這一步主要是查找程序中有可能出現(xiàn)的錯誤,并通過運行觀察程序的運行結(jié)果與預(yù)期的是否一樣。(5)資料整理:把前面四步,每步解決的問題書寫出來,以備將來查找,也有利于總結(jié)程序設(shè)計的經(jīng)驗。經(jīng)驗:分析問題不全面,也不進(jìn)行算法設(shè)計就開始編寫代碼,這樣寫出的程序一定會錯漏百出,即便是最有經(jīng)驗的程序員也會出錯,而且有些錯誤必將導(dǎo)致將來用更多的時間來改正,害人不淺,這非危言聳聽!務(wù)必養(yǎng)成良好的解題編程習(xí)慣!
計算機解題簡略步驟復(fù)雜程序的開發(fā)-軟件工程軟件從其產(chǎn)生到消亡,經(jīng)歷定義(12)、開發(fā)(3456)和使用維護(hù)(78)三個階段。所謂軟件工程是指運用工程學(xué)的知識和方法指導(dǎo)軟件的開發(fā)工作,以提高軟件質(zhì)量和軟件成本。包括8個步驟:(1).軟件開發(fā)計劃確定-系統(tǒng)分析員和用戶(2).需求分析-系統(tǒng)分析員和用戶(3).總體設(shè)計-高級程序員(主設(shè)計師)(4).詳細(xì)設(shè)計-程序員(5).編寫高級語言程序-程序員(6).軟件測試-有經(jīng)驗的高水平的程序員(7).交付使用-有經(jīng)驗的高水平的程序員(8).軟件維護(hù)-有經(jīng)驗的高水平的程序員軟件開發(fā)的過程也可以分為下面6個階段(1).軟件計劃-可行性分析、工作范圍和代價(2).需求分析(做什么)-功能需求、性能需求、環(huán)境需求與限制(3).軟件設(shè)計(怎么做)-概要設(shè)計和詳細(xì)設(shè)計(4).軟件編碼-用具體語言實現(xiàn)設(shè)計(5).軟件測試-單元測試和綜合測試(6).軟件維護(hù)-已交付的軟件修改、擴充、排錯2.2算法的概念、特性和表示1)、算法的概念算法是指為了解決一個問題而需進(jìn)行的步驟,即一步一步的過程。它是對解題方法和步驟的描述。為了有效解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法。這里僅討論計算機算法,即計算機能執(zhí)行的算法。計算機算法分為數(shù)值算法和非數(shù)值算法。計算機在非數(shù)值運算方面的應(yīng)用遠(yuǎn)遠(yuǎn)超過在數(shù)值運算方面。需要掌握一些典型的算法,編寫相應(yīng)的程序。
2)、典型算法舉例
例1:兩個杯子的水交換算法(交換算法本質(zhì))假定水分別放在A杯子和B杯子中,問題的解決可以這樣:考慮借助第三只空杯子C。第一步:先把A杯子的水放入C杯子中;第二步:把B杯子的水放入A杯;第三步:把C杯子的水放入B杯。例2:A、B、C三個作為上人由矮到高排列算法(冒泡算法本質(zhì))第一步:比較A、B座位上兩人的高矮,如果A座位的人比B座位的人高,則A、B座位的人交換位置;(此時A座人矮B座人高)第二步:比較B、C座位上兩人的高矮,如果B座位的人比C座位的人高,則B、C座位的人交換位置;(此時B座人矮C座人高且C座人最高)第三步:比較A、B座位上兩人的高矮,如果A座位的人比B座位的人高,則A、B座位的人交換位置。(此時A座人矮B座人高且B座人次高)
1.學(xué)生看書15分鐘:課本P15~18的2.2簡單算法舉例2.注意體會:用”順序,選擇,循環(huán)”的思想和方法設(shè)計算法
2)、算法的特性
a.)有窮性:算法應(yīng)包含合理執(zhí)行時間內(nèi)的有限操作步驟。
b.)確定性:算法中每一個步驟應(yīng)當(dāng)唯一確定無二義。
c.)有效性:算法中每一個步驟應(yīng)當(dāng)有效執(zhí)行得到確定結(jié)果。
d.)有零個或多個輸入:算法的作用是處理必要的外界信息。
e.)有一個或多個輸出:算法的目的是為了求解。3)、算法的表示方法(學(xué)生15分鐘看書P20~P34)a.)自然語言:優(yōu)劣
b.)傳統(tǒng)流程圖:優(yōu)劣美國標(biāo)準(zhǔn)化協(xié)會(AmericanNationalStandardInstitute,ANSI)熟悉P20的圖2-3的框圖及其含義。明確傳統(tǒng)流程圖的弊端-BS算法。明確改進(jìn)傳統(tǒng)流程圖的思路和方法。
c.)改進(jìn)的流程圖:1966年Bohra和Jacopini三種基本結(jié)構(gòu)
需要掌握三種基本結(jié)構(gòu)、P25的框圖2-14,15,17及其特點。d.)N-S流程圖:1973年Nassi和Shneiderman結(jié)構(gòu)化流程圖
需要掌握用N-S流程圖2-24,25,2627表示算法。盒圖(BoxDiagram)。
e.)偽代碼(PseudoCode):偽代碼用基于自然語言和計算機語言之間的文字和符號描述算法。比較流程圖表示算法的優(yōu)劣。需要掌握用偽代碼表示算法。f.)計算機語言:用計算機語言描述的算法叫程序用N-S流程圖或偽代碼描述算法后,只有用計算機語言編寫程序描述算法,進(jìn)而編譯成目標(biāo)程序被計算機識別和執(zhí)行,才是實現(xiàn)算法。三種基本結(jié)構(gòu)的流程圖順序結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)(While)型直到(Until)型循環(huán)結(jié)構(gòu)1.選擇結(jié)構(gòu)可以簡單派生出單分支和多分支選擇結(jié)構(gòu)。2.順序結(jié)構(gòu)和選擇結(jié)構(gòu)是單向執(zhí)行,而循環(huán)結(jié)構(gòu)是環(huán)形重復(fù)執(zhí)行。3.循環(huán)結(jié)構(gòu)尤其注意和區(qū)別循環(huán)執(zhí)行和退出條件(while…do…、do…until…)。4.直到型循環(huán)至少執(zhí)行一次,但當(dāng)型循環(huán)可能一次都不執(zhí)行。除此以外,當(dāng)型循環(huán)和直到型循環(huán)是等價的。ABab??PABabTF???aTFAP2b?Aa?P1b?FT三種基本結(jié)構(gòu)的共同特點基本結(jié)構(gòu)具有的共同特點是:1)只有一個入口。2)只有一個出口。3)結(jié)構(gòu)內(nèi)每一部分都有機會被執(zhí)行。4)結(jié)構(gòu)內(nèi)不存在無終止的死循環(huán)?;窘Y(jié)構(gòu)可以派生或組合其它結(jié)構(gòu)。由三種基本結(jié)構(gòu)以及它們派生或組合的結(jié)構(gòu)順序組成的算法,組成結(jié)構(gòu)化的算法,可以解決任何復(fù)雜的問題。ABABFTPWhilePTrueAUntilPTrueA三種基本結(jié)構(gòu)的N-S流程圖順序結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)(While)型直到(Until)型循環(huán)結(jié)構(gòu)重點掌握、熟練運用:問題?1.單分支選擇和多分支選擇的N-S流程圖?2.循環(huán)結(jié)構(gòu)具體的N-S流程圖?TPFATPFB單分支選擇N-S流程圖P=P1P=P2TTFFABC三分支選擇N-S流程圖循環(huán)變量賦初值當(dāng)循環(huán)變量滿足執(zhí)行條件循環(huán)變量遞變A
當(dāng)(While)型循環(huán)結(jié)構(gòu)循環(huán)變量賦初值直到循環(huán)變量滿足終止條件循環(huán)變量遞變A
直到(Until)型循環(huán)結(jié)構(gòu)
結(jié)構(gòu)化算法的特點1)由一些基本結(jié)構(gòu)順序組成。2)每個基本結(jié)構(gòu)可以包含其它的基本結(jié)構(gòu)。3)基本結(jié)構(gòu)內(nèi)不存在向前或向后的無規(guī)律跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個基本結(jié)構(gòu)范圍之內(nèi)。4)若一個算法不能分解為若干個基本結(jié)構(gòu),則必然不是一個結(jié)構(gòu)化算法。N-S流程圖表示算法實例例1.閏年的判斷。n/400余數(shù)為0n/100余數(shù)不為0n/4余數(shù)為0打印n非閏年打印n非閏年打印n是閏年打印n是閏年FTFTTF輸入n輸入n標(biāo)志數(shù)w=0i=2n/i余數(shù)為0F直到i>或w0輸出n是素數(shù)輸出n非素數(shù)w=1i=i+1w=0TTF例2.素數(shù)的判斷。N-S流程圖的優(yōu)點1)比文字描述直觀形象,易于理解。2)比傳統(tǒng)流程圖緊湊易畫,尤其廢除流程線,整個算法結(jié)構(gòu)由基本結(jié)構(gòu)按順序組成。3)上下順序就是執(zhí)行順序,讀寫算法方便易行。4)表示的算法都是結(jié)構(gòu)化算法,不可能出現(xiàn)流程無規(guī)律跳轉(zhuǎn),只能自上而下順序執(zhí)行。關(guān)于偽代碼和N-S流程圖表示算法的說明
偽代碼不用圖形符號,而是用文字和符號描述算法。這些文字和符號并沒有嚴(yán)格的格式,事實上只要自己看懂、不至于出現(xiàn)邏輯錯誤就足夠了。因此對于自己將算法寫成程序是極為自由和方便的,易寫、易讀、易改。
而N-S圖要求有嚴(yán)格、統(tǒng)一的形式,必須用基本結(jié)構(gòu)表示,結(jié)構(gòu)化思路嚴(yán)謹(jǐn)。很大程度上是為了交流的方便,是給別人讀的。但是因為用圖形符號描述算法,對于復(fù)雜的算法,表示和修改使用不方便。所以,出于培養(yǎng)嚴(yán)謹(jǐn)性和交流方便,使用N-S流程圖描述算法;而出于自己寫程序的方便,建議使用偽代碼描述算法。2.3計算機語言和計算機程序計算機語言是人與計算機交流的語言,聯(lián)系的媒介,人們只有學(xué)習(xí)和掌握計算機語言才能控制計算機完成相應(yīng)的功能。每一種計算機語言都規(guī)定了各自的語法規(guī)則和使用含義。計算機語言:語法(規(guī)則)、語義(涵義)、語用(應(yīng)用)。為解決某一個特定的問題,而用某種語言編寫的指令序列稱為程序。辨析:語言是全部指令的結(jié)合,而程序是為實現(xiàn)某一算法從某特定語言中選用所需的指令組成的指令序列。這個指令序列應(yīng)該是時間有序的。這里,計算機語言與程序設(shè)計語言是等價的,計算機程序與程序是等價的。計算機算法的組成
1、運算操作:算術(shù)運算、邏輯運算、關(guān)系運算、函數(shù)運算、位運算、I/O操作等。2、控制結(jié)構(gòu):控制算法中各個操作的執(zhí)行順序。三種基本控制結(jié)構(gòu)是:順序結(jié)構(gòu)(順序執(zhí)行)選擇結(jié)構(gòu)(比較判斷)循環(huán)結(jié)構(gòu)(反復(fù)執(zhí)行)
為寫出一個程序,必須先設(shè)計算法。有了正確的算法(例如已經(jīng)畫出N-S流程圖或?qū)懗鰝未a程序)才能正確地編寫程序。另一方面,程序的處理對象是數(shù)據(jù),每個數(shù)據(jù)都有一定的特性,而且數(shù)據(jù)之間還有一定的聯(lián)系。當(dāng)處理對象比較復(fù)雜時,必須仔細(xì)分析數(shù)據(jù)以及它們之間的聯(lián)系,即選擇合適的數(shù)據(jù)結(jié)構(gòu)。對于不同的數(shù)據(jù)結(jié)構(gòu),在程序中采用不同的處理方法。因此,程序不僅要描述算法(操作步驟),還應(yīng)當(dāng)描述數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的類型和組織形式)。著名計算機科學(xué)家沃思(Wirth)說:“程序就是在數(shù)據(jù)的特定的表示方式和結(jié)構(gòu)的基礎(chǔ)上,對抽象算法的具體描述?!彼惴ǎ珨?shù)據(jù)結(jié)構(gòu)=程序算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計方法+語言工具和環(huán)境=程序靈魂加工對象結(jié)構(gòu)化和模塊化工具成果
計算機語言分類1、機器語言:用二進(jìn)制來編寫計算機指令的語言,計算機直接認(rèn)識。難學(xué)、難編、難記。2、匯編語言:符號語言用助記符表示計算機指令,命令與機器語言基本一一對應(yīng)。機器語言和匯編語言都是面向機器的語言。優(yōu)點:速度快,適于實時系統(tǒng)。缺點:嚴(yán)重依賴計算機硬件系統(tǒng),可移植性差。3、高級語言:面向結(jié)構(gòu)C、Fortran、面向?qū)ο驝++和Java與人的自然語言很相近的語言。
高級語言程序必須經(jīng)過翻譯系統(tǒng)處理后才能在操作系統(tǒng)下執(zhí)行。1、解釋性高級語言:邊解釋邊執(zhí)行。這種語言編寫的源程序,錯誤只能在執(zhí)行過程中才能逐步發(fā)現(xiàn)。如Matlab語言。源程序解釋語言執(zhí)行連接(生成可執(zhí)行程序)執(zhí)行源程序編譯(生成目標(biāo)程序)
2、編譯式高級語言:經(jīng)過編譯(查找所有錯誤)和連接后生成機器語言,計算機才能執(zhí)行。高級語言按照翻譯程序分類數(shù)學(xué)和計算機中的等號數(shù)學(xué)符號“=”有兩層含義,一是“賦值”;二是“相等”。計算機語言不能處理兩義性或歧義性,只能處理確定性唯一性,所以,計算機語言符號中“=”是“賦值運算符”;“==”是“相等關(guān)系運算符”。
三種基本結(jié)構(gòu)(順序、選擇、循環(huán))組成的算法是結(jié)構(gòu)化算法,而用高級語言編寫的結(jié)構(gòu)化算法就是結(jié)構(gòu)化程序。這種程序便于編寫、閱讀、修改和維護(hù),因此減少了程序出錯的機會,提高了程序的可靠性,保證了程序的質(zhì)量。
結(jié)構(gòu)化程序設(shè)計強調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。基本思路是:把一個復(fù)雜問題的求解過程分階段進(jìn)行,每個階段處理的問題都控制在為人容易理解和處理的范圍內(nèi)。
結(jié)構(gòu)化程序設(shè)計的本質(zhì):總體結(jié)構(gòu)-層次樹狀;局部組織-模塊化;一般不允許goto轉(zhuǎn)向;數(shù)據(jù)和過程分開表示和存儲。2.4結(jié)構(gòu)化程序設(shè)計的思想和方法結(jié)構(gòu)化程序設(shè)計的方法(1).自頂向下:有序性(2).逐步細(xì)化:由粗到細(xì)的層次性(3).模塊化設(shè)計:按功能化分為模塊即函數(shù)模塊是功能單一、結(jié)構(gòu)清晰、接口簡單、容易理解的函數(shù)。(4).結(jié)構(gòu)化編碼:三種基本結(jié)構(gòu)模塊化程序設(shè)計思想-分而治之1、任何一個程序可以分解成多個小的程序。2、多個小程序可以互相使用而構(gòu)成一個大的程序。問題是如何組織:分解、組合(1)一個程序是怎樣分解成多個小程序的?(2)多個小程序是怎樣連接構(gòu)成一個大程序的?ABCDEFGHIJKLM模塊化程序-函數(shù)1、函數(shù):完成特定功能的、
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 事業(yè)單位內(nèi)部借款管理協(xié)議2024版版A版
- 2025-2030全球工業(yè)紡織品粉碎機行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國氨基聚苯乙烯微球行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球曲線輸送機行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國金屬玻璃行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 個性化民間房屋抵押貸款協(xié)議樣本版
- 2025年度設(shè)備搬運與運輸安全保障合同3篇
- 二零二五年度海洋資源承包轉(zhuǎn)讓合同3篇
- 二零二五版?zhèn)€人年收入證明制作流程與合同規(guī)范3篇
- 二零二五年度網(wǎng)絡(luò)安全審查責(zé)任協(xié)議范本2篇
- 安裝空調(diào)勞務(wù)合同協(xié)議書
- 自動化生產(chǎn)線設(shè)計報告
- 藥理治療中樞神經(jīng)系統(tǒng)退行性疾病藥
- 八年級英語上冊語法填空練習(xí)題(含答案)
- 新漢語水平考試 HSK(四級)試題及答案
- 圣經(jīng)中的正月初一
- 產(chǎn)品規(guī)格說明書范本
- 2024年江蘇省初中英語聽力口語自動化考試綱要(朗讀短文話題簡述)
- 華為財務(wù)管理(6版)-華為經(jīng)營管理叢書
- 美容院選址評估簡表
- 工程材料(構(gòu)配件)設(shè)備清單及自檢結(jié)果表
評論
0/150
提交評論