Upload
maina
View
94
Download
0
Embed Size (px)
DESCRIPTION
1703317 Veri Yapıları Ve Algoritmalar. Sunu 1. Veri-Bilgi. - PowerPoint PPT Presentation
Citation preview
1703317 Veri Yapıları Ve Algoritmalar
Sunu 1
Veri-Bilgi
• Veri: Bilgisayar ortamında sayısal, alfasayısal veya mantıksal biçimlerde ifade edilebilen her türlü değer (Örn; 10, -2, 0 tamsayıları, 27.5, 0.0256, -65.253 gerçel sayıları, ‘A’, ‘B’ karakterleri, “Yağmur”, “Merhaba” karakter katarları, 0, 1 mantıksal değerleri, ses ve resim sinyalleri vb.) bir veridir.
• Bilgi: Verinin işlenmiş ve bir anlam ifade halidir. Örn; 10 kg, -2 derece, 0 noktası anlamlarındaki tamsayılar, 27.5 cm, 0.0256 gr, -65.253 volt anlamlarındaki gerçel sayılar, ‘A’ bina adı, ‘B’ sınıfın şubesi anlamlarındaki karakterler, “Yağmur” öğrencinin ismi, “Merhaba” selamlama kelimesi karakter katarları, boş anlamında 0, dolu anlamında 1 mantıksal değerleri, anlamı bilinen ses ve resim sinyalleri verilerin bilgi haline dönüşmüş halleridir.
ANSI/ISO Standardına göre C dilinin veri tipleri/yapıları Tipi Bit Boyutu Tanım Aralığı
char 8 -127 – 127
unsigned char 8 0 – 255
signed char 8 -127 – 127
int 16 veya 32* -32,767 – 32,767
unsigned int 16 veya 32* 0 – 65,535
signed int 16 veya 32* -32,767 – 32,767
short int 16 -32,767 – 32,767
unsigned short int 16 0 – 65,535
signed short int 16 -32,767 – 32,767
long int 32 -2,147,483,647 – 2,147,483,647
signed long int 32 -2,147,483,647 – 2,147,483,647
unsigned long int 32 0 – 4,294,967,295
float 32 3.4x10-38 – 3.4x10+38
double 64 1.7x10-308 – 1.7x10+308
Veri Yapısı
• Verileri tanımlayan veri tiplerinin, birbirleriyle ve hafızayla ilgili tüm teknik ve algoritmik özellikleridir.
VERİ YAPILARI
treegraph
stackqueuelist
DOĞRUSAL(LINEAR)
arraystringstructureunion
integerfloatbooleanchar
TEMEL/İLKEL(PRIMITIVE)
BASİT(SIMPLE)
BİRLEŞİK(COMPOUND)
DOĞRUSAL OLMAYAN(NON-LINEAR)
Veri Yapıları Algoritmaları
• Program, işlemci ve işletim sistemi her veri yapısına ait verileri, farklı biçim ve teknikler kullanarak, bellekte yazma ve okuma işlemleriyle uygulamalara taşırlar. Bu işlemlere kısaca Veri Yapıları Algoritmaları denir.
• programlama esnekliği sağlar, • bilgisayar donanım ve kaynaklarından en etkin
biçimde faydalanma olanakları sunar, • programın hızını, etkinliğini arttırır, • maliyetini düşürür.
Veriden Bilgiye Geçiş
HAM VERİ = 0100 0010 0100 0001 0100 0010 0100 0001
ASCII VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 B A B A
BCD VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 4 2 4 1 4 2 4 1
16 BIT TAMSAYI VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 16961 16961
32 BIT TAMSAYI VERİYAPISINA DÖNÜŞEN BİLGİ = 0100 0010 0100 0001 0100 0010 0100 0001 1111573057
Belleğin Yapısı Ve Veri Yapıları
Temel/İlkel (Primitive) Veri Yapıları
char blok=’A’;
int agirlik=10;
float uzunluk=27.5;
Basit (Simple) Veri Yapıları
int agirlik [6];
struct kayit {char cinsiyet; char ad [ ]; int yas; float kilo; } ogrenci;
char selam []=“Merhaba”;veya char selam []={‘M’,‘e’,‘r’,‘h’,‘a’,‘b’,‘a’,‘\0’};
Birleşik (Compound) Veri Yapıları
• Basit (Simple) veri yapılarından “dizi” veya “structure”,
• nesne yönelimli programlamanın “sınıf/class” veri yapılarından
‘&’ Adres Operatörü ve ‘*’ Pointer’inTemel/İlkel (Primitive) Veri Yapılarında Kullanımı
‘&’ Adres Operatörü ve ‘*’ Pointer’in Basit (Simple) Veri Yapılarında Kullanımı
Yaygın Olarak Kullanılan Veri Yapıları Algoritmaları • LİSTELER
– Bir Bağlı Doğrusal Listeler– Bir Bağlı Dairesel Listeler– İki Bağlı Doğrusal Listeler– İki Bağlı Dairesel Listeler
• LİSTELER İLE STACK (YIĞIT) TASARIMI• LİSTELER İLE QUEUEE (KUYRUK) TASARIMI• LİSTELER İLE DOSYALAMA UYGULAMASI• ÇOK BAĞLI LİSTELER• AĞAÇLAR• MATRİSLER• ARAMA ALGORİTMALARI• SIRALAMA ALGORİTMALARI• GRAFLAR
LİSTELERBir Bağlı Doğrusal Listenin Bellekteki Yapısı struct node { int data; node* link;
};
node, liste(list), null(nill)
Bir Bağlı Doğrusal Liste Tanımlamak
void dumplist(node* list)
node* newnode()
node* last(node* list)
void addhead(node* node_, node*& list)
void concatenate(node*& l1, node* l2)
node* cons(int data_)
node* copy(node* list)
node* locate(int data_, node* list)
bool member(node* node_, node* list)
node* cuthead(node*& list)
void free(node*& list)
bool advance(node*& point)
bool deletenode(node* node_, node*& list)
fonksiyonların örnek kullanımı
İki Bağlı Doğrusal Liste Tanımlamak
void dumplist(node* list)
node* newnode()
node* last(node* list)
void addhead(node* node_, node*& list)
void concatenate(node*& l1, node* l2)
node* cons(int data_)
node* copy(node* list)
node* locate(int data_, node* list)
bool member(node* node_, node* list)
node* cuthead(node*& list)
void free(node*& list)
bool advance(node*& point)
bool deletenode(node* node_, node*& list)
İki Bağlı Dairesel Liste Tanımlama
void dumplist(node* list)
node* newnode()
node* last(node* list)
void addhead(node* node_, node*& list)
void concatenate(node*& l1, node* l2)
node* cons(int data_)
Uygulama
• Turbo C ile yazılan rehber programının incelenmesi
• Bir bağlı doğrusal listeler simülasyonunun incelenmesi
Listeler ile Recursive fonksiyon uygulamaları