Programozósuli

Tanulj programozni és tedd könnyebbé az életed!

C# programozás

Tartalomjegyzék

  1. A C# programozási nyelvről
  2. A Visual Studio
    • Mi az az IDE?
    • A Visual Studio telepítése
    • Új projekt létrehozása
  3. A változók
    • Mik azok a változók?
    • A változók deklarálása
    • Értékadás a változóknak
  4. A kifejezések és az operátorok
    • Matematikai operátorok
    • Relációs operátorok
    • Logikai operátorok
    • Értékadó operátor és a programozók lustasága

1. A C# programozási nyelvről

A C# egy 2001-ben megjelent, elegáns, objektumorientált nyelv, amivel a fejlesztők biztonságos és gyors alkalmazásokat tudnak írni a .NET keretrendszer alá (ejtsd: dotnet). A C#-ot használhatjuk Windows applikációk, webszolgáltatások, mobil applikációk, kliens-szerver applikációk, adatbáziskezelő applikációk, játékok és még sok minden készítésére.

A nevében a C a C programozási nyelvre utal, a # pedig a zenében a fél hanggal való felemelést szimbolizálja (a C++ nyelvben a ++ jelenti egy változó megnövelését 1-gyel).

2. A Visual Studio

2.1 Mi az az IDE?

A programozóknak szükségük van egy fejlesztőkörnyezetre, ami segíti a programozást. Ezt nevezzük IDE-nek. Ez segít megtalálni a programban az esetleges hibákat és segít a kijavításukban is. Valamint kiszínezi a forráskódot az adott elemek nyelvi helyzete alapján, ezáltal a forráskódok is sokkal átláthatóbbak lesznek. A forráskódot ez fordítja le futtatható .exe fájlba.

2.2 Visual Studio telepítése

  1. Töltsd le a Visual Studio Community 2017 telepítőfájlját a https://www.visualstudio.com/downloads/ oldalról a Free download gombra kattintva!
  2. Futtasd a letöltött fájlt (rendszergazdai jogosultság szükséges)!
  3. Várjunk, amíg lemegy a kék csík.
  4. A listából válasszuk ki a .NET desktop development elemet, majd klikkeljünk az Install gombra!
  5. Várjuk meg, míg letöltődik a Visual Studio. Ez lassabb internetkapcsolat esetén több órát is igénybe vehet.
  6. Indítsuk el a programot a Launch gombbal.

2.3 Új projekt létrehozása

  1. Nyissuk meg a Visual Studio-t a Start menüben, vagy az asztalról!
  2. Fönt, a menüsorban válasszuk ki a File -> New -> Project elemet, vagy a CTRL + SHIFT + N billentyűkombinációt használva nyissuk meg a New Project ablakot!
  3. Itt választhatjuk ki a programunk típusát. Mi a tanfolyam elején a Console Apllication-t fogjuk használni.
  4. A programunkat a Main-be írjuk. Ez fog lefutni, amikor elindítjuk a programot.

Ha valakinek át szeretnénk küldeni programunkat, akkor egy mappát kell átküldeni, amit zip-pé tömörítve (Például 7-zip-pel, vagy WinRAR-ral) lehet elküldeni. A Visual Studio mentési helyét a projekt létrehozásánál az alsó szövegmezőknél lehet megadni.

3. A változók

3.1 Mik azok a változók?

A programok változókat használnak feladatuk elvégzése közben. A változók egy bizonyos típusú adatot tudnak tárolni és ezt a program a futása közben meg tudja változtatni, illetve ki tudja olvasni. Úgy képzeljük el, mint egy dobozt, amibe lehet rakni valamit, majd később meg lehet nézni, mit raktunk bele.

3.2 A változók deklarálása

Az egyes változók rendelkeznek egy azonosítóval, amivel utalhatunk rá, valamint egy értékkel, amit behelyettesít. Minden változónak a létrehozásakor, azaz a deklarálásakor meg kell adni a típusát. Ez a funkciótól függően lehet egész szám, tizedes tört, egy karakter, egy szöveg (sztring), vagy akár egy igaz/hamis érték.

C#-ban ezt így tehetjük meg:

Típus Deklarálás
Egész szám int valtozo_neve;
Tizedestört double valtozo_neve;
Egy karakter char valtozo_neve;
Szöveg (sztring) string valtozo_neve;
Igaz/hamis érték bool valtozo_neve;

A változó neve csak alfanumerikus karaktereket (betűk, számok és _) tartalmazhat és csak betűvel, vagy _-sal kezdődhet. A C# elvileg kezeli a magyar ékezetes karaktereket a változók neveiben, de ajánlott angol kifejezéseket írni.

3.3 Értékadás a változóknak

A változóknak az értékadó operátor, az egyenlőség jel segítségével adhatjuk meg a tárolni kívánt értéket. Az alábbi program ezt szemlélteti:

int a;
a = 21; //int típusú érték adása az a nevű változónak.

bool b; //A b nevű változó típusa bool.
b = true; //A b nevű változó értékét true-ra állítjuk.

string c;
c = "Helló világ!";

Ahogy megfigyelhettük, az utasítások után pontosvesszőt kell tenni. Éppen ezért a kódot akár egy sorba is írhatjuk, mert a fordító érzékeli a parancsok határait.

int a; a = 21; bool b; b = true; string c; c = "Helló világ!";

Értéket a deklarálásakor is tudunk adni a változónak:

int a = 21;
char b = 'h';

4. A kifejezések és az operátorok

Ha valaminek szeretnénk értéket adni, akkor nem csak egy előre megadott értéket adhatunk meg, hanem változók, konstansok és operátorok kombinációjával bármilyen kifejezést. Ezeket matematikai, relációs és logikai operátorokkal adhatjuk meg.

4.1 Matematikai operátorok

Név Operátor Példa Eredmény
Összeadás + int a = 10 + 30; 40
Kivonás - int b = 10 - 3; 7
Szorzás * int c = 20 * 3; 60
Osztás / double d = 5 / 2;
int egész = 5 / 2;
2.5
2
Osztás maradéka % int maradék = osztandó % osztó
int e = 8 % 3

2

Ha az osztásnak tizedestört a kimenete és egész típusú változóba próbáljuk belerakni, a változó az eredmény lefelé kerekített értékét kapja.

Mi az eredménye a következő kifejezésnek: 100 * (10 + 2)

Sztringek konkatenálása

Ha van két sztringünk és össze szeretnénk őket fűzni egy sztringgé, akkor a + operátort kell használnunk:

string a = "Helló ";
string b = "világ!";
string c = a + b;
//A c értéke: Helló világ!

Nem csak szöveget konkatenálhatunk szöveggel. Számot így lehet összefűzni:

double pi = 3.14159265;
string szöveg = "A pi értéke 8 tizedesjegyig: " + pi + "."; 
//A szöveg változó értéke: A pi értéke 8 tizedesjegyig: 3.14159265.

Nem csak változókkal konkatenálhatjuk össze a szövegünket, hanem bármilyen kifejezéssel. Ez esetben ajánott zárójelekbe tenni a kifejezéseket.

double pi = 3.14159565;
int r = 10;
string szöveg = "Egy 10 méter sugarú körnek " + (2 * r * pi) + " méter a kerülete.";
//A szöveg nevű változó értéke: Egy 10 méter sugarú kötnek 62.8318531 méter a kerülete.

4.2 Relációs operátorok

A relációs operátorok összehasonlítanak két értéket. Bármilyen típusú lehet a bemeneti két érték, de a kimenet mindig igaz/hamis (boolean) títpusú lesz. Az alábbi táblázat szemlélteti ezeknek a működését:

Név Opeátor Példa Eredmény
X kisebb-e, mint y? < 10 < 20 true (igaz)
X kisebb, vagy egyenlő-e y-nal? <= 20 <= 20 true (igaz)
X nagyobb-e, mint y? > 10 > 20 false (hamis)
X nagyobb, vagy egyenlő-e y-nal? >= 21 >= 20 true (igaz)
X egyenlő-e y-nal? == 10 == 10.00 true (igaz)
X értéke és típusa is egyenlő y-nal? === 10 === 10.00 false (hamis)
X nem egyenlő-e y-nal? != 10 != 10 false (hamis)
Mi az eredménye ennek a kifejezésnek: 20 < 20.0

4.3 Logikai operátorok

Igaz/hamis értékekkel dolgoznak.

Logikai ÉS
1. érték 2. érték Eredmény
true true true
true false false
false true false
false false false
  • Operátor: &&
  • Példa: 0 < 10 && 10 > 2
  • Eredmény: Igaz, mert mindkét állítás igaz volt.
  • Több feltételt is megadhatunk && elválasztással.
Logikai VAGY
1. érték 2. érték Eredmény
true true true
true false true
false true true
false false false
  • Operátor: || (AltGR+W)
  • Példa: a == 10 || a == 5
  • Eredmény: Ha a értéke 10, vagy 5, akkor true, egyébként false.
  • Több lehetőséget is megadhatunk || elválasztással.
NEM
Bemeneti érték Eredmény
true false
false true
  • Operátor: !
  • Példa: !(1==2)
  • Eredmény: Igaz, mert az 1==2 hamis és ezt fordítja meg.
Mi az eredménye a !(10==11 || 5==5.0) kifejezésnek?

4.4 Az értékadó operátorok és a programozók lustasága

Az értékadó operátorokról már esett szó. Egy változónak adnak értéket. A bal oldalon a változó neve (azonosítója) szerepel, jobb oldalon pedig egy kifejezés, aminek a típusának ugyanolyannak kell lenni, mint a változóé. Int változónak adhatunk double értéket, ekkor a double érték int-té konvertálódik, lefele kerekítődik. Double változónak adatvesztés nélkül adthatunk int értéket.

Értékadáskor az adott változó régi értékét is felhasználhatjuk, például, hogy az értékét megnöveljük 10-zel:

int a = 3;
a = a + 10;
//Az a változó értéke 13 lett.

Ilyenkor a program kiolvassa a változó értékét, hozzáad 10-et, majd ezt az értéket adja az a változónak.

Rövidítő értékadó operátorok

A programozók lusták leírni a változó nevét kétszer ahhoz, hogy megnöveljék a változót egy számmal, vagy bármilyen másik műveletet végezzenek saját magával, ezért kitalálták a rövidítő operátorokat:

Operátor Példa Mit helyetesít?
+= a += 2; a = a + 2;
-= b -= 4; b = b - 4;
*= c *= 3; c = c * 3;
/= d /= 2; d = d / 2;
%= e %= 2; e = e % 2;
Mi lesz a változó értéke? int a = 2; a += 3;

Sokszor arra is szükség van, hogy egy szám típusú változó értékét csökkentsük, vagy növeljük eggyel. A programozók lusták leírni az x += 1;-et, ezért kitalálták a csökkentő és a növelő operátort:

Feladat Példa Mit helyettesít?
Növelés 1-gyel x++; x = x + 1;
Csökkentés 1-gyel y--; y = y - 1;
Mi lesz az értéke az x változónak a program végén?
int x = 0;
int y = 2;
y *= 3;
x += y;
x++;

5. A konzol használata

Eddig csak változóknak adtunk értéket és kifejezáseket írtunk, most viszont megnézzük, hogyan lehet ezeket a felhasználó számára láthatóvá tenni.

5.1 Kiíratás a konzolra

A konzolra való kiíratást egy ún. metódussal, vagy függvénnyel tehetjük meg. A WriteLine nevű metódus a Console osztálynak egy metódusa. Az alábbi módon tudunk kiíratni egy szöveget a konzolra:

Console.WriteLine("Helló világ!");

Amint gondolom észrevettétek, a képernyőn megjelenik egy pillanatra a konzol, ki is írja a "Helló világ!"-ot, viszont azonnyomban el is tűnik, mert vége lesz a programnak. Ennek megakadályozására használhatjuk a Console.ReadLine() metódust, amivel a program vár az enter leütéséig és csak utána folytatódnak az utasítások. Persze, ha nincs utána semmi, akkor kilép a programból.

Console.WriteLine("Helló világ!");
Console.WriteLine("A folytatáshoz nyomja meg az ENTER billenytűt!");
Console.ReadLine();

A konzolra változókat is ki tudunk íratni:

int a = 10;
a *= 3;
Console.WriteLine("Az a értéke: " + a + "."); //Az a értéke: 30.
Console.WriteLine("A folytatáshoz nyomjon ENTERT...");
Console.ReadLine();
Írj egy programot, ami az x változó értékének kiírja a kétszeresét!

5.2 Adatbekérés konzolról

Sztringek bekérése

C#-ban konzolról szöveget beolvasni a Console.ReadLine() metódussal tudunk. Ez egy sztring értéket ad vissza, amit fel is lehet használni:

string input = Console.ReadLine();
Console.WriteLine("A bevitt szöveg: " + input);
Console.WriteLine("Nyomj ENTER-t a kilépéshez!");
Console.ReadLine();
Írj egy programot, ami bekéri a felhasználó nevét és utána mond egy mondatot, amiben a megszólítás az ő neve!

Számok bekérése

Számok bekérésére nincsen előre létrehozott parancs C#-ban, és a Console.ReadLine() egy sztring típusú értéket ad vissza akkor is, ha számot írtunk be. Szerencsére van egy metódus a számot tartalmazó sztringek számmá konvertálására:

string x = "112"; //Számot tartalmazó, sztring típusú kifejezés
Console.WriteLine(x + 25); //Kijelzi a 11225-öt, mert sztringként adta őket össze.
int y = Int.Parse(x); //Szám típusuvá alakítjuk az x értékét és belerakjuk az y változóba.
Console.WriteLine(y + 25); //Kijelzi a 137-et, mert két számot adott össze.

Ahogy létezik Int.Parse("1984"), létezik a Double.Parse("3,1415") is. Ahogy megfigyelhettük, itt (a sima double érték írásával ellentétben [3.1415]) vessző áll a tizedesjegyek előtt.

Érdekesség: csak számok bekérését engedő metódus
1. Írj egy olyan programot, ami bekéri a kör sugarát egy változóba, majd kiszámolja és kiírja a kör kerületét.
(kerület = 2 * sugár * pi, pi = 3.14159265)
2. Írj egy olyan programot, amely egy °C-ban bekért hőmérsékletet átvált fahrenheitbe. (A fahrenheit értékét úgy számolhatjuk ki, hogy megszorozzuk a °C-ban megadott értéket 1,8-cal, majd a kapott értékhez hozzáadunk 32-t.)

6. Elágazások

Az if elágazás

Utasítások lefutását feltételekhez tudjuk kötni. A feltételek boolean (igaz/hamis) kifejezések. Ha az értéke igaz, akkkor lefut a kijelölt kódrészlet, ha pedig hamis, akkor nem. Az alábbi program bekér egy számot, majd kiírja az "A megadott szám nagyobb, mint 10." sztringet:

int szam = Int.Parse(Console.ReadLine());    //Bekérünk egy egész számot a szam nevű változóba.
if(szam > 10)    //A boolean kifejezést zárójelek között adjuk meg.
{
	Console.WriteLine("A megadott szám nagyobb, mint 10.");
	//    { és } jel (harcsabajusz :D) közé írjuk azt a kódrészletet, aminek le kell futnia, ha igaz a megadott feltétel.
}

Nem csak egy parancsot futtathatunk le egy elágazáson belül:

int x = 10;
if(x == 3){    //Ha az x értéke 3:
	Console.WriteLine("Az x változó értéke három.");
	Console.WriteLine("Ez egy másik parancs, ami lefut.");
	Console.WriteLine("Ez meg a harmadik.");
}

Mint már említettem, kifejezés az, ami értéket ad vissza, lehet ez változó, egy matematikai kifejezés (pl. 10+5) és logikai kifejezés (pl.: true && false) is. Az alábbi kódban egy boolean változó értéke dönti el, hogy lefusson-e a program:

bool feltetel;
feltetel = 10 < 30;
if(feltetel){
	Console.WriteLine("A feltétel igaz volt...");
}
Készíts egy programot, ami a bekért számot maradékosan osztja 5-tel és kiírja, mennyi a maradék.

Else - egyébként

Hogyan valósítanánk meg azt, hogy ha egy bekért szám nagyobb mint 10, akkor lefusson valami, egyébként meg egy másik valami? Két if-et raknánk egymás után és az első megnézné, hogy nagyobb-e 10-nél, a második meg azt, hogy kisebb/egyenlő-e 10-zel:

int x = Int.Parse(Console.ReadLine());
if(x > 10){
	Console.WriteLine("Nagyobb, mint 10.");
}
if(x <= 10){
	Console.WriteLine("Nem nagyobb, mint 10.");
}

Ennél létezik egy hatékonyabb és egyszerűbb megoldás, mégpedig az else - egyébként. Ezt felhasználva sokkal szebben néz ki a kód és gyorsabb is a lefutása (nagyobb programoknál sokat számít):

int x = Int.Parse(Console.ReadLine());
if(x > 10){
	//Ez fut le, ha feltétel igaz.
	Console.WriteLine(x + " nagyobb 10-nél.");
}
else{
	//Ez fut le egyébként (ha a feltétel nem igaz).
	Console.WriteLine(x + " nem nagyobb 10-nél.");
}

Elágazásokat egymásba is ágyazhatunk:

int x = Int.Parse(Console.ReadLine());
if(x % 10 == 0){//Ha tízzel osztva a maradék 0:
	if(x % 3 == 0){  //Ha 3-mal osztva a maradék 0:
		Console.WriteLine(x + " osztható 10-zel, sőt 3-mal is.");
	}
	else{ //Egyébként:
		Console.WriteLine(x + " osztható 10-zel, de 3-mal nem.");
	}
}
else{ //Egyébként:
	if(x % 3 == 0){ //Ha 3-mal osztva a maradék 0:
		Console.WriteLine(x + " osztható 3-mal, de 10-zel nem.");
	}
	else{ //Egyébként:
		Console.WriteLine(x + " nem osztható 3-mal és 10-zel sem.");
	}
}
Készíts egy programot, ami megmondja egy számról, hogy az természetes szám, vagy nem! Egy szám akkor természetes szám, hogyha egész és nagyobb, vagy egyenlő 0-val.

Ha elakadtál, vagy kérdésed van, keress meg emailen, vagy facebookon!

Folytatásért érdemes visszanézni minden nap!