プログラミング演習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])まで.
© Copyright 2024 ExpyDoc