1 / 23

Dersin Adı :ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu :YBS506

7.HAFTA. Dersin Adı :ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu :YBS506. Konu:Diziler. Diziler. Dizi, belirli sayıda verinin bellekte saklandığı değişken listeleridir. Tanımlanması: int dizi[10]; şeklinde tanımlanan bir dizi için şunları söyleyebiliriz:

Download Presentation

Dersin Adı :ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu :YBS506

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 7.HAFTA Dersin Adı :ALGORİTMA GELİŞTİME TEKNİKLERİDersin Kodu :YBS506 Konu:Diziler E-mail:speldek@bartin.edu.tr

  2. Diziler • Dizi, belirli sayıda verinin bellekte saklandığı değişken listeleridir. Tanımlanması: int dizi[10]; şeklinde tanımlanan bir dizi için şunları söyleyebiliriz: • int tipinde bir değişkenlere sahiptir. • 10 tane elamanı vardır. • Tek boyutlu bir dizidir.

  3. Diziler Değer Atanması İnt dizi[10]={1,2,3,4,5,6,7,8,9,10}; Diziye başlangıç değerleri atayabiliriz. Hafızadaki görünümü: Dizilerin indis numaraları 0(sıfır) dan başlar Dizinin 1. elemanına ulaşmak istiyorsam dizi[0] yazmalıyım.

  4. Diziler Değer Atanması İnt dizi[10]={1,2,3,4,5}; Dizinin ilk beş elamanına değer atanacak. Geriye kalan elamanlara 0 atanacaktır Hafızadaki görünümü:

  5. Diziler Değer Atanması İnt dizi[10]={0}; Dizinin tüm elemanlarına 0 atanacaktır. Hafızadaki görünümü:

  6. Diziler İnt dizi[]={1,2,4,5} Dizinin elaman sayısı atadığımız değer kadar olacaktır. Yukarıdaki dizi boyutunun eleman sayısı dörtür.

  7. Dizilerde Değişken Tipleri Dizileri istediğimiz değişken tipinde tanımlayabiliriz; int, float, char, double … Dizinin tüm elamanları aynı değişken tipinde olmalıdır.

  8. Dizilerin C++ da Kullanımı Değişken tipi • #include"stdafx.h" • #include<iostream> • usingnamespace std; • int _tmain(int argc, _TCHAR* argv[]) • { • int ybs[10]={1,2,3,4,5,6,7}; • cout<<"Dizinin Birinci Elamani :"<<ybs[0]<<endl; • cout<<"Dizinin Sonuncu Elamani :"<<ybs[9]<<endl; • getchar(); • return 0; • } Dizi adı Atanan değişkenler

  9. Örnekler int a[10]={12,2,45,56,89,12,2,10,33,33}; Şeklinde tanımlanan dizinin En büyük elamanını En küçük elamanını Dizi elemanların toplamını Dizi elemanlarının ortalaması üçe bölünebilen dizi elamanları ekranda gösteriniz

  10. Karakter Diziler char karakter[]=“birinci”; Karakter dizileri yukarıdaki gibi tanımlayabiliriz. karakter adlı dizinin yedi elemanı vardır. karakter[4] sahip olduğu değer n dir. charkarakter[]={‘b','i','r',‘i',‘n',’c’,’i’,'\0'}; Şeklindeki tanımlama yukarıdaki ile ayanı şeyi ifade etmektedir. Ekrana yazdırmak için. cout<<karakter;

  11. Dizilerin C++ da Kullanımı Değişken tipi • #include"stdafx.h" • #include<iostream> • usingnamespace std; • int _tmain(int argc, _TCHAR* argv[]) • { • char karakter1[]="birinci"; • char karakter2[] = { 'b', 'i', 'r', 'i', 'n','c','i', '\0' }; • cout<<"karakter1[4] :"<<karakter1[4]<<endl; • cout<<"karakter1 :"<<karakter1<<endl; • cout<<"karakter2[4] :"<<karakter2[4]<<endl; • cout<<"karakter2 :"<<karakter2<<endl; • getchar(); getchar(); • return 0; • } Dizi adı Atanan değişkenler ‘\0’ karakter dizinin bitiğini gösterir. İkinci şekilde tanımla kullanımı için zorunludur.

  12. Dizilerde Boyut Şimdiye kadar sadece bir boyutlu diziler gördük. Diziler çok boyutlu olabilirler a[3] tek boyutlu bir dizi. 3 elemanı var a[3][4] iki boyutlu bir dizi. 12 elamanı var a[3][4][5] üç boyutlu bir dizi 60 elemanı var

  13. Çok Boyutlu Dizilerin Değer ataması int a1[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; Dizinin yedinci elemanına ulaşmak için a1[1][2] yazmalıyız.

  14. C++ Örneği Dizinin kaç elemanlı olduğunu belirtmiyoruz. • #include"stdafx.h" • #include<iostream> • usingnamespace std; • int _tmain(int argc, _TCHAR* argv[]) • { • int a1[3][4]={{1,2,3,4}, • {5,6,7,8}, • {9,10,11,12} • }; • char a2[][7]={"ahmet", "mehmet" ,"ali", "veli" ,"mahmut", "emine", "fadime", "hatice","serkan","erkan","hakan","coskun"}; • cout<<"a1 7. eleman :"<<a1[1][2]<<endl; • cout<<"a2 7. eleman :"<<a2[6]<<endl; • getchar(); getchar(); • return 0; • } Dizimizdeki elamanların en fazla kaç karakterli olacağını belirtiyoruz. Eğer husamettin ismini girseydik hata verecekti. Çünkü isim 7 karakterden fazla.

  15. Dizilerin Fonksiyona Gönderilmesi Dizileri fonksiyonlara göndermek için iki parametre göndermemiz lazım. 1. Dizinin adı 2. Dizinin eleman sayısı int ybs[23]; fonksiyon(ybs , 23);

  16. Dizilere Fonksiyona Gönderilmesi Diziler referanslı çağırma yöntemiyle çağrılırlar Dizinin adı dizinin ilk elemanının adresidir Dizinin bellekteki orijinal değerlerini değiştirebilir. Fonksiyonun prototipi: void dizifonksiyon(int [] ,int); Fonksiyon başlığı: void dizifonksiyon(int a[] ,int b );

  17. C++ Örneği Fonksiyon prototipinde [ ] köşeli parantezleri açıyoruz • #include"stdafx.h" • #include<iostream> • usingnamespace std; • void diziFonksiyon(int [],int); • int _tmain(int argc, _TCHAR* argv[]) • { • int ybs[]={1,2,3,4,5,6,7,8,9,10,11,12,13};//dizini • cout<<"ybs[0] :"<<ybs[0]<<endl; • diziFonksiyon(ybs,13); • cout<<"ybs[0] :"<<ybs[0]<<endl; • getchar(); getchar(); • return 0; • } • void diziFonksiyon(int a[],int b) • { • a[0]=a[1]+a[2]; • cout<<"a[0] :"<<a[0]<<endl; • } Fonksiyonun eleman sayısını gönderiyoruz Fonksiyon çağırılmadan ve çağırıldıktan sonra ki değerlere dikkat edelim. Diziler fonksiyonlara referans yöntemiyle gönderilir

  18. C++ Örneği Fonksiyonların prototipleri • #include"stdafx.h" • #include<iostream> • usingnamespace std; • void diziEkle(int [],int); • void diziYaz(int [],int); • int _tmain(int argc, _TCHAR* argv[]) • { • int a[10]={12,2,45,56,89,12,2,10,33,33}; • diziYaz(a ,10); • diziEkle(a,10); • diziYaz(a ,10); • getchar();getchar(); • } • void diziEkle(int x[],int b) • { • for(int i=0;i<b;i++) • x[i]=x[i]+2; • } • void diziYaz(int x[],int b ) • { for(int i=0;i<b;i++) • cout<<" "<<x[i]; • cout<<"\n\n"; • } Birinci satır diziEkle fonksiyonu çağrılmdan önceki değerler İkinci satır diziEkle fonksiyonu çağrıldıktan sonraki değerler

  19. C++ Örneği: Dizinin elemanlarını ekrana yazdıran ve bir sağa kaydıran fonksiyonlar • void diziKaydir(int y[],int b) • { • int tut=y[b-1]; • for(int i=9;i>0;i--) • y[i]=y[i-1]; • y[0]=tut; • diziYaz(y ,10); • } • #include"stdafx.h" • #include<iostream> • usingnamespace std; • void diziYaz(int [],int); • void diziKaydir(int [],int); • int _tmain(int argc, _TCHAR* argv[]) • { • int a[10]={12,2,45,56,89,12,2,10,33,33}; • int b[10]={1,2,4,5,8,1,2,1,3,5}; • diziYaz(a ,10); • diziKaydir(a,10); • getchar();getchar(); • } • void diziYaz(int x[],int b ) • { for(int i=0;i<b;i++) • cout<<" "<<x[i]; • cout<<"\n\n"; • } Fonksiyonlarımı her yerden çağırabilirim. Birinci diziYaz fonksiyonumu main() nin içinden. İkinci diziYaz fonksiyonumu diziKaydır’ın içinden çağırıyorum

  20. C++ Örneği: İki diziyi toplayan fonksiyon Fonksiyonuma iki tane dizi gönderiyorum • void diziYaz(int x[],int b ) • { • for(int i=0;i<b;i++) • cout<<x[i]<<"\t"; • } • voiddizileriTopla(int x[],int y[],int z,int t) • { • int d[10]; • for(int i=0;i<10;i++) • d[i]=x[i]+y[i]; • diziYaz(d,10); • } • #include"stdafx.h" • #include<iostream> • usingnamespace std; • void diziYaz(int [],int); • voiddizileriTopla(int [],int [],int,int); • int _tmain(int argc, _TCHAR* argv[]) • { • int a[10]={12,2,45,56,89,12,2,10,33,33}; • int b[10]={1,2,4,5,8,1,2,1,3,5}; • cout<<"\na :"; • diziYaz(a ,10); • cout<<"\nb :"; • diziYaz(b ,10); • cout<<"\na+b :"; • dizileriTopla(a,b,10,10); • getchar();getchar(); • } diziYaz fonksiyonumu 3 defa çağırıyorum. İkisi mainde biride dizileriTopla fonksiyonunun içinde

  21. C++ Örneği: İki boyutlu diziyi ekrana yazdıran fonksiyon İki boyutlu dizileri fonksiyonlara gönderirken birinci parametrede [][] iki tane köşeli parantez kullanıyorum sütün sayısını yazıyorum. İkinci parametrede satır sayısını gönderiyorum • #include"stdafx.h" • #include<iostream> • usingnamespace std; • voidikiBoyutluDiziYaz(int [][3],int); • int main() • { • int a[2][3]={{2,3,5},{10,11,12}}; • ikiBoyutluDiziYaz(a,2); • getchar();getchar(); • } • voidikiBoyutluDiziYaz(int x[][3],int b) • { • for(int i=0;i<b;i++) • { • cout<<"\n"; • for(int j=0;j<3;j++) • cout<<"\t"<<x[i][j]; • } • } İki boyutlu dizilerin elemanlarına ulaşmak için iki tane for döngüsü kullanıyorum. Birinci döngüde satırlara ikinci döngüde sütunlara ulaşıyorum

  22. C++ Örneği: İki boyutlu diziye 1 ile 9 arasında rastgele değerler atayan ve ekrana yazdıran fonksiyonlar • voidikiBoyutluDiziYaz(int x[][10],int b) • { • for(int i=0;i<b;i++) • { • cout<<"\n"; • for(int j=0;j<10;j++) • cout<<" "<<x[i][j]; • } • } • voidikiBoyutluDiziDegerAta(int y[][10],int b) • { • for(int i=0;i<b;i++) • { • for(int j=0;j<10;j++) • y[i][j]=rand()%9+1; • } • } • #include"stdafx.h" • #include<iostream> • #include<cstdlib> • #include<ctime> • usingnamespace std; • voidikiBoyutluDiziYaz(int [][10],int); • voidikiBoyutluDiziDegerAta(int [][10],int); • int main() • { • rand(); • srand(time(0)); • int a[10][10]; • ikiBoyutluDiziDegerAta(a,10); • ikiBoyutluDiziYaz(a,10); • getchar();getchar(); • }

  23. C++ Örneği: iki boyutlu dizilere değer atayan, toplayan ve ekran yazdıran fonkisyonlar • voidikiBoyutluDiziYaz(int x[][10],int b) • { • for(int i=0;i<b;i++) • { • cout<<"\n"; • for(int j=0;j<10;j++) • cout<<" "<<x[i][j]; • } • } • voidikiBoyutluDiziDegerAta(int y[][10],int b) • { • for(int i=0;i<b;i++) • { • for(int j=0;j<10;j++) • y[i][j]=rand()%4+1; • } • } • voidikiBoyutluDiziTopla(int x[][10],int y[][10],int b,int c) • { • int d[10][10]; • for(int i=0;i<b;i++) • { • for(int j=0;j<10;j++) • d[i][j]=x[i][j]+y[i][j]; • } • cout<<"\n\n"; • ikiBoyutluDiziYaz(d,10); • } • #include"stdafx.h" • #include<iostream> • #include<cstdlib> • #include<ctime> • usingnamespace std; • voidikiBoyutluDiziYaz(int [][10],int); • voidikiBoyutluDiziDegerAta(int [][10],int); • voidikiBoyutluDiziTopla(int[][10],int[][10],int,int); • int main() • { rand(); • srand(time(0)); • int a[10][10]; • int b[10][10]; • ikiBoyutluDiziDegerAta(a,10); • cout<<"Dizi a:"; • ikiBoyutluDiziYaz(a,10); • cout<<"\n\n"; • ikiBoyutluDiziDegerAta(b,10); • cout<<"Dizi a:" ; • ikiBoyutluDiziYaz(b,10); • cout<<"\nDizi a + Dizi b:"; • ikiBoyutluDiziTopla(a,b,10,10); • getchar();getchar(); • }

More Related