C言語を少し理解する

さて、前のページで書いたCプログラムを少しだけ理解してみよう。詳しくは別の文書で解説するので、ここでは"なんとなく"わかった気になれば充分。

一行ずつ理解する

以下では、Cのキーワードは太文字で表記することにする。 これは、決められた単語なので、勝手に変更することはできない。実際にプログラムを 書く場合には普通の文字で書けばよい。キーワード以外はプログラム作成者が自由に設定する 文字である。
#include<stdio.h>
この文は必ずつけなくてはならない。おまじないと思っておいてよい。
main()
このあとの{と最後の}に囲まれた部分がプログラム本体(メインプログラム)である。
   int i;
以下のプログラム中ではiという名前を持つ「整数型変数」を使う、という宣言。数学でいう"変数"とおおむね 同じ意味で、この場合iには整数だけを代入することができる。 変数には「型」があることだけ頭にいれておく必要がある。
    double x;
以下のプログラム中でxという名前をもつ「実数型変数」を 使うという意味。平たくいえば、小数点を持つ数が実数。
      x=0;
変数xに0という値を代入した。これ以降、xは0という値を持つことになる。 ここで「イコール記号」が出てきたわけだが、C言語での「イコール記号」の役割は数学と 違うことを理解しておくこと。数学ではイコールとは「左右が等しい」ことであるが、 C(に限らず、多くのプログラム言語)の場合は「右辺の値を左辺に代入せよ」という命令である。したがって、 左右を取り替えて0=xなどと書いてしまうと全く違う意味になる。 この点は初心者が戸惑いやすいので注意。 ちなみに、”等しい”を表わす記号は"=="(イコールが2個)である。
  for(i=1; i<=10; ++i){
いわゆる「forループ」の開始を表す。この{と次の}ではさまれた部分が「forループ」である。 ループとは、"繰り返し計算"のこと。スーパーコンピュータは繰り返し計算の性能に特化したコンピュータなので、ループをよく理解する必要がある。
forループでは「制御変数」を使う。このループでは先に宣言したiを制御変数に使っている。 for(i=1; i<=10; ++i)とは、「変数iの値を1から10まで1ずつ増やしながらループの中の計算を実行せよ」という意味。 つまり、まずi=1としてループ内の二行の計算を 実行。次にi=2として同じ二行を実行。iの値を3, 4, 5, 6と増やしながら 同じ計算を繰り返し実行して、iの値が10になるまで計算を実行し終わるとループを終了する。++iiという変数の値を1だけ増やすという意味である。
        x += i;
これは変数xに変数iの値を足す、という意味。
 x = x+iと書いてもよいが、これは初心者が戸惑いやすい表記なので、あまり使わないほうがいいかもしれない。 C言語ではイコールは"等しい"ではないのだから、数学の式のように "両辺からxを消去して"とやってはいけない。 「イコールとは右辺を左辺に代入することだ」と理解していれば大丈夫。 つまり、まず右辺の式を計算する。この式は見た通りで変数xの値に変数 iの値を足すだけ。足した結果を最後に再びxに代入する。
両辺に同じxが出てくることにも戸惑うかもしれないが、代入によって xの値は計算前と違う値になるのである。分からない人は、考えてみること。
        printf("%f\n", x);
printfまでで「値を出力せよ」という命令、 ここではxの値を画面に出力する。 "%f\n"はいわゆる「書式指定」で、出力の形式を指定する。 詳しくは書かないが、%fは浮動小数点数を出力すること、\nは出力の後に一行改行することを意味している。
      }
forループの終わり。このプログラムでは、プログラムそのものがforループで 終了しているが、もしこのあとにまだプログラムが続いていれば、forループを実行した のち、}の次の行を実行する。
      }
プログラム全体の終了を宣言している。これは一番はじめのmain(){と対に なってプログラム全体を挟んでいると思えばよい。

さて、ここでもう一度このプログラムを実行して、たしかに上の説明通りの 計算が実行されているか、よく確かめてみよう。

 これで、ターミナルの使い方の基本は終了である。
前へ戻る