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

Slides:



Advertisements
Benzer bir sunumlar
DİZİLER – I. Kısım YRD.DOÇ.DR. CİHAD DEMİRLİ
Advertisements

Dizi Kullanan Örnekler
STRİNG FONKSİYONLARI.
Soru1: 1’den 4’e kadar olan tamsayıları ekrana tek satırda görülecek şekilde yazdıran bir programı aşağıdaki metotları kullanarak yazınız. Bir printf ifadesi.
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Nöbetçi Kontrollü Döngü
Göstericiler (Pointers)
void medyan(int cevap[]) { int j; siralama(cevap);
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
Bölüm 2 C Dilinin Temelleri
String Diziler(Katarlar)
Tanım Birbirleriyle ilişkili ve bitişik iki ya da daha fazla bellek hücresinden oluşan yapı Örnek dizi tanımı: int tamsayiDizi[10]; tamsayiDizi[0] /*ilk.
Değişken Bildirimleri
Diziler.
Atama ve Girdi/Çıktı Komutları
VERİ TİPLERİ VE DEĞİŞKENLER
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Diziler(Arrays).
Bölüm 10 Yapılar ve Birleşimler
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
Soru1: Dışardan "%s" format belirteci kullanılarak girilecek 20 elemanlı bir dizinin elemanlarının kaç tanesinin rakam, kaç tanesinin harf ve kaç tanesinin.
DİZİLER.
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
Fonksiyonlar.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
C ile Programlamaya Giriş
Chapter 6: Using Arrays.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
DÖNGÜLER.
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Dizi Elemanlarının Sıralanması
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
Algoritma & Programlama
Diziler (Arrays).
Bölüm 3: Diziler BTEP 102 – Veri Yapıları ve Programlama
VERİ TİPLERİ VE DEĞİŞKENLER
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bil 102 Bölüm 6 Diziler.
DİZİLER Arrays.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
C Programlamada, benzer tipte tanımlaman değişkenleri kontrol etmede bize en çok yardım eden dostlarımız dizilerdir. Örneğin: 100 Öğrencinin bilgilerini.
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
tanımları yapabilmeniz gerekmektedir .
NBP103 Programlama Temelleri Öğr. Gör. Mahmut Kılıçaslan
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
YAPISAL PROGRAMLAMA Hafta-7
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Diziler(Arrays).
Sunum transkripti:

Diziler

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

Dizi Tanımı Değişkenler aynı anda tek bir değer tutabilen temel değişkenler ve 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çlerinde tek bir değeri tutabilirler. Diziler ise ardarda sıralanmış bellek hücreleridirler. Diziler bu bağlamda bileşik değişkenlerdir ve bellekte aynı anda birden fazla değerin saklamasını mümkün kılarlar.

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; 20 not[2]= not[0]+10; 2030 i=0; not[i]=90; not[++i]=70;

Dizi Elemanlarına Değer Atama int a[3],b; scanf(“%d”, &b); a[2]=b; int a[3]; scanf(“%d”, &a[2]); veya

Dizinin elemanlarına değer verilmesi tanımlama anında yapılabilir. int a[5]= {25, 18; 20; 0,29} Dizilerin bellekte saklanma biçimi: Erişimin kolay olması için dizinin tüm elemanları peşpeşe saklanır.

Dizi Elemanlarına Değer Atama #include 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); } Örnek:Kullanıcıdan alınan 5 tamsayı değerini bir dizide saklayan ve bu değerlerin ortalamasını bulan bir program yazalım

2-Boyutlu Diziler int not[3][30]; veri_tipi dizi_ismi[satır_büyüklüğü][sütun_ büyüklüğü]; Her elemanı bir boyutlu dizi olan yapılara ise çok boyutlu diziler denir. Bu bölümde matris veya tablo olarak da bilinen 2-boyutlu dizilere değineceğiz.

not[1][1]=90; scanf(“%d”, &not[29][0]); Tanımlama Sırasında Değer Atama satır yönünde atama 2-Boyutlu Dizilere Değer Atama 2-Boyutlu Diziler

Tanımlama Sırasında Değer Atama

2-Boyutlu Diziler Tanımlama Sonrasında Satır Yönünde Değer Atama int a[30][3]; for(satir=0; satir<30; ++satir) { for (sutun=0;sutun<3; ++sutun) a[satir][sutun]=0; }

2-Boyutlu Diziler Tanımlama Sonrasında Sütun Yönünde Değer Atama int a[30][3]; for(sutun=0; sutun <3; ++sutun) for (satir=0;satir<30;++satir) a[satir][sutun]=0;...

Örnek: 10 elemanlı iki dizinin toplamını üçüncü bir diziye yazan program.

#include main() { int A[5], B[5],C[5]; int i; printf("A dizinin elemanlarini giriniz"); for(i=0;i<5;i++) { printf("A[%d]=", i); scanf ("%d",&A[i]); } printf("B dizinin elemanlarini giriniz"); for(i=0;i<5;i++) { printf("B[%d]=", i); scanf ("%d",&B[i]); } /* Iki dizinin elemanlarinin toplanmasi*/ for(i=0;i<5;i++) C[i]=A[i]+B[i]; /* C dizisinin yazdırılması */ printf("C dizisi:\n"); for(i=0;i<5;i++) printf("%d\t",C[i]); }

Örnek: 10 elemanlı A dizisinin en küçük elemanı bulup yazan program.

#include main() { int A[10]; int i,enk; for (i=0;i<10;i++) { printf("A[%d]=", i); scanf("%d",&A[i]); } enk=A[0]; for(i=0;i<10;i++) if (enk>A[i]) enk=A[i]; printf("Dizinin en küçük elemani %d dir", enk); }

Örnek: 10 elemanlı A dizisinin tek elemanlarından B dizisini oluşturan program

#include main() { int A[10],B[10]; int i,j; // A dizisinin elemanlarinin okunmasi for(i=0;i<10;i++) { printf("A[%d]=",i); scanf("%d",&A[i]); } j=0; for(i=0;i<10;i++) { if (A[i]%2==1) { B[j]=A[i]; j++; } // B dizisinin yazdirilmasi for(i=0;i<j;i++) printf("%d,", B[i]); }

Örnek: 25 kişilik bir sınıfın sınav sonuçlarını okuyup ortalamasını bulan program #include main() { int ogr[25]; int i, toplam; float ortalama; /*Ogrenci notlarinin okunmasi*/ for(i=0;i<25;i++) { printf("%d\’inci ögrencinin sinav notunu giriniz", i); scanf ("%d",&ogr[i]); } toplam=0; for(i=0;i<25;i++) toplam=toplam+ogr[i]; ortalama=toplam/25; printf("sinif ortalamasi %f dir",ortalama); }

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ği ve her sınav için sınıf ortalamasının ekranda gösterileceği bir program yazınız. #include 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”, &not[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 ortalamasi: %5.2f\n”,j+1,orta); } return (0); }

// dizilerVeDonguler.c #include int main() { int i=0; int dizi[10]; // diziyi doldur: for(i=0;i<10;i++) { dizi[i] = i * i; } // diziyi yazdir: i=0; while(i<10) { printf("dizi[%d]: %d\n",i,dizi[i]); i++; } return 0; }

// ikiBoyutluDiziOkuYaz #include int main() { int i=0,j=0; int matris[3][4]; // diziye yaz: for(i=0;i<3;i++) { // satirlar icin for(j=0;j<4;j++) { // kolonlar icin matris[i][j]= i + j; } // diziden oku for(i=0;i<3;i++) { // satirlar icin for(j=0;j<4;j++) { // kolonlar icin printf("%d\t",matris[i][j]); } printf("\n\n"); } return 0; }

// dogrusalSiralama.c #include void sirala(); void diziyiYazdir(); int sayilar[15] = {102,97,34,65,324,21,546,2321,5,123,122121,7,13,675,0}; void sirala() { int i=0, j=0, yedek=0; for (i=0;i<15;i++) { for (j=i+1;j<15;j++) { if (sayilar[j]<sayilar[i]) { // yer degistir: yedek=sayilar[i]; sayilar[i]=sayilar[j]; sayilar[j]=yedek; } // if sonu } // for j sonu } // for i sonu } void diziyiYazdir() { int i=0; for(i=0;i<15;i++) { printf("%d, ",sayilar[i]); } printf("\n"); } int main() { int i=0; printf("dizi siralanmadan once:\n"); diziyiYazdir(); printf("\ndizi siralaniyor...\n"); sirala(); printf("\ndizi siralandiktan sonra:\n"); diziyiYazdir(); return 0; }

Sıralama Dizi elemanlarının küçükten büyüğe ve büyükten küçüğe doğru dizilmesi işlemidir. Farklı performansa sahip bir çok yöntem vardır. Buble sort: Bu yöntemde ardışıl iki yöntem karşılaştırılır. Eğer önceki eleman sonrakinden büyük ise elemanlar yer değiştirilir. Bu şekilde dizi taranır. Eğer herhangi bir değişiklik yapılmış ise işlem tekrar edilir.

Buble sort Başlangıç1. Adım2.Adım3.Adım

Örnek: 10 elemanlı dizinin elemanlarını sıralayan program #include main() { int a[10]; int i,j,temp; /*dizi elemanlarinin okunmasi*/ for(i=0;i<10;i++) { printf("dizinin %d\’inci elemanini giriniz",i); scanf ("%d",&a[i]); } for(i=0;i<10;i++) for (j=i+1;j<10;j++) if(a[i] >a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0;i<10;i++) printf("%d, ",a[i]); }

Örnek: A ve B matrislerini toplayan program. #include main() { int A[3][3]={ 1,2,3,4, 5, 6, 7, 8, 9}; int B[3][3]= {{2, 4, 8},{3,6,9},{4,16,64}}; int C[3] [3]; int i, j; for (i=0;i<3;i++) for(j=0;j<3; j++) C[i][j]=A[i][j]+B[i][j]; // C matrisinin yazdirilmasi for (i=0;i<3;i++) { for(j=0;j<3; j++) printf("%d ", C[i][j]); printf("\n"); }

Örnek: A matrisinin içindeki en büyük ve en küçük sayıyı bulan program #include main() { int A[3][3]; int enb; int enk; int i, j; // A matrisinin elemanlarinin okunmasi for (i=0;i<3;i++) for(j=0;j<3;j++) { printf("A[%d][%d]=",i,j); scanf("%d",&A[i][j]); } enb=A[0][0]; enk=A[0][0]; //A matrisinin enk ve enk elemanlarinin bulunmasi for (i=0;i<3;i++) for(j=0;j<3; j++) {if (enb<A[i][j]) enb=A[i][j]; if (enk>A[i][j]) enk=A[i][j]; } printf("Dizinin en kucuk elemani %d en buyuk elemani %d dir",enk, enb); }