fel
le

Alapvető I/O - kiírás képernyőre

Az I/O kifejezés az input/output rövidítése, a bevitel/kivitel jelölése. Konzolos alkalmazások esetén ez nem jelent túl bonyolult dolgot, ellentétben egy Windows Forms alkalmazással, vagy Web-es felülettel.

A konzolos alkalmazások két alapvető függvényt használnak I/O célra:

  • Console.WriteLine(...) - kiírás a képernyőre, soremelés
  • Console.Write() - kiírás a képernyőre

A Console.WriteLine() függvény nevének beírásakor ügyeljünk, hogy a C, a W és az L betűk is nagybetűk, minden más betű kicsi.

Kiírás

A Console.WriteLine(...) alapvetően egyetlen adat kiírására képes:

Console.WriteLine("Hello");
Console.WriteLine(123);
Console.WriteLine(int.MinValue);
Console.WriteLine(2*12+4);
 

Aki nem hiszi, hogy a C.WL csak egyetlen adat kiírására alkalmas, az próbálja ki az alábbiakat:

Console.WriteLine("Hello","World!");
Console.WriteLine(123,245);
Console.WriteLine("3*2=",3*2);
 

Összetett kiírás

Amennyiben nem egyetlen értéket, adatot kívánunk kiírni, formátum stringet kell alkalmaznunk. A formátum sztring mindíg az első paramétere a C.WL függvénynek, és belsejében további paraméterekre hivatkozhatunk. A további paraméterek sorszámukkal hivatkozhatóak meg, a sorszámozás 0-tól indul. A sorszámokat kapcsos zárójelek közé kell helyezni. A formátum sztringben szereplő minden más karakter egyszerűen kiíródik a képernyőre.

Console.WriteLine("{0}*{1}={2}",3,2,3*2);
 

A fentieket úgy kell érteni, hogy:

  • {0} - írd ki a formátum sztring mögött megadott 0. sorszámú értéket (ez a 3)
  • * - vagyis írj ki egy szorzásjelet
  • {1} - írd ki a formátum sztring mögött megadott 1. sorszámú értéket (ez a 2)
  • = - vagyis írj ki egy egyenlőségjelet
  • {2} - írd ki a formátum sztring mögött megadott 1. sorszámú értéket (ez a 3*2 kiszámolt értéke, vagyis 6)

A képernyőn a 3*2=6 kiírás fog megjelenni.

Figyelem! A formátum sztring belsejét a fordítóprogram nem ellenőrzi le. Ezért könnyű benne olyan hibát ejteni, amely majd csak futás közben derül ki. Kétfajta gyakori hibával lehet találkozni:

  • olyan sorszámú paraméterre hivatkozunk, amely nincs, pl {12}, és nincs ilyen sok plusz paraméter
  • hibásan használjuk a kapcsos zárójelpárt, a {3} zárójelezés, ahol kapcsos zárójellel nyitunk, de gömbölyű bezáró zárójelet használunk - hibás.

Write vs. WriteLine

A Console.WriteLine() mellett használható kiírásra a Console.Write() is. Használata mindenben megegyezik a WriteLine használatával - egyetlen különbség van csak. A WriteLine a kiírás után a kurzort a következő sor elejére rakja, míg a Write a kurzort a kiírtak mögött felejti.

Tudni kell, hogy mind a Write, mind a WriteLine kiírása a képernyőn ott fog megjelenni, ahol a kurzor a kiírás kezdetén villog. Vagyis az egymás utáni WriteLine-ok kiírásai egymás alá kerülnek, míg a Write kiírások egymás mögé.

1. ábra: Console.WriteLine(...)

A képen látszik, hogy a Hello és a Lajos!'' kiírások egymás alá kerültek, és a kurzor máris a következő sorban van, készen a következő kiírásra.

2. ábra: Console.Write(...)

A Write esetén a Hello és a Lajos! szövegek összeolvadnak, szorosan egymás mellé kerülnek. A kurzor a felkiáltójel mögött maradt.

A fentiek alapján a Write(...) ügyes használatával elvileg meg lehet úszni a kapcsos zárójeles extra paraméterek használatát is. Nyilván nem célunk a programsorok szaporítása, ezért ezt a megoldást nem javasoljuk, és nem is használjuk. Nem csak az áttekinthetőséget növeli a sok programsor használata, a program futása is lassabb, illetve a generált kód hossza is kedvezőtlenebb.

3. ábra: 3+2=5 write segítségével

Figyeljük meg az előző megoldásban, hogy az első write(...) esetén a "3+2=" szöveg aposztrófokban van, vagyis a képernyőn ezek a karakterek változatlan formában íródnak ki. Második esetben nincs aposztrófokban, így numerikus kifejezést alkot a 3+2, amit kiértékel, kiszámol a gép, és az eredményét írja ki. A write(...) miatt a két kiírás egymás mögé kerül. Ez egyetlen write(...) kiírással is megoldható.

4. ábra: 3+2=5 egyetlen write-al
Hernyák Zoltán
2013-01-24 10:30:20