DİZİLER Arrays.

Slides:



Advertisements
Benzer bir sunumlar
Diziler.
Advertisements

Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Göstericiler (Pointers)
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.
Diziler.
MATLAB’de Diziler; Vektörler ve MAtrisler
Selçuk Üniversitesi’nin Bilişime Gönül Veren Gençleri
Diziler Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır.
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
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
7. DİZİLER Diziler birçok değişkene aynı adla ulaşmayı sağlayan bir grup veri yapısıdır. Bir dizi aynı tipte ve aynı adı paylaşan bir grup değişken demektir.
Nesneye Yönelik Programlama
Dizi (ARRAY) Diziler grup halindeki değişkenler olarak tanımlanabilir. Dizi içersinde yüzlerce değişken olabilir. Dizi elemanları index adı verilen sıra.
Diziler.
DİZİLER.
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
Nesneye Yönelik Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Temel Veri Türleri ve Operatörler
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Diziler Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır.
Programlamaya Giriş ve Algoritmalar
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
NESNEYE YÖNELİK PROGRAMLAMA
C PROGRAMLAMA DİZİLER (ARRAYS).
Diziler (Arrays).
JAVA’DA DİZİLER Dr.Galip AYDIN.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bölüm 3: Diziler BTEP 102 – Veri Yapıları ve Programlama
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
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.
Bil 102 Bölüm 6 Diziler.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
İlk Değer Alma Sırası İlk Değer Alma Sırası Nesnelere ait global alanlara başlangıç değerleri hemen verilir; üstelik, yapılandırıcılardan (constructor)
Veri yapıları Hafta3 Dizi Yapıları.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Hashing (Çırpılama).
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
Temel Veri Yapıları Veri Yapıları 1. Bölüm 1. 2 Programlarımızda tanımladığımız nesneler ya tek parçadan ya da birden fazla parçadan oluşurlar. Tek parçadan.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı 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İLGİSAYAR PROGRAMLAMA DERSİ 6. DERS NOTU Konu: Matlab’ de Diziler ve Matrisler.
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Sharp 9. hafta - dIZILER.
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ı.
tanımları yapabilmeniz gerekmektedir .
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
C++ Programming:. Program Design Including
YAPISAL PROGRAMLAMA Hafta-7
NİŞANTAŞI ÜNİVERSİTESİ
7. DİZİLER Bir dizi, aynı tipteki elemanların yan yana sıralanışı ile elde edilen bir bilgi kümesidir. Matematikte kullanılan doğal sayılar (1,2,3,..),
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
DİZİLER.
NİŞANTAŞI ÜNİVERSİTESİ
Diziler(Arrays).
Sunum transkripti:

DİZİLER Arrays

Bir dizinin bütün elemanları bellekte ardışık olarak saklanır. Giriş Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır. Bir dizinin bütün elemanları bellekte ardışık olarak saklanır. Diziler bir veya daha çok boyutlu olabilirler. Hasan TINMAZ

Tek boyutlu dizilerin tanımlanması aşağıdaki biçimde olur. Buradaki eleman sayısı değişken olamaz. Fakat önceden tanımlanmış bir sembolik sabit olabilir. Genel kullanımdaki köşeli parantez isteğe bağlı anlamında değildir. Köşeli parantez sembolü dizi tanımlamalarında mutlaka yazılmalıdır. GK: dizinintürü dizininadı [elemansayısı] ; Hasan TINMAZ

/* 6 elemanlı, her elemanı int olan dizi*/ char d2[15]; Örnek int a[6]; /* 6 elemanlı, her elemanı int olan dizi*/ char d2[15]; /*15 elemanlı, her elemanı char olan dizi*/ float x[10]; /*10 elemanlı, her elemanı float olan dizi*/ double k[10]; /*10 elemanlı, her elemanı double olan dizi*/ Hasan TINMAZ

Bu alanın başlangıç adresini, dizi adına aktarır. Açıklama Derleyici ilk örnekteki gibi bir komutla karşılaştığında, 6 adet sayının saklanacağı bellek alanını ayırır. Bir tamsayı 2 byte (DOS'da) uzunluğunda olduğuna göre, dizinin bellekte kaplayacağı alan 2*6=12 byte olacaktır. Bu alanın başlangıç adresini, dizi adına aktarır. Hasan TINMAZ

İndis değerleri mutlaka tamsayı olmalıdır. Açıklama Dizi içerisindeki her bir elemana, dizi isminden sonra, yazılan pozisyon numarası; yani indis değeri (subscript) ile ulaşılır. İndis değerleri mutlaka tamsayı olmalıdır. C dilinde bütün dizilerin indis numarası 0'dan başlar. Dolayısı ile dizinin en büyük indis numarası eleman sayısından bir eksiktir. Hasan TINMAZ

Tek Boyutlu Dizi Hasan TINMAZ

Tek boyutlu dizilere değer atanması Dizinin elemanlarına ulaşmak için dizinin ismi ve köşeli parantez içerisinde indis numarasını yazmak yeterlidir. a[0]=-12; /*dizinin 0 no'lu elemanına -12 değerini ata*/ a[2]=a[4]+3; /*dizinin 2 nolu elemanına 4 nolu elemanının 3 fazlasını ata .*/ for(i=0;i<6;i++) a[i] =0; /*0'dan 6'ya kadar */ /* dizinin elemanlarına 0 değerini ata .*/ Hasan TINMAZ

Dolayısı ile bu iki ifade eşit değildir. Dikkat a[i] +1 ile a[i+1] İlk gösterim dizinin i no'lu indisindeki elemanın bir fazlası anlamına gelir, ikinci gösterim ise dizinin i'nin bir fazlası indisindeki elemanı anlamına gelir. Dolayısı ile bu iki ifade eşit değildir. Hasan TINMAZ

Tek boyutlu dizilere ilk değer atanması (initialize) Tanımlanan dizilere ilk değer ataması ise aşağıdaki şekilde yapılır. int a[5]={4,5,3,1,8}; İlk değer atama işleminde küme parantezi kullanılır. Küme işaretinden sonra ( ; ) kullanılmasına dikkat ediniz. Böyle bir ilk değer atamasından sonra dizinin elemanları aşağıdaki gibi yerleşir. Hasan TINMAZ

Tek boyutlu diziye ilk değer atamasından sonra elemanların yerleşimi Hasan TINMAZ

Ayrıca… Küme işaretleri içerisine dizinin eleman sayısından daha fazla eleman yazıldığında bir yazım hatası ortaya çıkar. Eleman sayısından daha az eleman yazıldığında ise, diğer elemanlar otomatik olarak sıfır değerini alır. İlk değer ataması yapılmayan dizilerin elemanları hafızadaki rasgele değerlerden oluşur. Hasan TINMAZ

Ayrıca İlk değer ataması yapıldığında eleman sayısını yazma zorunluluğu yoktur. Ne kadar eleman yazılmışsa, eleman sayısı o kadar olur. Hasan TINMAZ

ÖRNEK: Klavyeden girilen 5 adet tamsayıyı, giriş sırasının tersinden ekrana yazan C programını kodlayınız. Bu problemde dizi kullanılmayacak olsaydı, 5 ayrı değişkene ihtiyaç duyulacaktı. Çünkü girilen her bir değere klavyeden girme işlemi bittikten sonra, tekrar ulaşmak gerekecektir. Hasan TINMAZ

Kod: Hasan TINMAZ

Bu problem çözülürken öncelikle ortalamanın bulunması gereklidir. ÖRNEK: Klavyeden girilen 10 adet tamsayı sınav notuna göre, ortalamanın üstünde olanları ekrana yazan C programı… Bu problem çözülürken öncelikle ortalamanın bulunması gereklidir. Ortalamanın bulunabilmesi için bütün notların toplamı alınacak ve not adedine bölünecektir. Bu noktadan sonra daha önceden girilmiş notların her biri sıra ile ortalamayla karşılaştırılacak büyük olanlar ekrana yazdırılacaktır. Çözümde dizi kullanılmayacak olsaydı, 20 ayrı değişkene ihtiyaç duyulacaktı. Çünkü, girilen her bir değere klavyeden girme işlemi bittikten sonra tekrar ulaşmak gerekecektir. Hasan TINMAZ

Örnek Çalışma: Hasan TINMAZ

Kod: Hasan TINMAZ

Sıralama (Sorting)

Giriş Dizi elemanlarını sıralama ihtiyacı doğduğunda kullanılabilecek pek çok algoritma vardır. Bunlar kabarcık sıralama (bubble şort), seçme sıralama (selection şort), Shell şort, çabuk sıralama (quick sort) vs. olabilir. Bu derste, sıralama yöntemi olarak en çok kullanılan ve en basit sıralama algoritmalarından biri olan, kabarcık sıralama (bubble sort) algoritması kullanılacaktır. Hasan TINMAZ

Büyük ya da küçük sorgulaması yapılır. Bubble Sort Bu algoritmada her bir eleman kendisinden sonra gelen eleman ile karşılaştırılır. Büyük ya da küçük sorgulaması yapılır. Büyük sorgulaması yapıldığında dizi küçükten büyüğe, küçük sorgulaması yapıldığında dizi büyükten küçüğe sıralanır. Eğer şarta uyuyor ise elemanların yerleri değiştirilir (swap). Bu işlem dizinin eleman sayısınca tekrar ettirilir. Hasan TINMAZ

Sıralanması istenilen dizi 5 elemanlı olursa geçiş sayısı 5 dir. Bubble Sort Aşağıda örnek olarak seçilen bir dizi üzerinde algoritmanın çalışma şekli verilmiştir. Sıralanması istenilen dizi 5 elemanlı olursa geçiş sayısı 5 dir. Öncelikle büyük ya da küçük karşılaştırmalarından hangisinin uygulanacağına karar verilmesi gerekir. Aşağıdaki örnekte büyük karşılaştırması yapılmıştır. Hasan TINMAZ

Hasan TINMAZ

Örnek olarak a ve b adında iki adet değişken olsun. … Algoritmanın uygulamasını yapmadan önce, elemanların yer değiştirme işleminin nasıl yapıldığının bilinmesi gerekir . Örnek olarak a ve b adında iki adet değişken olsun. Yer değiştirme işlemi (swap) a değişkenin içerisindeki değer b içerisine , b değişkenin içerisindeki değerde a değişkenin içerisine aktarılacak demektir. Hasan TINMAZ

Bu işlemden sonra a değişkeni içerisinde de 7 değeri vardır. Bir programlama dilini yeni öğrenen öğrenenlerin çoğunluğu aşağıdaki gibi bir kod yazarlar. a = b; b = a; Varsayalım ki a değişkeni içerisinde 5, b değişkeni içerisinde de 7 değeri olsun. Yukarıdaki kod sadece b değişkeni içerisindeki 7 değerini a değişkeni içerisine aktarmaktadır. Bu işlemden sonra a değişkeni içerisinde de 7 değeri vardır. Sonra tekrar 7 değerini b değişkeni içerisine aktarmaktadır. Sonuçta iki değişkende aynı değeri saklarlar. Sağlıklı bir yer değiştirme için üçüncü bir geçici değişkene ihtiyaç vardır. Hasan TINMAZ

Yer değiştirme işlemi Hasan TINMAZ

Kod aşağıdaki gibi yazılabilir: yedek = a; /* 1 nolu gösterim*/ Burada… a değişkeni içerisindeki değer yedek içerisine alındıktan sonra b değişkeni içerisindeki değer a değişkeni içerisine aktarılır. Son olarak da yedek içerisindeki değerde b değişkeni içerisine aktarılır. Kod aşağıdaki gibi yazılabilir: yedek = a; /* 1 nolu gösterim*/ a = b; /* 2 nolu gösterim*/ b = yedek; /* 3 nolu gösterim*/ Hasan TINMAZ

Kabarcık sıralama algoritmasının uygulanması Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır: Hasan TINMAZ

Arama (Searching)

Giriş Dizi içerisinde belli bir elemanın var olup olmadığını belirleme işlemine arama adı verilir. Bu işlem içinde pek çok algoritma üretilmiş olup, bunlardan en basit ve insanların günlük hayatındaki arama yöntemlerine en çok benzeyeni doğrusal (linear) aramadır. Bu yöntemde aranacak olan eleman, dizinin ilk elemanından başlayarak bütün elemanları ile kontrol ettirilir. Aynı olan değere rastlandığında, dizi içerisinde elemanın var olduğu bulunmuş olur. Hasan TINMAZ

Arama İşlemi Hasan TINMAZ

Kod üzerinde algoritma yana yatık olarak yazılmıştır. Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır. Hasan TINMAZ

Dizilerin Fonksiyonlara Parametre Olarak Gönderilmesi (Passing Array to Function)

Bir dizi, fonksiyona parametre olarak gönderilmek istendiğinde, fonksiyon çağrılırken dizinin sadece adı yazılır. Fonksiyonun başlığında diziyi karşılayan tanımlamada ise köşeli parantezler kullanılır. Bu köşeli parantezler içerisine, dizi tanımlamada olduğu gibi eleman sayısı yazılmaz. Yazılırsa, derleyici sadece bu değerin 0'dan büyük olup olmadığını kontrol eder. Negatifse, derleyici hata verir. Pozitifse, bu değer derleyici tarafından göz ardı edilir. Hasan TINMAZ

ÖRNEK: Kendisine gönderilen bir diziyi ekrana yazdıran fonksiyonu main() fonksiyonu ile beraber yazınız Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır. Dizi üzerinde yapılacak işlemlerde, dizinin eleman sayısı önemli olduğundan bu değerin harici bir parametre olarak gönderilmesi uygun olacaktır. Hasan TINMAZ

ÖRNEK: Kendisine gönderilen tamsayı bir dizi, eleman sayısı ve aranacak değere göre bu değerin dizi içerisinde kaç tane olduğunu geri döndüren fonksiyonu , ilk değerleri atanmış bir dizi üzerinde deneyiniz. Hasan TINMAZ

Dizi içinde aranan değerden kaç tane olduğunu bulan fonksiyon Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır. ÇIKTI: 13 den içerisinde 3 tanedir. Diziler fonksiyonlara parametre olarak gönderilirken, bağlantılı çağırma (call by reference) yöntemi ile gönderilirler. Hatırlanacağı üzere, bu yöntemde; değerlerin kopyalandığı değişkenlerin değiştirilmesi orijinal değerleri etkiler. Hasan TINMAZ

Tek boyutlu dizinin fonksiyona parametre olarak gönderilmesi: Hasan TINMAZ

Program çalıştırıldığında ekran çıktıları aşağıdaki gibi olacaktır. Hasan TINMAZ

(Multiply Subscripted Arrays) Çok Boyutlu Diziler (Multiply Subscripted Arrays)

Giriş Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir (double subscripted arrays). Bu diziler sayesinde değerler, bir tablodaki veriler gibi düşünülebilirler. (Hafızada yine ardışık olarak tutulurlar) Bu tür dizilerde her bir elemana ulaşmak için elemanın satır indisi (row) ve sütun indisi (column) kullanılır. Hasan TINMAZ

C dilindeki dizilerin boyutları ikiden de fazla olabilir. … C dilindeki dizilerin boyutları ikiden de fazla olabilir. Bir sınır olmamakla beraber en az 12 boyuta kadar destekler. Tanımlama: dizinintürü dizininadı [satır sayısı][sütun sayısı]; Hasan TINMAZ

/* 3 satırlı 4 sütunlu, int türünde değerler alabilen bir dizi*/ ÖRNEK: int a[3][4]; /* 3 satırlı 4 sütunlu, int türünde değerler alabilen bir dizi*/ float b[5][3]; /*5 satirli 3 sütunlu float türünde değerlerler alabilen bir dizi*/ Hasan TINMAZ

Bu dizi 3x4'lük bir tablo gibi düşünülebilir. … Örnekte verilen ilk dizi tanımlamasındaki birinci köşeli parantez içerisinde verilen değer satır sayısı, ikinci köşeli parantez içerisinde verilen değerde sütun sayısıdır. Bu dizi 3x4'lük bir tablo gibi düşünülebilir. Ancak hafızada tutulma şeklinin ardışık olduğu unutulmamalıdır. Hasan TINMAZ

Çift boyutlu dizilere ilk değer atanması (initialize) Tıpkı tek boyutlu dizilerde olduğu gibi ilk değer ataması aşağıdaki şekilde yapılır. int a[3][4] = {{4,5,3,1},{0,4,3,1},{1,9,7,2}}; İçteki küme işaretlerinin her biri satırları temsil eder. Daha anlaşılır olması için aşağıdaki gibi gösterilebilir: Hasan TINMAZ

ÖRNEK: 3x4'lük çift boyutlu bir dizi içerisine klavyeden girilen değerleri, tablo halinde ekrana yazdıran programı yazınız. Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır. Hasan TINMAZ

ÖRNEK: Elemanları klavyeden girilen 4x6'lık bir dizinin sütun toplamlarını ekrana yazan programı yazınız. Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır. Hasan TINMAZ

Çok boyutlu dizilerin fonksiyonlara parametre olarak gönderilmesi Çok boyutlu bir dizi, fonksiyona parametre olarak gönderilecekse, tek boyutlularda olduğu gibi sadece adı yazılır. Gönderilen dizi değeri karşılayan tanımlama da ise gönderilen dizinin boyutu kadar köşeli parantez açılır ve kapatılır, ilk köşeli parantez içerisine eleman sayısını ifade eden değer yazılmaz, fakat diğerlerine eleman sayıları verilmek zorundadır. Hasan TINMAZ

Dizi hangi tür olursa olsun, hafıza ard arda gelen hücrelerden oluşur. … Derleyici bu değerleri elemanların hafızaya yerleşimlerini tanımlamak için kullanır. Dizi hangi tür olursa olsun, hafıza ard arda gelen hücrelerden oluşur. Dolayısı ile indis numaralan ne olursa olsun, bütün dizi elemanları hafızada ardışık olarak saklanmak zorundadır. Hasan TINMAZ

Yani çift boyutlu diziler tablo halinde hafızada tutulmaz. Örneğin int a[2] [3] ={{13,12,8}, {0,5}}; gibi bir dizi tanımlandığında elemanları hafızada şekil'deki gibi tutulur. Yani çift boyutlu diziler tablo halinde hafızada tutulmaz. Her bir satır verilen sütun sayısı kadar sonraki hücreler içerisinde tutulur. Zaten her bir satır tek boyutlu dizi gibi düşünülebilir. Bütün satırlar uç uca eklenerek hafızaya yerleşir. Hasan TINMAZ

ÖRNEK: Kendisine gönderilen 3x4'lük bir diziyi ekrana tablo halinde yazan fonksiyonu main () fonksiyonu ile beraber yazınız. Hasan TINMAZ

Program çalıştırıldığında ekran çıktısı aşağıdaki gibi olacaktır. Hasan TINMAZ

Kaynakça: Programlamayı C ile öğreniyorum (2. Baskı), M. Yorulmaz, S. Yorulmaz, 2005, Ankara Hasan TINMAZ