Aritmetik, karşılaştırma ve mantıksal operatörleri; tam sayı bölmesi tuzağını; Parse, TryParse ve Convert ile güvenli dönüşümü öğreniyorsun.
Aritmetik operatörler
int a = 17, b = 5;
Console.WriteLine(a + b); // toplama
Console.WriteLine(a - b); // çıkarma
Console.WriteLine(a * b); // çarpma
Console.WriteLine(a / b); // bölme
Console.WriteLine(a % b); // kalan (mod)
22
12
85
3
2
Dikkat: 17 / 5 sonucu 3'tür, 3,4 değil! İki taraf da int olduğunda bölme de tam sayı bölmesidir ve kesir atılır. Kalan işlemi (%) bir sayının çift mi tek mi olduğunu bulmak gibi işlerde çok kullanılır.
Tam sayı bölmesi tuzağı
Ondalıklı sonuç istiyorsan en az bir tarafı double yap:
int a = 17, b = 5;
Console.WriteLine(a / b); // 3
Console.WriteLine((double)a / b); // 3,4
Console.WriteLine(a / 5.0); // 3,4
Parantez içinde (double) yazmaya tip dönüştürme (cast) denir. Önce a double'a çevrilir, sonra bölme yapılır.
Birleşik atama ve artırma
int sayac = 10;
sayac += 5; // sayac = sayac + 5 -> 15
sayac -= 3; // 12
sayac *= 2; // 24
sayac++; // 25
sayac--; // 24
Karşılaştırma ve mantıksal operatörler
Karşılaştırma operatörleri (==, !=, <, >, <=, >=) her zaman bool döndürür. Mantıksal operatörler bunları birleştirir: && (ve), || (veya), ! (değil).
double gerilim = 3.3;
bool uygunMu = gerilim >= 3.0 && gerilim <= 3.6;
Console.WriteLine(uygunMu); // True
bool alarm = gerilim < 3.0 || gerilim > 3.6;
Console.WriteLine(alarm); // False
Console.WriteLine(!alarm); // True
Sık hata: Eşitlik için == kullanılır, = atamadır. Ayrıca double değerlerini == ile karşılaştırmak tehlikelidir; 0.1 + 0.2 == 0.3 ifadesi False verir. Ondalıkları yaklaşık karşılaştır: Math.Abs(x - y) < 1e-9.
Metinden sayıya: Parse ve TryParse
ReadLine metin verir; sayıyla işlem yapmadan önce çevirmen gerekir.
Console.Write("Direnç (ohm): ");
string? giris = Console.ReadLine();
int direnc = int.Parse(giris!); // geçersizse program HATA ile durur
Console.WriteLine(direnc * 2);
Kullanıcı "abc" yazarsa Parse bir hata fırlatır. Kullanıcı girdisinde daha güvenli yol TryParse'tır: başarılı olup olmadığını bool olarak söyler, sonucu out değişkenine koyar.
Console.Write("Gerilim (V): ");
string? giris = Console.ReadLine();
if (double.TryParse(giris, out double gerilim))
{
Console.WriteLine($"Girdiğin gerilim: {gerilim} V");
}
else
{
Console.WriteLine("Lütfen geçerli bir sayı gir.");
}
Türkçe ayarlı makinede ondalık için virgül yazılır (3,3); nokta yazarsan değer yanlış okunabilir. Bu, TryParse'ın o anki bölgesel ayarlara bakmasındandır.
Convert sınıfı ve örtük dönüşüm
Küçük tipten büyüğe dönüşüm kendiliğinden olur (örtük): int bir double'a konabilir. Büyükten küçüğe dönüşüm bilgi kaybedebileceği için açıkça yazman gerekir:
int tam = 7;
double ondalik = tam; // örtük, sorun yok
double olcum = 9.99;
int kesilmis = (int)olcum; // 9: kesir atılır, yuvarlama yapılmaz
int yuvarlanmis = Convert.ToInt32(olcum); // 10: yuvarlar
Console.WriteLine($"{kesilmis} {yuvarlanmis}");
9 10
İpucu: Kullanıcıdan gelen her veri hatalı olabilir. Girdi aldığında önce TryParse ile doğrula, sonra kullan. Bu alışkanlık seni hata ayıklamaktan kurtarır.
Kendin dene
Kullanıcıdan iki sayı alan (TryParse ile), toplamlarını, farklarını, çarpımlarını ve bölümlerini (ondalıklı) yazan bir program yaz. İkinci sayı sıfırsa bölme yerine "Sıfıra bölünemez" yazsın.
// Mini sınav
Bir seçeneğe tıkla; doğru mu yanlış mı, anında ve nedeniyle birlikte göreceksin.
Bitirdiğinde işaretle: ilerlemen kaydolur, +20 XP kazanırsın.
İpucu: ← → tuşlarıyla dersler arasında gezinebilirsin.