A Variable of Changing — 変移に関わる可変値

In the last step, we took a look at getting numbers into the program from the command line.
先のステップで、コマンドラインから数値をプログラム内に取り入れる方法を見てみました。

In the process, we used two variables:
序でに、二つのいわゆる変数を使いました。

double a = strtod( arguments[ 1 ], NULL );
double b = strtod( arguments[ 2 ], NULL );

In these two lines, a and b are variables. (strtod() is a function, but that’s for a later step.)
この2行には、 ab は変数と言うものです。(strtod()は関数ですが、その話は今度にしましょう。)

You can say they are placeholders, or you can say they are places to put numbers. We give the command line arguments to strtod(), and then strtod() gives us back whatever number it finds at the front of the argument. And we put those numbers in a and b until it’s time to print the numbers with printf():
位置留め役とか数値の置き棚とか言えば良いでほう。コマンドラインからの引数を strtod() に引き渡すと strtod() がその頭部に見つかった数値を返してくれるのです。するとその数値を printf() によって表示するときまでに ab のところに預けておきます。

printf( “%.9g * %.9g == %.9g\n”, a, b, a * b );

We need another example. Say we want to make a chart of shoe size conversions. Hmm —
さて、もう一つの例が欲しいでしょう。例えば、靴サイズの変換を表にまとめたい場合はどうなりますか?ええっと

We declare three variables for holding double precision floating point numbers, which we give the names start, end, and step. We set start equal to 5
3個の2倍正確性小数値用の変数を宣言して、名前を start, end, 及び step とします。 start の値を 5 に、

double start = 5;    /* inches */

and end equal to 13.6,
end の値を 13.6 にして

double end = 13.6;

and we don’t set a value for step yet.
step の値はまだ指定しません。

double step;

And we remind ourselves in the comment that we intend these to be inches.
そして思い出せるように、この値はインチのつもりだという注釈を残します。

Now we declare a series of steps that run in a loop. (More about loops and conditionals later.) At the start of the loop, step is set equal to start. (Ick. Did I say that?) The loop is set to continue as long as step is less then end. And once we finish the steps of the loop, we add 0.5 to step.
これをもってループに回る循環手順の定義を宣言します。(循環文及び条件文については後に取り上げます。)手順の最初は stepstart の値を設定します。(変数名は意味あるべきです。)そして手順は、 stepend より小さい限りやりくりが続きます。ループの中身の手順が終わると step0.5 を足します。

for ( step = start; step < end; step = step + 0.5 )
{

There’s only one step to the loop, but it includes multiplying step by 2.54 (the conversion factor for converting inches to centimeters) and printing the step and the conversion. (It’s a big step. C tends to be that way.)
ループの中身の手順は、実は、一段階で終わります。ただし、その段階には step をインチからセンチへの変換値の 2.54 に掛けて、変換の結果を一緒に表示します。(一段階と言って、大きく踏ん張ったようですね。C言語はそんな感じです。)

    printf( “%7.1f .. %7.1f\n”, step, step * 2.54 );

And we mustn’t forget to end the loop.
ループの終了点を宣言するのを忘れてはいけません。

}

I added a little more, so you can tell the program to start and stop at different places on the command line, and you can find it here.
開始値と終了値をコマンドラインから変更できるようにもう少しコードを足したまま、ここに置きました。

Save it as “shoechart.c” or something appropriate and compile it with
“shoechart.c” など、適切なファイル名で保存したら、

cc -Wall -o shoechart shoechart.c
./shoechart
inches — cm
5.0 .. 12.7
5.5 .. 14.0
6.0 .. 15.2
6.5 .. 16.5
7.0 .. 17.8
7.5 .. 19.1
8.0 .. 20.3
8.5 .. 21.6
9.0 .. 22.9
9.5 .. 24.1
10.0 .. 25.4
10.5 .. 26.7
11.0 .. 27.9
11.5 .. 29.2
12.0 .. 30.5
12.5 .. 31.8
13.0 .. 33.0
13.5 .. 34.3

Well, we can see that the shoe sizes in the stores are not exact conversions. (But I think we knew that?) But the numbers are close.
まあ、お店のサイズはピッタリの数値的な正確性ではないのがおわかりですね。それでも、お店のサイズにちかいでしょう。

Now, are you wondering why I set end to 13.6 instead of 13.5? Good for you. I’m glad you were paying attention. Computers are not as smart as we want to believe they are. But that will be hard to explain now, so I hope you’ll let me save that for later, too.
ところで、 end を 13.5 ではなく、 13.6 に設定したのを不思議に思っていらっしゃるのではないでしょう?よく気がつきましたようね。コンピュータは思いがちほどの賢いものではないのです。ただ、ただ今のところではちょっと説明しにくいのがありますので、これも後回しにして、後に説明させていただけませんでしょう?

reiisi について

Joel Rees is a sometimes English teacher and sometimes programmer working and living with his family in Japan. ジョエルリースという者は場合によって英語講師、場合によってプログラマです。家族と共に日本に住んでいて、日本で仕事をしています。 You can find some of my projects at ボクのプロジェクトのいくらかを http://sourceforge.net/users/reiisi and 及び http://sourceforge.jp/users/reiisi/ にてご覧いただけます。
カテゴリー: C Primer, Computer Languages, Computer Programming, Computers パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です