NİŞANTAŞI ÜNİVERSİTESİ

Slides:



Advertisements
Benzer bir sunumlar
DİZİLER – I. Kısım YRD.DOÇ.DR. CİHAD DEMİRLİ
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Göstericiler (Pointers)
SINIFLAR Yılmaz Kılıçaslan.
Yığın ve Kuyruk.
Bölüm 2 C Dilinin Temelleri
String Diziler(Katarlar)
Diziler.
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Diziler(Arrays).
Nesneye Dayalı Programlama
Veri Yapıları Ve Algoritmalar
Veri Yapıları ve Algoritmalar
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Nesneye Yönelik Programlama
Görsel C# Programlama Güz 2009 (6. Hafta).
Nesneye Dayalı Programlama
C ile Programlamaya Giriş
DEĞİŞKENLER VE VERİ TİPLERİ
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
NESNEYE YÖNELİK PROGRAMLAMA
C PROGRAMLAMA DİZİLER (ARRAYS).
Nesneye Dayalı Programlama
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
KALITIM Yılmaz Kılıçaslan.
Veri Yapıları ve Algoritmaları ders_1
BAZI VERİ YAPILARI Yılmaz KILIÇASLAN.
BAZI VERİ YAPILARI Yılmaz KILIÇASLAN. Sunu Planı Bu derste, çizgeler gibi bazı teorik nesnelerin bellekte nasıl tutulduğunu ve algoritmalarca nasıl işlendiğini.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
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.
DİZİLER Arrays.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
Veri yapıları Hafta3 Dizi Yapıları.
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.
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
C Programlama Diline Giriş
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H11
FONKSİYONLAR.
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
C++ Programming:. Program Design Including
Bilgisayar Bilimi Problem Çözme Süreci-2.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

NİŞANTAŞI ÜNİVERSİTESİ Veri Yapıları ve Algoritmalar DERS 2 NİŞANTAŞI ÜNİVERSİTESİ © Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr

YBLG202 Veri Yapıları ve Algoritmalar DERS 2 VERİ YAPILARI, DİZİLER, YAPILAR, DİNAMİK DİZİLER NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Veri Yapıları Programlamada veri yapıları en onemli unsurlardan birisidir. Program kodlarını yazarken kullanılacak veri yapısının en ideal şekilde belirlenmesi, belleğin ve calışma biciminin daha etkin kullanılmasını sağlar. Program icerisinde işlenecek veriler diziler ile tanımlanmış bir veri bloğu icerisinden secilebileceği gibi, işaretciler kullanılarak daha etkin şekilde hafızada saklanabilir. Veri yapıları, dizi ve işaretciler ile yapılmasının yanında, nesneler ile de gercekleştirilebilir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Veri Yapıları Verileri tanımlayan veri tiplerinin, birbirleriyle ve hafızayla ilgili tum teknik ve algoritmik ozellikleridir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Diziler C dilinde dizi (array), aynı türden bir ya da daha fazla nesnenin bellekte bir dizi veri yapısı biçiminde tutulmasını garanti eden araçtır. C’de bir dizinin tanımlanmasıyla birden fazla sayıda nesne tek bir deyimle tanımlanabilir.10 elemana sahip bir dizi tanımlamak yerine, şüphesiz isimleri farklı 10 ayrı nesne de tanımlanabilir. Ama 10 ayrı nesne tanımlandığında bu nesnelerin bellekte ardışıl olarak yerleşmeleri garanti altına alınmış bir özellik değildir. Oysa dizi tanımlamasında, dizinin elemanı olan bütün nesnelerin bellekte ardışıl olarak yer almaları garanti altına alınmış bir özelliktir. Dizi de bir veri türü olduğuna göre dizilerin de kullanılmalarından önce tanımlanmaları gerekir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Göstericiler Adresler tamsayı görünümünde olsalar da tamsayı sabitleri gibi belirtilmezler. Çünkü tür bilgilerinin de belirtilmesi gerekir. Adres sabitleri, tamsayı türlerindeki sabitler üzerinde bilinçli tür dönüşümü yapılarak elde edilirler. Bir tamsayı sabitini adres türüne çevirmek için tür dönüştürme operatörü kullanılır. (<tür> *) <tamsayı sabiti> Tür dönüştürme operatörünün içindeki * adres ya da göstericiyi temsil etmektedir. Örneğin 0x1F00 hexadesimal olarak gösterilmiş int türden bir sabittir. Ancak: (int *) 0x1F00 NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Yapı nedir Yapılar (structures) programcının birden fazla nesneyi bellekte ardışıl olarak yaratmasına izin veren bir sentaks aracıdır. Yapıların kullanılmasıyla bellekte birbirini izleyecek şekilde yer alan birden fazla nesne yaratılabilir. Bellekte ardışıl nesnelerin dizi tanımlamalarıyla da yaratılabileceğini biliyorsunuz. Ancak yapıların dizilerden bazı farklılıkları vardır: Diziler aynı türden nesneleri içinde tutabilirken, yapılar farklı türlerden nesneleri tutabilirler. Yapıların kullanılmasının ana nedeni budur. Çoğu zaman, türleri farklı bir takım nesneler, mantıksal olarak bir bütün oluşturabilirler. İsim, yaş, cinsiyet, departman, ücret, öğrenim durumu gibi bilgileri farklı türden nesneler içinde saklayabiliriz ve bunların tamamı bir işyerinde çalışan bir kişiye ait bilgiler olabilir. Aralarında mantıksal ilişki olan farklı türden veriler yapılar içinde saklanabilir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Yapı Bildirimi Yapı ile programcının yeni bir tür yaratmasına olanak sağlar. Yapıların kullanılabilmesi için yapılması gereken ilk işlem bu yeni türü derleyiciye tanıtmaktır. Tanıtma işlemi yapı bildirimi (structure declaration) ile olur. Yapı bildirimini gören derleyici, bu yeni tür hakkında bilgi edinmiş olur. Bu bildirimle derleyiciye aşağıdaki bilgiler verilir: - türün ismi - türün bellekte ne kadar yer kapladığı - elemanların isimleri Derleyici bir yapı bildirimini gördükten sonra, bu türden bir nesne tanımlandığında nesne için bellekte ne kadar yer ayıracağını öğrendiği gibi, bu nesnenin programcı tarafından kullanımına ilişkin ifadelere ilişkin derleme zamanında bazı kontroller yapabilir. Yapı bildiriminin belirli bir sentaksı vardır. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Dinamik Bellek Yönetimi C dilinde bir dizi tanımlandığı zaman, bu dizi için derleyici tarafından bellekte yer ayrılır. Örneğin: int a[100]; Derleme sırasında yukarıdaki gibi bir dizi tanımlaması ile karşılaşan derleyici bellekte (eğer kullanılan sistemde int türü uzunluğunun 2 byte olduğu varsayılırsa) toplam 200 byte yer ayıracaktır. Programın çalışması sırasında bir dizinin uzunluğunu değiştirmek mümkün değildir. Diziler konusunda açıklandığı gibi, dizi tanımlama ifadelerinde dizi boyutunu gösteren ifade (köşeli parantezin içerisindeki ifade) sabit ifadesi olmalıdır, değişken içeremez. Çünkü derleyicinin bellekte yer ayırması için, dizi boyutunu bilmesi gerekir. Oysa pratikte birçok uygulamada açılması gereken dizinin boyutu programın çalışması sırasında (runtime) belirlenmektedir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI malloc fonksiyonu malloc fonksiyonu programın çalışma zamanı sırasında bellekten dinamik bir blok elde etmek için kullanılır. Fonksiyonun stdlib.h başlık dosyası içindeki bildirimi aşağıdaki gibidir: void *malloc(size_t nbyte); size_t türünün derleyiciyi yazanların seçimine bağlı olarak unsigned int ya da unsigned long türlerinden birinin yeni tür ismi olarak tanımlanması gerektiğini, ve sistemlerin hemen hemen hepsinde size_t türünün unsigned int türü olduğunu hatırlayalım. Fonksiyona gönderilecek arguman ayrılmak istenen bloğun byte olarak uzunluğudur. Ayrılan alanın sürekli (contigious) olması garanti altına alınmıştır. malloc fonksiyonunun geri dönüş değeri elde edilen bellek bloğunun başlangıç adresidir. NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © VERİ YAPILARI Veri Yapısı, bilgisayarda verinin saklanması (tutulması) ve organizasyonu icin bir yoldur. Veri yapılarını saklarken ya da organize ederken iki şekilde calışacağız; 1- Matematiksel ve mantıksal modeller (Soyut Veri Tipleri – Abstract Data Types - ADT): Bir veri yapısına bakarken tepeden (yukarıdan) soyut olarak ele alacağız. Yani hangi işlemlere ve ozelliklere sahip olduğuna bakacağız. Soyut bakışın icerisinde uygulama (implementasyon) yoktur. Ornek olarak bir listeyi ele alabiliriz. Bu listenin ozelliklerinden bazılarını aşağıda belirtirsek, Liste; - Herhangi bir tipte belirli sayıda elemanları saklasın, - Elemanları listedeki koordinatlarından okusun, - Elemanları belirli koordinattaki diğer elemanlarla değiştirsin (modifiye), - Elemanlarda guncelleme yapsın, Ekleme/silme yapsın 2- Uygulama (Implementation): Matematiksel ve mantıksal modellemenin uygulamasıdır. Diziler, programlamada cok kullanışlı veri yapıları olmasına rağmen bazı dezavantajları ve kısıtları vardır Soyut veri tipleri (ADT)’nin resmi tanımını şu şekilde yapabiliriz; Soyut veri tipleri (ADTs) sadece veriyi ve işlemleri (operasyonları) tanımlar, uygulama yoktur. Bazı veri tipleri; - Arrays (Diziler) - Linked List (Bağlı liste) - Stack (Yığın) - Queue (Kuyruk) - Tree (Ağaç) - Graph (Graf, çizge) NİŞANTAŞI ÜNİVERSİTESİ ©

YBLG202 Veri Yapıları ve Algoritmalar Kaynakça NİŞANTAŞI ÜNİVERSİTESİ ©

NİŞANTAŞI ÜNİVERSİTESİ © KAYNAKÇA M. T. Goodrich, R. Tamassia, D. M. Mount, Data Structures and Algorithms in C++, John Wiley & Sons, Inc., 2011 Hakan Kutucu, VERİ YAPILARI, Karabük Üniversitesi Mühendislik fakültesi, 2014 Data Structures and Algorithms, TutorialPoints, NİŞANTAŞI ÜNİVERSİTESİ ©