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

Slides:



Advertisements
Benzer bir sunumlar
el ma 1Erdoğan ÖZTÜRK ma ma 2 Em re 3 E ren 4.
Advertisements

Yrd. Doç. Dr. Mustafa Akkol
Dizi Kullanan Örnekler
Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
Değişkenler ve bellek Değişkenler
DOĞAL SAYILAR.
T.C. İNÖNÜ ÜNİVERSİTESİ Arapgir Meslek YÜKSEKOKULU
Atlayarak Sayalım Birer sayalım
ÇÖZÜM SÜRECİNE TOPLUMSAL BAKIŞ
BEIER CÜMLE TAMAMLAMA TESTİ
Diferansiyel Denklemler
ÖRNEKLEME DAĞILIŞLARI VE TAHMİNLEYİCİLERİN ÖZELLİKLERİ
ALIŞVERİŞ ALIŞKANLIKLARI ARAŞTIRMASI ÖZET SONUÇLARI Haziran 2001.
KIR ÇİÇEKLERİM’ E RakamlarImIz Akhisar Koleji 1/A.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
HOŞGELDİNİZ 2005 Yılı Gelir Vergisi Vergi Rekortmenleri
HİSTOGRAM OLUŞTURMA VE YORUMLAMA
Bölüm 10 Yapılar ve Birleşimler
Soruya geri dön
Prof. Dr. Leyla Küçükahmet
CAN Özel Güvenlik Eğt. Hizmetleri canozelguvenlik.com.tr.
GÖK-AY Özel Güvenlik Eğt. Hizmetleri
“Dünyada ve Türkiye’de Pamuk Piyasaları ile İlgili Gelişmeler”
1/20 PROBLEMLER A B C D Bir fabrikada kadın ve çocuk toplam 122 işçi çalışmaktadır. Bu fabrikada kadın işçilerin sayısı, çocuk işçilerin sayısının 4 katından.
HAZIRLAYAN:SAVAŞ TURAN AKKOYUNLU İLKÖĞRETİM OKULU 2/D SINIFI
1/25 Dört İşlem Problemleri A B C D Sınıfımızda toplam 49 öğrenci okuyor. Erkek öğrencilerin sayısı, kız öğrencilerin sayısından 3 kişi azdır.
Dördüncü Grup İkinci Harf B sesi sunumu Mürşit BEKTAŞ.
ÖRNEKLEM VE ÖRNEKLEME Dr.A.Tevfik SÜNTER.
USLE R FAKTÖRÜ DR. GÜNAY ERPUL.
BESLENME ANEMİLERİ VE KORUNMA
BPR152 ALGORİTMA VE PROGRAMLAMA - II
CBÜ HAFSA SULTAN HASTANESİ ENFEKSİYON KONTROL KOMİTESİ 2011 OCAK-ARALIK 2012 OCAK- MART VERİLERİ.
Gün Kitabın Adı ve Yazarı Okuduğu sayfa sayısı
TÜRKİYE KAMU HASTANELERİ KURUMU
İmalat Yöntemleri Teyfik Demir
MATRİSLER ve DETERMİNANTLAR
ONDALIK KESİRLER Şuayip POLAT MATEMATİK 4 5. ÜNİTE
İKİ BASAMAKLI DOĞAL SAYILARIN
PÇAĞEXER / SAYILAR Ali İhsan TARI İnş. Yük. Müh. F5 tuşu slaytları çalıştırmaktadır.
19 Ekim 2006 GfK TürkiyeCustom ResearchGrowth from Knowledge 1 TUHID - İDA İletişim Hizmetleri Algılama Araştırması Eylül 2006.
Görsel C# Programlama Güz 2009 (6. Hafta).
RUHU ŞAD OLSUN.
4 X x X X X
Mukavemet II Strength of Materials II
Chapter 6: Using Arrays.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Gelişmiş Envanter Uygulaması.
Yard. Doç. Dr. Mustafa Akkol
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyonlar –Programı modüler hale getirir –Yerel değişkenler,
MEMNUNİYET ANKETİ ANALİZİ
Bir bölme işleminde bölen 8,Bölüm 7, kalan 1ise bölünen Kaçtır?
Bölüm 7 - Göstericiler İndeks 7.1 Giriş
ANA BABA TUTUMU ENVANTERİ
1 DEĞİŞMEYİN !!!
Test : 2 Konu: Çarpanlar ve Katlar
Diferansiyel Denklemler
NESNEYE YÖNELİK PROGRAMLAMA
VERİ İŞLEME VERİ İŞLEME-4.
C PROGRAMLAMA DİZİLER (ARRAYS).
Bölüm 4 – C’de Program Kontrolü
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bölüm 6 - Diziler indeks 6.1Giriş 6.2Diziler 6.3Dizilerin.
Çocuklar,sayılar arasındaki İlişkiyi fark ettiniz mi?
JAVA’DA DİZİLER Dr.Galip AYDIN.
SAYILAR NUMBERS. SAYILAR 77 55 66 99 11 33 88.
Bölüm 8 - Karakterler ve Dizgiler
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Veri.
ÇOK DEĞİŞKENLİ FONKSİYONLARDA
Proje Konuları.
SAYI TABLOSU 100 İçinde Doğal Sayılar Başla ? Boş (?)
PÇAĞEXER / SAYILAR Ali İhsan TARI İnş. Yük. Müh. F5 tuşu slaytları çalıştırmaktadır.
Diferansiyel Denklemler
Sunum transkripti:

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

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

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ı.. 12. Bölümde göreceğiz..

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 ]

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[ 5 - 2 ] == c[ 3 ] == c[ x ]

6.2 Diziler

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 ];

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

fig06_03.c

Element Value 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 Program Çıktısı

fig06_04.c

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

fig06_05.c

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

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

fig06_07.c (Part 1 of 2)

fig06_07.c (Part 2 of 2) Program Output Rating Frequency 1 2 2 2 3 2 4 2 5 5 6 11 7 5 8 7 9 1 10 3

fig06_08.c (Part 1 of 2)

fig06_08.c (Part 2 of 2) Program Çıktısı Element Value Histogram 0 19 ******************* 1 3 *** 2 15 *************** 3 7 ******* 4 11 *********** 5 9 ********* 6 13 ************* 7 5 ***** 8 17 ***************** 9 1 *

fig06_09.c (Part 1 of 2)

fig06_09.c (Part 2 of 2) Program Output Face Frequency 1 1029 2 951 3 987 4 1033 5 1010 6 990

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.

fig06_10.c (Part 1 of 2)

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

fig06_11.c (Part 1 of 3)

fig06_11.c (Part 2 of 3)

fig06_11.c (Part 3 of 3)

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

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 ])

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

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

fig06_13.c (Part 1 of 3)

fig06_13.c (Part 2 of 3)

fig06_13.c (Part 3 of 3)

Bütün dizinin referansa göre çağrılarak geçmesinin etkileri:   orijinal Dizinin değerleri : 0 1 2 3 4 Modifiye (ayarlanmış) edilmiş Dizinin değerleri: 0 2 4 6 8 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ı

fig06_14.c (Part 1 of 2)

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

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: 3 4 2 6 7 1. yer değişme: 3 2 4 6 7 2. yer değişme: 2 3 4 6 7 En küçük eleman dizinin en başında yer alır "bubble"

fig06_15.c (Part 1 of 3)

fig06_15.c (Part 2 of 3)

fig06_15.c (Part 3 of 3) Program Çıktısı Veriler Orijinal sıralamada 2 6 4 8 10 12 89 68 45 37 Veriler artan sıralamada 2 4 6 8 10 12 37 45 68 89

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

fig06_16.c (Part 1 of 8)

fig06_16.c (Part 2 of 8)

fig06_16.c (Part 3 of 8)

fig06_16.c (Part 4 of 8)

fig06_16.c (Part 5 of 8)

fig06_16.c (Part 6 of 8)

fig06_16.c (Part 7 of 8)

fig06_16.c (Part 8 of 8)

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 = 6.8788   medyan Sıralanmamış dizi 6 7 8 9 8 7 8 9 8 9 7 8 9 5 9 8 7 8 7 8 6 7 8 9 3 9 8 7 8 7 7 8 9 8 9 8 9 7 8 9 6 7 8 7 8 7 9 8 9 2 7 8 9 8 9 8 9 7 5 3 5 6 7 2 5 3 9 4 6 4 7 8 9 6 8 7 8 9 7 8 7 4 4 2 5 3 8 7 5 6 4 5 6 1 6 5 7 8 7 Sıralanmış dizi 1 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 Program Output

Program Output (continued) Sıralanmış 99 elemanlı dizide Medyan 49. elemandır. Bu çalıştırılmada medyan 7 ******** mod cevap Frekans Histogram   1 1 2 2 5 0 5 0 5 1 1 * 2 3 *** 3 4 **** 4 5 ***** 5 8 ******** 6 9 ********* 7 23 *********************** 8 27 *************************** 9 19 ******************* Mod en sık rastlanan değerdir. Bu calıştırılmada mod 8 dir 27 kez rastlanmıştır Program Output (continued)

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ı

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

fig06_18.c (Part 1 of 3)

fig06_18.c (Part 2 of 3)

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ı

fig06_19.c (Part 1 of 5)

fig06_19.c (Part 2 of 5)

fig06_19.c (Part 3 of 5)

fig06_19.c (Part 4 of 5)

fig06_19.c (Part 5 of 5)

Program Output 0 ile 28 arasında bir sayı giriniz: 25 Belirteçler:   Belirteçler: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ------------------------------------------------------------ 0 2 4 6 8 10 12 14* 16 18 20 22 24 26 28 16 18 20 22* 24 26 28 24 26* 28 24* 25 bulunamadı 0 ile 28 arasında bir sayı giriniz: 8 0 2 4 6* 8 10 12 8 10* 12 8* 8 dizi elemanı 4 içinde bulundu Program Output

Program Output (continued) 0 ile 28 arasında bir sayı giriniz: 6   Belirteçler: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ------------------------------------------------------------ 0 2 4 6 8 10 12 14* 16 18 20 22 24 26 28 0 2 4 6* 8 10 12 6, dizi elemanı 3 içinde bulundu Program Output (continued)

Ç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

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  

fig06_21.c (Part 1 of 2)

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

fig06_22.c (Part 1 of 6)

fig06_22.c (Part 2 of 6)

fig06_22.c (Part 3 of 6)

fig06_22.c (Part 4 of 6)

fig06_22.c (Part 5 of 6)

fig06_22.c (Part 6 of 6) Dizi: [0] [1] [2] [3] [0] [1] [2] [3] studentGrades[0] 77 68 86 73 studentGrades[1] 96 87 89 78 studentGrades[2] 70 90 86 81   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