C Programlama #21 | Diziler: Tanım, İndis, İlk Değer Listesi ve Dizinin Dışı
Diziler (Arrays)Eğitmen: Dr. Süleyman Burak ÇELİK
Bir haftanın yedi sıcaklığı için yedi değişken mi tanımlayacağız? Yirmi birinci derste aynı türden pek çok değeri tek bir adla tutan yapıyı, diziyi öğreniyoruz. Üçüncü bloğun ilk dersi. Ortalamanın üstündeki günleri bulmak için değerlere iki kez bakmak gerekir: önce toplam (147) ve ortalama (147 / 7 = 21), sonra her gün yeniden; bu yüzden yedi değeri bir dizide saklıyoruz. int puan[5] tanımı beş int'lik yer ayırır: önce eleman türü, sonra dizinin adı, köşeli parantez içinde eleman sayısı. İndisler 0'dan başlar; sizeof dizinin 20 bayt, bir elemanın 4 bayt olduğunu, 20 / 4 = 5 eleman olduğunu gösteriyor. lldb ile adreslere bakıyoruz: her eleman bir öncekinden 4 bayt ileride, i numaralı eleman başlangıçtan 4·i bayt ötede. Elemanlara adı ve indisiyle erişiyor, değer atıyor ve ifadelerde kullanıyoruz (72 + 85 + 95 = 252; puan[i + 3]). Bir döngüyle beş puanı scanf ile okuyup tablo halinde yazdırıyoruz (size_t ve %zu). İlk değer listesi kısaysa kalan elemanlar 0 olur, {0} bütün diziyi sıfırlar, boyut yazılmazsa derleyici elemanları sayar; liste diziden uzunsa gcc ve clang uyarıp fazla değeri atıyor. Son olarak en tehlikeli tuzak: beş elemanlı dizide bir tur fazla dönen döngü (i küçük eşit 5) puan[5]'i okuyor ve 5 yazıyor. lldb, &puan[5]'in &i ile aynı adres olduğunu, yani programın dizinin hemen arkasındaki i'yi okuduğunu gösteriyor; clang ile derlenen aynı program 1 okuyor: tanımsız davranış. C dizinin sınırını denetlemez. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. Dizi tanımı: eleman türü, ad, eleman sayısı; indisler 0'dan başlar 2. sizeof ve lldb ile bellekte yan yana duran elemanlar 3. Elemanlara erişim, döngüyle okuma ve tablo (size_t, %zu) 4. İlk değer listesi: eksik, {0}, boyutsuz ve fazla değer 5. Dizinin dışı: puan[5] neden i'yi okudu? Tanımsız davranış Bölümler: 0:00 Yedi değişken mi, bir dizi mi? 0:19 Ortalamanın üstündeki günler 0:52 Bir dizi tanımlamak 1:45 Elemanlara erişmek 2:24 Döngüyle doldurmak 3:03 İlk değer listesi 3:32 Liste diziden uzunsa 3:53 Dizinin dışı 4:43 Bugünün dört kuralı 5:04 Sonraki ders: sembolik sabit, toplam, anket Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §6.1–6.4.2. 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–#20.
Bu videoyu izlemek için Premium üyelik gerekir.