第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のときの描画結果である。

fig01

results matching ""

    No results matching ""