担任クラスの個人面談
担任クラスの個人面談を開始する。 本当は、手始めに10人位…と思っていたが、昨日の資源回収の疲労もあり、 「個人面談するぞ!」の話の瞬間にトーンダウン。「ひとまず今日は5人ね…」
放課後には、学生さんの都合で翌日1名になり、ちょっと拍子抜け。
個人面談の前に、昨年までの試験成績席次を表計算に書き込み、 各学生さんの成績傾向を確認しておく。 ただし面談時には、今後の目標を見据えているかを中心に、話をする。
浮動小数点の扱いと文字列の扱い
N進数表現と数値範囲の説明の続きとして、 実数型(float,double)の取り扱いについて説明する。
実数の取り扱い
実数の取り扱いとして、double/float型の内部データ保存形式の説明を行う。 (参考:IEEE 754 wikipedia.jp)
型 | 符号(s) | 指数(e) | 符号(d) | |
float | 1[bit] | 8[bit] | 23[bit] | |
double | 1[bit] | 11[bit] | 52[bit] |
double型の精度は、 より、約52*0.301=15.6桁相当といった説明。
実数型の計算のトラブル事例もいくつか紹介。
int sum , cnt ; // 合計とデータ数で、平均を表示 printf( "%f" , sum / cnt ) ; // めちゃくちゃな答が表示される。 // sum / int は、整数同士の計算で3となる。 // 小数点以下はも止まらない。 // "%f" は、浮動小数点用。第2引数に3があっても、 // 正しく表示できない。 printf( "%lf" , (double)sum / (double)cnt ) ; // 型キャスト double a , h // 三角形の底辺と高さとする。 double s ; s = (1/2) * a * h ; // 面積を計算したい // この答は常に0が表示される。 // 1/2 は、整数同士で計算され、0.5は0として扱われる。 s = 0.5 * a * h ; s = (1.0/2.0) * a * h ; // 2.0と書けば実数どうし s = a * h / 2 ; // 実数/整数は、2.0 に自動的に型拡張される
文字列の扱い
C言語における文字列の扱いを説明するために、 ASCIIコード表(JISコード表)などの説明をする。 配布資料中の例題で、10進、8進、16進変換、 文字コード間の加減算を行う。 制御文字'\n','\r','\f'などを、タイプライタの動き を例にしながら、説明を行う。