Yzm 2116 Bölüm 1 - Veri Yapılarına Giriş

20
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği

Transcript of Yzm 2116 Bölüm 1 - Veri Yapılarına Giriş

Page 1: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

YZM 2116Veri Yapıları

Yrd. Doç. Dr. Deniz KILINÇCelal Bayar Üniversitesi

Hasan Ferdi Turgutlu Teknoloji FakültesiYazılım Mühendisliği

Page 2: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

BAŞLAMADAN ÖNCE

• Algoritma ve programlama bilgisi,• C / C# programlama dili,• Diziler, structlar, işaretçiler,• Nesne Yönelimli Programlama

2Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Bu dersi alan öğrencilerin aşağıdaki konuları bildiği varsayılarak dersler işlenecektir:

Page 3: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

BÖLÜM - 1

Bu bölümde,• Algoritmalar ve Veri Yapıları,• Lineer ve Non-Lineer Veri Yapıları,• Statik ve Dinamik Veri Yapıları,• Veri Yapılarının ADT ile Modellenmesi konularına değinilecektir.

3Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 4: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

4

• Bilgisayar bilimlerindeki klasik problem çözme süreci aşağıdaki gibidir:

Veri Yapıları ve Algoritmalar

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 5: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

Veri Yapıları ve Algoritmalar (devam…)

5

• Veri yapıları ve Algoritmalar, “Bilgisayar Bilimleri” alanındaki en köklü ve klasik konulardan birisidir.

• Tüm bilgisayar programları Algoritma ve Veri Yapılarından oluşur.

• Algoritmalar veri ve değişkenleri kullanarak bir problemin çözümüne ulaşır.

• Bir değişken bir integer veya char türünde bellekte bir hafızalık bir yer tutarken, bir Veri Yapısı algoritmanın kullanacağı bilgiyi bir grup hafızada tutar.

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 6: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

• Örneğin, Array (dizi) bir veri yapısı bir isme sahip aynı türde verilerin sabit uzunluklu bir kümesidir.

• Bu bağlamda, bir Array için programın çalışması süresince sabit uzunluklu bir hafıza ayrılır. Bu yönüyle Array statik bir Veri Yapısıdır.

6

Veri Yapıları ve Algoritmalar (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 7: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

• Bilgisayar bilimlerinde işlenecek veri miktarı büyüdükçe bu verilerin o saklanması, o sıralanması, o veriler içinde arama yapılması

• gibi temel işlemlerin verimli şekilde (hafıza, performans) gerçekleştirilebilmesi için farklı Veri Yapılarının geliştirilmesi ihtiyacı doğmuştur.

7

Veri Yapısı Nedir?

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 8: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

• Bir problemin çözümü için öncelikle işlenecek verinin çözüme uygun şekilde organize edilmesi gerekir. Bu bağlamda VY tanımı:

• “Veri Yapısı, verinin verimli şekilde kullanılabilmesi için belirli bir formatta saklanıp organize edilmesini sağlayan matematiksel modeldir.”

8

Veri Yapısı Nedir? (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 9: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

Linear ve Non-Linear Veri Yapıları

• Stack, Queue, Tree ve Graph’lar Veri Yapılarına birer örnektir.

• Verinin organize edilmesine bağlı olarak Veri Yapıları iki grupta sınıflandırılırlar:1. Linear VY: Elemanların (verinin) sırayla

erişildiği Array, Linked List, Stack ve Queue gibi yapılardır.

2. Non-Linear VY: Verinin lineer olmayan (hiyerarşik, network) bir şekilde saklandığı-erişildiği Tree ve Graph gibi yapılardır.

9Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 10: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

10

Veri Yapıları ve Türleri

Veri YapılarıTemel Veri Türleri

int real char bool Linear Non-Linear

Array Tree

Stack Queue

Linked List Graph

Linear ve Non-Linear Veri Yapıları (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 11: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

• VY’leri implemente etmek için iki yöntem bulunmaktadır:– Statik veri tipleri kullanmak (diziler). Statik veri türleri,

kendilerine ayrılan bölümün tamamını kullanmasalar dahi sabit bir bellek alanı tahsis ederler.

– Dinamik veri tipleri kullanmak (işaretçi, referans türleri). Program çalışma zamanında boyutları büyüyüp küçülebilir.

• Statik VY’ler, dinamik VY’leri oluştururlar.

11YZM 2116 – Veri Yapıları

Veri Yapıları Implementasyonu

Page 12: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

12

Örnek VY: Linked List (Bağlı Liste)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 13: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

13

Örnek VY: Tree (Ağaç)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 14: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

Bir algoritma için benzer VY modelleri arasından seçim yapılırken hangi kriterleri göz önünde bulunduracağız?

1. Hafıza kullanımı 2. Verimliliği (kabaca hızı)

14

Hangi VY Kullanacağım?

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 15: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

Abstract Data Type (ADT)

• ADT (Abstract Data Type), VY bağlamında bir problemin bilgisayar çözümü için kullanılan, genelde matematiksel bir modeldir.

• Örneğin, bir grup sayıyı sıralamak için ADT, – bir dizi ve – dizi üzerinde çalışan sıralama algoritması olarak düşünülebilir.

• Bir başka ifadeyle, bir ADT – verinin organizasyonu ve – onların üzerinde yapılacak işlemlerin matematiksel (kısmen)

modellenmesidir. • Örneğin, bir tamsayı dizisi ve bu dizi üzerinde read, sort,

search ve print işlemleri basit bir ADT modelidir.

15Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 16: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

Örnek: Stack ADT

16

Yaygın kullanılan ADT’ler’den biri olan Stack ADT’si, verinin saklanma biçimi ve bu veri üzerinde tanımlanan işlemler şeklinde modellenir.

Yığın İşlemleri

Açıklama

push() Yığına eleman ekler.

pop() En son eklenen elemanı ayırır.

top() Son eklenen eleman değerini getirir.

size() Eleman sayısını döndürür.

isEmpty() Yığında eleman olup olmadığını kontrol eder.

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 17: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

• ADT, kullanıcı açısından arka plandaki karmaşıklığı kullanıcıdan soyutlama (abstraction) anlamında, OOP mantığına uygun bir yaklaşımdır.

• ADT’ler NYP yaklaşımında Interface ve Abstract Class ile tanımlanırlar.

• Interface’de metot adları, parametre türleri ve döndürecekleri değer türleri gibi soyut tanımlamalar yapılırken metotlar ilgili Interface’i implemente eden sınıflarda tanımlanır.

17

Örnek: Stack ADT (devam…)

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 18: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

18Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Örnek: Stack ADT (devam…)

Page 19: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

19

İYİ ÇALIŞMALAR…

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Page 20: Yzm 2116  Bölüm 1 - Veri Yapılarına Giriş

Yararlanılan Kaynaklar

20

• Ders Kitabı:• Data Structures through JAVA, V.V.Muniswamy

• Yardımcı Okumalar:• Data Structures and Algorithms in Java, Narashima

Karumanchi • Data Structures, Algorithms and Applications in Java,

Sartaj Sahni • Algorithms, Robert Sedgewick

Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları