Pascal kezdôknek III.


Mindenek elôtt lássuk a múltkor adott feladat egyik lehetséges megoldását:
Uses Crt;
Var
a, b:integer;
begin
clrscr;
write('Kérem a téglalap egyik oldalát: ');
readln(a);
write('Kérem a téglalap másik oldalát: ');
readln(b);
writeln('A téglalap területe: ',a*b);
readkey;
end.

Ugye mindenkinek így mûködik a program?
Most meg fogunk ismerkedni a feltételes ugró utasítással. Ez az IF (ha) utasítás. Szintaxisa:
IF feltétel THEN BEGIN
.
.
End {*}
Else begin
.
.
end;
Az értelmezése: Ha a feltétel igaz, akkor a then utáni begin end közé zárt rész fog végrehajtódni. Ha a feltétel hamis, akkor az else utáni begin end; közé tett rész fog végrehajtódni.
Felmerülhet a kérdés, hogy miért nincs vesszô a *-al jelölt sor véglén? A válasz egyszerû, mert a feltétel vizsgálat még nem fejezôdött be és az else szó következik közvetlenül az end után.
Különben az else ág elhagyható és ha elhagyjuk, akkor az end után kell a pontos vesszô:
IF feltétel THEN Begin . . . . . End;
Most nézzük rá egy feladatot:
Töröljük le a képernyôt, olvassunk be egy számot egy integer típusú változóba és állapítsuk meg róla, hogy pozitív vagy negatív-e!
Kezdjünk is hozzá a feladat megoldásához.
Uses crt;
Var
valtozo:integer;
begin
clrscr;
write('Kérem a számot :');
readln(valtozo);
If valtozo<0 then begin
Write('A szám negatív');
End
Else begin
Write('A szám pozitív');
End;
Readkey;
End.

E rövid példa után könnyebben meg lehet érteni, hogy mit is kell a feltétel-nek beírni. A feltételnek két oldala van, amit egy reláció kapcsol össze. Mind két oldalon állhat változó is. Lehet az egyik változó a másik konstans. Két konstanst felesleges összehasonlítani, de a program akkor se jelez hibát, ha mind két oldalon konstans szerepel.
De milyen relációkat lehet használni, és mit jelentenek ezek?
valtozo1=valtozo2 A valtozo1 egyenlô valtozo2-vel
valtozo1<valtozo2 A valtozo1 kisebb, mint valtozo2
valtozo1>valtozo2 A valtozo1 nagyobb, mint valtozo2
valtozo1<=valtozo2 A valtozo1 kisebb egyenlô, mint valtozo2
valtozo1>=valtozo2 A valtozo1 nagyobb egyenlô, mint valtozo2
Több relációt a logikai utasításokkal lehet összekapcsolni.
Mit is azok a logikai változók?
AND és logikai kapcsolat
OR vagy logikai kapcsolat
XOR kizáró vagy logikai kapcsolat
Most a teljesség igénye nélkül ismertettem a logikai változókat, de nem szeretnék a dolgok közepébe vágni!
Most lássuk egy példát az elôbb leírtakra:
Töröljük le a képernyôt, olvassunk be egy számot egy integer típusú változóba és ha a szám nagyobb 10-nél és kisebb, mint 1000 vagy 1998, akkor írja ki a program, hogy a szám a megadott tartományba esett, ellenkezô esetben a szám a tartományom kívül esett.
A megoldás:
Uses Crt;
Var
valtozo:integer;
Begin
Clrscr;
Write('Kerek egy számot: ');
Readln(valtozo);
If ((valtozo>10)and(valtozo<1000))or(valtozo=1998) then
Begin
Writeln('A szám bele esett a keresett tartományba');
End
Else Begin
Writeln('A szám nem esett bele a keresett tartományba');
End;
Readkey;
End.
Mint a példából is látszik, hogy a kifejezéseket zárójelezni is lehet. A zárójelet a gép a matematika szabályai szerint bontja fel !
Az utolsó példa feladat ami egy kicsit gyakorlatiasabb lesz, mint az elôzô példák:
Olvassuk be három számot és állapítsuk meg, hogy szerkeszthetô-e belôle háromszög. (A szerkeszthetôség feltétele, hogy két oldal összege nem lehet kisebb a másik két oldal összegénél.)
Megoldás:
Uses Crt;
Var
a, b, c:integer;
Begin
Clrscr;
Write('Kérem az elsô számot: ');
Readln(a);
Write('Kérem a második számot: ');
Readln(b);
Write('Kérem a harmadik számot: ');
Readln(c);
If (a+b<c)or(a+c<b)or(b+c<a) then
Begin
Writeln('A háromszög nem megszerkeszthetô');
End
Else begin
Writeln('A háromszög megszerkeszthetô');
End;
Readkey;
End.
Ezt a programot elemzésre ajánlom!
Végül egy házi feladat:
Olvassuk be egy háromszög oldalát egy-egy integer típusú változóba és állapítsunk meg, derék szögû-e. (Akkor derékszögû egy háromszög, ha két oldal négyzetének összege egyenlô a harmadik oldal négyzetével. Az a négyzetet a*a-val lehet kiszámítani.)
Ha valami gondotok van, akkor nyugodtan írjatok és találunk rá megoldást! A cím ahová írhattok: magician@freemail.c3.hu

Jó feladatmegoldást kíván: