白黒つけようぜ!くまねこ(@kumanecoblog)です。
今日もPython捗っていますか?
フローチャートってどう書いたらいいんだろう
実は、フローチャートのことよくわかってないんだよね
と思う方は少なくないと思います。
プログラミング初心者ならなおさらです。
僕も始めた当初、「書けるようになった方がいいよと言われたもののフローチャートってなんだ?」となっていました。
結論から言うと、プログラミングにおいてフローチャートはとても重要です。
なぜなら、フローチャートの有無やフローチャートの内容次第で出来上がるもののクオリティが圧倒的に差が出てきます。
フローチャートを書けるようになることは、
優秀なプログラマーになるための一歩だよ!
今回はそんなフローチャートについてご紹介します。
と言う人の悩みに解決します。
1. フローチャートとは
1.1 簡単に言うと
「アルゴリズムを見えるようにしたもの」だよ!
1.2 詳しく解説
字通り、フロー(流れ)をチャート(図式)にしたもののことです。
仕事の手順やプロセスを、長方形やひし形などの図形を矢印で繋げて図式にします。
アルゴリズムやプログラムの全体像とその流れを可視化できるので、設計や他の人への説明・共有に使われます。
1.2.1 フローチャートの例 : お腹空いた時チャート
フローチャートとは、この「お腹空いた」から「ごちそうさま」までの一連の流れをこのような図式にしたもののことです。
作業全体を箇条書きすると、
1.お腹空いた
2.材料を買う
3.調理する
4.食べる
5.ごちそうさま
というプロセスからできています。
これを、フローチャートで書くことによって、一目見てわかりような直感的に理解できるものとなります。
普段の生活を振り返ってみるとフローチャートであふれていますね。
朝起きてから「行ってきます!」と言うまでの流れも、きっとフローチャートで表現できそうですね。
そんな当たり前の日常生活を例に実際にフローチャートを書いてみましょう。
2. 書き方
実際に書いていくにあたってまず覚えておきたい基本記号があります。先ほどの例の長方形や楕円形のものです。全部で8つあります。
8つもすぐに覚えれないよ・・・
フローチャート諦めます・・・
大丈夫です。使っていくうちに覚えていきます。
今全部覚える必要はありません。徐々に覚えていけば大丈夫です。
でも8つはいきなり多いなと思うので、
今回は「今日覚えて使いたい3つ」と「残りの基本5つ」に分けて紹介します。
2.1 基本記号8つ
2.1.1 今日覚えて使いたい3つ
記号 | 名前 | 説明 | 使用例 |
---|---|---|---|
開始/終了 | フローチャートの開始と終了を 表現する記号です。 始めと終わりに配置します。 | ||
処理 | フローチャートで、もっとも使う記号です。 中に処理内容を書いて表現します。 | ||
条件分岐 | 「もし~なら」のような条件分岐で 選択肢を増やします。 |
今回はこの3つを使って書き方などもご紹介します。
僕自身、この3つを覚えてから使っていくうちに他のを覚えていきました
2.1.2 残りの基本5つ
記号 | 名前 | 説明 | 使用例 |
---|---|---|---|
ループ | ループの開始と終了を表現します。 ループ開始にはループが終了する条件も書きます この台形のような図形の間に処理内容を サンドウィッチします。 | ||
定義済み処理 | 処理の一部を別のフローチャートに 分けて書く時に使います。 メインのフローチャートが 見にくくなるを回避するためなどに使います。 「サブルーチン」とも言います。 | ||
入出力 | 外部のデータから参照したり、書き込みしたり、 ファイルの入出力などを表現します。 上からが「入力」下からが「出力」です。 | ||
結合子 | フローチャートが 長くなったり複雑になった時に、 処理を同じフローチャート内の 別の所に書く時に使います。 「同紙○○を参照」などと言います。 | ||
外部結合子 | 結合子と同様に、 別フローチャートに処理を書く際に使います。 「別紙○○を参照」などと言います。 |
ループと定義済み処理は使用頻度がやや高いですが、それ以外は必要になったときに思いだして使って覚えるで大丈夫です。「こんなのがあったな」と頭の片隅に置いておいてください。
この他にもフローチャートを正式な文章として書く時には、20以上の記号を使い分けます。
「始めから正しく書く」と思うと気が遠くなるような感じがします。
それよりもまずは「流れを書き出して把握する」ということの方がとても重要です。
なのでまずは上の3つだけで大丈夫です。
3. 実際に書いてみよう:じゃんけんフローチャート
では、上の3つを使って実際にフローチャートを書いてみましょう。
簡単なものを書いていこうと思うので、「じゃんけん」をフローチャートにしてみます。
ポイントは「わかりやすく」です。
イメージは、じゃんけんを知らない子供に教えてあげるような感じです。
3.1 まず、やることを書き出す(処理)
じゃんけんでやることと言ってたら
- 「じゃんけんぽん」と言う
- グー、チョキ、パーのどれかを出す
- 勝敗を決める
大きく分けるとこの3つだけだと思います。それを先ほどの記号を使って表します。
先ほどの長方形の記号の中にそれぞれ処理を書きました。
これを矢印でそのまま繋ぐこともできます。
人間がこのフローチャートを見たら判断できると思いますが、コンピューターにはやや伝わりにくそうな感じがします。
さらに細かくわかりやすく書いていきましょう。
3.2 勝敗の条件分岐させる
じゃんけんの勝敗を決めるために条件分岐をさせましょう。
ひし形の中に条件を書きました。「YES」or「NO」で答えられる条件にしました。
これで、勝敗をわけることができます。これも組み込んでみましょう。
なんだかフローチャートらしくなってきましたね。
これで、じゃんけんフローチャートを完成かと思いましたが、一つ忘れていました。
じゃんけんには同じ手を出した時のパターンもありました。
それも条件分岐で足していきましょう。
3.3 あいこの時の表現
あいこの時の分岐はなにが分かりやすいでしょうか?
色々とアイデアがあると思います。
例えばこんな条件はどうでしょうか?
なんだか少し冷たい聞き方ですが、これにより「勝っても負けてもいない」という選択肢が作れるようになりました。
ではこれも組み込んでみましょう。
これで、どんな手の組み合わせでも対処できるようになりました。
3.4 完成
これで、じゃんけんフローチャートは完成です。いかがだったでしょうか。基本記号の3つのみでもここまで表現できます。
なので、まずこの3つを使ってフローチャートに書き慣れてみてください。
もしかするとお気づきの方もいると思いますが、まだこれだとプログラムとしてコンピューターに渡すことは難しいです。
勝敗の判断を「自分がグーで相手がチョキ」などという組み合わせまで、しっかりと伝えてあげる必要があります。
4. フローチャートの勉強方法
4.1 カンニングはOK!たくさん真似しよう
書きたいことはあるのに、
フローチャートでどう表現したらいいのかわからない
そんな風に行き詰ることは始めのうちは多々あります。
始めのうちは、基本の方は似たような事例のフローチャートをカンニングしながら書いていきましょう。
え!!!カンニングなんてしちゃっていいの??
いいんです!テストや試験のときはもちろんダメですが、カンニングと言う名の参考にするのはOKです。
0から作り上げることは自力を鍛えるのにとても役立ちますが、かなり難易度は高いです。
ましてや、業務でフローチャートを書くように指示されているときに時間も限られています。
なので、たくさんカンニングして自分の中のストックに入れて自分の知識に変換させちゃいましょう。
引用:野口英世物真似から出発して、独創にまでのびていくのが、
我々日本人のすぐれた性質であり、たくましい能力でもあるのです。
4.2 紙とペンがあれば十分!
フローチャートを身に着けていく時には、有料アプリやソフトを使う必要はありません。
紙とペンで十分に身に着けれらます。
というよりも「紙とペン」をオススメします。
理由は2つあります。
- お金がかからない。
- 作成が直感的に書いていける上にメモも自由に残せる
慣れてくると、頭にざっくりと全体像が浮かぶようになります。
全体像が自然と浮かぶようになるまでは思考のアウトプット訓練と思って、紙とペンでやることをオススメします。
そして、提出する必要がある場合やソフトの指定があるときは紙で書いてそこから写していけば一見無駄に見えて、作業効率が上がります。
タブレットを持っている方はタブレットもOKです。
僕もタブレットでフローチャートを書いてます。
まとめ
フローチャートを書くことは今やプログラマーだけでなくビジネス全般で使われています。
全体像の把握とその流れを可視化できることは、どの業種でも効率をあげることができます。
フローチャートを書けるようになることで、プログラマーとしての能力が上がるだけでなく、ビジネスマンとしてもレベルアップします。
始めはまず情報とやることの整理や言語化がむずかしいなと感じることもありますが、
人は誰しも慣れるものです。ちゃんとできるようになります。
慣れるまでは色んな人やサイトをカンニングしながら紙とペンでガツガツ自分の知識に変換させていってください!
この記事が少しでも役立ててもらえたらうれしいです。
今回も最後まで読んでいただき、本当にありがとうございました!
コメント