Search for:
  • ブログ
    • IT・プログラミング
    • デジタルマーケティング
    • 起業・スタートアップ
    • 自由気ままな移住と生活&働き方
うずらのヤドリギ(旧Uzublo) - 海外移住して起業した自由人エンジニアのブログ
うずらのヤドリギ - 海外移住して起業した自由人エンジニアのブログ
  • ブログ
    • IT・プログラミング
    • デジタルマーケティング
    • 起業・スタートアップ
    • 自由気ままな移住と生活&働き方

Blog

プログラミングの学び方(3) – 処理フローの組み立て方

access_time2018年8月24日
perm_identity Posted by Hisashi
folder_open IT・プログラミング, プログラミング学習

前々回、前回と、プログラムの概要についてお伝えしているわけだが、プログラミングの学習に当たって、経験上個人的に一番重要だと思う点をお伝えしたい。

プログラミングを学ぶ前に、まず処理フローを知るべし

どういうことか?というと、プログラミングの基本中の基本は、アルゴリズム。もっとざっくばらんに言えば、処理フローである。

当然のことながら、プログラムを書く以上、実行してほしい処理が存在する。具体的に言えば、

  • もしAが0なら、Bを実行してほしい
  • Cを3回繰り返したら、データベースにDを保存してほしい
  • 軽減税率計算をしてほしい(特定の品目だけ、違う消費税を適用してほしい)

といった、さまざまなケースが存在する。一見プログラムを書くという作業は、非常に高度な知的作業が必要だと思いがちだが、実際はその逆であるということを説明していきたい。

処理を究極まで単純化する

実際にプログラムを書いてみると、極論、処理フローの種類は2種類しかない。
それは、

  • 繰り返し(for …, while, do – loop)
  • 条件分岐(if, switch)

である。これらの処理をプログラミングの専門用語では制御構文と呼ぶ。
それ以外にも例外(Exception)という概念があるが、ここでは割愛する。

一見複雑な業務フローでも、分解していくと最終的に行き着くのは、

  • どのようなときにこの処理を行うか?
  • その処理は繰り返されるのか?

という2点である。

たいていの言語も、原則この2つの処理フローをベースに処理を組み立てていく。

  • Pythonの場合:http://www.tohoho-web.com/python/control.html
  • Rubyの場合:https://www.javadrive.jp/ruby/
  • C#の場合:http://libro.tuyano.com/index3?id=1230003
  • PHPの場合:http://www.tohoho-web.com/php/control.html
  • Javascriptの場合:http://alphasis.info/javascript/control-structures/

例えば、以下の処理をJavascriptで書いてみよう。

①いくつかの商品を購入した際のその注文合計金額を計算したい。

②商品には消費税が発生するが、商品の品目が食料品だけは8%、それ以外は10%で課税されるように計算してほしい。

③消費税は切り捨てで計算すること。

④商品をいくつ購入しても、必ず計算ができるようにしてほしい。

このような要求があった場合、プログラムを書くと以下のようになる。

function calcTax(item) {
    var total = 0;
    for(var i in item) {
        var itemPriceWithTax;
        if (item.taxType == 'food') {
            itemPriceWithTax = Math.floor(item.price * 1.08);
        }else{
            itemPriceWithTax = Math.floor(item.price * 1.10);
        }
        total = total + itemPriceWithTax;
    }
    return total;
}

今回は単純なフローであるが、かなり複雑な処理フローも、1つ1つ分解していけば、
最終的には繰り返しと条件分岐によって成り立つ処理に分解することができる。

まずは、処理を分解することから始める

処理を分解・整理せずにソースコードを書き始めてしまうと、結果として生み出されたソースコードもまた、分解・処理ができていないきわめて煩雑なソースコードになってしまう。そのようなソースコードは当然保守性は低下するし、拡張した場合に様々な弊害を生み出してしまう。

個人的な反省から、これからプログラムを書く人には同じ轍を踏んでほしくないと思い、この記事を書いた。

これからプログラムを書く人は、自分が実現したい処理が何なのか?をまず分解し、1つ1つソースコードを組み立てていくと、自分にとっても第三者にとっても分かりやすいソースコードになると思う。

関連

Tags: C#JavascriptPHPRubyアルゴリズムプログラミングループ条件文
Newer プログラミングの学び方(2) - プログラミングを学ぶ前に必要な基礎知識
Older 起業家がInstagramにハマったら、そのビジネスは終わる
プロフィール

Hisashi

インフラメインのIT屋。一応某社Founder & Director & CEO。現在は時間場所に依存しない悠々自適な引きこもり生活を実現。
 
>>> 詳しいプロフィールはこちら

★Twitter☆
@freelife_man007

★LINE☆
友だち追加

Search for:
カテゴリから探す
  • ブログ
    • IT・プログラミング
      • AWS(Amazon Web Service)
      • ITインフラ・ネットワーク
      • Laravel(PHP)
      • Wordpress
      • デジタルマーケティング
      • プログラミング学習
    • 会社設立
    • 政治・社会
    • 自由気ままな移住と生活&働き方
    • 起業・スタートアップ
タグから探す
5G Amazon LightSail Amazon Web Service Instagram ITリテラシー PDCA PHP SEO SNS Web Webマーケティング Wordpress きっかけ アフィリエイト インフルエンサー インフルエンサーマーケティング エンジニア カリブ キャッシュフロー キャリア キラキラ起業女子 クアラルンプール コンテンツマーケティング コンバージョン システムエンジニア セキュリティ ソースコード デザインパターン ノマドワーカー ノービザでいける国 ビザ(査証) フリーランス フルスタックエンジニア プログラミング プログラミング学習 マレーシア マレーシア移住 リモートワーク 仕事の自由 場所の自由 時間の自由 海外移住 物販 独立 起業
Menu
  • プロフィール
  • プライバシーポリシ
  • 免責事項
About me

日本と東南アジアを往来しながら、
プログラミングしたり、
ネットワーク構築したり、
AWSをもてあそんでいます。

ブログは、気が向いたら更新。
晴耕雨読の生活を楽しんでいます。

オンラインサロンも立ち上げる予定なので、興味のある方は是非のぞいてみてください。

Ads
Twitter
Tweets by freelife_man007
Uzula Business All Rights Reserved.
keyboard_arrow_up