プログラミングの研修で「疑似コードからはじめてみれば?」と伝えることがあるので紹介します。
プログラムを少しずつ書けるようになってきて、ちょっと難しそうだけどプログラムを書いてみよう!と意気込んだが上手く動かない・・・、1時間くらい画面を見ても解決できず・・・。
こんなことが、プログラミング初心者の方は特にあると思います。
例えば、先輩から「Javaで文字列を数値に変換して、負の数だったら絶対値を返すメソッドを作って」と依頼されたとします。
質問したけど通じない
先輩に依頼されたプログラム開発、分かる所だけ作ってみて先輩に質問に行った。
自分「この if文 のところなんですけど、なんか意味わからなくて」
先輩「なんで if 文 が必要なの?そもそも何をしたい処理?」
自分「とりあえず、分かる所だけ作ってみました」
問題点
今回のケースは「2つの分からない」が混在しています。
- 依頼されたプログラムがどう動けばよいか仕様が分からない
- プログラム言語の書き方が分からない
プログラミング初心者の多くの人は業務で開発するときに「2つの分からない」の、どちらが分からないのかを判断できないことが多いと思います。
解決策
2つの分からないを疑似コードを書いて1つずつ解決していきましょう。
疑似コードとは?
普段使っている言葉を記述するコードです。
ここでは、プログラムのコメント と思っておきましょう。
やってみる
プログラムのコメント(疑似コード)を最初に書きます。
疑似コードは書けるところまででOKです。書けなかったら「自分は仕様が分かっていないんだな」と認識できます。 書いてみると「変換できなかった場合はどうすればよい?」「変換は整数のみ?浮動小数点も含む?」と疑問点が出てきます。
public static int convertAbs(String str) {
//文字列を整数に変換する
//負の数なら-1を掛ける
//値を返す
}
先輩に「ザックリまとめてみたのですが抜け漏れないですか?」と質問しましょう。
「ここの処理は不要だよ」「この処理が抜けているよ」「これがやりたいならこのメソッドが使えるよ」と普段使っている言葉で仕様を明確にしていきます。
普段の言葉をプログラミング言語に翻訳する
次に疑似コードをプログラミング言語に変換(翻訳)します。
プログラミング言語の「言語」の部分に着目して、英語やフランス語と同じように翻訳と考えることができます。プログラミングは「人間の言葉をコンピュータが分かる言葉に翻訳する作業」と考えてもよいですね。
例えば「もし10の時はAと表示し、それ以外の時はBと表示しない」の言葉の文法を翻訳すると「もし」は「if」、その後は条件式、それ以外は「else」・・・と整理すると
if 値が10の時
Aと表示する
else
Bと表示する
と変換(翻訳)することができます。
翻訳元の文章がスッキリまとまっているとプログラミング言語への翻訳作業が楽になります。 この作業で2つ目の「プログラムの書き方が分からない」を解消します。
public static int convertAbs(String str) {
//文字列を整数に変換する
int val = Integer.parseInt(str);
//負の数なら-1を掛ける
if (val < 0) {
val = val * -1;
}
//値を返す
return val;
}
ポイント
以下の場合は、最初に疑似コードを書くことが効果的です。
- 仕様が分からない
- プログラムが長くなりそう
- プログラミングを始めたばかりで自信がない
- アルゴリズム、ロジックが思いつかない
プログラミング言語の学習も重要ですが、開発業務では「どんなものを作らなければならないのか?」の仕様を明確にしてスッキリした文章にまとめる力も大切です。 普段使っている言葉で正確でスッキリした文章を書けることは生成AIにプログラム作成を依頼することも容易になるので今後も重要になると思います。
プログラミング初心者で初めて開発業務を行う人にはオススメの方法です。また中級者でもスッキリした文章力の練習にもなります。
ぜひ、取り入れてみてください!