if文、case文の解説


講義の内容もレベルアップしてきて、 講義を聞いても何がなんだか?って人もいるかと思います。
そういう人のためにもう一度、サンプルプログラムを基に、 if文、case文の解説をしたいと思います。
条件分岐は重要な概念なので、しっかり理解してください。

まず、簡単なサンプルプログラムです。これは、教科書P32の練習問題8です。
西暦、月、日から曜日を求めるプログラムです。

01: program zellar;
02: uses SysUtils;
03:
04: var year,month,day,week:integer;
05:
06: begin
07:    write('何年?: '); readln(year);
08:    write('何月?: '); readln(month);
09:    write('何日?: '); readln(day);
10:   
11:    if(month=1)or(month=2)then begin
12:       month:=month+12;
13:       year:=year-1;
14:    end else begin
15:    end;
16:    year:= year + (year div 4) - (year div 100) + (year div 400);
17:    week:=( year + (( 13 * month + 8 ) div 5 ) + day ) mod 7;
18:
19:    case week of
20:      0 : writeln('日曜日です');
21:      1 : writeln('月曜日です');
22:      2 : writeln('火曜日です');
23:      3 : writeln('水曜日です');
24:      4 : writeln('木曜日です');
25:      5 : writeln('金曜日です');
26:      6 : writeln('土曜日です');
27:    end;
28:    
29:    readln;
30:    
31:  end.
ソースファイル(zellar.txt)
ちなみにこのソースには、{$APPTYPE CONSOLE}ってのが書いてないので、
適宜書き加えてください。

それでは、プログラムの解説をします。

tr>
1行目〜9行目 この部分は解説はしなくても大丈夫だと、、、思いますが、、、
もし、この部分がわからない人は、プログラムsumの解説を読んでください。
11行目〜15行目 この部分が、今回初登場のif文です。ifのあとの条件が成り立てばthenの後を実行 し、成り立たなければ、他のことをするというようにプログラムを分岐させること ができます。
ここでは、month=1、もしくは、month=2の場合、つまり1月か2月の場合に month:=month+12; year:=year-1;を実行します。 ちなみに、このようにmanthに12を足して、また、manthに入れるということも可能 です。このような方法は、後ででてくる定回反復のときによく使われます。
もし、1月が2月で無かった場合は、何もしません。 このサンプルプログラムはelseの後に、わざと、中に何もないbegin〜endを書いて いますが、これは通常は書く必要はありません。 ここで一つ注意ですが、elseの前のendには;(セミコロン)を付けてはいけません。 これは、みんな良く間違えるので覚えていてください。
16行目〜17行目 この部分はzellarの公式そのままです。zellarの公式は教科書に載っていますので、そちらを見てください。単なる計算なので説明はなくても大丈夫でしょう?
19行目〜27行目 この部分も、新しくでてきた case文の考え方です。 case文はある値を基に多岐に分岐します。 ここでは、weekが0なら'日曜日です'と、1なら'月曜日です'と、、、以下同じよ うに分岐します。 そんなに難しくはないんじゃないかな?
注意ですが、caseの分岐には、real型は使えません。よくひっかかります。
27行目〜31行目 これは、毎度おなじみ、ウインドウすぐに消えるのを防ぐreadlnとプログラム終了のendです。

以上で、説明を終わりますが、こんな説明でだいたいわかりましたか?
プログラムを理解するには、自分で書いて、実際に動かすのが一番です。
もし、わからなければメール、もしくは、講義中に聞いてください。

最後に、下が、プログラムの実行画面になります。


ちょっと見た目が違うけど、やってることは同じなので気にしないでください。


表紙に戻る

サークル紹介