情報科学演習
2010.5.31
Back to index page
- 本日の作業内容
- 前回の復習
- 選択処理
先週に引き続き選択処理の練習をします.条件式がだんだんと複雑になっていく
ので注意してください.
- if else 文
if 文は原則として二者択一の処理ですが,それでは不便な場合が多い
ので,「そうでないならば」の else の方にもう一度 if
を入れて処理することがあります.例題3.4にあるような
60 ≦ x ≦ 80 のような条件式の場合,else if で二つ
の判定を利用することもあります.
ただし,else if は条件分岐の数が増えてくると書きにくくなるので,
他の工夫があります.それがp.30から紹介されている「論理演算子」です.
- 論理演算子
論理演算子は「かつ」もしくは「または」に相当する処理を行ってくれます.先
ほどの, 60 ≦ x ≦ 80 のような場合は,xが60以上で,かつ,80以下とい
うことを判別するので,論理演算子の「かつ」( && )を使う
と次のように,一つの if で書けます.
- switch 文
分岐処理が多数ある場合に switch 文が役に立つことがあります.た
だし,switch 文では「定数式」と呼ぶ条件のところが整数型の単純な
もの(文字型でも動作可能ではありますが)が必要なので,使うときに注意が必要
です.次に示す例は,テキスト版のさいころシミュレータ(バーチャルさいころ
くん Ver 0.1)ですが,教科書の例題
3.7よりもわかりやすい(?)と思うので,参考にしてみてください.
このプログラムには日本語文字が含まれているので,画面に表示したものをgeditに張りつけて保存する場合には,文字コードに気を
付けてください.「現在のロケール」になっていれば大丈夫です.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
srand((unsigned) time(NULL));
int dice;
char *str1, *str2, *str3, *str4, *str5, *raw1, *raw2, *raw3;
str1 = "● ";
str2 = " ● ";
str3 = " ●";
str4 = "● ●";
str5 = " ";
dice = rand() % 6 + 1;
switch (dice) {
case 1: raw1 = str5;
raw2 = str2;
raw3 = str5;
break;
case 2: raw1 = str3;
raw2 = str5;
raw3 = str1;
break;
case 3: raw1 = str1;
raw2 = str2;
raw3 = str3;
break;
case 4: raw1 = str4;
raw2 = str5;
raw3 = str4;
break;
case 5: raw1 = str4;
raw2 = str2;
raw3 = str4;
break;
case 6: raw1 = str4;
raw2 = str4;
raw3 = str4;
break;
}
printf("出た乱数は %d \n", dice);
printf("┌───┐\n");
printf("│%s│\n", raw1);
printf("│%s│\n", raw2);
printf("│%s│\n", raw3);
printf("└───┘\n");
return(0);
}
|
- 実習
まずは,教科書のp.35までの内容をしっかり理解しましょう.ただし,例題3.6
は飛ばします.その後で本日の実
習作業を行います.
- 宿題
授業の最後に宿題の案内をしますので,注意していて下さい.
目次ページに戻る