Oszd meg!

Add a Twitter-hez Add a Facebook-hoz Add a Startlaphoz Add az iWiW-hez Add a Google Reader-hez

Közösség

Belépés

E-mail cím:
Jelszó:

Az IF feltétel és ELSE ága, elágazó utasítás

Az IF feltétel és ELSE ága, elágazó utasítás

Az elágazást az "if (feltétel) then utasítás1 else utasítás2" szerkezettel lehet megvalósítani. Az if kulcsszót egy feltétel követi. Ha a feltétel igaz, akkor a program végrehajtja a then utáni utasítást. Itt csak egy utasítás szerepelhet, ami lehet egy üres utasítás is. Az else ág nem kötelezõ. Ha mégis van, akkor kerül ide a vezérlés, amikor a feltétel nem teljesült. Itt is egy utasítás állhat. Fontos megemlíteni, hogy az else elõtti utasítás végén nem állhat ';'. Úgy lehetne fordítani ezt, hogy: Ha (feltétel) igaz akkor utasítás_1 különben Utasítás_2;. Az egész if..then…else egyetlen utasítás. Mindig készítsd el az alapszerkezetet, s a többit aztán írd be. Az alapszerkezet a következõ:

    if (feltétel) then
    begin
              
    end
    else
    begin
            
    end;
egyetlen pontosvesszõvel, újat csak akkor tégy, ha utasítást írtál a szerkezetbe, de akkor mindig tenni kell.

Megfelelõ gyakorlottság és adott feltételek mellett használhatod majd az alábbi formát

     if  feltétel  then  parancs1
                else  parancs2;

     Ha a feltétel igaz, akkor a parancs1 hajtódik végre, egyébként a parancs2 hajtódik végre. Fontos megjegyeznünk, hogy ha az if feltételvizsgálatnak van else ága, akkor a parancs1 után nem rakunk pontosvesszõt. Természetesen itt is mindkét parancs helyett tehetünk több egymást követõ utasítást is. Ilyenkor minden esetben a begin ... end kulcsszavakkal zárjuk egybe az egymást követõ parancsokat:

if  feltétel  then
begin

       parancs1i;
       parancs2i;
           ...
       parancsNi;
end

else
begin
        parancs1h;
        parancs2h;
                         ...
       parancsNh;
end;

Az elágazás mindkét ágának használatára az egyik elõzõ példa módosított változatát oldjuk meg! Az a feladat, hogy eldöntsük egy számról kisebb-e mint 100, de azt is írjuk ki, ha nem! Íme a kód:

 

  Program Elagazas;         { Programunk neve. }

  Uses crt;                 { Crt unit csatolása. }

 

  var szam  : Integer;                        { Változó deklarálása (létrehozása). }

 

  BEGIN                                       { Fõprogram kezdete. }

    ClrScr;

    Write('Add meg a számot: ');

    ReadLn(szam);                             { Bekérjük a számot. }

    if (szam<100) then                        { Ha kisebb 100-nál akkor }

    begin

                  Write('Ez a szám kisebb mint 100.');

    end
    else

    begin

            WriteLn(’A szám nem kisebb mint 100’); {de nem tudjuk nem 100 e éppen }

    end;

   ReadKey;

  END.                                        { Fõprogram vége. }

Egy másik, már ismert feladat, de else ág alkalmazásával megoldva. A feladat egy számról eldönteni, hogy páros vagy páratlan.

A feladatot a szám 2-vel történõ maradékos osztásával oldjuk meg. Ha a szám 2-vel történõ osztásának maradéka 0, akkor a szám páros egyébként páratlan.

 

program if_then_else;

var                Deklarációk

szam:byte;

begin           FÕPROGRAM

ReadLn(szam); Értéket adunk a szam változónak

 

if szam mod 2=0 then                    HA a szam és 2 maradéka 0 AKKOR

begin

            write('A szam paros');

end                    

else                                                EGYÉBKÉNT

begin

write('A szam paratlan');                 Írd ki ....

end;

ReadLn;                                            Vár egy Enter leütésre

end.

 

Feladat: Készítsünk programot, amely bekér két egész számot, majd kiírja szavakkal az alábbi lehetõségek egyikét:,

-         az elsõ szám kisebb,

-         az elsõ a  nagyobb, vagy

-         egyenlõ a két szám.

Megoldás: A két számot összehasonlítjuk, ha az elsõ szám kisebb, mint a második, akkor ezt kiírjuk. Ha ez nem igaz (else), akkor a két számot újra összehasonlítjuk, ha az elsõ szám a nagyobb, akkor kiírjuk, hogy az elsõ szám a nagyobb. Ha ez sem igaz (belsõ feltétel else ága) akkor pedig kiírjuk, hogy a két szám egyenlõ.

program Pelda21;

var a,b:integer;

begin

 write('Kerem az elso szamot: ');

 ReadLn(a);

 write('Kerem a masodik szamot: ');

 ReadLn(b);

 

if a<b then

begin
       WriteLn('Az 1. szam a kisebb.')
end

else

begin

if a>b then

begin

WriteLn('Az 1. szam a nagyobb.')

end

else

begin

WriteLn('A ket szam egyenlo.');

end;

end;

end.

 

A megoldásnál elágazások egymásba ágyazása történik. Ekkor a program áttekinthetõségét a fenti strukturált írás nagyban segíti. Miután nem teljesült, hogy a<b, még két eshetõség maradt, ezt vizsgáltuk meg a hamis ágon, ahol egy teljes IF THEN ELSE utasítást helyeztünk el. A feladatot megoldhattuk volna három külön IF utasítással is, de úgy nagyon nem elegáns!

Az eddig tárgyalt programvezérlési szerkezetekhez is meg kell tanulnunk egy fontos szabályt, mégpedig ha egy vezérlési szerkezetben egynél több utasítást szeretnénk végrehajtani, mindenképpen kötelezõ begin end közé zárni az utasításokat. Ezt a módszert érdemes egyetlen utasításnál is követni, hogy a késõbbiekben ne érjenek kellemetlen meglepetések. Ugyanis az ilyen hibákat nagyon nehéz javítani.