了解算法與程序設計語言_第1頁
了解算法與程序設計語言_第2頁
了解算法與程序設計語言_第3頁
了解算法與程序設計語言_第4頁
了解算法與程序設計語言_第5頁
已閱讀5頁,還剩30頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、任務任務3 了解算法與程序設計語了解算法與程序設計語言言 3.3.1 算法算法 3.3.2 程序設計語言的發展程序設計語言的發展 3.3.3 幾種程序設計語言介紹幾種程序設計語言介紹 計算機計算機求解問題的步驟求解問題的步驟(1) 確定并理解問題;確定并理解問題;(2) 尋找解決問題的方法與步驟,并將其表示尋找解決問題的方法與步驟,并將其表示成成算法算法(Algorithm) ;(3) 使用某種程序設計語言描述該算法使用某種程序設計語言描述該算法(編程編程), 并編譯成目標程序和進行調試;并編譯成目標程序和進行調試;(4) 運行程序,獲得問題的解答;運行程序,獲得問題的解答;(5) 進行評估,

2、改進算法和程序進行評估,改進算法和程序算法的概念算法的概念 計算機算法是問題求解規則(方法)的一計算機算法是問題求解規則(方法)的一種過程描述,在執行有窮步的運算后結束。種過程描述,在執行有窮步的運算后結束。算法不僅在計算某一類問題時可以應用,算法不僅在計算某一類問題時可以應用,有時一些實際問題中也要應用算法。有時一些實際問題中也要應用算法。在用計算機求解一些問題時,必須根據問在用計算機求解一些問題時,必須根據問題的要求,設計出一種算法,以使計算機題的要求,設計出一種算法,以使計算機精確而有效地去求解該問題。精確而有效地去求解該問題。 算法是解決問題的方法與步驟算法是解決問題的方法與步驟例:有

3、三個硬幣,其中一例:有三個硬幣,其中一個是偽造的,另兩個是真個是偽造的,另兩個是真的,偽幣與真幣重量略有的,偽幣與真幣重量略有不同。現在提供一座天平,不同?,F在提供一座天平,如何如何找出偽幣呢?找出偽幣呢?分析:分析:l方法明確而有序方法明確而有序l按提供的條件進行操作按提供的條件進行操作l任何人均可仿照進行任何人均可仿照進行(共共享智能享智能)開始開始C是偽幣是偽幣B是偽幣是偽幣A是偽幣是偽幣AB?AC?是是否否否否是是A B C關于算法的三方面問題關于算法的三方面問題如何確定算法(算法設計)?如何確定算法(算法設計)?如何表示算法(算法表示)?如何表示算法(算法表示)?如何使算法更有效(算

4、法分析)?如何使算法更有效(算法分析)? 算法的特征算法的特征 (1)輸入性。一個算法可以有多個輸入,也可以輸入性。一個算法可以有多個輸入,也可以沒有輸入(沒有輸入(0個輸入)。個輸入)。(2)輸出性。一個算法必須有一個或多個輸出。輸出性。一個算法必須有一個或多個輸出。 (3)確定性。算法的每個步驟必須有確切的定義,確定性。算法的每個步驟必須有確切的定義,即每一步驟應該執行何種動作必須是相當清楚的、即每一步驟應該執行何種動作必須是相當清楚的、無二義性的。無二義性的。 (4)有窮性。一個算法總是在執行了有窮步的操有窮性。一個算法總是在執行了有窮步的操作后終止。作后終止。(5)能行性。算法中有待執

5、行的操作都是可執)能行性。算法中有待執行的操作都是可執行的,即在計算機的能力范圍之內,且在有限的行的,即在計算機的能力范圍之內,且在有限的時間內能夠完成。時間內能夠完成。算法的表示算法的表示 算法的表示可以多種形式。算法的表示可以多種形式。(1)自然語言。自然語言像英語、漢語等來描)自然語言。自然語言像英語、漢語等來描述算法的方法述算法的方法 。(2)流程圖。使用特定的圖形符號來描述描述。)流程圖。使用特定的圖形符號來描述描述。 (3)偽代碼。一種介于自然語言和程序設計語)偽代碼。一種介于自然語言和程序設計語言之間的文字和符號表達工具。言之間的文字和符號表達工具。 (4)程序設計語言。使用某一

6、種程序設計語言)程序設計語言。使用某一種程序設計語言所提供的語言成分,根據語言的特點,并利用語所提供的語言成分,根據語言的特點,并利用語言提供的各種工具和手段,遵照規定的語法規則,言提供的各種工具和手段,遵照規定的語法規則,去實現算法這就是所謂的程序編碼。去實現算法這就是所謂的程序編碼。 文字文字(自然語言自然語言)描述描述“比較與的重量,若,則是比較與的重量,若,則是偽造的;否則再比較與的重量,若偽造的;否則再比較與的重量,若,則是偽造的;否則是偽造的。,則是偽造的;否則是偽造的?!比秉c:缺點:l容易產生歧義,容易產生歧義,很難很難 “精確精確”地進行表達地進行表達l敘述冗長,很難清楚地表達

7、算法的邏輯流程敘述冗長,很難清楚地表達算法的邏輯流程算法的流程圖表示算法的流程圖表示流程圖由結點和有向邊構成,它描流程圖由結點和有向邊構成,它描述了算法所執行操作的順序及執行述了算法所執行操作的順序及執行操作的條件操作的條件流程圖符號流程圖符號 :比文字描述簡明,但當算法比較復比文字描述簡明,但當算法比較復雜時,理解困難,容易產生錯誤雜時,理解困難,容易產生錯誤 端點符端點符處理處理判斷判斷預定義功能預定義功能原始數據放在原始數據放在數組數組A中;令中;令 i=1確定確定Ai到到An中最中最小整數的位置小整數的位置,設為設為jAi 和和Aj交換位置交換位置i = i + 1i = n ?結束結

8、束開始開始用流程圖表示用流程圖表示選擇排序算法選擇排序算法流程圖使用的圖形符號流程圖使用的圖形符號 將原始數據放在數組將原始數據放在數組A A中;中;設置設置i i的初值為的初值為1 1,循環執行下列操作,直到,循環執行下列操作,直到i = n i = n : 確定確定Ai Ai 到到AnAn中最小整數的位置,設為中最小整數的位置,設為j j ; 交換交換AiAi和和j j ; i = i +1i = i +1 使用偽代碼描述使用偽代碼描述“選擇排序選擇排序”算法算法使用偽代碼描述算法使用偽代碼描述算法偽代碼偽代碼(Pseudo code)是用來描述算法的一種語是用來描述算法的一種語言,它既類

9、似于自然語言,又使用與程序設計語言言,它既類似于自然語言,又使用與程序設計語言相似的方法描述算法相似的方法描述算法優點:結構清晰,代碼簡單,可讀性好,可以容易地優點:結構清晰,代碼簡單,可讀性好,可以容易地以任何一種編程語言以任何一種編程語言(Pascal, C, Java等等)實現實現每個整數是每個整數是A的一個元素:的一個元素:A1, A2, , An算法的基本要素算法的基本要素(1)算法對數據的運算和操作)算法對數據的運算和操作在一般的計算機系統中,基本的運算和操作包括:在一般的計算機系統中,基本的運算和操作包括:自述運算、邏輯運算、關系運算、數據傳輸四類。自述運算、邏輯運算、關系運算、

10、數據傳輸四類。(2)算法的控制結構)算法的控制結構算法的功能不僅取決于所選用的操作,還與算法算法的功能不僅取決于所選用的操作,還與算法的控制結構有很大關系。算法的控制結構指的是的控制結構有很大關系。算法的控制結構指的是算法中各操作之間的執行順序。一般情況下,一算法中各操作之間的執行順序。一般情況下,一個算法可以由順序、選擇和循環個算法可以由順序、選擇和循環3種基本控制結種基本控制結構組合而成。構組合而成。 三種基本算法結構的圖形表示三種基本算法結構的圖形表示 (a)是順序結構,其中的每個處理()是順序結構,其中的每個處理(A和和B)順序執行。)順序執行。(b)是選擇結構。其中)是選擇結構。其中

11、e為判決條件,進入選擇結構,首先為判決條件,進入選擇結構,首先判斷判斷e成立與否,再根據判斷結果,選擇執行處理成立與否,再根據判斷結果,選擇執行處理A或處理或處理B后后退出。退出。循環結構分為兩類。(循環結構分為兩類。(c)稱為)稱為“當型循環當型循環”;(;(d)稱為)稱為“直到型循環直到型循環”。循環結構中的處理。循環結構中的處理A是要重復執行的操作,是要重復執行的操作,叫做叫做“循環體循環體”;e是控制循環執行的條件。當型循環是當條是控制循環執行的條件。當型循環是當條件件e成立,就繼續執行成立,就繼續執行A,否則就結束循環;而直到型循環是,否則就結束循環;而直到型循環是重復執行重復執行A

12、,直到條件,直到條件e成立,循環結束。成立,循環結束。ABABAETrueFalseBEETrueFalseTrueFalse(a)(b)(c)(d)圖3-4 三種基本算法結構三種基本結構的共同特點三種基本結構的共同特點 (1)只有單一的入口和單一的出口;)只有單一的入口和單一的出口;(2)結構中的每個都有執行到的可能;)結構中的每個都有執行到的可能;(3)結構內不存在永不終止的死循環。)結構內不存在永不終止的死循環。算法設計的目標算法設計的目標 (1) 正確性。算法應滿足具體問題的需求,這是算法設正確性。算法應滿足具體問題的需求,這是算法設計最起碼的目標。計最起碼的目標。 (2) 可讀性。一

13、個算法設計完成后,并非僅供算法設計可讀性。一個算法設計完成后,并非僅供算法設計者個人使用,因此首先應讓使用者能夠理解、閱讀與交流,者個人使用,因此首先應讓使用者能夠理解、閱讀與交流,其次才是機器執行。其次才是機器執行。(3) 健壯性。當輸入的數據非法時,算法應當能夠做出健壯性。當輸入的數據非法時,算法應當能夠做出適當的反應或進行處理,從而避免產生不可預料的輸出結適當的反應或進行處理,從而避免產生不可預料的輸出結果。果。 (4) 高效率。所謂效率,是指算法執行的時間。對于同高效率。所謂效率,是指算法執行的時間。對于同一個問題如果有多個可供選擇的算法,應盡可能選擇執行一個問題如果有多個可供選擇的算

14、法,應盡可能選擇執行時間短的算法,這樣的算法無疑效率是較高的。時間短的算法,這樣的算法無疑效率是較高的。 (5) 低存儲量需求。算法的存儲量需求是指算法執行過低存儲量需求。算法的存儲量需求是指算法執行過程中所需的最大存儲空間。對于同一個問題如果有多個算程中所需的最大存儲空間。對于同一個問題如果有多個算法可供選擇,應盡可能選擇存儲量需求低的算法。法可供選擇,應盡可能選擇存儲量需求低的算法。 什么是程序設計語言?什么是程序設計語言?什么是程序?什么是程序?l程序是為了用計算機解決某個問題而采用程序是為了用計算機解決某個問題而采用程序設計語言程序設計語言編寫編寫的一個指令序列的一個指令序列什么是程序

15、設計語言?什么是程序設計語言?l語言的目的是用于通信語言的目的是用于通信l程序設計語言用于人與計算機之間的通信程序設計語言用于人與計算機之間的通信l程序設計語言是由人使用但計算機可以理解的一種語言程序設計語言是由人使用但計算機可以理解的一種語言l程序設計語言用于編制程序,表達需要計算機完成什么任務程序設計語言用于編制程序,表達需要計算機完成什么任務和怎樣完成任務,然后交給計算機去完成和怎樣完成任務,然后交給計算機去完成 程序設計語言填補了程序設計語言填補了 人與計算機交流的鴻溝人與計算機交流的鴻溝計算機硬件僅僅計算機硬件僅僅知道知道0和和1有 問 題 需 要有 問 題 需 要計 算 機 解 決

16、計 算 機 解 決的人的人交流的鴻溝交流的鴻溝計算機硬件僅僅計算機硬件僅僅知道知道0和和1有 問 題 需 要有 問 題 需 要計 算 機 解 決計 算 機 解 決的人的人程序設計語言程序設計語言計算機中使用多種計算機中使用多種“語言語言”程序設計語言:主要用于描述算法程序設計語言:主要用于描述算法l機器語言、匯編語言、高級語言機器語言、匯編語言、高級語言數據描述語言:主要用于描述數據(文檔、音樂、圖形、圖像、視頻等)數據描述語言:主要用于描述數據(文檔、音樂、圖形、圖像、視頻等)的規范、結構和文件格式的規范、結構和文件格式lHTML、XML、MIDI、MP3、OpenGL、JPEG、MPEG、

17、腳本語言:用于編寫嵌入在文檔中的程序的程序設計語言腳本語言:用于編寫嵌入在文檔中的程序的程序設計語言lVBA、VBScript、JavaScript 計算機通信語言(通信協議):用于描述計算機計算機通信語言(通信協議):用于描述計算機-計算機之間的會話計算機之間的會話(請求(請求-應答)的語法和語義應答)的語法和語義lHTTP、POP3、SMTP、 FTP、 Telnet、TCP、IP、數據庫語言:用于數據操作,如數據庫語言:用于數據操作,如SQL語言語言程序設計語言的發展程序設計語言的發展 要使計算機能夠按人的意圖工作,就必須要使計算機能夠按人的意圖工作,就必須使計算機懂得人的意圖,接受人向

18、它發出使計算機懂得人的意圖,接受人向它發出的命令和信息。計算機不懂人類的語言,的命令和信息。計算機不懂人類的語言,人們要操縱計算機,就不得不使用特定的人們要操縱計算機,就不得不使用特定的語言與之打交道,這種特定的語言就是計語言與之打交道,這種特定的語言就是計算機語言,又稱為程序設計語言。算機語言,又稱為程序設計語言。計算機語言也有其自身的發展過程,其出計算機語言也有其自身的發展過程,其出現的順序是:機器語言、匯編語言、高級現的順序是:機器語言、匯編語言、高級語言。語言。 機器語言機器語言 機器語言是計算機惟一能夠直接識別和執行的一機器語言是計算機惟一能夠直接識別和執行的一種計算機語言,它是以二

19、進制代碼的形式表示的種計算機語言,它是以二進制代碼的形式表示的機器指令。機器指令。l優點:計算機能直接識別、運行速度快、占用內存空優點:計算機能直接識別、運行速度快、占用內存空間小。間小。l缺點:直觀性差,難記、難寫,非常容易出錯;面向缺點:直觀性差,難記、難寫,非常容易出錯;面向具體的機器,通用性差;需要人工分配內存,編程工具體的機器,通用性差;需要人工分配內存,編程工作量大。作量大。B8 7F 01BB 21 0203 D8B8 1F 042B C3(計算(計算1055-(383+545)的的5條機器指令)條機器指令) 機器語言機器語言 用機器語言編程序用機器語言編程序, 也就是直接使用二

20、進制代碼編寫也就是直接使用二進制代碼編寫程序程序操作碼操作碼操作數操作數(或操作數的地址或操作數的地址)1條機器指令條機器指令操作數地址操作數地址操作碼操作碼匯編語言匯編語言 匯編語言是用一些便于人們記憶的符號來匯編語言是用一些便于人們記憶的符號來代替二進制數碼,這些符號都是一些可以代替二進制數碼,這些符號都是一些可以指明操作含義的英文單詞指明操作含義的英文單詞(或其縮寫或其縮寫),因,因此也叫助記符式語言。這種語言具有如下此也叫助記符式語言。這種語言具有如下優缺點。優缺點。l優點:運行速度快,占用空間?。灰讓W、易懂、優點:運行速度快,占用空間?。灰讓W、易懂、易查錯、易修改易查錯、易修改l缺點

21、:機器不能直接識別;面向機器,通用性缺點:機器不能直接識別;面向機器,通用性差。差。 匯編語言匯編語言用助記符號來表示機器指令用助記符號來表示機器指令中的操作符與操作數中的操作符與操作數將將383傳送到傳送到AX寄存器寄存器將將545傳送到傳送到BX寄存器寄存器將將BX內容加內容加AX內容,結果在內容,結果在BX中中將將1055傳送到傳送到AX寄存器寄存器將將AX內容減內容減BX內容,結果在內容,結果在AX寄寄存器中存器中B8 7F 01BB 21 0203 D8B8 1F 042B C3(計算(計算1055-(383+545)的的5條機器指令)條機器指令)機器語言程序機器語言程序對應的匯編語

22、言程序對應的匯編語言程序MOV AX 383MOV BX 545ADD BX AXMOV AX 1055SUB AX BX匯編語言程序匯編語言程序高級語言高級語言 高級語言,克服了低級語言的所有缺點。高級語言,克服了低級語言的所有缺點。優點:接近于自然語言;能精確地描述解決問題優點:接近于自然語言;能精確地描述解決問題的過程;不依賴于具體的計算機指令系統;不需的過程;不依賴于具體的計算機指令系統;不需人工分配內存;運行速度慢,片用內存空間大;人工分配內存;運行速度慢,片用內存空間大;計算機不能直接識別和運行計算機不能直接識別和運行盡管高級語言還有一定的缺點,但因為它的顯著盡管高級語言還有一定的

23、缺點,但因為它的顯著優點,所以才使計算機的推可能。目前,常用的優點,所以才使計算機的推可能。目前,常用的高級語言有高級語言有C語言、語言、VC、VB、C#等。等。高級程序設計語言高級程序設計語言MOV AX 383MOV BX 545ADD BX AXMOV AX 1055SUB AX BX匯編語言程序匯編語言程序S=1055-(383+545)語言處理語言處理(翻譯翻譯)程序程序 (1)匯編語言的翻譯匯編語言的翻譯用匯編語言編寫的程序通常稱為匯編語言源程序。這樣的程用匯編語言編寫的程序通常稱為匯編語言源程序。這樣的程序計算機是不能直接識別和執行的,必須用相應的翻譯程序序計算機是不能直接識別和

24、執行的,必須用相應的翻譯程序(稱為匯編程序稱為匯編程序)將匯編語言源程序翻譯成機器能夠執行的機將匯編語言源程序翻譯成機器能夠執行的機器語言程序器語言程序(稱為目標程序稱為目標程序),這個翻譯過程叫做匯編。,這個翻譯過程叫做匯編。匯編語言源程序目標程序可執行程序運行結果匯編程序匯編連接語言處理語言處理(翻譯翻譯)程序程序(2)高級語言的翻譯高級語言的翻譯編譯方式:用相應語言的編譯程序將源編譯方式:用相應語言的編譯程序將源程序翻譯成目標程序,再用連接程序將目程序翻譯成目標程序,再用連接程序將目標程序與函數庫連接,最終生成可執行程標程序與函數庫連接,最終生成可執行程序即可在計算機上運行。序即可在計算

25、機上運行。 高級語言源程序目標程序可執行程序運行結果編譯程序編譯連接語言處理語言處理(翻譯翻譯)程序程序(2)高級語言的翻譯高級語言的翻譯解釋方式:通過相應的解釋程序將源程序逐句翻譯成機器解釋方式:通過相應的解釋程序將源程序逐句翻譯成機器指令,并且是每翻譯一句就執行一句。解釋程序不產生目標指令,并且是每翻譯一句就執行一句。解釋程序不產生目標程序,執行過程中某句有錯誤將立即顯示出錯誤信息,以便程序,執行過程中某句有錯誤將立即顯示出錯誤信息,以便用戶修改后繼續執行。用戶修改后繼續執行。 高級語言源程序運行結果解釋程序解釋并執行程序設計語言程序設計語言 :Fortran Fortran是英文是英文“

26、FORmula TRANslator”的縮寫,譯為的縮寫,譯為“公式翻譯公式翻譯器器”,它是世界上最早出現的計算機高級,它是世界上最早出現的計算機高級程序設計語言,廣泛應用于科學和工程計程序設計語言,廣泛應用于科學和工程計算領域。算領域。FORTRAN語言以其特有的功能在數值、語言以其特有的功能在數值、科學和工程計算領域發揮著重要作用??茖W和工程計算領域發揮著重要作用。程序設計語言程序設計語言 :Pascal與與Delphi Pascal是一個有影響的面向過程編程語言,由是一個有影響的面向過程編程語言,由尼古拉斯尼古拉斯沃斯在沃斯在1968年年9月設計,在月設計,在1970年年發行,作為一個小

27、型的和高效的語言,意圖鼓勵發行,作為一個小型的和高效的語言,意圖鼓勵使用結構化編程和數據結構進行良好的編程實踐。使用結構化編程和數據結構進行良好的編程實踐。Delphi是一個集成開發環境(是一個集成開發環境(IDE),使用的),使用的核心是由傳統核心是由傳統Pascal語言發展而來的語言發展而來的Object Pascal,以圖形用戶界面(,以圖形用戶界面(Graphical User Interface,簡稱,簡稱GUI)為開發環境,通過)為開發環境,通過IDE、VCL工具與編譯器,配合連結數據庫的功工具與編譯器,配合連結數據庫的功能,構成一個以面向對象程序設計為中心的應用能,構成一個以面向

28、對象程序設計為中心的應用程序開發工具。程序開發工具。程序設計語言程序設計語言 :Basic, Visual Basic和和VB.net BASIC是是Beginners All-purpose symbolic instruction Code(初學者通用(初學者通用符號指令代碼)的縮寫,是國際上廣泛使用的一符號指令代碼)的縮寫,是國際上廣泛使用的一種計算機高級語言,它的特點是簡單、易學。種計算機高級語言,它的特點是簡單、易學。1991年,年,Visual Basic 1.0問世,它允許程問世,它允許程序員在一個所見即所得的圖形界面中迅速完成開序員在一個所見即所得的圖形界面中迅速完成開發任務。發任務。1998年發布的年發布的Visual Basic 6.0是是傳統傳統Visual Basic中功能最全、應用最廣的一中功能最全、應用最廣的一個版本。個版本。微軟后來開發了微軟后來開發了VB的繼任者的繼任者Visual Basic .NET,同時也是,同時也是.NET平臺的一部分。平臺的一部分。程序設計語言程序設計語言 : Java Java是一種可以撰寫跨平臺應用軟件的面向對象的程序是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言,是由設計語言,是由Sun Microsystems公司于公司于1995年年5月推出的月推出的Java程序設計語言和程序設計語言和Java平臺(即平臺(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論