Nesneye Yönelik Programlama 2023-2024 Vize Soruları
Nesneye Yönelik Programlama 2023-2024 Vize Soruları
Giriş
Nesneye Yönelik Programlama (NYP), modern yazılım geliştirmenin temel paradigmalarından biridir. C++, Java ve C# gibi diller bu yaklaşımı benimserken, prosedürel bir dil olan C bu kapsama girmez. NYP, yazılımı modüler, esnek ve “tekrar kullanılabilir” hale getirerek “kendini tekrar etmeyi” önler. Bu makalede, NYP’nin temel ilkeleri ve bu ilkelerin C# programlama dili ile .NET platformundaki yansımaları incelenecektir.
Nesneye Yönelik Programlamanın İlkeleri
NYP felsefesi, yazılımı nesneler ve bu nesnelerin etkileşimleri üzerinden modeller. Temel ilkeleri şunlardır:
.NET Platformu ve C#
.NET Core, Microsoft tarafından geliştirilen ve “birden fazla platformu destekleyen” (çapraz platform) bir geliştirme ortamıdır. Bu ortamda, `dotnet build` komutu kullanılarak mevcut projeler derlenir. C# ise bu platformun ana dilidir.
C# Temel Kavramları
Koleksiyonlar ve Diziler
C#, verileri toplu halde saklamak için çeşitli yapılar sunar.
Metotlar (Fonksiyonlar)
Metotlar, belirli bir işi yapan kod bloklarıdır. Metot tanımlanırken `int+topla(int a, int b)` gibi, metot adı içinde `+` operatörü kullanılamaz, bu hatalı bir tanımlamadır. Metotlar, özyinelemeli (recursive) olabilir. Örneğin, `f(n) = f(n-1) + f(n-2)` kuralıyla kendini çağıran bir metot, Fibonacci dizisini hesaplar ve `f(9)` için 34 sonucunu döndürür.
Nesneye Yönelik Programlama 2023-2024 Vize Soruları
Nesneye Yönelik Programlama 2023-2024 Vize Soruları
20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
C# Programlama Dilinde double türündeki bir değişkenin boyutu kaç byte’tır?
BDoğru cevap
Açıklama
C# programlama dilinde `double` (çift duyarlıklı kayan noktalı sayı) veri türü, bellekte 8 byte yer kaplar.
Soru 2
int a = 17;
Console.Write(a);
Console.Write(“,”);
Console.Write(a++);
Console.Write(“,”);
Console.Write(–a);
Console.Write(“,”);
Console.Write(a);
Yukarda verilen kod bloğu çalıştırıldığında üretilen çıktı aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
1. Console.Write(a); -> 17.
2. Console.Write(a++); -> Post-increment olduğu için önce yazar (17), sonra $a=18$ olur.
3. Console.Write(–a); -> Pre-decrement olduğu için önce $a=17$ olur, sonra yazar (17).
4. Console.Write(a); -> Son değeri yazar (17).
Çıktı: 17, 17, 17, 17
Soru 3
Aşağıdakilerden hangisi nesneye yönelik bir programlama dili değildir?
CDoğru cevap
Açıklama
C programlama dili yapısal (prosedürel) bir dildir ve nesneye yönelik programlama (NYP) özelliklerini desteklemez. Objective-C, C++, Java ve C# ise popüler NYP dilleridir.
Soru 4
.Net Core geliştirme ortamında “dotnet build” komutu ile ilgili aşağıdaki ifadelerden hangisi doğrudur?
EDoğru cevap
Açıklama
`dotnet build` komutu, .NET Core projelerinin kaynak kodunu alıp çalıştırılabilir çıktılar (DLL’ler) üretmek için mevcut projeyi derler.
Soru 5
C# programlama dilinde verilen bir dizi hazır kütüphane kullanarak dizinin sırası tersine çevirmek istenirse Array sınıfı içerisindeki hangi metot kullanılır?
BDoğru cevap
Açıklama
Bir dizinin elemanlarının sırasını tersine çevirmek için `Array` sınıfı içerisindeki Reverse metodu kullanılır. Sort ise sıralama yapar.
Soru 6
static int degerArtir(int a)
{
a += 1;
return a;
}
int a = 11;
int b = degerArtir(a);
Console.Write(a);
Console.Write(“,”);
Console.Write(b);
Yukarıda bir fonksiyon ve bu fonksiyon çağrısını çalıştıran ifadeler verilmiştir. Kod bloğunun tamamı çalıştırıldığında üretilen çıktı aşağıdakilerden hangisidir?
`Int`, `String` ve `Class` (E) temel veri tipleri veya kullanıcı tanımlı tiplerdir. `Array` (D) bir koleksiyon olsa da, `HashSet` (C) dinamik koleksiyonlar (Generic Collections) ailesinden bir örnektir ve koleksiyon türüdür.
Soru 8
int[,] degisken = new int[3, 2];
Yukarda verilen değişken için aşağıdaki ifadelerden hangisi doğrudur?
BDoğru cevap
Açıklama
Tanımlama `[,]` içerdiği ve iki boyut (`[3, 2]`) belirtildiği için bu, Çift boyutlu (çok boyutlu) bir dizidir. Dizilerin boyutu statiktir ve `int` tamsayı tutar.
Soru 9
Aşağıdaki verilenlerden hangisi nesneye yönelik programlamanın sağladığı faydalardan biri değildir?
ADoğru cevap
Açıklama
Nesneye yönelik programlamanın (NYP) amaçlarından biri, kodun tekrarını önlemektir. Bilgi saklama (encapsulation), tekrar kullanılabilirlik, kolay hata ayıklama ve modülerlik ise sağladığı faydalardır.
Soru 10
static int f(int n)
{
if (n<=1)
return n;
return f(n-1)+f(n-2);
}
int n=9;
Yukarda verilen metot, f(9) değeri için çağrıldığında nihai sonuç değeri kaç olur?
EDoğru cevap
Açıklama
Verilen fonksiyon, n>1 için $f(n) = f(n-1) + f(n-2)$ kuralıyla Fibonacci dizisini hesaplamaktadır. $f(9)$ değeri, dizinin 9. elemanıdır (dizinin 0. elemanı 0, 1. elemanı 1 kabul edilirse):
f(0)=0, f(1)=1
f(2)=1, f(3)=2, f(4)=3, f(5)=5, f(6)=8, f(7)=13, f(8)=21, f(9)=34.
Soru 11
int kontrol = 13;
int sonuc = kontrol > 18 & kontrol ⇐ 13 ? kontrol << 2 :0 ;
Yukarda verilen işlemler uygulandığında son değeri kaç olur?
ADoğru cevap
⚠️ Cevap anahtarı tartışmalı: C#'ta `&` karşılaştırmalardan sonra uygulanır: (13>18) & (13<=13) = false olduğundan sonuç 0 (B) olmalı; anahtar A (52).
Soru 12
C# programlama dilinde sadece bir satır yorum satırına alınmak istenirse aşağıdakilerden hangisini kullanılır?
EDoğru cevap
Açıklama
C# programlama dilinde tek bir satırı yorum satırı haline getirmek için // sembolü kullanılır.
Soru 13
C# programlama dilinde yer alan “Yapı (Struct) Kavramı” için aşağıda verilen ifadelerden hangisi yanlıştır?
CDoğru cevap
Açıklama
C# dilinde Yapılar (Struct) `class`’lar gibi metot ve yapıcı tanımlayabilir (B, D), ancak yıkıcı (destructor) tanımlanamaz. Struct’lar değer türündedirler (E).
Soru 14
I – Sınıflar (class) referans türündedirler
II – Yapılar (struct) değer türündedirler.
III – Sınıf (class) ve yapı (struct) arasında bir fark yoktur.
C# programlama dilinde sınıf (class) ve yapı (struct) ile ilgili yukarıda verilen ifadelerden hangisi ya da hangileri doğrudur?
ADoğru cevap
Açıklama
Sınıflar (I) bellekte referans tipi, Yapılar (II) ise değer tipi olarak tutulur. Bu temel farktan dolayı (III) yanlıştır. Dolayısıyla I ve II doğrudur.
Soru 15
Console.Write(13+3); Console.Write(“,”);
Console.Write(13-2); Console.Write(“,”);
Console.Write(13*3); Console.Write(“,”);
Console.Write(13/2); Console.Write(“,”);
Console.Write(13.0/2.0); Console.Write(“,”);
Yukarda verilen kod bloğu çalıştırıldığında üretilen çıktı aşağıdakilerden hangisinde verilmiştir?
.Net Core platformu için kullanılan çapraz platform (cross platform) ifadesi hangi anlama gelmektedir?
EDoğru cevap
Açıklama
Çapraz platform (Cross-platform) ifadesi, yazılan kodun veya uygulamanın, Windows, Linux, macOS gibi birden fazla işletim sistemini desteklemesi anlamına gelir.
Soru 17
Aşağıda verilen metot tanımlarından hangisi yanlıştır?
DDoğru cevap
Açıklama
Metot tanımlamasında, metot adı içinde $+$ gibi bir operatör kullanılamaz. Metot adları harf veya alt çizgi ile başlamalıdır. Bu nedenle D şıkkındaki tanımlama yanlıştır.
Soru 18
C# programlama dilinde bir sınıf tanımlamak için aşağıdaki anahtar kelimelerden hangisi kullanılır?
BDoğru cevap
Açıklama
C# programlama dilinde yeni bir sınıf (class) tanımlamak için class anahtar kelimesi kullanılır.
Soru 19
C# Programlama Dilinde bir sınıftan yeni bir nesne türetmek isteniyorsa hangi anahtar kelime kullanılır?
DDoğru cevap
Açıklama
Bir sınıftan bellekte yer ayırarak yeni bir nesne (object) örneği oluşturmak (türetmek) için new anahtar kelimesi kullanılır.
Soru 20
C# programlama dilinde aşağıdaki verilen değişken tanımlarından hangisi yanlıştır?
DDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması
C#'ta değişken adları rakamla başlayamaz; harf veya alt çizgi (_) ile başlamalıdır. Bu yüzden long 0boyut; geçersizdir. uint, bool, string ve int ile yapılan diğer tanımlar geçerlidir.