Algoritma Ve Programlama-2
ALGORİTMA VE
PROGRAMLAMA II
POİNTERLAR
Pointerler C dilinin güçlü öğeleridir. Bir pointer ana
bellekte bir adres belirtir. Bazı dillerde ancak assembler dili yardımıyla
çözülebilecek pek çok sorun C dilinde pointerler ile kolayca çözülebilir.
Ayrıca adres kullanımı çok karmaşık veri yapılarının rahatlıkla kullanılmasını
sağlar. Pointer kavramına yöneltilen eleştirilerden en önemlisi, C diline yeni
başlayanlar için çok karmaşık görünmesi ve yazılan programın zor anlaşılır
olmasıdır. Öte yandan, pointerleri kullanırken, aynı işi görecek biçimde çok
değişik deyimler kullanılabilir. Bu nedenle, pointer kullanarak program
yazarken, programcı bu haklı eleştiriyi gözardı etmeden, kolay okunur bir
kaynak program yazmaya uğraşmalıdır. Bir pointer, başka bir değişkenin adresini
gösteren bir değişkendir. Dolayısıyla, aynen öteki değişkenler için olduğu
gibi, programda kullanılmadan önce bildirimlenmelidir. Bildirim için, pointer
değişkenine istenilen bir ad verilebilir; ancak bu adın önüne * simgesi
konulur. Bir değişken önüne * simgesi konulunca, derleyici onun bir pointer
olarak görmeye başlar.
DİNAMİK VERİ
YAPILARI
Veri yapısı, bilgisayar ortamında verilerin etkin olarak
saklanması ve işlenmesi için kullanılan yapı. Veri yapıları, verilerin
düzenleme biçimini belirleyen yapıtaşlarıdır. Bir yazılım değişkeni bile basit
bir veri yapısı olarak kabul edilebilir. Değişik algoritmalarda verilen
diziler, listeler, yığıtlar, kuyruklar, ağaçlar ve çizgeler gibi veri
modellerine uydurularak düzenlenmesi gerekebilir. Veri, yapı ve algoritma bir
yazılımın birbirinden ayrılmaz bileşenleridir. Algoritması hazırlanmış her yapı
için verilerin düzenli bir şekilde kullanımı önemlidir. Çünkü yapı iyi
kurulduğunda, etkin, doğru, anlaşılır ve hızlı çalışıp az kaynak kullanan
algoritma geliştirmek kolaylaşır.
BAĞLI LİSTE
Bağlı listeler esnekliklerine bağlı olarak çeşitli
yapılarda kullanılabilmektedir. Temelde 3 çeşit Bağlı Liste yapısı
kullanılmaktadır.
BAĞLI LİSTE
ÇEŞİTLERİ
1. Tek Yönlü
Bağlı Liste
2. Dairesel
Bağlı Liste
3. Çift Yönlü
Bağlı Liste
TEK YÖNLÜ BAĞLI
LİSTELER
Veri yapıları dersinde ilk olarak Singly Linken List
olarak da bilinen, Tek Yönlü Bağlı Listeler konusu anlatılır. Bu tipteki bağlı
listelerde her düğüm sadece kendisinden sonraki düğümü işaret eder.
DAİRESEL BAĞLI
LİSTE
Circular Linked List yapısı olarak da bilinir. Bu yapı da
aynı tek yönlü bağlı listelere benzer. Tek fark, son düğüm NULL değerini değil,
tam aksine ilk düğümü gösterir. Bu yüzden Dairesel Yönlü Bağlı Liste adını
almıştır.
ÇİFT YÖNLÜ BAĞLI
LİSTE
Doubly Linked List adı da verilen Çift yönlü bağlı liste
yapısı ilk başta sizleri zorlayabilir. Ancak aslında bu da çok kolay bir
yapıdır. Normal Linked List yapısında her düğüm sonraki düğümü işaret ederken
bu yapıda bir değil, iki pointer kullanılır. Pointerlardan birisi sonraki
düğümü, birisi de önceki düğümü işaret eder.
KUYRUK VE YIĞINLAR
YIĞIN
Bilgisayar biliminde yığın son giren ilk çıkar prensibine
sahip veri yapısıdır. Günümüz bilgisayar dizgelerinin tümünde fazlaca
kullanılır. Karakteristik özelliği Push ve Pop işlemleridir. Yığına veri
atılması işlemine Push işlemi adı verilir. Push işlemiyle birlikte daha önceden
yığının en üstünde bulunan veri sanal olarak gizlenmiş olur. Push işleminden
önce eğer yığın boşsa yığın kullanıma hazır hale getirilir. Yığına son giren
verinin yığından alınmasına Pop işlemi sonucunda yığından alınan veri Pop işlemini
çağıran kod parçasına işlem sonucunda alınan veriyi döndürür.
KUYRUK
Kuyruk bir veri yapısı türüdür. İlk giren, ilk çıkar(FIFO
– First In First Out) özelliğine sahiptir. Doğrusal bir veri yapısıdır. Kuyruğa
son eklenen eleman en son elde edilir. Kuyruktaki elemanlardan sadece ilk
eklenen erişim yapılır.
SIRALAMA
ALGORİTMASI
Sıralama algoritması, bilgisayar bilimlerinde ya da
matematikte kullanılan, verilen bir listenin elemanlarını belirli bir sıraya
göre düzenleyen algoritmadır. En çok kullanılan sıralama türleri, sayı
büyüklüğüne göre sıralama ve alfabetik sıralamadır. Sıralama işleminin verimli
yapılması, arama ve birleştirme algoritmaları gibi çalışması için sıralanmış
dizilere gereksinim duyan algoritmaların başarımının yüksek olması için önemlidir.
Sıralama algoritmaları bilgisayarlarda tutulan verilerin düzenlenmesini ve
insan kullanıcı tarafından daha rahat algılanmasını da sağlar. Sıralama
algoritmaları, tanımı çok yalın olmasına karşın çözümü çok karmaşık olan bir
işi gerçekleştirdikleri için, üzerinde en fazla araştırma yapılan bilgisayar
bilimi konularından biridir.
ÖZYİNELEMELİ
FONKSİYONLAR
Özyineleme, en genel anlamıyla bir yapının kendi kendine
yinelenmesidir. Özellikle matematik ve bilgisayar biliminde kullanılır. Bu
yapılara yinelgen bir yapı eğer kendine gönderme yapma özelliğiyle yinelgen ise
bu tür yapılara özgöndergeli ya da kendine göndergeli yapılar denir.
MAKROLAR
Makro, bilgisayar biliminde klavye ve fare ile girilen
girdi verileridir. Genellikle kullanıcının yaptığı rutin işleri otomatik ve
hızlı olarak yapmak amacıyla daha sonra belli standartlara tabi olarak
Microsoft Excel programında veri tablolamada kullanılmış olsa da sonradan
çeşitli makro yazılımları sayesinde insan işgücü ve zaman kaybı önleyen,
bilgisayarla çalışan iş yerlerinin olmazsa olmaz parçalarından biridir.
YAPISAL
PROGRAMLAMANIN PROBLEMLERİ
Yapısal programlama, programlama dilleri kullanılarak
yazılan, mantıksal bütünlük gösteren bloklara bölünebilirler. Bu yolla uzun ve
karmaşık programların, bloklara ayırarak daha kolay biçimde yazılabilmesi
mümkün olmaktadır. Yapısal programlama yordamsal programlamanın bir alt/yan
dalı olarak görülebilir, temel programlama tekniklerinden birisidir. Tarihsel
olarak bakıldığında yapısal programlamadan pek çoğu ile yapılabilmektedir.
NESNEYE YÖNELİK
PROGRAMLAMANIN TANIMI
Programlar, gerçek hayatta karşılaşılan bir takım
problemin çözülmesi için bilgisayarların hızlı ve doğru işlem yağabilme
yeteneklerinden faydalanmak üzere yazılırlar. Bilgisayarların hız ve
kapasiteleri arttıkça geliştirilen programlar da hız ve kapasiteden
faydalanabilecek şekilde gelişerek değişmektedir. Bu karşılıklı gelişme ve
değişme, zaman içerisinde program geliştirme yöntemlerinde de değişikliklere
neden olmuş, böylece çeşitli program geliştirme yaklaşımları ortaya
çıkarmıştır. Nesneye yönelik yazılım geliştirme bir yazılım geliştirme
yaklaşımıdır.
Yorumlar
Yorum Gönder