改行のタイミング


多重ループで出力をする場合は、改行のタイミングも重要です。

多重ループの基本」では特に言及しませんでしたが、出力した時に見やすいようなタイミングで改行をしていました。

1.改行のタイミング


下記は「多重ループの基本」の前半でも紹介した「九九の1~5の段の計算を出力する」プログラムです。


九九の計算(C)

#include <stdio.h>
int main(void){
    int i, j;

    for(i=1; i<=5; i++){
        for(j=1; j<=9; j++){
            printf("%d×%d=%d ",i,j,i*j);

        }
        printf("\n");
    }
    return 0;
}

九九の計算(Java)

public class Kuku {
    public static void main(String[] args) {
        
        
        for(int i=1; i<=5; i++){
            for(int j=1; j<=9; j++){
                System.out.print(
                i+"×"+j+"="+(i*j)+" ");
            }
            System.out.println();
        }
    }    
}


出力結果

1×1=1  1×2=2  1×3=3  1×4=4  1×5=5  1×6=6  1×7=7  1×8=8  1×9=9 

2×1=2  2×2=4  2×3=6  2×4=8  2×5=10 2×6=12 2×7=14 2×8=16 2×9=18 

3×1=3  3×2=6  3×3=9  3×4=12 3×5=15 3×6=18 3×7=21 3×8=24 3×9=27 

4×1=4  4×2=8  4×3=12 4×4=16 4×5=20 4×6=24 4×7=28 4×8=32 4×9=36 

5×1=5  5×2=10 5×3=15 5×4=20 5×5=25 5×6=30 5×7=35 5×8=40 5×9=45 

 

このプログラムでは、九九の各段の終わりで改行しています。各段の区切りが分かるため、改行せずに出力するよりも見やすいですね。

では、どのタイミングで改行しているのかですが、難しく考える必要は全くありません。

 

このプログラムでは、外側のループ(i)が九九の各段を表し、各段の計算を1行ごとに出力しています。

各段の最後に改行したいのですから、外側のループの最後(内側のループが終わった後)に改行の処理を入れればよいのです。

(Cでは「printf("\n");」、Javaでは「System.out.println();」の部分)

 

外側のループを「行」と考えれば、簡単に良いタイミングで改行できるというわけですね。

2.図形の描画と改行


この改行を利用して、今度は文字(アスタリスク:*)で図形を描いてみます。

下記は「2つの自然数 a , bを入力後、『*』で縦a個 × 横b個の長方形を描く」プログラムです。


長方形の描画(C)


#include <stdio.h>

int main(void){
    int i, j, a, b;
    printf("縦の長さ:");
    scanf("%d", &a);
    printf("横の長さ:");
    scanf("%d", &b);

    for(i=0; i<a; i++){
        for(j=0; j<b; j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

長方形の描画(Java)

import java.util.Scanner;
public class Rectangle {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a, b;
        System.out.print("縦の長さ:");
        a = sc.nextInt();
        System.out.print("横の長さ:");
        b = sc.nextInt();
        
        for(int i=0; i<a; i++){
            for(int j=0; j<b; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }    
}


出力結果(例)

縦の長さ:3

横の長さ:7

*******

*******

*******

 

縦の長さ=外側のループ(i)、横の長さ=内側のループ(j)となるので、簡単に描くことができます。