




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
語(yǔ)言算法和程序設(shè)計(jì)方法第一頁(yè),共五十頁(yè),2022年,8月28日從算法到程序再到軟件計(jì)算機(jī)完成各種不同的任務(wù),需要不同的軟件軟件開發(fā)算法程序軟件程序設(shè)計(jì)是軟件開發(fā)的一部分程序設(shè)計(jì)分解為幾個(gè)步驟程序設(shè)計(jì)需要使用程序設(shè)計(jì)語(yǔ)言算法設(shè)計(jì)
軟件開發(fā)的任務(wù)之一選擇一種語(yǔ)言使用這個(gè)語(yǔ)言編寫完成操作任務(wù)的代碼程序設(shè)計(jì)軟件開發(fā)的核心工作是算法設(shè)計(jì)第二頁(yè),共五十頁(yè),2022年,8月28日算法一項(xiàng)工作如何被完成的步驟數(shù)學(xué)問題——尋找如何解決特定問題的方法一個(gè)著名的算法歐幾里德算法:求兩個(gè)正整數(shù)A和B的最大公約數(shù)
如:9、6的最大公約數(shù)是3第一步:比較A和B這兩個(gè)數(shù),將A設(shè)置為較大的數(shù),B設(shè)置 為較小的數(shù);第二步:A除以B,得到余數(shù)C;第三步:如果C等于0,則最大公約數(shù)就是B; 否則將B賦值給A,C賦值給B,重復(fù)進(jìn)行第二、三步從算法到程序再到軟件ABC9636303第三頁(yè),共五十頁(yè),2022年,8月28日?qǐng)D靈理論只要能被分解為有限步驟的問題就可以被計(jì)算機(jī)執(zhí)行有限的步驟能夠?qū)⑦@些步驟設(shè)計(jì)為計(jì)算機(jī)所執(zhí)行的程序程序設(shè)計(jì)中,首先尋找算法,算法找到后,實(shí)現(xiàn)算法的步驟算法的描述使用某種計(jì)算機(jī)語(yǔ)言不同的計(jì)算機(jī)語(yǔ)言對(duì)一個(gè)算法具有不同的實(shí)現(xiàn)方法算法是程序設(shè)計(jì)的基礎(chǔ)從算法到程序再到軟件第四頁(yè),共五十頁(yè),2022年,8月28日程序和指令程序program計(jì)算機(jī)執(zhí)行某種任務(wù)的一系列操作步驟的總和一組計(jì)算機(jī)指令的有序集合
指令instruction控制計(jì)算機(jī)執(zhí)行各種基本操作的命令指令是計(jì)算機(jī)執(zhí)行的最基本操作
如:處理器從內(nèi)存中讀取一個(gè)數(shù)據(jù) 二進(jìn)制的算術(shù)運(yùn)算加、減、乘、除 邏輯判斷等處理器能執(zhí)行的二進(jìn)制代碼第五頁(yè),共五十頁(yè),2022年,8月28日程序和指令指令作為計(jì)算機(jī)軟件和硬件的接口指令在處理器中以邏輯電路實(shí)現(xiàn)軟件硬件指令第六頁(yè),共五十頁(yè),2022年,8月28日指令系統(tǒng)一個(gè)CPU能夠執(zhí)行的所有指令指令的主要類型
數(shù)據(jù)傳輸類
將數(shù)據(jù)從一個(gè)地方(源)傳輸?shù)搅硗庖粋€(gè)地方(目的) 一種是在CPU內(nèi)部、存儲(chǔ)器內(nèi)部、CPU和存儲(chǔ)器之間進(jìn)行 一種是在CPU和外設(shè)(外設(shè)接口)之間進(jìn)行的
算術(shù)邏輯運(yùn)算類 控制操作類
有條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移第七頁(yè),共五十頁(yè),2022年,8月28日翻譯系統(tǒng)基本概念源程序
用各種語(yǔ)言編寫的程序目標(biāo)程序
源程序經(jīng)過翻譯,成為機(jī)器可執(zhí)行的機(jī)器語(yǔ)言程序庫(kù)文件 由一些標(biāo)準(zhǔn)子程序(函數(shù)和過程)及常用的應(yīng)用程序塊組成的文件可執(zhí)行程序 目標(biāo)程序與庫(kù)文件連接后形成的程序程序的整個(gè)處理過程
翻譯和庫(kù)文件連接裝入源程序目標(biāo)程序可執(zhí)行程序
執(zhí)行第八頁(yè),共五十頁(yè),2022年,8月28日翻譯系統(tǒng)語(yǔ)言處理系統(tǒng),翻譯計(jì)算機(jī)程序任務(wù)是把非機(jī)器語(yǔ)言編寫的源程序翻譯成目標(biāo)程序是系統(tǒng)軟件不同編程語(yǔ)言的翻譯系統(tǒng)是不同的分類
匯編程序編譯程序解釋程序逐條翻譯并執(zhí)行源程序的語(yǔ)句,不生成可執(zhí)行文件把源程序代碼一次性翻譯成目標(biāo)程序代碼,最終生成可執(zhí)行文件把匯編語(yǔ)言源程序翻譯為機(jī)器語(yǔ)言程序第九頁(yè),共五十頁(yè),2022年,8月28日編譯系統(tǒng)的結(jié)構(gòu)和工作過程詞法分析程序語(yǔ)法分析程序中間代碼生成程序優(yōu)化程序目標(biāo)代碼生成程序目標(biāo)程序源程序Ifx>=0Theny=1Elsey=-1第十頁(yè),共五十頁(yè),2022年,8月28日程序設(shè)計(jì)語(yǔ)言發(fā)展階段機(jī)器語(yǔ)言 低級(jí)語(yǔ)言匯編語(yǔ)言 中級(jí)語(yǔ)言面向過程的高級(jí)語(yǔ)言面向?qū)ο蟮母呒?jí)語(yǔ)言第十一頁(yè),共五十頁(yè),2022年,8月28日機(jī)器語(yǔ)言和指令機(jī)器語(yǔ)言計(jì)算機(jī)能直接執(zhí)行的程序設(shè)計(jì)語(yǔ)言
二進(jìn)制語(yǔ)言,用二進(jìn)制機(jī)器指令來編寫程序機(jī)器指令的信息操作類型操作數(shù)或操作數(shù)的地址(操作數(shù)的存儲(chǔ)位置)操作結(jié)果的存儲(chǔ)位置下一條指令的地址信息指令格式操作碼操作數(shù)或地址碼下一條指令的地址第十二頁(yè),共五十頁(yè),2022年,8月28日機(jī)器語(yǔ)言和指令指令的例子:數(shù)1和3的相加指令 100000000000000100000011
“加”操作碼Number1:1Number2:3實(shí)現(xiàn)過程用計(jì)算器
計(jì)算機(jī)
程序
過程指令執(zhí)行過程特點(diǎn)既簡(jiǎn)單又難執(zhí)行速度最快面向機(jī)器,兼容性差,移植性差最低級(jí)語(yǔ)言第十三頁(yè),共五十頁(yè),2022年,8月28日計(jì)算器的工作原理第十四頁(yè),共五十頁(yè),2022年,8月28日用VB設(shè)計(jì)的加法程序PrivateSubCommand1_Click()DimAAsInteger,BAsInteger,SAsIntegerA=Val(InputBox("請(qǐng)輸入第一個(gè)數(shù)"))B=Val(InputBox("請(qǐng)輸入第二個(gè)數(shù)"))S=A+BPrintA;"+";B;"=";SEndSub第十五頁(yè),共五十頁(yè),2022年,8月28日MemoryInputOutput控制器ALUForExample:1+3=4命令:輸入111命令:輸入333WriteWriteReadRead134OutAdd+第十六頁(yè),共五十頁(yè),2022年,8月28日
一條指令的執(zhí)行過程
1.取操作碼2.內(nèi)部譯碼3.取第一個(gè)數(shù)4.取第二個(gè)數(shù)5.ALU完成加6.保存結(jié)果7.取下一條指令第十七頁(yè),共五十頁(yè),2022年,8月28日匯編語(yǔ)言機(jī)器語(yǔ)言的“符號(hào)化”用容易記憶的文字符號(hào)(助記符)表示指令中的操作碼和地址碼指令格式
助記符符號(hào)地址例:加法語(yǔ)句ADDA,B
特點(diǎn)機(jī)器不能直接識(shí)別可讀性好面向機(jī)器,兼容性差,移植性差中級(jí)語(yǔ)言
第十八頁(yè),共五十頁(yè),2022年,8月28日高級(jí)語(yǔ)言與機(jī)器完全獨(dú)立的語(yǔ)言,描述解題過程語(yǔ)法與自然語(yǔ)言接近特點(diǎn)面向問題,通用,可移植分類面向過程BASICCPASCALFORTRANCOBOLAda面向?qū)ο骎isualBasic
C++JAVADelphiPowerBuild第十九頁(yè),共五十頁(yè),2022年,8月28日面向?qū)ο蟪绦蛟O(shè)計(jì)程序的基本成分對(duì)象 是具有特殊屬性(數(shù)據(jù))
和方法(行為、操作)的實(shí)體特點(diǎn)封裝性繼承性多態(tài)性
把對(duì)象的屬性和操作結(jié)合在一起,構(gòu)成一個(gè)獨(dú)立的對(duì)象子類可以擁有父類的屬性和行為基類中定義的屬性和行為被子類繼承后,可以具有不同的數(shù)據(jù)類型或不同的行為第二十頁(yè),共五十頁(yè),2022年,8月28日*其它語(yǔ)言函數(shù)型語(yǔ)言
LISPScheme
說明性語(yǔ)言邏輯語(yǔ)言,用于根據(jù)邏輯推理的原則回答問題Prolog超文本鏈接標(biāo)記語(yǔ)言(HTML)由一種格式標(biāo)記和超鏈接組成的“偽語(yǔ)言”,主要用于網(wǎng)絡(luò)上的信息服務(wù)XML可擴(kuò)展標(biāo)記語(yǔ)言其它語(yǔ)言如SQL
第二十一頁(yè),共五十頁(yè),2022年,8月28日*基于組件的程序設(shè)計(jì)基于組件的程序設(shè)計(jì)是微軟提出的思想COM(ComponentObjectModel,組件對(duì)象模型)組件技術(shù)屬于面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)使用COM技術(shù),一個(gè)新的應(yīng)用系統(tǒng)的開發(fā)不必按照傳統(tǒng)的方法進(jìn)行所有代碼的編寫,可以通過組件進(jìn)行“組裝”軟件對(duì)于提高開發(fā)速度、降低開發(fā)成本、增加應(yīng)用軟件的靈活性、降低軟件維護(hù)費(fèi)用很有幫助軟件開發(fā)技術(shù)的主流方向第二十二頁(yè),共五十頁(yè),2022年,8月28日程序設(shè)計(jì)語(yǔ)言的發(fā)展歷史第二十三頁(yè),共五十頁(yè),2022年,8月28日怎樣編寫程序程序設(shè)計(jì)是一個(gè)系統(tǒng)過程不是簡(jiǎn)單的編寫程序代碼一般可以分為六個(gè)步驟問題的定義(程序說明)設(shè)計(jì)解決問題的方案編寫程序代碼進(jìn)行程序測(cè)試編寫程序的文檔程序應(yīng)用(程序運(yùn)行與維護(hù))第二十四頁(yè),共五十頁(yè),2022年,8月28日一、理解問題:程序說明程序設(shè)計(jì)中最重要的部分是對(duì)問題的描述設(shè)計(jì)一個(gè)程序是為了解決某個(gè)特定的問題分析特定問題,決定應(yīng)該做什么,如何做 ——系統(tǒng)分析員主要弄清以下問題:程序的目標(biāo)是什么?即程序需要解決什么樣的問題可能需要輸入哪些數(shù)據(jù)?數(shù)據(jù)具體的處理過程和要求是什么?程序可能產(chǎn)生的數(shù)據(jù)輸出以及輸出形式是什么?示例1
示例2第二十五頁(yè),共五十頁(yè),2022年,8月28日二、設(shè)計(jì)解決問題的方案對(duì)要解決的問題設(shè)計(jì)出具體的解決方案確定程序的邏輯結(jié)構(gòu)關(guān)鍵—設(shè)計(jì)算法例:歐幾里德算法
——求兩個(gè)正整數(shù)A和B的最大公約數(shù)第一步:比較A和B這兩個(gè)數(shù),將A設(shè)置為較大的數(shù),B設(shè) 置為較小的數(shù);第二步:A除以B,得到余數(shù)C;第三步:如果C等于0,則最大公約數(shù)就是B; 否則將B賦值給A,C賦值給B,重復(fù)進(jìn)行第二、三步第二十六頁(yè),共五十頁(yè),2022年,8月28日程序的邏輯結(jié)構(gòu)所有程序都由三種結(jié)構(gòu)構(gòu)成順序結(jié)構(gòu)
按命令出現(xiàn)的先后順序依次執(zhí)行分支結(jié)構(gòu)
根據(jù)設(shè)定的條件來決定程序的執(zhí)行方向循環(huán)結(jié)構(gòu)
按照設(shè)定的條件重復(fù)執(zhí)行一組命令
當(dāng)型
直到型
流程圖第二十七頁(yè),共五十頁(yè),2022年,8月28日順序結(jié)構(gòu)A
B分支結(jié)構(gòu)X>=0X=5Y=2*X第二十八頁(yè),共五十頁(yè),2022年,8月28日循環(huán)結(jié)構(gòu)當(dāng)型結(jié)構(gòu)直到型結(jié)構(gòu)X>=0X>=0第二十九頁(yè),共五十頁(yè),2022年,8月28日三、編寫程序代碼編寫程序代碼選擇合適的編程語(yǔ)言按照上階段設(shè)計(jì)的算法編寫代碼選擇哪種程序設(shè)計(jì)語(yǔ)言?主要看是否能夠完成程序設(shè)計(jì)任務(wù)編程人員對(duì)這個(gè)語(yǔ)言的熟悉程度程序代碼的例子計(jì)算5!
fac=1*2*3*4*5 分別用C語(yǔ)言、VB和Java實(shí)現(xiàn) 第三十頁(yè),共五十頁(yè),2022年,8月28日一個(gè)程序代碼的例子(C語(yǔ)言)
計(jì)算5!
#include<stdio.h> /*C語(yǔ)言編譯系統(tǒng)的庫(kù)函數(shù)*/main() /*程序開始*/{inti,fac; /*定義變量*/fac=1; /*變量fac被賦值1*/for(i=2;i<=5;i++) /*從2到5,循環(huán)執(zhí)行乘法得到5的階乘*/fac=fac*i;printf("the5!=%d",fac);/*輸出結(jié)果*/}第三十一頁(yè),共五十頁(yè),2022年,8月28日一個(gè)程序代碼的例子(VB語(yǔ)言) DimiAsInteger,facAsInteger
'定義i、fac為整型數(shù)變量 fac=1 '變量fac賦值1 Fori=2To5Step1'循環(huán),從2到5,每次步長(zhǎng)為1 fac=fac*i '計(jì)算5的階乘Nexti 'next和for構(gòu)成循環(huán)體 Print"fac=";fac '輸出階乘結(jié)果計(jì)算5!第三十二頁(yè),共五十頁(yè),2022年,8月28日一個(gè)程序代碼的例子(Java語(yǔ)言) publicclassFactorial{ publicstaticvoidmain(Stringargs[]){ inti=1; //循環(huán)控制變量 doublefac=1;//存放結(jié)果的變量,注意類型 while(i<=5){ fac=fac*i;//循環(huán)體 i=i+1; } System.out.println("5!="+fac);//輸出結(jié)果 } }
計(jì)算5!第三十三頁(yè),共五十頁(yè),2022年,8月28日四、尋找錯(cuò)誤:程序測(cè)試調(diào)試程序,找出程序中的錯(cuò)誤語(yǔ)法錯(cuò)誤違反編程語(yǔ)言的語(yǔ)法規(guī)則邏輯錯(cuò)誤程序得到的結(jié)果不對(duì)
需用大量數(shù)據(jù)測(cè)試
測(cè)試方法黑盒測(cè)試 例:加法程序白盒測(cè)試 專業(yè)測(cè)試,使用一組特意設(shè)計(jì)的數(shù)據(jù)測(cè)試第三十四頁(yè),共五十頁(yè),2022年,8月28日五、編寫程序文檔對(duì)前面所做的各種設(shè)計(jì)形成完整的手冊(cè)設(shè)計(jì)過程中形成的文檔 流程圖 變量列表 程序代碼 運(yùn)行結(jié)果等
供日后程序的維護(hù)、升級(jí)使用設(shè)計(jì)完成后的使用手冊(cè) 程序的功能 操作說明第三十五頁(yè),共五十頁(yè),2022年,8月28日六、運(yùn)行與維護(hù)培訓(xùn)用戶程序的安裝、設(shè)置等程序進(jìn)行修改甚至升級(jí)第三十六頁(yè),共五十頁(yè),2022年,8月28日算法算法是一組明確的、可以執(zhí)行的步驟的有序集合就是為了解決問題而采用的方法和步驟算法分類數(shù)值運(yùn)算算法非數(shù)值運(yùn)算算法算法特性
確定性有窮性有效性可有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出第三十七頁(yè),共五十頁(yè),2022年,8月28日算法的表示方法自然語(yǔ)言流程圖偽代碼PAD圖(問題分析圖)例:求5!的算法
①*用自然語(yǔ)言描述②*用偽代碼表示③用流程圖表示
P=1*2*3*4*5P=P*IP I P*I1 1 11 2 22
3 66
4 2424
5 120
120 6第三十八頁(yè),共五十頁(yè),2022年,8月28日用自然語(yǔ)言表示的求5!的算法第一步:使P=1第二步:使I=2第三步:計(jì)算P*I,乘積仍放在P中第四步:使I的值加1再放到I中第五步:如果I不大于5,返回重新執(zhí)行第三 步及其后的步驟,否則執(zhí)行第六步第六步:打印出P的值,算法結(jié)束第三十九頁(yè),共五十頁(yè),2022年,8月28日開始置P的初值為1置I的初值為2當(dāng)I<=5,執(zhí)行下面循環(huán)操作:使P=P*I使I=I+1(循環(huán)體到此結(jié)束)打印出P的值結(jié)束用偽代碼表示的求5!的算法第四十頁(yè),共五十頁(yè),2022年,8月28日
用流程圖表示求5!的算法P第四十一頁(yè),共五十頁(yè),2022年,8月28日算法設(shè)計(jì)程序設(shè)計(jì)有兩個(gè)階段第一是設(shè)計(jì)算法第二是實(shí)現(xiàn)算法解決問題的基本原理(4個(gè)步驟)1.理解問題2.設(shè)計(jì)一個(gè)解決問題的方案3.執(zhí)行這個(gè)方案4.檢驗(yàn)這個(gè)方案第四十二頁(yè),共五十頁(yè),2022年,8月28日*常用的算法結(jié)構(gòu)迭代結(jié)構(gòu)遞歸結(jié)構(gòu)排序問題
查找問題第四十三頁(yè),共五十頁(yè),2022年,8月28日迭代結(jié)構(gòu)
不斷用變量的舊值遞推出新值的過程進(jìn)行數(shù)值計(jì)算建立在循環(huán)基礎(chǔ)上的算法關(guān)鍵--找到迭代公式
例子分析歐幾里德算法計(jì)算S=1!+2!+3!+…+10!
迭代公式 S0=0 a0=1 ai=ai-1*i Si=Si-1+ai開始置S的初值為0置a的初值為1置i的初值為1當(dāng)i<=10,執(zhí)行下面操作: 使a=a*i 使S=S+a 使i=i+1打印出S的值結(jié)束第四十四頁(yè),共五十頁(yè),2022年,8月28日例子分析判斷一個(gè)整數(shù)是否為素?cái)?shù)素?cái)?shù)是指只能被1和它本身整除的數(shù)判斷方法:用2到(n-1)的各個(gè)整數(shù)輪流去除n,如果都不能 整除,則n是素?cái)?shù)。算法:
第1步:輸入n的值第2步:j=2(準(zhǔn)備用j去除n)第3步:n被j除,得到余數(shù)a第4步:如a=0,表示n能被j整除,輸出信息 “n不是素?cái)?shù)”,算法結(jié)束;否則就是 n不能被j整除,進(jìn)入下一步;第5步:將j加1送回給j第6步:如果j<n,則跳到第3步執(zhí)行,否則輸出 “n是素?cái)?shù)”的信息算法結(jié)束第四十五頁(yè),共五十頁(yè),2022年,8月28日遞歸結(jié)構(gòu)遞歸指用一個(gè)概念本身直接或間接地去定義該概念把一個(gè)或者一類問題分解或分割為一個(gè)個(gè)更小的問題,然后解決這些小
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量工程師考試信息整合試題及答案
- cnf成交方式合同范例
- 2025鋼筋工程班組合同
- 鄉(xiāng)村門窗維修合同范例
- 專項(xiàng)保潔合同范例
- 2025-2030年中國(guó)二硼化鎂電源行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年中國(guó)主控切換臺(tái)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 專業(yè)紙箱購(gòu)銷合同范例
- 2025-2030年中國(guó)絲蘭提取物材料行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 兌賓館合同范例
- DB5104T 63-2023 地理標(biāo)志保護(hù)產(chǎn)品 苴卻硯
- 腫瘤專科護(hù)士進(jìn)修學(xué)習(xí)匯報(bào)
- 護(hù)理科研課題撰寫
- 新能源項(xiàng)目糾紛法律適用與案例解析-筆記
- 架子工入場(chǎng)三級(jí)安全教育考核試卷
- 安全生產(chǎn)合規(guī)性審核
- 腎衰竭病歷范文
- 鈑金廠規(guī)劃方案
- 骨質(zhì)疏松用藥治療
- 《LED基礎(chǔ)知識(shí)培訓(xùn)》課件
- 世界職業(yè)院校技能大賽中職組“智慧物流作業(yè)組”賽項(xiàng)考試題及答案
評(píng)論
0/150
提交評(píng)論