Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin çözümünü yazılı veya sözlü olarak sıralı bir şekilde gösterir. Herhangi bir problemin çözümü için yapılacaklar, yazım işlemi sırasında herhangi bir alternatif duruma yol açmayacak bir şekilde yazılmalıdır.
Bilgisayar programlamada algoritmayı, verilerin bilgisayara hangi çevre biriminden girileceğinin, problemin karar durumlarının ve değişkenlerinin belirlenmesinin, hangi aşamalardan geçirilerek sonuçlara ulaşılacağının ve elde edilecek sonuçların da nereye çıktı olarak gönderileceğinin ifade edilmesi olarak tanımlayabiliriz. Bilgisayar programlamada algoritma, geliştirilecek olan bilgisayar programı yapısının genel olarak belirlenmesi esasına dayanmaktadır.
Algoritmaların Özellikleri: Algoritma geliştirirken dikkat edilmesi gereken hususlar, aşağıdaki gibi sıralanabilir: Algoritmalar Başla komutu ile başlar, Bitir komutu ile biter. Algoritmalarda kullanılacak olan karar değişkenleri, sadece bir karara doğru yönlendirilmelidir. Algoritmalar, yapılacak her bir iş için sadece bir adımdan oluşmalıdır.
Algoritmadaki ifadeler, yapılabilecek işleri ya da işlevleri göstermelidir. Anlamsız ve yapılması mümkün olmayan işler, kesinlikle yazılmamalıdır. Karar verme durumunda karar verme kriteri bir kesinlik belirtmelidir. Daha önce de ifade edildiği gibi her bir kararın sadece bir sonuca yönlenmesi sağlanmalıdır.
Algoritmalar Nasıl Geliştirilir? Algoritmalar, temel olarak üç bölümden oluşturulmalıdır. Herhangi bir algoritmanın birinci bölümü, başlama işlemlerinin ve gerekli tanımların yapıldığı kısımdır. İkinci bölümü de problemin tanımlandığı ve çözüm yolları ile karar yapılarının uygulandığı kısımdır. Üçüncü bölümü ise sonuçların elde edildiği ve sonuçların gösterildiği kısımdır.
Algoritmalarda ilk adım daima Başla komutu ile başlar. İkinci ve takip eden adımlarda, veri olarak kullanılacak olan değişkenler tanımlanır. Veri girişleri yapılır. Çözüme ilişkin matematiksel, mantıksal ve/veya işlevsel işlemler gerçekleştirilir. Elde edilecek sonuçları dış ortama aktarabilecek değişkenler oluşturulur. Elde edilen sonuçlar dış ortama aktarılır. Algoritmalarda son adım ise daima Bitir komutu olur.
Toplama İşlemi Algoritması: 1. Adım: Başla 2. Adım: Birinci sayıyı oku 3. Adım: İkinci sayıyı oku 4. Adım: Girilen iki sayıyı topla 5. Adım: Toplam değerini yaz 6. Adım: Bitir (Dur)
Çarpma İşlemi Algoritması: 1. Adım: Başla 2. Adım: Birinci sayıyı oku ve A değişkenine eşitle (ata) 3. Adım: İkinci sayıyı oku ve B değişkenine eşitle 4. Adım: A ve B değerlerini çarp ve çarpım değerini C değişkenine eşitle 5. Adım: C değerini yaz 6. Adım: Bitir (Dur)
Küçükten Büyüğe Doğru Sıralama Algoritmaları: Kabarcık Sıralaması: Kabarcık, bilgisayar bilimlerinde kullanılan yalın bir sıralama algoritmasıdır. Sıralanacak dizinin üzerinde sürekli ilerlerken her defasında iki elemanın birbiriyle karşılaştırılıp, karşılaştırılan elemanların yanlış sırada olmaları durumunda yerlerinin değiştirilmesi mantığına dayanır. Algoritma, herhangi bir değişiklik yapılmayıncaya kadar dizinin başına dönerek kendisini yineler. Adına "Kabarcık" sıralaması denmesinin nedeni büyük olan sayıların aynı suyun altındaki bir kabarcık gibi dizinin üstüne doğru ilerlemesidir. Başlangıçta yer değiştirme sıralaması olarak adlandırılan kabarcık sıralaması, dizi içindeki büyük elemanların algoritmanın her adımında dizinin sonuna doğru doğrusal olarak ilerlemesini sağlar. Bu ilerleme, seçmeli sıralama algoritmasındaki dizideki değeri küçük olan elemanların dizinin başında kümelenmesi yöntemine benzer şekilde gerçekleşir.
Kabarcık sıralaması dizinin başından başlar ve dizi elemanlarını sırayla seçer. Seçilen dizi elemanı kendisinden sonra gelen elemandan büyük ise bu iki elemanın yerleri değiştirilir. Aksi halde bir sonraki elemana geçilir. Bu işlemler sonucunda dizinin en büyük elemanı dizi sonuna yerleştirildiğinden bir sonraki geçişte arama sınırı bir eleman geri çekilir. Bu işlem, herhangi bir değişiklik yapılmayıncaya kadar yinelenerek devam eder. Kabarcık Sıralaması Algoritmasının Bir Örnek Üzerinde Adım Adım İşleyişi: İçeriği [5 1 4 2 8] olan bir dizi kabarcık sıralaması ile küçükten büyüğe doğru aşağıdaki biçimde sıralanır. Her adımda dizinin kalın olarak işaretlenmiş elemanları karşılaştırılan elemanlardır.
Birinci Geçiş: [5 1 4 2 8] [1 5 4 2 8] Burada algoritma ilk iki elemanı karşılaştırır ve yerlerini değiştirir. [1 5 4 2 8] [1 4 5 2 8] [1 4 5 2 8] [1 4 2 5 8] [1 4 2 5 8] [1 4 2 5 8] Burada elemanlar zaten sıralı olduğu için algoritma yerlerini değiştirmez. İkinci Geçiş: [1 4 2 5 8] [1 4 2 5 8] [1 4 2 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] Artık dizi sıralıdır ancak algoritma işlemin bittiğini bilmemektedir. Algoritmanın dizinin sıralandığını anlaması için bütün dizinin üzerinden hiçbir değişiklik yapmadan tam bir geçiş yapması gerekir. Üçüncü Geçiş: [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] [1 2 4 5 8] Sonuç olarak dizi sıralanmıştır ve algoritma sonlanır.
Hızlı Sıralama Algoritması: Hızlı sıralama algoritması, sıralanacak bir sayı dizisini daha küçük iki parçaya ayırıp oluşan bu küçük parçaların kendi içinde sıralanması mantığıyla çalışır. Hızlı sıralama algoritmasının adımları aşağıdaki gibidir: Sayı dizisinden herhangi bir sayı pivot eleman olarak seçilir. Sayı dizisini; pivottan küçük olan sayılar pivotun önüne, pivottan büyük olan sayılar da pivotun arkasına gelecek biçimde düzenlenir (pivota eşit olan sayılar her iki yana da geçebilir). Bu bölümlendirme işleminden sonra, pivot eleman sıralama sonucunda dizideki olması gerektiği yere gelir. Algoritmanın bu aşamasına bölümlendirme aşaması denilir. Pivotun önünde ve arkasında olmak üzere oluşan bu iki sayı dizisi, hızlı sıralama algoritması ile yeniden çağrılarak sıralanır. Algoritma, içinde sayı kalmayan yani eleman sayısı sıfır olan bir alt diziye ulaşana kadar işlemeye devam eder ve sonrasında da sonlanır.
Akış Diyagramları (Flow Charts): Akış diyagramları, algoritmaları sembolik olarak göstermeye yararlar. Algoritmadaki mevcut komutları ifade edecek sembollerden oluşurlar. Her bir sembol belli bir komuta karşılık gelir. Semboller genel olarak kabul görmüş şekiller olmalıdır. Her şekil her komut ifadesinde kullanılamaz.
Çarpma İşlemi Akış Diyagramı:
Bir Üçgenin Alan Hesabı İle İlgili Algoritma ve Akış Diyagramı:
Bir Daire Diliminin Alanına İlişkin Algoritma ve Akış Diyagramı:
1’den n’ye Kadar Olan Sayıların Karelerinin Toplamı İle İlgili Algoritma ve Akış Diyagramı:
Koşul Yapısına İlişkin Akış Diyagramı:
Aşağıdaki y Değerinin Hesabına İlişkin Algoritma ve Akış Diyagramı:
Döngü Yapısına İlişkin Akış Diyagramı: