投影片 1 - 入口網站首頁 | 資訊學科e起來

Download Report

Transcript 投影片 1 - 入口網站首頁 | 資訊學科e起來

演算法概論
電腦解題實作
國立豐原高中
郭再興
• 遇到問題 ? 了解問題、分析問題、解決問題
• 解決模式--輸入資料、資料處理、輸出結果
• 設計演算法--有限性、明確性、效率
• 使用流程圖、虛擬碼表達演算法的概念
• 電腦解題教學工具
• 機器人克服難關問題
• 機器人資源
引起動機
益智遊戲題目
問題一 過河問題
問題二 河內塔問題
問題三 猜數字遊戲
開始
使用者任選一個 0~100 之間的
數字X
•說明猜數字遊戲規則
•思考如何解題
•將討論的解題法畫成
流程圖
•討論此策略的優缺點
電腦顯示猜數字 Y
詢問使用者反應
Y太小
輸入
”1”
調整 Y 大一些
Y太大
輸入
”2”
調整 Y 小一些
X=Y
輸入
”3”
猜對
了
結束
演算法
•演算法是解決問題每個步驟的細節與順序,
可用圖表(流程圖)、文字(虛擬碼)表達
•由有限個步驟所構成
•連接各步驟的流程明確、每個步驟意義明確
•開始執行後,經過有限步驟會達成目標
猜數字虛擬碼
X <= 出題、任選 0~ 100 之間的整數
Y <= 隨機猜一個數字
While (X< >Y) {
If (X > Y) THEN 增加Y值
If (X < Y) THEN 減少Y值
}
Display (“猜對了”)
應用流程圖
使用「流程圖」的優點
•讓人容易了解整個作業流程。
•使程式除錯的工作容易進行。
•方便程式工作的移交。
•有助於程式的修改與維護。
變數與資料型態
• 資料處理模式
資料輸入 -> 處理 -> 資料輸出
• 電腦如何儲存資料?
• 變數與資料型態
• 成績處理程式練習
平均 = (國+英+數+社)/4
加權平均=(國*3+英*3+數*2+社*2)/10
成績處理程式
‘宣告變數
Dim A1, A2, A3, A4 as single
Dim BB as single ‘宣告變數
‘輸入
A1 = 75 ‘輸入國文成績
A2 = 84 ‘輸入英文成績
A3 = 77 ‘輸入數學成績
A4 = 92 ‘輸入社會成績
‘處理
BB = (A1 + A2 + A3 + A4)/4
‘輸出
PRINT “平均成績 =” ; BB
‘宣告變數 存放成績
存放平均成績
‘成績處理
‘輸出平均成績
陣列介紹
一維陣列
二維陣列
三維陣列
成績處理程式
‘宣告變數
Dim A(5) as single ‘宣告變數 存放成績
Dim BB as single ‘宣告變數 存放平均成績
‘輸入
A(1) = 75 ‘輸入國文成績
A(2) = 84 ‘輸入英文成績
A(3) = 77 ‘輸入數學成績
A(4) = 92 ‘輸入社會成績
‘處理
BB = 0
FOR I=1 to 4
BB = BB + A(I) / 4 ‘成績處理
NEXT I
‘輸出
PRINT “平均成績 =” ; BB
‘輸出平均成績
資料結構
資料結構說明
常見資料結構概念
電腦解題教學工具
Game Maker (http://www.yoyogames.com/make)
Scratch (http://scratch.mit.edu/)
Alice (http://www.alice.org)
益智遊戲
可程式化機器人系統
Next
Game Maker
back
Scratch
back
Alice
back
可程式化機器人
back
機器人學習套件
Basic Stamp BoeBot (http://www.parallax.com)
Basic Commander (http://innovati.com.tw)
科學魔法車
(http://www.me.tnu.edu.tw/~me017/welcome)
Lego Mindstorms (http://mindstorms.lego.com)
Arduino (http://www.arduino.cc)
Microsoft Robotics Developer Studio (MSRDS)
RobotBasic (http://www.robotbasic.org)
LEGO Mindstorms NXT
•電機控制元件
–控制器
–伺服馬達
–感測器
•積木元件
•圖控式程式發展
環境
23
電機控制元件
• 包含NXT 控制器、伺
服馬達、感應器等组
成
• NXT控制器就像人的
大腦,伺服馬達好比
人的肌肉,提供動力
,感應器就像人的五
官,偵測外界環境並
轉換成數位資料,再
傳送回NXT控制器,
驅動伺服馬達做出反
應
• 基本運算模式
輸入->處理->輸出
• 圖控式程式發展環境
back
back
25
LEGO Mindstorms NXT
選擇結構: 若按下按鈕
責執行上半側的指令,
反之則走下半側
迴圈結構
開
始
物件
屬性
• 程式虛擬碼
while(true) {
if (touch_sensor_is_press) {
beep();
show_picture_on_screen( )
}
}
• 感測器若被壓下,則由喇叭播放音效,螢幕也會
顯示笑臉畫面,學生在此可學到基本程式撰寫方
法,以及三種基本流程
車身組合
自走車
組合基本車身
前進後退
控制馬達前近
一小段距離
控制馬達後退
一小段距離
無窮迴圈
單光感循跡
挑戰問題:如何讓機器人使用一個光感應器,
控制兩個馬達,依循地上黑線前進 ?
單光感循跡演算法
演算法說明
step 1 光感應偵測地面亮度
step 2
若偵測到亮-左馬達出力
step 3
若偵測到暗-右馬達出力
不斷重複上面步驟,即可循跡前進
參考程式
右馬達停止
左馬達運轉
光感測到亮,則走上
半側路徑控制馬達左
轉;反之則走下半側
控制馬達右轉
無窮迴圈
NXT 單光感循跡-0.mp4
演算法虛擬碼
while(true) {
if (LightSensor_detect_white) {
// 若光感測為亮
motorB_stop ( );
//右馬達停
motorC_run( );
//左馬達旋轉
} else {
motorB_run( );
//右馬達旋轉
motorC_stop ( );
//左馬達停
}
}
進階挑戰地圖
討論
•討論單光感循跡演算法的特性
光感在線的左側(或右側),程式也要更改
•優點
演算法簡單易懂
•缺點
容易脫軌
效率不佳
不適合太複雜的路線…
•改進演算法
NXT 掃描式單光感循跡.mp4
NXT 單光感循跡.mp4
雙光感循跡
挑戰問題:如何讓機器人使用2個光感應器,
控制兩個馬達,依循地上黑線前進,且到
達底線時自動停止 ?
請同學思考如何利用第二個光感應器來循跡,同時
還能判斷是否到達底線。
綜合學生的想法,教師解釋如何使用2個光感應器偵
測地面的黑色膠帶,達到控制車子依循黑色膠帶
前進的演算法
可能會有多種演算法
演算法二
右光感
左馬達
右馬達
左光感
NXT 雙光感循跡.mp4
while(true) {
if (left_LightSensor_detect_white)
if (right_LightSensor_detect_white) {
motorC_run( );
motorB_run( );
} else {
motorC_run( );
motorB_stop( );
}
else
if (right_LightSensor_detect_white) {
motorC_stop( );
motorB_run( );
} else {
motorC_stop( );
motorB_stop( );
}
}
演算法一
若左光感測到亮
則左馬達旋轉;
反之則左馬達停止
若右光感測到亮
則右馬達旋轉;
反之則右馬達停止
無窮迴圈
while(true) {
// 若左光感偵測到地面為亮
if (left_LightSensor_detect_white)
motorC_run( ); //左馬達運轉
else
motorC_stop( ); //左馬達停止
// 若右光感偵測到地面為亮
if (right_LightSensor_detect_white)
motorB_run( ); //右馬達運轉
else
motorB_stop( ); //右馬達停止
}
進階挑戰
兩點之間折返跑
NXT 3光感循跡.flv
繞圈前進遇橫線停止
機器人學習套件
Basic Stamp BoeBot (http://www.parallax.com)
Basic Commander (http://innovati.com.tw)
科學魔法車(http://www.me.tnu.edu.tw/~me017/welcome)
Lego Mindstorms (http://mindstorms.lego.com)
Arduino (http://www.arduino.cc)
Microsoft Robotics Developer Studio (MSRDS)
Robot Simulator (http://www.robotsimulator.nl)
Lego Mindstorms Simulator
(http://ddi.uni-paderborn.de/index.php?L=1&id=4687)
RobotBasic (http://www.robotbasic.org)
Basic Stamp BoeBot
Basic Stamp 晶片
提供類似BASIC語法
的程式發展環境
提供完整感測器模組
完整的自學手冊
支援MSRDS
http://www.parallax.com
BoeBot.mp4
back
Basic Commander
利基科技自行開發之控制板
軟體發展環境 innoBASIC
提供完整感測器模組
完整的自學手冊
http://www.innovati.com.tw
back
Innobot with Sonar.mp4
科學魔法車
東南科技大學曹齊平老師
附有詳細實驗手冊
基本電學實驗
感測器電路實驗
自走車實驗
簡單適合初學者
科學魔法車bridge1.mpg
back
Arduino
• 開放原始碼的電路圖設計,程式開發介面
• 提供類似Java,C語言的開發環境,可免費下載
• 可簡單地與感測器,各式各樣的電子元件連接(EX:紅外線,超音波,熱敏
電阻,光敏電阻,伺服馬達,…等)
•
•
•
•
支援多樣的互動程式 ex: Flash、Max/Msp…
低價格的微處理控制器(ATMEGA8-16)
USB介面,不需外接電源。另支援使用9VDC
可作為機器人的大腦,接收感測器的訊號,控
制馬達動作
• 利用Arduino,突破以往只能使用滑鼠,鍵盤
,CCD等輸入的裝置的互動內容,可以更簡單
地達成單人或多人遊戲互動。
• http://www.arduino.cc/
• http://www.Arduino.TW
Arduino 機器人.flv
Audino Robot.mp4
back
Microsoft Robotics
Developer Studio
• 微軟的機器人開發環境
Runtime Services (CCR, DSS)
Visual Programming Language (VPL)
Visual Simulation Environment (VSE)
•
•
•
•
更視覺化開發工具
更容易編寫程式與除錯
透過視窗或網頁介面控制機器人
利用 3D 模擬的方式實現機器人動作
介紹主題
介紹
MSRDS 啟動模擬畫面.wmv
MSRS 模擬走迷宮影片.flv
MSRS 模擬 KHR 影片.flv
介紹