double pi;
Console.Write($"{pi} - ");
{
pi = 3.14;
Console.Write($"{pi} - ");
}
Console.Write($"{pi}");C# Programlama 2025-2026 Ara Sınav (Vize)
Kaynak: https://lolonolo.com/2026/06/05/c-programlama-2025-2026-vize-sorulari/
📖 Konu özeti (sınav öncesi tekrar)
C# Programlama 2025-2026 Vize Soruları
Değişkenler ve Veri Tipleri
C# dilinde değişkenler, bellek üzerinde veri saklamak için kullanılan isimlendirilmiş alanlardır. Her değişkenin bir veri tipi vardır ve bu tip, değişkenin ne tür veri tutabileceğini ve bellekte ne kadar yer kaplayacağını belirler. C# güçlü tipli (strongly-typed) bir dil olduğundan, değişkenlerin kullanılmadan önce tanımlanması ve değer atanması zorunludur. Temel tam sayı tipleri byte, short, int ve long olup değer aralıkları sırasıyla genişler: byte (0-255), short (-32768 ile 32767), int yaklaşık -2 milyar ile +2 milyar, long ise çok daha geniş bir aralığı kapsar.
var, dynamic ve object Anahtar Kelimeleri
C# dilinde tip esnekliği sağlayan üç özel anahtar kelime bulunur. var ile tanımlanan değişkenin tipi, ilk atanan değere göre derleme zamanında belirlenir ve sonradan değiştirilemez; bu nedenle her türden veriyi saklayabileceği iddiası yanlıştır. dynamic ile tanımlanan değişkenin tür kontrolü ise derleme zamanında değil, çalışma zamanında yapılır ve değişkenin tipi sonradan farklı bir değer atanarak değiştirilebilir. object ise tüm tiplerin atası olan ve herhangi bir değer alabilen en genel tiptir.
Veri Tipi Dönüşümleri
C# dilinde iki tür veri tipi dönüşümü vardır. Örtük (implicit) dönüşüm, küçük bir tipten büyük bir tipe otomatik olarak gerçekleşir ve veri kaybı yaşanmaz. Aşikâr (explicit / cast) dönüşüm ise büyük tipten küçük tipe yapılır, programcı tarafından açıkça belirtilmesi gerekir ve veri kaybına yol açabilir. İşaretli tipten işaretsiz tipe yapılan dönüşümlerde taşma (overflow) durumunda beklenmedik değerler ortaya çıkabilir; bu durum tutarsız çıktılara neden olur.
Nullable Tipler ve Null Birleştirme Operatörü
C# dilinde değer tipleri normalde null alamaz; ancak tip adının yanına soru işareti eklenerek (örneğin int?) nullable hale getirilebilirler. Nullable bir değişkenin değeri null olduğunda, null birleştirme operatörü (??) devreye girerek varsayılan bir değer döndürür. Üçlü operatör (koşul ? değer1 : değer2) ile birlikte kullanıldığında, null kontrolü ve koşullu atama işlemleri kısa ve okunabilir biçimde yazılabilir.
String Değişmezleri ve Konsol Çıktısı
C# dilinde string ifadeler çift tırnak içinde yazılır; tek tırnak yalnızca char tipi için kullanılır. Özel karakterler içeren dizgeler için verbatim string (@”…”) veya ham string değişmezi (“””…”””) kullanılabilir. Console.Write() satır sonu eklemeden, Console.WriteLine() ise satır sonu ekleyerek çıktı verir. String interpolasyon ($”{}”) ve bileşik biçimlendirme (“{0}, {1}”) ile değişken değerleri çıktıya kolayca gömülebilir.
Operatörler ve Öncelik Sırası
C# dilinde operatör önceliği, ifadelerin nasıl değerlendirileceğini belirler. Artırma/azaltma operatörleri ön ek (++x, –x) veya son ek (x++, x–) biçiminde kullanılabilir; ön ekte önce işlem yapılır, son ekte önce mevcut değer kullanılır. Mantıksal operatörlerde & ve | operatörleri her iki tarafı da değerlendirirken, && ve || kısa devre değerlendirmesi yapar. XOR operatörü (^) ise iki işlenen aynıysa false, farklıysa true döndürür.
Kapsam ve Sabitler
C# dilinde süslü parantezlerle oluşturulan her blok bir kapsam oluşturur. Dış kapsamda tanımlanan bir değişken iç kapsamdan erişilebilir ve değiştirilebilir; yapılan değişiklik dış kapsama da yansır. const ile tanımlanan sabitler derleme zamanında belirlenmeli ve ilk tanımlamada değer atanmalıdır; sonradan atama yapılamaz ve bir değişkenin değeri sabite atanamaz. Bu kurallar gözetilmeden yazılan kodlar derleme hatası üretir.
int x = -2, y = x-- - 2, z = 2;
sbyte result = (sbyte)(++x / - --y + z++ % 2 - x);
Console.WriteLine(result);int x = 0;
int y = -1;
int z = 1;
if( y + z != x && y > z )
Console.WriteLine("*");
else if( y > x || ++y > z )
Console.WriteLine("/");
else if( y == x & x < z ) Console.WriteLine("+"); else if( z >= x + y )
Console.WriteLine("-");
else
Console.WriteLine("%");koşul false.
koşul: y > x false → ++y ile y=0 olur, 0 > 1 false → toplam false.
koşul: y == x → 0==0 true, x < z → 0<1 true, true & true → true.
Bu nedenle Console.WriteLine(“+”); çalışır ve program sonlanır.
İstanbul Üniversitesi
2023
AUZEFYukarıdaki dizgeleri verildiği gibi üç satırda konsola çıktılayan kodlar hangi şıkta doğru olarak verilmiştir?
Console.Write yazdıktan sonra alt satıra geçmez, Console.WriteLine ise yazdıktan sonra alt satıra geçer. B şıkkında "İstanbul " yazılır, ardından WriteLine("Üniversitesi") aynı satıra devam edip satırı bitirir; sonra "2023" ikinci satıra yazılıp satır biter ve "AUZEF" üçüncü satıra yazılır. Böylece istenen üç satırlık çıktı elde edilir.
Console.Write("{0} - {2} - {1}", "İstanbul Üniversitesi", 1453, "C#");char harf = 'C';
char sembol = '#';
int yil = 2023;
string bolumKodu = "BLGPRG";
Console.Write("{0} {2} {3} {1}", sembol, bolumKodu, harf, yil);float x = 1.5F;
ushort y = 1;
int z = (int)-0.5D;
double Toplam = x + y + z;byte x = 1;
short y = -10;
double z = 0.1;sbyte a = -128;
byte b = (byte)a;
Console.Write(--b);Console.Write("{0} : {1}", false != null, !(false || true & false) ^ false);char sembol = '-';
if (true ^ true)
sembol = '.';
else if ( !true & true)
sembol = ':';
else
sembol = ';';
Console.Writeline(sembol);int x = -1;
int y = 1;
bool result = true & (++x >= -1) | (y <= + --x + 1);
Console.Write($"{x} : {result}");float? a = -9F;
double b = (double)a++;
Console.Write((int)(--a - b++ + 1));int a = 1, b = -1;
int? c = null;
int result = b <= a ? c ?? 5 : 0;
Console.Write(result);string dizge = "AUZEF";
{
Console.WriteLine(dizge);
{
dizge = "Programlama";
Console.Write("{0} ", dizge);
}
dizge = "Bilgisayar";
Console.WriteLine(dizge);
dizge = "C#";
}
Console.Write($"{dizge}");bool stat = true;
int x = -1, y = 2, z = 3;
int result = !stat & ++x == 0 ? x / y : z + x - y;
Console.Write(result);