Pascal, valikulause

Pascal-programmi üldkuju:

program < nimi >;
type < tüübideklaratsioonid >;
var < muutujate deklaratsioonid >;
begin 
< lause 1>;
...
< lause n >;
end.

Programminäide 1: 

program Tervitus;
(* see asi siin on kommentaar - arvuti jätab sellised read *)
(* vahele, aga inimene saab nii programmi sisse märkusi teha. *)
var nimi : string;
vanus, aasta : integer;
begin
write('Tere, mina olen Pascal. Mis Sinu nimi on? ');
readln(nimi);
write('Väga tore, ' , nimi , '. Aga kui vana Sa oled?');
readln(vanus);
aasta := 1995 - vanus;
writeln(nimi, ', Sa oled sündinud ' , aasta, ' . aastal.');
writeln('Head aega!');
end.

VEELKORD VALIKUTEST (VALIKULAUSED).

Variandid: 

mittetäielik kahendvalik
täielik kahendvalik
mitmendvalik

Enamikus programmeerimiskeeltes:
kahendvalik - IF-lause
mitmendvalik - CASE-lause

a) mittetäielik kahendvalik - kui toodud tingimus on täidetud, täidetakse tingimuse järel olev lause, vastasel juhul aga ei tehta midagi.
....
if vanus<18
writeln('alaealine');
...
b) täielik kahendvalik - kui toodud tingimus on täidetud, tehakse IF-osa järel olevad tegevused, vastasel juhul ELSE-osa järel olevad tegevused.
...
if vanus<18
writeln('alaealine')
else
writeln('täiskasvanu');

NB! ELSE-sõnale eelneva lause järel ei ole semikoolonit - kogu IF ja ELSE on sisuliselt üks lause. 

c) mitmendvalik - mingi muutuja teatud väärtustele seatakse vastavusse mingid tegevused: 
…case vanus of
0..17: writeln('alaealine');
18..59: writeln('parimas tööeas');
60..100: writeln('pensionär');
101..1000: writeln('surematu');
end;

CASE-lausesse tuleb anda kas kindlad väärtused või väärtustevahemikud.

Veel üks märkus: Pascal- keeles töötavad laused BEGIN ja END ka n.ö. sulgudena - nende vahel paiknevaid lauseid vaadeldakse ühtse plokina. 
N: if <tingimus> then
begin
<lause 1>;
<lause 2>;
<lause 3>;
end
else
begin
<lause 4>;
<lause 5>;
end;

Programminäide 2.

program Küsimus;
var arv : integer;
begin
write('Mitu miilitsat on vaja, et lambipirni vahetada? ');
readln(arv);
if arv = 6 then
writeln('Tubli! Nii see on.')
else
begin
writeln('õige on 6 - üks seisab laual ja hoiab pirnist kinni... ');
writeln('...neli keerutavad nurkadest lauda... ');
writeln('...ja viimane valvab ukse juures, et elekter lampi ei pääseks.');
end;

Programminäide 3.

program LeiaPindala;
(* Programm suudab arvutada ringi, täisnurkse kolmnurga või ruudu *) 
(*pindala. Kasutaja ülesandeks on valida kujund ning anda lähteandmed *)
var kujund : char;
a,b,S : real;
(* Programmi eri osades võivad samal muutujal olla ka eri tähendused. *)
(* See võimaldab vähendada programmi mahtu, kuid muudab selle *)
(* ühtlasi raskemini arusaadavamaks - lühemate programmide puhul ei *)
(* ole eriti otstarbekas. *)
begin
writeln('Leiame kujundi pindala');
write('Kas kujund on ring (r), täisnurkne kolmnurk(k) või ruut (u)? ');
readln(kujund);
case kujund of
'r' : begin
write('Sisesta ringi raadius');
readln(a);
S := 3.14 * a * a;
end;
'k' : begin
write('sisesta kolmnurga kaatetid - a, b (tühikud vahele): ');
readln(a,b);
S := (a * b) / 2:
end;
'u': begin
write('sisestage ruudu küljepikkus: ');
readln(a);
S := a * a;
end;
end;
writeln ('Pindala on ',S:6:2);
end.

Case tekstimuutujaga

PROOVIGE ISE:

1) Silindri pindala ja ruumala arvutamine - kasutaja annab põhja raadiuse ning silindri kõrguse. NB! Korrektne sisestus ja väljastus!!!

2) 5 küsimusega mälumäng suvalisel teemal - arvuti esitab küsimuse, teatab, kas vastus oli õige või
mitte ning lõpuks ütleb punktisumma.


Kodutööde ja arvestusülesannete väljatrükkidel peab olema kommentaaripäis programmi tegevuse eesmärgi ning autori nime ja rühmaga.

N: program Silinder:

(* programm leiab silindri pindala ja ruumala *)

(* Autor: Aadu Kadakas AV-11 *)