「ロジックを考えることができる」になるために ①

前回は、プログラムを書けるようになるのに必要な3つの要素を説明しました。

プログラムが書けるための3要素

今回は「1.ロジックを考えることができる」を更に分解して考えてみたいと思います。
ロジックというのは、処理の流れや手順のことです。

目的の結果を得るために必要な処理をすべて洗い出して、処理を適切な順に並べることができれば、プログラムは7~8割できたも同然。
ただ、そういうことが最初からスラスラできる人はあまりいないので、練習が必要です。

ロジックを書き出そう

ロジックを考える練習をするには、
 ①頭の中で考えたロジックを書き出す
 ②ロジックが正しいか確認する
という作業を何度も何度も繰り返し行うと良いです。

ロジックを書き出すのは、②の確認作業をしやすくするためです。
頭の中に入っているだけでは、そのロジックが正しく動作するか確認できませんし、そうするとロジック構築力が身についたかどうかもわかりません。
ロジックは、書き出しましょう。

ロジックを何で書く?

プログラムでロジックを書く

ロジックを Java や C# などで書けば、それを実行することができます。
実行結果を見てロジックの正しさをすぐ判断できるので、楽です。
ただしプログラミング言語を使う場合は、使用する言語の文法(膨大です)を理解し、それに沿った命令文を書かなくてはなりません。
そもそも、ロジックをプログラミング言語で表現できる=プログラムが書けるということなので、矛盾してますね。

またこの方法の問題点は、うまく実行できない場合にその理由を自分で判別しにくいということです。
プログラムが想定通り動かない原因がロジックにあるのか、プログラミング言語の文法を間違えたのか、はたまたプログラムを記述・実行する環境の使い方を誤っているのか。
自分で判断し修正することができないうちは、ロジック学習とプログラミング言語の学習を分離した方がよいと思います。

フローチャートでロジックを書く

ではロジックだけを勉強する場合、どのように書き表すかというと「フローチャート」を使います。
フローチャートとは、日本語に訳すと「流れ図」。
流れを表す図を、自分で書くのです。
フローチャートを書く用のアプリやソフトがありますが、その辺の方眼紙なんかに手書きすればOK。
習字の練習のような感覚で、バリバリ書きまくります。

フローチャートの例(Excelの図形を使用)

フローチャートでは、10個くらいの図形を使い分けます。
「平行四辺形は入出力」「長方形は処理」など、図形1つ1つの意味が決まっています。
フローチャートの書き方ルールをネット検索などで調べて、フローチャートの図形一覧表のようなものを作っておけば、それを見ながら書けます。

またフローチャートが書けたら、正しい結果が得られるフローチャートが書けたか、必ず確認します。
この確認作業を「トレース」と呼びます。

トレースをしよう

トレースは、
①書いたフローチャートの1つ1つの処理に番号を振る
②実行した処理の順番に応じて、領域の値をトレース表に書き込む
という手順で行います。

トレースの例(Excel使用)

「開始すると1番が実行されます。今回は数値1に3を入力します。」
「次に2番が実行されます。今回は数値2に5を入力します。」
「次に3番が実行されます。数値1と数値2の合計を合計Gに代入します。」
「次に4番が実行されます。合計Gの値8が表示されます。」
などと心の中で処理を1つ1つ確認しながら、1処理ごとにメモリ上の値がどう変化するかを、トレース表に書き入れていきます。

まぁ、面倒くさいです。

でもこの面倒な作業を繰り返し行うと、ロジックを組み立てやすくなります。
なぜかというと、この1処理1処理がコンピュータの実行単位だから。
コンピュータが高性能なのは処理速度が超高速だからであって、コンピュータが実行している命令文の1つ1つは、とても単純なものです。
トレースすると、コンピュータが実行可能な1処理の粒度が自然に呑み込めます。
そうすると、実行できない粒度の処理を書こうとして無駄に悩む、などということが無くなります。

またトレースによって、ロジック力がアップします。
1行1行じっくり読むので、組み立てた処理の流れを、順番通りに隅々まできちんと理解できます。
また間違った箇所があれば、自分で気づくことができ、どう修正すればいいか思いつきやすくなります。
また他の人が書いたフローチャートをトレースすることで、処理の組み立て方を学ぶこともできます。
トレースは単なる確認作業でなく、ロジックを考える練習にもなります。
自分で書いたフローチャートの誤りを自分で見つけて修正できれば、成長の手ごたえも感じられるのではないでしょうか。

まとめ

ロジックを考えられるようになるために、フローチャートでロジックを書いてみよう、というお話を書きました。
趣味で何かプログラムを作ってみようくらいなら、フローチャートでがっつりロジックを勉強する必要はないかもしれません。
でも生きる武器の1つとしてプログラミングを学ぶならば、しっかりと学んで損はないと思います。

「面倒くさがりがプログラマに向いている」という言葉を耳にすることがありますが、誤解しやすいかもしれません。
「毎朝同じファイルを開いて、昨日の日付がついたデータをコピーして、今日の日付をファイル名にしたExcelファイルに貼り付けて、エクセルで集計表を作る」
みたいなルーティンワークを毎日するのは面倒だけど、いろんな作業を自動化するためにプログラミングの勉強をする、そういう人がプログラマに向いていると思います。個人の意見ですが。
料理人でも野球選手でも、その仕事を本気でやろうという人は基本をみっちり練習するわけで、それはプログラミングを生業にする場合も同じだと思います。
そのようなわけで、フローチャート、おすすめです。

ここまで読んでくださって、ありがとうございました。
次回もロジックの話の続きを書きたいと思います。

この記事が気に入ったらサポートをしてみませんか?