【演習】[Java入門] コンソールアプリを作って基礎知識を習得しよう! ②ヒント編 ~フローチャート作成まで~

本記事は、Javaコンソールアプリの演習問題を解法していくためのヒントを紹介します。
演習問題をどうやって進めていいかわからない難しいと感じている場合に参考にしてください!


演習問題の内容説明を見ていない方は、以下の記事で紹介しているので、そちらを先に御覧ください。


本記事のおすすめ対象者、概要は以下になります。

おすすめ対象者
  • Javaコンソールアプリの演習問題がわからない、ヒントが欲しい
  • プログラムを作成するときに、うまく考えが整理できない
  • コーディングに入る前にプログラマーが思考していることを知りたい
記事の概要
  • すごろくゲームをシミュレーションする
  • シミュレーションしたゲームの流れを図にする
  • ゲームの流れを簡略化した図にする
  • フローチャートを作成しコーディングに入る準備を整える

本記事では、頭の中にある作りたいもののイメージを、具体的なプログラムの流れに可視化する方法を紹介します。

プログラムを作成したいけど何から始めればよいか分からない、いつもプログラムを作成している途中で頭が混乱してしまうなどお悩みの場合は、本記事の内容を参考にして、イメージや進め方の手順を明確にしましょう

それでは、演習問題のヒントを見ていきましょう!

目次

すごろくゲームの流れを図に書いてみよう!

最初にやることは、すごろくゲームの開始から終了までの一連の流れを図に書いてみましょう。

頭の中でゲームをシミュレーションして、その流れを紙に書き出していきます。
この書き出した流れ(処理の流れ)が、プログラムのアルゴリズムになりますので!

この工程はすごく大切で、頭の中のイメージを図に書くことで、考えの整理ができます。
そして、視覚化することで、忘れても見直しが簡単にできて、新たな発想の手助けにもなります。

プログラム作成時に、以下の状況で困ってしまう人は、流れを図にする工程を大切にしましょう。

  • 何から手をつけてよいか分からない
  • 頭の中で考えていることがうまく整理できない
  • 途中で何をしているか見失ってしまう

シミュレーションしたイメージを図にする

まずは、これからプログラムで作成するモノのイメージを膨らませていきましょう。
今回は、すごろくゲームが作成するモノになります。

シミュレーションするときのポイントは、

  • 最初から終わりまでの流れを順番に追っていく
  • 流れの中で起こる事を客観的に捉える ※第三者的に。俯瞰で。わかりにくいですよね。。。

という点が重要です。


それでは、ゲーム開始からゴールまでをシミュレーションをしてみましょう。
以下のイメージを参考にしてください。※すみません、ちょっと長くなってしまいました。

シミュレーションゲーム開始
シミュレーションゲーム1回目の行動
シミュレーションゲーム2回目の行動
シミュレーションゲーム3回目の行動

どうでしょうか?ゲームの流れをイメージできましたか?

シミュレーションができたら、次は、この流れをもう少し簡略な図で表現していきます。

シミュレーションの流れを簡略な図にする①

それでは、先ほどシミュレーションした流れを、客観的に捉えて簡略な図を書いていきましょう。

と言っても客観的に捉えてって難しいですよね。
実際に簡略にした図を見た方がわかると思うので、以下のイメージを見てください!

ゲームの流れを簡略にした図
シミュレーションしたゲームの流れを簡略にした図

シミュレーションした流れを、簡略な図にするイメージがわかったでしょうか?

この演習問題のすごろくゲームは、ざっくりと

  1. 移動する処理
  2. 移動後のマップを書く処理
  3. イベントが発生する処理
  4. イベント後のマップを書く処理
  5. 最終的にゴールする処理

という処理が順々に行われていることが見えてきたと思います。

シミュレーションの流れを簡略な図にする②

先ほど簡略した図を、書き方を工夫してもう少し簡単にしてみましょう。
簡単にした方が、見やすくて情報の整理がしやすいので!


同じ処理の繰り返しを簡略に書く

ポイント

同じことを繰り返している部分を「繰り返し処理」の書き方に変える。

まずは、①1回目の行動②2回目の行動 を簡略に書いていきます。

書き変える前の流れを見てみると、①1回目の行動②2回目の行動 は、
移動、終了選択」から「マップを書く※イベント発生後」まで同じことをしています。
※下のイメージ参照 オレンジの点線で囲っている部分

1回目と2回目の流れを繰り返し処理の書き方に変更する前
1回目と2回目の流れを繰り返し処理の書き方に変更する前
  1. 移動、終了選択
  2. 移動を選択した場合
    ※キーボードから1を入力した場合
    1. マップを書く ※移動後
    2. イベント発生
    3. マップを書く ※イベント発生後
  3. 終了を選択した場合
    ※キーボードから9を入力した場合
    1. 最初に戻る

この同じことをしている部分を、繰り返して行う表現にしてみましょう。

マップを書く※イベント発生後」の後に、「移動、終了選択」に戻って同じことを繰り返すように書きます。
※下のイメージ参照

1回目と2回目の流れを繰り返し処理の書き方に変更した後
1回目と2回目の流れを繰り返し処理の書き方に変更した後

①1回目の行動 と ②2回目の行動 を繰り返し処理の表現を使って書くとこんな感じになります。

流れを分岐させて簡略に書く

ポイント

あるケースの場合は、別の流れにしたい部分を「処理分岐」の書き方に変える。

さらに先ほど簡略した①1、2回目の行動②3回目の行動 を簡単に書いていきます。

2つの流れを比べてみましょう。
ほとんど同じ流れですが、最後の 「マップを書く※イベント発生後」 と 「ゴール」の部分が違っています。
※下のイメージ参照 緑の点線と青の点線の部分

1、2回目と3回目の流れを処理分岐の書き方に変更する前
1、2回目と3回目の流れを処理分岐の書き方に変更する前

同じ流れの部分は、①1、2回目の行動②3回目の行動 で統一させます。
あとは、違っている部分を、分岐させる表現にしてみましょう。

イベント発生」の後に、
マップを書く※イベント発生後」に進むパターンと「ゴール」に進むパターンを分岐させて書きます。
分岐させる場合は、分岐の条件も必要です!
※下のイメージ参照

すごろくゲームの流れを簡略化した図
1、2回目と3回目の流れを処理分岐の書き方に変更した後

①1、2回目の行動②3回目の行動処理分岐の表現を使って書くとこんな感じになります。

完成!すごろくゲームの流れを図にする

ポイント
  • 同じことを繰り返している部分を「繰り返し処理」の書き方に変える。
  • あるケースの場合だけ別の流れにしたい部分を「処理分岐」の書き方に変える。

それでは、繰り返し処理処理分岐 の表現を用いて簡略化した図を確認しましょう。
※下のイメージ参照

すごろくゲームの流れを簡略化した図

いかがでしょうか?
すごろくゲームの流れが掴めましたか?

シミュレーションして流れを図に書いて簡略化すると、全体の流れが把握しやすくなったと思います。

フローチャートを書く

簡略化した図をプログラムのフローチャートにしてみましょう。

フローチャートは、プログラムの設計図です。
フローチャートを作成するポイントは以下となります。

ポイント
  • プログラムは基本的に上から下に流れていき、上に戻れないことを意識して書く。
    ※上に戻る場合は、繰り返し処理で戻る
  • 必ずプログラム終了に到達するように書く。
  • 繰り返し処理条件範囲がわかりやすい書き方にする。
  • 処理分岐条件分岐後の合流地点がわかりやすい書き方にする。

それでは、上記のポイントを意識してフローチャートを確認しましょう。
※下のイメージ参照

すごろくゲームのフローチャート
すごろくゲームのフローチャート

簡略化した図では「プログラム終了」、「最初に戻る」などの途中でつながりが切れている部分も、必ずどこかのルートにつながるようにしています。

簡略化した図より少し複雑になりましたが、プログラムの大まかな設計図ができました!

フローチャートに沿ってコーディングしていけば、途中で迷うことなくプログラムが作成できます。

まとめ:イメージを具体化してコーディングの準備を整えよう

本記事では、Javaコンソールアプリの演習問題を進めていくためのヒントを紹介しました。

最初のステップとして、フローチャートを作成するまでの方法を説明しました。

フローチャートを作成する過程で、頭の中で考えていたイメージが整理されて、何をどうすればよいのか、何が必要なのか、何がわかってないのか、などがはっきりしてきます。

フローチャートまで作成できていれば、プログラムの流れが可視化されていますし、考えも整理できているので、この先のコーディング中に迷うことが少なく進めていけます。

それでは、演習問題のコーディングにチャレンジしてみてください!


質問や相談がある方は、コメントを頂ければと思います。

みなさん本日も頑張りました。お疲れ様でした!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SE歴16年。
システム開発会社で開発部長をしています。

【主な仕事内容】
 ・Webシステム開発
 ・新入社員育成
 ・社員採用

IT業界が好きで、プログラミングが好きです。
社内の新入社員育成に情熱を注いでいます。

コメント

コメントする

CAPTCHA


目次
閉じる