四則演算するプログラムを作ってみよう
まずは、以下のような処理を順番に実行するプログラムを考えて見ましょう。
- 変数aに100を入れる
- 変数bに8を入れる
- 変数cに a + b の計算結果を入れる
- 変数cを5で割る
- 変数cから41を引く
- 変数cを5倍する
以上です。まずは前回までの内容をもとに、自分で考えてみてください。
:
いかがでしょう、なんとなくプログラムは書けましたでしょうか? できた方は答え合わせのつもりで、少し難しかった方もめげずに、順に解説を読みながら進んていきましょう。
まず、C言語のプログラムはvoid main( )
で始めます。これは、「ハードウェアの話とコード生成」の4ページのサンプルプログラムにも登場しました。後の回で関数について説明するときにまた詳しく説明しますので、ここでは「最初はvoid main( )
で始める」と覚えておけばOKです。そして、プログラム本体は{ }
で囲みます。ということで、まずは、なにはともあれ
void main( ) { }
と書くところから始まります。
※「ハードウェアの話とコード生成」の4ページのサンプルプログラム(Appliletで生成したもの)では、
void main( void )
となっています。このカッコの中のvoid
は、書いても書かなくてもOKです。また、このvoid
という単語については、このあとの章の「関数」のところで解説します。
変数の宣言
次に、やるべき処理を順番にC言語のルールで書いていきます。と、その前に!前回の変数の説明を思い出してください。C言語で変数を使う場合には、まず「こういう名前の変数を使いますよ」という宣言をするきまりになっているのでしたね。今回の例題では、a・b・cの3つの変数がありますので、これらの使用宣言が必要です。ここもまた復習です。宣言の書き方は、
型 変数の名前;
でした。
今回、型はchar
とint
のどちらがよいでしょうか。処理内容上、計算結果は-128~+127の間に収まりますので、どちらでもOKです。ここではint
を使って進めていきましょう。先ほどのmain( ) { }
の中に変数宣言を書くと、このようになります。
void main( ) { int a; int b; int c; }
ちょっと裏技で、同じ型の変数は「,」で区切って並べる書き方もあります。
void main( ) { int a, b, c ; }
どちらでもOKですが、変数名に意味を持った単語を使ったりすると、後者の1行に並べて書くやり方だとプログラムが読みにくくなってしまうこともあります。今回は素直に前者のように1行ずつ書いておきましょう。
処理の実体を書く
さて、ようやくこれで処理の実体を書く準備ができました。まずは「処理1. 変数aに100を入れる」のプログラムを書いてみましょう。「変数xxに値xxを入れる」というのは代入文です。ということで、=
という演算子を使ってこのように記述します。
a = 100;
「処理2. 変数bに8を入れる」も同様に、
b = 8;
です。
「処理3. -変数cに a + b の計算結果を入れる」は、「加算計算をして、その結果を変数cに入れる」なので、+
演算子を使った加算計算と、その結果を代入する=
演算子による代入文の組み合わせです。C言語では、
c = a + b ;
と、記述します。
代入文では、情報の流れは
c ← a + b;
と、右から左方向です。プログラミングを始めたばかりの方には、イコールという記号を使うことともあいまって、ちょっと違和感があるかもしれません。むしろ最初は変に感じるのが普通です。書き方を間違えたとしても、「こんな最初でつまづいてしまって」と心配する必要はまったくありません。要は「慣れ」です。さぁ、元気を出して先へ進みましょう。
次は「処理4. 変数cを5で割る」です。実は、ここには小さなイジワルがしてあります。変数cを5で割った結果をどこに入れろとも書いてありません。だからといってc / 5 ;
と書いても、これは文法エラーになってしまいますし、なによりも実行しても意味のないプログラムです。
「cを5で割る」は、丁寧に書くと「cを5で割って、再びcに代入する」となります。kこれを、C言語で記述すると
c = c / 5;
となります。
四則演算に限らず、またC言語に限らず、プログラムではなにかしらの演算をしたら、結果を必ずどこかに格納しないといけません。どこかに入れておかないと、次にその値を使えないのです。逆に、使う必要のない値であれば、そもそもそれを求める処理そのものが不要です。「無駄な処理は書かない」というのも、プログラムを作る上でとても大切なことです。
ということで、「演算は必ず代入文とペア」が基本です。ただし、C言語には単項演算子というものがあって、これを使うと代入文が不要になります。他にも、演算と代入を一度にやってしまう記述の仕方などがありますが、本講座では扱いません。まずは基本を学んだ上で、次のステップで修得することにしましょう。
処理5.~7.も同様です。処理1.~7.すべてを書いたプログラムは次ようになります。
void main( ) { int a; int b; int c; a = 100; b = 8; c = a + b; c = c / 5; c = c - 41; c = c * 5; }