Strukturované příkazy With a Case
Příkaz With
Účel příkazu with vysvětlí nejlépe příklad.
type tComplex = record Re,Im : real end; var z : tComplex; Re: Real;
...
Re := 1; with z do begin Re := 0; Im := 1; end; Writeln (Re,' ',x.Re);
Vypíše ' 1.00000000000000E+0000 0.00000000000000E+0000', protože unvitř příkazu with přestala být vnější proměnná Re vidět a byla zakryta identifikátorem složky záznamu z.
Příkaz Case
je příkaz, který jsem doposud tajil. Občas se ale hodí nahradit řadu podmíněných příkazů např.
if n=0 then f:=1 else if n=1 then f:=x else if n=2 then f:=x*x else if n=3 then f:=x*x*x else if n=4 then begin f:=x*x; f:= f*f; end; else begin f:=exp(ln(x)*n); end;
následujícím strukturovaným přikazem
case n of 0: f:=1; 1: f:=x; 2: f:=x*x; 3: f:=x*x*x; 4: begin f:=x*x; f:= f*f; end; else f:=exp(ln(x)*n); end;
Část začínající else lze vynechat a také můžeme místo jednoho čísla psát seznam čísel a intervalů, které se ale nesmějí překrývat
case c of '-': n:=-n; 'a'..'z','_': n:=n+1; 'A'..'Z', '0'..'9','$': n:=n-1; end; // kód nemá žádný význam