【C言語講座】第2回 計算結果を表示してみよう!
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

【C言語講座】第2回 計算結果を表示してみよう!

2015-09-22 17:23
    0.今回扱う内容

    丁寧に説明しようとしたら、またちょっと長くなってしまいました。
    今回から少しは「遊べる」ようになると思います。

    1.文字列の出力 ~ 画面に文字を表示してみよう!
    2.変数の処理 ~ 数字が入る入れ物
    3.四則演算の演算子 ~ 計算をしてみよう!


    1.文字列の出力 ~ 画面に文字を表示してみよう!

    前回、「最小のプログラム」のコードを書いたのを覚えていますか?


    これです。これから、真ん中辺りの空白に、コンピュータへの命令を書き足していきます。

    今回最初のコードはこちら。

    一行増えただけですね。増えたのは、

    printf("Hello, world!\n");

    です。とりあえず写してみましょう。

    「"」は、Shift+2で入力できます。
    「\」は、キーボード左下、かな入力の「ろ」に当たるキーで入力できます。
    環境によって、「/」の逆向きの記号で表示される場合と、画像のように円マークで表示される場合がありますが、意味は同じなので気にしなくて大丈夫です。
    命令の最後には、セミコロンをお忘れなく。

    実行するにはCtrl+F5でした。押してみましょう。

    新たに「Hello, world!」と表示されました。
    ここで、追加した命令を改めて見てみましょう。

    printf("Hello, world!\n");

    もうお分かりの方も多いと思いますが、「printf」は「文字列を表示する」という命令です。

    ちなみに、「\n」は改行を表す記号です。試しに「\n」を取り除いて実行すると、

    システムメッセージの「続行するには~」がそのまま続いちゃってるので、なんかしっくりこない感じがします。
    こういうわけで、見栄えの問題ではありますが、プログラムの最後には改行するのが普通です。これもセミコロンに次いで忘れやすいです。忘れると「結果自体は合ってるけど、やり直しかぁ……」っていう微妙な気持ちになります。

    言語を問わず、多くの講座で「最初に書くプログラムの例」として用いられているのがこの「Hello, world!」プログラムです。私を含め、ほとんどのプログラマーはここからスタートします。

    別に表示させるものはなんでもいいので、この命令の代わりに

    printf("C言語講座\n");

    と入力すれば、「C言語講座」と表示されます。また、

    printf("C\n言\n語\n講\n座\n");

    と入力するとどうなるでしょう?
    自分の名前など、好きな文字列を表示させて遊んでみるのも練習になっていいと思います。

    ……飽きたら次に進みましょう。


    2.変数の処理 ~ 数字が入る入れ物

    前回、プログラムは「入力・処理・出力」の流れで出来ている、という話をちらっとしました。
    出力ができるようになったので、次は「処理」をしてみましょう。

    例えば、3+5という計算をしてもらうにはどうすれば良いのでしょう?
    「printf("3+5\n");」とすれば、「8」と表示されるでしょうか?

    実際にやってみればわかりますが、「3+5」とそのまま表示されてしまいます。
    「printf」は、" "で囲まれた文字列を、原則としてそのまま表示します。コンピュータは忠実な家来ですが、裏を返せば馬鹿正直とも言えるわけです。(\n などの特殊な文字列は例外)

    ここで、喩え話を一つ。
    料理をするとき、材料を混ぜる工程ではボウルを使いますね?
    直接鍋に入れて混ぜるにしても、どっちにしろ「入れ物」がなくちゃいけないですね。
    空中で材料を混ぜるなんて人が居たら、是非テレビに出てください。録画します。

    そんなわけで、数字を足し合わせるのにも「入れ物」が要ります。
    といっても、「入れ物」はパソコンの中にいくつも準備されていて、「メモリ」と呼ばれています。

    メモリは、簡単に言えば数字を入れるための「入れ物」がたくさん並んでいるのようなものです。小学校の下駄箱、あるいはコインロッカーみたいなイメージを持ってください。

    コインロッカーには大小様々なサイズがあって、それぞれ入れられるものが違います。メモリも同じです。メモリにおいて、「入れ物の種類」に当たるのが「」です。

    メモリの中にある入れ物のことを「変数」と呼びます。

    たとえば、「int型」という型の変数には、整数を入れることができます。1とか、-123とか、52149とか。
    double型」の変数には、小数を入れることができます。3.141592とか、-2.105とか。

    扱える数字の上限や下限は一応ありますが、普通に使う分には気にならないと思います。例えば、int型は「-2,147,483,648 ~ 2,147,483,647」となっています。

    あとは、「double型」の変数に整数は入らないの? という疑問があるかと思います。別に入れても構いません。しかし、後々ちょっとした問題が生じるので、その時にまた説明します。

    その逆に、「int型」の変数に小数を入れることはできません。たとえば、3.14を入れようとしても、勝手に切り捨てられて、3になってしまいます。

    理論の説明ばかりじゃつまらないですね。次はコードを書いてみましょう。


    一気に難しそうになりましたね。でも、一つ一つ追っていけば難しくありません。ゆっくり行きましょう。

    int a;

    この命令は、簡単にいえば「場所取り」です。専門用語では「宣言」といいます。
    メモリにある棚から「int型」の入れ物を一つ探してきて、その入れ物に「a」という名前を付けて、名前のラベルを貼って「ここは『a』の場所だ!」と言い張る……そんな感じですかね。

    入れ物(変数)につける名前は半角英数字及び「_」(アンダーバー)から出来ていれば大体なんでも大丈夫です。

    ただし、被りはNGです。また、最初の文字は数字以外でなければなりません。
    なお、アルファベットの大文字・小文字は別物とみなされます。

    また、「int」や「double」など、C言語において特別な意味を持つ語(予約語)は使えません。ただし、中に含む分には大丈夫です(int_number など)。

    何に使う変数か分かりやすい名前をつけると良いでしょう。長くしておけば、被ってエラーが出ることも少なくなります。
    (例:counter、point_num、input_number_3)

    さあ、これで「入れ物」の準備ができました。次に進みます。

    a = 10;

    この命令では、変数「a」に「10」という整数を入れています。
    専門用語では、「aに10を代入する」と言います。

    「a=10」だから「aは10と等しい」じゃないの? と思うかもしれませんが、C言語において、「=」という記号は代入を表し、「等しい」という意味の記号は別にあります。混同しないようにしましょう。
    慣れるまでは、頭の中で「a=10」を「a←10」と変換して読むといいと思います。

    入れ物の中に「10」が入りました。次に進みます。

    printf("%d\n",a);

    「printf」自体は、先ほど扱った通り「文字列を表示する」命令です。
    ですが、「%d」という見慣れないものが中に入っています。そして、" "の後に「,」(カンマ)を挟んで、「a」があります。

    「%d」は「変数文字列」と呼ばれるものの一つで、「printf」が実行されたときに、「,」の後に置かれた変数の中身に置き換えられます。

    いま、aの中には、10が入れてありますから、%dは10に置き換えられる事になります。
    つまり、実行するとどういうことになるんでしょう?

    はい、この通り「10」が表示されました。

    ……そのままではつまらないですか? では次は、この章の最初で言ったように「3+5」を計算してみましょう。


    3.四則演算の演算子 ~ 計算をしてみよう!

    「3+5」を計算するにはどうすればいいのでしょう?
    答えは簡単です。

    変わったところは一箇所。「10」が「3+5」になっただけです。
    これで足し算ができます。そのまんまですね。
    一応説明すると、「a=3+5;」は「3+5の結果(8)を変数aに代入する」という意味です。

    足し算以外にも、引き算掛け算割り算は以下のように表現できます。このような「+」などの計算をするための記号を「演算子」と呼びます。

    a = 10 - 5;
    a = 4 * 5; (アスタリスク「*」は、Shift+「:」で入力できます)
    a = 30 / 6; (スラッシュ「/」は、キーボード右下にあります)

    また、「a = 10 % 3」とすると、「10を3で割った余り」を計算することができます。

    気になる人は、「a = 3 + 5;」のところを書き換えて色々試してみましょう。

    次はちょっと複雑な式。

    結果を予想してから実行してみましょう。

    「23」になりましたか? 「掛け算・割り算は足し算・引き算より先にする」という算数の規則は、プログラミングでも当てはまります。
    なお、余り「%」も掛け算・割り算と同じ優先順位になります。

    もし、3+5を先に計算したい場合は、どうすれば良いでしょう?

    このように括弧をつければ、3+5が先に計算されます。

    括弧の中に括弧があるような、複雑な計算をするときも、中括弧とか大括弧にする必要はなく、全部丸括弧( )で大丈夫です。
    例えば、「a = ((1 + 2) * 3 - 4) * 5;」として構いません。
    括弧をつけすぎてエラーが出るということはないので、不安なときはたくさん括弧を使いましょう

    ところで、さっき色々試した人はもう気づいているかもしれませんが、以下のプログラムではちょっと期待はずれなことが起きます。

    「10÷3」は「3.333...」となるはずですが……

    これはどういうことでしょう。
    よく考えると「a」はint型(整数)の変数ですから、「3.333...」という小数にはならないのかもしれません。

    しかし、この「3」はもうちょっと深い問題を抱えています。
    その辺についてはまた次回。


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。