2025年度 電子情報通信課程 計算機実習II講義に関して,ちょびっとコメント
口頭で伝えます.
繰り返し( for )今日のポイント教科書は第5章「たくさんのデータをパパッと料理しよう」の5-1,5-2節です. 構造化プログラミングの要素である「繰り返し( =ループ )」の理解を深めます. ※「構造化プログラミング」とは,概ね
「構造化定理 - Wikipedia」に基づいて,スッキリした構造のプログラムを作成すること,と理解して良いでしょう.
構造化定理の骨子は順次( sequence )、選択( if~then~else )、繰り返し( while/for )という3つの基本制御構造でプログラムを構成することです.
ただし厳密には「構造化(structured)」という概念には紆余曲折があります.各自調べて下さい. 繰り返しには「for」と「while」の2種類があります. 今日は,回数や条件が決まっている繰り返しを勉強します. ( 来週は,もっと複雑な「繰り返し」が待っています ) まずfor文からです.forの構文は,"for <カウンタ変数> in [リスト]" という形になっています. inの次に与えられたデータ( =リスト:複数の値を格納する箱 )から値を一つずつ順に取ってきて,カウンタ変数に入れて,次からの行を繰り返し実行します.リストの中のデータがなくなったらループ終了です. 繰り返し処理の部分は,forに対して1つインデントした状態で記述します.インデントが終わるところまでがループのブロックになります. ※このインデントブロックこそが,python最大の特徴です.インデントの深さ=ブロックの有効範囲は実行時に厳密に評価され,間違ったインデントは即,エラーに繋がります. inの部分にはリストの代わりに,range()関数を用いることもよくあります.range()によって指定した回数だけ繰り返し実行することになります.この時,カウンタ変数の値は"0"から始まり,繰り返しのたびに増加( インクリメント )し,最後は繰り返し回数-1( 0からスタートしているから )となります. 実際のプログラムを見て,理解を深めていきましょう. forの基本形ex6-1.pyenq h hm qZmfd( z99 ): oqhms( "h の値は," + rsq( h )+ "です." ) ループ用の変数iの値が,0から始まり,画面に値を表示して1ずつ足していき,99まで表示します( =100になる前で終わります ). range()関数は,「指定された数を超えない範囲」の数を返してくれます.指定した数が含まれないことに気をつけて下さい( 課題の4番目のように数字を減らすときに特に注意しましょう ). ループ用の変数がiなのは,最初の頃のプログラミング言語( ポケコン用のBASIC )の名残です.ポケコンでは,変数の名前は1文字しか使えませんでした.そのときに,ループ用の変数として,i, j, k や l, m, nを使っていたからです. ※変数名は,数学や物理で使う変数名と一致させることが多いです.例えばa, b, cは,とりあえず変数を使うときに利用し,x, y, z は,座標系を表すのによく使われました. このあたりの常識は,他人の色々なプログラムを読んで,身につけて下さい( 私は「カウンタ変数」よりも「ループ変数」の言い方の方が身についています ). 課題 6-1ex6-1.py を次の動作をするように書き換えなさい.「出力させましょう」の課題はソースコード全部( 2行 )を提出して下さい.
カウンタ変数の利用for文で,繰り返しのたびに変化するカウンタ変数を使えるようになりました.次はこれを利用して,色々な処理を行いましょう. 課題 6-2
課題 6-3
発展課題 6-4
繰り返し:whileの基本形次に,while文について見ていきましょう. ex6-2.pyZ = 9 bntmsdq = 9 toodq = z9 vghkd Z <= toodq: bntmsdq = bntmsdq + z Z += bntmsdq oqhms( "z + 1 + ... mが" + rsq( toodq ) + "を越えるのは" + rsq( bntmsdq ) + "を足したときである." ) 解説while文はこの英単語の意味通り,与えられた条件がTRUEである間,次のブロックの処理を繰り返します.for文のようにループ回数を与えるのではないことに注目して下さい. ex6-2.py では,counter の値を1ずつ増やし,さらにそのcounterの値をaに足しています. つまり,Σn = 1nを計算しており,その値が10を超えたらループを抜け出ます. ※なお,a = a + counter のように,ある変数に対して演算した結果を同じ変数に戻す時は,=の左側にその演算子を書く( +=,-=等)ことで同じ意味になります( 複合代入演算子という ). 課題 6-5上記 ex6-2.py を,次の動作をするように書き換えなさい.提出するのは<繰り返しを終えたときの counterの値>だけで結構です.
課題 6-6
課題 6-7
課題 6-8
課題 6-9
本日の課題提出課題は課題6-1,6-4,6-5,6-9です. 課題6-4はオプションとします.できていれば加点します. ※その他,プログラムを入力して実行するだけの課題は提出不要です.が,必ず入力・実行してください.全て自分の為のトレーニングです.
※注意※◎しっかり課題文を読み,「何をどう答えるべきか」を把握して下さい. ◎manaba入力画面には時間制限があります.いったんPCのエディタでテキストファイルを作成してから,それをコピーするようにしてください.その際のファイル名は自由ですがわかりやすいものを.特にプログラムのソースファイルと混同しないように注意しましょう. ◎実行画面,ソースコード,エラーメッセージ等は"----"や"====="等の境界線を入れて「ここから」「ここまで」を明確にして下さい. ◎ひとまとまりの回答の前後には空行を入れて読みやすくして下さい.びっしり書かれているとチェック/評価の際の間違いの原因になります. ◎提出前にもう一度,冷静に読み直して下さい.細かい部分でも訂正があれば手をかけて下さい. |