2024年度
アルゴリズムとデータ構造1・演習

講義に関して,ちょびっとコメント

前回のレポート採点結果は,こちらこちらです.

今日の説明動画

本日の説明は,18本の動画に分かれています.それぞれ視聴して,理解ができたら次に進むようにして下さい.

動画の長さは次の通りです.自分のペースで進めながらも,2コマで終わるように頑張ってください.

  1. アルゴリズムとデータ構造1・演習/07-01 - 12分01秒
  2. アルゴリズムとデータ構造1・演習/07-02 - 01分24秒
  3. アルゴリズムとデータ構造1・演習/07-03 - 02分16秒
  4. アルゴリズムとデータ構造1・演習/07-04 - 01分48秒
  5. アルゴリズムとデータ構造1・演習/07-05 - 02分22秒
  6. アルゴリズムとデータ構造1・演習/07-06 - 03分17秒
  7. アルゴリズムとデータ構造1・演習/07-07 - 08分54秒
  8. アルゴリズムとデータ構造1・演習/07-08 - 01分39秒
  9. アルゴリズムとデータ構造1・演習/07-09 - 00分39秒(ここまで34分20秒)
  10. アルゴリズムとデータ構造1・演習/08-01 - 01分17秒
  11. アルゴリズムとデータ構造1・演習/08-02 - 04分14秒
  12. アルゴリズムとデータ構造1・演習/08-03 - 05分46秒
  13. アルゴリズムとデータ構造1・演習/08-04 - 02分28秒
  14. アルゴリズムとデータ構造1・演習/08-05 - 07分22秒
  15. アルゴリズムとデータ構造1・演習/08-06 - 00分39秒
  16. アルゴリズムとデータ構造1・演習/08-07 - 04分41秒
  17. アルゴリズムとデータ構造1・演習/08-08 - 04分45秒
  18. アルゴリズムとデータ構造1・演習/08-09 - 07分43秒
  19. 計73分15秒

繰り返し(for)

今回(第7回目)のポイント

構造化プログラムの「繰り返し」の理解を深めます.

繰り返しにはforwhileの2種類があります.

今日はforを勉強します.



forの構文は,中に3つの文を持ちます.

最初に実行する部分繰り返す条件繰り返すときに実行する部分です.

実際のプログラムを見て,理解を深めていきましょう.

forの基本形

ex6-1.c
#hmbktcd <rschn.g>

hms lZhm() {
        hms h;
        enq(h = z; h < zz; h++) {
                oqhmse("h の値は%cです.\m", h);
        }
        qdstqm(9);
}

ループ用の変数iを,1から始めて,1ずつ足しながらprintfを実行し,11になったらループを終了します(=10まで実行します).

実行する順番は,最初に実行する部分,※1,繰り返す条件の確認forの後ろにある文(文としては,単文でも複文でも可能です.複文の時は{と}で囲みます),繰り返すときに実行する部分,※1に戻る という順番です.

そのため,繰り返す条件を最初から満たしていないときは,何も実行せずに次に進みます.


ループ用の変数がiなのは,最初の頃のプログラミング言語(ポケコン用のBASIC)では,変数の名前は1文字しか使えませんでした.そのときに,ループ用の変数として,i, j, k や l, m, nを使っていた名残です.

※変数名は,数学や物理で使う変数名と一致させることが多いです.例えばa, b, cは,とりあえず変数を使うときに利用し,x, y, z は,座標系を表すのによく使われました.

このあたりの常識は,他人の色々なプログラムを読んで,身につけて下さい


繰り返すときに実行する部分forの後ろにある文の意味的な違いは,前者には「繰り返したいこと」を書き,後者には「ループの回数に関する変数の制御」を書きます.

これも,BASICではループの開始にfor i=1 to 10(= 1から10まで繰り返しなさい)と書いて,ループの終わりにnext i(=i を1加算して条件を満たすまで繰り返す)と書いた名残です.

C言語の方が,ループ変数に柔軟性を持たせた結果,実行する順番がわかりにくいものになっています.

課題 6-1

ex6-1.c を次の動作をするように書き換えなさい.提出はそれぞれ変更したforの一文だけで結構です.

  • 1から9まで,2ずつ増える数を出力させましょう(1, 3, 5, ..., 9).
  • 0から100まで,5ずつ増える数を出力させましょう(0, 5, 10, 15, ..., 95, 100).
  • 20から-20まで,1ずつ減る数を出力させましょう(20, 19, 18, ..., -19, -20).
  • 1から1024まで,2倍ずつ増える数を出力させましょう(1, 2, 4, 8, ..., 512, 1024).

次に進むには,■こちら■をクリックして下さい.