《信息技術(shù)》(基礎(chǔ)模塊)第2版 課件 任務(wù)1 了解程序設(shè)計理念_第1頁
《信息技術(shù)》(基礎(chǔ)模塊)第2版 課件 任務(wù)1 了解程序設(shè)計理念_第2頁
《信息技術(shù)》(基礎(chǔ)模塊)第2版 課件 任務(wù)1 了解程序設(shè)計理念_第3頁
《信息技術(shù)》(基礎(chǔ)模塊)第2版 課件 任務(wù)1 了解程序設(shè)計理念_第4頁
《信息技術(shù)》(基礎(chǔ)模塊)第2版 課件 任務(wù)1 了解程序設(shè)計理念_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

信息技術(shù)(基礎(chǔ)模塊)主編│譚建偉等程序設(shè)計入門任務(wù)1了解程序設(shè)計理念第5章第5章程序設(shè)計入門目錄Contents5.1.1了解程序設(shè)計基礎(chǔ)知識5.1.2了解常見的程序設(shè)計語言5.1.3理解用程序設(shè)計解決問題的邏輯思維理念第5章程序設(shè)計入門│

了解程序設(shè)計理念程序設(shè)計的理念是程序設(shè)計的基礎(chǔ),程序是解決某個問題所需的一系列指令序列集合,程序設(shè)計語言是人們與計算機進行溝通的工具。運用程序設(shè)計解決問題的過程和方法是程序設(shè)計理念中最重要的部分,它是一種邏輯思維理念,不僅體現(xiàn)在程序設(shè)計中,也可以遷移運用到其他問題的解決中。算法是求解問題的一系列計算步驟,這些計算步驟可能是順序執(zhí)行、選擇執(zhí)行或循環(huán)執(zhí)行的,這也正是一個程序中常出現(xiàn)的三種基本結(jié)構(gòu)。第5章程序設(shè)計入門任務(wù)情景情景1:在開始之前,讓我們先來玩一個游戲—盲人指路。請同學(xué)兩兩組隊,其中一人需戴上眼罩扮演盲人,另外一人需用語言指揮同伴繞過障礙物到達終點。比比看哪支隊伍最先到達終點。情景2:數(shù)學(xué)課上,老師講解概率的含義,為了讓同學(xué)們更好地理解,老師拿出了一枚硬幣,讓同學(xué)們拋100次這枚硬幣,并記錄下每次硬幣落地后的正反面,然后統(tǒng)計出100次中拋出正面的概率。小華心想:拋100次硬幣太費時,聽說計算機是個運算速度特別快的家伙,它可以幫忙“拋”硬幣嗎?第5章程序設(shè)計入門任務(wù)分析情景1:在“盲人指路”的游戲中,負責(zé)指路的同學(xué)所發(fā)出的一系列指令就是一個“程序”,比如“前進”“左轉(zhuǎn)”“右轉(zhuǎn)”“?!钡?,這些指令所組成的序列最終讓“盲人”同學(xué)順利到達終點。通過“盲人指路”的游戲,模擬了一個最簡單的“程序”。計算機程序設(shè)計就是讓計算機按照一定步驟去解決某個問題或者完成某項任務(wù)。情景2:計算機自誕生之日起就是以其超強的“計算”能力而著稱。我國自主研制的神威·太湖之光超級計算機中安裝了40960個“申威26010”眾核處理器,每秒能運行九億億次。所以,即使讓計算機“拋”1000次硬幣,它也可以在不到1秒的時間內(nèi)完成。不過,如何讓計算機完成“拋”硬幣的過程呢?我們需要先利用計算思維,將現(xiàn)實生活中的問題轉(zhuǎn)化成計算機所能處理的形式,然后設(shè)計算法并編寫程序來實現(xiàn)。第5章程序設(shè)計入門5.1.1了解程序設(shè)計基礎(chǔ)知識1.指令和程序指令(Instruction)是給計算機下達的一個基本命令,它是一條語句或代碼。例如“在輸出窗口打印出helloworld!”是一條指令;“計算20除以4的商”也是一條指令。程序(Program)是為實現(xiàn)特定目標的一條或多條編程指令序列的集合。在“盲人指路”游戲中,指揮“盲人”從起點到終點所發(fā)出的一系列指令序列(例如:前進2步-左轉(zhuǎn)-前進3步-右轉(zhuǎn)-前進1步……)是一個程序;拋硬幣并計算拋出正面的次數(shù)占比的過程也是一個程序。事實上,生活中很多事情都有程序:一份菜譜里記錄著這道菜的制作程序;一本活動策劃書里記錄著某個活動的流程;早上起床洗臉、刷牙、吃早餐的過程是一個程序;制作板凳時的打眼、組裝、打磨也是一個程序……當(dāng)計算機運行一個程序時,程序中的指令就會被連續(xù)自動執(zhí)行,就像我們獲得一份如圖5-2所示的菜譜之后,能自動按著菜譜中的操作步驟做出雙面煎蛋一樣,對于計算機來說,根據(jù)人設(shè)定好的程序自動完成一系列指令,叫作“自動化”。今天我們能很方便地使用一些計算機軟件或App,是因為程序員編寫了程序來告訴設(shè)備應(yīng)該怎樣做。第5章程序設(shè)計入門2.程序設(shè)計計算機是一個沒有生命的機器,是一個不知道自己該做什么、但卻十分愿意服從命令的機器。手機如果沒有“程序”,就是一堆沒有用的零件,我們無法用它通話、上網(wǎng)和玩游戲。程序設(shè)計(ProgramDesign)就是將問題解決的方法步驟編寫成計算機可執(zhí)行的程序的過程。簡單來說,就是告訴計算機要做什么,并且每一個行為的細節(jié)和順序都要說清楚、可執(zhí)行。這樣,計算機就能夠很快速地、正確地完成所有“指令”,最終解決問題或完成任務(wù)。第5章程序設(shè)計入門說一說

請結(jié)合生活經(jīng)驗,談一談對程序設(shè)計的理解。第5章程序設(shè)計入門5.1.2了解常見的程序設(shè)計語言1.低級語言和高級語言我們和計算機溝通的語言就是程序設(shè)計語言,程序設(shè)計語言包括低級語言和高級語言。最開始的程序設(shè)計語言只有兩個符號,要么是1,要么是0,它們分別代表電路“開”和“關(guān)”,這是一種比較底層的語言,稱為二進制語言,又稱為機器語言。雖然它能夠?qū)崿F(xiàn)我們與計算機的溝通,但是面對一大串毫無可讀性的01代碼,人們顯然非常希望能夠找到一種更加簡便的方法來告訴計算機要做什么。為了降低程序編寫和維護的難度,人們又發(fā)明了匯編語言,利用特定的助記符來幫助程序員記憶機器指令。但是,利用匯編語言編寫的程序通常不能是大規(guī)模的,它和機器語言一樣,都是直接面向機器的,與人們使用的自然語言有很大區(qū)別,機器語言和匯編語言統(tǒng)稱為低級語言。后來,隨著計算機語言的發(fā)展,高級語言終于誕生了。高級語言是以人們的日常語言為基礎(chǔ)的一種編程語言,是能夠直接表達運算操作和邏輯關(guān)系的語言,大大增強了程序代碼的可讀性和易維護性。例如,曾經(jīng)我們想讓計算機在輸出窗口打印出“前進!”,寫下的程序可能是無序的01代碼;而如今我們想讓計算機進行同樣的操作,寫下的程序就可以像表5-1右列這樣,簡潔且具有很強的可讀性?,F(xiàn)在,人們已經(jīng)發(fā)明了很多高級語言了,比如C、C++、Java、Python等,它們有著各自不同的語法和特點,而Python憑借著它明確、簡單、可擴展性強等特點,逐漸成為世界上最受歡迎的程序設(shè)計語言之一。第5章程序設(shè)計入門2.常見的高級程序設(shè)計語言C語言:C語言是一門通用計算機編程語言,功能豐富,使用靈活。同時,C語言還具有匯編語言的許多特點,比如能直接訪問物理地址、進行位操作、直接對硬件進行操作等,因此,C語言也稱為“中級語言”。C語言是編寫應(yīng)用軟件、操作系統(tǒng)和編譯程序的重要語言之一。C++語言:C++語言是在C語言基礎(chǔ)上開發(fā)的一門中級語言,既可以進行C語言的過程化程序設(shè)計,又可以進行面向?qū)ο蟮某绦蛟O(shè)計。C++的應(yīng)用領(lǐng)域很廣,是受廣大程序員喜愛的編程語言之一。Java語言:Java語言是一門面向?qū)ο蟮木幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還刪減了C++里難以理解的概念,功能強大,簡單易用。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。Python語言:Python語言是一種面向?qū)ο蟮慕忉屝途幊陶Z言,語法簡潔清晰,是完全面向?qū)ο蟮恼Z言,函數(shù)、模塊、數(shù)字、字符串都是對象。Python擁有強大的標準模塊和第三方模塊,能夠快速開發(fā)出功能豐富的應(yīng)用程序。此外,Python常被稱為膠水語言,能夠把用其他語言(如C和C++)制作的模塊輕松聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python搭建程序框架,若對其中有特別要求的部分,可用更適合的語言改寫,比如3D游戲中的圖形渲染模塊性能要求很高,就可以用C或C++重寫,而后封裝為Python可調(diào)用的擴展模塊就可以了。第5章程序設(shè)計入門說一說基于不同程序設(shè)計語言的語法,談一談規(guī)則的重要性。第5章程序設(shè)計入門5.1.3理解用程序設(shè)計解決問題的邏輯思維理念利用程序設(shè)計解決問題的過程和我們?nèi)祟惤鉀Q問題的過程有很大的相似之處。比如,當(dāng)我們解決問題時,首先會觀察、分析問題,收集必要的信息,然后根據(jù)已有的知識、經(jīng)驗進行判斷和推理,接著嘗試按照一定的方法和步驟去解決問題。而要通過程序設(shè)計來解決問題,也需要經(jīng)歷類似的思維過程,我們將這種運用信息技術(shù)解決問題的思想方法稱為計算思維。計算思維讓我們能夠:①運用所學(xué)知識和技能,通過界定問題、抽象特征、建立模型和組織數(shù)據(jù)等,將一個抽象的問題轉(zhuǎn)化成計算機等信息技術(shù)可以處理的形式;②通過判斷、分析和綜合各種信息,運用信息技術(shù)工具和信息資源,設(shè)計算法形成解決問題的方案;③總結(jié)信息技術(shù)應(yīng)用的方法和技巧,并遷移到與之類似的相關(guān)問題的解決過程中,包括自己的職業(yè)崗位和生活情境。計算思維不僅體現(xiàn)在程序設(shè)計中,在我們的學(xué)習(xí)、生活和工作中,計算思維也同樣重要,它能幫助我們?nèi)グl(fā)現(xiàn)問題、分析問題和解決問題,是一項重要的思維能力。第5章程序設(shè)計入門1.將抽象問題轉(zhuǎn)化成計算機能處理的形式將一個問題轉(zhuǎn)化成計算機能處理的形式,首先需要抽象出問題中的關(guān)鍵對象和對象之間的關(guān)系,然后建立起合適的模型,并用計算機語言表達出來。簡單來說,這是一個對問題進行重新表述的過程。問題的類型千千萬萬,其表述方式并不唯一,有的問題可以用數(shù)學(xué)模型來表述,有的問題可以用文字、表格或圖形等形式表述。每次拋硬幣,落地后要么是正面,要么是反面,這便是硬幣落地后的兩種狀態(tài)。在計算機中,我們可以用兩個數(shù)字來表示兩種不同的狀態(tài),這種方法也可稱為“編碼”。例如,我們用數(shù)字1表示拋出正面,用數(shù)字0表示拋出反面(當(dāng)然,你也可以用其他數(shù)字或其他計算機能處理的形式分別表示正面和反面狀態(tài))。第5章程序設(shè)計入門拋硬幣的結(jié)果具有隨機性,每次可能出現(xiàn)正面,也可能出現(xiàn)反面,就好比“抽簽”一樣。在Python程序設(shè)計語言中,提供了一個用于“抽簽”的工具箱—random隨機數(shù)模塊,其中提供了一些用于產(chǎn)生隨機數(shù)的“工具”。我們將“工具箱”random模塊導(dǎo)入程序,就可以使用其中的所有“工具”了。例如,randint(a,b)是random模塊中的一個“工具”,用于從a~b中隨機產(chǎn)生一個整數(shù),因此,“拋硬幣”的過程可以用下面這行語句進行表達:操作過程 Python語句拋硬幣 result=random.randint(0,1)

第5章程序設(shè)計入門注:result代表拋硬幣的結(jié)果,result=random.randint(0,1)表示0~1中隨機產(chǎn)生一個數(shù),并把這個隨機數(shù)賦給result。result的值要么是0,要么是1。當(dāng)result的值是0時,代表拋硬幣的結(jié)果是反面;當(dāng)result的值是1時,代表拋硬幣的結(jié)果是正面。在Python中,可以用關(guān)系運算符“==”來表達兩個對象之間的相等關(guān)系,因此,拋硬幣的結(jié)果可以表述為Python邏輯表達式。這樣,我們就通過編碼、程序語句和邏輯表達式,將“拋硬幣”問題用一種計算機能夠處理的形式進行了重新表述。接下來,需要著手設(shè)計具體的解決方案,即設(shè)計算法。第5章程序設(shè)計入門2.設(shè)計算法在程序設(shè)計中,算法(Algorithm)就是程序執(zhí)行的流程,是解決問題的步驟。(1)問題分解。對于較為復(fù)雜的問題,可以首先根據(jù)功能、流程或從其他角度將問題分解,并且分解出的子問題也可以根據(jù)需要進一步分解;之后,再對每個子問題設(shè)計詳細的解決步驟,各個擊破。第5章程序設(shè)計入門思維拓展:事實上,在很多時候,問題分解都能幫助我們更好地找到解決問題的辦法。例如,作家寫一本書之前,會先確定大綱,列出一級標題、二級標題……之后再對各個部分進行具體寫作;做一項旅行攻略時,我們會將攻略分為景點、交通、住宿、用餐等幾個模塊,然后再針對各個模塊進行詳細規(guī)劃。拋硬幣拋出正面的概率可以根據(jù)以下公式進行計算:拋出正面的概率=拋出正面的次數(shù)÷實驗總次數(shù)已知:實驗總次數(shù)為100次。于是,可根據(jù)計算公式將問題分解為兩個子問題:“計算拋出正面的次數(shù)”和“計算拋出正面的概率”,如圖所示。當(dāng)然,也可以從其他角度進行問題分解,或者也可以不分解。第5章程序設(shè)計入門(2)子問題1:計算拋出正面的次數(shù)。為計算拋出正面的次數(shù),我們可以這樣來設(shè)計算法,用自然語言描述為:在開始“拋硬幣”之前,將正面次數(shù)設(shè)為0。執(zhí)行“拋硬幣”操作。如果拋出正面,則正面次數(shù)+1,實驗次數(shù)+1;如果拋出反面,則僅實驗次數(shù)+1。然后繼續(xù)執(zhí)行下一次“拋硬幣”操作。我們可以用流程圖來描述這個算法,如圖所示。其中,用圓角矩形表示“開始”,之后,程序?qū)㈨樦^指引的方向進行;用菱形表示“判斷”,在該判斷條件下,有兩條分支,一條是拋出正面之后要進行的操作(正面次數(shù)+1,然后進行下一次拋硬幣),另一條是拋出反面之后要進行的操作(直接進行下一次拋硬幣)。然而,仔細分析一下繪出的流程圖,將發(fā)現(xiàn)這個流程并沒有出口。第5章程序設(shè)計入門事實上,當(dāng)拋完第100次硬幣后,就可以不再繼續(xù)拋硬幣,進而結(jié)束流程。因此,需要在每次拋硬幣之前,判斷是否已經(jīng)拋了100次,如果還沒有拋夠100次,就繼續(xù)拋硬幣;否則,就結(jié)束流程,進行下一個步驟。如果不判斷實驗次數(shù)是否達到100次,程序就會永不停止地“拋硬幣”,陷入“死循環(huán)”。此外,每拋一次硬幣,都應(yīng)更新實驗次數(shù),以記錄當(dāng)前是第幾次拋硬幣。這樣,我們可以在之前算法的基礎(chǔ)上,增加對實驗次數(shù)的判斷,用自然語言描述新的算法:在開始拋硬幣之前,將正面次數(shù)設(shè)為0,將實驗次數(shù)設(shè)為0。判斷實驗次數(shù)是否<100,如果是,則執(zhí)行“拋硬幣”操作。如果拋出正面,則正面次數(shù)+1,實驗次數(shù)+1;如果拋出反面,則僅實驗次數(shù)+1。繼續(xù)判斷實驗次數(shù)是否<100,如果是,則執(zhí)行“拋硬幣”操作。如果拋出正面,則正面次數(shù)+1,實驗次數(shù)+1;如果拋出反面,則僅實驗次數(shù)+1。直到某次判斷發(fā)現(xiàn)實驗次數(shù)≥100,結(jié)束“拋硬幣”操作。第5章程序設(shè)計入門(3)子問題2:計算拋出正面的概率。經(jīng)過了100次拋硬幣之后,我們可以得到拋出正面的次數(shù),接下來,就可以根據(jù)概率計算公式計算拋出正面的概率了。第5章程序設(shè)計入門3.反思和遷移下載并運行下面的示例程序tossCoin.py,體會一下用計算機解決“拋硬幣”問題的過程,看看拋100次硬幣得到正面的概率是多少?當(dāng)拋硬幣的次數(shù)更多時,拋出正面的概率接近于哪個數(shù)?importrandom

up_n=0#記錄拋出正面的次數(shù)total_n=100#代表實驗總次數(shù)cnt=0#記錄實驗次數(shù)

whilecnt<total_n:result=random.randint(0,1)print(result)ifresult==1:up_n=up_n+1cnt=cnt+1

p=up_n/total_nprint('拋出正面的頻率為:'+str(p))第5章程序設(shè)計入門4.算法、程序流程圖和程序基本結(jié)構(gòu)(1)算法。算法(Algorithm)是求解問題的一系列計算步驟,我們計算拋100次硬幣拋出正面的概率所采用的計算步驟就是解決這個問題的一個算法。解決不同的問題可能需要不同的算法,同一個問題也可能有不同的解決方案或算法。算法是軟件的核心,無論是解決簡單問題的程序,還是制造芯片的軟件,都依靠算法。對于一些經(jīng)典的問題,人們提出了很多解決辦法,并總結(jié)成了經(jīng)典的算法,如枚舉算法、二分查找法、排序算法、遞歸算法、回溯算法等。一個算法應(yīng)該具有以下幾個重要特征:

有窮性 確切性 輸入項 輸出項 可行性程序是算法和數(shù)據(jù)結(jié)構(gòu)的總和,其中,算法是程序的“靈魂”,數(shù)據(jù)結(jié)構(gòu)是對數(shù)據(jù)的表達和處理。因此,算法獨立于任何具體的程序設(shè)計語言之外,一個算法可以用多種程序設(shè)計語言來實現(xiàn)。我們可以用自然語言來描述一個算法,也可以用程序流程圖來表示一個算法。第5章程序設(shè)計入門(2)程序流程圖。程序流程圖是把計算機的主要運行步驟和順序呈現(xiàn)出來的一種工具,是整個程序的一張藍圖,能夠清晰直觀

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論