C# – Kiírás képernyőre, adatbevitel


Képernyőre írás (Output)

A következőkben már konkrét feladatokat oldunk meg, az alapoktól indulva kis lépésekben. Az első programunk nem más, mint egy szöveg kiírása a számítógépünk képernyőjére. Indítsuk el a Microsoft Visual Studio 2019 Community programot, majd válasszuk a Create a New Project lehetőséget.

Ezt követően, a következő panelen pedig válasszuk a Console App (.NET Framework) menüpontot úgy, hogy először fent állítsuk be sorra a C#, Windows és Console lehetőségeket a válsztható legördülő listából. Utána kattintsunk a Next gombra.

Végül adjunk nevet a projektünknek, illetve megadhatjuk azt is, hogy hová hozza létre az új projektet. Befejezésül kattintsunk a Create gombra.

Most már nekiláthatunk a tényleges munkának. A Visual Studio (a továbbiakban VS) elég jól előkészítette nekünk a programozói környezetünket (talán egy kicsit túlzottan is). Sokmindent láthatunk a képernyőn, de ne ijedjünk meg. Sőt, örüljünk neki! Ezek mind megkönnyítik a munkánkat.

Karakterlánc (String) képernyőre írása

Mit is látunk a fenti képen? A VS egy csomó mindent elkészített nekünk! Az első öt sorban “megmondta”, hogy szeretnénk használni különböző névtereket. Ezt a using paranccsal tette, utána a névtér nevével (pl. using System). Létrehozott egy névteret is azzal a névvel, amit mi adtunk a projektünknek. Ezen belül egy osztályt (class) is létrehozott számunkra Program néven. A Program osztályon belül pedig elkészítette a programunk belépési pontját, a Main függvényt! Ez nagyon fontos, e nélkül nincs működő program. A Main függvényen belül, a kapcsos zárójelek között fogjuk megírni az első egyszerű programunkat. Ez pedig nem más, mint az, hogy írjuk ki a képernyőre a Szia Világ! szöveget. Lássunk is hozzá, kattintsunk a nyitó kapcsos zárójel után, majd nyomjunk egy ENTER-t.

Most írjuk be a parancsot, ami kiír egy szöveget a billentyűzetről a képernyőre. A parancs tulajdonképpen egy angol szó, Write (ír), ami a Console névtéren belül található. Általában is igaz, hogy a programozás során angol szavakat írunk, ezért aki tud angolul, az egy kicsit előnyben van. A VS most is megkönnyíti a dolgunkat, ugyanis amint elkezdünk írni egy parancsot, utasítást, felkínál egy legördülő menüt, amiből választhatunk a kurzor billentyűk segítségével. Ezt a menüt általában a “ctrl + space-el tudjuk előhozni. Ha megtaláltuk, amit kerestünk, akkor nyomjuk meg a TAB billentyűt, és beírja helyettünk a szót. Ezt követően írjunk egy pontot, és újra megjelenik egy legördülő menü, és most is kiválaszthatjuk, amit szeretnénk. Mivel egy függvényt használunk a kiíráshoz, a Write függvényt, ezért utána zárójelben meg kell adni a függvény paraméterét (ezt minden függvénynél így kell csinálni). Most a paraméter egy szöveg (string), amit idézőjelek között kell beírni. Végül a parancsot a sor végén egy pontosvesszővel kell lezárni. Tulajdonképpen készen vagyunk, de ha lefuttatjuk a programot, akkor azt tapasztaljuk, hogy felvillan valami, aztán mindjárt el is tűnik (windows-on). Ez azért van, mert ki kell adnunk egy másik parancsot is, ami megtartja a képernyőt addíg, amíg le nem ütünk egy tetszőleges billentyűt. Erre a ReadKey függvény a megfelelő. Neki nem kell paraméter! A programunkat ne felejtsük el menteni, majd futtatni. A mentéshez kattintsunk az eszköztáron a mentés ikonra (szokásos), a futtatáshoz pedig szintén az eszköztáron a Start ikonra (zöld). Az alábbi képeken a program, illetve az eredmény látható.

Ha nem a Write() függvényt használjuk, hanem a WriteLine() függvényt, akkor az eredmény annyiban módosul, hogy a kiírt szöveg után a kurzor új sorba kerül. Tehát egy soremelés történik. Erre akkor lehet szükségünk, ha egy szöveg után egy másik szöveget akarunk kiíratni úgy, hogy az az előző szöveg alá kerüljön. Az alábbi képeken ezt láthatjuk.

Megtehetjük azt is, hogy egy Write() függvénnyel több karakterláncot írhatunk ki egymás után, esetleg valamilyen elválasztó karakterrel. Ehhez paramétereznünk kell a függvényt. Figyelem, az informatikában 0-val kezdődik a számozás! Tehát nem azt mondjuk, hogy 1. 2. 3. stb., hanem azt, hogy 0. 1. 2. 3. stb. A paraméterekkel azt adjuk meg, hogy a függvény argumentumait milyen sorrendben szeretnénk kiíratni. A paramétereket idézőjelek közé kell írni, illetve kapcsos zárójelek közé kell tenni. A függvény argumentumait vesszővel el kell választani egymástól. Lássunk erre is egy példát. Gyümölcsneveket írunk a képernyőre egy megadott sorrendben (a paraméterekkel szabályozzuk). Minden gyümölcs név között egy kötőjel van, előtte és utána szóközökkel.

Karakter (Char) képernyőre írása

Ha csak egy karaktert akarunk kiírni, akkor az idézőjel helyett aposztrofot (‘) is írhatunk. Például:

Console.Write(‘a’);

Ez egy darab “a” betűt ír a képernyőre.

Escape karakterek használata

Helyettesítő karakterek vagy Escape sorozatok. Néhány karakternek speciális jelentése is lehet az eredeti szerepe helyett. Ilyen például az „a” karakter. Karaktersorozatban, vagy egy önálló karakterként kiíratva, szimplán megjelenik a képernyőn. Néha lehet azonban más jelentése is. Ha más jelentéssel kívánjuk használni azt valamilyen módon jelezni kell. Erre szolgál a visszaperjel. Ha egy karakterállandóban visszaperjel következik, ezzel jelezzük hogy a következő karakter speciális értelmezésű. A „\a” például megszólaltatja a beépített hangszórót. Az alábbi táblázatban láthatjuk a használható escape karaktereket a jelentésükkel együtt. Az alatta lévő képen egy példát láthatunk az új sorba írásra.

Escape karakterekJelentés
\aCsengőhang
\bElőző karakter törlése
\fLapdobás
\nKurzor új sor elejére ugrik
\rKurzor az aktuális sor elejére ugrik és onnan folytatja a kiírást
\tVízszintes tabulátor
\vFüggőleges tabulátor
\'Aposztróf
\"Idézőjel
\\Visszaper jel (Backslash)
\?Kérdőjel
\000Oktális kóddal megadott ASCII karakter (nálam nem működik)
\xhhHexa kóddal megadott ASCII karakter (pl. x41 = 'A')
\xhhhhUnicode jelölés (pl. x0041 = 'A')

Szám értékek képernyőre írása

Egy kicsit bonyolultabb feladat szám értéket képernyőre írni. Ha csak formailag, magát a számot szeretnénk megjeleníteni, azt ugyanúgy megtehetjük, mint az előzőekben leírt karakterlánc (string) esetén tettük. De ha egy számított értéket, illetve egy számot, mint értéket akarjuk kiíratni, akkor más a helyzet. Alapesetben ugyanis a C# úgy gondolja, hogy amit a billentyűzetről beírunk, az szöveges adat, azaz karakterlánc. Így ezt a szöveges adatot át kell alakítani, konvertálni számmá! Erre szolgál a Convert() függvény. A használata nem túl nehéz, és meg kell adni, hogy milyen típusú számadattá kívánjuk konvertálni. Az előzőekben már leírtam, hogy amikor írunk, és pontot teszünk, akkor felbukkan egy lista, amiből választhatunk. Ez a Convert() függvény használatakor is működik. Nézzunk egy egyszerű példát, a 10-et, mint szám értéket írjuk ki a képernyőre:

Console.Write(Convert.ToInt32(10));

Ha egy számított eredményt akarunk kiíratni, akkor vissza kell konvertálni szöveggé, mert csak így tudjuk kiírni a helyes eredményt. Az alábbi példában két számot elosztottunk, a kapott eredmény nem egész szám lett. Nézzük ezt meg:

Az eredmény: 1,88888888888889

Megjegyzés: Egy valós program során nem feltételezhetjük azt, hogy a külső adat, (érkezzen az a felhasználótól, vagy egy fájlból) formailag helyes. Próbáld ki, hogy konvertálni próbálsz számmá mondjuk egy “alma” szöveget. Ilyenkor a program lekezelhető hibára / kivételre fut. Ezekre az esetekre nem térünk ki, és az érettségi feladatok sem követelik meg a hibakezelést.

Adatok beolvasása (Input)

A programírás során sokszor előfordul, hogy a felhasználótól adatokat kérünk be. Ekkor a felhasználó a billentyűzete segítségével beírja a program által kért adatokat. Az adatok különböző típusúak lehetnek, így eltérő az adatbeolvasás szintaxisa. Most tekintsük át a különböző típusú adatok beolvasását. Az adatbevitelre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.

String beolvasása

A legegyszerűbb adatbeolvasás. A felhasználó beírja a megfelelő szöveget (stringet), melyet eltárolunk egy string típusú változóban, majd képernyőre írjuk. Például így:

Egész számok beolvasása

Mint azt már az előzőekben leírtam, a C# minden billentyűzetről beírt adatot szövegnek hisz. Így egész szám beolvasása esetén a string típusú adatot át kell alakítani (konvertálni) egész számmá. Szintén a Convert() függvényt használjuk, például így:

Valós számok beolvasása

Ugyanúgy, mint az egész számokat, csak a konvertálásnál valós számmá kell átalakítani. Például így:

Karakter beolvasása

Az előzőek szerint, csak a konvertálás más.

Logikai érték beolvasása

Az előzőek szerint.

Dátum és idő beolvasása

Az előzőek szerint.