値とその扱い

  1. 基本的な値とそのデータ型
    1. 整数 (short, long)
      整数同士の割り算 63/7 (Pascal では実数, Cでは整数)
    2. 実数 (float double)
    3. 文字 (char)
    4. 論理値 ((Cでは整数型を用いる. eg /usr/include/jcmpinclude.h)
    5. データ型と型変換 (cast, 自動型変換)
    6. 符号の有無 (signed unsigned ... 整数,文字)
      サイズ (サイズを調べるプログラム)
      #include <stdio.h>
      main()
      {
              int i;
              long int j;
              short int k;
              float x;
              double y;
              char a;
      
              printf("size of int is %d.\n",sizeof(i));
              printf("size of long int is %d.\n",sizeof(j));
              printf("size of short int is %d.\n",sizeof(k));
              printf("size of float is %d.\n",sizeof(x));
              printf("size of double is %d.\n",sizeof(y));
              printf("size of char is %d.\n",sizeof(a));
      }                                   
      
  2. 式と関数
    1. 式とその構成 (因子 factor, 項 term, 単純式 simple equation)
    2. 標準関数
      (Cでは関数の宣言を記述した header ファイルの読み込みが必要: eg stdio.h math.h / コンパイルに library を連結する必要 -lm)
      /usr/include /usr/lib ディレクトリを参照。
  3. 変数
    1. 変数の導入 (名前 name を持つ)
    2. 定数 (整数値、実数値を表す数字、文字列)
    3. 定数定義と変数宣言
    4. 代入 assignment (自動型変換)
  4. 値の性質とプログラム
    1. 実数 誤差 error 桁落ち
      桁落ちの例
      実数計算の精度が10進4桁の場合
      1.0+0.0001+0.0002+0.0003+0.0004
      を計算する。式の通り計算すると、
      	1.000+0.0001=1.000
      	1.000+0.0002=1.000
      	1.000+0.0003=1.000
      	1.000+0.0004=1.000
      
      であるが、第2項目以下を先に加えると、
      	0.0001+0.0002=0.0003
      	0.0003+0.0003=0.0006
      	0.0006+0.0004=0.001
      	1.000 +0.001 =1.001
      
      のようになる。
    2. 整数
    3. 文字 文字の持つ値は処理系依存である。

練習問題

  1. 国際化された UNIX/C言語環境では 日本語など 8bit で表しきれない文字コード を扱うため、wchar_t (wide character type)という型がある。 C言語で wchar_t を利用するためには どのようなヘッダファイルをincludeすればよいか調べよ。また、その中で wchar_t はどのように定義されているか。wchar_t のサイズを求めよ。
  2. ある処理系における実数の精度は、「1に加えても結果が1となる最大の数」 によって推定できる。この数を求めるプログラムを書け。 解答例

レポート問題

標準入力より1文字を読み取り,それが数字であれば その数だけ '*' を標準出力に書き出すプログラムを 書きなさい. 但し,文字の符号化方式によっては数字は必ずしも 大小の順になってはいないので,その点を注意すること.

処理系としてはワークステーションまたは パソコン上の Pascal 又は C 言語を用いること. また,C言語の scanf() atoi() やこれに相当する 関数を用いてはいけない.

レポートには用いた処理系の名称とプログラムを書き メールで tkikuchi@is.kochi-u.ac.jp 宛て提出すること. 期限は 11/20 0:00.