【プログラミング初心者】No1.出力データ件数が一定数を超えたら繰り返しを中断する。


プログラミングの基本的の1つである繰り返しの確認と、実務で必要な中断について学習しましょう。サンプルソースはJavaScript/Pythonで書いていますが、PHP, Java, Ruby,Go, C#でも使えますのでチャレンジしてみてください。
「目次」を開いて、すぐに演習に手をつけてから説明を読んでいいですし、説明を読んでから演習に進んでも良いのでしっかりと理解してください。実務に着いた時に詰んでしまう可能性が高いので・・・
なお、この演習についての考え方とか諸々は、こちらを参照してください。
演習内容
概要(作って欲しいプログラムの内容)
プログラム内に指定されてされた入力データを標準出力に出力する。ただし以下の条件の該当した場合は、出力を中断する。また入力データが0件の場合は、出力は行わない。
入力データ
出力用データ
入力データはプログラム内に以下の順番で配列 / リスト形式で指定されていること。※
- data001
- data002
- data003
- data004
- data005
※ データの形式は、記載するプログラム言語に応じる
出力件数
本件では、3件を出力件数とする。
出力データ
標準出力に以下の形式で出力する。
出力内容 | 入力データ無し | 入力データあり | |
想定件数以内 | 想定件数より多い | ||
出力レコード | – | record : 入力データの内容 | |
出力件数 | output count:0 | output count:出力件数 |
詳細仕様
# | 名称 | 詳細 |
1 | 準備処理 | ・入力データ #出力用データ、出力件数を設定する。
・出力件数を初期化する |
2 | 出力処理 | ・入力データ #出力用データ が1件以上指定されている場合、 1レコードづつ出力する。
・出力する内容は、出力データ #出力レコードを参照 ・出力ごとに件数を1づつ加算する。 ・出力件数が入力データ #出力件数より大きくなる場合、以降の繰り返しを中断する。 |
3 | 出力件数の出力 | ・#2で求めた件数を標準出力に出力する。
・出力する内容は、出力データ #出力件数を参照 |
実装上の補足
本件を実装にあたり以下の点について留意すること
- 出力件数は、定数で宣言すること。可能であれば標準入力から値を取得すること。
- 繰り返し終了後に出力件数を出力すること
初心者が覚える「繰り返し」
ほとんど全てのプログラミング言語に「繰り返し」を行う文法があります。
では、実務での「繰り返し」はどのようなシーンで使われるのでしょうか?
もちろん無数にあるのですが・・・それはレベルの高いエンジニアの問題です。
プログラミング初心者の方、実務経験が少ない方にそのような仕事はまず回ってきません。
おそらくまともな会社に所属できていれば2年くらいは気にする必要はありません。

つまり与えられる仕事は限定的であり、用途は想像よりずっと狭くなるはずです。
- プログラムから利用するデータが1件以上あり、特定の条件に該当するかを判定したい。
- プログラムから利用するデータが1件以上あり、何らかのデータ形式で出力したい。
日本語にすると、フワっとしますし、想像ができないかもしれませんが、プログラムのパターンとしては1、2パターンというところ。
この演習で慣れば、この先この手の問題に困ることはありません。頑張って覚えていきましょう!
この演習のポイント「繰り返しの中断とは?」
業務では、一定の条件に一致した場合に繰り返しを中断します。(実際には、ほぼ中断を想定します)
ではどのような場合に繰り返しを中断し、その際の注意事項にどのようなものがあるのでしょうか?
下図は繰り返しの中断のイメージです。その「スキップ」と「中断」では全く意味が違うので注意してください。

繰り返しの中断についてのポイントは、以下の3つです。演習でしっかりと確認していきましょう。
- 中断するか判定する条件文は、繰り返しの上部に記載する。
- 繰り返しを中断するか、処理自体を中断するかは判断を仰ぎ、自分で判断しない。
- 繰り返し終了後、中断しても正しく動作するように記載する。
サンプルソース
JavaScript編
const LIMIT_OUTPUT_COUNT = 3;
const INPUT_VALUES = ['data001','data002','data003','data004','data005'];
let output_count = 0;
for (const item of INPUT_VALUES){
if(LIMIT_OUTPUT_COUNT <= output_count){
break;
}
console.log("record:" + item);
output_count++;
}
console.log("output count:" + output_count);
なお、paizo.ioにソースコードを載せていますので、こちらも利用してみてください。

Python編
LIMIT_OUTPUT_COUNT = 3;
INPUT_VALUES = ['data001','data002','data003','data004','data005'];
output_count = 0;
for item in INPUT_VALUES:
if LIMIT_OUTPUT_COUNT <= output_count:
break
print(f'record:{item}')
output_count+=1
print(f'output count:{output_count}')
なお、paizo.ioにソースコードを載せていますので、こちらも利用してみてください。