プログラミング論 第五回 変数とは? 本日の内容 変数とは? – 変数の型 変数の値を出力する – 整数型の場合 変数の宣言(データ型) 値の代入 整数型変数の出力 変換仕様(書式) メッセージ付出力 複数の変数値の出力 変数とは? コンピュータでは,入力された数値データ や文字データを,いろいろと加工(処理) して,仕事をする(結果を出す)ものです。 入力されるデータは一つではありません し,何度も変更,利用されます。 ということは。。 データは,どこかに保管されていて,いつで も何度でも変更,利用できるという事ですね。 変数とは? コンピュータの中には,データを保管するため の箱を用意することができます。 この箱の中身は,いろいろと「変化」します。 だから,このデータが保管されている箱のこと を「変数」といいます。 箱には,だいたい自由に名前を付けることがで きます。その名前を「変数名」といいます。 – アルファベット(大文字,小文字),数値,_ ,だけが 使えます。 – 数字で始まる名前は付けることができません。 次のプログラムを実行しましょう。 ~変数の値を出力する~ // ensyu5.c // 「10+20」の答えを計算して表示する #include <stdio.h> int main(void) { int a, b, c; a = 10; b = 20; c = a + b; printf("%d\n",c); return 0; } まずは,ここから考えましょう。 // ensyu5.c // 「10+20」の答えを計算して表示する #include <stdio.h> int main(void) { int a, b, c; a = 10; b = 20; c = a + b; printf("%d\n",c); return 0; } 変数の宣言 int a, b, c; の意味を考えましょう。 これは,「int型(integer : 整数)の変数とし て,3つの変数を用意する。変数名は,そ れぞれ a, b, c である。」という意味です。 C言語では,「これから,これらの変数を使 うので準備してください」というお願いを,プ ログラムの最初に必ず行っておく必要があ ります。 変数の宣言 // ensyu5.c // 「10+20」の答えを計算して表示する #include <stdio.h> int main(void) { // int a, b, c; a = 10; b = 20; c = a + b; printf("%d\n",c); return 0; } コメント文にして 無視してみましょう コンパイル結果は どうなりますか? 変数の宣言 こんなエラーが表示されます エラー E2451 : 未定義のシンボル a エラー E2451 : 未定義のシンボル b エラー E2451 : 未定義のシンボル c 「こんな名前のものは定義されていない から分からない」ってことですね。 つまり,「使いたいのなら,ちゃんと最初 に定義しなければならない」ってことです。 変数の宣言 int a, b, c; は, int a; int b; int c; のように,3行に渡って記述することもできます。 もちろん, int a; int b; int c; と1行に3文書くこともできます。 実際にプログラムで確認しましょう。 変数の宣言 int a, b, c; の意味を考えましょう。 これは,「int型(integer : 整数)の変数とし て,3つの変数を用意する。変数名は,そ ? れぞれ a, b, c である。」という意味です。 C言語では,「これから,これらの変数を使 うので準備してください」というお願いを,プ ログラムの最初に必ず行っておく必要があ ります。 変数の型 1~10の間に,「整数」はいくつあるでしょう? では,同じく1~10の間に,「実数」はいくつある でしょう? 実数だったら,何桁もの数字を表現しなければ ならないので,大きい箱を用意する必要がありま す。整数だったら(この場合)2桁で十分ですね。 最初に「整数ですよ」と分かっていれば,小さめ の箱を用意すればいいので,効率がよい,と言 えます。 変数の型 プログラムの最初に変数を定義するとき, それが,「整数」なのか「実数」なのか「文 字」なのか,決めておく必要があります。 これを「変数の型を定義する」といいます。 ensyu5.cでは,どの変数も整数型として 定義されているので,10や20が代入され ています。 では,試しに,5.5などのような実数値を 代入してみたらどうなるでしょう? 変数の型 警告もエラーも出ずに,とりあえず実行できて結果 が出力されます。 でも,実数としては出力されません。どう処理されて いるのでしょう? a = 5.5; b = 20.7; c = a + b; a には,5 が代入されます。 b には,20 が代入されます。 c には,25 が代入されます。 つまり,小数点以下は切り捨て(丸める)られることになります。 変数の型 それでは,次に,ものすごく大きな値を入 れてみましょう。 int a, b, c; a = 2147483649; b = 2147483650; c = a + b; 変数の型 前ページの例の場合,答えは「3」と表示 されるはずです。 つまり,あまりに大きい数字だと,箱の中 に入れきれなくて誤動作してしまう,とい うことです。 この場合,4バイトの大きさの箱しか用意 されていないため,表現できる数字は次 の範囲の整数になります。注意しましょう。 -2147483648 ~ +2147483647 次は,ここを考えてみましょう。 // ensyu5.c // 「10+20」の答えを計算して表示する #include <stdio.h> int main(void) { int a, b, c; a = 10; b = 20; c = a + b; printf("%d\n",c); return 0; } 値を代入する 今まで何気なく使ってきましたが, a = 10; というのは,「変数aに10という値を代入 する」という意味であり,「aが10と等しい」 という意味ではありません。 10 a 値を代入する それでは,これはどういう意味でしょう? a=a a+50; まず,今のaの値 を取り出します。 その値に50 を加えます 50を加えた結果を aの箱に戻します a つまり,aの値が50大きくなります。 値を代入する この場合は。 c = a + b; この場合は,aとbの和を計算して,その 結果をcに代入します。 aとbの値は元のままで変化しません。 値を代入する:演習 ensyu5.cにおいて – 問題1 a = 10; の文の後に,a = a+10; の文を挿入し て,結果を確認しましょう。 – 問題2 a = 10; の文の前に,a = a+10; の文を挿入し て,結果を確認しましょう。問題1の場合と結果が 違う場合は,その理由を考えましょう。 値の代入:プログラムの流れ int a, b, c; a b c 3つの箱が 用意される。 a, b, c の最初の値は不定であり分からない 10 a=10; b=20; a 10 c=a+b; a 20 b 20 b c 30 c a, bの値は変化しない aに10,bに20 が代入される。 cに30が代入 される。 つぎは,ここに注目。 // ensyu5.c // 「10+20」の答えを計算して表示する #include <stdio.h> int main(void) { int a, b, c; a = 10; b = 20; c = a + b; printf("%d\n",c); return 0; } 整数型変数の出力 printf(“%d\n”,c); これは,整数型変数cの値を出力するための指示です。 初めて見るのは,%のついた部分ですね。 %dは,「変換仕様」または「書式」と呼ばれる記号で す。”d”の部分が変わることでいろんな意味になります。 %dは,「10進数の整数」という意味です。 つまり,「ここに10進数の整数値を出力してください」と いう意味になります。 どの変数の値を出力するかは,” “, の後ろに変数名 を記入します。 整数型変数の出力 出力させる値は変数で指定する必要はな く,次のように式を書く書き方もできます。 printf(“%d\n”, a+b); 実際に上のようにprintf文を書き直して, きちんと出力されることを確認してくださ い。 変換仕様 代表的な変換仕様を次に示します。 変換仕様 意味 %o 8進数で出力する。 %d 10進数で出力する。 %x または %X 16進数で出力する。 %f 浮動小数点数として出力する。 %c 文字として出力する。 %s 文字列として出力する。 %o, %x で出力させてみましょう。 メッセージ付出力 メッセージを付けて,次のように出力させ ることもできます。 printf(“cの値は%dです。\n”, c); cの値が30だとすると, 次のように出力されます。 cの値は30です。 Z:\C> 複数の変数出力 ひとつのprintf文で複数の変数の値を出 力することができます。 printf(“aの値は%dで,bの値は%dです。\n”, a, b); この場合,最初の%dが最初の変数aに,二番 目の%dが二番目に書かれた変数bに,それぞ れ対応します。 aの値が10,bの値が20とすると,次のように出力されます。 aの値は10で,bの値は20です。 Z:\C> 演習 ensyu5.cにおいて – 「10+20=30」と出力されるように printf文を作りなさい。赤の部分 は変数値が出力されるようにし なさい。 – %dは,%3dと指定することによ り,「10進数3桁の整数で出力す る」と桁数を指定できる。この機 能を利用して,aの値,bの値,a とbの和であるcの値を,右のよう に桁をそろえて縦書きに出力す るようにprintf文を作りなさい。 5 +100 ---105 赤の部分は変数の 値の出力とします。
© Copyright 2024 ExpyDoc