第1章 「やさしい入門」
1.2 変数と算術式

2020年11月7日

第1章 「やさしい入門」
1.2 変数と算術式

今回は少々長いプログラムです。
いよいよ本格的なプログラムに挑戦しましょう。
プログラミング言語Cの「1.2 変数と算術式」をベースに解説をしていきます。
ソースコードは、僕の主観で少々変えてあります。
今後も「プログラミング言語C」とは少々異なる点がありますがご了承ください。

プログラムの目的

℃=(5/9)(F-32)の公式から華氏と摂氏の対応表を表示するプログラムです。

プロジェクトの作成

前回のサンプルプログラムを書き直しても良いのですが、これからどんどん学習しますので新たにプロジェクトを作成することをおすすめします。
プロジェクトは前回同様に作成して下さい。
本ブログでは"002_celsius"としています。

ソースコード

前回と同様にサンプルコードをvisual studioで作成してください。
作成したらビルドしてエラーが出ない事を確認します。

プログラムの実行

こちらも前回同様、「デバッグの開始」です。
このような画面が出力されれば成功です。

解説

①#include <stdio.h>
こちらは前回と同じですね。

②main()
こちらも前回と同じです。

③int fahr;
こちらは変数の宣言文です
変数とは何かの値を格納する場所のことでここではfahrを指します。
その前のintは変数fahrの性質の事でC言語では型と呼びます。
intは整数の型であることを示します。
即ち整数型の変数であるfahrを宣言しています。

④//華氏の値を格納する変数
//はそれより後ろはコメントであることを宣言します。
コメントとはプログラムに影響を与えずに、読みやすさの為にプログラムの説明を加えるためにあるものです。
例えばこの行にあるint fahr;を見たとき
知識あるプログラマーはint部分をみてこれは整数の宣言であることは理解できますが
次のfahrが何を意味しているかまでは判りません。
もしかしたら人名の"Fahrenbach"と解釈する可能姓もあります。

そこでこのようにコメントを入れて自分以外がこのコードを読んでも容易に理解出来るようにするわけです。
ちなみにコメントは他人の為で無く、自分でもあとからコードを見返すと理解が難しくなるのでなるべく細かく入れることを推奨します。

但し先ほどのintのように誰でも理解出来る説明は不要です。
悪いコメント例
//整数型の華氏の値を格納する変数を定義する

⑤fahr = 0;
先ほどの変数fahrに整数値0を代入します。
一般的なイメージでは「=」は等しいという意味ですがC言語では代入になります。
つまりこの文を行うことでfahrに0が入ることを意味します。

⑥while (fahr <= 300) {
これはちょっと難しいので詳しく説明します。
C言語では大括弧「{」は、必ず「}」と対をなりません。
つまり
while (fahr <= 300) {

}
となります。
文は(fahr <= 300)が成り立つ間(真である間)実行し続けます。

⑦celsius = 5 * (fahr-32) / 9;
これは数式通りですね。

⑧printf (“%d d\n", fahr, celsius);
このprintfは前回と少々異なります。
初心者の方printfの使い方も戸惑うとおもいます。
最初はそのまま使うだけでも良いでしょう。

簡単に説明します。
実はprintfは、前回のhello worldのように固定文字だけでなく変数の表示もできます。
今回例では最初の%dがfahrに、次の%dがcelsiusに対応しています。
実際のの表示は"%d %d\n"が担っています。
つまり華氏 摂氏の順で表示されます。
※本では華氏と摂氏の間にタブを挟み等間隔になるようにしています。
当ブログではエスケープシーケンスを避ける為、あえてスペースで説明してます。

⑨fahr = fahr + 20;
華氏の変数に20を加えています

それではプログラムの流れに沿って解説します

①fahr = 0
まず変数fahrに0がセットされます。

②while (fahr <= 300) {
次にwhile(fahr <= 300)がありますのでfahrが300以内なら中の文を実行します

③celsius = 5 * (fahr-32) / 9;
公式に従って摂氏を求めます

④printf (“%d d\n", fahr, celsius);
華氏と摂氏を表示します。

⑤fahr = fahr + 20;
華氏の値を20進めます。
また先頭のwhileに戻り同様の作業を繰り返します。

華氏の値が300を越えたら終了になります。

演習問題

それでは演習問題を解いて見ましょう。
こちらも「プログラミング言語C」からの出題です。

演習 1-3 表の上に見出しを印字するように温度換算プログラムを変更せよ。

ポイントは、文字出力です。
文字出力はprintfを使えますね。
決まった文字なので前項で学習したhello worldと同様で良いことがわかります。
出力する文字は"華氏 摂氏"としましょう。
プログラムは比較的簡単です。
while行の上にprintf文を追加することで実現可能です。

こちらが回答。
“摂氏 華氏\n"の\nを忘れないようにして下さい。


今回はここまで。

 

※本プログラム教室はK&Rの「プログラミング言語C」をベースに進めています。