Sıra | DOSYA ADI | Format | Bağlantı |
---|---|---|---|
01. | Diziler | ppt | Sunumu İndir |
Transkript
DizilerDizi TanımıDizi Elemanlarına Değer AtamaDiziler ve Göstergeler2-Boyutlu Diziler
Dizi TanımıDeğişkenler aynı anda tek bir değer tutabilen temel değişkenlerve birden fazla değer saklayabilen bileşik değişkenler olmaküzere ikiye ayrılır.Temel değişkenler bellekte tek bir hücreyi tanımlayıp, içlerindetek bir değeri tutabilirler.Diziler ise ardarda sıralanmış bellek hücreleridirler. Diziler bubağlamda bileşik değişkenlerdir ve bellekte aynı anda birdenfazla değerin saklamasını mümkün kılarlar.2
Dizi Tanımıveri_tipi dizi_ismi [eleman_sayısı];Bellek Görüntüsü:
Dizi TanımıÖrnek: int not[4];int i;not[0]=20;20not[2]= not[0]+10;20 30i=0;not[i]=90;not[++i]=70;90 70 30
Dizi Elemanlarına Değer Atamaint a[3],b;scanf(“%d”, &b);a[2]=b;veyaint a[3];scanf(“%d”, &a[2]);
Dizi Elemanlarına Değer AtamaÖrnek:Kullanıcıdan alınan 5 tamsayı değerini bir dizide saklayan ve budeğerlerin ortalamasını bulan bir program yazalım#include <stdio.h>int main(void){ int a[5];int i,toplam;double orta;/*Kullanici degerlerinin dizide saklanmasi*/printf(“Bes tamsayi giriniz:”);for(i=0;i<5;++i)scanf(“%d”,&a[i]);/*Toplam ve ortalamanin bulunmasi*/toplam=0;for(i=0;i<5;++i)toplam=toplam+a[i];orta= toplam/5.0;printf(“Ortalama=%5.2f”,orta);return (0);}
Diziler ve GöstergelerBir dizi ismi aslında dizinin ilk elemanını gösteren sabit birgösterge olarak yaratılır.55
Diziler ve GöstergelerGösterge Gösterimi*dizptr = 5;*(dizptr + 1) = 6;*(dizptr + 2) = 7;*(dizptr + i) = 8;Dizi Gösterimidiz[0] = 5;diz[1] = 6;diz[2] = 7;diz[i] = 8;
Diziler ve Göstergeler
Diziler ve FonksiyonlarDizi Elemanının Fonksiyona Gönderilmesi
Diziler ve FonksiyonlarDizinin Fonksiyona Gönderilmesiint a[5]={10,20,30,40,50};a dizisini f() fonksiyonuna yollamak için aşağıdakikomutu kullanmalıyız.f(...,a,...);Bu fonksiyonun başlığı ise iki şekilde olabilir.void f( ,int x[5], )void f( ,int x[], )Fonksiyon parametresinde tanımlanan x dizisi yoluyla yapılandeğişiklikler, gerçek parametre olan a dizisini etkileyecektir. Çünkü diziismi dizinin ilk elemanının yerini gösteren bir göstergedir ve kaynakparametresi gibi davranacaktır.
Diziler ve FonksiyonlarÖrnek:#include <stdio.h>void f1(int b[], int n);int main(void){ int i, a[]={1,2,3};f1(a,3);printf(\\\nmain fonksiyonu \);for(i=0;i<3;++i)printf(\%d\, a[i]);return(0);}void f1(int b[], int n){ int i;printf(\f1 fonksiyonu \);for(i=0;i<n;++i){ printf(\%d\, b[i]);b[i]=8;}}Çıktı:f1 fonksiyonu 123main fonksiyonu 888
Diziler ve FonksiyonlarDizi Yerine Gösterge Kullanımı
2-Boyutlu DizilerHer elemanı bir boyutlu dizi olan yapılara ise çok boyutlu diziler denir. Bubölümde matris veya tablo olarak da bilinen 2-boyutlu dizilere değineceğiz.veri_tipi dizi_ismi[satır_büyüklüğü][sütun_ büyüklüğü];int not[3][30];
2-Boyutlu Diziler2-Boyutlu Dizilere Değer Atamascanf(“%d”, ¬[29][0]);Tanımlama Sırasında Değer Atamanot[1][1]=90;satır yönünde atama
2-Boyutlu DizilerTanımlama Sırasında Değer Atama
2-Boyutlu DizilerTanımlama Sonrasında Satır Yönünde Değer Atamaint a[30][3];for(satir=0; satir<30; ++satir){ for (sutun=0;sutun<3; ++sutun)a[satir][sutun]=0;}
2-Boyutlu DizilerTanımlama Sonrasında Sütun Yönünde Değer Atamaint a[30][3];for(sutun=0; sutun <3; ++sutun)for (satir=0;satir<30;++satir)a[satir][sutun]=0;
2-Boyutlu DizilerÖrnek:Kullanıcının, 30 kişilik bir sınıftaki her öğrenci için 3’er sınav notu gireceğive her sınav için sınıf ortalamasının ekranda gösterileceği bir program yazınız.#include <stdio.h>int main(void){ int not[30][3];int i,j,toplam;double orta;/* Kullanicidan notlarin alinmasi*/for(i=0;i<30;++i){ printf(“%d. ogrenci notlari:”,i+1);for(j=0;j<3;++j)scanf(“%d”, ¬[i][j]);}/*Her sinavin ortalamasinin bulunmasi*/for(j=0;j<3;++j){ toplam=0;for(i=0;i<30;++i)toplam+=not[i][j];orta=toplam/30.0;printf(“%d. sinav ortal masi: %5.2f\\n”,j+1,orta);}
2-Boyutlu Diziler2-Boyutlu Diziler ve FonksiyonlarDizi tanımıint a[2][3]={1,2,3,4,5,6};Fonksiyon çağırmaf1( ,a, );Fonksiyon başlığıf1( , int b[][3], );
2-Boyutlu DizilerÖrnek: Öğrencilerin sınav ortalamalarını bulacak bir program yazalım. Buprogram için ortalama() isimli bir fonksiyon kullanalım. ortalama()fonksiyonu çağırıldığı yerden2-boyutlu bir dizi alır, dizinin her satırınınortalamasını bulup, tek boyutlu bir başka dizide saklar ve ortalamaları tutan bu tekboyutlu diziyi çağırıldığı yere geri döndürür.#include <stdio.h>void ortalama(int ogr_sa,int sinav_sa,int not[][3],double orta[]){ double toplam;int i,j;for(i=0;i<ogr_sa;++i){ toplam=0;for(j=0;j<sinav_sa;++j)toplam+=not[i][j];orta[i]=toplam/3.0;} }
2-Boyutlu Dizilerint main(void){ int test[30][3];int i,j,toplam;double averaj[30];/*Kullanicidan notlarin alinmasi*/for(i=0;i<30;++i){ printf(\%d. ogrenci notlari:\, i+1);for(j=0;j<3;++j)scanf(\%d\,&test[i][j]);}/*Her ogrencinin ortalamasinin bulunmasi*/ortalama(30,3,test,averaj) ;for(i=0;i<30;++i)printf(\%d.ogrenci ortalamasi:%5.2f\\n\,i+1,averaj[i]);return (0);}