{{category HSP}} !!!03. 配列、繰り返し、データの記録と保存など {{outline}} ---- * 各自の「10問クイズ」の課題をお互いに試す。 * 感心した点と、改善するとよい点を、コメントする。 ** それぞれの人のプログラムのスレッドにコメントを「返信」する。 !! 10問作ってみての感想は? * 行数は何行? * 次は、20問作ってみようかな? !! 03.1 配列 *プログラム例: {{ref 10monQuiz01b.hsp}} ! 03.1.1 配列とは * 変数に複数のものを入れられるようにしたもの。 * 番号付の箱をならべてひとまとめにしたイメージ。 * 番号で要素を指定できる(0番から始まる点に注意) * 要素の数を調べる length(配列名) ! 03.1.2 配列を使ったプログラミングのコツ * 番号で対応付ける。1番の問題には1番の解答。 * 真・偽を数字で表しておく。(1は真、0は偽) * ポイント:呈示内容と、処理部分をわけて書く。 !! 03.2 forを使った繰り返し {{pre for 変数, はじめの数, 最終値, 増やす量 処理を書く next }} * i を0から10まで繰り返す。1ずつ増やす。 {{pre for i, 0, 10, 1 mes i next }} * 0から9まで10個の数字が「メッセージ」出力される。 *<<「最終値」>>がややっこしいので注意。最終値は変数に入るけれど、命令は実行されない。 終値に達した時点で、繰り返しから抜けます(終値はループに含みません)。 !! 03.3 ifとelse で場合分け {{pre if 条件 { すること } else { その他の場合にすること } }} !! 03.4 計算(+ - * /): 整数と小数 * デフォルトは整数 * 小数まで扱うには、別途宣言する。double() * 整数にするには、int() {{pre wariai = double(wariai) ; 割合を実数(小数も)で maru = double(maru) zenbu = double(zenbu) wariai = (maru/zenbu) * 100 ; 小数点以下も含めて計算 wariai = int(wariai) ; 整数(小数点以下切捨て)に戻す }} * 四捨五入は、round() !! 03.5 その他の注意点 * 同じことを何度もするときは、サブルーチンにまとめること * 利用者にフィードバックを返すこと !! 03.6 データの記録と保存:結果をファイルに記録する *二つ目のプログラム例:{{ref 10monQuizBb.hsp}} ! 03.6.1 使いやすくする改善ポイント * 問題番号も出るように * 条件に応じてメッセージを変える。 ** よくできました、がんばりましょう、もういちど * 背景を変えることで、場面の変化をユーザーに知らせる。 ** 変化には「意味」をもたせる ** 注意:無意味な変化は混乱のもと ! 03.6.2 回答の記録:note系の命令群 {{pre notesel 変数 noteadd 記録内容 notesave "ファイル名" }} * notesel で事前に「記録ノート」を用意。 * noteadd する度に「記録ノート」に一行ずつ記入されていく * 最後に、「記録ノート」を、ファイルとして保存する。 {{pre noteadd "正答率は"+wariai+"%でした" notesave "log.txt" }} !! 今日の課題 ! 自分の「10問クイズ」を数を増やし、改良してください。 +配列を使うこと +問題数を何問(11問以上)にしても、「処理部分」を変えなくてすむようにすること +使う人にとってわかりやすくすること +結果をファイルに保存できるようにすること !!! => TextForHSP04