【アルゴリズム入門 Q028】指定範囲のデータのみ表示

アルゴリズム アルゴリズム

こんにちは。ECF代表のヒガです。

本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。

はじめに

アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには、プログラム言語の文法の知識とともにアルゴリズムの考え方を身につけることが必要になります。

アルゴリズム技法習得の肝は「繰り返し」の活用です。この連載では、簡単な題材で繰り返しを使うアルゴリズムの基本パターンを練習していきます。

演習問題の一覧や勉強スタイルについてのアドバイスはこちらからどうぞ。

【プログラミング初心者向け】アルゴリズム入門 演習問題集 〜 繰り返しをマスターしよう!
こんにちは。ECF代表のヒガです。 プログラミング初心者向けアルゴリズム演習問題の連載記事まとめです。日頃のプログラミング学習、講義、研修等での演習にご活用ください。 「繰り返しアルゴリズム」をマスターしよう アルゴリズムとは、コンピュ...

Q028 指定範囲のデータのみ表示

配列に格納された複数の数値データについて、指定した範囲(最小値と最大値を指定)のデータのみを先頭から順に表示させてください。ただし、操作対象の配列はプログラムの先頭で宣言し、適当な初期値を代入してください。また、範囲の最小値と最大値についても、プログラムの先頭でそれぞれ変数に代入することで指定してください。

初期値として {40, 10, 30, 50, 20} を使って整数型(Javaではint型)配列を準備し、さらに最小値に「20」、最大値に「39」を指定した場合の実行例は次のとおりです。

指定の範囲内(20≦x≦39)である「30」と「20」が表示対象となっています。

ヒント

Q025の「条件を満たしていれば表示」と同じパターンです。表示するときの条件式を考えましょう。

なお、プログラム実装で数値範囲を条件式で表すには「最小値≦対象データ かつ 対象データ≦最大値」のように、論理演算を使います。論理演算(かつ、または、〜でない)についての詳細は、使用しているプログラム言語の解説サイトや解説書を参照してください。

解答例と解説

考え方

まず最初に「何を繰り返す」かを考えます。今回の場合は

  • 配列のデータ要素を表示する

を繰り返すことになります。ただし今回は無条件に表示するわけではありません。指定の範囲内のものだけです。つまり、指定の最小値・最大値で表現した条件式で判断を行った上で表示を行います。

箇条書きでまとめると、

  1. 次の動作を配列の要素数の分繰り返す
    1. 「指定の最小値≦【カウンタ変数】番目のデータ要素≦指定の最大値」となっているか
      1. 真(Yes)の場合、以下の処理を行う
        1. 【カウンタ変数】番目のデータ要素を表示する
        2. 改行する

という流れになります。

フローチャート例

データ要素を表示する・しないの条件分岐を繰り返す、という形になっています。

Javaでの実装例

public class Q028 {
    public static void main(String[] args) {
        int[] a = {40, 10, 30, 50, 20}; // 操作対象配列の宣言と初期化
        int min = 20; // 指定の範囲(最小)
        int max = 39; // 指定の範囲(最大)
        
        for (int i = 0; i < a.length; i++) {
            if (min <= a[i] && a[i] <= max) { // 指定の範囲か
                System.out.println(a[i]);
            }
        }
    }
}

Javaでは配列の添字は「0」からスタートしますので、カウンタ変数iの初期化や継続条件式は、上記のフローチャートからはそのように変更しています。配列の要素の添字は0から4(要素数 - 1)なので、0から4までの5回の繰り返しです。

8行目の条件式では、数値の範囲を判断するために、2つの比較演算を論理演算で結びつける形で表現しています。

おわりに

前回のQ027に引き続き、繰り返しと条件分岐の組み合わせでした。

今回は数値範囲を表す条件式を紹介しましたが、判断アルゴリズムに使える「条件式」のパターンもいろいろあります。単純な比較の条件式に慣れてきたら、複数の比較を組み合わせる論理演算(かつ、または、〜でない)の練習にも挑戦していきましょう。

次回はこちらです。

【アルゴリズム入門 Q029】配列データのコピー
こんにちは。ECF代表のヒガです。 本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。 はじめに アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには...

合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。

ECFエデュケーション
タイトルとURLをコピーしました