PowerPoint slide

プログラミング演習I
2004年5月12日(第4回)
理学部数学科・木村巌
今日学ぶこと
 C言語における様々な定数について学ぶ
 C言語に用意されている組込型について学ぶ
 b進表記
 変数とそれを使ったプログラミング
定数
 整定数
 浮動小数点定数
 文字定数
 文字列定数
 教科書3.3「型」の表3-1(p.49)を参照.
整定数
 10進定数……(1, 2, 3,
…)
 8進定数……(01, 02, 03, ……)
 16進定数……(0x1, 0x2,……0x9, 0xa,…0xf)
 整数接尾辞
 U……符号なし(unsigned)
 L……ロング(long)
 LL……ロングロング
(long long), C99のみ
 表現できる数の範囲については、後述.
整定数(つづき)
 8進表記を10進表記へ
= 1*8 + 0 = 8
 011 = 1*8 + 1 = 9
 017 = 1*8 + 7 = 15, 020 = 2*8 + 0 = 16.
 例:010
 10進表記を8進表記へ
 23
= 2 * 8 + 7 = 027
 36 = 4 * 8 + 4 = 044
 73 = 1 * 8^2 + 1 * 8 + 1 = 0111
整定数(つづき2)
 16進表記から10進表記へ
 0x10
= 1 * 16 + 0 = 16,
 0x11 = 1 * 16 + 1 = 17,…
 0x19 = 1 * 16 + 9 = 25, 0x1a = 1 * 16 + 10 = 26,
 10から15までに、aからfを当てる
 10進表記から16進表記へ
 23
= 1 * 16 + 7 = 0x17
 321 = 1 * 16^2 + 4 * 16 + 1 = 0x141.
整定数(つづき3)
 2進定数はないが、後で使うので、2進表記の
話.各桁に0, 1のみを使う
 2進表記から10進表記へ
= 1*2+0*20=2, (11)=1*2+1*20=3,
(100)=1*22+0*21+0*20=4,…
 (10)
 10進表記から2進表記へ
 5=1*22+0*21+1*20
= (101),…, 8 = (1000),
b進表記
 bを勝手な自然数とする
 任意の自然数nは、
n = dr*br + d r-1*br-1 +・・・+d1*b
+ d0,
(0≦di < b, i = 0,……,r)
と表される.
bを基数(radix)、各diをdigitという.
 教科書p.36の表を参照
b進表記を求めるアルゴリズム
 n,
bを自然数とする.nのb進表記を出力.
 (1) nをbで割った余りをdとする.
 (2) dをこの回に求めたdigitとして出力
 (3) (n-d)が0でなければ、(n-d)/b を新たにnとし
て、(1)に戻る.(n-d)が0なら、終了.
 (3)から(1)へ戻るときに、nが真に減少する((n-
d)/bはnをbで割った商)ので、必ず停止する.
浮動小数点定数
 常に10進表記
 float, double,
long doubleの3種あり
例
 0.,
.0
 1.0, 1.0f
 3e1, 1.0E-3, .00034
 1.0e67L
文字定数・文字列定数
 文字定数(シングルクォーテーションでくくる)
 例:
‘b’, ‘c’, ……
 ‘A’, ‘B’, ‘C’,……
 ‘ ‘,……
 ‘a’,
 文字列定数(ダブルクォーテーションでくくる)
例
 “ABC”,
“abc”, “hello world\n”,……
型
 型:値の集合と、それらの値に対して行われ
る演算の集合を組にしたもの
 例:整数型、浮動小数点数型、文字型
 Cには文字列型は存在しない!
 文字型の配列として実現されている
printf()について
 様々な型の定数を、然るべく印字するのが
printf()の役割.
 型の指定を行うのが、変換仕様(教科書p.30)
 教科書のSample4.c, Sample5.c, Sample6.c,
Sample7.c, Sample8.cを打ち込んで、コンパイ
ル・実行してみよう
変数を使う
 値を保存できるモノ
 実態は、メモリ上のある領域
 保存するものの型に応じて、変数も
型を持つ
 教科書3章
変数を使う(続き)
 使う前に「宣言」する必要がある(教科書3.4)
 先頭で宣言する.
 宣言の仕方(教科書3.2):
型
変数名;
 int
i;
 double a;
 コンパイラに対して、その型の値を保持できる
場所を確保し、変数名で識別せよ、という指
令を出している.
変数を使う(続き2)
変数への値の代入、初期化(教
科書3.5)
例として、教科書Sample1.c (p.56),
Sample2.cを入力し、コンパイル・
実行してみよう
レポート課題

問1 次の計算を行え.


(1) 02+06, (2) 03*06, (3) 044 / 03,
(4) 0x7+0x9, (5) 0x5*0x5.
問2 10進の365の2進、8進、16進表記を求めよ
 問3 次のように表示するプログラムを作成せよ:
492
357
816
締め切り:2004年5月18日一杯(日本時間で)
 提出先:メールで木村([email protected])まで.
