鹿児島大学 プログラミング基礎演習 第3回 数値の計算 半田利弘 鹿児島大学 大学院理工学研究科 物理・宇宙専攻 理化学研究所 2進数、10進数、16進数 ▶ 電気回路では2進数が扱いやすい ■ 2n進数ならなんとかなる ▶ 人間は10進数がなじみがある ▶ 両者の妥協→16進数 ■ ■ コンピュータが譲ればよい(a~fを使わない) 10進数を1桁ずつ計算すればよい ▶ 16進数だと扱えるデータの種類が少なすぎ ▶ 1byte=8bit=16進数で2桁(256通り) 理化学研究所 デジタルデータ ▶ あらゆるデータを2進数で表す ■ どう対応するかは規約で決める ▶ 数値:桁数が限られているのをどうするか? ■ ■ ■ 整数:有効数字無限大、値の範囲が狭い 浮動小数点数:有効数字あり、値の範囲が広い ビットパターン:8進数、16進数 理化学研究所 デジタルデータ ▶ 同じビットパターンでも状況が違うと違う意味 ▶ 例えば00100000=0x20 ■ ■ 整数だと 32 文字なら「 」 ▶ 例えば01100011=0x63 ■ ■ 整数だと 100 文字なら「c 」 理化学研究所 プログラムを作る ▶ その前に、 ■ フォルダーで整理しよう ▶ 本日の課題用フォルダー ■ ■ ■ ■ ■ 例えば、eドライブにlesson2のフォルダーを作る e: eドライブへ移動 cd \ ルートフォルダーへ移動 mkdir lesson2 フォルダーlesson2を作る cd lesson2 フォルダーlesson2へ移動 理化学研究所 プログラムを作る ▶ 今日作ったものは、ここに保存しておこう ■ list1.c, list2.c, list3.cなど ▶ 先週のもの ■ ■ ■ フォルダーが異なるから残っている 先週用のフォルダーを作って移動しておこう move 移動前のファイル名 移動後のファイル名 ▶ 例えば ■ ■ ■ cd .. mkdir lesson1 move list1.c lesson1\list1.c 理化学研究所 1つ作ってみよう ▶ 整数の計算結果を画面に表示させる ■ ■ p.32 List2-1 (list2.c) 整数を画面に表示させる #include <stdio.h> int main(void) { printf("加算の結果は%dです。\n",3+2); printf("減算の結果は%dです。\n",5-8); printf("乗算の結果は%dです。\n",3*4); printf("除算の結果は%dです。\n",7/3); return(0); } 理化学研究所 printfの意味 ▶ printf(…); ■ ■ ■ 指定に従って、文字を画面に書く“関数” 関数:何らかの機能を果たすもの 関数、機能 function print with format ▶ 括弧の中身=引数 ■ コンマ「,」で区切る ▶ printf("加算の結果は%dです。\n",3+2); ■ この例では引数は2つ 理化学研究所 printfの引数 ▶ ("加算の…%dです\n",3+2); ▶ 第1引数:どのように文字を書くかの指定 ■ ■ ■ 以下のいずれにも当てはまらない:そのまま書け %d バイナリを対応する整数値で書け \n 改行しろ ▶ 第2引数:%指定の対象となる変数 ■ ■ 3+2 この結果を第1引数中の最初の%dで書け 理化学研究所 四則演算の記号 ▶ 通常の数式とちょっとだけ違う ■ ■ ■ タイプライターで使っていた文字を転用したため 加算と減算は、通常と同じ +と乗算と除算は、*と/で代用 #include <stdio.h> int main(void) { printf("加算の結果は%dです。\n",3+2); printf("減算の結果は%dです。\n",5-8); printf("乗算の結果は%dです。\n",3*4); printf("除算の結果は%dです。\n",7/3); return(0); } 理化学研究所 整数演算 ▶ まずは、整数だけの世界 ▶ 除算の結果は切り捨て! ■ 7/3は2.3333….ではなく、2 理化学研究所 計算の順番 ▶ 通常の数式と同じ ■ ■ ()があれば、そちらが優先 それ以外は乗除優先 ▶ 試してみよう ■ p.36 List2-2 (list2.c) #include <stdio.h> int main(void) { printf("%d\n",123+45*67-8/2); return(0); } 理化学研究所 printfの書式:引数を増やす ▶ %dをたくさん書くとどうなるか ■ ■ ■ %dの数だけ、引数を増やす 左から順に対応する p.38 list2-3 (list3.c) #include <stdio.h> int main(void) { printf("%d+%d=%d\n",3,2,3+2); return(0); } 理化学研究所 printfの書式 ▶ 文字%を書きたいときはどうする? ■ 「%%」と書くと文字「%」の意味になる。 理化学研究所 printfの書式:桁揃え ▶ %9dと書いたら… ■ ■ ■ dの直前の数値だけ、表記桁数を確保する 確保した桁数に右詰で表示する p.40 list2-4 (list4.c) #include <stdio.h> int main(void) { printf("価格一覧\n"); printf("%8d\n",100); printf("%8d\n",120); printf("%8d\n",35); printf("%8d\n",4); return(0); } 理化学研究所 printfの書式:桁揃え ▶ %8dの桁数には符号も含まれる ■ 負数の時は実質1桁減る ▶ %-8d, %+8dなどと書くとどうなるか? ▶ 実は、もっといろいろ指定できる ■ ■ 最も詳しくは、教科書p.385参照 意味がわからなければやってみるのも一つの手 理化学研究所
© Copyright 2024 ExpyDoc