2 基本事項

ここでは,教科書 [1]の第一章の内容で,重要なことを述べる.

2.1 大文字と小文字の区別 教科書p.7

2.1.1 動作と内容

C言語では,大文字と小文字は,区別される.その例をリスト1 に示す.このプログラムは,以下のように動作する.このプログラムのうち,実行される 文は,6〜12行目である.そのほかの文は,プログラムを動作以前に必要な文で, プログラムがメモリーに格納されるまでに,その仕事は終わっている. -6pt
  1. 変数hogehogeに1を格納する.
  2. 変数Hogehogeに2を格納する.
  3. 変数hoGehogeに3を格納する.
  4. hogehogeの値をディスプレイに書き出す.hogehoge = 1と表示される.
  5. Hogehogeの値をディスプレイに書き出す.
  6. hoGehogeの値をディスプレイに書き出す.

このプログラムでは,3つの異なる変数名 hogehogeとHogehoge,hoGehogeが使わ れている.おなじ「ほげほげ」であるが,アルファベットの大文字と小文字が異なってい る.C言語では大文字と小文字は,区別され,異なった変数としてあつかわれる.これは, プログラムの実行結果を見れば分かる.

   1 #include <stdio.h>
   2 
   3 int main(void){
   4   int hogehoge, Hogehoge, hoGehoge;
   5   
   6   hogehoge = 1;
   7   Hogehoge = 2;
   8   hoGehoge = 3;
   9   
  10   printf("hogehoge = %d\n",hogehoge);
  11   printf("Hogehoge = %d\n",Hogehoge);
  12   printf("hoGehoge = %d\n",hoGehoge);
  13   
  14   return 0;
  15 }

\fbox{実行結果}

	hogehoge = 1
	Hogehoge = 2
	hoGehoge = 3

2.1.2 ソースプログラムの説明

このプログラムのソースの内容は,次のようになっている.リスト 1の各行毎にその役割を示す.現時点で,このプログラムがか けるようになる必要がある.
図 1: printf()関数の説明.
\includegraphics[keepaspectratio, scale=1.0]{figure/printf_hogehoge.eps}

おまじないがかなりある.諸君は,まだC言語の学習をはじめたばかりなので,その内容 まで理解しようとすると,先に進むことができない.多少のことは目をつぶって,意図し た通りに動作するプログラムを作ることに専念すべきである.

おまじないと動作を記述する部分は,図2のように書く.プログラムを作成す るときには,最初にこのおまじないを書く.つぎに,動作の部分を書くようにすればプロ グラムはできあがる.なにはともあれ,このおまじないにはご利益はある.

図 2: C言語のプログラムの構造.おまじないの部分と動作を記述する部分.
\includegraphics[keepaspectratio, scale=1.0]{figure/spell.eps}

2.2 注釈(コメント文) 教科書p.11

コメント文は,プログラムの内容をわかりやすくするために記述するものである.これは, 人間のためのもので,コンパイラーは無視する.プログラムを維持・管理するときの参考 に用いる.良いプログラムは,コメント文が大量に書かれている.FORTRANの場合,第一 カラムが"*",または"C"の場合,その行はコメント文となるのは,以前,学習したとおりで ある.C言語の場合は,/*〜*/で囲まれた部分が,コメント文となる.行をまたいでも, それは有効である.

ANSI4の規格に反するが, //をコメント文の開始として使える.この2つのスラッシュから,行末までがコメントとなる.

リスト2にコメント文が入ったソースプログラムを示す.また,リ スト3には,コメント文が無いプログラムを示す.どちらもはまったく同じ 実行結果になる.それどころか,コンパイルしてできた実行ファイル(機械語)も同一であ る.このことからも,コンパイラーはコメント文を無視することが分かる.


   1 /* ============================================ */
   2 /* ==    円の面積の計算                           */
   3 /* ============================================ */       
   4 #include <stdio.h>
   5 
   6 int main(void){
   7   double pi;
   8   double r, s;
   9   
  10   pi = 3.141592;        /* 円周率 */
  11   r = 1.0;              /* 円の半径 */
  12   s = pi*r*r;           /* 円の面積
  13 			    次の行にまたがっても良い */
  14 
  15   printf("s = %f\n",s);  // ANSIの標準ではないが,これもOK 
  16 
  17   return 0;
  18   
  19 }
\fbox{実行結果}
s = 3.141592

   1 #include <stdio.h>
   2 
   3 int main(void){
   4   double pi;
   5   double r, s;
   6   
   7   pi = 3.141592;
   8   r = 1.0;
   9   s = pi*r*r;
  10 
  11 
  12   printf("s = %f\n",s);
  13 
  14   return 0;
  15   
  16 }
\fbox{実行結果}
s = 3.141592

2.3 識別子 教科書p.12

識別子とは,変数,記号定数,関数などにつける名前のことである.名前に用いることが 出来る文字は決まっており,以下のとおりである.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r t t u v w x y z
0 1 2 3 4 5 6 7 8 9 _ (下線,アンダースコアー,アンダーバー)

2.4 全角空白と半角空白 教科書p.13

全角の空白と半角の空白は,まったく異なる.全角の空白は,日本語を表示する時以 外,使ってはならない.全角の空白を書くと,非常に分かりにくいバグの原因となる ことがあるので極力使わない方がよいであろう.

2.5 フリーフォーマット 教科書p.13

FORTRANは,7カラム目から,プログラムは記述するという約束がる.しかし,Cには,ど こからでも,プログラムを書くことが出来る.そのため,わかり易いプログラムを書くた めに字下げを使うことができる.emacsの場合,行の先頭で[Tab]を打つと自動的に字下げ をしてくれる.字下げを上手に使って,わかりやすいプログラムを書くことが,上達の早 道である.

リスト4に字下げをして記述したプログラムを示す.プログラムの 構造が分かり易くなっていることに気づくだろう.このプログラムでは,for文を使っ て,繰り返しの構造が使われている.iの値を変えなら,forの後の中括弧 { }の中を9回繰り返している.この繰り返し(ループ)の部分を字下げし て分かり易くしている.

   1 #include <stdio.h>
   2 
   3 int main(void){
   4   int i;
   5 
   6   for(i=1; i <= 9; i++){
   7     printf("%d: Hello World !!\n",i);
   8   }
   9 
  10   return 0;
  11 }
\fbox{実行結果}
1: Hello World !!
2: Hello World !!
3: Hello World !!
4: Hello World !!
5: Hello World !!
6: Hello World !!
7: Hello World !!
8: Hello World !!
9: Hello World !!

このプログラムでは,以下の繰り返し文(ループ)が使われている.

  for(i=1; i <= 9; i++){
    printf("%d: Hello World !!\n",i);
  }
これは, -6pt と解釈する.だから,先頭の数字の値が変化しながら,Hello World !!が9回繰り返 されたのである.

ここで,少しprintf文と繰り返し文の練習をしてみよう.

[練習1]
リスト4を直して,以下の出力をするプ ログラムを作成せよ.
1 ==== Hello World !! ==== 1
2 ==== Hello World !! ==== 2
3 ==== Hello World !! ==== 3
          ・
          ・
          ・
100 ==== Hello World !! ==== 100

2.6 セミコロン

Cはフリーフォーマットで記述できますので,文の区切りの記号が必要である.その区切り の記号にセミコロンを用いる.
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年5月2日


no counter