1703317 Veri Yapıları Ve Algoritmalar

Preview:

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ı

Recommended