【プログラミング初心者向け】アルゴリズム入門 演習問題集 〜 繰り返しをマスターしよう!

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

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

プログラミング初心者向けアルゴリズム演習問題の連載記事まとめです。日頃のプログラミング学習、講義、研修等での演習にご活用ください。

「繰り返しアルゴリズム」をマスターしよう

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

アルゴリズム技法習得の肝は「繰り返し」の活用です。この連載では、簡単な題材で繰り返しを使うアルゴリズムの基本パターンを練習していきます。実践のプログラムは、この基本パターンの組み合わせかちょっとした応用で解決できるはずです。この連載でしっかりマスターしましょう。

演習問題の構成について

各問題は以下の構成になっています。

  • 問題文(実行例)
  • ヒント
  • 解答例と解説
    • 考え方
    • フローチャート例
    • Javaでの実装例

問題はすべて標準出力に文字を表示するプログラムを題材としています。実行例はWindowsコマンドプロンプトでの実行例を掲載していますが、基本的にはどの実行環境でも同じだと思っていただいて大丈夫です。

解答例にはフローチャートプログラム実装Java)を掲載しています。自身の勉強スタイルに合わせて、片方、または両方を参照してください。

各記事中の解答例の実装例ではプログラム言語にJavaを用いていますが、アルゴリズムの考え方は特定のプログラム言語によりません。自身の必要とするプログラム言語を用いて演習を行ってください。Javaについての解説文となってはいますが、Java固有の文法を説明しているわけではありません。適宜自身のプログラム言語での書き方に読み替えることができます。

また、解答例はあくまで「例」です。自身の導き出した解答が正解かどうかは自身で論理的に判断してください。論理的思考力は、これもまたアルゴリズムを考えるときに必要な能力となりますので、その練習でもあります。

あなたに合った勉強スタイルを見つけよう

この問題集を活用しようとしている皆さんは、プログラミング初心者がほとんどかと思います。学習方法についても試行錯誤している最中ではないでしょうか。そこで、典型的な勉強スタイルを2パターンご紹介します。自身の生活環境を考慮しつつカスタマイズして実行してみてください。

標準的な勉強スタイル

  1. 問題をよく読み、「やりたいこと」をしっかり理解、イメージする。【要件確認フェーズ】
  2. 「やりたいこと」の実現手順を日本語の文章で箇条書きする。【設計フェーズ】
  3. 箇条書きをインプットとし、フローチャートやプログラムを作成する。【実装フェーズ】

システム開発の現場での流れに沿った順番です。時間に余裕があれば、この続きとして「問題を自分でアレンジ(仕様の変更)して、フローチャートやプログラムを再作成する」というのもいいでしょう。

自力では難しい場合の勉強スタイル

  1. 問題をよく読み、「やりたいこと」をしっかり理解、イメージする。
  2. 解答例の考え方・箇条書きをよく読み、「やりたいこと」が実現できていることを理解する。
  3. フローチャートやプログラムの解答例をトレース(流れを1処理ずつ確認)し、「やりたいこと」が実現できていることを理解する。
  4. 箇条書きをインプットとし、フローチャートやプログラムを改めて自身で作成する。(解答例を見ながら写すのもOK

そもそもプログラミング初心者だと、アルゴリズムを自力で考えることが困難な場合も多いでしょう。これはプログラムの典型パターンがまだ脳に定着していないからです。そこで、スポーツ練習の反復練習と同じ要領で、各問題で提示された解答例を次々写していきましょう

学生時代のイメージだと答えを写すのは悪いことだと考えがちですが、見本のプログラムを写していく学習方法は「写経」とも呼ばれ、開発業界では定番のやり方です。演習問題集全体について一通り写経が完了できれば、そこであなたの脳にはアルゴリズムの典型パターンがインプットされているはずです。そこで改めて最初から演習に取り組んでみましょう。

演習問題インデックス

全36問+オプション2問をご用意しました。Q001から順番にやっていくと解説がわかりやすい構成となっています。


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

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