Programozzunk Pascal nyelven II.


Egy rövid szünet után újult erôvel folytatatjuk a programozás rejtelmeivel való ismerkedést. Elôször lássuk a múltkori feladat megoldását. De mi is volt a feladat? "Töröljük le a képernyôt és az elsô sorba, írjuk ki, hogy ELSô a második sorba azt, hogy MÅSODIK és egy billentyû lenyomására várjunk." Lássuk akkor egy lehetôséget, hogy hogyan lehetett volna megoldani:
Uses crt;
Begin
ClrScr;
Writeln('ELSô');
Write('MÅSODIK');
Readkey;
End.
Ehhez szerintem más senkinek nem kell kommentár.
Most lépjünk egy kicsit tovább. Az elôzô részben szó esett a deklarációs részrôl, de eddig nem használtuk. Nézzük tehát ezt a részt meg egy kicsit, de elôtte ismétljük át egy kicsit, hogy mi is ez.
A deklarációs részben kell megadni, hogy milyen változókat és/vagy konstansokat fogunk használni. A változóknál még azt is meg kell adni, hogy milyen típusúak lesznek. A megadás módja a következô:
változó:típus;
De hát milyen típusú is lehet egy változó?
A Pascal igen gazdag lehetôséget kínál a változók deklarációjára, viszont az érthetôség kedvéért csak az öt alapot sorolom fel, de késôbb még ezzel a témával részletesebben fogok foglalkozni.
integer - egész szám -32768..32767 között
real - valós szám 2.939*10^-39..1.701*10^38 között
char - egy karakter (pl. betû vagy valamilyen jel az ASCII kódtábla szerint.)
string - egy legfeljebb 255 karakter hosszúságú idézet
boolean - logikai változó, amelynek az értéke csak igaz (ezt true-nak írjuk) vagy
hamis (false) lehet;
Most már csak az a kérdés, hogy hogyan kell ezt a programba használni?
A változónak értéket a := (legyen egyenlô) szimbólummal lehet adni.
A változókkal kapcsolatban felmerül még egy kérdés. A változók a kezdô éréket
honnan kapják meg?
Legtöbbször a billentyûzet a bevitelei eszköz, tehát innét. Na, de hogyan?
Most meg kell, hogy ismerjünk egy másik parancsot és ez a READ parancs. Ezzel a paranccsal lehet adatot bevinni, de mi is a használati módja?
A használata READ(változó);
Mint a write-nak is létezik egy olyan formája, ami a kiírás után sort emel a read- nek is van egy ilyen változata, ami a READLN. A szintaxisa megegyezik a read utasításéval.
Ennyi elmélet után jöjjön egy-két példaprogram:
Feladat: Töröljük le a képernyôt olvassunk be egy egész típusú számot és ezt egy konstanssal szorozzuk meg. Az eredmény a képernyôn jelenjen meg.
Uses Crt;
Const {A konstansok megadását mindig ezzel a szóval kell kezdeni !}
konstans=5; {Konstans deklarációja, ezek után ahol az a szó szerepel, hogy konstans az egyenlô azzal, mintha mindenhová 5-öt írtunk volna}
Var {A változók deklarációja itt kezdôdik !}
Valtozo : integer; {A Valtozo egy integer típusú változó}
Begin {Itt kezdôdik maga a program}
ClrScr; {Letöröljük a képernyôt}
Write(`Kérem a számot:`); {Kiírja azt, hogy "Kérem a számot:"}
Readln(Valtozo); {Beolvassuk a Valtozo erteket}
Write(`A két szám szorzata:`,Valtozo*konstans); {Kiíratjuk a szöveget és a Valtozo*konstans EREDMÉNYÉT. A Pascal csak akkor ír ki szöveget, ha `` közé van téve !}
Readkey; {Egy billentyû lenyomására vár}
End. {Itt a vége !}
Ebben a programban nincs hiba vizsgálat, tehát feltételezzük, hogy nem betût írtunk be és a beírt szám belefér az integer típusba.
Felmerülhet, egy kérdés, hogy miért kell konstanst használni, mikor lehetne minden hol az értékét használni? Erre nagyon egyszerû a válasz: Ha sok helyen használja valaki ugyan azt az értéket és tesztelés céljából meg akarja változtatni csak egy helyen, kell átírni nem, pedig mindenhol.
Feladat: Töröljük le a képernyôt és olvassunk be egy sor szöveget és adjunk hozzá egy konstans szöveget.
Kezdjük is hozza a feladat megoldásához.
Uses crt;
Const
szovegkonst=`ido van`;
var
szovegvalt:string;
begin
clrscr;
write(`Kérek egy egysoros szoveget:`);
readln(szovegvalt);
writeln(`Szoveg az osszefuzes utan: `,szovegvalt,szovegkonst); {*}
readkey;
end.
Szerintem a *-al jelölt sorról kell külön beszélni. Itt az történik, hogy elôször kiírja a `` között lévô szöveget. Ezzel még nincs is baj. Ezek után a szovegvalt értékét jeleníti, meg és most jön a csoda, a szovegkonst értéke közvetlenül a szovegvalt után íródik. De hát vesszô van a két szó között, annak akkor mi a jelentése? Hát annyi, hogy a változót és a konstanst elválassza egymástól és két külön dologként, értékelje. De mivel nem kapott arra utasítást, hogy tegyen szünetet a két szó közé nem is tett. De akkor hogyan lenne ez a sor ha szünetet is szeretnék a két szó közé?
Hát így:
writeln(`Szoveg az osszefuzes utan: `,szovegvalt,` `,szovegkonst);
A két aposztróf közé tett üres karakter biztosítja, hogy a két szöveg ne folyjon össze.
Meg egy feladat kicsengetés elôtt: Töröljük le a képernyôt, kérjünk be két egész számot (integer típusút) és ezek összegét egy harmadikba tároljuk. Ennek a harmadik változónak az értékét írassuk ki.
A feladat nem nehéz, tehát oldjuk meg !
Uses crt;
Var
elso,masodik,harmadik:integer;
begin
clrscr;
write(`Az elô szám:`);
readln(elso);
write(`A második szám:`);
readln(masodik);
harmadik:=elso+masodik; {Ebben a sorban történik a két változó összeadása és a harmadikban történô eltárolása}
writeln(`Az osszeg: `,harmadik); {Az eredmény kiírása}
readkey;
End.
Mára ennyi, de nem ússzátok meg feladat nélkül.
Lássuk tehát a feladatot:
Töröljük le a képernyôt, kérjük be egy téglalap két oldalát (integer típusúak!) és írjuk ki a téglalap területét. (A téglalap területét a két változó szorzatából lehet megkapni.)
Ez már egy kicsit gyakorlatiasabb feladat, nem?
A megoldást a következô számban közlöm, de szerintem mindenki meg fogja
tudni, csinálni.
Ha valami gondod van, akkor nyugodtan írjál és keresünk rá megoldást. Ha még nem tudnád, leírom, hogy hova fordulhatsz: magician@freemail.c3.hu

Jó programozást és sok sikert kívánok.