Değişkenler, verileri sakladığımız kutular olarak düşünülebilir. Veriler bu kutuların içine konur ve her kutunun bir veri tipi vardır. Veri tipleri şunlardır:
- byte
- short
- int
- long
- float
- double
- boolean
- char
- string
- Tam sayıları saklamak için kullanılır.
- 1 byte yer kaplar.
- -128 ile 127 arasındaki değerleri kapsar.
- Tam sayı saklar.
- byte veri tipinden daha geniş bir aralığı vardır.
- 2 byte yer kaplar.
- Tam sayılar için en sık kullanılan veri tipidir.
- 4 byte yer kaplar.
- 9-10 basamaklı sayılara kadar çıkabilir.
- Örneğin: Kullanıcının TC Kimlik numarasını saklamak için yetersizdir çünkü int en fazla 10 basamaklı sayıları destekler.
- Daha büyük tam sayıları saklamak için kullanılır.
- 8 byte yer kaplar.
- TC Kimlik numarası gibi 11 basamaklı sayıları saklamak için uygundur.
- Ondalıklı sayıları saklar.
- 2 byte yer kaplar.
- Sınırlı bir hassasiyete sahiptir.
- Ondalıklı sayıları saklar.
- 4 byte yer kaplar.
- float veri tipine göre daha hassastır.
- true veya false değerlerini saklar.
- Tek bir karakteri saklar.
- Metin verilerini saklar.
Bir değişken tanımlarken aşağıdaki adımları izleriz:
- Değişkenin veri tipi belirlenir.
- Değişken adı ve değeri tanımlanır.
Örnek:
int a = 5;
string metin = "Merhaba";- Metin değerleri çift tırnak (") içerisinde tanımlanır.
-
Değişken adı rakamla başlayamaz.
int 1a = 5; // Hatalı
-
Değişken adı boşluk içeremez.
int a b = 5; // Hatalı
-
Türkçe karakter kullanılmamalıdır.
int çelik = 5; // Hatalı
Koşul yapıları, bir şartın sağlanıp sağlanmadığını kontrol etmek için kullanılır.
Yapısı:
if (şart)
{
// Şart doğruysa çalışacak kodlar
}
else
{
// Şart yanlışsa çalışacak kodlar
}Eğer if koşulu true değerine sahipse if bloğu çalışır. Eğer koşul sağlanmazsa else bloğu devreye girer. Temel yapı bu şekildedir.
Öğrencinin notu 50'den büyükse "Başarılı", aksi takdirde "Başarısız" yazdıralım:
int not = 75;
if (not > 50)
{
Console.WriteLine("Başarılı");
}
else
{
Console.WriteLine("Başarısız");
}
Console.ReadLine();Bu örnekte not değişkeninin değeri 75 olduğu için if bloğu çalışacak ve "Başarılı" yazdırılacaktır. else bloğu çalışmayacaktır.
Birden fazla durumun kontrol edilmesi gerektiğinde else if yapısı kullanılır.
Yapısı:
if (şart1)
{
// Şart1 doğruysa çalışacak kodlar
}
else if (şart2)
{
// Şart2 doğruysa çalışacak kodlar
}
else
{
// Hiçbir şart sağlanmazsa çalışacak kodlar
}Kullanıcıdan üç not alıp ortalamasını hesaplayalım. Not aralıklarına göre harf notunu yazdıralım:
Console.WriteLine("Lütfen birinci notunuzu giriniz:");
int birinci_not = Convert.ToInt32(Console.ReadLine());
int ikinci_not = Convert.ToInt32(Console.ReadLine());
int ucuncu_not = Convert.ToInt32(Console.ReadLine());
// Burada ReadLine ile notu string olarak alıyoruz. Ancak not üzerinde matematiksel işlemler yapılacağı için Convert ile int'e çeviriyoruz.
int sonuc = (birinci_not + ikinci_not + ucuncu_not) / 3;
if (sonuc >= 80 && sonuc <= 100)
{
Console.WriteLine("A+");
}
else if (sonuc >= 60 && sonuc < 80)
{
Console.WriteLine("A");
}
else if (sonuc >= 40 && sonuc < 60)
{
Console.WriteLine("B+");
}
else
{
Console.WriteLine("F");
}switch yapısı, bir değişkenin belirli bir değer alıp almadığını kontrol etmek için kullanılır.
Yapısı:
switch (deger)
{
case deger1:
// Kodlar
break;
case deger2:
// Kodlar
break;
default:
// Hiçbir case sağlanmazsa çalışacak kodlar
break;
}switchiçindeki değer hangicaseile eşleşirse o bloğa girer.- Bir sonraki
casebloğuna geçilmemesi içinbreakifadesi kullanılır.
int gun = 3;
switch (gun)
{
case 1:
Console.WriteLine("Pazartesi");
break;
case 2:
Console.WriteLine("Salı");
break;
case 3:
Console.WriteLine("Çarşamba");
break;
default:
Console.WriteLine("Geçersiz gün");
break;
}for döngüsü, belirli bir koşul sağlanana kadar belirli işlemleri tekrar etmek için kullanılır. Aşağıdaki örnekte 1'den 10'a kadar olan sayılar alt alta yazdırılacaktır.
Örnek:
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
Console.ReadLine();while döngüsü, belirtilen şart doğru olduğu sürece kod bloklarını tekrarlar. for döngüsünün alternatifidir.
Örnek:
int i = 1;
while (i <= 10) // i 10'a kadar artacak
{
Console.WriteLine(i); // i'yi alt alta yazdır
i++; // i'nin değerini 1 artır
}foreach döngüsü, diziler (veya koleksiyonlar) üzerinde tek tek gezilerek işlem yapmak için kullanılır.
Örnek:
string[] isimler = { "Sitran", "Şeri", "Sena" };
foreach (string a in isimler)
{
Console.WriteLine(a);
}Burada önce bir dizi (koleksiyon) belirledik, bu örnekte isimler adlı bir dizi kullanılmıştır.
C# dilinde diziler (arrays), aynı türdeki birden fazla veriyi bir arada saklamak için kullanılan veri yapılarıdır. Diziler, sabit boyutludur, yani boyutları tanımlandıktan sonra değiştirilemez.
-
[] Bu işaret dizileri ifade eder.
Diziler her zaman köşeli parantez[]kullanılarak tanımlanır. -
Veri tipini uygun tanımlamak gerekir.
Dizilerde yalnızca tanımlanan veri tipine uygun elemanlar saklanabilir. -
Diziler sıfır indeksle başlar.
Dizilerdeki ilk eleman her zaman0indeksine sahiptir.
-
Dizi Tanımlama
// Boş bir dizi oluşturma (5 elemanlı) int[] sayilar = new int[5];
-
Diziye Değer Atama
sayilar[0] = 10; // İlk eleman sayilar[1] = 20; // İkinci eleman
-
Dizi Tanımlama ve Başlatma
string[] isimler = { "Ali", "Ayşe", "Fatma" };
-
Dizi Elemanlarına Erişim
Console.WriteLine(sayilar[0]); // İlk eleman (10) Console.WriteLine(isimler[1]); // İkinci eleman ("Ayşe")
// Bir dizi tanımlayıp değer atama
int[] sayilar = { 5, 10, 15, 20, 25 };
// Tüm elemanları ekrana yazdırma
for (int i = 0; i < sayilar.Length; i++)
{
Console.WriteLine($"Eleman {i}: {sayilar[i]}");
}
// foreach ile elemanlara erişim
Console.WriteLine("Foreach ile:");
foreach (int sayi in sayilar)
{
Console.WriteLine(sayi);
}
**Çıktı:**
Eleman 0: 5 Eleman 1: 10 Eleman 2: 15 Eleman 3: 20 Eleman 4: 25 Foreach ile: 5 10 15 20 25
---
#### **Dizilerde Önemli Özellikler**
1. **`Length`**: Dizinin eleman sayısını verir.
```csharp
Console.WriteLine(sayilar.Length); // 5
- Çok Boyutlu Diziler:
int[,] matris = new int[2, 3]; // 2 satır, 3 sütun matris[0, 0] = 1; // İlk satır, ilk sütun matris[1, 2] = 5; // İkinci satır, üçüncü sütun
- Diziler, birden fazla aynı türdeki veriyi saklamak için kullanılır.
- Diziler, sıfır indeksiyle başlar.
- Köşeli parantez
[]kullanılarak tanımlanır. - Dizilerin boyutu tanımlandıktan sonra değiştirilemez.
C# dilinde methodlar, yapmak istediğimiz işe hizmet eden kod parçacıklarıdır. Methodlar, kod tekrarını önler ve programlarımızı daha düzenli bir hale getirir.
Bir method, belirli bir işlevi yerine getiren ve gerektiğinde parametre alabilen veya değer döndürebilen yapılardır.
Methodlar belirli bir yapıdadır ve bu yapı aşağıdaki gibi özetlenebilir:
<erişim_belirleyicisi> <geri_dönüş_tipi> <method_adı>(<parametreler>)
{
// Methodun içindeki işlemler
}Örnek:
public static void Merhaba()
{
Console.WriteLine("Merhaba Dünya!");
}-
Parametresiz - Geriye Değer Döndürmeyen Method
static void Main(string[] args) { // Method çağırma Naber(); } static void Naber() { // Geriye değer döndürmeyen bir method (void) Console.WriteLine("Selamlar"); }
Çıktı:
Selamlar
-
Parametre Alan - Geriye Değer Döndürmeyen Method
static void Main(string[] args) { // Methodu doğru şekilde parametrelerle çağırıyoruz toplamaYap(5, 7); // 5 ve 7 parametre olarak gönderildi } static void toplamaYap(int sayi1, int sayi2) { // Parametrelerle işlem yapıyor Console.WriteLine("Gönderilen sayıların toplamı: " + (sayi1 + sayi2)); }
Çıktı:
Gönderilen sayıların toplamı: 12
-
Parametre Alan - Geriye Değer Döndüren Method
static void Main(string[] args) { // Methodu çağır ve dönen sonucu yazdır int sonuc = carpmaYap(4, 6); Console.WriteLine("Çarpım sonucu: " + sonuc); } static int carpmaYap(int sayi1, int sayi2) { // Çarpım işlemini yapıp sonucu döndürür return sayi1 * sayi2; }
Çıktı:
Çarpım sonucu: 24
- Parametresiz Methodlar: Herhangi bir bilgi almadan işlem yapar.
- Parametre Alan Methodlar: İşlem yapmak için belirli değerleri alır.
- Geriye Değer Döndüren Methodlar: İşlemler sonucunda bir değer döndürür.
- Void Methodlar: Geriye hiçbir değer döndürmeyen methodlardır.