こんにちは。ECF代表のヒガです。
本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。
はじめに
アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには、プログラム言語の文法の知識とともにアルゴリズムの考え方を身につけることが必要になります。
アルゴリズム技法習得の肝は「繰り返し」の活用です。この連載では、簡単な題材で繰り返しを使うアルゴリズムの基本パターンを練習していきます。
演習問題の一覧や勉強スタイルについてのアドバイスはこちらからどうぞ。
Q026 配列の内容をカンマ区切りで表示
配列に格納されたデータを先頭から順にカンマ区切りで表示させてください。ただし、操作対象の配列はプログラムの先頭で宣言し、適当な初期値を代入してください。
初期値として {10, 20, 30, 40, 50} を使って整数型(Javaではint型)配列を準備した場合の実行例は次のとおりです。
配列の要素やカンマを1つずつ表示する方法もありますが、今回は繰り返しを使って実現させてください。
ヒント
Q024の配列の表示と、Q020のカンマ区切り表示の組み合わせです。
解答例と解説
考え方
まずはカンマ区切り表示のアルゴリズムを思い出しましょう。実行例から、Q020(余計なカンマが付かないパターン)が参考になるようです。
そして次に「何を繰り返す」かを考えます。今回の場合は基本的には
- 配列のデータ要素とカンマを表示する(改行無し)
を繰り返すことになります。配列のデータ要素は繰り返しの中で先頭から最後まで、添字を指定しながら順に表示します。カンマは最後の要素の後以外で表示するようにします。
以上を箇条書きでまとめると、
- 次の動作を配列の要素数の分繰り返す
- 【カウンタ変数】番目のデータ要素を表示する
- カウンタ変数の値が最後の要素か判断する
- 最後の要素でない場合、カンマを表示する
という流れになります。
フローチャート例
このフローチャートでは、配列の添字は「1」から始まるとしています。最後の要素の添字は配列の要素数と一致します。表示ループは、1から要素数まで(カウンタ変数iが要素数を超えたら終了)の繰り返しとなります。
また、カウンタ変数iがちょうど要素数(配列最後の要素の添字)の場合はカンマを表示しない分岐に進みます。
Javaでの実装例
public class Q026 { public static void main(String[] args) { int[] a = {10, 20, 30, 40, 50}; // 操作対象配列の宣言と初期化 for (int i = 0; i < a.length; i++) { System.out.print(a[i]); if (i != a.length - 1) { // 添字の最後でないか System.out.print(','); // カンマを表示 } } } }
Javaでは配列の添字は「0」からスタートしますので、カウンタ変数iの初期化や継続条件式は、上記のフローチャートからはそのように変更しています。配列の要素の添字は0から4(要素数 - 1)なので、0から4までの5回の繰り返しです。
おわりに
本連載において、ここまでのJava実装例では配列にint型(整数型)の値を初期値として代入していました。これは単に一例で、宣言・初期化する配列がdouble型でもString型でも自作のクラス型でも、配列であれば基本的には同じアルゴリズムが適用可能です。
あくまでポイントは繰り返しのカウンタ変数と配列の添字の関係です。そこだけをしっかり押さえておきましょう。そして実装を試されている方で余裕がある方は、ぜひ整数型以外の型の配列でも動作するのか試してみてください。
次回はこちらです。
合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。