21算法的概念及描述課件-浙教版高中信息技術(shù)必修一_第1頁
21算法的概念及描述課件-浙教版高中信息技術(shù)必修一_第2頁
21算法的概念及描述課件-浙教版高中信息技術(shù)必修一_第3頁
21算法的概念及描述課件-浙教版高中信息技術(shù)必修一_第4頁
21算法的概念及描述課件-浙教版高中信息技術(shù)必修一_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

算法的概念及描述Python程序設(shè)計(jì)麗江市一中信息技術(shù)教研組請幾位同學(xué)來玩一個(gè)圍貓游戲單機(jī)此處編輯2.1.1、算法的概念圍貓游戲算法與問題解決單機(jī)此處編輯1、農(nóng)夫一次最多只能帶一樣?xùn)|西(狼、羊、白菜)過河。2、農(nóng)夫不在狼吃羊、羊吃白菜。3、渡口只有一條小船,船只能容下一人和另外一樣?xùn)|西,而且只有農(nóng)夫才能撐船。2.1.1、算法的概念農(nóng)夫過河算法與問題解決單機(jī)此處編輯信息技術(shù)基礎(chǔ)狼吃羊;羊吃白菜;注:只有農(nóng)夫在時(shí),不會(huì)被對方吃掉。請同學(xué)們思考下:農(nóng)夫過河應(yīng)該怎樣過河才行?2.1.1、算法的概念農(nóng)夫過河問題分析算法與問題解決單機(jī)此處編輯方案一第一步、農(nóng)夫先把羊運(yùn)過河,第二步、再把白菜運(yùn)過河,此時(shí)又把羊捎回,第三步、放下羊,同時(shí)把狼運(yùn)過河,第四步、把羊運(yùn)過河

方案二第一步、農(nóng)夫先把羊運(yùn)過河,第二步、再把狼過河,此時(shí)又把羊捎回,第三步、放下羊,同時(shí)把白菜運(yùn)過河,第四步、把羊運(yùn)過河

2.1.1、算法的概念農(nóng)夫過河方案算法與問題解決

“百錢買百雞”問題,是我國古代數(shù)學(xué)家張丘建在《算經(jīng)》中提出的經(jīng)典問題。

書中是這樣描述的:“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,問翁、母、雛各幾何?”算法與問題決

同時(shí),他還在書中給出了解決問題的算法,“雞翁每增四,雞母每減七,雞雛每益增三,即得”。2.1.1、算法的概念百錢買百雞算法與問題解決?窮舉算法也稱為枚舉算法,指的是在求解過程中,先按照一定的順序一一列舉所有的可能解,然后用條件判斷列舉出可能是否為正確解。一般適用于解離散的且范圍明確的問題。1、魚酸菜一袋算法與問題解決2、酸菜切小段3、熱油、蔥姜爆炒,加入酸菜翻炒4、加水燒開后加入魚骨,燉一會(huì),加點(diǎn)鹽、糖提味5、放入魚片6、開鍋后盛出即可2.1.1、算法的概念酸菜魚菜譜算法與問題解決單機(jī)此處編輯算法的概念由此可見,以上幾個(gè)問題都有其解決方法。除此之外現(xiàn)實(shí)生活中處處都有解決問題的相應(yīng)步驟、方法。算法與問題解決圍貓游戲農(nóng)夫過河百錢買百雞酸菜魚菜譜算法與問題解決單機(jī)此處編輯用計(jì)算機(jī)解決問題即讓計(jì)算機(jī)按照程序執(zhí)行指令。利用計(jì)算機(jī)編程的方式進(jìn)行問題求解時(shí),通常經(jīng)歷以下幾個(gè)環(huán)節(jié):

?用計(jì)算機(jī)解決實(shí)際問題的過程中,有兩個(gè)重要的環(huán)節(jié):①設(shè)計(jì)算法、②編制和運(yùn)行程序來實(shí)現(xiàn)算法。2.1.1、算法概念計(jì)算機(jī)解決問題的步驟算法與問題解決提出問題設(shè)計(jì)方案編程調(diào)試解決問題提出問題分析問題設(shè)計(jì)方案編程調(diào)試單機(jī)此處編輯

算法:就是解題方法的精確描述,即解決問題的方法和步驟。

從廣義的角度來看,指的是解決問題或完成任務(wù)的一系列步驟。并不僅僅“計(jì)算”的問題才有算法,日常生活中處處都有,如菜譜是否廚師做菜的算法,廣播體操圖解是做廣播體操的算法。等……

1、算法的定義什么是算法?算法與問題解決洗開水壺?zé)_水灌涼水洗茶壺洗茶杯拿茶葉泡茶喝方法甲方法乙方法丙同時(shí)

?對同一個(gè)問題,有時(shí)可以有不同的解決方法和步驟。盡可能采用簡單省時(shí)的和步驟少的方法去解決問題。同時(shí)要保證算法正確、算法的質(zhì)量。1、算法的定義泡茶算法算法與問題解決1、有窮性:一個(gè)算法的處理(執(zhí)行)步驟必須是有限的。2、確定性:算法中的每一個(gè)步驟必須有確切的含義,而不應(yīng)該的含糊的,模棱兩可的。3、可行性:算法的每個(gè)步驟都要足夠簡單,是實(shí)際能做的,而且能在有限的時(shí)間內(nèi)完成的。4、有0個(gè)或多個(gè)輸入。5、有一個(gè)或多個(gè)輸出。2、算法的特征——P40算法的特征算法與問題解決斐波那契數(shù)列3、算法的要素算法的要素算法與問題解決

用計(jì)算機(jī)解決問題,本質(zhì)上是以“數(shù)據(jù)運(yùn)算”的方式來實(shí)現(xiàn)的。各種“運(yùn)算”有時(shí)需要依次進(jìn)行,有時(shí)需要根據(jù)條件選擇一部分進(jìn)行,有時(shí)又需要重復(fù)執(zhí)行某些“運(yùn)算”,這些“運(yùn)算”順序的調(diào)控就需要借助控制轉(zhuǎn)移來實(shí)現(xiàn)。1、數(shù)據(jù):用算法解決問題時(shí),必須明確參與運(yùn)算的初始數(shù)據(jù)、運(yùn)算時(shí)產(chǎn)生的中間數(shù)據(jù)以及代表問題解決的結(jié)果數(shù)據(jù)。(在算法執(zhí)行前,必須設(shè)置洗滌模式<時(shí)間>、溫度、水位、轉(zhuǎn)速等,并把數(shù)據(jù)輸入到算法中,讓它按照需求工作。)2、運(yùn)算:在對數(shù)據(jù)進(jìn)行運(yùn)算時(shí),必須明確每一步的運(yùn)算是什么、對哪些數(shù)據(jù)進(jìn)行運(yùn)算等。3、控制轉(zhuǎn)移:在算法執(zhí)行過程中,有時(shí)需要根據(jù)數(shù)據(jù)或運(yùn)算結(jié)果的特點(diǎn)進(jìn)行不同處理。3、算法的要素算法的要素算法與問題解決單機(jī)此處編輯如何描述算法?即算法的表示方法?P42

算法的表示方法:一般用自然語言、流程圖、偽代碼、計(jì)算機(jī)程序設(shè)計(jì)語言等進(jìn)行描述。2.1.2、算法的描述算法的描述算法與問題解決

設(shè)計(jì)出一個(gè)解決問題的算法,也需要用能被算法執(zhí)行者理解的形式呈現(xiàn),才能被算法執(zhí)行者理解并執(zhí)行。算法的這種呈現(xiàn)就稱為算法的描述。麗江市一中信息技術(shù)教研組例如:停車場車位探測中的算法(車位探測器——傳感器)輸入flag的值,根據(jù)flag的值設(shè)置車位上指示燈的顏色,并輸出車位狀態(tài)(“空位”或“非空車位”)1、輸入變量flag的值。2、若flag的值為1,則設(shè)置指示燈為綠色,輸出“空車位”;否則,設(shè)置指示燈為紅色,輸出“非空車位”。1、用自然語言描述算法算法的描述算法與問題解決

自然語言是人們在日常生活中交流使用的語言。如漢語、英語等,用自然語言描述算法通俗易懂,且不需要進(jìn)行專門的學(xué)習(xí)和訓(xùn)練。單機(jī)此處編輯流程圖2、用流程圖描述算法算法的描述算法與問題解決

用自然語言描述算法雖然通俗易懂,但也存在難以避免的問題。如易出現(xiàn)歧義及在處理根據(jù)條件處理算法時(shí)比較煩瑣。

流程圖是一種常用的表示算法的圖形化工具。

采用流程圖來描述會(huì)顯得比較直觀和易于理解。輸入flag的值Flag=1?N(條件不成立)Y(條件成立)開始指示燈為綠色輸出“空車位”指示燈為紅色輸出“非空車位”結(jié)束單機(jī)此處編輯流程圖基本圖形及其功能算法的描述算法與問題解決判斷框(選擇框)開始/結(jié)束流程線連接點(diǎn)輸入/輸出處理框單機(jī)此處編輯3、用偽代碼描述算法算法的描述算法與問題解決流程圖雖然直觀易懂,但當(dāng)分支增多時(shí)會(huì)出現(xiàn)流程線相互交叉而影響算法理解的情況。自然語言和流程圖描述的算法轉(zhuǎn)換為計(jì)算機(jī)程序時(shí),中間還需要較多的語義解釋和格式轉(zhuǎn)換工作。

偽代碼指的是一種比較直觀簡潔的、符號接近計(jì)算機(jī)程序代碼的算法描述方式,其風(fēng)格很像計(jì)算機(jī)程序設(shè)計(jì)語言,但又不是真正的可以被計(jì)算機(jī)理解的代碼。它的表示沒有統(tǒng)一、嚴(yán)格的規(guī)定,只要定義合理、表達(dá)正確即可。單機(jī)此處編輯3、用偽代碼描述算法算法的描述算法與問題解決1)、條件判斷語句

格式1:if條件then

(語句序列1)

Else

(語句序列2)

格式1:if條件then

(語句序列1)

?此時(shí)成立時(shí)執(zhí)行語句序列1,不成立就不執(zhí)。2)、循環(huán)語句

格式:while條件(循環(huán)體)?循環(huán)由一個(gè)或多個(gè)語句組成。循環(huán)語句執(zhí)行時(shí),先判斷條件是否成立,若條件成立則執(zhí)行循環(huán)體,循環(huán)體執(zhí)行完后再判斷條件是否成立,如此重復(fù),直到條件不成立,則結(jié)束循環(huán)語句,接著去執(zhí)行循環(huán)語句后面的語句。單機(jī)此處編輯3、用偽代碼描述算法(車位探測偽代碼)算法的描述算法與問題解決Flag車位探測結(jié)果

#將測得的車位當(dāng)前狀態(tài)值輸入給變量flagifflag=1

then

(指示燈綠色

輸出“空車位”)Else(指示燈紅色

輸出“非空車位”)

單機(jī)此處編輯3、用計(jì)算機(jī)程序設(shè)計(jì)語言描述算法算法的描述算法與問題解決

無論是自然語言描述算法,還是流程圖或者偽代碼描述的算法,計(jì)算機(jī)都無法理解并執(zhí)行。要讓計(jì)算機(jī)幫助人們解決問題,需要將算法用某種計(jì)算機(jī)程序設(shè)計(jì)語言來描述,這個(gè)過程稱為程序編寫(或代碼編寫)以下是用C++和python編寫的程序VoidMainWindow::on_pushButton_clicked(){intflag=ui->lineEdit->text().toInt()if(flag==1){ui->label_4->setStyleSheet(“color:green”);ui->label_4->setText(“綠色”);ui->label_5->setText(“空車位”);

}else{ui->label_4->setStyleSheet(“color:red”);ui->label_4->setText(“紅色”);ui->label_5->setText(“非空車位”);}}flag=int(input(“輸入車位狀態(tài)值”))ifflag==1;print(“綠色”)print(“空車位”)Else:print(“紅色”)print(“非空車位”)

單機(jī)此處編輯程序設(shè)計(jì)語言算法的描述算法與問題解決

計(jì)算機(jī)程序設(shè)計(jì)語言經(jīng)歷了“機(jī)器語言——匯編語言——高級語言”的發(fā)展歷程。機(jī)器語言指令由“0”“1”二進(jìn)制碼組成,機(jī)器執(zhí)行效率高但可讀性、維護(hù)性差。為提升效率發(fā)明了匯編語言和高級語言(用接近人類日常用語的符號來表示各類指令,如Basic、C、C++、Java、Python等)。?算法的多樣性:現(xiàn)實(shí)中解決一個(gè)問題的算法往往具有多樣性,即可用多種不同的算法來解決同一個(gè)問題。如求兩個(gè)正整數(shù)的最大公約數(shù)問題,“輾轉(zhuǎn)相除法”、“更相減損術(shù)”信息技術(shù)基礎(chǔ)麗江市一中信息技術(shù)教研組程序?qū)嵗纾簝蓚€(gè)數(shù)進(jìn)行數(shù)值交換(自然語言)1、輸入變量X、Y值。2、比較X和Y。如果X<>Y(X不等于Y),則X、Y兩個(gè)數(shù)進(jìn)行數(shù)值交換。3、輸出結(jié)果X、Y的值,即為交換后X、Y的值。那么兩個(gè)數(shù)交換是怎么實(shí)現(xiàn)的呢?信息與信息技術(shù)麗江市一中信息技術(shù)教研組ABX數(shù)值存儲單元Y數(shù)值存儲單元空杯子空的存儲單元D1、D=A,此時(shí)A杯已空。2、A=B,此時(shí)B杯已空。3、B=D,此時(shí)D杯已空。單機(jī)此處編輯信息技術(shù)基礎(chǔ)麗江市一中信息技術(shù)教研組算法流程圖是怎么的呢?開始輸入a、v進(jìn)行a、b交換結(jié)束a<>b?N(條件不成立)條件或選擇語句語法結(jié)構(gòu):1、If條件判斷then執(zhí)行相應(yīng)的語句2、If條件判斷then執(zhí)行語句Aelse執(zhí)行語句Bendif如:If

條件判斷then

執(zhí)行語句A

else

執(zhí)行語句B

endif開始輸入a、b交換:t=a,a=b,b=t結(jié)束輸出a、b單機(jī)此處編輯信息技術(shù)基礎(chǔ)麗江市一中信息技術(shù)教研組如何讓計(jì)算機(jī)去解決問題?通過新添加中間變量的方式,交換數(shù)值.下面通過一個(gè)demo1函數(shù)進(jìn)行演示:

defdemo1(a,b):temp=aa=bb=tempprint(a,b)#coding:utf-8a=1b=2#第一種方式t=a#臨時(shí)存放變量值

a=bb=t#第二種方式a=a+bb=a-ba=a-b

#第三種方式a,b=b,aprint("A->",a,"B->",b)執(zhí)行結(jié)果:A->2B->1單機(jī)此處編輯各種算法描述方法的比較算法的描述算法與問題解決描述方法優(yōu)點(diǎn)缺點(diǎn)自然語言用人們?nèi)粘K玫恼Z言,比較容易理解。自然語言描述算法通俗易懂。分支或循環(huán)多時(shí),易出現(xiàn)歧義及在處理根據(jù)條件處理算法時(shí)比較煩瑣。流程圖流程描述清晰、直觀。分支增多時(shí)會(huì)出現(xiàn)流程線相互交叉而影響算法理解的情況。偽代碼一種比較直觀簡潔的、符號接近計(jì)算機(jī)程序代碼的算法描述方式,其風(fēng)格很像計(jì)算機(jī)程序設(shè)計(jì)語言。不是真正的可以被計(jì)算機(jī)理解的代碼單機(jī)此處編輯1、下面關(guān)于算法描述,正確的是()(A)、一個(gè)算法只能有一個(gè)輸入(B)、算法只能用框圖來表示(C)、一個(gè)算法的執(zhí)行步驟可以是無限的。(D)、一個(gè)完成的算法,不管用什么方法來表示,都至少有一個(gè)輸出結(jié)果。2、算法描述可以有多種表達(dá)方法,下面哪些方法不可以描述“閏年問題”的算法()(A)、自然語言(B)、流程圖(C)、偽代碼(D)、機(jī)器語言DD練習(xí)算法與問題解決單機(jī)此處編輯3、算法與程序的關(guān)系(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論