[1]11月のテーマ
テーマ:これまでのプログラミングまとめ②〜プログラミングの実践的文法を理解〜
今回のプログラミング講座は8月から10月までの講座で用いた文法をおさらいする回としました(それ以前の内容も自然と扱いましたが)。これまで8月から10月までに講座で扱った主な話は、「配列」「関数」になります。これらを使うことで、プログラムを見やすくかけるのでミスが減り、扱いやすいプログラムになります。今回は素数を表示するプログラムを作る中で文法の復習をしました。
[2] より深い理解のために
講座で制御範囲を少し間違えていたプログラムの完成版は以下です。コピーしてそのまま貼り付けると、空白や半角全角の関係でエラーが起きる可能性もあるのでその場合は、各自で調整しましょう。プログラム自体は正しく実行されるので、エラーが起きる場合はコピーして貼り付ける際の問題になります。括弧内がプログラムです。
「
表示する(“1からある数までの素数を表示します。”)
改行する
表示する(“いくつまで調べますか?”)
aに整数を入力する
count=1
sosu=[2,2,2,2,2,2,2,2,2,2,2,2,
iを3からaまで1ずつ増やしながら:
jを2からi-1まで1ずつ増やしながら:
もしi%j==0ならば:
繰り返しを抜ける
もしi==jならば:
sosu[count]=j
count=count+1
表示する(“1から”,a,”までの素数は”)
kを0からlength(sosu)-
もし(k>2)and(sosu[k]==2)ならば:
繰り返しを抜ける
表示する(sosu[k])
」
講座で説明した通りではありますが、今回の素数を表示するプログラムを作る方法はもちろんこれだけではありません。というより、今回作ったプログラムは素数判定も上手くやっていないので割と力技のプログラムです。上手い素数判定をどのようにするかはプログラムの問題ではなく数学の問題になりますので、これは今後の数学の講座と関連もしてくるかもしれません。
[3]プログラムの詳細説明
プログラムは講座で作成したものともちろんほとんど同じですが、エラー箇所に「もしi==jならば:」を追加することでエラーがなくなりました。エラーしていた時はこの文章を入れていなかったため、その下の文章が無条件で実行されておりエラーにつながっていました。iが素数のときはjの値がi-1まで到達し、最後にjが1増える処理でループを抜けます(iが素数ではないときは途中でループを抜けます)。iが素数でjが最後まで行った場合は、その値はiと一致するため(最後にjが1増えてからループを抜けるため)、今回の「もしi==jならば:」という一文を入れています。i==jを満たしているものは素数のみであるためです(素数でない場合はこの式を満たすところまで到達せず途中でループを抜けています)。最後の表示のループの部分も微調整を加えているので各自で確かめてみましょう。
