2005/D7

このページは、学習ノートの例です。 ですのでここに掲載されているプログラムには間違いがあったり、場合によってはわざと間違いが埋め込まれている可能性がありますので注意してください。

目次

最初のプログラム

// 最初のプログラム
//
//    作成者:せいじ、すとっぷ
//    作成日:2005-10-14

task main()
{
    OnFwd(OUT_A);     //  Aのモータを正回転
    OnFwd(OUT_C);     //  Cのモータを正回転
    Wait(300);        //  プログラムの実行を3秒待つ
    Off(OUT_A+OUT_C); //  AとCのモータを止める
}
  • はじめてのプログラムです。ちゃんと動きました。 -- せいじ? 2005-10-25 (火) 16:39:11
  • このように作成者と作成日時(変更日時)もプログラムの中にコメント文として書いておきましょう。 -- 松本 (担当教員)? 2005-10-25 (火) 16:40:04

正方形に沿って動くロボット

とりあえず作ったプログラム:

// 正方形に沿って動くロボット
//
//    作成者:せいじ、すとっぷ
//    作成日:2005-10-21

task main()
{
    OnFwd(OUT_A+OUT_C);  //  AとCのモータを正回転
    Wait(300);           //  3秒前進

    OnRev(OUT_C);        //  Cのモータを逆回転して右に旋回
    Wait(100);           //  1秒間旋回

    OnFwd(OUT_C); Wait(300);  // Cのモータを正回転して再び3秒間前進
    OnRev(OUT_C); Wait(100);  // 1秒間右に旋回
    OnFwd(OUT_C); Wait(300);  // 3秒間前進
    OnRev(OUT_C); Wait(100);  // 1秒間右に旋回
    OnFwd(OUT_C); Wait(300);  // 3秒間前進
    Off(OUT_A+OUT_C);
}
  • 実はAのモータは最初から最後まで正回転のままでいい。 -- せいじ? 2005-10-25 (火) 16:40:42

repeat を使って書き直したプログラム:

// 正方形に沿って動くロボット (2)
//  10/21に作ったプログラムを repeat を使って書き直した
//
//    作成者:せいじ、すとっぷ
//    作成日:2005-10-22
//    変更日:2005-10-23

task main()
{
    OnFwd(OUT_A);
    repeat(4){
        OnFwd(OUT_C); Wait(300); // 3秒間前進
        OnRev(OUT_C); Wait(100); // 1秒間旋回
    }
    Off(OUT_A+OUT_C);
}
  • 不要な命令を極力少なくしました。 -- せいじ? 2005-10-25 (火) 16:46:20

定数を定義して書き直したプログラム

// 正方形に沿って動くロボット (3)
//  10/23に作ったプログラムを #define を使って書き直した
//
//    作成者:せいじ、すとっぷ
//    作成日:2005-10-22
//    変更日:2005-10-23

#define RUN_TIME 300
#define TURN_TIME 100

task main()
{
    OnFwd(OUT_A);
    repeat(4){
        OnFwd(OUT_C); Wait(RUN_TIME); // 3秒間前進
        OnRev(OUT_C); Wait(TURN_TIME); // 1秒間旋回
    }
    Off(OUT_A+OUT_C);
}
  • repeat を使う前にこれ(定数)を使っていれば、もっとありがたさが認識できたかも。 -- せいじ? 2005-10-25 (火) 16:51:00

渦巻を書くプログラム

// 渦巻を書くロボット (1)
//
//    作成者:まいける
//    作成日:2005-10-28

int base_time;
int plus_time;
int plus_int;

task main()
{
    base_time = 120;
    plus_time = 0;
    plus_int = 40;

repeat(120){
    OnFwd(OUT_A+OUT_C); Wait(base_time+plus_time);
    OnRev(OUT_C); Wait(turn_time);
    plus_time = plus_time + plus_int;
           }
}
  • プログラムの中にコメントつけるの忘れてました。今度つけます。 -- まいける? 2005-10-28 (金) 17:36:41
  • 変数の宣言と同時に変数を初期化しておきましょう -- せいじ? 2005-10-31 (月) 10:29:48
  • plus_time を少しずつ増やす命令は、+= を使うと少し短く書けますね。 -- せいじ? 2005-10-31 (月) 10:31:18

// 渦巻を書くロボット (1)
//
//    作成者:まいける
//    作成日:2005-10-28
//    修正日:2005-10-31 (せいじ)

int base_time = 120;
int plus_time = 0;
int plus_int = 40;

task main()
{
    repeat(120){
        OnFwd(OUT_A+OUT_C); Wait(base_time+plus_time);
        OnRev(OUT_C); Wait(turn_time);
        plus_time += plus_int;
   }
}
  • ずいぶんすっきりしたと思いますが、どうでしょう? -- せいじ? 2005-10-31 (月) 11:07:32
  • base_time と plus_int は、変数よりも定数として使ったほうがいいか… -- せいじ? 2005-10-31 (月) 11:09:49


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-02 (水) 13:56:11 (5042d)