Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bölüm 6 - Diziler indeks 6.1 Giriş 6.2 Diziler

Benzer bir sunumlar


... konulu sunumlar: "Bölüm 6 - Diziler indeks 6.1 Giriş 6.2 Diziler"— Sunum transkripti:

1 Bölüm 6 - Diziler indeks 6.1 Giriş 6.2 Diziler
6.3 Dizilerin Bildirimleri 6.4 Dizilerin Kullanımlarına Örnekler 6.5 Dizileri Fonksiyonlara Geçirmek 6.6 Dizileri Sıralamak 6.7 Örnekler: Ortalama, Mod ve Medyanı Diziler Kullanarak Hesaplamak 6.8 Dizilerde Arama Yapmak 6.9 Çok Boyutlu Diziler

2 Bu Bölümde Öğreneceklerimiz:
Amaçlar Bu Bölümde Öğreneceklerimiz: Dizi veri yapısını tanıtmak Dizilerin değerlerini depolama, sıralama ve listeleri arama ile değer tabloları oluşturmada kullanımlarını anlamak Bir dizinin nasıl bildirileceğini, bir diziye nasıl ilk değer atanacağını ve dizideki bağımsız elemanların nasıl çağrılacaklarını anlamak Dizileri fonksiyonlara geçirebilmek. Temel sıralama tekniklerini anlamak Çok boyutlu dizileri bildirebilmek ve kullanabilmek

3 6.1 Giriş Diziler Birbirleriyle ilişkili veri yapıları
Statik yapılar- programın çalışma süresi boyunca hep aynı boyutta kalırlar. Dinamik veri yapıları Bölümde göreceğiz..

4 6.2 Diziler Birbirleriyle ilişkili hafıza gurubu Aynı ad ve Tip
Dizinin adı (Not: Bu dizinin bütün elementleri aynı ada sahiptir, c ) C dizisinin içindeki elemanların yerini belirten sayı c[6] -45 6 72 1543 -89 62 -3 1 6453 78 c[0] c[1] c[2] c[3] c[11] c[10] c[9] c[8] c[7] c[5] c[4] Dizi Birbirleriyle ilişkili hafıza gurubu Aynı ad ve Tip Dizi içindeki elemanı veya konumunu belirtme Dizi Adı Pozisyon Numarası Biçim: Diziadı[ pozisyon numarası ] Dizinin ilk elemanı her zaman sıfır’ıncı elemandır C dizisinin n. elemanı: c[ 0 ], c[ 1 ]...c[ n – 1 ]

5 Dizi elemanları normal değişkenler gibidir.
6.2 Diziler Dizi elemanları normal değişkenler gibidir. c[ 0 ] = 3; printf( "%d", c[ 0 ] ); Eğer x 3 e eşitse, belirteçteki bu işlemi yapar c[ ] == c[ 3 ] == c[ x ]

6 6.2 Diziler

7 6.3 Dizilerin Bildirimleri
Dizileri tanımlayacağımız zaman, Adı Dizi Tipi Eleman Sayısı Dizitipi Diziadı[ Elemansayısı ]; Örnekler: int c[ 10 ]; float myDizi[ 3284 ]; Aynı anda birden fazla dizi bildirimi, Aynı değişken tipleri için, tanımlama biçimleri aynı Example: int b[ 100 ], x[ 27 ];

8 6.4 Dizileri Kullanan Örnekler
Atama değerleri int n[ 5 ] = { 1, 2, 3, 4, 5 }; Eğer dizideki elemanların sayısından daha az atama değeri varsa, kalan elemanlar 0 değerine atanır int n[ 5 ] = { 0 } Bütün elemanlar 0 Dizideki eleman sayısından fazla atama değeri varsa yazım hatası oluşacaktır. Dizinin boyutu belirtilmezse, dizinin boyutu atama listesindeki eleman sayısı olur int n[ ] = { 1, 2, 3, 4, 5 }; 5 atama değeri, n Dizisinin boyutunu 5 olarak belirler

9 fig06_03.c

10 Element Value Program Çıktısı

11 fig06_04.c

12 Program Çıktısı Element Value 0 32 1 27 2 64 3 18 4 95 5 14 6 90 7 70
Program Çıktısı

13 fig06_05.c

14 Program Çıktısı Element Value 0 2 1 4 2 6 3 8 4 10 5 12 6 14 7 16 8 18
Program Çıktısı

15 fig06_06.c Program Output Total of Dizi element values is 383

16 fig06_07.c (Part 1 of 2)

17 fig06_07.c (Part 2 of 2) Program Output
Rating Frequency

18 fig06_08.c (Part 1 of 2)

19 fig06_08.c (Part 2 of 2) Program Çıktısı
Element Value Histogram ******************* *** *************** ******* *********** ********* ************* ***** ***************** *

20 fig06_09.c (Part 1 of 2)

21 fig06_09.c (Part 2 of 2) Program Output
Face Frequency

22 6.4 Dizileri Kullanan Örnekler
Karakter Dizileri String “birinci” ,gerçekte karakterlerden oluşmuş statik bir dizidir. Karakter Dizisi bir string kullanarak ilk değerlere atanabilir char string1[] = “birinci"; Null karakterin, karakter sabiti olarak gösterimi ‘\0’ string1 gerçekte 7 elemanlıdır Az önceki bildirim char string1[] = { ‘b', 'i', 'r', ‘i', ‘n',’c’,’i’, '\0' }; Bağımsız karakterlere dizi belirteci gösterimiyle erişebiliriz. string1[ 3 ] is character ‘i’ Dizi adı dizinin başlangıç adresidir,‘&’ kullanımı gereksizdir scanf( "%s", string2 ); Boşluk karakteri girilinceye kadar karakter okur Dizinin sonundan öteye de yazabilir, dizinin büyüklüğüne dikkat etmez.

23 fig06_10.c (Part 1 of 2)

24 fig06_10.c (Part 2 of 2) Enter a string: Hello there string1 is: Hello
string2 is: string literal string1 with spaces between characters is: H e l l o

25 fig06_11.c (Part 1 of 3)

26 fig06_11.c (Part 2 of 3)

27 fig06_11.c (Part 3 of 3)

28 Program Output Her bir fonksiyona ilk çağrı:
staticDiziInit’e girerken değerler: Dizi1[ 0 ] = 0 Dizi1[ 1 ] = 0 Dizi1[ 2 ] = 0 staticDiziInit’den çıkarken değerler: Dizi1[ 0 ] = 5 Dizi1[ 1 ] = 5 Dizi1[ 2 ] = 5 automaticDiziInit ’e girerken değerler : Dizi2[ 0 ] = 1 Dizi2[ 1 ] = 2 Dizi2[ 2 ] = 3 automaticDiziInit ’den çıkarken değerler : Dizi2[ 0 ] = 6 Dizi2[ 1 ] = 7 Dizi2[ 2 ] = 8 Her bir fonksiyona ikinci çağrı: staticDiziInit’e girerken değerler : staticDiziInit’den çıkarken değerler : Dizi1[ 0 ] = 10 Dizi1[ 1 ] = 10 Dizi1[ 2 ] = 10 automaticDiziInit’e girerken değerler : automaticDiziInit’den çıkarken değerler : Program Output

29 6.5 Dizileri Fonksiyonlara Geçirmek
Bir dizi argümanını fonksiyona geçirebilmek için, dizinin ismini parantez kullanmadan belirtmeliyiz… int myDizi[ 24 ]; myFunction( myDizi, 24 ); Genellikle Dizileri fonksiyonlara geçirirken boyutları da geçirilir Diziler referansa göre çağırma yöntemiyle geçirilir Dizinin adı ilk dizinin ilk elemanının adresidir Fonksiyon dizinin nerede tutulduğunu bilir Dizinin bellekteki orijinal değerlerini değiştirebilir. Dizinin Elemanlarını Geçirmek Değere göre çağrılarla geçirme (i.e., myDizi[ 3 ])

30 6.5 Dizileri Fonksiyonlara Geçirmek
Fonksiyon Prototipi void modifyDizi( int b[], int Diziboyutu ); Prototipte parametre isimleri görecelidir int b[], int [] şeklinde de yazılabilir int Diziboyutu basitçe int olarak yazılabilir

31 fig06_12.c Program Output Dizi = 0012FF78 &Dizi[0] = 0012FF78

32 fig06_13.c (Part 1 of 3)

33 fig06_13.c (Part 2 of 3)

34 fig06_13.c (Part 3 of 3)

35 Bütün dizinin referansa göre çağrılarak geçmesinin etkileri:
orijinal Dizinin değerleri : Modifiye (ayarlanmış) edilmiş Dizinin değerleri: Dizi elemanlarının değere göre çağrılarak geçmesinin etkileri: a[ 3 ] değeri 6 modifyElement da ki değeri 12 Program Çıktısı

36 fig06_14.c (Part 1 of 2)

37 fig06_14.c (Part 2 of 2) Program Çıktısı
Compiling... FIG06_14.C fig06_14.c(24) : error C2166: l-value specifies const object fig06_14.c(25) : error C2166: l-value specifies const object fig06_14.c(26) : error C2166: l-value specifies const object

38 6.6 Dizileri Sıralama Veri sıralama Bubble sort (Kabarcık sıralama)
Bilgisayar uygulamalarında önemlidir Hemen hemen tüm organizasyonlar bazı verileri sıralamak zorundadırlar. Bubble sort (Kabarcık sıralama) Dizi içerisinde birçok kez yer değiştirme olabilir Eleman çiftleri karşılaştırılır. Eğer bir çift artan sırada ise(yada değerleri eşitse), değişiklik olmaz Eğer azalan sırada ise, elemanlar yer değiştirilir. Tekrarlama Örnek: orijinal: 1. yer değişme: 2. yer değişme: En küçük eleman dizinin en başında yer alır "bubble"

39 fig06_15.c (Part 1 of 3)

40 fig06_15.c (Part 2 of 3)

41 fig06_15.c (Part 3 of 3) Program Çıktısı
Veriler Orijinal sıralamada Veriler artan sıralamada

42 6.7 Örnek: Ortalama, Mod ve Medyanı Diziler Kullanarak Hesaplamak
Orta – “ortalama” Medyan – sıralanmış listenin ortasındaki sayı 1, 2, 3, 4, 5 Medyanı 3 tür Mod – sık kullanılan sayı 1, 1, 1, 2, 3, 3, 4, 5 Mod’u 1 dir

43 fig06_16.c (Part 1 of 8)

44 fig06_16.c (Part 2 of 8)

45 fig06_16.c (Part 3 of 8)

46 fig06_16.c (Part 4 of 8)

47 fig06_16.c (Part 5 of 8)

48 fig06_16.c (Part 6 of 8)

49 fig06_16.c (Part 7 of 8)

50 fig06_16.c (Part 8 of 8)

51 Program Output ******** orta
Orta veri nesnelerinin ortalama değeridir. Ortalama bütün veri nesnelerinin Toplamının veri nesnelerinin sayısına (99) Bölümüdür. Bu veriler için Ortalama:681 / 99 = medyan Sıralanmamış dizi Sıralanmış dizi Program Output

52 Program Output (continued)
Sıralanmış 99 elemanlı dizide Medyan 49. elemandır. Bu çalıştırılmada medyan 7 ******** mod cevap Frekans Histogram * *** **** ***** ******** ********* *********************** *************************** ******************* Mod en sık rastlanan değerdir. Bu calıştırılmada mod 8 dir 27 kez rastlanmıştır Program Output (continued)

53 6.8 Dizilerde Arama: Dizide lineer arama yapmak
Bir key değeri için dizide arama Lineer arama Basit Key değeri ile dizinin her değerini karşılaştırır Küçük ve sıralanmamış diziler için kullanışlı

54 6.8 Dizilerde Arama: Dizide lineer arama yapmak
Binary search Sıralanmış Diziler içindir key ile orta elementi karşılaştırır Eğer eşitse, arama değeri bulunmuştur Eğer key < orta element, dizinin ilk yarısında arar Eğer key > orta element , Son yarısında arama yapar İşlem tekrarlanır Çok hızlı; en fazla n adımda, 2n > eleman sayısı 30 elemanlı Dizide en fazla 5 adım sürer 25 > 30 öyleyse,en fazla 5 adıms

55 fig06_18.c (Part 1 of 3)

56 fig06_18.c (Part 2 of 3)

57 fig06_18.c (Part 3 of 3) Program Output
Arama değeri (key) tam sayısını gir: 36 Değer, eleman 18 de bulundu 37 Değer bulunamadı

58 fig06_19.c (Part 1 of 5)

59 fig06_19.c (Part 2 of 5)

60 fig06_19.c (Part 3 of 5)

61 fig06_19.c (Part 4 of 5)

62 fig06_19.c (Part 5 of 5)

63 Program Output 0 ile 28 arasında bir sayı giriniz: 25 Belirteçler:
Belirteçler: * * 24 26* 28 24* 25 bulunamadı 0 ile 28 arasında bir sayı giriniz: 8 * 8 10* 12 8* 8 dizi elemanı 4 içinde bulundu Program Output

64 Program Output (continued)
0 ile 28 arasında bir sayı giriniz: 6 Belirteçler: * * 6, dizi elemanı 3 içinde bulundu Program Output (continued)

65 Çoklu belirteçli Diziler
6.9 Çok Boyutlu Diziler Çoklu belirteçli Diziler Satırlar ve sütunlarla gösterilir (m x n Dizisi) Matris gibi: önce satır belirtilir, sonra sütun Satır 0 Satır 1 Satır 2 Sütun 0 Sütun 1 Sütun 2 Sütun 3 a[ 0 ][ 0 ] a[ 1 ][ 0 ] a[ 2 ][ 0 ] a[ 0 ][ 1 ] a[ 1 ][ 1 ] a[ 2 ][ 1 ] a[ 0 ][ 2 ] a[ 1 ][ 2 ] a[ 2 ][ 2 ] a[ 0 ][ 3 ] a[ 1 ][ 3 ] a[ 2 ][ 3 ] Satır belirteci Dizi adı Sütün belirteci

66 Elemanların bildirimi
6.9 Çok Boyutlu Diziler İlk değer atama int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; Parantezler içinde satırlara göre guruplandırılarak değer atama Yeterli değer yoksa, belirtilmemiş elemanlar 0 olarak atanır int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } }; Elemanların bildirimi Önce satırı belirle, sonra sütunu printf( "%d", b[ 0 ][ 1 ] ); 1 2 3 4 1 0 3 4

67 fig06_21.c (Part 1 of 2)

68 fig06_21.c (Part 2 of 2) Program Output
Values in Dizi1 by row are: 1 2 3 4 5 6 Values in Dizi2 by row are: 4 5 0 Values in Dizi3 by row are: 1 2 0 4 0 0

69 fig06_22.c (Part 1 of 6)

70 fig06_22.c (Part 2 of 6)

71 fig06_22.c (Part 3 of 6)

72 fig06_22.c (Part 4 of 6)

73 fig06_22.c (Part 5 of 6)

74 fig06_22.c (Part 6 of 6) Dizi: [0] [1] [2] [3]
[0] [1] [2] [3] studentGrades[0] studentGrades[1] studentGrades[2] En düşük not: 68 En yüksek not: 96 Öğrenci 0 için ortalama not 76.00 Öğrenci 1 için ortalama not 87.50 Öğrenci 2 için ortalama not 81.75


"Bölüm 6 - Diziler indeks 6.1 Giriş 6.2 Diziler" indir ppt

Benzer bir sunumlar


Google Reklamları