Ders kitabının açık uçlu alıştırmaları. Bunlar çoktan seçmeli sınav sorusu değil — düşünmeni, araştırmanı, kendi cümlelerinle anlatmanı isteyen etkinlikler. Kitabın verdiği örnek yanıtlar kapalı duruyor; önce kendin dene.
Alıştırma 1myders hazırladı
ArrayList ve List sınıflarını bellek yönetimi, performans ve veri tipi güvenliği (type safety) açılarından karşılaştırarak aralarındaki temel farkları açıklayınız.
Yanıt / ipucu
List sınıfı generic bir yapıya sahip olduğu için boxing/unboxing işlemlerine ihtiyaç duymaz, bu da bellek yönetimini ve çalışma hızını optimize eder. ArrayList ise non-generic olduğu için her veriyi object tipinde tutar ve bu durum performans kaybına yol açar. Ayrıca List tanımlanırken belirtilen tip dışındaki verilerin eklenmesini derleme aşamasında engelleyerek veri güvenliği sağlar.
Alıştırma 1myders hazırladı
ArrayList ve List sınıflarını bellek yönetimi, performans ve veri tipi güvenliği (type safety) açılarından karşılaştırarak, generic koleksiyonların neden tercih edilmesi gerektiğini açıklayınız.
Yanıt / ipucu
List sınıfı generic bir yapı olduğu için derleme zamanında tip kontrolü sağlar ve boxing/unboxing işlemlerine ihtiyaç duymayarak performansı artırır. ArrayList ise non-generic olup her veriyi object olarak tuttuğundan bellek yönetimi açısından daha maliyetlidir.
Alıştırma 2myders hazırladı
Bir metin editöründeki 'Geri Al' (Undo) özelliğini simüle etmek için Stack sınıfının Push, Pop ve Peek metotlarını içeren örnek bir senaryo tasarlayınız.
Yanıt / ipucu
Kullanıcının yaptığı her yeni işlem (örneğin yazılan kelimeler) Push() metodu ile Stack'e eklenir. Kullanıcı 'Geri Al' butonuna bastığında Pop() metodu çağrılarak en son yapılan işlem yığından çıkarılır ve iptal edilir. Peek() metodu ise yığından eleman silmeden sadece en son yapılan işlemin ne olduğunu kontrol etmek için kullanılabilir.
Alıştırma 2myders hazırladı
Bir metin editöründeki 'Geri Al' (Undo) özelliğini simüle etmek için Stack sınıfının Push, Pop ve Peek metotlarını kullanan örnek bir senaryo tasarlayınız ve bu metotların yığındaki eleman sayısına etkisini açıklayınız.
Yanıt / ipucu
Kullanıcının yaptığı her işlem Push() ile Stack'e eklenir; son işlemi görmek için Peek() kullanılır ve işlem geri alındığında Pop() ile yığından çıkarılarak eleman sayısı azaltılır. Pop() metodu çağrıldıkça yığındaki elemanlar kalıcı olarak silinir.
Alıştırma 3myders hazırladı
Queue (Kuyruk) ve Stack (Yığın) sınıflarının çalışma prensiplerini (FIFO ve LIFO) gerçek hayat örnekleri üzerinden karşılaştırarak hangi durumlarda hangi sınıfın tercih edilmesi gerektiğini tartışınız.
Yanıt / ipucu
Queue, banka veya bilet kuyruğu gibi ilk gelenin ilk hizmet aldığı (FIFO) sıralı işlem senaryolarında, örneğin yazıcıya gönderilen belgelerin sırayla basılmasında tercih edilir. Stack ise üst üste konulmuş tabaklar gibi son gelenin ilk çıktığı (LIFO) durumlarda, örneğin tarayıcılardaki geri butonu geçmişinde veya geri alma (undo) mekanizmalarında kullanılır.
Alıştırma 3myders hazırladı
Bir banka şubesindeki sıra yönetim sistemini modellemek için Queue sınıfının FIFO prensibini nasıl kullanabileceğinizi açıklayınız ve Enqueue ile Dequeue metotlarının bu süreçteki rollerini belirtiniz.
Yanıt / ipucu
Sıraya giren her yeni müşteri Enqueue() metodu ile kuyruğun sonuna eklenir; işlem sırası gelen ilk müşteri ise Dequeue() metodu ile kuyruğun başından alınarak işlem tamamlanır ve kuyruktan çıkarılır.
Alıştırma 4myders hazırladı
LinkedList sınıfının çift yönlü navigasyon özelliğini (Next ve Previous) kullanarak bir müzik çaların 'sonraki şarkı' ve 'önceki şarkı' işlevlerini nasıl gerçekleştirebileceğinizi açıklayınız.
Yanıt / ipucu
LinkedList yapısında her şarkı bir düğüm (node) olarak temsil edilir. 'Sonraki şarkı' işlevi için mevcut düğümün Next özelliği kullanılarak bir sonraki şarkıya geçilir; 'önceki şarkı' işlevi için ise Previous özelliği kullanılarak bir önceki düğüme geri dönülür.
Alıştırma 4myders hazırladı
LinkedList sınıfının Next ve Previous özelliklerini kullanarak çift yönlü navigasyonun nasıl sağlandığını araştırınız ve bu yapının standart bir diziye göre eleman ekleme/silme işlemlerindeki avantajlarını tartışınız.
Yanıt / ipucu
LinkedList elemanları birbirine referanslarla bağlı olduğu için Next ve Previous özellikleri ile liste içinde ileri ve geri hareket edilebilir. Bu yapı, araya eleman ekleme ve silme işlemlerinde diziler gibi kaydırma yapılmasına gerek bırakmadığı için daha hızlıdır.
Alıştırma 5myders hazırladı
Bir okul otomasyonunda öğrenci numaralarını ve öğrenci isimlerini eşleştirmek için Dictionary sınıfının nasıl kullanılacağını ve bu yapının HashTable'a göre avantajını açıklayınız.
Yanıt / ipucu
Öğrenci numarası benzersiz (unique) bir anahtar (Key), öğrenci ismi ise değer (Value) olarak tanımlanarak Dictionary<int, string> yapısı oluşturulur. Dictionary sınıfı generic bir yapı olduğu için, HashTable sınıfına kıyasla tip güvenliği sağlar ve veri okuma/yazma işlemlerinde boxing/unboxing gerektirmediği için daha yüksek performans sunar.
Alıştırma 5myders hazırladı
Bir okul yönetim sisteminde öğrenci numaralarını anahtar (key), öğrenci isimlerini ise değer (value) olarak tutacak bir Dictionary yapısı kurgulayınız. Aynı öğrenci numarasının tekrar eklenmesi durumunda sistemin nasıl bir tepki vereceğini açıklayınız.
Yanıt / ipucu
Dictionary yapısında her anahtar benzersiz olmak zorundadır; bu nedenle aynı öğrenci numarasıyla yeni bir kayıt eklenmeye çalışıldığında sistem hata verecektir. Değerler ise benzersiz olmak zorunda olmadığından farklı numaralara aynı isimler atanabilir.