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

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi