Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 7 - Göstericiler İndeks 7.1Giriş 7.2Gösterici.

Benzer bir sunumlar


... konulu sunumlar: "© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 7 - Göstericiler İndeks 7.1Giriş 7.2Gösterici."— Sunum transkripti:

1 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 7 - Göstericiler İndeks 7.1Giriş 7.2Gösterici Değişkenleri Bildirmek ve Gösterici Değişkenlerine Atama yapmak 7.3Gösterici Operatörleri 7.4Fonksiyonları Referansa Göre Çağırmak 7.5const Belirtecini Göstericilerle Kullanmak 7.6Referansa Göre Çağırma Kullanan Kabarcık Sırlama 7.7Gösterici İfadeleri ve Gösterici Aritmetiği 7.8Göstericiler ve Diziler Arasındaki İlişki 7.9Gösterici Dizileri 7.10Örnek: Kart Karma ve Dağıtma 7.11Fonksiyonları Gösteren Göstericiler

2 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Amaçlar Bu Bölümde Öğreneceklerimiz: –Göstericileri kullanabilmek. –Referansa göre çağrılan fonksiyonlara argümanları geçirmede göstericileri kullanabilme –Göstericilerin Diziler ve Karakterler (Strings) arasındaki yakın ilişkiyi anlama, –Fonksiyonlarda göstericilerin kullanımını anlama. –Karakter dizilerini tanımlayabilme ve kullanma.

3 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.1 Giriş Göstericiler hakkında yorumlar: –Güçlü, fakat yönetilmesi zor –Öğrenmek zor –Göstericilerle herşey yapılır. –C bilenler ikiye ayrılır: Göstericiyi bilenler ve bilmeyenler Göstericiler bir C klasiğidir. Düşük seviyeli programlamaya en iyi örnektir. Göstericiler C’ve onun uzantısı olan dillere özgü bir konudur.

4 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.2Gösterici Değişkenleri Bildirmek ve Gösterici Değişkenlerine Atama yapmak Gösterici Değişkenleri –İçinde, başka değişkenin bellek adresini tutar. –Normal değişkenler kesin bir değer taşır (direk referans) –Göstericiler kesin bir değişkene sahip(direk referans) bir değişkenin adresini taşır –(Dolaylama)Direkt olmayan – bir gösterici değeri referans etme count 7 7 countPtr

5 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Adres Operatörü: & Değişkenin hangi adreste olacağına biz karar veremeyiz. Ancak alınan bölgenin adresini öğrenebiliriz. int deneme printf(“%x”,&deneme); int i; &i=“240DE4F”;  Yanlış atama

6 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.2Gösterici Değişkenleri Bildirmek ve Gösterici Değişkenlerine Atama yapmak Gösterici tanımlamaları –* gösterici değişkenleri ile kullanılır int *myPtr; –Bir sayısal gösterici olarak tanımlar int (gösterici tipi int *) –Çoklu gösterici tanımlarken her bir değişken tanımından önce bir * kullanılır int *myPtr1, *myPtr2; –Herhangi bir veri tipi için gösterici tanımlanabilir –Göstericilere ilk değer olarak 0,NULL veya bir adres atanabilir 0 veya NULL – gösterici hiçbir şey referans etmez

7 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.3 Gösterici Operatörleri & (adres operatörleri) –Değişkenin adresini geriye döndürür int y = 5; int *yPtr; yPtr = &y; /* yPtr, y değişkeninin adresini tutar */ yPtr, “y” değişkenini gösterir denir yPtr y 5 yptr y 5 Y değişkeninin adresi yptr göstericisinin değeridir

8 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.3 Gösterici Operatörleri * (İçerik/geri referans operatorü) –Operandının (yani göstericinin) gösterdiği nesnenin değerini döndürür. –*yptr geriye y döndürür (çünkü yptr “ y ” yi gösterir ) –* atama içinde kullanılabilir Nesneye benzerini döndürür *yptr = 7; /* changes y to 7 */ –Geri referans edilmiş göstericiler ( *’ın operandı ) bir değer almak zorundadır (sabit değer değil) * ve & birbirinin eşleniğidir. –Art arda uygulandıklarında aynı sonucu verirler.

9 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_04.c A nın adresi aPtr nin değeridir.

10 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output A ‘nın adresi 0012FF7C aPtr değişkeninin değeri 0012FF7C A’nın değeri 7 *aPtr’nin değeri 7 * ve & birbirinin eşleniğidir. &*aPtr = 0012FF7C *&aPtr = 0012FF7C

11 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.3 Gösterici Operatörleri

12 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.7 Gösterici İfadeleri ve Gösterici Aritmetiği Aritmetik operatörler göstericilerde de uygulanabilir –Gösterici artırma/azaltma ( ++ veya -- ) –Göstericiye bir tam sayı değer ekleme( + or +=, - or -= ) –Göstericiler birbirlerinden çıkarılabilirler –Operatörler bir dizi üzerinde uygulanmadıkça anlamsızdır

13 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.7 Gösterici İfadeleri ve Gösterici Aritmetiği 4 byte tamsayılar (ints) kullanan bir makinada 5 elemanlı tamsayı( int) dizisi –vPtr, v[ 0 ] ilk elemanını gösterir 3000 deki konumu (vPtr = 3000) –vPtr += 2; vPtr 3008 olarak değiştirir vPtr, v[ 2 ] ’yi gösterir (2 artırılmış), fakat makina 4 byte tamsayılara sahiptir, öyleyse vPtr 3008 adresini gösterir pointer variable vPtr v[0]v[1]v[2]v[4]v[3] konum

14 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Göstericileri çıkarma –Birinden diğerine elemanların sayısını döndürür. Eğer vPtr2 = &v[ 2 ]; vPtr = &v[ 0 ]; –vPtr2 - vPtr 2 ‘yi üretir Gösterici karşılaştırma ( ) –Dizilerde adres değeri karşılaştırılarak dizide önceki eleman mı yoksa sonraki eleman mı olduğu tespit edilebilir. –Bir gösterici içinde adres barındırıp barındırmadığı karşılaştırılabilir. 7.7 Gösterici İfadeleri ve Gösterici Aritmetiği

15 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.7 Gösterici İfadeleri ve Gösterici Aritmetiği Aynı tip göstericiler birbirlerine atanabilirler –Eğer aynı tip değilse, dönüşüm (casting) yapılmak zorunda –void (tipi void *) gösteren göstericiler istisnadır Genel göstericiler herhangi biri tipi temsil edebilir Dönüşüme ihtiyaç yoktur, bütün göstericiler void göstericiye atanabilir void göstericilerin gösterdiği nesneye erişilemez. void göstericiler üzerinde aritmetik işlemler de yapılamaz. Tek işleri adres bilgisini tutmak ve zamanı geldiğinde bu adres bilgisini diğer uygun göstericilere atamaktır.

16 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.4Göstericilerin Fonksiyonlarla Kullanımı (Fonksiyonları Referansa Göre Çağırmak) Gösterici argümanları ile referansa göre çağırma –& operatörünü kullanarak argümanın adresini geçirme –Hafızadaki gerçek pozisyonu değiştirmenize izin verir –Diziler & operatörü ile geçirilmez çünkü dizinin adresini otomatik olarak geçirir * operatörü –Fonksiyonun içerdiği değişken için takma ad kullanılır void double( int *number ) { *number = 2 * ( *number ); } – * number geçirilmiş değişken için takma ad olarak kullanılır

17 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_06.c

18 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_07.c referansaGoreKup ‘ün içinde, *nPtr kullanıldı (*nPtr bir sayıdır ). Dikkat!! Fonksiyon prototipi bir tam sayı için gösterici aldı

19 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output Sayının esas degeri 5 Sayının yeni degeri 125

20 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output Sayının esas degeri 5 Sayının yeni degeri 125

21 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. int main() { int sayi = 5 ; sayi = degereGoreKup( sayi ); } int degereGoreKup ( int n ) { return n * n * n; } sayi 5 n main, değer fonksiyonunu çağırmadan önce : tanımlanmamış int main() { int sayi = 5; sayi = degereGoreKup ( sayi ); } int degereGoreKup ( int n) { return n * n * n; } sayi 5 n degereGoreKup fonksiyonu çağrıldığında int degereGoreKup ( int n ) { return n * n * n; } int main() { int sayi = 5; sayi = degereGoreKup ( sayi ); } sayi 5 n degereGoreKup fonksiyonunu n parametresinin küpünü aldıktan sonra : 5 Fig. 7.8tipik bir değere göre çağırma işleminin analizi (Part 1 of 2.)

22 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 125 int main() { int sayi = 5 ; sayi = degereGoreKup ( number ); } int degereGoreKup ( int n ) { return n * n * n; } sayi 5 n degerGoreKup fonksiyonundan main fonksiyonuna dönüldükten sonra : tanımlanmamış 125 int main() { int number = 5; sayi = degereGoreKup ( sayi ); } int degereGoreKup ( int n ) { return n * n * n; } sayi 125 n Main sayi değişkenine atanma işlemini bitirdiği zaman : tanımlanmamış Fig. 7.8 tipik bir değere göre çağırma işleminin analizi. (Part 2 of 2.)

23 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fig. 7.9bir gösterici argümanıyla tipik bir referansa göre çağırma işleminin analizi. 125 void referansaGoreKup ( int *nPtr ) { *nPtr = *nPtr * *nPtr * *nPtr; } void referansaGoreKup ( int *nPtr ) { *nPtr = *nPtr * *nPtr * *nPtr; } int main() { int sayi = 5 ; referansaGoreKup ( & sayi ); } void referansaGoreKup ( int *nPtr ) { *nPtr = *nPtr * *nPtr * *nPtr; } int main() { int sayi = 5 ; referansaGoreKup ( & sayi ); } int main() { int sayi = 5; referansaGoreKup ( & sayi ); } sayi 5 nPtr sayi 5 nPtr sayi 125 nPtr referansaGoreKup fonksiyonunu referansa göre çağrılmadan önce : referansaGoreKup fonksiyonu referansa göre çağrıldıktan sonra ve *nPtr nin küpü *nPtr’nin küpü alındıktan sonra tanımlanmamış

24 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.8Göstericiler ve Diziler Arasındaki İlişki Diziler ve Göstericiler arasındaki yakın ilişki –Dizi adı gösterici sabitine benzer –Göstericiler her işlemde kullanılabilir Bir 5 elemanlı b dizisi tanımlansın ve bir göstericiyi bPtr tanımlansın. –Dizinin ilk elemanına eşitleme: bPtr = b; b d izisinin ilk elemanının adresini atama bPtr = &b[ 0 ] b dizisinin ilk elemanının adresini bPtr ye atamanın diğer yolu

25 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.8Göstericiler ve Diziler Arasındaki İlişki –Eleman b[ 3 ] *( bPtr + 3 ) olarak da belirtilebilir –3 (n) göstericinin offset’idir. Bu gösterime gösterici/offset gösterimi denir. bptr[ 3 ] olarak kullanım –Gösterici/belirteç gösterimi denir –bPtr[ 3 ] ile b[ 3 ] aynı şeyi ifade eder Dizinin kendisinde de bir gösterici olarak kullanılabilir ve gösterici aritmetiğinde kullanılabilir *( b + 3 )

26 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_20.c (Part 1 of 2)

27 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_20.c (Part 2 of 2)

28 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output B dizisi aşağıdaki metodla yazılmıştır: Dizi belirteçleri yöntemi b[ 0 ] = 10 b[ 1 ] = 20 b[ 2 ] = 30 b[ 3 ] = 40 Gösterici/offset yöntemi Gösterici dizinin ismidir *( b + 0 ) = 10 *( b + 1 ) = 20 *( b + 2 ) = 30 *( b + 3 ) = 40 Gösterici/belirteç yöntemi bPtr[ 0 ] = 10 bPtr[ 1 ] = 20 bPtr[ 2 ] = 30 bPtr[ 3 ] = 40 Gösterici/offset yöntemi *( bPtr + 0 ) = 10 *( bPtr + 1 ) = 20 *( bPtr + 2 ) = 30 *( bPtr + 3 ) = 40

29 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.5 const Belirtecini Göstericilerle Kullanmak const belirteci –Değişkenler değiştirilemez –Eğer fonksiyonun bir değişkeni değiştirmeye ihtiyacı yok ise const kullanılır –Bir const değişkeni değiştirmeyi denemek bir hata üretir const göstericileri –Bir sabit hafıza pozisyonunu gösterme –Tanımlanırken ilk değer atanmalıdır –int *const myPtr = &x; Tipi int *const – bir tamsayıyı gösteren sabit gösterici –const int *myPtr = &x; sabit bir tamsayıyı gösteren gösterici –const int *const Ptr = &x; Sabit bir tamsayıyı sabit gösterici x değiştirilebilir, fakat *Ptr değil

30 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_10.c (Part 1 of 2)

31 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_10.c (Part 2 of 2) Program Output Çevrilmeden önceki string : karakter ve $32.98 Çevrildikten sonraki string : karakter ve $32.98

32 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_11.c (Part 1 of 2)

33 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_11.c (Part 2 of 2) Program Output string: String karakterini yaz

34 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_12.c

35 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output Compiling... FIG07_12.c d:\books\2003\chtp4\examples\ch07\fig07_12.c(22) : error C2166: l-value specifies const object Error executing cl.exe. FIG07_12.exe - 1 error(s), 0 warning(s)

36 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_13.c Program Output Compiling... FIG07_13.c D:\books\2003\chtp4\Examples\ch07\FIG07_13.c(15) : error C2166: l-value specifies­ const object Error executing cl.exe. FIG07_13.exe - 1 error(s), 0 warning(s)

37 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_14.c

38 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output Compiling... FIG07_14.c D:\books\2003\chtp4\Examples\ch07\FIG07_14.c(17) : error C2166: l-value specifies­ const object D:\books\2003\chtp4\Examples\ch07\FIG07_14.c(18) : error C2166: l-value specifies­ const object Error executing cl.exe. FIG07_12.exe - 2 error(s), 0 warning(s)

39 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_21.c (Part 1 of 2)

40 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_21.c (Part 2 of 2) Program Output string1 = Merhaba string3 = Güle güle

41 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.6 Referansa Göre Çağırma Kullanan Kabarcık Sıralama Gösterici kullanarak kabarcıksıralama’yı uygulama –İki elemanı yer değiştir –Yer değiştirme fonksiyonu dizi elemanlarının adresini içermek zorundadır (& kullanarak) Dizi elemanları varsayılan olarak değere göre çağrılmayla geçirilir –Göstericileri ve * operatörü kullanarak dizi elemanlarının yerlerini değiştirme Psuedocode (Sahte kodlar) diziye ilk değer atama veri orijinal sırasında yazdır Kabarcık sıralama fonksiyonunu çağır sıralanmış diziyi yazdır Kabarcık sıralamayı tanımla

42 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.6 Referansa Göre Çağırma Kullanan Kabarcık Sıralama sizeof –Operandın boyutunu byte cinsinden geriye döndürür –Diziler için: 1 elemanın boyutu * elemanların sayısı –Eğer sizeof( int ) eşit 4 byte ise, int myArray[ 10 ]; printf( "%d", sizeof( myArray ) ); 40 yazılacak sizeof aşağıdakiler ile birlikte kullanılabilir –Değişken adları –Tip adı –Sabit değişkenler

43 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_15.c (Part 1 of 3)

44 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_15.c (Part 2 of 3)

45 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_15.c (Part 3 of 3) Program Output Veriler orijinal sırada Veriler artan sırada

46 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_16.c Program Output Dizinin byte büyüklüğü 80 buyukluguBul ile döndürülen byte sayısı 4

47 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_17.c (Part 1 of 2)

48 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_17.c (Part 2 of 2) Program Output sizeof c = 1 sizeof(char) = 1 sizeof s = 2 sizeof(short) = 2 sizeof i = 4 sizeof(int) = 4 sizeof l = 4 sizeof(long) = 4 sizeof f = 4 sizeof(float) = 4 sizeof d = 8 sizeof(double) = 8 sizeof ld = 8 sizeof(long double) = 8 sizeof dizi = 80 sizeof ptr = 4

49 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.9Gösterici Dizileri Diziler göstericiler içerebilir. Örnek: karakterler dizisi char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" }; –Stringler ilk karakteri gösteren göstericilerdir –char * –takım dizisinin her elemanının char gösteren tipte bir gösterici olduğunu belirtir –Gerçekte stringler takım dizisinde saklanmazlar, sadece stringlerin göstericileri saklanır –Takim dizisi sabit bir boyuta sahiptir,fakat stringler farklı olabilir takim [3] takim [2] takim [1] takim[0]’H’’e’’a’’r’’t’’s’ ’\0’ ’D’’i’’a’’m’’o’’n’’d’’s’ ’\0’ ’C’’l’’u’’b’’s’ ’\0’ ’S’’p’’a’’d’’e’’s’ ’\0’

50 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Örnek: Kart Karma ve Dağıtma Kart karma ve dağıtma programı –Göstericilerin dizisini karakterleri göstermede kullanma –İki boyutlu takım dizisi kullan (satır, sütun) –1-52 arasındaki sayılar diziye gönderilir Bu noktada deste tamamen karılmış olur deste[ 2 ][ 12 ] sinek papazı gösterir Kupa Karo Sinek Maça AsikiüçDörtbeşaltıyedisekizdokuzonvalekızpapaz sinek papaz

51 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Örnek: Kart Karma ve Dağıtma Pseudocode (Sahte kodlar) –İlk olarak: 52 kartı kar ve dağıt –İlk iyileştirme: takım dizisine ilk değer atama Taraf dizisine değerler ata Deste dizisine değerler ata Desteyi kar 52 kartı dağıt

52 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Örnek: Kart Karma ve Dağıtma –İkinci iyileştirme desteyi karma şu şekilde genişletilebilir 52 kartın her biri için (for) Destenin rasgele seçilmiş boş bir alanına kart sayısını yerleştir 52 kartı dağıtma şu şekilde genişletilebilir 52 kartın her biri için (for) Deste dizisinde kart sayısını bul ve kartın hangi desteye ait olduğunu ve değerini yazdır

53 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Örnek: Kart Karma ve Dağıtma –Üçüncü iyileştirme desteyi karma şu şekilde genişletilebilir Destedeki alanı rasgele seç Destedeki bu alan daha önceden seçildiği sürece (While) Destedeki alanı rasgele seçmeye devam et Destede seçilen alana kart sayısını yerleştir 52 kartı dağıtma şu şekilde genişletilebilir Deste dizisindeki her alan için (For) Eğer alan kart sayısı içeriyorsa (if) Kartın hangi desteye ait olduğunu ve değerini yazdır

54 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_24.c (Part 1 of 4)

55 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_24.c (Part 2 of 4)

56 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_24.c (Part 3 of 4)

57 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_24.c (Part 4 of 4)

58 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output Karo Sekiz Kupa AS Sinek Sekiz Sinek Beş Kupa Yedi Karo iki Sienk As Karo on Maça iki Karo altı Maça yedi Sinek iki Sinek vale Maça on Kupa papaz Karo Vale Kupa üç Karo üç Sinek üç Sinek dokuz Kupa on Kupa iki Sinek on Karo yedi Sinek altı Maça kız Kupa altı Maça üç Karo dokuz Karo as Maça vale Sinek beş Karo papaz Sinek yedi Maça dokuz Kupa dört Maça altı Maça sekiz Karo kız Karo beş Maça as Kupa dokuz Sinek papaz Kupa beş Maça papaz Karo dört Kupa kız Kupa sekiz Maça dört Kupa vale Sinek dört Sinek kız

59 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 7.11Fonksiyonları Gösteren Göstericiler Fonksiyonları gösteren göstericiler –Fonksiyonların adreslerini tutarlar –Dizi adının dizinin ilk elemanın adresi olmasına benzer –Fonksiyon ismi, fonksiyonun görevini yapan kodun hafızadaki başlangıç adresidir Fonksiyon göstericileri –Fonksiyonlara geçirilebilir –Dizilerde saklanabilir –Başka fonksiyon göstericilerine atanabilir

60 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Fonksiyonları Gösteren Göstericiler Örnek: kabarcık sıralama –Kabarcık fonksiyonu bir fonksiyon göstericisi alır Kabarcık bu yardım fonksiyonu cağırır azalan veya artan sıralamayı belirler –Fonksiyon göstericisi için kabarcıksıralama ’daki argüman: int ( *karsilastir)( int, int ) tells bubblesort to expect a pointer to a function that takes two ints and returns an int Kabarcık fonksiyonuna iki tamsayı parametresi alan ve bir tamsayı sonucunu döndüren bir fonksiyonu gösteren bir gösterici alacağını söyler –Eğer parantezleri dahil etmeseydik: int * karsilastir( int, int ) İki tamsayıyı alan ve bir tamsayıyı gösteren bir gösterici döndüren bir fonksiyon bildirir

61 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_26.c (Part 1 of 4)

62 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_26.c (Part 2 of 4)

63 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_26.c (Part 3 of 4)

64 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig07_26.c (Part 4 of 4)

65 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output Artan sıralama için 1 girin, Azalan sıralama için 2 girin: 1 Veriler orijinal sırasında Veriler artan sırada Artan sıralama için 1 girin, Azalan sıralama için 2 girin:2 Veriler orijinal sırasında Veriler azalan sırada


"© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 7 - Göstericiler İndeks 7.1Giriş 7.2Gösterici." indir ppt

Benzer bir sunumlar


Google Reklamları