*CÂU LỆNH CASE OF:
-CẤU TRÚC:
CASE <biểu thức> of
tập hằng 1: <lệnh 1>;
tập hằng 2: <lệnh 2>;
............
tập hằng n: <lệnh n>;
[ELSE
<lệnh n+1>;]
end;
{Các giá trị trong biểu thức và giá trị trong tập hằng phải có cùng kiểu và phải là kiểu vô hướng đếm như: kiểu nguyên, kiểu logic, kiểu kí tự, kiểu liệt kê. vd: 12,sin(40),abs(a)với a=4,....}
-Ý nghĩa: lần lượt so sánh giá trị của <biểu thức> với giá trị của <tập hằng> nếu bằng nhau thì thực hiện "câu lệnh" ngay sau tập hằng đó, rồi rời khỏi vòng lặp(nếu có nhiều biểu thức có giá trị bằng nhau thì nó sẽ thực hiện câu lệnh của biểu thức trên cùng). Ngược lại nếu không có biểu thức nào có giá trị bằng tập hằng thì thực hiện câu lệnh else và rời khỏi vòng lặp( nếu không có câu lệnh else thì kết thúc vòng lặp).
-Ví dụ:
PROGRAM timgiatri;
USES crt;
VAR max,min,k,n,i:integer;
a: array[1..1000] of integer;
Procedure nhap;
Begin
write('Nhap so do dai cua day so: '); readln(n);
writeln('Nhap day so: ');
i:=0;
repeat
inc(i); read(a);
until i=n; {hoặc for i:= 1 to n do read(a);}
writeln;
End;
Procedure timmax;
Begin
nhap;
max:= a[1];
for i:= 1 to n do if a >max then max:= a;
writeln('Gia tri lon nhat cua day so la: ',max);
End;
Procedure timmin;
Begin
nhap;
min:= a[1];
for i:= 1 to n do if a < min then min:= a;
writeln('Gia tri nho nhat cua day so la: ',min);
End;
Procedure timsoluongso;
Var j:integer;
Begin
nhap;
write(' Nhap so can tim: '); readln(k);
j:=0;
for i:= 1 to n do if a = k then inc(j);
if k=0 then writeln('Khong co so ',k,' trong day so') else writeln('Co ',j,' so ',k,' trong day so');
End;
BEGIN
clrscr;
writeln('Hay nhap mot so de den chuong trinh ban muon lam:');
writeln(' 1. Tim gia tri lon nhat trong day so');
writeln(' 2. Tim gia tri nho nhat trong day so');
writeln(' 3. Tim so luong mot so nao day');
case i of
1: timmax;
2: timmin;
3: timsoluongso;
else writeln(' Ban khong thuc hien chuong trinh nao!');
readln;
END.
*CÂU LỆNH REPEAT UNTIL:
-Cấu trúc:
REPEAT
<lệnh 1>;
<lệnh 2>;
.........
<lệnh n>;
UNTIL < biểu thức logic >;
-Ý nghĩa: lặp lại các <lệnh 1> đến <lệnh n> đến khi <biểu thức logic> đúng thì kết thúc.
-Ví dụ: trong phần thủ tục "nhap" trong chương trình "timgiatri" của phần CASE OF:
repeat
inc(i); read(a);
until i=n; {hoặc for i:= 1 to n do read(a);}
-Chú ý: +câu lệnh for do có thể thay thế cau lênh repeat until nhưng trong một số trường hợp bắt buợc phải dùng repeat until.
+câu lênh này sẽ lặp lại số vòng lặp không xác định nên trong quá trình lập trình phải chú ý để không gặp phải vòng lặp vô hạn. Như ta có thể dùng: tính toán làm sao cho biến trong <biểu thức logic> đạt giá trị đúng:
inc(i); hoặc i:=i+1;
dec(i); hoặc i=i-1;
.......
có thể dùng nhiều lệnh khác nhau để thay đổi giá trị của i trong vòng lặp