Final 2025-2026 20 soru

C# Programlama 2025-2026 Final

Kaynak: https://lolonolo.com/2026/06/12/c-programlama-2025-2026-final-sorulari/

📖 Konu özeti (sınav öncesi tekrar)

C# Programlama 2025-2026 Final Soruları

C# Programlama 2025-2026 Final Soruları

Matematiksel ve Tarihsel Metotlar | Koleksiyonlar ve Dizi Mimarisi | Hata Yönetimi (Exception Handling) | Metotlar ve String Manipülasyonları

Matematiksel ve Tarihsel Metotlar

C# dilinde bir sayının mutlak değerini almak için Math.Abs() metodu kullanılır; negatif değerleri pozitife çevirir. Ceiling yukarı, Floor aşağı yuvarlama yapar. Tarih ve zaman işlemlerinde geçmişe gitmek için AddDays() veya Subtract() metotları kullanılır. Ayın adını metinsel yazdırmak için “MMMM” formatı gerekirken, “MM” veya *Month* sadece rakamsal değer verir. Konsol çıktısı formatlamalarında süslü parantez içindeki indisler (örn: `{1} {0}`) argüman sırasını belirler ve 0’dan başlar. Bitwise (Tilda ~) işlemleri ise kısa yoldan `-(n+1)` sonucunu verir (Örn: ~5, -6’dır).

Koleksiyonlar ve Dizi Mimarisi

Verileri anahtar-değer çiftleri şeklinde artan sırada tutan koleksiyon SortedDictionary’dir. Düzensiz anahtar-değer tutan yapılar ise Dictionary ve HashTable’dır. Dizilerde indeksleme 0’dan başlar; eleman atamaları ve aritmetiksel güncellemeler indisler üzerinden (`sayilar[1] = 10`) yürütülür. Dizi içerisinde şarta uyan eleman kontrolü için Array.Exists() metodu kullanılır.

Hata Yönetimi (Exception Handling)

C# hata yönetiminde try-catch-finally blokları kullanılır. Finally bloğu, try içerisinde hata oluşsun ya da oluşmasın her durumda kesinlikle çalıştırılır (kaynak temizliği için). OverflowException, bir veri tipine kapasitesinin üzerinde/altında değer atandığında fırlatılan taşınma hatasıdır. Try bloğuna bağlı birden fazla catch bloğu yazılabilirken, birden fazla finally bloğu yazılamaz (derleme hatası verir).

Metotlar ve String Manipülasyonları

Metot imzaları, metot adını ve parametre türlerini (imzasını) kapsar; çağrıldığı türe uygun parametre gönderilmelidir (`Topla(int a, int b)`). Yerel Fonksiyonlar (Local Functions), dış metodun gövdesinde tanımlanan lokal kod parçacıklarıdır; sınıf seviyesinde olmadıkları için `public`, `private` gibi erişim belirleyicileri alamazlar ve sadece tanımlandıkları metottan erişilebilirler. Metin içindeki bir kelimeyi değiştirmek için Replace() metodu kullanılır. Döngüleri kontrol etmek için *break* komutu kullanılır; şart sağlandığında döngü sonlandırılır.

C# Programlama 2025-2026 Final Soruları

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Bir sayının mutlak değerini hesaplamak için C#’ta hangi metot kullanılır?
EDoğru cevap
Açıklama
Mutlak değer (Absolute value) matematiksel olarak bir sayının sayı doğrusunda sıfıra olan uzaklığıdır ve negatif değerleri pozitife çevirir. C# dilinde bu işlemi `Math` sınıfı altındaki `Math.Abs()` metodu gerçekleştirir. Seçeneklerdeki diğer metotlardan `Ceiling` her zaman yukarı yuvarlar, `Floor` her zaman aşağı yuvarlar, `Round` en yakın tam sayıya yuvarlar ve `Sqrt` sayının karekökünü hesaplamak için kullanılır.
Soru 2
Veriyi anahtar-değer çiftleri biçiminde ve artan düzende sıralı bir şekilde saklayan koleksiyon türü aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
C# dilinde `SortedDictionary` veri yapısı, verileri “anahtar-değer” (key-value) çiftleri halinde tutan ve koleksiyona eklenen bu verileri anahtarlara (keys) göre otomatik olarak alfabetik veya sayısal olarak artan (ascending) düzende sıralı bir şekilde saklayan özel bir yapıdır. `Dictionary` ve `HashTable` yapıları da anahtar-değer çifti kullanır ancak verileri belirli bir sırada (sıralı olarak) garanti ederek saklamazlar.
Soru 3
C# Programlama 2025-2026 Final Soruları 3. soru
Yukarıda verilen C# kodlarının işlevi aşağıdaki hangi şıkta doğru verilmiştir?
CDoğru cevap
Soru 4
Bugünden 45 gün önceki ayın adını ekrana yazdıran C# kodu aşağıdaki şıkların hangisinde verilmiştir?
DDoğru cevap
Açıklama
C# dilinde tarih ve zaman işlemlerinde günümüz tarihinden geriye gitmek için `AddDays(-45)` veya `Subtract(TimeSpan.FromDays(45))` metotları güvenle kullanılabilir. Ancak soruda “ayın adını” (örneğin “Ocak”, “Şubat” gibi metinsel olarak) yazdırması istenmektedir. `tarih.Month` veya `”MM”` formatı sadece ayın kaçıncı ay olduğunu rakamsal (Örn: 1, 2) olarak verirken, `”MMMM”` format belirleyicisi ilgili ayın adını tam ve metinsel olarak ekrana yazdırmayı sağlar.
Soru 5
Console.Write(“{1} {0} {2}”, 3, 0, -2, 1);
Yukarıda verilen C# kodunun çıktısı aşağıdaki hangi şıkta doğru verilmiştir?
DDoğru cevap
Açıklama
`Console.Write` metodunda string formatlama kullanılırken, tırnak işaretleri arasındaki süslü parantezlerin `{}` içine yazılan sayılar, virgülden sonra metoda gönderilen argümanların indeks (sıra) numarasını temsil eder. İndeksleme 0’dan başlar. Buna göre; 0. indeks “3”, 1. indeks “0”, 2. indeks “-2” ve 3. indeks “1” dir. Format `”{1} {0} {2}”` olarak verildiği için, sırasıyla 1. indeks (0), 0. indeks (3) ve 2. indeks (-2) yan yana getirilir. Sonuç “0 3 -2” şeklinde, bitişik algılanırsa “0 3-2” olur.
Soru 6
Aşağıdaki C# for döngülerinden hangisi sonsuz döngü örneğidir?
ADoğru cevap
Açıklama
A şıkkındaki döngü yapısı incelendiğinde; `i` sayacı 10 değerinden başlamakta, `i >= 5` olduğu sürece döngünün çalışması koşulu aranmakta ve her adımda `i += 2` ile sayaç ikişer ikişer artırılmaktadır. `i` değişkeni 10, 12, 14, 16 şeklinde sonsuza kadar büyüyeceği için hiçbir zaman 5’ten küçük olma ihtimali yoktur. Koşul her zaman ‘True’ (doğru) döneceği için bu döngü sonsuz bir döngüdür.
Soru 7
C# dilinde verilen atama ve dönüşüm işlemlerine göre, aşağıdaki değişkenlerden hangisinin aldığı değer diğerlerinden farklıdır?
ADoğru cevap
Açıklama
`Convert.ToInt32()` metodu ondalıklı bir sayıyı tam sayıya dönüştürürken matematikteki yuvarlama kurallarını (ve Banker’s Rounding prensibini) uygular. Bu nedenle `5.9` değeri bir üst tam sayı olan 6’ya yuvarlanır. Diğer şıklara bakıldığında; `5.4` aşağı yuvarlanarak 5 olur, `”05″` metni 5’e dönüşür, `2+3` işlemi 5 sonucunu verir ve `(int)5.9` şeklindeki Cast (açık dönüşüm) işlemi ondalık kısmı direkt kesip atacağı için 5 değerini döndürür. Sonuç olarak sadece A şıkkındaki değişken 6 değerini alarak diğerlerinden farklılık gösterir.
Soru 8
C# Programlama 2025-2026 Final Soruları 8. soru
Yukarıda verilen programın çalışması için kodda boş bırakılan yere aşağıdaki seçeneklerden hangisi getirilmelidir?
CDoğru cevap
Açıklama
Programın Main metoduna bakıldığında `Topla(5, 7)` şeklinde bir çağrı yapıldığı görülmektedir. Bu, çağrılan metodun “Topla” isminde olması gerektiğini ve iki adet tam sayı (integer) parametre kabul etmesi gerektiğini gösterir. Ayrıca metodun gövdesinde `return a + b;` yazılarak `a` ve `b` değişkenlerinin toplandığı açıkça belirtilmiştir. Kodun eksiksiz ve hatasız çalışabilmesi için metodun imzasının `Topla(int a, int b)` şeklinde tanımlanmış olması zorunludur.
Soru 9
int[] sayilar = { 3, 5, 7, 9 };
sayilar[1] = 10;
sayilar[3] = sayilar[1] + 2;
Yukarıdaki C# kodu çalıştırıldığında sayilar isimli dizinin son hali hangi seçenekte verilmiştir?
BDoğru cevap
Açıklama
Dizilerde indeksleme 0’dan başlar. Başlangıçta dizimiz: 0. indeks=3, 1. indeks=5, 2. indeks=7, 3. indeks=9 değerlerine sahiptir. Kod satırlarında `sayilar[1] = 10;` komutu ile 1. indeksteki ‘5’ değeri ’10’ ile değiştirilir (Yeni dizi: 3, 10, 7, 9). Sonraki `sayilar[3] = sayilar[1] + 2;` komutu ile 1. indeksteki güncel değer olan 10 alınır, 2 eklenerek 12 bulunur ve bu sonuç 3. indeksteki ‘9’ değerinin yerine yazılır. Dizinin nihai durumu {3, 10, 7, 12} olur.
Soru 10
int sonuc = 5;
int x = 2, y = 1, z = -1;
sonuc = y – z >= x ? -5 : (z >= -y ? 10 : -10);
Console.WriteLine(sonuc);
Yukarıda verilen C# kodunun konsol çıktısı aşağıdaki şıkların hangisinde doğru olarak verilmiştir?
BDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

Önce dış koşul değerlendirilir: y - z = 1 − (−1) = 2 ve 2 >= x yani 2 >= 2 doğrudur. Koşul doğru olduğu için üçlü operatör ? sonrasındaki ilk değeri, yani −5'i döndürür; parantez içindeki ikinci üçlü ifade hiç değerlendirilmez. Ekrana −5 yazılır.

Soru 11
Aşağıdaki seçeneklerden hangisinde, C# dilinde istisna işleme yapısında kullanılan finally bloğunun işlevi doğru şekilde açıklanmıştır?
ADoğru cevap
Açıklama
Hata yönetimi (Exception Handling) mekanizmasında `try-catch-finally` blokları kullanılır. `finally` bloğunun en büyük özelliği; `try` bloğunda bir hata meydana gelse de gelmese de, kod başarılı da olsa çökse de işleyişin en sonunda mutlaka ve kesinlikle çalıştırılacak olan blok olmasıdır. Özellikle veritabanı bağlantılarının kapatılması, bellek sızıntılarını önlemek için dosya akışlarının (Stream) temizlenmesi gibi hayati temizlik (garbage collection yardımcısı) işlemleri için tasarlanmıştır.
Soru 12
OverflowException istisnasıyla ilgili aşağıdaki şıklardan hangisi doğrudur?
CDoğru cevap
Açıklama
C# dilinde `OverflowException` (Taşma İstisnası), bir veri tipine taşıyabileceğinden (maksimum ve minimum sınırlarından) daha büyük veya daha küçük bir değer aritmetik olarak atanmaya çalışıldığında fırlatılan bir hatadır. Örneğin; 0 ile 255 arasında değer alabilen `byte` veri tipindeki bir değişkene 300 sayısını atamaya çalışmak veya toplama işlemi sonucunda int sınırlarını aşmak bu hataya yol açar.
Soru 13
Bir dizide belirli bir elemanın varlığını kontrol eden dizi metodu aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
C#’ta statik `Array` sınıfına ait olan `Array.Exists()` metodu, belirtilen bir dizi içerisinde kullanıcının tanımladığı spesifik bir şarta veya değere uyan en az bir elemanın bulunup bulunmadığını kontrol etmek için kullanılır. Eğer dizi içerisinde aranan kriterlere uygun bir eleman varsa geriye mantıksal `true` (doğru), yoksa `false` (yanlış) değerini döndürür.
Soru 14
Yerel fonksiyonlarla ilgili aşağıda verilenlerden hangisi yanlıştır?
BDoğru cevap
Açıklama
C# 7.0 ile hayatımıza giren “Local Functions” (Yerel Fonksiyonlar), adından da anlaşılacağı üzere sadece tanımlandıkları kapsayıcı dış metodun kendi gövdesi içerisinden erişilip çalıştırılabilen kapalı/lokal fonksiyonlardır. Sınıf seviyesinde olmadıkları ve dışarıdan asla çağrılamayacakları için `public`, `private`, `protected` gibi erişim belirleyicilerini (access modifiers) almaları mimari olarak anlamsızdır ve C# sentaks kurallarına göre yasaktır. Bu nedenle B şıkkı yanlıştır.
Soru 15
string dizge = “Merhaba Dünya”;
Yukarıda verilen dizge değerini kullanarak konsola “Merhaba C#” çıktısını veren komut satırı aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
String (metin) manipülasyon işlemlerinde bir metnin içindeki belirli bir kelimeyi veya karakter grubunu başka bir metinle bulup değiştirmek için `Replace` metodu kullanılır. `dizge.Replace(“Dünya”, “C#”)` komutu uygulandığında, sistem orijinal metnin içindeki “Dünya” kelimesini tarar, siler ve yerine tam olarak istenen “C#” kelimesini yazarak “Merhaba C#” sonucunu başarılı bir şekilde oluşturur.
Soru 16
C# dilinde istisna işleme yapısıyla ilgili aşağıdaki şıklardan hangisi yanlıştır?
BDoğru cevap
Açıklama
C# dilinin mimarisinde `try` bloğu kullanıldığında, fırlatılabilecek farklı türdeki hataları (Örn: NullReferenceException, DivideByZeroException) ayrı ayrı ele alabilmek için peş peşe birden fazla (çoklu) `catch` bloğu yazılmasına izin verilir. Ancak temizlik kodlarının bulunduğu `finally` bloğu, hiyerarşinin ve işleyişin en sonunda sadece 1 tane bulunmak zorundadır. Birden fazla `finally` bloğu tanımlanması kesinlikle yanlıştır ve derleme (compile) hatası verir.
Soru 17
Yalnızca tanımlandığı metodun içinden erişilebilen metod türü aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
“Yerel fonksiyon” (Local function) kavramı, büyük bir metodun içerisine gömülü olarak yazılan ve programın başka hiçbir yerinden görünmeyen, sınıfın diğer üyeleri tarafından da çağrılamayan yalıtılmış metodlardır. Sadece kendisini sarmalayan üst metodun içerisinden çağrılabilirler. Amacı, yalnızca tek bir fonksiyona özgü olan tekrarlayan karmaşık kod bloklarını ayrıştırarak kodun okunabilirliğini ve temizliğini (clean code) artırmaktır.
Soru 18
C# Programlama 2025-2026 Final Soruları 18. soru
Yukarıda verilen C# kodunun çıktısı aşağıdaki şıkların hangisinde doğru olarak verilmiştir?
EDoğru cevap
Açıklama
`for` döngüsünün değişkeni `i=1` den başlayıp her adımda 2 artmaktadır. Döngü adımlarını sırayla inceleyelim: 1. Adım: i=1’dir. `i>5` şartı sağlanmaz, `Console.WriteLine(1)` çalışır. 2. Adım: i=3 olur. Şart yine sağlanmaz, ekrana 3 yazdırılır. 3. Adım: i=5 olur. `i>5` (5>5) şartı sağlanmaz, ekrana 5 yazdırılır. 4. Adım: i=7 olur. Bu kez `i>5` şartı (7>5) doğru (True) sonuç verir. Sisteme `break;` komutu iletilir ve döngü derhal, tamamen sonlandırılır. Sonuç olarak ekrana alt alta sırasıyla 1, 3 ve 5 sayıları yazdırılmış olur.
Soru 19
Aşağıdaki konsol çıktılarından hangisi sayısal olarak en küçük değeri verir?
DDoğru cevap
Açıklama
Seçeneklerdeki semboller, sayıları ikilik tabana (binary) çevirip bit düzeyinde (bitwise) mantıksal işlem yapan operatörlerdir. `5 ^ 2` (XOR) sonucu 7’dir. `5 | 2` (OR) sonucu 7’dir. `5 & 2` (AND) sonucu 0’dır. Tilda işareti `~` (Bitwise Complement/NOT) ise sayının bitlerini tamamen tersine çevirir ve 32-bit işaretli tam sayılarda matematiksel kısa yolu `- (n + 1)` şeklindedir. Buna göre `~5` işlemi -6’ya, `~2` işlemi ise -3’e eşittir. Matematiksel olarak içlerinde en küçük değere sahip olan -6 olduğu için doğru cevap `~5` işlemini gerçekleştiren D şıkkıdır.
Soru 20
C# dilinde sabitlerle ilgili aşağıda verilenlerden hangisi yanlıştır?
ADoğru cevap
Açıklama
C# programlama dilinde `const` (sabit) anahtar kelimesi ile oluşturulan değişkenler compile-time (derleme zamanı) sabitleridir. Bunun anlamı, bu değişkenin değerinin kodu yazan kişi tarafından kod derlenmeden hemen önce sabit bir değerle (Örn: Pi sayısı gibi) ilk atamasının yapılmış olması zorunluluğudur. Program çalışmaya başladıktan (runtime) sonra kullanıcıdan veri alınarak bir const değişkene dinamik olarak asla değer atanamaz ve program ömrü boyunca içeriği değiştirilemez. Bu nedenle A şıkkındaki ifade tamamen yanlıştır.