講義の内容もレベルアップしてきて、
講義を聞いても何がなんだか?って人もいるかと思います。
そういう人のためにもう一度、サンプルプログラムを基に、
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)
それでは、プログラムの解説をします。
| 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です。 |
以上で、説明を終わりますが、こんな説明でだいたいわかりましたか?
プログラムを理解するには、自分で書いて、実際に動かすのが一番です。
もし、わからなければメール、もしくは、講義中に聞いてください。
最後に、下が、プログラムの実行画面になります。

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