Top > 疑問・質問 > プログラムの考え方を教えて下さい

プログラムの考え方を教えて下さい

「123-X4567」と入力されたものを「123x4567」と表示させるにはどのような操作が必要になるのでしょうか?

演習問題を解くためには、まず何をしたいのかという目的を明確にすることから始まります。その意味で、この演習問題には結果だけで目的が書かれていません。

与えられた内容だけで推論すると
123-X4567」→123x4567」に変換する

つまり、入力されたデータを

  1. ”-”(ハイフォン)は削除
  2. 大文字ならば小文字に変換する(”X”→”x”ということなので)

という処理を行った結果を出力すると想定できます。

この認識に間違がなければ、これが要求仕様になり大雑把ですがプログラムロジックになります。


Aさんが想定している手順とは随分違ったものになりましたが、理解して頂けたでしょうか?

  1. 入力データとして一気に読み込んむ(「123-X4567」は一例と考える)
  2. 1文字ずつ以下の処理を行い、出力用文字列配列にデータを代入する
    1. ”-"なら削除(代入しない)
    2. 英字小文字なら大文字に変換して代入
    3. 数字ならそのまま代入
  3. 出力用文字列配列を画面に出力する

対象言語がC言語の場合の文字列配列のイメージ

  1. 出力文字列用の配列は、入力文字列と同じ細部で宣言
    C言語の場合、ローカル変数の宣言は初期化されないため0クリアしておく
  2. 入力文字列配列の先頭から順に1文字単位でチェック
  3. 出力文字列にデータをセットまたは小文字変換または何もしない

このような流れになります。

このあたりは、手順(プログラムロジック)とコードの両方を意識する必要があるので、多少混乱するかもしれません。

  1. 手順を考えてコードを書く
  2. 書いたコードから手順を見直す

こんな風に行きつ戻りつを繰り返すうちに理解できるようになります。

IT@NET塾
丸山

注意事項

慣れないうちは、演習問題の入出力に注目しがちです。プログラムロジックで考えた場合、単なる入力であり出力です。

  1. キーボードから入力する、画面に出力するは、ひとまず忘れて下さい。
  2. データはプログラムで記述し、結果は変数に記憶すると考えます。
  3. 処理をしっかりと考えて実装することに集中して下さい。
  4. 処理ができてから、入出力を考え、実装して完成させます。

▲ページトップに戻る