C Programlama #29 | Çok Boyutlu Diziler: Satırlar ve Sütunlar

Diziler (Arrays)

Eğitmen: Dr. Süleyman Burak ÇELİK

Bir metal levhanın üzerindeki 12 sıcaklık sensörü 3 satır ve 4 sütun halinde dizilmiş. Yirmi dokuzuncu derste tabloları iki boyutlu dizilerle saklıyor, bellekteki yerlerini lldb ile görüyor ve iç içe döngülerle dolaşıyoruz. int t[3][4] tanımında ilk sayı satır, ikinci sayı sütun sayısıdır: 3 · 4 = 12 eleman; t[1][2], satır 1 ile sütun 2'deki sensör, 34 derece, levhanın en sıcak noktası. İlk değer listesinde her satır kendi süslü parantezinde durur; eksik değerler ve hiç yazılmayan satırlar 0 olur. sizeof t 48 bayt (12 · 4), sizeof t[0] ise 16 bayt: t[0] tek bir satır; 48 / 16 = 3 satır. Bellek tek boyutludur ve satırlar art arda dizilir: lldb'de t[1][0] başlangıçtan 16 bayt, t[1][2] ise (1 · 4 + 2) · 4 = 24 bayt, son eleman t[2][3] (2 · 4 + 3) · 4 = 44 bayt ileride; belleği satır satır okuyunca tablonun kendisi görünüyor. İç içe iki döngüyle satır toplamlarını (21 + 23 = 44, + 25 = 69, + 22 = 91; 113; 97) ve döngülerin yerini değiştirerek sütun toplamlarını (67, 77, 86, 71) buluyoruz; sağlama: ikisi de 301, levhanın ortalaması 301 / 12 = 25.08 derece. İki boyutlu bir diziyi fonksiyona verirken ilk boyut boş kalabilir ama ikinci boyut yazılmalıdır, çünkü derleyici t[i][j]'yi bulmak için i satır atlar; ikisini de boş bırakınca gcc derlemiyor. Son olarak sinsi bir hata: t[1, 2] yazılınca virgül bir işleç olarak çalışır, ifade t[2] olur, yani satır 2'nin tamamı; gcc iki uyarıyla bunu haber veriyor. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. int t[3][4]: satırlar, sütunlar ve satır satır ilk değer listesi 2. sizeof t ve sizeof t[0]: 48 ve 16 bayt 3. Bellekte satırlar art arda: lldb ile +16, +24, +44 bayt 4. İç içe döngüyle satır ve sütun toplamları, sağlama 5. Fonksiyona 2B dizi: ikinci boyut zorunlu; t[1, 2] tuzağı Bölümler: 0:00 İki boyutlu diziler 0:15 Bir levhada 12 sensör 0:46 Tanım ve ilk değerler 1:36 Tablo bellekte nasıl durur? 2:23 İç içe döngüyle toplamlar 3:12 Fonksiyona iki boyutlu dizi 3:55 Sinsi bir hata: t[1, 2] 4:30 Bugünün dört kuralı 4:56 Sonraki ders: değişken uzunluklu diziler Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §6.11. 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–#28.

Bu videoyu izlemek için Premium üyelik gerekir.