Diziler (Arrays) Çok Boyutlu Diziler

Benzer belgeler
2. Dereceden Denklemin Köklerini Bulan Program

Özyineleme (Recursion)

Giriş. ENF102 Jeoloji

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

C++ Dersi: Nesne Tabanlı Programlama

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

Diziler (Arrays) Çok Boyutlu Diziler

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

C PROGRAMLAMA D İ L İ

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

HSancak Nesne Tabanlı Programlama I Ders Notları

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

D İ Z İ L E R A R R A Y S

PROGRAMLAMAYA GİRİŞ DERS 2

BİL1001 Bilgisayar Bilimlerine Giriş 1

BLM 111 ALGORİTMA VE PROGRAMLAMA I

8. İŞARETCİLER (POINTERS)

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Pointer Kavramı. Veri Yapıları

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

HSancak Nesne Tabanlı Programlama I Ders Notları

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Göstericiler (Pointers)

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

Hafta 11 Çok Boyutlu Diziler

C dilinde if-else yapısı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

ALGORİTMA VE PROGRAMLAMA I

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

C Programlama Dilinde Değişkenler

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Hafta 13 Fonksiyonlar

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Adım Adım C. Dr. Hidayet Takcı

C Programlama Dilininin Basit Yapıları

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Final Sınavı Soruları Güz, Süre: 90 Dakika

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

Hafta 12 Karakter Tutan Diziler

Klavyeden girilen metnin karakter uzunluğu bulan C programı. Klavyeden girilen metin içerisindeki küçük ve büyük harf sayısını bulan C programı

ALGORİTMA VE PROGRAMLAMA II

Bölüm 2 - C ile Programlamaya Giriş

BİLG Dr. Mustafa T. Babagil 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

STRİNG DİZİLER(KATARLAR)

Programlama Dilleri 1. Ders 4: Diziler

C PROGRAMLAMA DİLİNE GİRİŞ

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

Giris {\} /\ Suhap SAHIN Onur GÖK

Temel Giriş/Çıkış Fonksiyonları

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

int printf (const char *format [, argument,...]);

C PROGRAMLAMA D İ L İ

Genel Programlama II

Dr. Fatih AY Tel: fatihay@fatihay.net

Fonksiyonlar (Altprogram)

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

Bigisayar Programlama

NESNEYE YÖNELİK PROGRAMLAMA

C++ Operatörler (Operators)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Diziler İndisli Değişkenler

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

C PROGRAMLAMA D İ L İ

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

Transkript:

Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir. Bu diziler sayesinde değerler, bir tablodaki veriler gibi düşünülebilirler. Bu tip dizilerde her elemana ulaşmak için satır indisi ve sütun indisi kullanılır. C dilindeki dizilerin boyutları ikiden de fazla olabilir. Bir sınır olmamakla beraber 12 boyuta kadar destekler. Biz burada çift boyutlu dizileri ele alacağız. Tanımlama: dizinintürü dizininadı [satır sayısı][sütun sayısı]; ÖRNEK: int a[3][4]; /* 3 satırlı, 4 sütunlu int türünde değerler alabilen bir dizi */ float b[5][3]; /*5 satırlı 3 sütunlu float türünde değerler alabilen bir dizi */ Örnekte verilen ilk dizi tanımlamasındaki birinci köşeli parantez içerisinde verilen değer satır sayısı, ikinci köşeli parantez içerisinde verilen değerde sütun sayısıdır. Bu dizi 3 4 lük bir tablo gibi düşünülebilir. Ancak bellekte tutulma şeklinin ardışık olduğu unutulmamalıdır. Sütun 0 Sütun 1 Sütun 2 Sütun 3 Satır 0 a[0][0] a[0][1] a[0][2] a[0][3] Satır 1 a[1][0] a[1][1] a[1][2]

a[1][3] Satır 2 a[2][1] a[2][3] a[2][0] a[2][2] ÇİFT BOYUTLU DİZİLERE İLK DEĞER ATANMASI Tıpkı tek boyutlu dizilerde olduğu gibi ilk değer ataması aşağıdaki şekilde yapılır. int a[3][4]={ {4, 5, 3, 1, {0, 4, 3, 1, {1, 9, 7, 2 ; Yine tek boyutlu dizilerde olduğu gibi eleman sayısından daha az değer girilirse, diğer elemanların ilk değerleri sıfır yada boş olur. İçteki küme işaretleri kullanılmadan yapıları bir ilk atamada, elemanlar ilk hücreden itibaren sırası ile yerleştirilirler. ÖRNEK: 3 4 lük çift boyutlu bir dizi içerisine klavyeden girilen değerleri, tablo halinde ekrana yazdıran programı yazınız. 1. /*Tablo halinde ekrana yazdıran program */ 2. #include <stdio.h> 3. int main() 4. { 5. int a[3][4], satir, sutun; 6. for( satir = 0 ; satir < 3 ; satir++ ) { 7. printf( %d. satirindaki elemanlar:, satir ); 8. /* satırdaki elemanlar */ 9. for ( sutun = 0 ; sutun < 4 ; sutun++ ) 10. /* bir seferde girilmiş olacak */ 11. scanf( %d, &a[satir][sutun]) ; 12. 13. printf( \n TABLO \n ); 14. for ( satir = 0 ; satir <3 ; satir++ ) {

15. 16. 17. 18. 19. 20. printf( %d. satır:, satir ) ; for( sutun = 0 ; sutun < 4 ; sutun++ ) printf( %d, a[satir][sutun] ); printf( \n ); /*bir alt satıra geçmek için*/ return 0; ÖRNEK: Elemanları klavyeden girilen 4 6 lık bir dizinin sütun toplamlarını ekrana yazan programı yazınız. 1. /* iki boyutlu dizinin sütun toplamları */ 2. #include <stdio.h> 4. #define N 4 /* Satır sayısı sabiti */ 5. #define M 5 /* Sütun sayısı sabiti */ 6. int main() 7. { 8. int a[n][m]; 9. int sutun[m] = ( 0 ); /* İlk 10. değerleri 0 ata */ int i, j; 11. for( i = 0 ; i < N ; i++ ) { 12. printf( %d. satır, i); 13. /* satırdaki elemanlar */ 14. for ( j = 0 ; j < M ; j++ ) 15. /* bir seferde girilmiş olacak */ 16. scanf( %d, &a[i][j] ); 17. 18. for ( i = 0 ; i < N ; i++ ) 19. for( j = 0 ; j < M ; j++ ) 20. sutun[j] = sutun[j] + a[i][j]; /* sütun toplamı */ printf( \n \n 22. ); for( j = 0 ; j < 6 ; j++) 23. printf( %d, sutun[j] );

24. 25. return 0; ÇOK BOYUTLU DİZİLERİN FONKSİYONLARA PARAMETRE OLARAK GÖNDERİLMESİ Çok boyutlu bir dizi, fonksiyona parametre olarak gönderilecekse, tek boyutlularda olduğu gibi sadece adı yazılır. Gönderilen dizi değişkeni karşılayan tanımlamada ise gönderilen dizinin boyutu kadar köşeli parantez açılır ve kapatılır. İlk köşeli parantez içerisine eleman sayısını ifade eden değer yazılmaz. Fakat diğerlerine eleman sayıları verilmek zorundadır. Derleyici bu değerleri elemanların hafızaya yerleşimlerini tanımlamak için kullanılır. Dizi kaç boyutlu olursa olsun bellek ardışık tek boyutlu hücrelerden oluşur. Dolayısıyla indis numaraları ne olursa olsun bütün dizi elemanları bellekte ardışık olarak saklanmak zorundadır. Örneğin; ; int a[2][3] = { {13, 12, 8, {10, 50, 2 gibi bir dizi tanımlandığında elemanları bellekte tutulur. Yani çift boyutlu diziler tablo halinde bellekte tutulmaz. Her bir satır verilen sütun sayısı kadar sonraki hücreler içerisinde tutulur. Zaten her bir satır tek boyutlu bir dizi gibi düşünülebilir. Bütün satırlar uç uca eklenerek belleğe yerleşir. Derleyici bir sonraki satırın başlangıçtan kaç eleman sonra başladığını sütun sayısından anlar. Bu nedenle ilk satır sayısı haricindeki diğer değerler fonksiyonda karşılayan değişkenin ikinci ve daha sonraki köşeli parantezleri içerisine yazılmalıdır.

ÖRNEK: Kendisine gönderilen 3 4 lük bir diziyi ekrana tablo halinde yazan fonksiyonu main() fonksiyonu ile beraber yazınız. 1. #include <stdio.h> 3. #define N 3 /* Satır sayısı sabiti */ 4. #define M 4 /* Sütun sayısı sabiti */ 6. void diziyaz ( int [] [M] ); /*prototip tanımlaması */ 8. int main() 9. { 10. 11. int a[n][m] = { {4, 5, 3, 1, 12. {0, 4, 3, 1, 13. {1, 9, 7, 2 ; 14. diziyaz ( a ); 15. return 0; 16. 17. void diziyaz ( int b[] [M] ) 18. { 19. int sutun; 20. int satir; 22. for( satir = 0 ; satir < N ; satir++) { 23. printf( %d. satırdaki elemanlar:, satir ); 24. for( sutun = 0 ; sutun < M ; sutun++) 25. printf( %d, b[satir][sutun] ); 26. printf( \n ) ; /* bir alt satıra geçmek için */ 27. 28.