第09回 これまでの復習
授業内レポート
授業内課題09-1
以下のプログラムの読み下し文を書け。
size(400, 400);
int x = 100;
int y = 100;
int rectSize = 200;
for (int i = 0; i < 5; ++i) {
rect(x, y, rectSize, rectSize);
x += 20;
y += 20;
rectSize -= 40;
}
授業内課題09-2
以下のプログラムの読み下し文を書け。
size(400, 400);
int x = 0;
int y = 0;
int rectSize = 10;
while (x < width && y < height) {
rect(x, y, rectSize, rectSize);
x += rectSize;
y += rectSize;
rectSize *= 2;
}
授業内課題09-3
以下のプログラムの読み下し文を書け。
for (int i = 1; i <= 50; ++i) {
int n = i;
int count = 1;
while (n != 1) {
if (n % 2 == 0) {
n = n / 2;
} else {
n = n * 3 + 1;
}
count += 1;
}
println(i + " " + count);
}
授業内課題09-4
プログラムの先頭で整数型の変数nを1以上の値(自然数)で初期化し、nを素因数分解した結果を以下のようにコンソールに表示せよ。
20181120 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 3 * 5 * 23 * 457
授業内課題の解答例
授業内課題09-1
以下のプログラムの読み下し文を書け。
size(400, 400);
int x = 100;
int y = 100;
int rectSize = 200;
for (int i = 0; i < 5; ++i) {
rect(x, y, rectSize, rectSize);
x += 20;
y += 20;
rectSize -= 40;
}
読み下し文
画面の幅を 整数400 に、高さを 整数400 に設定しろ
整数型の変数 x を作成して、整数100 で初期化しろ
整数型の変数 y を作成して、整数100 で初期化しろ
整数型の変数 rectSize を作成して、整数200 で初期化しろ
整数型の変数 i を作成して、整数0 で初期化しろ
変数iの値 が 整数5 より小さいの真偽 が真である限り以下を繰り返せ
{
左上の座標を( 変数xの値 , 変数yの値 )とした幅 変数rectSizeの値 、高さ 変数rectSizeの値 の長方形を描画しろ
変数 x の値に 整数20 を足した結果を変数 x に代入しろ
変数 y の値に 整数20 を足した結果を変数 y に代入しろ
変数 rectSize の値に 整数20 を引いた結果を変数 rectSize に代入しろ
}
授業内課題09-2
以下のプログラムの読み下し文を書け。
size(400, 400);
int x = 0;
int y = 0;
int rectSize = 10;
while (x < width && y < height) {
rect(x, y, rectSize, rectSize);
x += rectSize;
y += rectSize;
rectSize *= 2;
}
読み下し文
画面の幅を 整数400 に、高さを 整数400 に設定しろ
整数型の変数 x を作成して、整数0 で初期化しろ
整数型の変数 y を作成して、整数0 で初期化しろ
整数型の変数 rectSize を作成して、整数10 で初期化しろ
変数xの値 が 画面の幅 より小さいの真偽 と 変数yの値 が 画面の高さ より小さいの真偽 の両方が真であるの真偽 が真である限り以下を繰り返せ
{
左上の座標を( 変数xの値 , 変数yの値 )とした幅 変数rectSizeの値 、高さ 変数rectSizeの値 の長方形を描画しろ
変数 x の値に 変数rectSizeの値 を足した結果を変数 x に代入しろ
変数 y の値に 変数rectSizeの値 を足した結果を変数 y に代入しろ
変数 rectSize の値に 整数2 を掛けた結果を変数 rectSize に代入しろ
}
授業内課題09-3
以下のプログラムの読み下し文を書け。
for (int i = 1; i <= 50; ++i) {
int n = i;
int count = 1;
while (n != 1) {
if (n % 2 == 0) {
n = n / 2;
} else {
n = n * 3 + 1;
}
count += 1;
}
println(i + " " + count);
}
読み下し文
整数型の 変数i を作成して、整数1 で初期化しろ
変数iの値 が 整数50 以下の真偽 が真である限り以下を繰り返せ
{
整数型の変数 n を作成して、変数iの値 で初期化しろ
整数型の変数 count を作成して、整数1 で初期化しろ
変数nの値 と 整数1 が等しくないの真偽 が真である限り以下を繰り返せ
{
もし 変数nの値 を 整数2 で割った余り が 整数0 と等しいの真偽 が真なら以下を実行しろ
{
変数 n に 変数nの値 を 整数2 で割った結果 を代入しろ
}
そうでなければ以下を実行しろ
{
変数 n に 変数nの値 に 整数3 を掛けた結果 に 整数1 を足した結果 を代入しろ
}
変数 count の値に 整数1 を足した結果を変数 count に代入しろ
}
変数iの値 に 文字列「 」 を足した結果 に 変数countの値 を足した結果 を表示しろ
変数 i の値を1増やせ
}
授業内課題09-4
プログラムの先頭で整数型の変数nを1以上の値(自然数)で初期化し、nを素因数分解した結果を以下のようにコンソールに表示せよ。
20181120 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 3 * 5 * 23 * 457
解答例
int n = 20181120;
boolean first = true;
print(n + " = ");
for (int d = 2; d <= n; ++d) {
while (n % d == 0) {
if (first) {
print(d);
first = false;
} else {
print(" * " + d);
}
n /= d;
}
}
授業外レポート
授業外課題09-1
寿司打( http://neutral.x0.com/home/sushida/play2.html )「5000円コース」をプレイし、以下のスコアを報告せよ(スピードは任意)
- 成績(xxx円分得 or 損した)
- 正しく打ったキーの数
- 平均キータイプ数(回 / 秒)
- ミスタイプ数
授業外課題09-2
以下のプログラムの読み下し文を書け。
int count = 0;
for (int b = 1; b * b <= 100; ++b) {
count += 1;
}
println(count);
授業外課題09-3
以下のプログラムの読み下し文を書け。
size(600, 400);
int rectSize = 10;
for (int i = 0; rectSize * i < width; ++i) {
for (int j = 0; rectSize * j < height; ++j) {
int cx = rectSize * i + rectSize / 2;
int cy = rectSize * j + rectSize / 2;
boolean c1 = cy >= 2 * height * cx / width - height;
boolean c2 = cy <= 2 * height * cx / width + height / 2;
if (c1 && c2) {
fill(255, 0, 0);
} else {
fill(255, 255, 255);
}
rect(rectSize * i, rectSize * j, rectSize, rectSize);
}
}
授業外課題09-4
プログラムの先頭で整数型の変数nを宣言し、任意の正の値で初期化せよ。 以下のような「*」と「 」(スペース)で構成されたn行分の模様をコンソールに表示するプログラムを作成せよ。
n=5のとき
*
* *
* * *
* * * *
* * * * *
n=10のとき
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
授業外課題09-5
任意のサイズの画面内に一辺の長さがrectSizeの正方形を敷き詰める。 正方形の中心が、(0, height / 2)と(width, 0)を通る直線より上にあるとき正方形の色を赤に、(0, height)と(width, height / 2)を通る直線より下にあるとき正方形の色を青に、どちらでもないとき正方形の色を白で塗りつぶせ。(widthは画面の幅、heightは画面の高さを表す) noStroke()に設定して正方形の描画をすること。
以下はsize(400, 400)、rectSizeが10のときの描画結果である。