Navigation


RSS: tutorialok Jelenleg 5 vendég és 0 tag van az oldalon.

feltételes elágazások

szerző: elodani
dátum: 2009-05-17
Kategóriák:
  Pascal/Alapok

Ebben a cikkben szeretném bemutatni a feltételes elágazásokat a pascal nyelvben. Ezt igyekszem egyszerűen és részletesen tenni azok kedvéért akik most kezdtek el programozással foglalkozni. (Lévén a pascal az oktatás egyik legkedveltebb nyelve).

Na ennyi bevezető után csapjunk is a lecsóba:

Teljes(és hivatalos) nevük szelekciós vezérlések

fajtái:
-egyszerű szelekció
(van egy feltétel, ha teljesül csinálunk valamit egyébként semmit)
-egyszerű szelekció else ággal
( van egy feltétel, ha teljesül csinálunk valamit, egyébként valami mást)
-többszörös szelekció
(van egy feltétel, ha teljesül csinálunk valamit, ha nem akkor van egy másik feltételünk és ha az teljesül valami mást csinálunk ha nem...és így tovább ameddig kell)
-esetkiválasztásos szelekció
(az előző egy spec. változata azt nézzük, hogy az adott kifejezés milyen halmazba esik -mi az értéke)

pascalul azt,hogy ha úgy mondjuk, hogy:
if ... then a különben pedig else

Na nézzünk valami definíció-szerűséget:
Ha feltételektől függően kell bizonyos műveleteket végrehajtani akkor ezt a tevékenységet szelekciós vezérlésnek nevezzük.

Huh, igérem többet nem fárasztalak hasonló száraz def. -ekkel, de hát ami kell az kell ;) megj:(ha most egy világ omlott össze benned, hogy nem olvashatsz több ilyen szépen megírt és érthető definíciót megnyugtatlak későbbi tutorialokba még tervezem... :D)

Nézzünk egy egyszerű példát:
Ez a kis progi kiirja egy számról az előjelét (+/-/0)
  1.  
  2. program pelda1;
  3. var szam:integer;
  4. begin
  5.   readln(szam);
  6.                  
  7.   if szam<0 then writeln('A szám negatív')
  8.   else if szam=0 then writeln('A szám amit beírtál: 0')
  9.   else writeln('A szám pozitív');
  10.                          
  11.   readln; {a végén egy üres beolvasással állunk meg
  12.                              hogy megnézhessük az eredményt}
  13. end.
  14.  


Ez a kis program beolvas egy számot, majd először megnézi, hogy negatív-e, ha nem akkor még mindig lehet pozitív vagy 0 tehát ezt is megnézzük, és a megfelelő szöveget kiírjuk.

Észrevettük, hogy az else előtt nem tettünk pontosvesszőt?
No de nem úgy volt, hogy a pascalban minden utasítás mögé ; kell?
Ez azért van mert a pascalban az if- else... szerkezet egy utasításnak számít.
Tehát else elé NE! tegyünk pontosvesszőt.

Ha több utasítást szeretnénk végrehajtani akkor azokat begin és end; közé kel raknunk.
valahogy így:
if feltétel then begin

művelet1;
művelet2;
...
művelet_sokadik;

end;

No elérkeztünk az esetkiválasztásoshoz is:

Ez azt vizsgálja, hogy egy adott kifejezés milyen halmazba esik (milyen értéket vett fel)
természetesen ez megoldható sok-sok
if- else if -el is de ez sokkal bonyolultabbá teszi kódunkat.

erre a pas. kifejezés a case .. of
nézzünk erre is egy példát:
  1.  
  2. program pelda2;
  3. var szam:integer;
  4. begin
  5.   readln(szam);
  6.  
  7.   case szam of
  8.     1..5:writeln('Egy és öt között van');
  9.     6..99:writeln('6 és 99 között van');
  10.     100:('pont 100');
  11.     else writeln('Nagyobb mint 100, vagy kisebb mint 1');
  12.   end;
  13.  
  14.   readln;
  15. end.
  16.  


ez kis progi kiír valamit egy számról értéke szerint.
(akinek ez case-es dolog nem volt teljes tiszta az eméssze egy kicsit, esetleg olvassa át még párszor)

Remélem elég érthető volt a dolog, és nem volt túl tömör. Ha mégis, nyugodtan írd meg nekem mi a bánatod ez ügyben.

Aki meg nem hiszi, járjon utána...