プログラミング入門II
2019.04.15

Back to index page



  1. 本日の作業内容

  2. メンター学習室

    メンター学習室を今週の水曜日から開始します.場所はこの教室で,時間は4コマ目です.必要に応じてご利用ください.

  3. 関数

    C言語は少し古い関数型の言語です.すなわち,プログラムは関数からなっている形式です. main() という関数がまずプログラムの本体です.その他にも,乱数を発生させる rand() や画面に文字列を表示させる printf() など全て関数です.ここまでは stdio.h stdlib.h という標準的な関数を含むヘッダを読み込むことによって関数を使ってきましたが,ここからは自分で関数(ユーザ関数)を作成して,より柔軟なプログラムを作成する手法を学習します.

  4. 関数の宣言と定義

    教科書のp.73にあるように「プロトタイプ宣言」と「引数仕様」を記述して関数を作成します.これまでさんざん書いてきたプログラムは以下の形式でした.

    #include <stdio.h>
    
    int main(void)
    {
    	int hoge;
    	
    	return 0;
    }
    

    これは最後の行にある return が正常に終われば数値の0を「戻り値」として返すプログラムだったので,戻り値のデータ型が int となっており,「引数」は使用しないので, void となっていました. void とは何もないという意味です.また,「引数」は数学で言うと関数 f (x) x のようなものです.「変数」は別の意味で使用するので,プログラミングでは引数と表現されます.

    ちなみに,最後の return 文を書かなければ,プロトタイプ宣言の部分が void でもエラーにはなりません.
  5. その他

    この節にはこれまで使用しなかったような表現が2つあります.以下に一応説明しておきます.

    • 三項演算子

      教科書のp.75に三項演算子が出てきます.これまで親しんでいる二項演算子に比べてわかりづらいかもしれませんが,解説にあるとおりです.これを使用すると, if - else 文の使用が回避できる場合があります.

    • 条件式部分の , (カンマ)

      教科書p.78の最小公倍数を返す関数 gcd() while 文の式のところに,カンマが入っています.

      	while(r = x % y, r != 0)
      

      この部分もわかりづらいですが,カンマよりも前(左)の部分が変数 r の定義に当たり,右側が実際の条件判断になっています.2つの条件をカンマで並べたわけではないことに注意してください.2つ以上の条件式をカンマで接続することはできません.

      この部分をこれまで馴染んできた書き方で書くと以下のようになります.

      	int r = x % y;
      	
      	while(r != 0)
      	{
      		x = y, y = r, r = x % y;
      	}
      

  6. 演習

    演習問題はこちらです.

  7. 宿題

    宿題の公開は4月16日以降です.よろしくお願いします.

  8. 次回の予習範囲

    教科書のp.70からp.78の範囲を予習してください.


目次ページに戻る