C Programlama #30 | Değişken Uzunluklu Diziler ve Güvenli Dizi Kullanımı
Diziler (Arrays)Eğitmen: Dr. Süleyman Burak ÇELİK
Her sınıfın öğrenci sayısı farklıysa dizinin boyutunu nasıl seçeriz? Otuzuncu derste, dizilerle geçen üçüncü bloğun son dersinde, boyutu program çalışırken belirlenen dizileri ve dizilerle güvenli çalışmanın kurallarını görüyoruz. Diziyi 100 elemanlık tanımlarsak çoğu sınıfta yer boşa gider, 30 elemanlık tanımlarsak kalabalık bir sınıfa yetmez. C99'dan beri var olan değişken uzunluklu dizide boyut, program çalışırken okunan bir değişkendir: önce öğrenci sayısı soruluyor, 4 girince tam 4 elemanlık int puan[n] kuruluyor ve puanlar okunuyor (70 + 85 = 155, + 90 = 245, + 64 = 309; ortalama 309 / 4 = 77.25). sizeof da çalışırken hesaplanıyor: 4 · 4 = 16 bayt; 25 öğrenciyle aynı satır 25 · 4 = 100 baytlık bir dizi kurar. Bu dizilere ilk değer listesi verilemez; gcc de clang da derlemiyor, değerler döngüyle veriliyor. Kullanıcıdan gelen boyut kullanılmadan önce denetlenmeli: 0 girilince program geçersiz sayı deyip çıkıyor. Değişken uzunluklu dizi yığında durur ve yığın sınırlıdır (bu Mac'te 8176 KB): denetimsiz bir sürümde 1 milyon eleman (4 milyon bayt) sorunsuz çalışıyor, 3 milyon eleman (12 milyon bayt) ise yığına sığmıyor ve program çöküyor; çıkış kodu 139 = 128 + 11, bir bellek hatası. İki boyutlu diziler de değişken uzunluklu olabilir: sinema salonu programında satır ve sütun sayısı çalışırken giriliyor, salonu çizen fonksiyon boyutları dizi parametresinden önce alıyor (char s[sat][sut]). Her koltuk seçimi kullanılmadan önce denetleniyor: dolu koltuk ve salonda olmayan satır ya da sütun reddediliyor. Bloğun dizinin dışı örneklerini (puan[5], frekans[9], genişliksiz scanf) hatırlayıp kuralı özetliyoruz: her indis 0'dan küçük olmamalı ve eleman sayısından küçük olmalı; C bunu sizin yerinize denetlemez. Son olarak üçüncü bloğun on dersini topluca hatırlıyoruz. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. Değişken uzunluklu dizi: boyut çalışırken (int puan[n]); sizeof da çalışırken 2. VLA'ya ilk değer listesi verilemez: döngüyle doldurmak 3. Boyutu denetlemek: yığın sınırı, 3 milyon elemanda çökme (çıkış kodu 139) 4. İki boyutlu VLA ve fonksiyon parametresi; her koltuk seçimini denetlemek 5. Bloğun özeti ve dizilerle güvenli çalışmanın kuralları Bölümler: 0:00 Değişken uzunluklu diziler 0:17 Kaç öğrenci? 0:53 Değişken uzunluklu dizi 1:35 Boyutu denetlemek 2:18 İki boyutlu ve değişken uzunluklu 2:46 Her seçim denetleniyor 3:27 Dizilerle güvenli çalışma 4:06 Diziler: on ders 4:26 Bugünün dört kuralı 4:50 Sonraki blok: işaretçiler Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §6.12–6.13. Konu sırası ve kavramlar kaynak kitaptan izlenir; anlatım, örnekler ve ekranlar özgündür. Hedef kitle: C'ye yeni başlayan tüm mühendislik ve bilgisayar/yazılım öğrencileri. Ön koşul: C Programlama #01–#29.
Bu videoyu izlemek için Premium üyelik gerekir.