わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

繰返しで知っておくとよいこと

 プログラミングで「繰返し」を学ぶにあたり,知っておくとよいことをいくつか挙げます.

  • for文は,while文を使用して等価な処理を記述することが可能であり,逆も言えます.
    • ですが,使い分けはあります.for文は,繰返しの回数や値の範囲が決まっている場合に使用することが好まれます.
    • それに対しwhile文は,回数や値ではなく,条件が決まっている場合(コラッツの問題の「nが1でない間」など)に使用するのが一般的です.
  • for文の繰返しに使用する変数を「ループカウンタ」と言います.九九の表の作成を,プログラムで表すなら,iとjという2つの変数を,ループカウンタとして使用するといいでしょう.
    • iは,indexという単語に由来します.jは,その次の文字です.もし3重ループにしたければ,その次はkを使用します.4重ループならl,と言いたいところですが,「1」と間違えられやすいので,「l」単独の変数名は,おすすめできません.
    • Python複素数を表すときの「j」とは,区別されます.「j」だけを書くと,これは変数名です.数学で言うi(実部が0,虚部が1の複素数)を表すには,「1j」または「1.0j」と書きます.中1数学の文字式のところで,「1はいちいち書かない」と教わったかもしれませんが,ここは「いちいち書く」必要があります.
    • 一般には外側(先に実行する側)を「for i …」,内側を「for j …」,にします.
  • ニュートン法のプログラムを書いてみることで,繰返しと,数式をどのようにしてプログラムコードで表すかの両方を学ぶ機会となります.
    • 例えば,x=3.0から始まって,繰返し計算することで\sqrt{5}x^2-5=0の正の解)に近づくのを確認するのがいいでしょう.f(x)=x^2-5とおくと,f'(x)=2xです.
    • 素朴な2分探索(解は2と3の間 ⇒ 解は2と2.5の間 ⇒ 解は2と2.25の間 ⇒ 解は2.125と2.25の間 ⇒ …)で求めるよりも,ニュートン法は,少ない繰返し回数で,真の解に近づきます.このことを「収束が速い」といいます(もとは数学(解析学)の言い方ですが,プログラミングでも使われます).
    • 繰返し回数について,まずは「5回」でプログラムを書き,実行させて出力を見て,数を増やしていくといいでしょう.また別の方法として,1回前に求めた値との差が十分小さく(例えば1e-6以下に)なったら繰返しを終える,というのも考えられます.