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ó:

Kiírás a képernyőre - Write, WriteLn eljárás

Kiírás a képernyőre - Write, WriteLn eljárás

     Ha valamit ki szeretnénk írni a képernyőre, azt amint az előző példában is láthattuk, a write és WriteLn (write = ír, write line = sort ír) parancsokkal tehetjük meg.

Az algoritmusban szereplő        KI(változó)       tevékenység, utasítás kódolására használjuk a Write illetve WriteLn parancsokat. Akkor is használjuk, ha az algoritmusban az adatbekérést szeretnénk pontosabbá, érthetőbbé tenni egy kis szöveg megjelenítésével.

   A Pascal programozásban a szabványos kimeneti periféria (standard output) a képernyő, a kiírás eredménye ezért alapértelmezésben itt jelenik meg.

            write(paraméterek);

            writeln(paraméterek);

 

A vesszővel elválasztott elemekből álló paraméter lista az alábbiakból állhat:

- az aposztrófok között megadott szöveg,

- változónév,

- konstans,

- aritmetikai kifejezés,

- logikai kifejezés,

- függvényhívás.

A writeln eljárás paraméterek nélkül is megadható:

            writeln;

Hatására az aktuális képernyő-poziciót jelölő kurzor a következő sor elejére áll. Amennyiben a writeln eljárás hívása előtt a kurzor a sor elején állt, úgy a hívás hatására üres sor keletkezik a képernyőn.

A write és a writeln eljárások közötti különbségek az alábbiak szerint foglalhatók össze:

- a write eljárás a kurzor által mutatott pozíciótól ír, és a kurzort a kiírás utáni pozícióban hagyja,

- a writeln eljárás is a kurzor által mutatott pozíciótól kezdve ír, azonban a paraméterek képernyőre való kiírása után a következő sor elejére állítja a kurzort.

  A write parancs kiírja a megadott szöveget a képernyőre. A kurzor közvetlenül a kiírt szöveg után marad, így a következő kiírásnál rögtön ez után íródik ki a további szöveg. Például:

program Pelda01a;
begin
 write('Hat fele:');
 write(3);
end.

     Ez a program a következőt fogja kiírni a képernyőre:

Hat fele:3_

(Mielőtt tovább olvasol, próbáld magad kitalálni a magyarázatot, illetve futtasd le a programot!)    

 Az első write parancs kiírja a Hat fele: szöveget. A kurzor közvetlenül a szöveg mögött marad. A második write kiírja a 3 számot. A kurzor a 3-as mögé kerül. Megfigyelhettük, hogy ha szöveget akarunk kiíratni, akkor azt mindig aposztrófok ('pont ez a szöveg ’) közé kell raknunk. Az aposztrófok közé írt szöveg egy az egyben kiíródik a képernyőre. Ha számot vagy valamilyen változó értékét írjuk ki, akkor elhagyjuk az aposztrófokat. Egy write paranccsal egyszerre kiírhatunk szöveget és számot ill. változót is, ekkor az egyes elemeket (szöveg, szám, változó) vesszővel választjuk el egymástól. Az előző programunk így is kinézhetett volna, a végeredmény ugyanaz:

program Pelda01b;
begin
 write('Hat fele:',3);
end.

(Hasonlítsd össze az órán elhangzottakkal!)

     Mivel itt mindkét példánkban a 3-ast csak kiírtuk, nem számoltunk vele (és nem egy változó értékét írattuk ki), ezért természetesen ebben az esetben a 3-as számot kiírhatjuk úgy is, mint karaktert, tehát a következő képen:

program Pelda01c;
begin
 write('Hat fele:3');
end.

     Az alábbi két példában jól láthatjuk a különbséget a szöveg, ill. szám kiírása között:

program Pelda02a;
begin
 write('2+8');
end.

program Pelda02b;
begin
 write(2+8);
end.

(Lásd meg a kettő között a különbséget, és próbáld is le!)

     Az első példa pontosan azt írja ki a képernyőre, ami az aposztrófok között van:

2+8_

     A második példában elhagytuk az aposztrófokat, így a program kiszámolja a 2 és 8 számok összegét és ezt írja ki a képernyőre:

10_

Feladat: próbáld ki egyszerre a kettő hatását, írasd ki 2+8=10 szöveget és műveleti eredményt!     

A WriteLn parancs hasonlóan működik, mint a Write parancs. A különbség csupán annyi, hogy a WriteLn parancs egy egész sort ír ki, tehát miután kiírta a parancsban megadott szöveget, számot, a kiírás után a kurzor a következő sor elejére ugrik. Ezért az utána következő kiírásnál már a kiírandó tartalom az új sorba fog kerülni. Lássunk most erre is egy példát:

program Pelda03a;
begin
 WriteLn('8 és 2 osszege:',8+2);
 WriteLn('8 és 2 kulonbsege:',8-2);
end.

     Ez a program a következőt fogja kiírni a képernyőre:

8 és 2 osszege:10
8 és 2 kulonbsege:6
_

     Az első WriteLn parancs kiírja a 8 és 2 összege: szöveget, majd mivel a következő rész már nincs aposztróf jelek között, kiszámolja a 8 + 2 eredményét és kiírja a képernyőre a 10-et. Ezután, mivel mindez a WriteLn paranccsal lett kiíratva, a kurzor a következő sor elejére ugrik.
     A második WriteLn parancs az előzőhöz hasonlóan kiírja a 8 és 2 különbsége: szöveget, majd kiszámolja mennyi 8‑2 és az eredményt, tehát a 6-os számot írja ki. Ez után, mivel ezt is WriteLn paranccsal írattuk ki, a kurzor ismét a következő sor elejére ugrik. (Mindig figyeld, itt és a monitoron is a _ jelet!)

Feladat: Írjuk át az előző programot úgy, hogy az eredményt ne írja közvetlenül a szöveg után, tehát a kettőspont után legyen egy karakternyi üres hely.

Megoldás: Az aposztrófok közé a kettőspont után teszünk egy szóközt. Így ezt a szóközt is egy az egyben kiírja a program a képernyőre és csak a szóköz után fogja kiírni a két szám összegének ill. különbségének értékét. (az összege szöveg után legyen ott a szóköz)

program Pelda03b;
begin
 WriteLn('8 es 2 osszege: ',8+2);
 WriteLn('8 es 2 kulonbsege: ',8-2);
end.

     A WriteLn eljárást használhatjuk üres sor kiírására, vagyis sor kihagyására is, ekkor nem szabad az eljárás neve után megadnunk semmit, tehát ezt írjuk : WriteLn. Valójában a parancs annyit fog tenni, hogy nem ír ki semmit a képernyőre és mivel WriteLn parancsról van szó, ezért a kurzort a következő sor elejére viszi. Módosítsuk az előző példánkat úgy, hogy két sor között hagyjunk ki egy üres sort. Ehhez a két WriteLn parancs közé írjunk be egy újabb „üres” WriteLn parancsot, melynél azonban ne adjunk meg semmilyen szöveget, amit kiírjon – ilyenkor a zárójeleket sem kell kiraknunk. Programunk így néz ki:

program Pelda03c;
begin
 WriteLn('8 es 2 osszege: ',8+2);
 WriteLn;                                               {ennek hatására marad ki üres sor}
 WriteLn('8 es 2 kulonbsege: ',8-2);
end.

     Ha a programunkat most lefuttatjuk, a következőket fogjuk látni a képernyőn: (Hogyan ? Alt+F5)

8 es 2 osszege: 10
 
8 es 2 kulonbsege: 6
_

     Fenti példánkban észrevehettük még a kapcsos zárójelek ( ... } ) használatát. Ezek segítségével programunkba bármilyen megjegyzést tehetünk, így később (akár hónapok, évek múlva) is könnyen olvasható, érthető lesz a program. Természetesen a program fordításakor és futtatásakor a Pascal a kapcsos zárójelek közötti szöveget figyelmen kívül hagyja.

     Láthatjuk, hogy az első sor után a paraméter nélküli WriteLn parancsnak köszönhetően a program kihagyott egy üres sort. A kapcsos {} zárójelek között levő rész nem hajtódik végre, csak mi látjuk a forráskódban.

     Fontos még megjegyezni, hogy a pascal programozási nyelvben a szorzást ’*’ csillaggal, az osztást pedig ’/’ perjel jellel jelöljük. Ha tehát hasonlóan ki szeretnénk íratni 8 és 2 szorzatát, ill. hányadosát, ezeket a 8*2 ill. 8/2 segítségével tehetjük meg. Ezen kívül az egészrészes osztásra használni fogjuk még a div, a maradék meghatározására pedig a mod műveletet.

     A div segítségével kiszámolhatjuk két szám hányadosának egész részét. Pl. a 11 div 6 értéke 1, mivel 11 osztva  6-tal egyenlő 1,83333...-mal és ennek az egész része (a tizedeseket levágva) 1.

     A mod segítségével kiszámolhatjuk két szám egész osztásának maradékát. Pl. a 11 mod 6 értéke 5, mivel 11 osztva 6-tal egészekre kiszámolva 1 és a maradék 5 ( 11 egész osztás 6 = 1, maradék 5 ).

Gyakorló feladatok: www.prog.ide.sk oldalon.