資源簡介 (共25張PPT)01 初識編程程序設計基礎學習目標Scratch 編程繪制正方形0 1什么是程序和編程0 2什么是編程語言0 3編譯執行和解釋執行0 4編譯器和解釋器0 5Bug 和 Debug0 6第一個程序題目:繪制一個邊長為100的正方形究竟什么是程序?什么是編程?先看個故事一個文化人,他有一個仆人是聾子… …幸好他們都不是瞎子… …仆人也認識幾個有限的詞匯… …主人想讓仆人做點事,他應該怎么做?任務書1、……2、……程序就是計算機的任務書現在你就是主人,計算機就是你忠實的仆人你要是聰明,就將任務交給仆人去做否則…,你就自己干活,讓仆人歇著去吧…程序1、……2、……編程就是用人和計算機都能夠理解的語言為計算機編制完成任務所需的任務書計算機只認識 0 和 1,所有任務書必須由0 和 1 組成,計算機才能看懂有兩個辦法編寫任務書直接用 0 和 1組成的語言編寫,這樣的語言叫機器語言用人熟悉的語言編寫任務書,然后再找一個翻譯編程和語言編程語言有很多種可以用不同的語言編寫程序,完成相同的任務,但是不同的語言需要不同的翻譯。C/C++語言JAVA語言其他語言翻譯1翻譯2翻譯n機器語言01100101一次將整個程序翻譯成機器語言,然后計算機執行程序,完成任務這時的翻譯叫“編譯器”任務書哪怕有一丁點“翻譯”看不懂,翻譯工作也不能完成,程序當然也不能執行,這時叫發生了“編譯錯誤”編譯執行02解釋執行將程序翻譯一句,計算機馬上執行一句這時的翻譯叫“解釋器”翻譯看懂一句,翻譯一句,執行一句。遇到不懂的語句,就會停止工作解釋執行通常會比編譯執行慢一些兩種完成任務的方式編程的一般流程任務期望結果編寫/修改程序編譯/解釋執行實際執行結果編程中有很多問題會導致程序結果與期望不一致,這些問題叫 bug(蟲子),檢查程序消除問題的過程叫 debug(除蟲) 或調試。語法決定指令可以通過什么方式和順序組合在一起指令告訴計算機要完成什么具體的操作(任務)語言由一定數量的詞匯(指令集)和語法組成編程語言將代表指令的圖塊組合在一起的方式凡是允許的,就是正確的因此, Scratch 編程語言中沒有語法錯誤但是在其它編程語言中,語法錯誤是初學者最常犯的錯誤這也是我們為什么以Scratch 作為第一門編程語言的一個重要原因語法Scratch 編程語言 3-1指令Scratch 編程語言 3-2分為動作、外觀、聲音、事件、控制、偵測、運算、變量、自制積木等九種類型每類指令通過不同顏色的圖塊表示Scratch 編程語言 3-3有的指令很簡單有的需要選擇(“面向”中可以選擇不同的角色、顏色偵測中通過點擊顏色選擇)有的指令還有參數,參數告訴指令任務的細節,比如10代表移動的距離;參數有的需要輸入讓代碼盡量簡潔同一任務,完成的方法有很多種,程序的寫法也有很多種;學會使用“重復執行”,當主人才會很輕松“重復執行”和其內部指令構成“循環結構”怎樣畫正三角形? 2-1從一個點,沿著某個方向出發,經過n次旋轉又回到原來的方向,總共旋轉了多少度?怎樣畫正三角形?2-2正方形旋轉了4次,每次旋轉角度相同,因此每次旋轉90度正三角形需要旋轉幾次?每次旋轉多少度?怎樣畫正多邊形?一個正多邊形,假設有n個邊,每次旋轉的角度都是相同的,所以每次旋轉的角度等于 360/n ,現在明白了嗎?你能畫圓嗎?每次前進一小步,旋轉一個小角度,走下來就是圓。實際畫的是邊長為2的正180邊形。直與曲是可以相互轉換的。直線短了,就變為曲。曲線長了,就變為直。都知道地球是圓的,但我們的馬路很直。1把任務分解為計算機可以理解的,能夠按照一定順序執行的步驟或操作的過程,叫算法設計3編程的核心是“算法設計”,你認為這種說法對嗎?2算法:完成任務所需要的,由計算機可以理解的基本操作及規定的執行順序所構成的完整的解題步驟算法和算法設計1、有窮性2、確切性算法的有窮性是指算法必須能在執行有限個步驟之后終止,能夠結束,不能夠無限執行下去算法的每一步驟必須有確切的定義,必須是計算機可理解執行的操作算法的 7 個特征 4-13、輸入(Input)一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件。4、輸出(Output)一個算法有一個或多個輸出,以反映對輸入數據加工后的結果。沒有輸出的算法是毫無意義的。算法的 7 個特征 4-2算法的 7 個特征 4-3前面的程序都沒有輸入,只有輸出這個程序根據輸入的邊數畫正多邊形,既有輸入也有輸出對不同的輸入數據都能夠響應正確健壯性(Robustness) 7執行速度快,占用資源少 高效性(High efficiency) 6算法中即每個步驟都可以在有限時間內完成;(也稱之為有效性) 可行性(Effectiveness)5算法的 7 個特征 4-4但算法設計的思想和技巧是不變的這也是編程學習最核心的內容可以編程解決的問題有很多很多編程語言有很多很多進入編程的世界,你會發現:總有些東西是不變的總結Scratch 編程繪制正方形什么是程序和編程什么是編程語言編譯執行和解釋執行編譯器和解釋器Bug 和 DebugScratch 編程語言算法和算法設計(共20張PPT)02 舞臺和角色程序設計基礎學習目標彈球游戲0 1舞臺和角色0 2屏幕和坐標0 3繪制一排小松樹0 4程序的初始化0 5彈球游戲 4-1繪制背景中的紅色底邊繪制擋板角色導入小球角色,調整小球大小為小球角色導入水滴聲音 water_drop彈球游戲 4-2為擋板角色添加腳本腳本實現了用鼠標控制擋板左右水平移動的功能原理是不斷地將擋板的x坐標設置為鼠標指針的x坐標彈球游戲 4-3為小球角色添加腳本首先,程序將球移到(13,157)這個位置然后不斷地重復移動4步這一動作。在此過程中,如果碰到舞臺邊緣,球就會被反彈回來;如果碰到紅色,游戲結束運行;彈球游戲 4-4小球如果碰到擋板,播放聲音water_drop(水滴落),改變當前球的運動方向為 (180-方向),實現反彈效果。如果原方向為150度,則新方向為30度,原運動方向和新運動方向以豎直方向0度為對稱軸,就像光線反射一樣,如下圖所示然后,移動5步,在隨機旋轉一個正負10度之間的一個角度游戲要素動畫、音樂和人物控制碰撞檢測挑戰性和趣味性隨機性和運氣輸贏機會的平衡… …改進思路增加爆炸物(碰到游戲結束)和禮品(碰到加分)增加鍵盤控制,通過鍵盤控制實現雙人對戰(兩人一左一右,球碰到自己這邊的底線為輸),得分顯示及歷史記錄,時間限制,實現多關游戲、難度逐漸增加,等等舞臺和角色 7-1編寫 Scratch 程序,就像是設計一場演出。所有的演出活動都在舞臺上進行舞臺的寬度為480,高度為360 單位,并以x-y 的網格線分割。舞臺中央的x, y 坐標為0,0。舞臺和角色 7-2通過移動鼠標 (光標),并且查閱舞臺下方所顯示的鼠標x, y 坐標值,可得知舞臺任何一點的坐標值舞臺有小、大、演示三種模式,通過以下三個按鈕切換舞臺和角色 7-3舞臺有腳本、多個背景和聲音背景可通過繪制或導入圖片生成腳本可控制背景的切換,實現動畫效果聲音可通過錄制或導入聲音文件生成腳本可播放音樂文件,實現背景音樂舞臺和角色 7-4在舞臺上演出的各種演員,稱為角色角色可以在舞臺上移動,以及跟其它的角色互動角色可有多個造型,造型決定角色的外觀造型可繪制造型也可通過導入圖片來生成:譬如可以由硬盤導入圖片、或是由某一網站下載圖片舞臺和角色 7-5腳本可控制角色移動、播放音樂、或是與其它的角色互動角色可有自己的聲音,可通過錄制或導入聲音文件生成腳本可播放音樂文件,實現不同音效舞臺和角色 7-6默認角色是小貓角色有位置(x,y)坐標和方向兩個屬性下圖中按鈕可控制角色允許的旋轉方式箭頭代表角色當前方向,鼠標拖動箭頭可改變角色方向舞臺和角色 7-7編輯角色造型,會出現下圖所示對話框點擊設定旋轉范圍,會出現十字線,角色位置實際是十字線交叉點的位置角色旋轉的中心也是十字線交叉點繪制一排小松樹程序的初始化程序在開始完成主要任務前,往往需要做一些準備工作這些準備工作稱為“程序的初始化”任務分解圖中總共有 4 棵松樹,所以可以通過重復 4 次完成,每次畫一棵松樹每棵松樹由一根線段和一個三角形組成繪制線段繪制松樹每棵松樹繪制完成后,繪制起點右移,準備繪制下一棵樹繪制完松樹,繪制代表大地的線段任務分解繪制松樹代碼見右圖繪制“大地”代碼見下圖總結彈球游戲舞臺和角色屏幕和坐標繪制一排小松樹程序的初始化(共17張PPT)03 變量和計算程序設計基礎學習目標認識和使用變量0 1四則運算0 2簡單累加計算0 3求階乘0 4科學計數法0 5測試0 6怎樣讓小貓數數字,從1數到100呢?小貓數數在編程中,變量是用來存放某個值的占位符,很像數學里常見的變量如x 和 y在 Scratch 中,變量用拉長的圓形圖塊來表示,名稱由你來指定變量通常分為局部(local) 和 全局(global)變量。在 Scratch中,局部變量只能被一個角色使用全局變量在所有角色的代碼中都可以使用變量 5-1變量可以暫時存放數據,如輸入、輸出、臨時(中間)結果等變量可以作為參數傳遞數據變量 5-2變量有不同的類型,叫變量的數據類型有的變量是數字類型,如1、2.5、-3.4,0等如果一個變量的值只能是真(可用1表示)或假(可用0表示),這種變量就被稱為邏輯變量(或布爾變量)有的變量是字符或字符的集合(字符串),如 Hello變量 5-3數字變量可以進行加、減、乘、除四則運算運算結果可以保存到相同或不同的變量中如果現在n為10,執行右面指令后,n是多少?復雜算式可以嵌套實現a = (n + 1) x 5變量 5-4怎樣讓小貓數數字,從1數到100且僅數偶數呢?怎樣讓小貓數數字,從1數到100且僅數奇數呢?變量 5-5誰知道1+2+…+100的結果?誰能編程讓小貓計算出結果?高斯的難題變量有三種顯示方式,鼠標雙擊可切換第三種,可通過拖動滾動條改變變量值變量在舞臺上可以顯示或隱藏方法一:勾選變量名前復選框方法二:通過命令變量的顯示小練習:編程計算20的階乘,即20!或1×2×3×4×…×20?答案是:2432902008176640000,你算對了嗎?50 的階乘比較大,自動顯示為科學計數法代表3.041409320171337乘10的64次方練習實際問題的答案是不可能事先知道的,那怎樣才能知道程序結果對不對呢?檢查程序正確性的方法是測試:選取有限的,有代表性的輸入,如果程序輸出有錯誤,就代表程序有錯誤例如,計算階乘的程序可計算3的階乘,測試一下結果是否正確,如果結果不等于6,說明程序計算有錯誤測試 2-1因為測試所有可能的輸入是不可能或無意義的,所以測試一般只能證明程序有錯,不能證明程序是正確的程序必須進行測試測試 2-2計算1+2+…+100的結果,容易出錯的地方:加數和和的初始值設置為多少重復的次數為多少?所謂邊界問題,就是怎樣開始和怎樣結束的問題例如,在路邊栽樹,每隔3米載一棵,路長30米,共栽幾棵樹?如果是圍繞湖邊栽樹呢?測試中,邊界值一般是必須要測試的邊界問題編程計算1至100所有奇數的和編程計算1至100所有偶數的和作業隨機數在一個范圍內,以相同的機會、機率出現的數字在動畫和游戲編程中,隨機數的應用非常廣泛作業繪制隨機位置出現的、隨機改變顏色的、同等機率出現的正方形、圓和五角星本作業中需要在三個地方使用隨機數:位置、顏色、圖形種類隨機數應用認識和使用變量四則運算簡單累加計算求階乘科學計數法測試隨機數應用總結(共21張PPT)04 比較和邏輯運算程序設計基礎學習目標比較運算符0 1邏輯運算符0 2程序的控制結構0 3用戶輸入兩個數,計算并輸出兩個數中的較大者。比較兩個數大小只有兩個截然相反取值的情況在數學及電子技術中稱為布爾量或邏輯量,布爾量的取值稱為布爾值。布爾值只有兩種可能的取值,常見表示方式true/false,真/假,成立/不成立,0/1布爾值之間的運算稱為邏輯運算日常生活中,存在很多使用布爾量的例子,如判斷題,只有對或錯布爾量比較運算符有三個,如右圖可比較兩個數的大小,每個數可以是常量或變量比較結果為布爾量:要么為真,要么為假不僅數字可以比較,字符串也可以比較,按字典順序,排在前面的小于排在后面的,如A小于B比較運算符邏輯運算符有三個“與”運算兩個條件都為真,結果為真,否則結果為假“或”運算兩個條件只要有一個為真,結果為真,否則結果為假“非”運算,也叫“取反”條件為真,取反后為假;條件為假,取反后為真;邏輯運算符比較運算和邏輯運算的結果都是布爾量(六邊形)布爾量可以作為判斷的條件,用在控制結構中,改變程序的執行順序當條件滿足時,執行這組操作,當條件不滿足時,執行另外一組操作條件順序結構順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。程序的控制結構 5-1循環結構循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構 。程序的控制結構 5-2分支結構對于要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的先后順序。程序的控制結構 5-3分支結構程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合于帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然后根據流程圖寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易于理解。介紹流程圖畫法和讀法程序的控制結構 5-4順序結構、分支結構和循環結構并不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構在實際編程中常將這三種結構相互結合以實現各種算法,設計出相應程序程序的控制結構 5-5年份如果不能夠被4整除,肯定是平年。年份如果能夠被4整除,通常就是閏年。但是有個例外,就是如果年份也能夠被100整除,就不再是閏年。年份能夠被100整除,通常是平年,但也有個例外,就是如果年份還可以被400整除,那么年份就又是閏年了。簡單的說就是四年一閏,百年不閏,四百年再閏。編一個程序,判斷輸入的年份是平年還是閏年。如果你的程序說:2000年是閏年、2004年是閏年,1900年是平年,你的程序才有可能是正確的。平年閏年算法 4-1平年閏年算法 4-2平年閏年算法 4-3平年閏年算法 4-4考慮全面,不要遺漏任何分支分類標準統一,嚴格,不要有重疊和交叉分類判斷時要有一個清晰的思路和方向,比如從4整除、100整除到400整除,或者從400整除、100整除到4整除可用排除法,一類一類去排除。注意事項遺漏分支處理常見問題 3-1重復判斷:一個數如果既被4整除又不能被100整除,程序先輸出平年,再輸出閏年常見問題 3-2類型不對,圖塊不能結合條件需要布爾量,而余數是和數字,類型不對,應放入比較運算符中整除判斷方法不對常見問題 3-3比較運算符邏輯運算符程序的控制結構順序結構循環結構分支結構程序注釋總結(共16張PPT)05 循環分支運用程序設計基礎學習目標循環分支綜合運用0 1窮舉法應用0 2如果兩個數都能夠被一個數整除,則這個數就是兩個數的公約數。如,8 和 4 都可以被2整除,2就是 8 和 4的公約數。公約數中最大的稱為最大公約數。如 8 和 4 都可以被2或4整除,2和4都是8 和 4的公約數。其中4最大,4就是8 和 4的最大公約數。最大公約數 5-1編程求204和85的最大公約數,有兩種辦法可以解決這個問題應用窮舉法。窮舉法也叫枚舉法或列舉法。這種方法的主要思想是:在要解決的問題是由有限種情況組成時,把所有的情況一一列舉出來,再對其一一進行判斷和解決。依次判斷從1到85之間的數字,是否能夠同時整除204和85答案應該是17最大公約數 5-2最大公約數 5-3應用輾轉相減法。輾轉相減法的原理:兩個整數的最大公約數等于其中較小的數和兩數的差的最大公約數。例如,252和105的最大公約數是21(252 = 21 × 12;105 = 21 × 5);因為252 105 = 147,所以147和105的最大公約數也是21。在這個過程中,較大的數縮小了,所以繼續進行同樣的計算可以不斷縮小這兩個數直至其中一個變成零。這時,所剩下的還沒有變成零的數就是兩數的最大公約數。最大公約數 5-4你認為兩種算法,哪一種比較好?為什么?最大公約數 5-5如果兩個數都可以整除一個數,則這個數就是那兩個數的公倍數。如 6和8都可以整除48,48就是6和8的公倍數。公倍數中最小的稱為最小公倍數。如 48、24都是6和8的公倍數,24是公倍數中最小的,是6和8的最小公倍數。編程求204和85的最小公倍數。(答案應該是1020)一種辦法是窮舉法,自己嘗試編程序最小公倍數 3-1也可以借助最大公約數求最小公倍數,步驟: 一、利用輾除法或其它方法求得最大公約數; 二、 最小公倍數等于兩數之積除以最大公約數。 舉例:12和8的最大公約數為4 12×8/4=24 兩數的最小公倍數是24最小公倍數 3-2你認為兩種算法,哪一種比較好?為什么?最小公倍數 3-3素數,又叫質數,是除了1和它本身之外再不能被其他數整除的自然數。由于找不到一個通項公式來表示所有的素數,所以對于數學家來說,素數一直是一個未解之謎。求素數的方法有很多種,最簡單的方法是根據素數的定義來求。對于一個自然數N,用大于1小于N的各個自然數都去除一下N,如果都除不盡,則N為素數,否則N為合數。但是,如果用素數定義的方法來編制計算機程序,它的效率一定是非常低的,其中有許多地方都值得改進。求素數 5-1利用素數定義,編程求50個素數試著改進算法,提高效率求素數 5-2求素數 5-3改進建議:第一,對于一個自然數N,只要能被一個非1非自身的數整除,它就肯定不是素數,所以不必再用其他的數去除。第二,對于N來說,只需用小于N的素數去除就可以了。例如,如果N能被15整除,實際上就能被3和5整除,如果N不能被3和5整除,那么N也決不會被15整除。第三,對于N來說,不必用從2到N一1的所有素數去除,只需用小于等于√N(根號N)的所有素數去除就可以了。求素數 4-3求素數 4-4循環分支綜合運用最大公約數最小公倍數求素數窮舉法應用總結(共20張PPT)06 循環分支運用程序設計基礎學習目標數字進制轉換0 1回文數判別0 2十進制數(Decimal Number)十進制數是生活中使用最廣的計數制。組成十進制數的符號有0,1,2,3,4,5,6,7,8,9等共十個符號,我們稱這些符號為數碼。 在十進制中,每一位有0~9共十個數碼,所以計數的基數為10。超過9就必須用多位數來表示。十進制數的運算遵循:“逢十進一”。數字進制 10-1二進制數(Binary Number)二進制數僅有兩個不同的數碼,即0,1;規則為:逢二進一。將8位(bit)二進制數稱為一個字節,字節是計算機存儲信息的基本數據單位。這就要說到存儲器的容量單位:1024B(byte)=1K 1024KB=1M 1024MB=1G數字進制 10-2十六進制是計算機系統中除二進制數之外使用較多的進制二進制數在計算機系統中處理很方便,但當位數較多時,比較難記憶及書寫,為了減小位數,通常將二進制數用十六進制表示十六進制有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F等共十六個數碼,分別對應于十進制數的0~15; 逢十六進一。 數字進制 10-3進制表示在數制使用時,常將各種數制用簡碼來表示:如十進制數用D表示或省略;二進制用B來表示;十六進制數用H來表示如:十制數123表示為:123D或者123;二進制數1011表示為:1011B;十六進制數3A4表示為:3A4H。數字進制 10-4十進制 二進制 十六進制0 0000 01 0001 12 0010 23 0011 34 0100 45 0101 56 0110 67 0111 7數字進制 10-5十進制 二進制 十六進制8 1000 89 1001 910 1010 A11 1011 B12 1100 C13 1101 D14 1110 E15 1111 F16 10000 10二進制與十進制的轉換二進制數1101等于1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 。轉化成十進制要從右到左用二進制的每個數去乘以2的相應次方,從2的0次方開始這種做法稱為“按權相加”法。數字進制 10-6數字進制 10-7二進制與十六進制的轉換原則:每4位二進制對應1位16進制,高4位不足的前面補039H= 00111001B4FH= 01001111B11111B = 00011111B = 1FH數字進制 10-8十進制與十六進制的轉換先除2取余,將十進制轉換成二進制,再按照4位二進制對應1位16進制,轉換成十六進制數十六進制轉換成十進制:226H = 2×162+2×161+6×160 = 550D數字進制 10-91101 如果是二進制數字表示 1*23 + 1*22 + 0*21 + 1*201101 如果是十進制數字表示 1*103 + 1*102 + 0*101 + 1*1001101 如果是十六進制數字表示 1*163 + 1*162 + 0*161 + 1*1601101 如果是W進制數字表示 1*W3 + 1*W2 + 0*W1 + 1*W0每個1代表的含義是不同的。十進制中十位的1代表10,百位的1代表100,每位數字中1代表的大小,叫該位的權重。W進制數字中從右向左數第n位數字的權重是 Wn-1數字進制 10-10接受用戶輸入的二進制數據,轉換為十進制數字輸出練習1: 二進制轉十進制練習1: 二進制轉十進制練習2:十進制轉二進制"回文數"是一種數字,其特點是正讀倒讀一樣。如: 98789, 正讀是98789,倒讀也是98789練習3:判斷用戶輸入的數字是否為回文數一種思路是將用戶輸入的數字當作字符串。然后將字符串的每個字符從頭到尾依次取出來,然后從后到前再拼成一個新的字符串,如果兩個字符串相同,則用戶輸入的數字為回文數。另一種思路是把用戶輸入的數字當作數字,通過取余數得到各位數字,顛倒順序后再重新組裝為新的數字,如果兩個數字相同,則用戶輸入的數字為回文數。回文數判別辦法一回文數判別方法二回文數判別編程實現二進制和十六進制的互相轉換編程實現十進制和十六進制的互相轉換作業數字進制轉換十進制二進制十六進制回文數判別非字符串分解方式總結(共13張PPT)07 多重循環運用程序設計基礎學習目標循環嵌套0 1多重循環運用0 2循環和算法效率0 3窮舉法運用0 4下面兩段代碼都使用了循環結構第一段代碼說 i = 0 直到 i = 4第二段代碼說 j 等于 0 直到 j 等于 4循環嵌套 5-1將第二段代碼拖入第一段代碼中的循環結構循環結構內又包含循環結構,這叫循環結構的嵌套第二段代碼作為一個子任務,加入第一段代碼的循環,也要重復執行5次循環嵌套 5-2結果顯示順序如下i = 0j 等于 0j 等于 1j 等于 2j 等于 3j 等于 4i = 1j 等于 0j 等于 1j 等于 2j 等于 3j 等于 4......直到i = 4j 等于 0j 等于 1j 等于 2j 等于 3j 等于 4循環嵌套 5-3代碼執行順序分析如下將變量 i 設為 0重復5 次[任務1 [說 i = 變量 i 的值將變量 i 加 1將變量 j 設為 0]任務2[重復5 次[說 j 等于變量 j 的值將變量 j 加 1]]]循環嵌套 5-4循環嵌套的一個例子:本學期有16個星期(外層循環重復16次)周六休息一日周日休息一日周一至周五上課五日(內層循環重復5次)上午 8:30 上課一次中午 12:00 吃午飯下午 13:30 上課一次本學期共上課多少次?循環嵌套 5-5有一個算式 1 3 x 32 = 39 83 ,其中問號代表的數字看不清了。你能不能編寫一個程序,算出三個 代表的看不清的數字是多少?本程序采用窮舉法。每個問號代表的數字可能是從0到9的十個數字之一。因此,每個問號有十種可能。根據乘法原理,總共有1000種可能性,通過三重循環來實現,每一種可能試一下就找到答案了。丟失的數字 5-1新建三個變量 i, j, k,代表三個問號,那么三個數字可分別表示為:103+i*10、320+j、39083+k*100。使(103+i*10)*(320+j) = 39083+k*100 的 i ,j , k 就是我們要找到數字丟失的數字 5-2i, j, k 變化順序i = 0j = 0k = 0,1,2,...9i = 0j = 1k = 0,1,2,...9… …i = 9j = 9k = 0,1,2,...9含義是依次判斷103 x 320 = 39083, 39183,39283...39983103 x 321 = 39083, 39183,39283...39983… …193 x 329 = 39083, 39183,39283...39983丟失的數字 5-3答案是:123 x 321 = 39483丟失的數字 5-4修改程序,判斷 1 7 x 32 = 39 83 有沒有解?看看你的程序是否還能正確運行?修改程序,判斷 x 1 = 6? 有幾個解?看看你的程序是否還能正確運行?丟失的數字 5-5循環嵌套多重循環運用循環和算法效率窮舉法運用總結(共20張PPT)08 列表簡介程序設計基礎學習目標列表及其操作0 1常見數據結構0 2手工方式新建和刪除導入和導出數據添加刪除元素顯示和隱藏改變顯示大小命令方式見下頁列表及其操作 2-1列表及其操作 2-2新建列表 chengji,通過程序清空列表所有元素提示用戶輸入5個數字,并將數字保存到列表計算輸出所有列表元素的和、最大值、最小值和平均值列表應用練習 2-1鏈表元素輸入查找計算列表應用練習 2-2數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索算法和索引技術有關。數據結構 3-1一個數據結構是由數據元素依據某種邏輯聯系組織起來的。對數據元素間邏輯關系的描述稱為數據的邏輯結構;數據必須在計算機內存儲,數據的存儲結構是數據結構的實現形式,是其在計算機內的表示;討論一個數據結構必須同時討論在該類數據上執行的運算才有意義。數據結構 3-2常見數據結構集合數據元素除了同屬于一種類型外,別無其它關系線性結構線性結構中元素之間存在一對一關系樹形結構樹形結構中元素之間存在一對多關系圖形結構(網狀結構)圖形結構中元素之間存在多對多關系數據結構 3-3性質由一組相同數據類型的成員組成同一集合的成員必須互不相同集合中的成員一般是無序的,沒有先后次序關系應用舉例實現一個生字本,記錄不熟悉的英語單詞,同一單詞只記錄一次集合性質除起始元素外,線性表中的其他元素僅有一個直接前驅元素除終端元素外,線性表中的其他元素僅有一個直接后繼元素應用舉例輸入并保存班級英語成績,計算平均成績線性結構 6-1分類1、數組 (Array)在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組數組大小一般是“靜態”的,插入、刪除操作比較困難線性結構 6-2分類2、棧 (Stack)是只能在某一端插入和刪除的特殊線性表它按照后進先出的原則存儲數據,先進入的數據被壓入棧底,最后的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最后一個數據被第一個讀出來)插入刪除只能從一端進行線性結構 6-3線性結構 6-4分類3、隊列 (Queue)一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列先進先出插入從一端進行,刪除從另一端進行線性結構 6-5分類鏈表 (Linked List)是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。插入、刪除可從任意位置進行線性結構 6-6樹 (Tree)包含n(n>0)個結點的有窮集合K,且在K中:(1)有且僅有一個結點 k0,沒有前驅,稱K0為樹的根結點。簡稱為根(root) (2)除k0外,k中的每個結點,有且僅有一個前驅 (3)K中各結點,可以有m個后繼(m>=0)C 盤下所有文件夾和文件構成一棵樹樹形結構圖 (Graph)圖是由結點的有窮集合V和邊的集合E組成其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系簡單圖 :不含多重邊和自環的圖應用舉例:多個城市,道路相連,最短路徑選擇圖(網狀結構)不同的數據結構其操作集不同,但下列操作必不可缺: 1. 結構的生成 2. 結構的銷毀 3. 在結構中查找滿足規定條件的數據元素4. 在結構中插入新的數據元素 5. 刪除結構中已經存在的數據元素 6. 遍歷數據結構的操作列表及其操作常見數據結構總結(共12張PPT)09 查找程序設計基礎順序查找二分查找學習目標查找是計算機中常見的操作之一例如,查找文件,查找資料,字典中查找單詞等查找練習在一組數字中查找指定數字,找到則報告其位置。如果找不到,也要給出恰當提示,說明查找的數字不存在。問題怎樣存儲待查找的數字?查找創建一個列表,依次加入數字 23 、32 、56 、12 、17、28六個數字,編寫程序在這組數字中查找用戶輸入的數字。例如:用戶輸入查找12,返回其在列表中的位置。用戶輸入查找查找19,要能夠顯示不存在該數字練習第一個數字開始,依次查找第二個、第三個數字,直到找到要找的數字或查完所有數字為止。順序遍歷查找,不要求數字是有順序的,但是查找效率比較低。一組數字中數字越多,所用的時間可能越長。順序查找 3-1順序查找 3-2代碼二:增加“存在”變量作為查找目標是否存在的標志開始假設不存在,將“存在”變量值設置為0如果找到變量,將“存在”變量值設置為1最后如果“存在”變量值仍為0,說明查找目標在列表中不存在順序查找 3-3二分查找又稱折半查找,它是一種效率較高的查找方法,應用二分查找要求:1.必須采用順序存儲結構2.必須按關鍵字大小有序排列 優點是比較次數少,查找速度快,平均性能好缺點是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用于不經常變動而查找頻繁的有序列表 二分查找 4-1算法思想首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的關鍵字大于查找關鍵字,則進一步查找前一子表,否則進一步查找后一子表。重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功二分查找 4-2first 存放子表的起始元素位置last 存放子表的結束元素位置middle 存放子表的中間元素位置Target 存放待查找的目標二分查找 4-3二分查找 4-4遍歷查找不要求數據有序效率低二分查找要求數據有序效率高上網查詢:還有哪些查找算法?各適用于什么情況?總結 展開更多...... 收起↑ 資源列表 01_初識編程.ppt 02_舞臺和角色.ppt 03_變量和計算.ppt 04_比較和邏輯.ppt 05_循環分支運用.ppt 06_循環分支運用.ppt 07_多重循環運用.ppt 08_列表簡介.ppt 09_查找.ppt 縮略圖、資源來源于二一教育資源庫