C プログラミング (C Programming)

[2017/08/01, H.Aman]
[← 演習のページへ戻る]

サンプルプログラム 3 の内容

サンプルプログラム 2 では,変数 x の値が 12 に固定でした.
さすがにそれではプログラムとして限定的すぎますので,値を自由に指定できるようにしたのがこのサンプルプログラム 3 です.
 1:   #include 
 2:	
 3:   int main(void){
 4:      int x;
 5:	
 6:      printf("整数を入力してください:");
 7:      scanf("%d", &x);
 8:	  
 9:      printf("入力された値は %d です.\n", x);
10:      printf("その値の 2 乗は %d です.\n", x*x);
11:	
12:      return 0;
13:   }

6, 7 行目:値の入力(メッセージを先に表示)

 1:   #include <stdio.h>
 2:	
 3:   int main(void){
 4:      int x;
 5: 	
 6:      printf("整数を入力してください:");
 7:      scanf("%d", &x);
 8:	  
 9:      printf("入力された値は %d です.\n", x);
10:      printf("その値の 2 乗は %d です.\n", x*x);
11:	
12:      return 0;
13:   }

まず 6 行目では,整数を入力するよう促すためのメッセージを表示しています.
これは必須ではないのですが,こうしないとユーザは何をしたらよいのかが分からない(伝わらない)可能性があります.(何かを延々と計算しているのか?と誤解されることもあります)
それゆえ,何かを入力して欲しい場合は,その直前でメッセージを表示する方がよいです.

次に,(キーボードから入力してもらった)データを読み込むには, scanf(スキャンエフ) 関数を使います.

scanf 関数ではまず,ダブルクォーテーション(")で囲んだ部分で読み込むデータの種類や形式を指定します.
ここでは整数を読み込みますので,printf の場合と同様に %d でこれを指定します.
   scanf("%d", &x);
続いて,読み込んだデータの代入先になる変数の名前を(カンマの後に)指定しますが,printf の場合と違って &(アンパサンド)が必要です!
   scanf("%d", &x);

出力の printf では変数名だけでよいのに,入力の scanf では & が必要というのはなんだかしっくりこないかもしれません.
しかし,残念ながら,このように書かないとプログラムがうまく動きません.

もちろん合理的な理由はある(教科書 271 ページ参照)のですが,説明を理解してもらうには,より複雑な事前知識(ポインタという概念の知識)が必要なので,しばらくは「そういうものなんだ」と割り切って慣れていってください. 後の回で解説します.

【参考】puts 関数

教科書ではところどころで puts という関数も使われています.

これは printf と同様にメッセージを出力するためのもので,自動的に文末へ改行が入るという特徴があります.
つまり,次の二つは全く同じ動作をします:
   printf("メッセージ\n");
   puts("メッセージ");
最後に \n を書かなくて済むというという点では puts の方が楽ですが, 代わりに %d 等を使った変数の出力はできないという弱点もありますので注意が必要です.