課題

初級A

課題1 進数変換

10進数の31を2進数に変換しなさい。下のヒントを見て手計算で行うか、Processingを用いてもよい。余りを求める演算子は%です。
また2進数の10111を10進数に変換しなさい。下のヒントを参考にすること。計算にProcessingを用いる場合、2のn乗はpow(2, n)で計算できます。

ヒント
10進数の26を2進数に変換する方法を説明します。

ステップ1: 2で割り続ける
最初に、10進数の26を2で割ります。商を次のステップに持ち越し、余りを保持します。

26 ÷ 2 = 13 … 0

ステップ2: 商を2で割り続ける
次に、ステップ1で求めた商である13を2で割ります。

13 ÷ 2 = 6 … 1

ステップ3: 再び商を2で割り続ける
次に、ステップ2で求めた商である6を2で割ります。

6 ÷ 2 = 3 … 0

ステップ4: 再び商を2で割り続ける
次に、ステップ3で求めた商である3を2で割ります。

3 ÷ 2 = 1 … 1

ステップ5: 最後の商を計算する
最後に、ステップ4で求めた商である1を2で割ります。

1 ÷ 2 = 0 … 1

ステップ6: 余りを逆順に並べる
ステップ1からステップ5までの計算結果の余りを逆順に並べると、2進数の表現が得られます。

26の2進数表現: 11010

以上が、10進数の26を2進数に変換する方法です。

ヒント
次に2進数の11010を10進数に変換する方法を説明します。

ステップ1: 2進数の桁の重みを計算する
2進数では、右端の桁から順に2のべき乗の重みを持ちます。右端の桁から順に、2^0, 2^1, 2^2, 2^3, 2^4 のように増えていきます。2^4は2の4乗を意味します。

桁の位置: 4 3 2 1 0
桁の重み: 16 8 4 2 1

ステップ2: 桁の重みと2進数の対応する桁を掛け合わせる
各桁の重みと2進数の対応する桁の値を掛け合わせ、合計を計算します。

1 * 16 = 16
1 * 8 = 8
0 * 4 = 0
1 * 2 = 2
0 * 1 = 0

ステップ3: 合計を計算する
ステップ2で計算した値を合計します。

16 + 8 + 0 + 2 + 0 = 26

以上が、2進数の11010を10進数に変換する方法です。結果として、2進数の11010は10進数の26になります。

課題2 負の数の表現

コンピュータでは計算に2進数を用いていますが、負の数を表現する場合、補数と呼ばれる数を利用します。
例えば4ビット(2進数4桁)の世界で考えます。
2進数0101に補数1011を足すと10000になります。
ところが4ビットの世界で考えているので最初の1は無視します。すなわち0000となります。
足して0になるということは補数1011は負の数-0101を表していると言えます。
このようにある自然数に対して足すと1桁増える最も小さな数を補数といいます。
2進数の補数は次のように求めることができます。
各桁の0と1を反転する。そして1を足す。
例えば0101を反転すると1010
1を足すと
1011となりこれが補数です。

それでは
1001の負の数-1001を2進数4桁で求めなさい。1001の補数を求めるということです。

課題3 XOR

排他的論理和XORを計算するProcessingのプログラムを作成しなさい。

ヒント
boolean演算子を組み合わせます。
XORは片方だけがTrueのときTrue、両方同じ値のときFalseになる演算子です。

boolean a, b, xor;

void setup() {
a = true;
b = true;

xor = ;
println(xor);
}

課題4 日付

日付(today=20270427)が与えられたときに年(year=2027)、月(month=4)、日(day=27)を求めて表示するプログラムを作成しなさい。

ヒント
int today = 20270427を整数10000で割ると小数点以下は切り捨てられて2027となります。

課題5 FizzBuzz問題

有名なFizzBuzz問題です。以下のルールに従いforループとif文を使ってProcessingのプログラムを作成すること。

1から100まで順に数を数え上げていき、3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数(15の倍数)なら「Fizz Buzz」、そのいずれでもなければその数をprintlnで表示しなさい。

初級B

課題1

課題2

課題3

課題4

課題5

中級1A

課題1

課題2

課題3

課題4

課題5

中級1B

課題1

課題2

課題3

課題4

課題5

中級2A

課題1

課題2

課題3

課題4

課題5

中級2B

課題1

課題2

課題3

課題4

課題5

上級A

課題1

課題2

課題3

課題4

課題5

上級B

課題1

課題2

課題3

課題4

課題5

DSとAIの初歩A

課題1

課題2

課題3

課題4

課題5

DSとAIの初歩B

課題1

課題2

課題3

課題4

課題5

DSとAIの初歩C

課題1

課題2

課題3

課題4

課題5

DSとAIの初歩D

課題1

課題2

課題3

課題4

課題5

Ex-Gram エクスグラム 中高生向けプログラミング教室