C# programozás kezdőknek › 4. lecke

C# tanfolyam · 4. lecke

Operátorok C#-ban – számolás, összehasonlítás és értékadás

A változóinkban már vannak adatok. Most megtanuljuk, hogyan számoljunk velük, hogyan hasonlítsuk össze őket, és hogyan módosítsuk az értéküket.

  • kb. 45 perc
  • kezdő szint
  • + - * / % == +=
Diák C# operátorokat gyakorol egy hangulatos tanulósarokban

A lecke végére

  • használod az alapvető aritmetikai operátorokat;
  • érted a % (maradékos osztás) működését;
  • megkülönbözteted az egész és a tizedes osztást;
  • használod az értékadó rövidítéseket;
  • összehasonlítasz két értéket;
  • megkülönbözteted az = és a == jelet.

Ehhez már ismerned kell

  • az int és a double típusú változókat;
  • az értékadást;
  • az alapvető adatbekérést;
  • a bool típus jelentését.

Előző lecke: adatbekérés →

Mi az operátor?

Nézd meg ezt a programrészletet:

PéldaC#
int pont = 10;
int bonusz = 5;
int osszesen = pont + bonusz;

A + jel itt megmondja a programnak, milyen műveletet végezzen a két értékkel.

Operátor és operandus

A változók tárolják az adatokat, az operátorok pedig megmondják, mit tegyünk velük. Azokat az értékeket, amelyekkel az operátor dolgozik, operandusoknak nevezzük: a pont + bonusz kifejezésben a + az operátor, a pont és a bonusz az operandus.

Aritmetikai operátorok

Ezek nagyon hasonlítanak a matematikából ismert műveletekre.

Aritmetikai operátorok
OperátorJelentésPélda
+összeadás8 + 3 → 11
-kivonás8 - 3 → 5
*szorzás8 * 3 → 24
/osztás8 / 3 → 2, ha mindkét érték int
%maradékos osztás8 % 3 → 2
C# aritmetikai operátorok: összeadás, kivonás, szorzás, osztás és maradék példákkal

Jósolj! Mit ír ki a program?

int a = 12;
int b = 5;
Console.WriteLine(a + b);
Console.WriteLine(a - b);
Console.WriteLine(a * b);
Megoldás
17
7
60

Az osztás egyik legfontosabb csapdája

Matematikából azt várnánk, hogy 5 : 2 = 2,5. A C#-ban azonban számít, milyen adattípusokkal dolgozunk.

Két egész szám osztása

int a = 5;
int b = 2;
Console.WriteLine(a / b);
KimenetKonzol
2
Az egész és a tizedes osztás különbsége C# programozásban

Hová lett a fél?

Ha mindkét operandus int, a C# egész osztást végez: a tört részt egyszerűen levágja. Figyelj: ez nem kerekítés! A 7 / 2 eredménye 3, és nem 4.

Ha legalább az egyik érték double

double a = 5.0;
int b = 2;
Console.WriteLine(a / b);
KimenetKonzol
2,5

Pont a kódban, vessző a kimenetben

A C# forráskódban a tizedes számot mindig ponttal írjuk: 5.0. Kiíráskor viszont a program a számítógép nyelvi beállítását követi, ezért magyar beállításnál a konzolon vessző jelenik meg: 2,5.

Mit csinál a % operátor?

A százalékjel itt nem százalékszámítást jelent. A % az osztás után megmaradó maradékot adja vissza.

Console.WriteLine(10 % 3);

A 10-ben háromszor van meg a 3, és marad 1. Ezért a kimenet: 1.

Próbáld fejben! Mi lesz az eredmény?

8 % 2
9 % 2
15 % 4
20 % 6
Megoldás
0
1
3
2

A % később nagyon hasznos lesz

Például annak vizsgálatára, hogy egy egész szám páros vagy páratlan: ha egy szám kettővel osztva 0 maradékot ad, akkor páros.

Műveleti sorrend

A C# ugyanúgy figyel a műveletek sorrendjére, mint a matematika: a szorzás és az osztás előbb történik, mint az összeadás és a kivonás.

int eredmeny = 2 + 3 * 4;
Console.WriteLine(eredmeny);

Előbb a szorzás történik: 3 · 4 = 12, utána az összeadás: 2 + 12 = 14.

Mit gondolsz? Mi történik zárójellel?

int eredmeny = (2 + 3) * 4;
Console.WriteLine(eredmeny);
Megoldás
20

A zárójel miatt először a 2 + 3 művelet történik meg.

Ha bizonytalan vagy, használj zárójelet

A zárójel nemcsak az eredményt módosíthatja, hanem a kód olvashatóságát is javítja.

Értékadó operátorok

Ezt már ismered: az = értéket ad a változónak. Ha a pontszámot öt ponttal szeretnénk növelni, ezt írjuk:

int pont = 10;
pont = pont + 5; // hosszabban
pont += 5; // ugyanez rövidebben
Értékadó rövidítések
Rövid formaUgyanez hosszabban
pont += 5;pont = pont + 5;
pont -= 5;pont = pont - 5;
pont *= 2;pont = pont * 2;
pont /= 2;pont = pont / 2; (int esetén egész osztás!)

Eggyel több vagy eggyel kevesebb

pont++;   // eggyel növeli
pont--; // eggyel csökkenti

Te jössz! Kövesd a változó értékét!

int pont = 10;
pont += 5;
pont++;
pont -= 3;
Console.WriteLine(pont);
Megoldás

10 → 15 → 16 → 13, tehát a kimenet: 13.

Összehasonlító operátorok

Eddig számokat kaptunk eredményként. Az összehasonlítás eredménye viszont bool lesz: true vagy false.

int kor = 14;
bool eredmeny = kor > 10;
Console.WriteLine(eredmeny);
KimenetKonzol
True

A program valójában ezt a kérdést vizsgálta:

Nagyobb-e a 14 a 10-nél?
Összehasonlító operátorok
OperátorJelentésPélda
>nagyobb10 > 5 → True
<kisebb4 < 2 → False
>=nagyobb vagy egyenlő12 >= 12 → True
<=kisebb vagy egyenlő9 <= 8 → False
==egyenlő7 == 7 → True
!=nem egyenlő7 != 7 → False

Jósolj!

Console.WriteLine(10 > 5);
Console.WriteLine(4 < 2);
Console.WriteLine(7 == 7);
Console.WriteLine(7 != 7);
Megoldás
True
False
True
False

= vagy ==?

Ez az egyik legfontosabb különbség a kezdő C# programozásban.

= értékadás

int kor = 14;

Azt mondjuk: a kor változó kapja meg a 14 értéket.

== összehasonlítás

kor == 14

Azt kérdezzük: a kor értéke egyenlő 14-gyel? A válasz true vagy false.

Az egyenlőségjel és a dupla egyenlőségjel különbsége C# programozásban

Gyakori kezdő hiba

Az = nem azt jelenti, hogy „egyenlő-e”. Összehasonlításhoz két egyenlőségjel kell: ==.

Önálló gyakorlás

1. Számológép

Hozz létre két egész számot, majd írd ki az összegüket, a különbségüket, a szorzatukat, az egész osztás eredményét és az osztás maradékát.

Egy lehetséges megoldás
int a = 17;
int b = 5;
Console.WriteLine(a + b); // 22
Console.WriteLine(a - b); // 12
Console.WriteLine(a * b); // 85
Console.WriteLine(a / b); // 3
Console.WriteLine(a % b); // 2

2. Tizedes osztás

Írj programot, amely két szám osztását tizedes eredménnyel írja ki. Próbáld ki először két int, majd legalább egy double értékkel!

Tipp

Figyeld meg, milyen adattípusúak az osztásban szereplő értékek.

Egy lehetséges megoldás
int x = 7;
int y = 2;
Console.WriteLine(x / y); // 3

double z = 7.0;
Console.WriteLine(z / y); // 3,5

3. Pontszám változtatása

Indulj ebből: int pont = 20; Adj hozzá 10-et, növeld eggyel, vonj le belőle 4-et, végül írd ki a végeredményt.

Megoldás
int pont = 20;
pont += 10;
pont++;
pont -= 4;
Console.WriteLine(pont); // 27

4. Összehasonlító labor

Hozd létre ezeket: int a = 12; és int b = 8; Írasd ki az alábbi kifejezések eredményét! Mielőtt futtatod, minden sorról írd fel a tippedet.

a > b
a < b
a == b
a != b
a >= 12
b <= 8
Megoldás
True
False
False
True
True
True

5. Páros vagy páratlan – előkészítés

Hozz létre egy egész számot, például int szam = 17;, és írd ki a szam % 2 értékét. Próbáld ki több páros és páratlan számmal. Mit figyelsz meg?

Megfigyelés

Pozitív páros számnál az eredmény 0, pozitív páratlan számnál 1. Ezt használjuk majd a páros–páratlan döntéshez.

6. Hibavadász

Nézd meg ezt a kódot. Mi a probléma?

Hibás kódC#
int kor = 14;
bool tizennegy = kor = 14;
Megoldás

Az összehasonlításhoz nem =, hanem == kell: bool tizennegy = kor == 14; A Visual Studio ezt a kódot le sem fordítja, hanem CS0029 hibát jelez (Cannot implicitly convert type 'int' to 'bool'), mert a kor = 14 értékadás eredménye szám, nem logikai érték. Ez szerencse: a C# így időben szól a hibáról.

7. Műveleti sorrend

Először tippeld meg az eredményt!

int eredmeny1 = 5 + 2 * 3;
int eredmeny2 = (5 + 2) * 3;
Console.WriteLine(eredmeny1);
Console.WriteLine(eredmeny2);
Megoldás
11
21

Amit ebből biztosan vigyél tovább

  • A +, -, *, / és % aritmetikai műveleteket végez.
  • Két int osztásakor egész eredményt kapsz: a tört rész levágódik, nincs kerekítés.
  • A % az osztási maradékot adja vissza.
  • A zárójel módosíthatja a műveleti sorrendet.
  • A +=, -=, *= és /= rövidebb értékadó formák; a ++ eggyel növel, a -- eggyel csökkent.
  • Az összehasonlítás eredménye true vagy false.
  • Az = értékadás, a == összehasonlítás.

Gyors önellenőrzés

Válaszolj fejben, és csak utána nyisd le a választ.

1. Mit jelent a % operátor?

Az osztás maradékát adja meg: a 10 % 3 eredménye 1.

2. Miért lesz az 5 / 2 eredménye 2, ha mindkét érték int?

Mert két egész szám osztásakor a C# egész osztást végez, és a tört részt levágja.

3. Mi a különbség az = és a == között?

Az = értéket ad egy változónak, a == azt vizsgálja, hogy két érték egyenlő-e.

4. Mit csinál a pont += 5; utasítás?

Öttel növeli a pont változó értékét, ugyanaz, mint a pont = pont + 5;

5. Milyen típusú eredményt ad a 10 > 4 kifejezés?

Logikai (bool) értéket: ebben az esetben true.

Mit tudsz már?

  • Számolsz változókkal a négy alapművelettel és a maradékos osztással.
  • Tudod, mikor ad az osztás egész és mikor tizedes eredményt.
  • Használod a +=, -=, ++ és -- rövidítéseket.
  • Összehasonlítasz értékeket, és tudod, hogy az eredmény logikai érték.
  • Nem kevered össze az = és a == jelet.

Hamarosan: Mini projekt – tanulmányi átlag kalkulátor

Az eddig tanultakat egy saját programban használod: adatbekérés, típuskonverzió és számolás operátorokkal. Utána jönnek a feltételek, amelyekkel a program az összehasonlítások alapján dönteni is tud.