第02章 Java基礎

02_java_basic

第02章 Javaの基礎を学ぼう

独学用の演習・段階別ヒント・自己確認: こちらから開く。各節を学んだあとに利用してください。

この章の読み方: 本文の基本説明、直後の発展解説、例題、演習の順に読んでください。専門用語は初めて出てきた箇所で意味を確認し、コードの予想結果を考えてから実行します。

章末の演習は、それまでの本文の内容を使って解けるように設計しています。

全章共通の用語・説明方針: 用語と文章表現の基準 を参照できます。分からない単語はこの章の説明と照らし合わせてください。

Java実務研修教材/初心者向け・Windows 11・JDK 21/推奨学習時間:8〜14時間(演習を含む)
前提:第01章「開発環境構築」を完了していること

この章の目的

第01章では、Javaを開発・実行するための環境を整えました。第02章では、実際にJavaのソースコードを読み、書き、実行します。最初は見慣れない記号が多く見えるかもしれません。

しかし、それぞれの役割を一つずつ理解すれば、徐々に読めるようになります。本章はプログラミング未経験者を想定し、専門用語を紹介する際には意味と使い方を説明します。

この章を終えたら、変数、演算子、条件分岐、繰り返し、配列、メソッドを使って、簡単なデータ処理プログラムを自分で作成できることを目標とします。コードの丸暗記ではなく、値がどのように変化するかを説明できることを重視します。

学習の進め方

最初に説明を読み、次にコードを実行し、最後に小さな演習を行ってください。サンプルコードの文字や数値を一箇所だけ変え、その影響を確認する方法は理解を深めるのに有効です。

すべてのサンプルは第01章で使用したEclipseで実行できます。分からない箇所は前の節に戻って確かめましょう。

Eclipseでの実行準備

  1. 第01章で設定したEclipseを起動します。
  2. メニューの「File」→「New」→「Java Project」を選び、プロジェクト名をJavaBasicsとします。モジュール記述子module-info.javaの作成を促された場合、ここでは作成しない設定を選択します。
  3. srcを右クリックし、「New」→「Package」でtraining.basicを作成します。「パッケージ」とは、クラスを整理するための名前空間です。
  4. training.basicを右クリックし、「New」→「Class」でHelloBasicsというクラスを作ります。public static void main(String[] args)の作成チェック欄があれば有効にしても構いません。
  5. 本章のコードのうち、package training.basic;以下を含む内容を入力します。すでに同じpackage行がある場合は重複させないでください。クラス名とファイル名を一致させてください。
  6. ファイルを保存し、対象クラスを右クリック→「Run As」→「Java Application」で実行します。画面下部の「Console」で表示結果を確認します。
  7. 2つ目以降の例も、同じtraining.basicパッケージにクラスを追加して実行します。

コマンドで実行したい場合

配布されたMavenプロジェクトでは、pom.xmlのあるフォルダーでmvn compileを実行するとコンパイルできます。

例えばHelloBasicsを実行するには、mvn exec:java -Dexec.mainClass=training.basic.HelloBasicsを使います。

exec:javaはMavenの追加プラグインを使うため、初回実行ではインターネット接続が必要になる場合があります。最初はEclipseから実行する方法で十分です。

この章のすべてのサンプルを一度に実行するのではなく、クラスごとに実行してください。


01. Javaプログラムの基本構造

この章からは、Javaに命令を書いてコンピューターに実行させる練習を始めます。まずは、短いプログラムがどのような形をしているかを確認します。第01章で扱ったmainメソッドも改めて説明します。

サンプルプログラム

ファイル名:HelloBasics.java。

配布教材の examples/02_java_basic/src/main/java/training/basic/HelloBasics.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class HelloBasics {
    public static void main(String[] args) {
        System.out.println("Javaの学習を始めます。");
        System.out.println("少しずつ練習しましょう。");
    }
}

実行結果の例

Javaの学習を始めます。
少しずつ練習しましょう。

コードの読み方と仕組み

package training.basic;はクラスをグループ分けする宣言です。これに合わせてファイルはtraining/basicフォルダーに置きます。

public class HelloBasicsはHelloBasicsというクラスを定義する書き方です。クラスとは、Javaのプログラムを構成する単位の一つです。

ここでは詳しい仕組みより「クラスの中に処理を書く」と理解すれば十分です。public static void main(String[] args)は、アプリケーションを起動したときに最初に実行する入り口です。

各単語の細かな意味はオブジェクト指向を学ぶ第03章で説明します。波括弧{と}は、処理のまとまりの開始と終了を表します。System.out.println(...)は括弧内の内容をコンソールに表示して改行します。

文字はダブルクォーテーション"で囲み、文末にはセミコロン;を書きます。なお//から行末までと/* ... */で囲んだ部分はコメントであり、実行されません。

間違えやすいポイント

クラス名とファイル名(public classの場合)は一致させてください。大文字と小文字も区別されます。また"を全角の引用符に替えたり、セミコロンを忘れたりするとコンパイルエラーになります。

小さな演習

表示文を一行追加して、自分の学習目標を表示してください。文字列の末尾に!を付けると結果がどう変わるかも確認しましょう。


この節の理解度チェック(02-01)

問題: public static void main(String[] args)は何の入口ですか。画面にHelloを表示する命令も書いてください。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

Javaアプリをどこから動かし始めるか考えます。

ヒント2:注目する部分

最初に呼び出されるメソッド名と、標準出力へ1行書く命令を分けます。

ヒント3:解法の手掛かり

main(String[] args) と System.out.println を組み合わせ、文字列には二重引用符を付けます。

模範解答と理由

一般的なJavaアプリの起動時の入口となるメソッドです。出力文はSystem.out.println("Hello");です。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: mainメソッドがJavaアプリの開始点と答える。
  2. 1点: System.out.println("Hello"); と正しく記述する。

正答例: 一般的なJavaアプリの起動時の入口となるメソッドです。出力文はSystem.out.println("Hello");です。

部分点の例: 上記の独立した条件のうち満たした項目だけに1点ずつ加算し、満たさない項目は0点です。

誤答として扱う具体例: main はソースをコンパイルするコマンドで、表示は print(Hello) と書く。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

02. 変数とデータ型

プログラムでは、人数、商品の値段、名前などの情報を一時的に保存して処理します。その保存場所に付ける名前が「変数」です。Javaでは変数を使う前に、保存する値の種類を「データ型」で宣言します。

サンプルプログラム

ファイル名:Variables.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Variables.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Variables {
    public static void main(String[] args) {
        int age = 20;
        double height = 165.5;
        boolean isStudent = true;
        char grade = 'A';
        String name = "山田";
        System.out.println(name + "さんの年齢: " + age);
        System.out.println("身長: " + height);
        System.out.println("学生ですか: " + isStudent);
        System.out.println("評価: " + grade);
        age = 21;
        System.out.println("来年の年齢: " + age);
    }
}

実行結果の例

山田さんの年齢: 20
身長: 165.5
学生ですか: true
評価: A
来年の年齢: 21

コードの読み方と仕組み

intは整数、doubleは小数を含む数値、booleanはtrueまたはfalse、charは一文字、Stringは文字列を扱います。

Stringはクラスですが、最初は「文字列のための型」と覚えて構いません。int age = 20;の=は数学の「等しい」ではなく、右側の値を左側に代入する記号です。最初に値を入れることを「初期化」と呼びます。

age = 21;のように後から代入し直すこともできます。一方、final int LIMIT = 10;のようにfinalを付けた変数には再代入できません。+は文字列と値をつなぐ用途にも使えます。

変数名にはageやitemCountのように役割が分かる名前を付けましょう。

間違えやすいポイント

charは一文字をシングルクォーテーションで、Stringは文字列をダブルクォーテーションで囲みます。int age = "20";のように文字列を整数の変数に代入できません。

Javaはデータ型の違いを厳密に確認します。

小さな演習

priceという整数変数に1200を入れ、quantityに3を入れて、それぞれ表示してください。さらにfinalを使って税込計算で用いる定数を一つ宣言してみましょう(実際の税率を計算する必要はありません)。


理解を深める:変数・配列・メソッドの処理を図で確認する

int[] prices = {100, 200, 300};
int sum = 0;
for (int price : prices) {
    sum += price;
}
System.out.println(sum);

int[] は整数を複数保持する配列の型です。{100, 200, 300} は3つの整数を並べた初期値です。sum は合計を保管する変数で、初期値は0です。

for (int price : prices) は配列から値を1つずつ取り出して price に入れます。sum += price は sum = sum + price の省略形です。

開始: sum=0
1回目: price=100 → sum=100
2回目: price=200 → sum=300
3回目: price=300 → sum=600
終了: 600を表示

このように、初心者は変数の値がどう変化するかを表にすると理解しやすくなります。Eclipseのデバッグ機能でブレークポイントを設定し、1行ずつ実行して sum の値を確かめてください。

この節の理解度チェック(02-02)

問題: int age = 20; age = age + 1; の最後のageはいくつですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

代入式の右側が先に計算されます。

ヒント2:注目する部分

最初のageは20で、右辺のageも変更前の値です。

ヒント3:解法の手掛かり

20に1を足した値が左辺ageへ上書きされます。

模範解答と理由

21です。age + 1は21で、その結果をageへ代入します。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 最終値を21と答える。
  2. 1点: 右辺age + 1を評価して再代入すると説明する。

正答例: 21です。age + 1は21で、その結果をageへ代入します。

部分点の例: この節は正答要素が1つなので部分点はありません。

誤答として扱う具体例: 最後のageは20のまま、または20+1という文字列になる。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

図解:変数と代入

変数と代入

図の読み方:代入すると変数scoreの値は10から20へ更新されます。

03. 数値と演算子

販売価格や数量を計算するために、加算・減算・乗算・除算を学びます。同じ割り算でも整数同士と小数が含まれる場合とでは結果が異なるため、慎重に確認しましょう。

サンプルプログラム

ファイル名:Numbers.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Numbers.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Numbers {
    public static void main(String[] args) {
        int price = 1200;
        int quantity = 3;
        int total = price * quantity;
        System.out.println("合計: " + total);
        System.out.println("7 / 2 = " + (7 / 2));
        System.out.println("7 % 2 = " + (7 % 2));
        System.out.println("7.0 / 2 = " + (7.0 / 2));
        int count = 5;
        count += 2;
        System.out.println("件数: " + count);
    }
}

実行結果の例

合計: 3600
7 / 2 = 3
7 % 2 = 1
7.0 / 2 = 3.5
件数: 7

コードの読み方と仕組み

+は足し算、-は引き算、*は掛け算、/は割り算、%は余りを求める演算子です。整数同士の7 / 2は整数の3となり、小数部分は切り捨てられます。7.0 / 2は小数計算となり3.5です。

count += 2;はcount = count + 2;の短縮形です。計算順序は括弧を使って明示できます。金額を扱う本格的な業務システムでは、小数誤差への対策が重要です。

第04章以降でBigDecimalなど適切な数値表現も扱います。

間違えやすいポイント

整数計算では、値が大きすぎるとintで扱える範囲を超える場合があります。また7 / 2を計算した後でdoubleに代入しても切り捨てた小数部分は戻りません。整数の0で割ると実行時エラーになります。

小さな演習

税込価格ではなく単純な合計計算として、単価850円の商品を4個購入した場合の金額を表示してください。続けて10個を3人に分けたときの一人当たりの個数と余りを表示してください。


この節の理解度チェック(02-03)

問題: int a=7; int b=2; System.out.println(a/b);の表示は何ですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

aもbもint型です。

ヒント2:注目する部分

整数型どうしの / がどの型の結果を返すか考えます。

ヒント3:解法の手掛かり

7÷2の商の整数部分だけが残り、余り1は表示されません。

模範解答と理由

3です。整数同士の除算は小数部分を切り捨てます。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 出力が3と答える。
  2. 1点: int同士の除算は小数部分を切り捨てると説明する。

正答例: 3です。整数同士の除算は小数部分を切り捨てます。

部分点の例: この節は正答要素が1つなので部分点はありません。

誤答として扱う具体例: 3.5がそのまま表示されると答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

図解:整数除算と計算順序

整数除算と計算順序

図の読み方:int同士の除算は結果も整数になり、小数部分は失われます。

04. 文字列の操作

名前やメッセージを扱うには、文字列の結合、文字数の取得、内容の比較などが必要になります。文字列は数値とは異なる性質を持つことを理解します。

サンプルプログラム

ファイル名:Strings.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Strings.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Strings {
    public static void main(String[] args) {
        String first = "Java";
        String second = "研修";
        String title = first + second;
        System.out.println(title);
        System.out.println("文字数: " + title.length());
        System.out.println("同じ内容: " + title.equals("Java研修"));
        System.out.println("先頭の文字: " + title.charAt(0));
    }
}

実行結果の例

Java研修
文字数: 6
同じ内容: true
先頭の文字: J

コードの読み方と仕組み

文字列の結合には+を使います。title.length()は文字数を取得します。equalsは文字列の内容が等しいか比較し、結果はbooleanです。文字列の内容比較に==を使用するのは避けてください。

==は参照型では通常、同じ対象を参照しているかを比較するためです。charAt(0)は最初の文字を取得します。Javaでは多くの位置番号が0から始まります。

厳密にはlength()とcharAt()はUTF-16のコード単位を扱うため、絵文字などでは直感的な一文字と一致しないことがあります。

間違えやすいポイント

文字列の比較を==で書くと、たまたま期待どおりの結果に見えることがあり、誤りに気づきにくくなります。まずはequalsを使う習慣を付けましょう。

小さな演習

String product = "ノート";を宣言し、商品名と文字数を表示してください。equals("ノート")とequals("ペン")で結果が変わることを確認しましょう。


この節の理解度チェック(02-04)

問題: String first="Java"; String second="Java";の内容が同じか比較するために通常使うメソッドは何ですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

文字列の内容比較と参照先の比較は区別します。

ヒント2:注目する部分

Stringで内容が等しいかを調べるメソッドを使います。

ヒント3:解法の手掛かり

first.equals(second) は内容が同じならtrueです。

模範解答と理由

first.equals(second)です。結果はtrueです。==は参照の同一性を比較するため内容比較には通常使いません。

この節の自己採点基準(3点満点)

採点条件(各1点)

  1. 1点: first.equals(second) と記述する。
  2. 1点: この式はtrueになると答える。
  3. 1点: == は内容比較の標準的な書き方だと説明する。

正答例: first.equals(second)です。結果はtrueです。==は参照の同一性を比較するため内容比較には通常使いません。

部分点の例: 上記の独立した条件のうち満たした項目だけに1点ずつ加算し、満たさない項目は0点です。

誤答として扱う具体例: 文字列の内容比較は必ず first == second とするべきだと答える。

合格条件:3/3点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

05. キーボードからの入力

ここまではプログラム中に直接書いた値を使いました。実行時に利用者が入力した値を使えると、より実用的になります。Scannerを使ってコンソールから文字列を読み取ります。

サンプルプログラム

ファイル名:InputExample.java。

配布教材の examples/02_java_basic/src/main/java/training/basic/InputExample.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print("お名前を入力してください: ");
            String name = scanner.nextLine();
            System.out.println("こんにちは、" + name + "さん。");
        }
    }
}

実行結果の例

お名前を入力してください: 田中
こんにちは、田中さん。

コードの読み方と仕組み

import java.util.Scanner;は標準ライブラリのScannerクラスを使用できるようにする宣言です。System.inはキーボードなどの標準入力を表します。

new Scanner(System.in)で読み取り用のオブジェクトを作ります。scanner.nextLine()はEnterが押されるまでの一行を取得します。

System.out.printはprintlnと違い、表示後に改行しません。try (...)は処理終了時にScannerを閉じるための書き方です。この仕組みは第04章で詳しく学びます。

ここでは既定の構文として利用してください。

間違えやすいポイント

実行例の「田中」は利用者が入力する文字であり、プログラムが自動的に表示する文字ではありません。Eclipseではコンソールをクリックして入力し、Enterを押してください。

小さな演習

入力された好きな食べ物を使って「好きな食べ物は○○ですね。」と表示するプログラムに変更してください。


この節の理解度チェック(02-05)

問題: Scannerで整数を入力させるとき、整数以外の文字が入力された場合に何が起こり得ますか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

Scannerが読み込もうとする型を確認します。

ヒント2:注目する部分

次に来る文字列が整数に変換できなければどうなるか考えます。

ヒント3:解法の手掛かり

nextInt() で整数以外を読み込むとInputMismatchExceptionが起き得ます。

模範解答と理由

nextInt()は整数として読み取れない入力でInputMismatchExceptionを起こし得ます。入力検証や例外処理が必要になります。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: InputMismatchExceptionなど入力形式の不一致による例外が起き得ると答える。
  2. 1点: 入力検証・例外処理が必要と説明する。

正答例: nextInt()は整数として読み取れない入力でInputMismatchExceptionを起こし得ます。入力検証や例外処理が必要になります。

部分点の例: 上記の独立した条件のうち満たした項目だけに1点ずつ加算し、満たさない項目は0点です。

誤答として扱う具体例: 文字列「abc」でもnextIntが自動的に0を返すと答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

06. 条件分岐:if / else

「点数が60点以上なら合格、それ以外なら不合格」といった判断をプログラムで表すには、条件分岐を使います。条件式の結果はtrueまたはfalseになります。

サンプルプログラム

ファイル名:Conditions.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Conditions.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Conditions {
    public static void main(String[] args) {
        int score = 75;
        if (score >= 80) {
            System.out.println("評価: A");
        } else if (score >= 60) {
            System.out.println("評価: B");
        } else {
            System.out.println("評価: C");
        }
        boolean passed = score >= 60 && score <= 100;
        System.out.println("条件を満たす: " + passed);
    }
}

実行結果の例

評価: B
条件を満たす: true

コードの読み方と仕組み

if (条件式)は条件がtrueのときの処理を実行します。else ifで別の条件を順番に判定し、どれにも当てはまらない場合はelseを実行します。

>=は以上、<=は以下、>はより大きい、<はより小さい、==は等しい、!=は等しくないを表します。&&は両方の条件が成立したときにtrue、||はどちらかが成立するとtrueです。

!は真偽値を反転します。例では先に80点以上を確認するため、75点は次の「60点以上」に該当します。

間違えやすいポイント

条件の順番が重要です。score >= 60を先に確認すると90点もそこで一致し、80点以上の分岐に進めません。また、比較の==と代入の=を混同しないでください。

小さな演習

scoreを59、60、79、80、100に変更してそれぞれの出力を記録してください。さらに0未満または100を超えると「範囲外」と表示する分岐を最初に追加してください。


この節の理解度チェック(02-06)

問題: int score=70; if(score>=80){System.out.println("A");}else{System.out.println("B");} の出力は何ですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

先にifの比較を評価します。

ヒント2:注目する部分

70は80以上かどうか確認します。

ヒント3:解法の手掛かり

70 >= 80はfalseなのでelse側のprintlnが実行されます。

模範解答と理由

Bです。条件が偽なのでelseブロックを実行します。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 出力がBと答える。
  2. 1点: 70 >= 80が偽でelseが実行されると説明する。

正答例: Bです。条件が偽なのでelseブロックを実行します。

部分点の例: この節は正答要素が1つなので部分点はありません。

誤答として扱う具体例: 70以上だからAと表示すると答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

図解:if / elseの分岐

if / elseの分岐

図の読み方:条件がtrueかfalseかで実行する処理が一方に決まります。

07. 複数の候補を分ける:switch

ある数値や文字列の値によって処理を選びたい場合、switchという構文も利用できます。候補が明確な場合にはifより読みやすくなることがあります。

サンプルプログラム

ファイル名:SwitchExample.java。

配布教材の examples/02_java_basic/src/main/java/training/basic/SwitchExample.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class SwitchExample {
    public static void main(String[] args) {
        int day = 2;
        switch (day) {
            case 1:
                System.out.println("月曜日");
                break;
            case 2:
                System.out.println("火曜日");
                break;
            default:
                System.out.println("その他の曜日");
        }
    }
}

実行結果の例

火曜日

コードの読み方と仕組み

switch (day)は変数dayの値を確認します。case 1:は1の場合、case 2:は2の場合です。breakを使うと処理を終了してswitchの外に出ます。

defaultはどの候補にも一致しない場合に実行されます。breakを省略した古典的なswitch文では、次のcaseにも処理が続くことがあります。

実務では意図しない動作の原因になるため、最初はbreakを忘れないようにしましょう。新しいJavaにはcase 1 ->などの構文もありますが、まずは基本形を理解します。

間違えやすいポイント

caseに付けるコロン:と、文末のセミコロン;を区別してください。またdefaultを書かないと、どの候補にも当てはまらない場合に何も表示されない可能性があります。

小さな演習

dayを1、2、3に変更して実行し、3の場合にも「水曜日」と表示できるようにしてください。


独学ステップ:条件分岐の結果を手で追う

プログラムの実行結果を先に予想する練習です。まず次のコードを実行せずに読みましょう。

int price = 120;
int quantity = 3;
int subtotal = price * quantity;
if (subtotal >= 300) {
    System.out.println("対象");
} else {
    System.out.println("対象外");
}
順番 確認する式 値・結果
1 price 120
2 quantity 3
3 price * quantity 360
4 subtotal >= 300 true
5 実行する分岐 if 側

レベルA: コードをそのまま実行し、表示と予想を比較します。

レベルB: quantity を 2 に変えて、実行前に分岐結果を予想します。

レベルC: subtotal がちょうど 300 の場合を考え、>= と > の違いを説明します。

レベルD: 合計金額が500円以上なら「送料無料」、それ以外は「送料あり」と表示するコードを新規に書きます。練習の解説は章末の「独学演習とヒント」にあります。

この節の理解度チェック(02-07)

問題: int day=2; switch(day){case 1 -> System.out.println("Mon"); case 2 -> System.out.println("Tue"); default -> System.out.println("Other");} の出力は何ですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

switchに渡しているdayの値を確認します。

ヒント2:注目する部分

case 1とcase 2のどちらが一致するか判断します。

ヒント3:解法の手掛かり

dayが2なのでcase 2のprintln("Tue")を実行します。

模範解答と理由

Tueです。dayは2なのでcase 2の処理を実行します。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 出力がTueと答える。
  2. 1点: case 2が一致すると説明する。

正答例: Tueです。dayは2なのでcase 2の処理を実行します。

部分点の例: この節は正答要素が1つなので部分点はありません。

誤答として扱う具体例: case 1から順番に全部表示してMonとTueを出力すると答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

08. 繰り返し:for / while

同じ処理を何度も書く代わりに、繰り返し処理を利用できます。回数が決まっている場合はfor、条件が続く間繰り返す場合はwhileがよく使われます。

サンプルプログラム

ファイル名:Loops.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Loops.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Loops {
    public static void main(String[] args) {
        for (int i = 1; i <= 3; i++) {
            System.out.println("for: " + i);
        }
        int count = 1;
        while (count <= 2) {
            System.out.println("while: " + count);
            count++;
        }
    }
}

実行結果の例

for: 1
for: 2
for: 3
while: 1
while: 2

コードの読み方と仕組み

for (int i = 1; i <= 3; i++)は、①iを1で初期化し、②i <= 3の間、③波括弧内の処理を実行し、④i++で1増やす、という流れです。i++はi = i + 1の短縮形です。

whileは先に条件を確認し、成立していれば内部の処理を実行します。count++がないと条件が変わらず、終了しない繰り返し(無限ループ)になるおそれがあります。

breakはループ全体を抜け、continueはその回の残りを飛ばして次の繰り返しへ進みます。

間違えやすいポイント

繰り返しを10回にしたいとき、開始値が0か1か、条件が<か<=かによって回数が変わります。紙にiの値を書き出して確認しましょう。

小さな演習

1から10までの整数の合計をforで計算して表示してください。その後whileでも同じ結果になるように作ってください。


独学ステップ:for文を一回ずつ追跡する

次の例は、価格が3件入った配列を先頭から順に調べて合計します。

int[] prices = {100, 200, 300};
int total = 0;
for (int i = 0; i < prices.length; i++) {
    total += prices[i];
}
System.out.println(total);

i は要素の位置を表すための変数です。Javaの配列は0番から始まるため、位置は 0、1、2 となります。

ループ 処理前のi prices[i] 更新後のtotal
1回目 0 100 100
2回目 1 200 300
3回目 2 300 600

次の判定では i が3になり、3 < prices.length が偽になるのでループを抜けます。実際の表示結果は 600 です。

演習: 配列を {120, 80, 150, 50} に変更します。実行前に各回のiとtotalを表に書き、最後に出力を確認してください。

  • ヒント1:4件の配列に使える位置は0〜3です。
  • ヒント2:total += prices[i] は total = total + prices[i] と同じ意味です。
  • 確認基準:予想した合計が400になり、なぜ最後のループが終わるのか説明できることです。

この節の理解度チェック(02-08)

問題: int sum=0; for(int i=1;i<=3;i++){sum+=i;}の終了時のsumはいくつですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

ループの開始値・終了条件・更新値を確認します。

ヒント2:注目する部分

iは1,2,3と変化します。各回のsumを書き出してください。

ヒント3:解法の手掛かり

sumは0→1→3→6と増え、iが4になると終了します。

模範解答と理由

6です。各回のsumは1、3、6になります。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 最終sumを6と答える。
  2. 1点: sumが1、3、6と更新される過程を説明する。

正答例: 6です。各回のsumは1、3、6になります。

部分点の例: この節は正答要素が1つなので部分点はありません。

誤答として扱う具体例: 条件がi<=3なので最後のsumは3と答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

図解:for文の実行順

for文の実行順

図の読み方:初期化→条件判定→本体→更新を繰り返し、条件がfalseで終わります。

09. 配列:複数の値をまとめる

複数人の点数を別々の変数で持つと処理が複雑になります。配列は、同じ型の値を順番にまとめて扱うための仕組みです。

サンプルプログラム

ファイル名:Arrays.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Arrays.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Arrays {
    public static void main(String[] args) {
        int[] scores = {70, 85, 90};
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {
            sum += scores[i];
        }
        System.out.println("人数: " + scores.length);
        System.out.println("合計: " + sum);
        System.out.println("平均: " + (sum / (double) scores.length));
    }
}

実行結果の例

人数: 3
合計: 245
平均: 81.66666666666667

コードの読み方と仕組み

int[] scoresは整数を複数格納する配列です。{70, 85, 90}で初期値を指定します。最初の要素はscores[0]、次はscores[1]です。

配列の要素数はscores.lengthで取得でき、最後の添字はlength - 1です。forでは添字を0から始めi < scores.lengthまで繰り返します。

sum += scores[i]によってそれぞれの点数を合計しています。(double) scores.lengthは整数の要素数を小数型に変換するキャストの例で、平均が整数除算で切り捨てられることを防ぎます。

間違えやすいポイント

存在しない添字、例えば3要素の配列にscores[3]でアクセスするとArrayIndexOutOfBoundsExceptionという実行時エラーになります。

配列の長さはlengthというフィールドであり、文字列のlength()メソッドとは書き方が異なります。

小さな演習

点数を5個に増やして合計と平均を表示してください。さらに80点以上の人数を数える処理を追加してください。


この節の理解度チェック(02-09)

問題: int[] values={10,20,30};のvalues[0]とvalues.lengthはそれぞれいくつですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

配列の添字はどの数から始まるか確認します。

ヒント2:注目する部分

先頭の要素と、要素の総数は別です。

ヒント3:解法の手掛かり

values[0]は最初の10、lengthは3要素の数を表します。

模範解答と理由

values[0]は10、values.lengthは3です。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: values[0]を10と答える。
  2. 1点: values.lengthを3と答える。

正答例: values[0]は10、values.lengthは3です。

部分点: 上記の正答要素が確認できた項目だけを加点します。2項目のうち一部だけ合っていれば、その項目数が得点です。言い換えは可。

誤答として扱う具体例: values[0]は0でlengthは2と答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習: 0点だった各要素について、この節の説明と具体例を確認して再回答します。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

図解:配列の添字と値

配列の添字と値

図の読み方:values[0]は10、values.lengthは3です。添字は0から始まります。

10. メソッド:処理をまとめる

同じ計算を何度も書くと、修正の際に複数箇所を変更する必要が生じます。メソッドは、ひとまとまりの処理に名前を付け、必要に応じて呼び出す仕組みです。

サンプルプログラム

ファイル名:Methods.java。配布教材の examples/02_java_basic/src/main/java/training/basic/Methods.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class Methods {
    public static void main(String[] args) {
        int result = calculateTotal(800, 3);
        System.out.println("合計: " + result);
        greet("佐藤");
    }
    public static int calculateTotal(int price, int quantity) {
        return price * quantity;
    }
    public static void greet(String name) {
        System.out.println("こんにちは、" + name + "さん");
    }
}

実行結果の例

合計: 2400
こんにちは、佐藤さん

コードの読み方と仕組み

calculateTotal(800, 3)はメソッドの呼び出しです。(int price, int quantity)は、メソッドが受け取る値の型と名前を宣言した部分です。

宣言側の price と quantity は仮引数(パラメーター)と呼びます。一方、呼び出し側の calculateTotal(800, 3) に書かれた 800 と 3 は実引数です。

初めはどちらも「引数」と呼ぶことがありますが、コードを読み解く際には区別すると理解しやすくなります。return price * quantity;は計算結果を呼び出し元へ返します。

この返す値を「戻り値」と呼び、intが戻り値の型です。greetは画面に表示するだけで値を返さないので、戻り値の型をvoidと書きます。

staticは、この段階ではmainから直接呼び出せるように付けていると理解してください。インスタンスメソッドとの違いは第03章で説明します。

間違えやすいポイント

returnはメソッドの処理を終えて呼び出し元へ戻る命令でもあります。戻り値が必要なメソッドでreturnを忘れるとコンパイルエラーになります。

小さな演習

2つの整数を受け取って、大きい方を返すmaxというメソッドを作ってください。呼び出し元で戻り値を表示してみましょう。


この節の理解度チェック(02-10)

問題: int add(int a,int b){return a+b;}へadd(2,5)を渡した戻り値はいくつですか。また仮引数はどれですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

呼び出しで渡す値と、定義側で受け取る変数を区別します。

ヒント2:注目する部分

aへ2、bへ5が入り、return a+bを評価します。

ヒント3:解法の手掛かり

戻り値7、仮引数aとb、実引数2と5です。

模範解答と理由

戻り値は7です。定義側のaとbが仮引数、呼び出し側の2と5が実引数です。

この節の自己採点基準(3点満点)

採点条件(各1点)

  1. 1点: 戻り値を7と答える。
  2. 1点: 定義側のa,bが仮引数と答える。
  3. 1点: 呼び出し側の2,5が実引数と区別する。

正答例: 戻り値は7です。定義側のaとbが仮引数、呼び出し側の2と5が実引数です。

部分点: 上記の正答要素が確認できた項目だけを加点します。3項目のうち一部だけ合っていれば、その項目数が得点です。言い換えは可。

誤答として扱う具体例: 戻り値5で、仮引数は2と5だと答える。

合格条件:3/3点。 採点条件で指定した内容を独立に判定します。

復習: 0点だった各要素について、この節の説明と具体例を確認して再回答します。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

11. 総合例:注文金額の計算

最後に、これまで学んだ変数・条件分岐・繰り返し・配列・メソッドを組み合わせます。業務アプリケーションでは、いくつかの基本構文を組み合わせて一つの機能を実現することが一般的です。

サンプルプログラム

ファイル名:PracticeOrder.java。

配布教材の examples/02_java_basic/src/main/java/training/basic/PracticeOrder.java に同じコードを用意しています。

最初はコードを読むだけで終わらせず、Eclipseで実行して出力を確認してください。

package training.basic;

public class PracticeOrder {
    public static void main(String[] args) {
        int[] prices = {500, 800, 300};
        int total = calculateSum(prices);
        System.out.println("商品点数: " + prices.length);
        System.out.println("小計: " + total + "円");
        if (total >= 1500) {
            System.out.println("送料無料です。");
        } else {
            System.out.println("送料が必要です。");
        }
    }
    public static int calculateSum(int[] prices) {
        int sum = 0;
        for (int price : prices) {
            sum += price;
        }
        return sum;
    }
}

実行結果の例

商品点数: 3
小計: 1600円
送料無料です。

コードの読み方と仕組み

pricesには各商品の価格を順に格納しています。calculateSum(prices)へ配列を渡し、合計金額を求めます。

for (int price : prices)は「拡張for文」で、配列内の値を一件ずつpriceへ取り出します。配列の添字が不要なときに便利です。合計が1500円以上なら送料無料、それ以外なら送料が必要と表示します。

これは学習用の単純な仕様です。実際の業務開発では、金額の単位、送料、割引、税金、例外的な商品などを仕様書で確認する必要があります。

間違えやすいポイント

配列の値が空の場合は小計が0円になります。配列そのものがnullの場合は別の対処が必要です。nullや例外への対処は次章以降で扱います。

小さな演習

商品を一つ追加し、送料が必要になる例と不要になる例をそれぞれ確認してください。金額1500円ちょうどのとき、どうなるべきかも仕様として説明してみましょう。


理解を深める:4段階の演習

レベルA:写経

Eclipseで SumPractice クラスを作成し、上のコードを main メソッド内へ入力します。600 と表示されることを確認します。コピー&ペーストはせず、入力記号に慣れるため手で入力してください。

レベルB:一部変更

配列を {120, 180, 250, 450} に変更し、出力が 1000 になることを確認します。表示された結果を実行前に予想し、予想と実際の値を記録します。

レベルC:部分実装

次の TODO を埋め、税込価格を返すメソッドを完成させます。消費税率10%、小数点以下は切り捨てる仕様です。

実行前の注意: これは未完成の練習用コードです。return 0; のままでは 0 が2行表示され、コメントの 110 と 111 は出力されません。自分で includingTax を実装した後に期待結果と照合してください。

public class PricePractice {
    static int includingTax(int price) {
        // TODO: 価格を1.1倍した値を整数にして返す
        return 0;
    }
    public static void main(String[] args) {
        System.out.println(includingTax(100)); // 110 を期待
        System.out.println(includingTax(101)); // 111 を期待
    }
}

レベルD:自力実装

3件の商品の価格を配列に入れ、「100円以上の商品の件数と合計」を表示するクラスを自分で作成します。確認用の入力は {90, 100, 150} とし、期待結果は件数2、合計250です。

まず手書きで処理の順序を書いてから実装してください。

この節の理解度チェック(02-11)

問題: 単価800円の商品を3個注文した場合の税抜小計を計算する式と結果を答えてください。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

単価と数量を区別します。

ヒント2:注目する部分

税抜小計に税率はまだ不要です。

ヒント3:解法の手掛かり

単価800に個数3を掛けると税抜小計になります。

模範解答と理由

式は800 * 3、結果は2400円です。税込価格を求める場合には別途税率や端数処理の条件が必要です。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 計算式800*3を挙げる。
  2. 1点: 2400円と答える。

正答例: 式は800 * 3、結果は2400円です。税込価格を求める場合には別途税率や端数処理の条件が必要です。

部分点の例: 上記の独立した条件のうち満たした項目だけに1点ずつ加算し、満たさない項目は0点です。

誤答として扱う具体例: 800+3=803円を小計と答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

12. よくあるエラーと確認の仕方

エラーが出たら最初に行うこと

エラーが出るとすぐにコード全体を書き直したくなるかもしれません。しかし、まずEclipseの「Problems」ビューと「Console」ビューを見て、エラーが発生したファイル名・行番号・メッセージを確認してください。

コンパイルエラーは、Javaの文法などに問題があって実行できるファイルを作れない状態です。一方、実行時エラーはコンパイルは通っても、実行中に想定外の処理になった状態です。

表示されやすいエラー よくある原因 確認方法
';' expected セミコロンの書き忘れ 指摘された行と直前の行を確認する
cannot find symbol 変数名やメソッド名の誤記 大文字・小文字、宣言位置を確認する
String cannot be converted to int データ型の不一致 ダブルクォーテーションを付けていないか確認する
ArrayIndexOutOfBoundsException 配列の範囲外を参照した 添字が0からlength - 1に収まるか確認する
ArithmeticException: / by zero 整数を0で割った 除数が0になる経路を調べる
Could not find or load main class 起動対象やパッケージが不一致 クラス名、package、実行設定を確認する

エラーの原因を探す練習

int price = "500";を実際に書き、Eclipseがどのように警告するか確認してください。次にint price = 500;へ修正し、問題が消えるか試します。

このように「意図して誤りを作る→メッセージを読む→修正する」練習は、将来の実務で役立ちます。


理解を深める:よくある間違い

== と equals の違い

String a = new String("Java");
String b = new String("Java");
System.out.println(a == b);      // false:別々のオブジェクト
System.out.println(a.equals(b)); // true:文字列の内容が等しい

== を参照型へ使うと原則として「同じオブジェクトを参照しているか」を調べます。文字列の内容比較には equals を使います。

ただし比較元が null の場合には a.equals(...) を呼ぶと例外が発生するため、"Java".equals(a) と書く方法もあります。

整数の割り算と型変換

int a = 5;
int b = 2;
System.out.println(a / b);           // 2
System.out.println((double) a / b);  // 2.5

int 同士の割り算は小数部分が切り捨てられます。(double) は型変換で、ここでは計算前にaを浮動小数点数として扱います。お金の計算に浮動小数点数を安易に使わないことも後続章で学びます。

参照の共有

int[] original = {10, 20};
int[] shared = original;
shared[0] = 99;
System.out.println(original[0]); // 99

shared と original は同じ配列を参照します。shared を変更すると元の配列も変わるため、別配列が必要なら original.clone() などでコピーする必要があります。

この節の理解度チェック(02-12)

問題: ArrayIndexOutOfBoundsExceptionが出た場合、配列が3要素ならアクセスできる添字は何ですか。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

配列の添字は0から始まります。

ヒント2:注目する部分

3要素あっても最大添字は3ではありません。

ヒント3:解法の手掛かり

使えるのは0,1,2で、3は範囲外です。

模範解答と理由

0、1、2です。values[3]は範囲外になります。

この節の自己採点基準(2点満点)

採点条件(各1点)

  1. 1点: 有効な添字を0,1,2とすべて答える。
  2. 1点: 3は範囲外と説明する。

正答例: 0、1、2です。values[3]は範囲外になります。

部分点の例: この節は正答要素が1つなので部分点はありません。

誤答として扱う具体例: 0,1,2,3が有効だと答える。

合格条件:2/2点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

13. 理解度チェック

次の問いに、自分の言葉で説明してみましょう。すぐ答えを見ず、サンプルコードを開いて確認しても構いません。

  1. 変数とは何ですか。intとStringの違いは何ですか。
  2. =と==では何が違いますか。
  3. 整数の7 / 2が3になるのはなぜですか。
  4. 文字列の内容比較でequalsを使う理由は何ですか。
  5. if、else if、elseの処理順序を説明してください。
  6. forとwhileはどのような場面で使いますか。
  7. 要素が3個の配列で、最初と最後の添字はいくつですか。
  8. メソッドの「引数」と「戻り値」は何ですか。
  9. コンパイルエラーと実行時エラーはどう違いますか。
  10. 総合例の送料無料判定を1500円より大きいに変更するには、どこを修正しますか。

理解を深める:提出物

レベルA〜Dのソースコードと実行結果、equalsと==の違いを200字以内で説明した文章、sumの変化を書いた表を提出します。レベルDを講師の補助なく完成できれば本補足の合格です。

この節の理解度チェック(02-13)

問題: String a=new String("x"); String b=new String("x");で、内容が同じか調べる式を答えてください。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

newを使ってそれぞれ別のStringを作っています。

ヒント2:注目する部分

等しい内容と同じインスタンスは別の意味です。

ヒント3:解法の手掛かり

a.equals(b)はtrue、a == b はfalseとなります。

模範解答と理由

a.equals(b)はtrueです。a==bは参照が異なるためfalseです。

この節の自己採点基準(3点満点)

採点条件(各1点)

  1. 1点: 内容比較の式をa.equals(b)と答える。
  2. 1点: a.equals(b)がtrueと答える。
  3. 1点: a==bはfalseで、参照の比較だと区別する。

正答例: a.equals(b)はtrueです。a==bは参照が異なるためfalseです。

部分点の例: 上記の独立した条件のうち満たした項目だけに1点ずつ加算し、満たさない項目は0点です。

誤答として扱う具体例: 別インスタンスだからequalsでもfalseだと答える。

合格条件:3/3点。 採点条件で指定した内容を独立に判定します。

復習方法: 不足した採点条件の用語・具体例をこの節の本文で確認してから再回答してください。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。

14. 次の章へ進む前に

第03章では、クラスとオブジェクトをより詳しく学び、これまで一つのクラスにまとめていた処理を役割ごとに分ける方法を学びます。

その準備として、mainからメソッドを呼び出す流れと、引数・戻り値については説明できるようにしておいてください。

参考資料

学習内容の確認ポイント

新しい構文は必ず「例をそのまま実行する→数値を変える→一部を書き換える→自分で実装する」の順に学びます。

経験者は特に == と String.equals の違い、整数同士の除算、参照型の代入を自分で実行して確かめてください。

学習内容を振り返るための操作確認

この節は、本文の例題や演習が実行できないときに戻るための案内です。最初にファイルの場所と作業中のツールを確認し、コマンドを貼り付ける前に現在のフォルダーを確認してください。

実行する場所と順序

Eclipseで JavaBasics の src にパッケージ training.basic を作成し、節に対応するクラスを選んで実行します。複数のmainを一度に実行しないでください。

成功・失敗の判断

Consoleの出力を教材の実行例と比較します。入力例のあるクラスは入力値と結果をセットで記録します。

途中で止まったとき

main が見つからない場合は実行対象のクラスと public static void main(String[] args) の綴りを確認します。

作業記録の書き方

  1. 利用環境(OS、Java、必要なツールのバージョン)を記録します。
  2. 実際に操作したフォルダー、実行コマンド、入力内容を記録します。
  3. 期待した結果と実際の結果を別々に書きます。失敗時にはエラーメッセージの全文を保管します。
  4. 修正を加えた場合は変更箇所を記録し、同じ手順で再確認します。
  5. 成功を確認できていなければ「未確認」と記載し、成功と推測して次へ進まないでください。

実際の入力、実行結果、原因の説明、演習の提出物がそろって初めて章の学習を完了とします。

この節の理解度チェック(02-14)

問題: 第03章に進む前に、クラスを使わない簡単なプログラムで説明できるべき要素を4つ挙げてください。

本文をいったん閉じ、自分の言葉で解答を書いてからヒント・解答を開いてください。

ヒント1:考える方向

第02章で覚えた基本構文を挙げます。

ヒント2:注目する部分

値の保持、条件分岐、繰り返し、処理の共通化に対応する構文を探します。

ヒント3:解法の手掛かり

変数・if・for・メソッドの4つを挙げ、それぞれの役割を説明します。

模範解答と理由

変数で値を保持し、ifで分岐し、forで繰り返し、メソッドで処理をまとめることです。

この節の自己採点基準(4点満点)

採点条件(各1点)

  1. 1点: 変数による値の保持を挙げる。
  2. 1点: ifによる条件分岐を挙げる。
  3. 1点: for等による繰り返しを挙げる。
  4. 1点: メソッドによる処理の分割・共通化を挙げる。

正答例: 変数で値を保持し、ifで分岐し、forで繰り返し、メソッドで処理をまとめることです。

部分点: 上記の正答要素が確認できた項目だけを加点します。4項目のうち一部だけ合っていれば、その項目数が得点です。言い換えは可。

誤答として扱う具体例: 変数、変数、if、ifの4つで条件を満たしたと答える。

合格条件:4/4点。 採点条件で指定した内容を独立に判定します。

復習: 0点だった各要素について、この節の説明と具体例を確認して再回答します。

次へ進む条件: 正解とその理由を説明できること。説明できない場合はこの節の例題へ戻ってください。