




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一個程序主要包括以下兩方面的信息:一個程序主要包括以下兩方面的信息:(1)(1)對數據的描述。在程序中要指定用到對數據的描述。在程序中要指定用到哪哪些數據以及這些數據的類型和數據些數據以及這些數據的類型和數據的組織形式的組織形式: :這就是數據結構這就是數據結構(data structure)(data structure)(2) (2) 對操作的描述。即要求計算機進行對操作的描述。即要求計算機進行操作的步驟操作的步驟也就是算法也就是算法(algorithm)(algorithm)第1頁/共68頁 數據: 是操作的對象 操作的目的: 是對數據進行加工處理,以得到期望的結果 著名計算機科學家沃思
2、(Nikiklaus Wirth)提出一個公式: 算法 + 數據結構 = 程序第2頁/共68頁算法是解決“做什么”和“怎么做”的問題程序中的操作語句代碼,是算法的體現不了解算法就談不上程序設計第3頁/共68頁廣義地說,為解決一個問題而采取的方法和步驟,就稱為“算法”對同一個問題,可以有不同的解題方法和步驟為了有效地進行解題,不僅需要保證算法正確,還要考慮算法的質量,選擇合適的算法第4頁/共68頁計算機算法可分為兩大類別: 數值運算算法 非數值運算算法數值運算的目的是求數值解非數值運算包括的面十分廣泛,最常見的是用于事務管理領域第5頁/共68頁例.1 求12345可以用最原始的方法進行: 步驟1
3、:先求1*2,得到結果2。 步驟2:將步驟1得到的乘積2再乘以3,得到結果6。 步驟3:將6再乘以4,得24。 步驟4:將24再乘以5,得120。這就是最后的結果。例例 .1 .1 求求1 12 23 34 45 5 10001000太繁瑣太繁瑣第6頁/共68頁改進的算法: 設變量p為被乘數 變量i為乘數 用循環(huán)算法求結果第7頁/共68頁S1:使p=1,或寫成1pS2:使i=2,或寫成2iS3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ipS4:使i的值加1,即i+1 iS5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結束最后得到p的值就是 5!的值若是若是1000,求什么?,求什么?
4、第8頁/共68頁 例: 判定20002500年中的每一年是否閏年,并將結果輸出。 閏年的條件: (1)能被4整除,但不能被100整除的年份都是閏年,如2008、2012、2048年 (2)能被400整除的年份是閏年,如2000年 不符合這兩個條件的年份不是閏年 例如2009、2100年第9頁/共68頁設year為被檢測的年份。算法表示如下: S1:2000year S2:若year不能被4整除,則輸出year 的值和“不是閏年”。然后轉到S6 S3:若year能被4整除,不能被100整除,則輸出year的值和“是閏年”。然后轉到S6 S4:若year能被400整除,則輸出year的值和“是閏年
5、” ,然后轉到S6 S5: 其他情況輸出year的值和“不是閏年” S6:year+1year S7:當year2500時,轉S2,否則停止第10頁/共68頁year不能不能被被4整除整除非閏年非閏年year被被4整整除,但不能除,但不能被被100整除整除閏年閏年year被被100整除,又能整除,又能被被400整除整除閏年閏年其他其他非閏年非閏年逐漸縮小判逐漸縮小判斷的范圍斷的范圍第11頁/共68頁 例 : 給出一個大于或等于3的正整數,判斷它是不是一個素數。所謂素數(prime),是指除了1和該數本身之外,不能被其他任何整數整除的數例如,13是素數,因為它不能被2,3,4,12整除。第12頁
6、/共68頁判斷一個數n(n3)是否素數:將n作為被除數,將2到(n-1)各個整數先后作為除數,如果都不能被整除,則n為素數S1:輸入n的值S2:i=2 (i作為除數)S3:n被i除,得余數rS4:如果r=0,表示n能被i整除,則輸出n“不是素數”,算法結束;否則執(zhí)行S5S5:i+1iS6:如果in-1,返回S3;否則輸出n “是素數”,然后結束??筛臑榭筛臑閚/2n第13頁/共68頁十進制數轉換成二進制數(整數部分)十進制數轉換成二進制數(整數部分) 方法方法: 除除2取余取余 214027.02223.111.1028余數高位低位你能用算法步驟將此算法描述出來嗎?S1:S2:第14頁/共68
7、頁一個有效算法應該具有以下特點:(1) 有窮性。一個算法應包含有限的操作步驟,而不能是無限的。(2) 確定性。算法中的每一個步驟都應當是確定的,而不應當是含糊的、模棱兩可的。第15頁/共68頁一個有效算法應該具有以下特點:(3) 有零個或多個輸入。所謂輸入是指在執(zhí)行算法時需要從外界取得必要的信息。(4) 有一個或多個輸出。算法的目的是為了求解,“解” 就是輸出。 沒有輸出的算法是沒有意義的。(5) 有效性。算法中的每一個步驟都應當能有效地執(zhí)行,并得到確定的結果。第16頁/共68頁對于一般最終用戶來說: 他們并不需要在處理每一個問題時都要自己設計算法和編寫程序 可以使用別人已設計好的現成算法和程
8、序 只需根據已知算法的要求給予必要的輸入,就能得到輸出的結果輸入輸入3個數個數黑箱子黑箱子3個數中最大數個數中最大數求求3個數的個數的最大數最大數第17頁/共68頁常用的方法有: 自然語言 傳統(tǒng)流程圖 結構化流程圖 偽代碼 第18頁/共68頁(1)用自然語言表示算法(2)用流程圖表示算法(3)用N-S流程圖表示算法(4)用偽代碼表示算法(5)用計算機語言表示算法第19頁/共68頁以上幾個方面介紹的算法是用自然語言表示的用自然語言表示通俗易懂,但文字冗長,容易出現歧義性用自然語言描述包含分支和循環(huán)的算法,不很方便除了很簡單的問題外,一般不用自然語言第20頁/共68頁 例:將以下算法用流程圖表示。
9、 求12345如果需要將最后結果輸出:1ti5開始開始2it*iti+1i結束結束NY第21頁/共68頁偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法用偽代碼寫算法并無固定的、嚴格的語法規(guī)則,可以用英文,也可以中英文混用第22頁/共68頁例: 求5!begin (算法開始) 1 t 2 i while i5 t*i t i+1 i print tend (算法結束)第23頁/共68頁要完成一項工作,包括設計算法和實現算法兩個部分。設計算法的目的是為了實現算法。不僅要考慮如何設計一個算法,也要考慮如何實現一個算法。第24頁/共68頁 例:(求5!)用C語言表示。#include i
10、nt main( ) int i,t; t=1; i=2; while(in輸出輸出n是素數是素數YN第30頁/共68頁通過以上例子可以看出流程圖是表示算法的較好的工具一個流程圖包括以下幾部分:(1) 表示相應操作的框(2) 帶箭頭的流程線(3) 框內外必要的文字說明流程線不要忘記畫箭頭,否則難以判定各框的執(zhí)行次序第31頁/共68頁第32頁/共68頁第33頁/共68頁1).傳統(tǒng)流程圖的弊端傳統(tǒng)的流程圖用流程線指出各框的執(zhí)行順序,對流程線的使用沒有嚴格限制使用者可以毫不受限制地使流程隨意地轉來轉去,使人難以理解算法的邏輯第34頁/共68頁2)三種基本結構 (1) 順序結構AB第35頁/共68頁(
11、2) 選擇結構ABYpNAYpN第36頁/共68頁(3) 循環(huán)結構 當型循環(huán)結構AYp1NYx5N0 x輸出輸出x的值的值x+1x輸出輸出1,2,3,4,5第37頁/共68頁 直到型循環(huán)結構AYp2NYx5N0 x輸出輸出x的值的值x+1x輸出輸出1,2,3,4,5第38頁/共68頁以上三種基本結構,有以下共同特點:(1) 只有一個入口(2) 只有一個出口 一個判斷框有兩個出口 一個選擇結構只有一個出口(3) 結構內的每一部分都有機會被執(zhí)行到。也就是說,對每一個框來說,都應當有一條從入口到出口的路徑通過它(4) 結構內不存在“死循環(huán)”第39頁/共68頁由三種基本結構派生出來的結構:ANp2YB
12、根據表達式根據表達式p的值進行選擇的值進行選擇ABp=p1p=p2MNp=pmp=pn第40頁/共68頁求質數(素數)第41頁/共68頁第42頁/共68頁第43頁/共68頁第44頁/共68頁例第45頁/共68頁第46頁/共68頁例第47頁/共68頁第48頁/共68頁第49頁/共68頁第50頁/共68頁第51頁/共68頁第52頁/共68頁第53頁/共68頁第54頁/共68頁第55頁/共68頁第56頁/共68頁第57頁/共68頁第58頁/共68頁第59頁/共68頁第60頁/共68頁第61頁/共68頁第62頁/共68頁第63頁/共68頁第64頁/共68頁第65頁/共68頁人有了知識,就會具備各種分析能力,明
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玫瑰花購銷合同
- 工業(yè)設備維修保養(yǎng)服務合同
- 出售房屋委托代理合同書
- 固體廢物處理處置服務合同
- 水電接入合同協(xié)議書
- 承包建造船舶合同
- 電子政務系統(tǒng)合同
- 內蒙古北方職業(yè)技術學院《美容外科學醫(yī)學美容》2023-2024學年第二學期期末試卷
- 遼寧稅務高等??茖W校《電氣傳動自動控制系統(tǒng)綜合課程設計》2023-2024學年第二學期期末試卷
- 大連裝備制造職業(yè)技術學院《智慧教學與微課制作》2023-2024學年第二學期期末試卷
- 《和大人一起讀》試題及答案共4套
- 第一課 踏上強國之路 復習課件 統(tǒng)編版道德與法治九年級上冊
- 陳赫賈玲小品《歡喜密探》臺詞劇本
- 雨污水管道施工工藝
- 2023智能低壓配電箱技術條件
- 加油站地罐交接及容積表關系
- 新教材人教版高中數學必修第二冊全冊教案
- 班(組)戰(zhàn)斗動作訓練教案
- 農產品電商運營-完整全套課件
- 唐河縣泌陽凹陷郭橋天然堿礦產資源開采與生態(tài)修復方案
- 科研項目匯報ppt
評論
0/150
提交評論