Veri Yapıları ve Algoritmaları ders_1 • Veri yapısı (Data Structure) verinin veya bilginin bellekte tutulma şeklini veya düzenini gösterir. • Tüm programlama dillerinin, genel olarak, tamsayı, kesirli sayı, karakter ve sözcük saklanması için temel veri yapıları vardır • int, double, float(short, long, signed, unsigned), char, boolean, diziler[x], cok boyutlu_diziler[x][y]; char string[z] , struct a{ int b, char c[d]} Veri Modeli • Veri modeli (data model), verilerin birbirleriyle ilişkisel veya sırasal durumunu gösterir; problemin çözümü için kavramsal bir yaklaşım yöntemidir denilebilir. • Bilgisayar ortamında uygulanacak tüm matematik ve mühendislik problemleri bir veri modeline yaklaştırılarak veya yeni veri modelleri tanımlaması yapılarak çözülebilmektedir . • Bağlı listeler, Yığınlar, kuyruklar, ağaçlar(ikili sıralama ağacı, huffman), graflar(renklendirme, en kısa yol bulma, en kısa yol ağacı, grafta dolaşma), hashing(çırpı) Algoritma • Algoritma, belirli bir işi veya görevi var olan veya sonradan tanımlanan veri modeline dayandırılarak adım adım ortaya koymak ve bunu bilgisayar ortamında herhangi bir programlama diliyle kodlamaktır. • Bir program, tasarlanması ne kadar güç görünse de, gerekli veri modeli ve yapısı belirlenmişse ve algoritmik ifadesi ortaya koyulmuşsa, kolayca kodlanabilir; böylelikle programı tasarlamak ve geliştirmek oldukça kolaylaşır. Algoritma-PseudoCode • Kaba-kod (PseudoCode), bir algoritmanın yarı programlama dili kuralı, yarı konuşma diline dönük olarak ortaya koyulması/tanımlanmasıdır. Kaba-kod, çoğunlukla, bir veri yapısına dayandırılmadan algoritmayı genel olarak tasarlanır. • Gerçek kod ise, algoritmanın herhangi bir programlama diliyle, belirli bir veri yapısı üzerinde gerçekleştirilmiş halidir. Bir algoritmanın gerçek kodu, yalnızca, tasarlandığı veri yapısı üzerinde koşar; veri yapısı değiştirildiğinde algoritmanın gerçek kodu üzerinde oynamalar yapılmalıdır Akış Şeması • Akış şeması, algoritmanın metinsel değil de yanda görülen geometrik simgelerle şekilsel olarak ifade edilmesidir. • Akış şeması, kodlanacak dilin kontrol deyimleri göz önüne alınarak çizilirse, daha sonra kodlama kolayca gerçeklenir. Akış Şeması-2 Başla Bitir(Son) Atama (a=b+c) Veri çıkış (Output) Veri girişi (input) Eğer(İf) Eğer(İf) i=0 1 N for (int i=0; i<N; i++) Örnek algoritma • Faktoriyel • 2.dereceden denklem • Bir k sayısı tek ise 3 ile çarp 1 ekle, çift ise 2’ye bol. k=1 ise dur. Kaç adım sürer hesapla • Dizinin en küçük, en büyük elemanını bulma