プログラミング入門第6回 ~レゴロボットのプログラミング6~

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
プログラミング演習( 2 組) 第 9 回
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
情報理論2 第4回 小林 学 湘南工科大学 2011年11月1日 〒 神奈川県藤沢市辻堂西海岸1-1-25
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
基礎プログラミングおよび演習 第4回 担当:花岡 5階522/520.
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
第2章 数値の入力と変数 scanfと変数をやります.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
C言語 配列 2016年 吉田研究室.
第6章 2重ループ&配列 2重ループと配列をやります.
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
プログラミング入門第4回 ~レゴロボットのプログラミング3~
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
情報工学科 二宮 洋・鈴木 誠 小林 学・高畠俊徳 火曜日 1コマ目
プログラミング入門2 第2回 複合文、繰り返し 情報工学科 篠埜 功.
情報 第2回:状態遷移 その2.
プログラミング入門2 第3回 繰り返し文 芝浦工業大学情報工学科 青木 義満
第7回 条件による繰り返し.
第10章 char 文字列; 文字列を入力させるよ!.
プログラミング論 I 2008年5月22日 講義概要 C言語復習
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング入門 電卓を作ろう・パートIV!!.
アルゴリズムとプログラミング (Algorithms and Programming)
第7回 条件による繰り返し.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
湘南工科大学 2013年10月22日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
プログラミング入門第5回 ~レゴロボットのプログラミング5~
プログラムの制御構造 配列・繰り返し.
情報理論2 第3回 小林 学 湘南工科大学 2011年10月25日 〒 神奈川県藤沢市辻堂西海岸1-1-25
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
プログラミングⅠ 平成31年1月7日 森田 彦.
C言語 はじめに 2016年 吉田研究室.
オブジェクト プログラミング 第2回 プログラムの基本.
実践ロボットプログラミング LEGO Mindstorms NXT で目指せロボコン! WEB: 著者:藤吉弘亘,藤井隆司,鈴木裕利,石井成郎
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
情報処理Ⅱ 第3回 2007年10月22日(月).
プログラミングⅡ 第2回.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング入門 電卓を作ろう・パートI!!.
C言語復習 来週もこの資料を持参してください.
第5回 プログラミングⅡ 第5回
高度プログラミング演習 (11).
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
プログラミング基礎演習 第4回.
標準入出力、変数、演算子、エスケープシーケンス
プログラミング入門第2回 ~レゴロボットのプログラミング~
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
pf-2. 条件分岐 (Python プログラミング基礎を演習で学ぶシリーズ)
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
プログラミング1 プログラミング演習I 第2回.
湘南工科大学 2013年10月22日 情報理論2 湘南工科大学情報工学科 准教授 小林 学.
プログラミング序論演習.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
第2章 数値の入力と変数 scanfと変数をやります.
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
C言語講座第5回 2017 構造体.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
プログラミング演習I 補講用課題
アルゴリズム ~すべてのプログラムの基礎~.
Presentation transcript:

プログラミング入門第6回 ~レゴロボットのプログラミング6~ 2007/5/29 プログラミング入門第6回 ~レゴロボットのプログラミング6~ 高畠俊徳,小林 学 二宮 洋,鈴木 誠 toshi@info.shonan-it.ac.jp kobayasi@info.shonan-it.ac.jp ninomiya@center.shonan-it.ac.jp msuzuki@info.shonan-it.ac.jp

1 前回の復習 非常に重要 1.1 プログラムの制御構造1:順次(復習) プログラムの基本ルール1: 命令は,一度に一つだけ実行される 1.1 プログラムの制御構造1:順次(復習) #include<sit.h> main(){ Init(); Zenshin(2.0); Hidari_Turn(0.5); Migi_Turn(0.5); Koutai(2.0); } 非常に重要 プログラムの基本ルール1: 命令は,一度に一つだけ実行される プログラムの基本ルール2: 命令は,一つずつ(下に)順々に実行される 命令1 命令2 命令3 命令4

非常に重要 1.2 プログラムの制御構造2:反復(復習) プログラムの基本ルール2(反復): 反復の終わりまで来たら反復の始まりまで戻る. 1.2 プログラムの制御構造2:反復(復習) 非常に重要 #include<sit.h> main(){ Init(); while(MUGEN){ Zenshin(2.0); Hidari_Turn(0.5); } プログラムの基本ルール2(反復): 反復の終わりまで来たら反復の始まりまで戻る. ある終了条件を満たすまで反復は繰り返される. 注:命令が一つずつ実行される    のは変わらない 反復の始 反復の終 終了条件が書いてある(ここでは無限回繰り返す) ここでは「前進」→「左ターン」→「前進」→「左ターン」・・・を繰り返す

非常に重要 1.3 プログラムの制御構造3:条件分岐(復習) 条件が記述されている (センサー1とつながったタッチ 1.3 プログラムの制御構造3:条件分岐(復習) 非常に重要 #include<sit.h> main(){ Init(); while( MUGEN ){     if( Oshita1 ){       Hidari_Turn(0.5);     }     else{  Zenshin(2.0); } プログラムの基本ルール3(条件分岐): ある条件を満たした場合には,「はい」の方が実行され,満たしていない場合には「いいえ」の方が実行される. 注:一度に実行されるのはどちらか   一方だけ. 条件が記述されている (センサー1とつながったタッチ  センサーがおされているか?) 「はい」のとき実行 「いいえ」のとき実行

2 変数を使う 2.1 変数 非常に重要 2.5を入れる 2.5 kazu2 kazu2 変数:数や文字を入れる入れ物 自分で好きな名前を付けられる(半角英数字だけ) 注:、変数を使うときは、始めに宣言が必要 2.1 変数 #include<sit.h> main(){ int kazu1; double kazu2;   char mozi; kazu2 = 2.5; Atai_Hyoji(kazu2); } 変数 kazu1 を宣言(整数はint型) 変数 kazu2 を宣言(浮動小数点はdouble型) 変数 mozi を宣言(文字はchar型) kazu2 に2.5を入れる(初期化). 2.5を入れる 2.5 kazu2 kazu2

2.1 変数を使った簡単なストップウォッチ(C言語) ①タッチセンサー1を押し続ける ②時間が計り始められる ③タッチセンサー1を離すと時間が0に戻る

2.1 変数を使った簡単なストップウォッチ(C言語) #include<sit.h> main () { double count1 = 0.0; Init(); while (MUGEN) { Atai_Hyoji( count1 );     if (Oshita1) { Wait(1.0); count1 = count1 + 1.0;     }     else {  count1 = 0.0; } 変数 変数 count1 を宣言(浮動少数点はdouble型)

3. 課題 次の課題の車をC言語でプログラミング及び実行しなさい [課題1]タッチセンサー1が押された回数をディスプレイ表示 [課題2]タッチセンサー1が押された回数をディスプレイに表示し、タッチセンサー3が押されるとその回数が減る [課題3]タッチセンサー1を押すとスタートし、離すとストップするストップウォッチ。タッチセンサー3を押すとゼロに戻る。 [課題4]前進と後退を行うライントレースカー。ただし、タッチセンサー1を押すと前進と後退が入れかわる。次ページを参照。 [課題5]タッチセンサー1を押すとスタートし、もう一度押すとストップするストップウォッチ。 [課題6]自分で考えたストップウォッチ [課題7]自分で考えたライントレースカー [課題8]自分で考えたローヴァーボット

[課題4]前進と後退を行うライントレースカー。ただし、タッチセンサー1を押すと前進と後退が入れかわる。 Back_Hidari_Turn(0.1); Back_Migi_Turn(0.1); 復習(条件式) if ( a == 0) { ・・・ } else {  ・・・ }

[課題4]前進と後退を行うライントレースカー。ただし、タッチセンサー1を押すと前進と後退が入れかわる。 ライトセンサー2 タッチセンサー1 ライトセンサー3

0. 前回課題の解答例 [課題1]1秒前進,0.5秒左ターンを繰り返す [課題2]左ターンを繰り返し,ボタンを押している間だけ前進する [解答2] [解答1] #include<sit.h> main () { Init(); while (MUGEN) { if (Oshita1) { Zenshin(0.1); } else { Hidari_Turn(0.1); #include<sit.h> main () { Init(); while (MUGEN) { Zenshin(1.0); Hidari_Turn(0.5); }

0. 課題の解答例 [課題3]前進し,衝突したら1秒バックし,右へ障害物をよける [解答3] #include<sit.h> main () { Init(); while (MUGEN) { if (Oshita1) { Koutai(1.0); Migi_Turn(1.0); } else { Zenshin(0.1);

0. 課題の解答例 [課題4]シートの黒枠より内側を走り続ける(ライントレースではない) [解答4] #include<sit.h> main () { Init(); while (MUGEN) { if (Akarui2) { Zenshin(0.1); } else { Hidari_Turn(1.0);

0. 課題の解答例 [課題5]ライントレースカー(障害物に衝突したら1秒バックし, 右へ障害物をよけ,再びもとのラインに戻る) [解答5] #include<sit.h> main () { Init(); while (MUGEN) {    if(Oshita1) {       Koutai(1.0); Migi_Turn(1.0); Zenshin(1.0); Hidari_Turn(2.0);     } else {   if (Akarui2) { Hidari_Turn(0.1); } else { Migi_Turn(0.1); }

0. 課題の解答例 [課題6]タッチセンサー1,3,ライトセンサー2をつける.センサー1だけ押すと左ターン,センサー3だけ押すと右ターン.センサー1,3両方押すと前進.両方押していないときはライントレースする #include<sit.h> main () { Init(); while (MUGEN) {    if (Oshita1) {       if (Oshita3) { Zenshin(0.1); } else { Hidari_Turn(0.1); }     } else {   if (Oshita3) { Migi_Turn(0.1); if (Akarui2) { [解答6]

[課題7]2つのライトセンサーを使った次の動きをするライントレースカー [解答7] 左折 直進 右折 #include<sit.h> main () { Init(); while (MUGEN) { if (Akarui1) { Hidari_Turn(0.1);     } else {   if (Akarui3) { Zenshin(0.1); } else { Migi_Turn(0.1); }

0. 課題の解答例 [課題8]ライントレースカー(前方が暗かったら1秒バックし,右へ障害物をよけ,再びもとのラインに戻る) [解答8] #include<sit.h> main () { Init(); while (MUGEN) { if (Akarui1) { Koutai(1.0); Migi_Turn(1.0); Zenshin(1.0); Hidari_Turn(2.0);     } else {   if (Akarui2) { Hidari_Turn(0.1); } else { Migi_Turn(0.1); } [解答8]

2.2 スピードを変えるラインとレースカー(C言語) #include<sit.h> void Speed_Setup(int ); main () { int count1 = 0; Init(); while (MUGEN) { Atai_Hyoji( count1 ); Speed_Setup( count1 ); if ( (count1 < 0) || (count1 > 255) ) { count1 = 0; }      if (Oshita1) { count1 = count1 + 1;      }      if (Oshita3) { count1 = count1 - 1; Zenshin(0.1); void Speed_Setup(int value) { if ((value >= 0) && (value <= 255) ) { motor_a_speed( value ); motor_b_speed( value ); motor_c_speed( value ); } else { motor_a_speed( 0 ); motor_b_speed( 0 ); motor_c_speed( 0 ); }