中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

小學生Scratch編程競賽輔導 課件(共9課時)

資源下載
  1. 二一教育資源

小學生Scratch編程競賽輔導 課件(共9課時)

資源簡介

(共25張PPT)
01 初識編程
程序設計基礎
學習目標
Scratch 編程繪制正方形
0 1
什么是程序和編程
0 2
什么是編程語言
0 3
編譯執行和解釋執行
0 4
編譯器和解釋器
0 5
Bug 和 Debug
0 6
第一個程序
題目:繪制一個邊長為100的正方形
究竟什么是程序?什么是編程?
先看個故事
一個文化人,他有一個仆人是聾子… …
幸好他們都不是瞎子… …
仆人也認識幾個有限的詞匯… …
主人想讓仆人做點事,他應該怎么做?
任務書
1、……2、……
程序就是計算機的任務書
現在你就是主人,計算機就是你忠實的仆人
你要是聰明,就將任務交給仆人去做
否則…,你就自己干活,讓仆人歇著去吧…
程序
1、……2、……
編程就是用人和計算機都能夠理解的語言為計算機編制完成任務所需的任務書
計算機只認識 0 和 1,所有任務書必須由0 和 1 組成,計算機才能看懂
有兩個辦法編寫任務書
直接用 0 和 1組成的語言編寫,這樣的語言叫機器語言
用人熟悉的語言編寫任務書,然后再找一個翻譯
編程和語言
編程語言有很多種
可以用不同的語言編寫程序,完成相同的任務,但是不同的語言需要不同的翻譯。
C/C++語言
JAVA語言
其他語言
翻譯1
翻譯2
翻譯n
機器語言
011001
01
一次將整個程序翻譯成機器語言,然后計算機執行程序,完成任務
這時的翻譯叫“編譯器”
任務書哪怕有一丁點“翻譯”看不懂,翻譯工作也不能完成,程序當然也不能執行,這時叫發生了“編譯錯誤”
編譯執行
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-1
3、輸入(Input)
一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件。
4、輸出(Output)
一個算法有一個或多個輸出,以反映對輸入數據加工后的結果。沒有輸出的算法是毫無意義的。
算法的 7 個特征 4-2
算法的 7 個特征 4-3
前面的程序都沒有輸入,只有輸出
這個程序根據輸入的邊數畫正多邊形,既有輸入也有輸出
對不同的輸入數據都能夠響應正確
健壯性(Robustness)   
7
執行速度快,占用資源少  
高效性(High efficiency)   
6
算法中即每個步驟都可以在有限時間內完成;(也稱之為有效性)   
可行性(Effectiveness)
5
算法的 7 個特征 4-4
但算法設計的思想和技巧是不變的
這也是編程學習最核心的內容
可以編程解決的問題有很多很多
編程語言有很多很多
進入編程的世界,你會發現:
總有些東西是不變的
總結
Scratch 編程繪制正方形
什么是程序和編程
什么是編程語言
編譯執行和解釋執行
編譯器和解釋器
Bug 和 Debug
Scratch 編程語言
算法和算法設計(共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 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
數字進制 10-5
十進制 二進制 十六進制
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 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位不足的前面補0
39H= 00111001B
4FH= 01001111B
11111B = 00011111B = 1FH
數字進制 10-8
十進制與十六進制的轉換
先除2取余,將十進制轉換成二進制,再按照4位二進制對應1位16進制,轉換成十六進制數
十六進制轉換成十進制:
226H = 2×162+2×161+6×160 = 550D
數字進制 10-9
1101 如果是二進制數字
表示 1*23 + 1*22 + 0*21 + 1*20
1101 如果是十進制數字
表示 1*103 + 1*102 + 0*101 + 1*100
1101 如果是十六進制數字
表示 1*163 + 1*162 + 0*161 + 1*160
1101 如果是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 = 0
j 等于 0
j 等于 1
j 等于 2
j 等于 3
j 等于 4
i = 1
j 等于 0
j 等于 1
j 等于 2
j 等于 3
j 等于 4
......
直到i = 4
j 等于 0
j 等于 1
j 等于 2
j 等于 3
j 等于 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-2
i, j, k 變化順序
i = 0
j = 0
k = 0,1,2,...9
i = 0
j = 1
k = 0,1,2,...9
… …
i = 9
j = 9
k = 0,1,2,...9
含義是依次判斷
103 x 320 = 39083, 39183,39283...39983
103 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-2
first 存放子表的起始元素位置
last 存放子表的結束元素位置
middle 存放子表的中間元素位置
Target 存放待查找的目標
二分查找 4-3
二分查找 4-4
遍歷查找
不要求數據有序
效率低
二分查找
要求數據有序
效率高
上網查詢:還有哪些查找算法?各適用于什么情況?
總結

展開更多......

收起↑

資源列表

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 呈贡县| 资溪县| 疏勒县| 蓝田县| 壶关县| 霍城县| 泰州市| 海南省| 揭阳市| 邵阳市| 鄂托克旗| 莆田市| 南雄市| 汝城县| 东宁县| 沛县| 额尔古纳市| 军事| 沙坪坝区| 上饶县| 大邑县| 陕西省| 浮梁县| 通山县| 离岛区| 东至县| 肥城市| 长寿区| 嵩明县| 八宿县| 凤冈县| 合阳县| 渭源县| 万盛区| 高唐县| 洱源县| 沙田区| 武义县| 禹城市| 无棣县| 樟树市|