鹿児島大学 プログラミング基礎演習 第4回 変数とはなにか? 半田利弘 鹿児島大学 大学院理工学研究科 物理・宇宙専攻 理化学研究所 前回やったこと ▶ 数値の計算結果を画面に書いた ▶ 常に同じ計算ならコンピュータは要らない ▶ 変数:時と場合によって示す値が変わる ▶ 運動エネルギー 理化学研究所 変数とは箱である ▶ 数値を入れる“容器”と考える ▶ 変数名 ■ ■ ■ ■ 複数の容器を識別するために名前を付ける 定義・宣言:箱を用意する 代入:箱に入れる 参照:箱の中身を見る 理化学研究所 変数の種類:デジタルデータ ▶ あらゆるデータを2進数で表す ■ どう対応するかは規約で決める ▶ 数値:桁数が限られているのをどうするか? ■ ■ ■ 整数:有効数字無限大、値の範囲が狭い 浮動小数点数:有効数字あり、値の範囲が広い ビットパターン:8進数、16進数 理化学研究所 変数の種類:デジタルデータ ▶ 同じビットパターンでも状況が違うと違う意味 ▶ 例えば00100000=0x20 ■ ■ 整数だと 32 文字なら「 」 ▶ 例えば01100011=0x63 ■ ■ 整数だと 100 文字なら「c 」 理化学研究所 変数型 ▶ ビットパターンと意味との対応を付ける ■ 意味とビット長(大きさ) ▶ 多用される型 ■ ■ 整数型、浮動小数点型、文字型 1バイト、単精度、倍精度、… 理化学研究所 変数の型宣言 ▶ 変数を使う前に型を“宣言”する ■ ■ コンピューターに箱を用意させる 種類は? 大きさは? ▶ 多用する型宣言 ■ 整数 int 、浮動小数点数 float、文字 char 理化学研究所 プログラムを作る ▶ 今日作ったものを入れるフォルダーを用意 ▶ 例えば ■ ■ ■ ■ e: cd \ mkdir lesson3 cd lesson3 理化学研究所 1つ作ってみよう ▶ 整数の計算結果を画面に表示させる ■ ■ p.55 List3-1 (list1.c) 整数を代入して、計算結果を表示する #include <stdio.h> int main(void); int main(void) { int x; x=4; printf("%d\n",2*x+3); return(0); } 理化学研究所 変数の自由さ ▶ C言語では、基本的に、どんな変数名もOK ▶ 駄目な例 ■ ■ ■ ■ ■ キーボードにない文字を使う(漢字などはだめ) +-*/;など他の意味に使っている文字は使えない 先頭が数字 空白は使えない 長すぎるとだめ ▶ 注意:大文字と小文字は区別する 理化学研究所 実際にやってみよう ■ ■ p.54 List3-1 (list1.c) 整数名を変えてみる #include <stdio.h> int main(void); int main(void) { int x12_abc; x12_abc=4; printf("%d\n",2*x12_abc+3); return(0); } 理化学研究所 型宣言の効用 ▶ いちいち面倒なようだが、 ▶ 変数名を間違えたら教えてくれる #include <stdio.h> int main(void); int main(void) { int x12_abc; x12_abc=4; printf("%d\n",2*x12-abc+3); return(0); } 理化学研究所 変数の代入 ▶ 変数に値を代入する ■ x=4; 「変数xに整数4を代入しなさい」 ▶ 数学の=とはちょっとだけ違う。 ■ ■ x=x+2; と書ける 4=x; とは書けない ▶ これはOK? ■ x+y=y; 理化学研究所 変数2つ ■ p.55 List3-2 (list2.c) 1文字の変数はなるべく使わない #include <stdio.h> int main(void); int main(void) { int xx, yy; xx=15; yy=32; printf("%d\n",(xx+yy)/2); return(0); } 理化学研究所 まとめて型宣言 ▶ int xx, yy; ってなに? ■ int xx; int yy;と同じ #include <stdio.h> int main(void); int main(void) { int xx; int yy; xx=15; yy=32; printf("%d\n",(xx+yy)/2); return(0); } 理化学研究所 整数ばかり、もう飽きた ■ p.57 List3-3 (list3.c) #include <stdio.h> int main(void); int main(void) { float xx, yy; xx=15.0; yy=32.0; printf("%f\n",(xx+yy)/2.0); return(0); } 理化学研究所 定数にもある型違い ▶ 定数は小数点の有無で整数かを区別する ■ ■ 15は整数 15.0は浮動小数点数 理化学研究所 floatの表示方法 ▶ printfで浮動小数点数を画面表示させる ■ %dと類似 #include <stdio.h> int main(void); int main(void) { printf("%f\n",12.34); printf("%6f\n",12.34); printf("%6.0f\n",12.34); printf("%6.1f\n",12.34); printf("%0.1f\n",12.34); return(0); } 理化学研究所 キーボードから入力 ▶ 実行時に変数値を与えたい ■ printf()に対応する関数としてfgets()を用いる #include <stdio.h> /* p.59, list3-2 (list2.c) */ #include <stdlib.h> int main(void); int main(void) { char buffer[256]; int age; printf("あなたの名前は?"); fgets(buffer,256,stdin); printf("%sさん、こんにちは。\n",buffer); printf("年齢は?"); 理化学研究所 fgets(buffer,256,stdin); age=atoi(buffer); printf("今、%d歳ということは、10年後には%d歳ですね。\n",age,age+10); return(0); } fgetsとatoi ▶ fgets(buffer,256,stdin) ■ ■ ■ ■ キーボード(stdin)から文字列を入力 第1引数に指定した文字列変数に代入 第2引数は入力可能最大文字数 第3引数は入力元。stdinはキーボードを指す。 ▶ atoi() ■ 引数の文字列を対応する整数に変換 ▶ atof() ■ 文字列を対応する浮動小数点数に変換 理化学研究所 課題 ▶ 以下の機能を持つプログラムを作る ■ ゲームで次の動作指示を入力させる 発射角度をキーボードから入力させる ■ 例えば、こんなのbby01bdg1.exe ■ 理化学研究所
© Copyright 2024 ExpyDoc