1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

【JAVA入門】多重ループ(ループのネスト構造)について

Pocket

はじめに

JAVA言語では、ループ処理を行う時に「for文」や「while文」を用いると以前に説明しました。

【Java入門】繰り返し処理をマスターしよう!(forとwhile) 

【Java入門】繰り返し処理をマスターしよう!(forとwhile)

今回は多重ループ(ループ文の中にループ文を入れるネスト構造)について説明していきます。

多重ループ(ループのネスト構造)

ループ文は、1重ループ(for文1つだけ)であれば複雑ではないためコードを見る分にも理解もしやすいです(可読性が高い)。

多重ループではネストが深くなればなるほど複雑となり、プログラミングする上で間違い易くもなりますし、可読性も落ちます。

ただ、可読性が落ちるからと言ってすべてを1重ループにするわけにもいかなく、ネスト構造にした方が分かりやすくスッキリしている場合もあります。

今回は、ループのネスト構造でよく用いられる身近な例で理解していきましょう。

掛け算の九九でネスト構造を理解しよう!

皆さんも知っているであろう掛け算の九九。九九は以下の様に計算していきますよね。

1の段:1×1、1×2、1×3 ‥‥ 1×9

2の段:2×1、2×2、2×3 ‥‥ 2×9

3の段:3×1、3×2、3×3 ‥‥ 3×9

9の段:9×1、9×2、9×3 ‥‥ 9×9

これらの九九、全ての計算式と答えを出力しようとする場合どのようにしたらいいでしょうか。

重ループのみで九九を実装

ネストを深くし過ぎないということを意識しすぎて、1重ループで九九を実装しようとした場合、以下のように非常に長いコードを書かなければなりません。

出力結果は以下となりました。

(出力結果は長すぎるので途中で切っています。)

1重ループのみで九九を実現しようとした場合、「1の段用」「2の段用」「3の段用」‥‥「9の段用」と9つのfor文を用意しないといけません。

⇒今回の例だと、40行近くプログラミングする羽目になります。

1つ1つのfor文を見るだけなら

「このfor文は、”1″を定数として1~9を順に掛けて計算している」

「このfor文は、”2″を定数として1~9を順に掛けて計算している」

と理解し易いかもしれませんが、修正しようとした際に大幅に手がかかりますし、似た内容が多いだけに間違いも発生しやすいです。

⇒例えば、1の段のfor文をコピーして2~9の段まで作った場合に数字を変更するのを忘れる等。

2重ループで九九を実装

先ほど1重ループで実装した九九が、2重ループにしただけで非常にスッキリしたコードで実現することが出来ます。

出力結果は以下となりました。

(出力結果は長すぎるので途中で切っています。)

for文1つで九九を実装しようとしていた時に比べて、圧倒的にコードがスッキリしているのがおわかりでしょうか。

⇒先ほどと違い、たった10行程度で実装できています。

この2重ループの説明をすると、

①外側のfor文で、まず「iの値が1」から開始。

②内側のfor文に入り、「j」の値が「1~9」まで順にループされる。

9回ループすると終了し、内側のfor文を抜ける。

③外側のループ1周目終わり、継続式によりインクリメントされ「iの値が2」となる。

条件式(i <= 9)を満たしているので外側のfor文はまだ継続される。

⑤内側のfor文に入り、「j」の値が「1~9」まで順にループされ、9回ループすると終了。

⇒②の処理と一緒

⑥外側のループが2周目終わり、インクリメントされ「iの値が3」となる

⇒③の処理と一緒

⑦「iの値が9以内」まで続く。

このように、それぞれの段につき9回ループして(1~9を掛ける)計算する処理を実装することが出来ます。

まとめ

いかがでしたでしょうか?

今回は多重ループについて、九九を例に説明してきました。

1重ループに比べてコードがスッキリすることは出来ましたが、先ほども説明したようにネストが深くなればなるほど複雑になりがちですし、間違いは発生しやすいです。

先ほどの例で、内側のfor文では「j」はもちろんのこと「i」もスコープ範囲内です。

j」と記述しようとしていた所に「i」と記述してもエラーにはならないので、気づかずに実装して実行したら想定外の動作をするということもあり得えます。

プログラミングする際には注意しましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

WebCampは、一ヶ月の短期集中でWebデザイン、プログラミングスキルを習得するスクールです。学習効果の高い反転授業(自主学習でインプット、講義でアウトプット)を採用し、年間1000名を輩出しています。

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ

3WEB塾

WEB塾
ページ上部へ戻る