版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第5章算法與程序設(shè)計算法4.程序設(shè)計開發(fā)環(huán)境3.程序設(shè)計方法2.程序設(shè)計語言1.一、算法什么是算法?規(guī)范的定義:定義一個可終止過程的有序的、無歧義的、可執(zhí)行的步驟的集合簡單的理解:解決計算問題的方法,可以用一系列操作步驟來描述所有步驟應(yīng)有明確的執(zhí)行順序每一步操作均應(yīng)具體、唯一每一步操作都應(yīng)有效應(yīng)帶來最終的確定執(zhí)行結(jié)果1、若A大于B,則比較A、C2、若A大于C,則A最大;否則C最大3、若B大于A,則比較B、C4、若B大于C,則B最大;否則C最大使用不同類型的語言怎樣表示算法?舉例在A、B、C中找出最大數(shù)ifA>BthenifA>CthenAisMax;else
CisMax;IfB>AthenifB>Cthen
BisMax;else
CisMax;A>B?max←AEndStartmax←BC>max?max←CYesYesNoNo算法描述方法:自然語言、流程圖、偽代碼、程序設(shè)計語言……流程圖:算法的常用描述方法A>B?max←AEndStartmax←BC>max?max←CYesYesNoNo用一組幾何圖形和有向線條、配以簡單文字符號來表示算法起止框處理框判斷框流程線I/O框連接點用以上符號可以表示任意復(fù)雜的算法如何發(fā)現(xiàn)算法?發(fā)現(xiàn)算法是一種富有挑戰(zhàn)性的藝術(shù)性工作今有雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。凡百錢買雞百只,問雞翁母雛各幾何。FORa=0TO100FORb=0TO100FORc=0TO100IFa+b+c=100AND5a+3b+c/3=100THENPRINTa,b,cENDIFNEXTcNEXTbNEXTa
窮舉法①a+b+c=100②5a+3b+c/3=100其它基本算法累加、累乘、迭代、遞歸、交換、查找、排序、……對同一問題有不同的算法
(X1+X2)X3Y=+Y=X1X3X2X3vsFORa=0TO100FORb=0TO100FORc=0TO100IFa+b+c=100AND5a+3b+c/3=100THENPRINTa,b,cENDIFNEXTcNEXTbNEXTa
a、b、c的組合方案數(shù):共100*100*100種若考慮:a最多為100/5=20,則a、b、c的組合方案數(shù):共20*100*100種若考慮:b最多為100/3=33,則a、b、c的組合方案數(shù):共20*33*100種哪種方案更好?還有沒有更好的算法?對算法的評價與分析評價一種算法正確性可理解性時間復(fù)雜度空間復(fù)雜度算法運行時間的函數(shù)算法占用內(nèi)存空間大小的函數(shù)時、空復(fù)雜度與求解問題的規(guī)模及需處理數(shù)據(jù)量的大小有關(guān)二、程序設(shè)計語言機器語言:最低級的語言特點:
面向機器硬件,直接以二進制書寫程序,是計算機唯一能夠認(rèn)識的語言0001
010101101100
//將內(nèi)存6C單元數(shù)據(jù)加載進寄存器R50001
011001101101//將內(nèi)存6D單元數(shù)據(jù)加載進寄存器R60101
0000
0101
0110//將R5與R6相加,結(jié)果送入寄存器R00011
0000
01101110//
將R0數(shù)據(jù)存儲進內(nèi)存6E單元1100
000000000000//停機缺陷編寫困難,代碼冗長,容易出錯,難以閱讀和理解,可移植性差LDR5,6C//將內(nèi)存6C單元數(shù)據(jù)加載進寄存器R5LDR6,6D
//將內(nèi)存6D單元數(shù)據(jù)加載進寄存器R6ADDR0,R5,R6//將R5與R6相加,結(jié)果送入寄存器R0STR0,6E//
將R0數(shù)據(jù)存儲進內(nèi)存6E單元HLT
//停機匯編語言:符號化的低級語言特點
與機器語言本質(zhì)相同,面向底層硬件操作,因采用助記符而較易使用計算機能直接認(rèn)識匯編語言嗎?否!必須經(jīng)過匯編操作!對匯編語言程序的匯編操作匯編程序:一類系統(tǒng)軟件LDR5,6CLDR6,6DADDR0,R5,R6STR0,6EHLT00010101011011000001011001101101010100000101011000110000011011101100000000000000
源程序目標(biāo)程序高級語言:類自然、數(shù)學(xué)語言inputX1;inputX2;Y=X1+X2;printY;scanf(“%d”,&x1);if(x1==my_password)
printf(“Welcome!”);else
printf(“Error!”);“高級”的含義:1、從問題的角度考慮,而非從機器的角度
2、繞開復(fù)雜的硬件問題,易于掌握和使用
3、主要用于編寫位于較高層次的應(yīng)用程序常見高級語言:
AdaFortranBASIC、VisualBASIC
C、C++、C#
Java……與匯編語言類似需要將高級語言源程序翻譯
成機器語言目標(biāo)程序整體編譯
vs
逐行解釋不同類型的高級語言面向?qū)ο竺嫦蜻^程
面向問題面向函數(shù)面向過程型:注重解決問題的算法和實現(xiàn)過程細(xì)節(jié)面向?qū)ο笮停耗M現(xiàn)實世界中各種對象之間的交互三、程序設(shè)計方法程序設(shè)計的一般過程AddYourTitle分析問題理解問題明確要求整理入口規(guī)劃出口設(shè)計算法總體規(guī)劃逐層抽象自上而下由粗到細(xì)編碼確定語言選擇工具遵守語法自下而上調(diào)試程序編譯連接試運行反復(fù)調(diào)試以輸入密碼登錄系統(tǒng)為例AddYourTitle整理文檔使用說明開發(fā)資料階段化成果連接將編譯產(chǎn)生的目標(biāo)程序轉(zhuǎn)換為可執(zhí)行程序程序設(shè)計中的基本概念變量:X1、X2、Y運算符:+、-、*、/、and、or、not、……InputX1InputX2Y=X1+X2PrintYINPUTpwdIFpwd=my_passwordTHENPRINT“Welcome!”ELSEPRINT“Error!”ENDIF整型int:X1=13;X2=378實型float:X1=12.47;X2=3.9字符型char:x1=‘a(chǎn)’;x2=‘K’字符串型string:pwd=“helloword”……變量有不同數(shù)據(jù)類型常量:X1=123表達式:X1+X2語句:Y=X1+X2因此變量在使用之前必須先行定義程序設(shè)計中的基本概念DefineX1,X2,YasIntegerInputX1InputX2Y=X1+X2PrintYDefinex1asStringINPUTx1IFx1=my_passwordTHENPRINT“Welcome!”ELSEPRINT“Error!”ENDIF注釋語句//在屏幕上顯示X1和X2相運算的結(jié)果執(zhí)行性語句說明性語句說明性語句:編譯后不產(chǎn)生目標(biāo)代碼執(zhí)行性語句:編譯后將產(chǎn)生目標(biāo)代碼順序結(jié)構(gòu)三種基本程序控制結(jié)構(gòu)語句A語句BInputX1InputX2Y=X1+X2PrintY分支結(jié)構(gòu)語句B語句A條件TrueFalseINPUTx1IFx1=“123”THENPRINT“Yse”ELSEPRINT“No”ENDIF循環(huán)結(jié)構(gòu)語句A條件TrueFalse可以是多條語句的集合Sum=0i=1DoSum=Sum+ii=i+1LoopWhilei<=100PrintSum語句A條件TrueFalseWhile-do型Do-while型結(jié)構(gòu)化程序設(shè)計方法任何復(fù)雜算法,都可以由此三種結(jié)構(gòu)組成子程序:另一種重要的基本結(jié)構(gòu)子程序、過程、函數(shù)、……功能相對獨立的程序段,可以由其它程序調(diào)用InputX1InputX2Y=X1+X2PrintY……InputX1InputX2Y=X1+X2PrintY……InputX1InputX2Y=X1+X2PrintYSubAdder
InputX1InputX2
Y=X1+X2PrintYEndSubCallAdder……CallAdder……CallAdder……子程序的要素調(diào)用、跳轉(zhuǎn)、執(zhí)行、返回程序模塊化1、將復(fù)雜程序劃分為若干個功能模塊2、各個模塊可相對獨立開發(fā)3、模塊之間通過一定的接口相互聯(lián)系面向?qū)ο蟮姆椒ǎ焊咏F(xiàn)實世界面向過程的方法:強調(diào)如何實現(xiàn)過程的細(xì)節(jié),將數(shù)據(jù)及其操作截然分開面向?qū)ο蟮姆椒ǎ耗M現(xiàn)實世界中的人類思維方式,用對象表達各種元素面向?qū)ο蟮姆椒嫦蜻^程的方法主控程序發(fā)球回?fù)粲嬎懵窂脚蟹挚紤]一個網(wǎng)球游戲開發(fā)PlayerAPlayerB技巧Skill力度Endurance發(fā)球Serve回?fù)鬜eturn屬性方法PlayerClassJudgeScore面向?qū)ο蟮姆椒ǎ焊咏F(xiàn)實世界JudgeScorePlayerAPlayerB裁決發(fā)球裁決回?fù)粜薷挠嫹忠蠡負(fù)粢蠡負(fù)舨脹Q回?fù)艨蓪崿F(xiàn)軟件復(fù)用像其它工程領(lǐng)域一樣,將已有的軟件產(chǎn)品做成構(gòu)件(組件),
并用于新的軟件系統(tǒng)組裝和集成,從而實現(xiàn)產(chǎn)業(yè)化四、程序設(shè)計開發(fā)環(huán)境狹義的程序設(shè)計過程編輯編譯連接調(diào)試發(fā)布產(chǎn)生源程序產(chǎn)生目標(biāo)程序產(chǎn)生可執(zhí)行程序編輯程序Editor編譯程序Compiler連接程序Linker調(diào)試程序DebuggerIDE集成開發(fā)環(huán)境IntegratedDevelopmentEnvironment整合以上各項工具的應(yīng)用軟件套件一般針對特定語言量身打造TurboC:學(xué)習(xí)C語言編程的經(jīng)典工具小巧,快捷、但:只能用鍵盤操作,只能編輯一份程序VisualC++:C&C++語言的
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村宅基地互換與農(nóng)村社區(qū)建設(shè)合作合同
- 2024年05月唐山市開平匯金村鎮(zhèn)銀行股份有限公司招考20名小微信貸客戶經(jīng)理筆試歷年參考題庫附帶答案詳解
- 2025年度消防隊人員職業(yè)健康體檢合同3篇
- 2024年中國電子電動遙控玩具市場調(diào)查研究報告
- 2024年中國電力球監(jiān)控系統(tǒng)市場調(diào)查研究報告
- 2024年中國液壓沖切機市場調(diào)查研究報告
- 二零二五年度生物制藥行業(yè)勞動合同范本2篇
- 《英漢禁忌語語用對比》
- 《基于區(qū)間分析方法的不確定參數(shù)轉(zhuǎn)子系統(tǒng)動力學(xué)特性研究》
- 2024年雙工位收卷機項目可行性研究報告
- 2025年上半年山西呂梁市柳林縣招聘畢業(yè)生70人到村(社區(qū))工作(第二批)重點基礎(chǔ)提升(共500題)附帶答案詳解
- 2024年非煤礦山年終安全生產(chǎn)工作總結(jié)
- 部編版2024-2025學(xué)年三年級上冊語文期末測試卷(含答案)
- 研發(fā)部年終總結(jié)(33篇)
- 一年級數(shù)學(xué)計算題專項練習(xí)1000題集錦
- 2024年高考物理模擬卷(山東卷專用)(考試版)
- 湖北省武漢市青山區(qū)2022-2023學(xué)年五年級上學(xué)期數(shù)學(xué)期末試卷(含答案)
- 《入侵檢測與防御原理及實踐(微課版)》全套教學(xué)課件
- IT企業(yè)安全生產(chǎn)管理制度范本
- 工業(yè)傳感器行業(yè)市場調(diào)研分析報告
- 2024電影數(shù)字節(jié)目管理中心招聘歷年高頻難、易錯點練習(xí)500題附帶答案詳解
評論
0/150
提交評論