どれだけ繰り返しても飽きることが無い。
これもコンピュータの特徴です。
今までの順次、選択(条件分岐)とこの繰り返しは構造化プログラミングという最も基本的なプログラミングの要素です。
ここでは繰り返しを使ったプログラムにチャレンジします。
以下のプログラムを作成しなさい。
(チームで、ホワイトボードを使い、方針を決めてからプログラミングを始めること)
1.0から100までの整数値を表示するプログラムを作成しなさい。
ただし、for文を使うこと。
(出力例)
2.100から0までの整数値を表示するプログラムを作成しなさい
3.50から100までに含まれる偶数を表示するプログラムを作成しなさい
4.1から100までに含まれる整数を全て合計するプログラムを作成しなさい
5.上記4のプログラムを計算過程を表示するように変更しなさい
ただし、for文を使うこと。
6.上記1~5のプログラムをWhile文を使って書き換えなさい
全てを一つのmainメソッドの中に作成してかまわない。
7.紙を何度折ることによって月に到達できるかを計算するプログラムを作りなさい
紙の厚さは0.1㎜とする。
月までの距離は.平均で約38万キロとする。
8.次のような模様を出力するプログラムを2重のfor文で作りなさい
9.次のような模様を出力するプログラムを2重のfor文で作りなさい
10.次のような模様を出力するプログラムを2重のfor文で作りなさい
* |
11.基本情報技術者試験の勉強の一環で10進数を2進数に基数変換するプログラムを作成しなさい。
13を2進数にすると1101です。 |
200を2進数にすると11001000です。 |
12.IPv4で表現できるIPアドレスの理論上の数を求めなさい。
※IPv4は32ビットである。よって、2の32乗を計算することで求めなさい。
※累乗(べき乗)の計算をするMathクラスのpowメソッドは使わないこと。
ヒント:桁あふれ(オーバーフロー)に注意すること
4294967296 |
オーバーフローにはくれぐれも注意しましょう。過去にはこんな事件もありました。
13.FizzBuzz問題を解きなさい。
FizzBuzzとは、1から99まで順番に数を表示するプログラムです。
ただし、その数が3で割り切れるなら“Fizz”、5で割り切れるなら“Buzz”、両方で割り切れるなら“FizzBuzz”と表示します。
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz |
14.コラッツの予想を解きなさい。
コラッツの予想とは、任意の正の整数numに対して
(1) numが奇数ならば3倍して1を加える。
(2) numが偶数ならば2で割る。
という操作を繰り返して,1になったら終了とする。
1930年代にコラッツは,どんな正の整数から始めても上記の操作を繰り返せば1になると予想したというものです。
数学界の未解決問題の一つです。
つまり、証明はまだ誰もなしえていません。
13 40 20 10 5 16 8 4 2 1 |
※(1以降は 1→4→2→1 を繰り返すループに入る)
82 41 124 62 31 94 47 142 71 214 107 322 161 484 242 121 364 182 91 274 137 412 206 103 310 155 466 233 700 350 175 526 263 790 395 1186 593 1780 890 445 1336 668 334 167 502 251 754 377 1132 566 283 850 425 1276 638 319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1 |
15.モンテカルロ法を使い円周率を計算しなさい。
(1) モンテカルロ法の名前の由来を隣の人に教えてあげなさい。
(2) プログラムで実装し、java.lang.Math.PI(3.141592653589793)にできるだけ近づけなさい
考え方:
①半径1の円を考えます。
②その円に外接する正方形(一辺は2)を考えます。
③円の中心から右上の4分の1の円と正方形を取り出して考えます。
④0~1のランダムな疑似実数を2つ作り、それぞれをx軸,y軸の座標値として点を打ちます。
⑤円の中心と点(x,y)を結んだ直角三角形を考え、3平方の定理により斜辺を求めます。
⑥もしも、斜辺の長さが1以下なら円の中に点が打たれたということです。
⑦上記④~⑥の試行を一定回数繰り返し、全試行回数中、円の中に点が打たれた確率を求めます。
⑧⑦で求めた確率を4倍すると求める円周率(の近似値)になります。
簡単な証明
円の面積 = 円周率 × 半径 × 半径
4分の1の円の面積 = 円周率 × 半径 × 半径 ÷ 4
4分の1の正方形の面積 = 半径 × 半径 ÷ 4
円周率 = (4分の1の円の面積)÷ (4分の1の正方形の面積)
16.オリジナル問題作成
以上。