Java 5 - プログラムの制御構造

順次制御

プログラムは、通常、上から下へ、左から右へと順番に実行されます。これが順次制御です。

分岐制御

分岐制御は、特定の条件に基づいて異なるコードブロックを実行するために使用されます。主に単一分岐、二分岐、および多分岐に分類されます。

if-else文

if-else文は、条件が真であるか偽であるかに基づいてコードを実行します。if-else文の中に別のif-else文をネストすることもできますが、可読性を維持するためにネストは3層以内に留めることを推奨します。

switch文

switch文は、式の値に基づいて複数のケースから一つを選択して実行します。

3つの重要な使用上の注意点

特に、注意点2に注目してください。

注意点1: 文字型の使用

文字型(char)は、内部的に整数型(int)として扱われるため、caseラベルに文字リテラルまたは整数値を指定できます。

        char inputChar = scanner.next().charAt(0);
        switch (inputChar) {
            case 65: // 'A'のASCIIコード
                System.out.println("大文字Aです");
                break;
            case 'b':
                System.out.println("小文字bです");
                break;
            default:
                System.out.println("その他の文字です");
        }
練習問題: 季節の判定

ユーザーが入力した月に基づいて、季節を表示するプログラムを作成します。

        Scanner scanner = new Scanner(System.in);
        System.out.print("月を入力してください (1-12): ");
        int month = scanner.nextInt();
        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.println("春");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬");
                break;
            default:
                System.out.println("無効な月です");
        }

ループ制御

ループ制御は、特定の条件が満たされるまで、または指定された回数だけコードブロックを繰り返し実行するために使用されます。

forループ

forループは、繰り返し回数が事前にわかっている場合に適しています。

プログラミング思想(先固定後柔軟)

「先固定後柔軟」とは、開発の初期段階では具体的な値(例: 1から100まで)を直接使用し、後で変数に置き換えて柔軟性を高めるという考え方です。これはコードの再利用性と保守性を向上させる重要な概念です。

        int counter = 0;
        int startNumber = 1;
        int endNumber = 100;
        for (int currentNumber = startNumber; currentNumber <= endNumber; currentNumber++) {
            if (currentNumber % 9 == 0) {
                System.out.println(currentNumber);
                counter++;
            }
        }
        System.out.println("9の倍数の個数: " + counter);

whileループ

whileループは、ループの先頭で条件を評価します。条件が真の間、ループは継続されます。

do-whileループ

do-whileループは、ループの末尾で条件を評価します。そのため、ループ本体は少なくとも1回は必ず実行されます。

多重ループ

多重ループは、ループの中に別のループをネストすることを指します。これにより、多次元データの処理や複雑なパターンの描画が可能になります。

練習問題: 中空のピラミッド

ユーザーが指定した行数の中空のピラミッドをコンソールに出力するプログラムです。

package ControlStructuresDemo;

import java.util.Scanner;

public class PyramidDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("ピラミッドの高さを入力してください: ");
        int rows = scanner.nextInt();

        for (int i = 1; i < rows; i++) {
            // スペースを出力して中央揃えにする
            for (int j = 1; j <= rows - i; j++) {
                System.out.print(" ");
            }
            // 最初の行は1つのアスタリスク
            if (i == 1) {
                System.out.println("*");
            } else {
                // 最初と最後のアスタリスク
                System.out.print("*");
                // 中間のスペース
                for (int k = 1; k <= (i - 2) * 2 + 1; k++) {
                    System.out.print(" ");
                }
                // 最後のアスタリスク
                System.out.println("*");
            }
        }
        // ピラミッドの底辺
        for (int i = 0; i < 2 * rows - 1; i++) {
            System.out.print("*");
        }
    }
}

break文

break文は、最も内側のループまたはswitch文から即座に抜け出すために使用されます。ラベル付きbreak文も存在しますが、可読性を損なう可能性があるため、実際の開発では注意して使用する必要があります。

        outerLoop:
        for (int i = 0; i < 5; i++) {
            innerLoop:
            for (int j = 0; j < 5; j++) {
                if (i == 2 && j == 2) {
                    System.out.println("ループを中断します");
                    break outerLoop; // outerLoopラベルで指定されたループを中断
                }
                System.out.println("i: " + i + ", j: " + j);
            }
        }

continue文

continue文は、ループの残りの部分をスキップし、次の繰り返しに進むために使用されます。break文と同様に、ラベルを使用して特定のループを指定することもできます。

        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue; // 偶数の場合、以降の処理をスキップして次の繰り返しに進む
            }
            System.out.println("奇数: " + i);
        }

return文

return文は、メソッドの実行を終了し、呼び出し元に戻ります。メソッドが値を返す場合、return文の後にその値を指定します。

タグ: Java 制御構造 if文 switch文 forループ

7月27日 19:58 投稿