ページへ戻る

− Links

 印刷 

blike​/intro​/p0003 のバックアップの現在との差分(No.3) :: OSASK計画

osaskwiki:blike/intro/p0003 のバックアップの現在との差分(No.3)

« Prev[4]  Next »[5]
3: 2011-02-14 (月) 10:57:14 k-tan[6] ソース[7] 現: 2024-01-08 (月) 12:58:54 lina[8] ソース[9]
Line 1: Line 1:
 +TITLE:x
* (2) 変数で計算してみる [#e6e5fff5] * (2) 変数で計算してみる [#e6e5fff5]
-(by [[K]], 2011.02.13) -(by [[K]], 2011.02.13)
Line 12: Line 13:
 int a;  int a;
 a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;  a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;
- printf("kotae ha %d", a); + printf("こたえは %d", a); 
--これを実行すると、画面には kotae ha 55 と表示されます。これくらいになると、ただの計算機よりはかしこいかなという気になります。また、%dの意味も少し分かってきます。つまり%dの部分に変数の値が置き換わって表示されるというわけです。+-これを実行すると、画面には「こたえは 55」と表示されます。これくらいになると、ただの計算機よりはかしこいかなという気になります。また、%dの意味も少し分かってきます。つまり%dの部分に変数の値が置き換わって表示されるというわけです。
-ここまではいいでしょうか? -ここまではいいでしょうか?
*** (3) rei0006.c [#j3ab74ac] *** (3) rei0006.c [#j3ab74ac]
 int a, b, c;  int a, b, c;
- printf("tate?"); +// printf(); 
- scanf("%d", &a); +// scanf("%d", &a); 
- printf("yoko?"); + a = inptInt("たて? "); 
- scanf("%d", &b);+// printf("yoko?"); 
 +// scanf("%d", &b); 
 + b = inptInt("よこ? ");
 c = a * b;  c = a * b;
- printf("menseki = %d", c);+ printf("めんせき = %d", c);
-これを実行すると、縦や横の数字を聞かれるようになります。入力した数字は変数aとbに入ります。そしてそれを掛け算した結果がcに入って、面積として表示されます。 -これを実行すると、縦や横の数字を聞かれるようになります。入力した数字は変数aとbに入ります。そしてそれを掛け算した結果がcに入って、面積として表示されます。
--このようにscanfを使うと、数字を入力できるようになります。scanfの書き方はprintfに似ていますが、&がつくところが違います。またC言語では掛け算の記号に*を使います。+//-このようにscanfを使うと、数字を入力できるようになります。scanfの書き方はprintfに似ていますが、&がつくところが違います。またC言語では掛け算の記号に*を使います。 
 +-このように inptInt を使うと、数字を入力できるようになります。またC言語では掛け算の記号に*を使います。
-面積の計算は簡単すぎて面白くないですが、もっと難しい公式を覚えさせれば、それなりに役に立ちます。 -面積の計算は簡単すぎて面白くないですが、もっと難しい公式を覚えさせれば、それなりに役に立ちます。
*** (4) rei0007.c [#u570c5db] *** (4) rei0007.c [#u570c5db]
 float a, b, c, d;  float a, b, c, d;
- printf("shincho[cm]?"); +// printf("shincho[cm]?"); 
- scanf("%f", &a); +// scanf("%f", &a); 
- printf("taijyu[kg]?"); + a = inptFlot("しんちょう[cm]? "); 
- scanf("%f", &b);+// printf("taijyu[kg]?"); 
 +// scanf("%f", &b); 
 + b = inptFlot("たいじゅう[kg]? ");
 c = a / 100.0;  c = a / 100.0;
 d = b / (c * c);  d = b / (c * c);
 printf("BMI = %f", d);  printf("BMI = %f", d);
--これは身長と体重からBMIを計算するプログラムです。今回は整数の計算では不足なので、小数を扱っています。小数を覚えられる変数を作るには int の代わりに float を使います。そして scanf や printf では %d の代わりに %f を使うようにします。100ではなく100.0にしているのは、これは小数を使った割り算なんだよと強調するためです(このプログラムの場合は前後の文脈から判断して小数の割り算だとコンピュータに気づいてもらえるので、別に100でも問題はないですが)。+//-これは身長と体重からBMIを計算するプログラムです。今回は整数の計算では不足なので、小数を扱っています。小数を覚えられる変数を作るには int の代わりに float を使います。そして scanf や printf では %d の代わりに %f を使うようにします。100ではなく100.0にしているのは、これは小数を使った割り算なんだよと強調するためです(このプログラムの場合は前後の文脈から判断して小数の割り算だとコンピュータに気づいてもらえるので、別に100でも問題はないですが)。 
 +-これは身長と体重からBMIを計算するプログラムです。今回は整数の計算では不足なので、小数を扱っています。小数を覚えられる変数を作るには int の代わりに float を使います。そして printf では %d の代わりに %f を使うようにします。100ではなく100.0にしているのは、これは小数を使った割り算なんだよと強調するためです(このプログラムの場合は前後の文脈から判断して小数の割り算だとコンピュータに気づいてもらえるので、別に100でも問題はないですが)。 
 +-おっといい忘れていました。 / は割り算の記号です。
-ちなみにBMIは20~24くらいの範囲であればいいらしいです。あなたはどうですか? -ちなみにBMIは20~24くらいの範囲であればいいらしいです。あなたはどうですか?
*** (5) まとめ [#wa715d1c] *** (5) まとめ [#wa715d1c]
-今回は最後の例題に float が出てきましたが、今後 float はあまり出てこないのでそれほど重要ではないです。整数の計算だけでは困るなあということがもしあったら思い出してあげてください。 -今回は最後の例題に float が出てきましたが、今後 float はあまり出てこないのでそれほど重要ではないです。整数の計算だけでは困るなあということがもしあったら思い出してあげてください。
-変数は重要です。超重要です。 -変数は重要です。超重要です。
 +*** 指導者用の註釈 (普通の人は読まなくていいです) [#m81cb94b]
 +-inptInt()の実装例は次のとおり
 + int inptInt(const char *s, ...)
 + {
 +     int r;
 +     if (s != NULL) { sを表示(printf風に); }
 +     scanf("%d", &r);
 +     return r;
 + }
 +-このような関数を使うことで、scanfでポインタの利用を避けられる。初学者は&を付け忘れる場合が少なくなく、その場合ポインタ的におかしいために、アプリは不正なアクセスをしかねない。そういう危険を回避するためにこの段階でのメジャーなscanfの利用をしていない。
« Prev[4]  Next »[5]