第6回 基礎プログラミング II レポート課題 氏名:奥山広大 学籍番号:c109039a 語学クラス:英語 コース(系):地域 1、 alphabetの配列を全て書いてみると、次の通りになる。 alphabet= a , b , c , d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , z alphabetの[18]と言うことで、配列にある通り当てはめてみると、 alphabet[18]="r"となる。0から配列のaをあてはめていくと、18番目に"r"があ りそのようになった。 alphabet[40]と言うことで、配列にあてはめてみると、alphabetの配列が40番目 まで存在しないのでalphabet[40]番目に該当するものは無いと言える。 2、A 考えた設定 公益大学を受検した学生の試験の点数の平均を表示するようにした。 プログラム本体 #!/usr/koeki/bin/ruby STDERR.print("東北公益文科大学受験生の得点の平均を求めます(ctrl Dで終了)\n") def average(score) # scoreは数値がたくさんしまわれる配列 sum = 0.0 # 割り算する予定なので浮動小数点数にしておく for stars in score # for A in B で B の中の A について sum += stars # printf("%d 人目 途中合計 sum=%d\n", score.length + 1, sum) end sum / score.length #配列 score の要素数を数え、それで sum を割る end points = Array.new # からっぽの配列 points を作る # i=0 # i が points の添字となる(入力された行を数える添字) while true STDERR.print "点数を入力して下さい: " line = gets if line == nil break end points << line.to_i # 上か下かどちらかでよい # points[i] = line.to_i p points # i += 1 end printf("\n みんなの得点平均は %3.1f です\n", average(points)) 結果 pan{c109039}% ./def_statistic.rb [~/Ruby] 東北公益文科大学受験生の得点の平均を求めます(ctrl Dで終了) 点数を入力して下さい: 60 [60] 点数を入力して下さい: 56 [60, 56] 点数を入力して下さい: 88 [60, 56, 88] 点数を入力して下さい: 93 [60, 56, 88, 93] 点数を入力して下さい: 59 [60, 56, 88, 93, 59] 点数を入力して下さい: 48 [60, 56, 88, 93, 59, 48] 点数を入力して下さい: 57 [60, 56, 88, 93, 59, 48, 57] 点数を入力して下さい: 75 [60, 56, 88, 93, 59, 48, 57, 75] 点数を入力して下さい: 49^D [60, 56, 88, 93, 59, 48, 57, 75, 49] 点数を入力して下さい: ^D みんなの得点平均は 65.0 です 考察 pan{c109039}% bc -l [~] 60 + 56 + 88 + 93 + 59 + 48 + 57 + 75 + 49 585 585 / 9 65.00000000000000000000 ktermで確かめ算を行った結果プログラムの実行結果と答えが合っていたので、 正しいと言える。 B 考えた設定 授業で行ったものを参考に、筋肉をつけたいが自力でつけていくのがいつまでつ ずくか、プロテインやもう嫌になったり筋肉を欲しいと思った男なら誰でも経験 することを設定としました。 プログラム本体 #!/usr/koeki/bin/ruby def cry(ct) print("\n筋力指数:") ct.times do print("|") end print("\n") sleep(0.5) end def message(name) STDERR.print("何をしますか: \n") STDERR.print("[1]\t筋トレする?\n") STDERR.print("[2]\t一気にプロテインを飲む?\n") STDERR.print("[3]\tだるいから休む?\n") end def fat(perday,exercise) x = 4 * perday - exercise printf("%d日目\n",perday) # printf("筋力指数 %d\n", x) x end printf("筋トレする。\n") STDERR.printf("名前を入力して下さい?") name = gets.chomp if name == "" name = "マッチョ" end printf("%sという名前になった。\n",name) happy = 1 # しあわせ度 weight = 1 # 体重 day = 0 # 育てた日付 while true cry(happy) message(name) ans = gets.chomp.to_i print "*" * 80 happy += day * ans # printf("しあわせ度 happy=%d\n", happy) weight += fat(day,ans) # printf("体重 weight=%d\n", weight) if happy > 4 break end if weight > 4 break end day += 1 end cry(weight) # 最終段階の体重が鳴き声になる printf("%sは", name) if weight > 8 print("とてつもない筋力を得る") elsif weight <= 5 print("見せかけの筋力を得る") else print("たるんだ腹を得る") end print("事に成功しました\n") 結果 複数の選択を選んで終了した場合の結果 pan{c109039}% ./def_rollplaying_a.rb [~/Ruby] 筋トレする。 名前を入力して下さい? マッチョという名前になった。 筋力指数:| 何をしますか: [1] 筋トレする? [2] 一気にプロテインを飲む? [3] だるいから休む? 2 ********************************************************************************0日目 筋力指数:| 何をしますか: [1] 筋トレする? [2] 一気にプロテインを飲む? [3] だるいから休む? 1 ********************************************************************************1日目 筋力指数:|| 何をしますか: [1] 筋トレする? [2] 一気にプロテインを飲む? [3] だるいから休む? 2 ********************************************************************************2日目 筋力指数:|||||||| マッチョはたるんだ腹を得る事に成功しました 一つの選択しか行わなかった場合の結果 pan{c109039}% ./def_rollplaying_a.rb [~/Ruby] 筋トレする。 名前を入力して下さい? マッチョという名前になった。 筋力指数:| 何をしますか: [1] 筋トレする? [2] 一気にプロテインを飲む? [3] だるいから休む? 1 ********************************************************************************0日目 筋力指数:| 何をしますか: [1] 筋トレする? [2] 一気にプロテインを飲む? [3] だるいから休む? 1 ********************************************************************************1日目 筋力指数:|| 何をしますか: [1] 筋トレする? [2] 一気にプロテインを飲む? [3] だるいから休む? 1 ********************************************************************************2日目 筋力指数:|||||||||| マッチョはとてつもない筋力を得る事に成功しました 考察 授業で習ったものを、ベースとしてプログラムを作成した。複数選択した場合の 結果であったり、一つのものを終了まで選択した場合の結果であったりしっかり 分けて結果作成を行った。 感想 大学で授業を選びや、選択するコースやゼミでその人のその後の人生が変わって くる。あと後期にあっても言い授業が無く留年するなど。 協力してくれた先輩 大沼拓海 参考文献 基礎プログラミング II 第6回 目的に応じて使ってみよう 「るびおっち」 http://roy/~madoka/2010/r2/06/06_11_theme_09_rubiocci.html 基礎プログラミング II 第6回 目的に応じて使ってみよう 「コマンドライン入 力と method をあわせてみよう」 http://roy/~madoka/2010/r2/06/06_13_theme_10_commandline.html 基礎プログラミング II 第6回 目的に応じて使ってみよう 「映画の星づけラン キング」 http://roy/~madoka/2010/r2/06/06_08_theme_07_aryavg.html