配列と繰り返し

https://gyazo.com/48c3004c139530db5cac1d01e17af0e2

プロジェクトの準備

Eclipseで新規にプロジェクトを作成しましょう. メニューから[ファイル]-[新規]-[Javaプロジェクト]をクリックして,「新規Javaプロジェクトの作成」を開きます. ここでは,プロジェクト名に”Project4”を入力して,[完了]をクリックしましょう. パッケージ・エクスプローラに作成したプロジェクトが表示されていることを確認してください.

https://gyazo.com/98670e64134c8bd30fed542ac7a2056b

続いてソースファイルを作成しましょう. メニューから[ファイル]-[新規]-[クラス]をクリックして,「新規Javaクラス」を開きます. ここでは,名前に”MyClass”を入力し,public static void main(String[] args)(V)にチェックを入れ,[完了]をクリックしましょう. パッケージ・エクスプローラに作成したソースファイルが表示されていることを確認してください.

https://gyazo.com/c85ebc0dd102017b4b6ff0397bdcc555

配列とは

変数は数値や文字列などのデータを1つだけしか記憶できません. しかし,複数のデータを一つのグループとして扱いたい場合があります. 例えば,5人の学生が受けた試験の得点を記憶することを考えてみましょう. 変数を利用して記録する場合は,5つの変数を用意しなければならず面倒です. このようなときに便利なのが配列です. 配列は同じデータ型の複数の値を1つの配列名で記憶することができます. 配列を宣言するにはデータ型[] 配列名 = new データ型[要素数];と記述します. 配列に記憶されるデータは要素と呼ばれ,各要素には添え字という番号で参照します.

下記のコードを参考に,配列scoreを宣言して,5人の得点を記録してみましょう. 配列の添え字は0番から始まることに注意してください. プログラムの実行後に,コンソールの出力結果を確認してください.

配列の要素を初期化するには,上記のように各要素に値を代入する方法の他に, 「{}」を利用してデータ型[] 配列名 = {78, 84, 94, 64, 82};と記述する方法もあります.

下記のコードを参考に,配列scoreの初期化を行いましょう. プログラムの実行後に,コンソールの出力結果を確認してください.

また,配列の要素数を取得するには配列名.lengthと記述します. 下記のコードを参考に,配列scoreの要素数をコンソールに出力してください. プログラムの実行後に,コンソールの出力結果を確認してください.

for文

制御構文の1つであり,条件を満たすまで同じ命令文を繰り返す制御が繰り返しです. 今回はこの繰り返しについて学習します. 指定した回数だけ命令を繰り返すにはfor文を利用します. for文は下記のように記述します. 「()」内には,変数の初期化繰り返し条件変数の更新を記述します. 例えば,int型の変数iを宣言し,iの値を1ずつ増やしながら,10回同じ命令を繰り返すには, for(int i=0; i<10; i++)と記述します. ここでi++は値を1だけ増やすという演算子であり,i=i+1と同じ処理です.

for(変数の初期化;繰り返し条件;変数の更新){
	繰り返す命令
}

for文は配列との相性はバッチリです. 下記のコードを参考に,配列scoreの全要素の値をコンソールに出力してみましょう. プログラムの実行後に,コンソールの出力結果を確認してください.

次は,下記のコードを参考に,int型の変数sumを宣言し,for文を利用して5人の得点の合計を代入してみましょう. プログラムの実行後に,コンソールの出力結果を確認してください.

最後に,下記のコードを参考に,int型の変数maxを宣言し,for文を利用して5人の得点の最大値を代入してみましょう. プログラムの実行後に,コンソールの出力結果を確認してください.

while文

指定した回数だけ命令を繰り返すfor文に対し,繰り返す回数が分からないときに用いるのがwhile文です. while文は下記のように記述します. 「()」内には条件式を記述し,この条件式が真(true)の間は,同じ命令を繰り返します.

while(条件式){
	繰り返す命令
}

下記のコードを参考に,int型の変数xを宣言し,xの値が100以上になるまで,xを2倍にする処理を繰り返してみましょう. プログラムの実行後に,コンソールの出力結果を確認してください.

課題

ユークリッドの互除法に従い,while文を利用して変数m=12707と変数n=12319の最大公約数を求めてください. 下記はユークリッドの互除法の擬似コード(自然言語を用いてプログラミング言語のように記述したもの)です. コンソールには,結果の最大公約数に加えて,変数m,nの値の変化も出力してください. 詳細はWikipediaを参照してください.

  1. $m=a$, $n=b$ //変数m,nに自然数a,bを代入
  2. もし$n=0$ならば,mが最大公約数となり,終了
  3. $r = m % n$ //剰余を求める
  4. $m = n$, $n = r$とし,ステップ2に戻る

課題が完成したら,作成したプロジェクトを実行可能JARファイルの形式でファイルに保存(エクスポート)してください.

参考書籍