LOLONOLO Ana Sayfa » blog » auzef » C# Programlama 2023-2024 Vize Soruları
auzefBilgisayar ProgramcılığıC# Programlama

C# Programlama 2023-2024 Vize Soruları

C# Programlama 2023-2024 Vize Soruları

 
LOLONOLO Ana Sayfa » blog » auzef » C# Programlama 2023-2024 Vize Soruları

#1. Aşağıdaki değer atamalarından hangisi geçerlidir?

Cevap : D) string str = “”” namespace class “””;

Açıklama : C# 11 ve üstünde çok satırlı (raw) string sözdizimi mevcuttur.
A, B ve C seçenekleri kaçış karakteri veya tırnak kullanımı açısından hatalıdır;
E seçeneği ise geçersiz bir ayrıştırma içerir. D seçeneği ise çok satırlı string söz dizimine uygundur
ve bu nedenle derleyici hatası vermez. Bu örnek, C# programlama temellerinde dize literal kullanımını göstermektedir.

bool stat = true;
int x = -1, y = 2, z = 3;
int result = !stat & ++x == 0 ? x / y : z + x - y;
Console.Write(result);

#2. Yukarıdaki kod parçacığında program çıktısı hangi şıkta doğru verilmiştir?

Cevap : C) 1

Açıklama : !stat false döndürür, ++x ise x’i 0’a çıkarır (başta -1’di).
Ardından koşul (++x == 0) true olacağı için soru işareti (?) sonrası kısım çalışır (x / y).
x / y = 0 / 2 tamsayı bölmesi 0’dır, ancak kodda !stat & ++x == 0 ifadesindeki
bitwise AND (&) kullanımına dikkat edilmelidir. Sonuçta işlenenler ve öncelik sırası incelendiğinde sonuç 1 olarak elde edilir
(burada z + x - y kısmı devreye girebilir). Kod çalıştığında C# operatör önceliği sebebiyle aslında
!stat & (++x == 0) ifadesi değerlendirilir, x=0 olur, ancak z + x - y bölümü seçildiğinde 3+0-2=1 döndürür.
Böylece ekrana 1 yazdırılır.

#3. Aşağıdaki değişken atamalarından hangisi geçerlidir?

Cevap : B) int t = 0x05AD;

Açıklama : C#’ta onaltılık (hex) sabit atama 0x ile yapılır. 0x05AD geçerli bir 16’lık sayıdır.
Diğer seçenekler ya C# söz dizimi bakımından hatalı isimlendirme (int short gibi) ya da geçersiz sabit formatları içerir.

float x = 1.5F;
ushort y = 1;
int z = (int)(-0.5D);
double Toplam = x + y + z;

#4. Yukarıdaki C# koduna göre aşağıdaki şıklardan hangisi yanlıştır?

Cevap : B) Kodda hata olduğundan dolayı derleyici hata verir.

Açıklama : Kod gerçekte derleme hatası vermez. x bir float, y bir ushort,
z ise (int) dönüştürülmüş bir double ifadesinden gelir. Bu, C#’ta explicit (aşikar) ve implicit (örtük)
dönüşümlerin bir arada olduğu geçerli bir örnektir. Toplam değeri 2.0 + 1.5’den dolayı 2.5 eder.
Dolayısıyla “hata verir” ifadesi yanlıştır.

int a = 1, b = -1;
int? c = null;
int result = b <= a ? c ?? 5 : 0;
Console.Write(result);

#5. Yukarıdaki kod parçasının çıktısı hangi şıkta doğru verilmiştir?

Cevap : E) 5

Açıklama : Koşulda b <= a true olduğu için c ?? 5 ifadesi çalışır.
Burada c null olduğu için ?? operatörü ile 5 seçilir ve ekrana 5 yazılır.
C# null coalescing operatörünün (??) örnek kullanımıdır.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

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("%");

#6. Yukarıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

Cevap : E) +

Açıklama : Kod adım adım değerlendirildiğinde birinci if koşulu (y+z != x && y>z) yanlıştır.
İkinci else-if (y>x || ++y>z) ifadesinde y>x false ama ++y>z = 0>1 = false.
Üçüncü koşulda (y == x & x<z) y artık 0 olduğundan y==x (0==0) doğru ve x bu nedenle Console.WriteLine("+"); satırı çalışır ve “+” çıktısı alınır.

double pi;
Console.Write($" {pi} - ");
{
pi = 3.14;
Console.Write($" {pi} - ");
}
Console.Write($" {pi}");

#7. Yukarıdaki kodla ilgili program çıktısı hangi şıkta doğrudur?

Cevap : E) Program derleme hatası verir.

Açıklama : Değer atanmamış double pi; değişkeni ilk kullanım esnasında
yazdırılmaya çalışıldığından C# derleyicisi “kullanılmadan önce atanmalı” şeklinde hata verir.
C#’ta yerel değişkenler varsayılan başlangıç değerine sahip olmadıkları için program derlenmez.

Console.Write("{0} : {1}",
false != null,
!(false || true & false) ^ false
);

#8. Yukarıdaki ifadenin çıktısı hangi şıkta doğru verilmiştir?

Cevap : C) True : True

Açıklama : C#’ta false != null ifadesi bool bağlamında true döner.
İkinci kısımda (true & false) = false, dolayısıyla false || false = false,
!(false) = true, son olarak true ^ false = true (XOR).
Dolayısıyla ekrana True : True yazdırır.

float? a = -9F;
double b = (double)a  ;
Console.Write((int)(--a - b     1));

#9. Yukarıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

Cevap : C) 1

Açıklama : a ifadesinden önce a -9’dur.
(double)a b’ye -9 olarak atanır fakat a sonrasında -8’e dönüşür.
Ardından --a işlemi a’yı -9 yapar.
b ifadesi b’yi önce -9 kullanır, sonra b -8’e güncellenir.
İşlemin tamamı (int)(-9 - (-9) 1) = (int)(0 1) = 1 sonucunu verir.

byte x = 1;
short y = -10;
double z= 0.1;

#10. Yukarida verilen değişkenler kullanılarak 0.1:-1:10 çıktısı alınmak istenmektedir. Aşağıdaki şıklardan hangisi istenen çıktıyı verir?

Cevap : A) Console.Write($”{z}:{-x}:{-y}”);

Açıklama : İstenen çıktı 0.1:-1:10 şeklindedir.
Dolayısıyla z=0.1, -x=-1, -y=10 sıralaması gerekir.
A şıkkındaki yerleşim tam olarak bu formatı verir ve ekranda “0.1:-1:10” görüntülenir.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

#11. Veri tiplerinin değer aralıkları hangi şıkta doğru sıralanmıştır?

Cevap : A) byte < short < int < long

Açıklama : C# temel tamsayı tiplerinde en küçük aralığa sahip olan byte,
daha sonra short, ardından int ve en geniş aralığa sahip long gelir.
Bu, C# veri tipi boyut ve aralık sıralamasına uygundur.

char harf = 'C';
char sembol = '#';
int yil = 2023;
string bolumKodu = "BLGPRG";
Console.Write("{0} {2} {3} {1}", sembol, bolumKodu, harf, yil);

#12. Yukarıdaki program çıktısı hangi şıkta doğru verilmiştir?

Cevap : B) # C 2023 BLGPRG

Açıklama : Format parametrelerinde {0} = sembol,
{1} = bolumKodu, {2} = harf, {3} = yil sırasıyla yerleştirilmiştir.
Dolayısıyla çıktı # C 2023 BLGPRG şeklinde oluşur.

Console.Write("0 - {2} - {1}", "İstanbul Üniversitesi", 1453, "C#");

#13. Yukarıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

Cevap : E) 0 – C# – 1453

Açıklama : Format ifadesinde {0} = "İstanbul Üniversitesi",
{1} = 1453, {2} = "C#" olarak sıralanmış. Ama stringin içinde “0 – {2} – {1}” kullanılıyor.
Yani önce “0” düz metin, sonra {2} = "C#", en sonda {1} = 1453 yazılır.
Bu yüzden ekranda “0 – C# – 1453” çıkar.

#14. C# dilinde veri tipleriyle ilgili aşağıdaki şıklardan hangisi yanlıştır?

Cevap : D) object veri tipinde bir değişken tanımlandığında değişkene değer atanması zorunludur.

Açıklama : object tipinde bir değişken tanımlarken mutlaka başlangıç değeri atama zorunluluğu yoktur.
Diğer seçenekler, var ve dynamic için bilinen davranışlardır. Bu yüzden D seçeneği yanlıştır.

int x = 4;
x >>= 2;
int y = ~x;
Console.Write($"{x} : {y}");

#15. Yukarıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

Cevap : A) 1 : -2

Açıklama : x >>= 2, 4’ü ikili sistemde 2 bit kaydırarak 1’e düşürür.
~x (bitwise NOT) ifadesi 1’in tüm bitlerini tersine çevirir, bu da -2 sonucunu verir
(32-bit imzalı sayılar için). Bu yüzden çıktı 1 : -2 şeklindedir.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

char sembol = '-';
if (true ^ true)
sembol = '.';
else if (!true & true)
sembol = ':';
else
sembol = ';';

Console.WriteLine(sembol);

#16. Yukarıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

Cevap : D) ;

Açıklama : true ^ true (XOR) false döndürür, bu yüzden ilk if bloğu çalışmaz.
İkinci blok (!true & true) => false & true = false, orası da çalışmaz.
else bloğuna düşülür ve sembol ';' olarak atanır.
Böylece ekrana noktalı virgül ; yazılır.

#17. Kullanıcıdan alınan girdiyi tam sayı veri tipine çeviren ve bunu tam sayı değişkende saklayan kod hangisidir?

Cevap : B) int x = Convert.ToInt32(Console.ReadLine());

Açıklama : Konsoldan okunan metin Console.ReadLine() ile alınır.
Convert.ToInt32 ifadesi, string’i tam sayıya dönüştürür ve bu da int türündeki x değişkenine atanır.
Diğer seçenekler ya söz dizimi hatalı ya da beklenen veri tipi yanlış dönüşüme sahiptir.

#18. Aşağıdaki iki satırlı kodlardan hangisi derleme hatası vermez?

Cevap : E) const string dil = “C#”; Console.Write($”{dil}”);

Açıklama : Const değişkenler tanımlandığı anda değer almalıdır ve
E seçeneğindeki kod buna uygundur. Diğer şıklarda ya const ile sonradan atama yapılmaya çalışılmış
(A) ya da değişken büyük-küçük harf hatası (C’de Yil yerine yil olmalı) gibi
derleme hataları mevcuttur.

int x = -1;
int y = 1;
bool result = true & (++x >= -1) | (y < = + --x + 1);
Console.Write($"{x} : {result}");

#19. Yukarıdaki kod parçasının çıktısı hangi şıkta doğrudur?

Cevap : A) -1 : True

Açıklama : ++x öncesi x=-1, ++x x’i 0’a çıkarır.
(0 >= -1) doğru, bu kısım true & true => true. Ardından y <= + --x + 1 kısmında
--x x’i tekrar -1’e indirir. Dolayısıyla + --x + 1 => + -1 + 1 = 0.
y <= 0 => 1 <= 0 false. true | false => true.
Son durumda x tekrar -1 olmuş ve result true’dur. Ekranda “-1 : True” görülür.

sbyte a = -128;
byte b = (byte)a;
Console.Write(--b);

#20. Yukarıdaki programla ilgili hangi ifade doğrudur?

Cevap : C) Program tutarsız çıktı verecektir.

Açıklama : (byte)a ifadesi, -128 değerini byte aralığına göre (0-255) dönüştürmeye çalışır.
Bu “wrap around” etkisi yaratır ve sonuç beklenmeyen bir değerdir (örneğin 128 gibi). Daha sonra --b işlemi ile
yine belirsiz bir aralıkta değer çıkabilir. Dolayısıyla tutarsız (öngörülmeyen) bir sonuç oluşur.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

Öncesi
TESTi BiTiR, PUANINI GÖR

SONUÇ

C# Programlama 2023-2024 Vize Soruları

C# Programlama 2023-2024 Vize Soruları

İstanbul Üniversitesi Açık ve Uzaktan Eğitim Fakültesi (Auzef)
Açık Öğretim Fakültesi
Bölüm : Bilgisayar Programcılığı
1. Sınıf  C# Programlama Bahar Dönemi
C# Programlama 2023-2024 Vize Soruları

C# Programlama 2023-2024 Vize Soruları

C# Programlama Konuları: Değişkenler, Veri Tipleri ve Operatörler

C# dilinde temel programlama yapısını anlamak için önce değişken türleri ile başlamak gerekir. Bu sorularda gördüğümüz üzere int, float, double, decimal gibi sayısal veri tiplerinin yanı sıra char, string, bool, object ve dynamic gibi farklı kategoriler de bulunmaktadır. Her birinin hafızada kapladığı alan ve geçerli değer aralıkları farklı olduğu için doğru kullanım, programların performansı ve hata güvenliği açısından önemlidir. Örneğin C#’ta işaretsiz (unsigned) ve işaretli (signed) türler bir hayli önem taşır. byte (işaretsiz) ve sbyte (işaretli) gibi tiplerin taşıyabileceği değer aralıkları birbirinden farklıdır. Sorularda da sbyte’tan byte’a çevrilen değerlerin “wrap around” (taşma) etkisiyle tutarsız çıktılar üretmesine örnek verildi. Bu, tip dönüşümlerine dikkat etmenin önemini gösterir.

Implicit ve Explicit Dönüşümler

C# programlarında implicit (örtük) ve explicit (açık) dönüşümler sıklıkla kullanılır. Mesela int bir değişkenin double’a atanması genellikle derleyici tarafından otomatik yapılırken (örtük dönüşüm), double’dan int’e dönüşümde veri kaybı ihtimali olduğu için (int) ifadesiyle açıkça belirterek dönüşüm yapmak gerekir. Bu sorularda da örneklerine rastladığımız gibi (int)(-0.5) dönüştürme ya da (double)a++ ifadesi explicit dönüşümün örneklerindendir.

Operatörler ve Operatör Önceliği

Koşul ifadelerinde (?:), mantıksal (&&, ||, &, |, !) ve bitwise (~, ^, <<, >>) operatörlerinin kullanımına dikkat etmek çok önemlidir. Örneğin bitwise kaydırma (x >>= 2;) ile sayının değerini ikili olarak kaydırıp sonucu değiştirebilir, XOR operatörü (^) ile (true ^ true = false) şeklinde özel durumlar yakalayabiliriz. Ternary (?:) ve null coalescing (??) operatörleri de ifadeleri kısaltmak ve kodu daha temiz hale getirmek adına kullanışlıdır. Bu arada operatör önceliği (örneğin & ile == arasındaki öncelik farkı) ifadelerin nasıl değerlendirildiğini yakından etkiler ve koşullarda beklenmeyen sonuçlar doğurabilir.

Karar Yapıları ve Koşullar

if, else if blokları ve tek satırlık koşul yapıları kodun mantığını ifade etmek için temel oluşturur. Sorularda gördüğümüz gibi koşulları doğru sırada yazmak, koşul değerlendirme önceliklerini kavramak ve artırma/azaltma operatörlerinin (++, --) etkilerini hesaba katmak, bu yapıları hatasız kullanmaya yardımcı olur. Örneğin if(true ^ true) ifadesi false sonuç verdiği için ilk blok çalışmayıp else bloğuna geçilmesi gibi durumlar, mantıksal operatörlerin kullanımını iyi kavramakla ilgilidir.

Değişken Bildirimleri ve const, var, dynamic, object

Sorularda, C#’ta değişken bildirimini ve const anahtar kelimesini de içeren örneklerle karşılaştık. const ile tanımlanan bir değerin, tanımlandığı anda mutlaka başlatılması gerekir. Örneğin const string dil = "C#"; gibi doğru bir kullanım varken const string fakulte; deyip sonradan değer atamak derleme hatasına yol açar. Ayrıca var anahtar sözcüğüyle tür çıkarımı, dynamic türüyle çalışma zamanında tür denetimi ve object veri türüyle ilgili kurallar da önemlidir. var ile tanımlanan bir değişken, ilk atanan değerin tipiyle sabitlenir ve daha sonra farklı türde bir değer atanamaz. dynamic ise tam tersi biçimde davranır ve çalışma zamanında oluşan hatalara daha açıktır.

String Kullanımı ve Formatlama

Bir diğer önemli kısım da dize (string) işlemleri ve formatlama yöntemleridir. Console.Write veya Console.WriteLine içerisinde "{0} {1}" gibi kalıplar kullanarak sıralı parametre yerleştirmek C#’ta yaygın bir yaklaşımdır. Bu sorularda, Console.Write("{0} - {2} - {1}", ...) gibi örnekler verildi ve parametre indekslerinin doğru eşleştirilmesi gerektiği, aksi halde beklenmeyen sıralar oluşabileceği vurgulandı.

Derleyici ve Çalışma Zamanı Hataları

C# dilinde kodun derlenmeden önce syntax (sözdizimi) hataları veya kullanılmamış değişken ataması gibi durumlar söz konusu olabilir. Sorulardan birinde, double değişkenine değer atanmadan önce yazdırma denendiği için “derleme hatası” çıkabileceğinden bahsedildi. Bu, yerel değişkenlerin varsayılan bir başlangıç değeri olmadığı için derleyicinin atama yapılmadan kullanımına izin vermemesinden kaynaklanır. Öte yandan çalışma zamanı (runtime) hataları tip dönüşümünün başarısız olması veya bölme sıfıra bölme gibi durumlarda ortaya çıkar. Tüm bunlar, C# dilinin temellerini kavramak açısından çok önemlidir. Veri türleri, operatörler, koşul yapıları ve string formatlama gibi mekanizmalar, her seviyedeki geliştiricinin hakim olması gereken yapı taşlarıdır. Özellikle operatör önceliği ve tip dönüşümleri gibi konulara dikkat ederek temiz ve hatasız kod yazmak mümkündür.

@lolonolo_com

C# Programlama 2023-2024 Vize Soruları

C# Programlama 2023-2024 Vize Soruları

1- Aşağıdaki değer atamalarından hangisi geçerlidir?

A) string str = @"string veri tipi "alfanümerik" değer alır.";
B) string str = "C:\Windows\System32";
C) string str = 'C# .NET tabanlı dildir.;
D) string str = """
namespace
class
""";

E) string str = "C", "#";

Cevap : D) string str = “”” namespace class “””;

Açıklama : C# 11 ve üstünde çok satırlı (raw) string sözdizimi mevcuttur.
A, B ve C seçenekleri kaçış karakteri veya tırnak kullanımı açısından hatalıdır;
E seçeneği ise geçersiz bir ayrıştırma içerir. D seçeneği ise çok satırlı string söz dizimine uygundur
ve bu nedenle derleyici hatası vermez. Bu örnek, C# programlama temellerinde dize literal kullanımını göstermektedir.

2- Aşağıdaki kod parçacığında program çıktısı hangi şıkta doğru verilmiştir?

bool stat = true;
int x = -1, y = 2, z = 3;
int result = !stat & ++x == 0 ? x / y : z + x - y;
Console.Write(result);

A) 2
B) 3
C) 1
D) -1
E) 0

Cevap : C) 1

Açıklama : !stat false döndürür, ++x ise x’i 0’a çıkarır (başta -1’di).
Ardından koşul (++x == 0) true olacağı için soru işareti (?) sonrası kısım çalışır (x / y).
x / y = 0 / 2 tamsayı bölmesi 0’dır, ancak kodda !stat & ++x == 0 ifadesindeki
bitwise AND (&) kullanımına dikkat edilmelidir. Sonuçta işlenenler ve öncelik sırası incelendiğinde sonuç 1 olarak elde edilir
(burada z + x - y kısmı devreye girebilir). Kod çalıştığında C# operatör önceliği sebebiyle aslında
!stat & (++x == 0) ifadesi değerlendirilir, x=0 olur, ancak z + x - y bölümü seçildiğinde 3+0-2=1 döndürür.
Böylece ekrana 1 yazdırılır.

3- Aşağıdaki değişken atamalarından hangisi geçerlidir?

A) int short = 1453;
B) int t = 0x05AD;
C) int x = 602E23;
D) double y = 170010,78;
E) int z = 0B170010;

Cevap : B) int t = 0x05AD;

Açıklama : C#’ta onaltılık (hex) sabit atama 0x ile yapılır. 0x05AD geçerli bir 16’lık sayıdır.
Diğer seçenekler ya C# söz dizimi bakımından hatalı isimlendirme (int short gibi) ya da geçersiz sabit formatları içerir.

4- Aşağıdaki C# koduna göre aşağıdaki şıklardan hangisi yanlıştır?

float x = 1.5F;
ushort y = 1;
int z = (int)(-0.5D);
double Toplam = x + y + z;

A) Örtük veri tipi dönüşümü yapılmıştır.
B) Kodda hata olduğundan dolayı derleyici hata verir.
C) Aşikar veri tipi dönüşümü yapılmıştır.
D) İşaretsiz tam sayı veri tipi kullanılmıştır.
E) Toplam değişkeninin değeri 2.5’tir.

Cevap : B) Kodda hata olduğundan dolayı derleyici hata verir.

Açıklama : Kod gerçekte derleme hatası vermez. x bir float, y bir ushort,
z ise (int) dönüştürülmüş bir double ifadesinden gelir. Bu, C#’ta explicit (aşikar) ve implicit (örtük)
dönüşümlerin bir arada olduğu geçerli bir örnektir. Toplam değeri 2.0 + 1.5’den dolayı 2.5 eder.
Dolayısıyla “hata verir” ifadesi yanlıştır.

5- Aşağıdaki kod parçasının çıktısı hangi şıkta doğru verilmiştir?

int a = 1, b = -1;
int? c = null;
int result = b <= a ? c ?? 5 : 0;
Console.Write(result);

A) -1
B) 0
C) null
D) 1
E) 5

Cevap : E) 5

Açıklama : Koşulda b <= a true olduğu için c ?? 5 ifadesi çalışır.
Burada c null olduğu için ?? operatörü ile 5 seçilir ve ekrana 5 yazılır.
C# null coalescing operatörünün (??) örnek kullanımıdır.

6- Aşağıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

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("%");

A) %
B) –
C) /
D) *
E) +

Cevap : E) +

Açıklama : Kod adım adım değerlendirildiğinde birinci if koşulu (y+z != x && y>z) yanlıştır.
İkinci else-if (y>x || ++y>z) ifadesinde y>x false ama ++y>z = 0>1 = false.
Üçüncü koşulda (y == x & x<z) y artık 0 olduğundan y==x (0==0) doğru ve x bu nedenle Console.WriteLine("+"); satırı çalışır ve “+” çıktısı alınır.

7- Aşağıdaki kodla ilgili program çıktısı hangi şıkta doğrudur?

double pi;
Console.Write($" {pi} - ");
{
    pi = 3.14;
    Console.Write($" {pi} - ");
}
Console.Write($" {pi}");

A) -3.14 – 3.14
B) Program çalışma zamanı hatası verir.
C) null – 3.14 – null
D) null – 3.14 – 3.14
E) Program derleme hatası verir.

Cevap : E) Program derleme hatası verir.

Açıklama : Değer atanmamış double pi; değişkeni ilk kullanım esnasında
yazdırılmaya çalışıldığından C# derleyicisi “kullanılmadan önce atanmalı” şeklinde hata verir.
C#’ta yerel değişkenler varsayılan başlangıç değerine sahip olmadıkları için program derlenmez.

8- Aşağıdaki ifadenin çıktısı hangi şıkta doğru verilmiştir?

Console.Write("{0} : {1}", 
    false != null,
    !(false || true & false) ^ false
);

A) True : False
B) False : True
C) True : True
D) False : False
E) Null : True

Cevap : C) True : True

Açıklama : C#’ta false != null ifadesi bool bağlamında true döner.
İkinci kısımda (true & false) = false, dolayısıyla false || false = false,
!(false) = true, son olarak true ^ false = true (XOR).
Dolayısıyla ekrana True : True yazdırır.

9- Aşağıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

float? a = -9F;
double b = (double)a++;
Console.Write((int)(--a - b++ + 1));

A) 2
B) 0
C) 1
D) -1
E) -2

Cevap : C) 1

Açıklama : a++ ifadesinden önce a -9’dur.
(double)a++ b’ye -9 olarak atanır fakat a sonrasında -8’e dönüşür.
Ardından --a işlemi a’yı -9 yapar.
b++ ifadesi b’yi önce -9 kullanır, sonra b -8’e güncellenir.
İşlemin tamamı (int)(-9 - (-9) + 1) = (int)(0 + 1) = 1 sonucunu verir.


10- byte x = 1;
short y = -10;
double z= 0.1;

Yukarida verilen değişkenler kullanılarak 0.1:-1:10 çıktısı
alınmak istenmektedir. Aşağıdaki şıklardan hangisi istenen
çıktıyı verir?

A) Console.Write($"{z}:{-x}:{-y}");
B) Console.Write("{0}:{1}:{2}", z, -y, -x);
C) Console.Write($" {0} : {2} : {1}");
D) Console.Write("{2}:{0}:{1}", -y, -x, z);
E) Console.Write("{1}:{0}:{2}", x, z, -y);

Cevap : A) Console.Write($”{z}:{-x}:{-y}”);

Açıklama : İstenen çıktı 0.1:-1:10 şeklindedir.
Dolayısıyla z=0.1, -x=-1, -y=10 sıralaması gerekir.
A şıkkındaki yerleşim tam olarak bu formatı verir ve ekranda “0.1:-1:10” görüntülenir.

11- Veri tiplerinin değer aralıkları hangi şıkta doğru sıralanmıştır?

A) byte < short < int < long
B) long > int > byte > short
C) decimal > float > double > int
D) sbyte < short < long < int
E) long > double > float > byte > short

Cevap : A) byte < short < int < long

Açıklama : C# temel tamsayı tiplerinde en küçük aralığa sahip olan byte,
daha sonra short, ardından int ve en geniş aralığa sahip long gelir.
Bu, C# veri tipi boyut ve aralık sıralamasına uygundur.

12- Aşağıdaki program çıktısı hangi şıkta doğru verilmiştir?

char harf = 'C';
char sembol = '#';
int yil = 2023;
string bolumKodu = "BLGPRG";
Console.Write("{0} {2} {3} {1}", sembol, bolumKodu, harf, yil);

A) 2023 # C BLGPRG
B) # C 2023 BLGPRG
C) C # 2023 BLGPRG
D) C # BLGPRG 2023
E) # BLGPRG C 2023

Cevap : B) # C 2023 BLGPRG

Açıklama : Format parametrelerinde {0} = sembol,
{1} = bolumKodu, {2} = harf, {3} = yil sırasıyla yerleştirilmiştir.
Dolayısıyla çıktı # C 2023 BLGPRG şeklinde oluşur.

13- Aşağıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

Console.Write("0 - {2} - {1}", "İstanbul Üniversitesi", 1453, "C#");

A) İstanbul Üniversitesi – 1453 – C#
B) 0 – 1453 – İstanbul Üniversitesi
C) İstanbul Üniversitesi – C# – 1453
D) C# – 1453 – İstanbul Üniversitesi
E) 0 – C# – 1453

Cevap : E) 0 – C# – 1453

Açıklama : Format ifadesinde {0} = "İstanbul Üniversitesi",
{1} = 1453, {2} = "C#" olarak sıralanmış. Ama stringin içinde “0 – {2} – {1}” kullanılıyor.
Yani önce “0” düz metin, sonra {2} = "C#", en sonda {1} = 1453 yazılır.
Bu yüzden ekranda “0 – C# – 1453” çıkar.

14- C# dilinde veri tipleriyle ilgili aşağıdaki şıklardan hangisi yanlıştır?

A) var anahtar kelimesi ile tanımlanan değişkenin veri tipi, değişkene daha sonra farklı bir değer atandığında değiştirilemez.
B) dynamic veri tipinde tanımlanan değişkenlerin tür kontrolü çalışma zamanında yapılır.
C) var anahtar kelimesi ile tanımlanan değişken her türden veriyi saklayabilir.
D) object veri tipinde bir değişken tanımlandığında değişkene değer atanması zorunludur.
E) dynamic veri tipinde tanımlanan değişkenin veri tipi, değişkene daha sonra farklı bir değer atandığında değiştirilebilir.

Cevap : D) object veri tipinde bir değişken tanımlandığında değişkene değer atanması zorunludur.

Açıklama : object tipinde bir değişken tanımlarken mutlaka başlangıç değeri atama zorunluluğu yoktur.
Diğer seçenekler, var ve dynamic için bilinen davranışlardır. Bu yüzden D seçeneği yanlıştır.

15- Aşağıdaki programla ilgili hangi ifade doğrudur?

sbyte a = -128;
byte b = (byte)a;
Console.Write(--b);

A) Program çalışma zamanı hata verir.
B) İşaretsiz veri tipinden işaretli veri tipine dönüşüm yapılmıştır.
C) Program tutarsız çıktı verecektir.
D) Kodda hata olduğundan dolayı derleme zamanı hata verir.
E) Örtük veri tipi dönüşümü yapılmıştır.

Cevap : C) Program tutarsız çıktı verecektir.

Açıklama : (byte)a ifadesi, -128 değerini byte aralığına göre (0-255) dönüştürmeye çalışır.
Bu “wrap around” etkisi yaratır ve sonuç beklenmeyen bir değerdir (örneğin 128 gibi). Daha sonra --b işlemi ile
yine belirsiz bir aralıkta değer çıkabilir. Dolayısıyla tutarsız (öngörülmeyen) bir sonuç oluşur.

16- Aşağıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

int x = 4;
x >>= 2;
int y = ~x;
Console.Write($"{x} : {y}");

A) 1 : -2
B) -2 : 1
C) -15 : 16
D) 16 : -15
E) 1 : 4

Cevap : A) 1 : -2

Açıklama : x >>= 2, 4’ü ikili sistemde 2 bit kaydırarak 1’e düşürür.
~x (bitwise NOT) ifadesi 1’in tüm bitlerini tersine çevirir, bu da -2 sonucunu verir
(32-bit imzalı sayılar için). Bu yüzden çıktı 1 : -2 şeklindedir.

17- Aşağıdaki kodun çıktısı hangi şıkta doğru verilmiştir?

char sembol = '-';
if (true ^ true)
    sembol = '.';
else if (!true & true)
    sembol = ':';
else
    sembol = ';';

Console.WriteLine(sembol);

A) ,
B) :
C) –
D) ;
E) .

Cevap : D) ;

Açıklama : true ^ true (XOR) false döndürür, bu yüzden ilk if bloğu çalışmaz.
İkinci blok (!true & true) => false & true = false, orası da çalışmaz.
else bloğuna düşülür ve sembol ';' olarak atanır.
Böylece ekrana noktalı virgül ; yazılır.

18- Kullanıcıdan alınan girdiyi tam sayı veri tipine çeviren ve bunu tam sayı değişkende saklayan kod hangisidir?

A) uint x = Convert.ToDecimal(Console.Write());
B) int x = Convert.ToInt32(Console.ReadLine());
C) double x = Convert.ToInt32(Console.ReadLine());
D) int x = Convert.ToDouble(Console.ReadLine());
E) string x = Convert.ToInt32(Console.WriteLine());

Cevap : B) int x = Convert.ToInt32(Console.ReadLine());

Açıklama : Konsoldan okunan metin Console.ReadLine() ile alınır.
Convert.ToInt32 ifadesi, string’i tam sayıya dönüştürür ve bu da int türündeki x değişkenine atanır.
Diğer seçenekler ya söz dizimi hatalı ya da beklenen veri tipi yanlış dönüşüme sahiptir.

19- Aşağıdaki iki satırlı kodlardan hangisi derleme hatası vermez?

A)

const string fakulte;
fakulte = "AUZEF";

B)

char chr;
Console.Write("{0}", chr);

C)

int yil = 2023;
Console.Write($"{Yil}");

D)

char sembol = '#';
const char dil = sembol;

E)

const string dil = "C#";
Console.Write($"{dil}");

Cevap : E) const string dil = “C#”; Console.Write($”{dil}”);

Açıklama : Const değişkenler tanımlandığı anda değer almalıdır ve
E seçeneğindeki kod buna uygundur. Diğer şıklarda ya const ile sonradan atama yapılmaya çalışılmış
(A) ya da değişken büyük-küçük harf hatası (C’de Yil yerine yil olmalı) gibi
derleme hataları mevcuttur.

20- Aşağıdaki kod parçasının çıktısı hangi şıkta doğrudur?

int x = -1;
int y = 1;
bool result = true & (++x >= -1) | (y < = + --x + 1);
Console.Write($"{x} : {result}");

A) -1 : True
B) 0 : True
C) -2 : True
D) -2 : False
E) -1 : False

Cevap : A) -1 : True

Açıklama : ++x öncesi x=-1, ++x x’i 0’a çıkarır.
(0 >= -1) doğru, bu kısım true & true => true. Ardından y <= + --x + 1 kısmında
--x x’i tekrar -1’e indirir. Dolayısıyla + --x + 1 => + -1 + 1 = 0.
y <= 0 => 1 <= 0 false. true | false => true.
Son durumda x tekrar -1 olmuş ve result true’dur. Ekranda “-1 : True” görülür.

@lolonolo_com

Auzef Bilgisayar Programcılığı-min

C# Programlama 2023-2024 Vize Soruları

Bilgisayar Programcılığı 1. Sınıf Bahar Dönemi Vize Soruları ve Deneme Sınavları, 2024 Sınav Soruları

Editor

Editör