Changes between Version 5 and Version 6 of HowTo/CTutorial


Ignore:
Timestamp:
Sep 4, 2010, 11:56:12 AM (14 years ago)
Author:
村山 俊之
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HowTo/CTutorial

    v5 v6  
    77UNIX システム発祥の、割と歴史が古いプログラミング言語です。古い言語でありながら、今でも OS や各種アプリケーションの開発に広く使われています。
    88
     9=== 構造化言語 ===
     10
     11C 言語は構造化言語です。これはどういう意味かというと、「○○しなさい」という命令について、その「○○」の処理内容を別の場所で具体的に記述し、その中に書かれている「××しなさい」という命令についても、「××」の処理内容がさらに別の場所で具体的に記述される、ということを繰り返すことで、処理内容をツリー構造として表現できる、ということです。
     12
     13このスタイルの利点は、処理内容のおおざっぱなシナリオをそのままプログラムとして書き表すことができることです。例えば、お店の POS レジでお会計を済ませた後の、レジ端末おける処理について考えてみましょう。必要な処理として考えられるのは、以下のようなシナリオです。
     14
     15 1. 今回の会計で得た売り上げを、会計システムに通知し、お店の売り上げとして計上する。
     16 1. 今回販売した商品の品番と個数を、在庫管理システムに通知し、在庫情報を更新する。
     17 1. 今回の会計の担当者と販売した商品の情報を、従業員管理システムに通知し、従業員の販売成績として記録する。
     18
     19この処理全体を行う関数を onSelled() とし、 1 の処理を行う関数を notifyProceeds() 、 2 の処理を行う関数を notifyStockConsumption() 、 3 の処理を行う関数を notifyEmployeesSale() とすると、 onSelled() 関数は以下のように書くことができます。
     20
     21{{{
     22/**
     23@brief  レジでの販売会計後に呼ばれる関数
     24@param  commodity_info  商品の情報データへのポインタ
     25@param  sum             売上金額
     26@param  uid             担当者の従業員 ID
     27*/
     28void onSelled(const item_info_t *commodity_info, long sum, uid_t uid)
     29{
     30    notifyProceeds(sum);
     31    notifyStockConsumption(commodity_info);
     32    notifyEmployeesSale(uid, commodity_info);
     33}
     34}}}
     35
     36notifyProceeds() などの関数が実際にどんな処理を行うかは、それぞれの関数における定義の中でさらに詳細に記述されることになります。