Vetvenie

Vetvenie používame ak chceme
  1. vykonať príkaz len pri splnení nejakej podmienky (ak je pekne vyvenči psa)
  2. ak je splnená podmienka vykonaj jeden príkaz ak nie je vykonaj iny (ak je rano daj si kavu inak si daj caj)
Na tvorbu podmienok budeme v pascale často používať relačné (porovnávacie) operátory Porovnávať môžme čísla (celé aj desatinné) znaky (porovnajú sa poradové čísla znakov v ASCII tabuľke) a texty (string)
Napríklad
'A' < 'G'
'M' < 'm' ... veľké písmena sú pred malými (teda sú menšie)
'5' < 'p' ... číslice sú pred písmenami
medzera < '2' ... medzera je pred všetkými bežnými znakmi
'Pavol' < 'Peter'
'Jano' < 'Janosik'

Príkaz IF - krátky

Syntax - ako sa to píše
if podmienka then príkaz;
podmienka
logický výraz (návratová hodnota je buď TRUE alebo FALSE). Najčastejšie tvoríme pomocou relačných operátorov.
Príkl: a>=5
príkaz
ľubovoľný pascalský príkaz (môže byť aj opäť if). Ak chceme pri splnení podmienky vykonať viac príkazov zabalíme ich do BEGIN ... END; čím vznikne jeden zložený príkaz a ten celý sa podľa podmienky buď vykoná alebo nevykoná.
Sémantika - ako to pracuje

Príkaz IF - úplný

Syntax - ako sa to píše
if podmienka then príkaz1 else príkaz2;
podmienka
logický výraz (návratová hodnota je buď TRUE alebo FALSE). Najčastejšie tvoríme pomocou relačných operátorov.
Príkl: a>=5
príkaz1, príkaz2
ľubovoľný pascalský príkaz (môže byť aj opäť if). Ak chceme pri splnení/nesplnení podmienky vykonať viac príkazov zabalíme ich do BEGIN ... END; čím vznikne jeden zložený príkaz a ten celý sa podľa podmienky buď vykoná alebo nevykoná.
Sémantika - ako to pracuje

Príklad
Načítaj celé číslo a zisti a vypíš,
či je väčšie ako 0.
Nacitaj 2 celé čísla a vypočítaj ich podiel

uses crt;
Var a: integer;
Begin
  Write('Zadaj cislo: '); Readln(a);
  if a>0 then writeln('je vacsie') else writeln('nie je vacsie');
  readln; 
End.  

uses crt;
Var a.b: integer;
Begin
  Write('Zadaj 2 cisla: '); Readln(a,b);
  if b<>0 then writeln('podiel:', a/b:0:2) else writeln('podiel: ERROR');
  readln; 
End.  
Príkaz if nám umožňuje vetvenie na dve možnosti (TRUE, FALSE) ak chceme rozraďovač na viac možností je použitie príkazu if trochu komplikované a je vhodnejšie použiť príkaz CASE.

Príkaz CASE

Tento príkaz nám umožňuje vetvenie na ľubovoľný počet príkazových ciest (niečo ako zuby hrablí) navyše nám umožňuje zadávať intervaly.
Syntax - ako sa to píše
case ordinálny_výraz of
prípad_1 : príkaz_1;
prípad_2 : príkaz_2;
...
prípad_n : príkaz_n;
else prikaz;
end
ordinálny_výraz
celočíselný, znakový alebo logický výraz (logické sa nepoužíva)
prípad
  • konštanty: číslo, znak (napr. 5, 'A', '-', #27,...)
  • intervaly: číselné 1..5, -10..10, znakové 'a'..'z', #65..#100
  • zoznam z konštánt a intervalov (1..5,20,100..2000)
Vetva else je nepovinná.
Sémantika - ako to pracuje
Na ulici sú čísla 1-200,
naši známy bývajú na číslach 50,65,66,158
Nacitaj číslo a vypíš, či je to náš známy

uses crt;
Var a: integer;
Begin
  Write('Zadaj cislo: '); Readln(a);
  case a of 
  50,65,66,158: writeln(a,' je nas znamy');
  1..200      : writeln(a,' nie je nas znamy');	    
  else          writeln(a,' nie je z nasej ulice');
  end;
  readln;
END. 
Úlohy