• 21 Aralık 2024 16:59

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

Algoritma Nedir?

BySait ORHAN

Eyl 11, 2011

Algoritma nedir sorusuna yine bir soruyla algoritmanın gücünü göstererek başlayalım. Sorumuz şu:

Basamakları tekrar etmeyen 10 basamaklı abcdefghkl sayısı aşağıdaki şartları sağlamak zorundadır;

1 – a tek basamaklı sayısı 1’e,

2 – ab iki basamaklı sayısı 2’ye,

3 – abc üç basamaklı sayısı 3’e,

4 – abcd dört basamaklı sayısı 4’e,

.

.

9 – abcdefghk dokuz basamaklı sayısı 9’a,

10 – abcdefghkl on basamaklı sayısı 10’a tam bölünür. Bu şartlar doğrultusunda sayımız kaçtır?

Eğer bir plan olmadan sayıları teker teker deneyecek olursanız denemeniz gereken 8.999.999.999 sayı vardır ki bu sayıları denemeye ömrünüz yetmez. Ama uygun işlemlerle bu deneme sayısı ellinin altına düşürülebilir.

Algoritmanın ne olduğuna gelecek olursak; bilgisayar yapısı gereği kendi kendine çözüm üretemez ancak kendisine bildirilen net komutlar yardımıyla işlemlere çözüm üretebilir. Bilgisayara bildirilen bu net komutların yol haritasına da algoritma denir. Örnek verecek olacak verirsek Ankara’dan İstanbul’a gitmeye karar veren bir kişi öncelikle doğru bir yol haritası edinmek zorundadır aksi takdirde yerinde dönüp dolaşacaktır ve varmak istediği yere varamayacaktır.

Konumuza bir üçgenin alanını bulacak bir yol haritası / algoritma ile devam edelim:

  1. BAŞLA
  2. Kullanıcıdan üçgenin kenar uzunluklarını belirten üç adet reel sayı al, ( a – b – c )
  3. Verilen kenar uzunlukları ile üçgen oluşturulabiliyor mu? Oluşturuluyor ise devam et, oluşturulamıyor ise 2. adıma dön
  4. u = (a+b+c)/2 formülüne uygun olarak u reel sayısını hesapla
  5. alan = sqrt(u . (u-a) . (u-b) . (u-c)) formülüne uygun olarak alan değerini hesapla NOT: sqrt(x) işlemi x sayısının karekökünü hesaplar
  6. alan değerini ekrana yaz
  7. DUR

Algoritmada komutların net olduğundan söz ettik. Örneğin algoritmada şöyle bir komut olamaz: “Bir süre işlemleri beklet,” çünkü bu sürenin ne kadar olacağı belli değil ve her ayrıntının yoruma kapalı olacak şekilde algoritmada yer alması gerekmektedir. Bunun doğrusu şöyle olabilir: “İşlemleri 5 saniye beklet,”. Bunun yanında her algorimanın mutlaka bir BAŞLAMA ve DURMA noktasının olma zorunluluğu vardır aksi takdirde bilgisayar ne zaman duracağına karar veremez ve işlemler sonsuza dek devam eder.

Girişte sorduğumuz sorunun cevabını merak etti iseniz cevabı: 3816547290 sayısıdır. Deneme sayısını düşürmek içinde sadece sayıların bölünebilme kurallarından faydalanmak yeterlidir.

  • abcdefghkl sayısı 10’a tam bölünecağinden sayımız: abcdefghk0
  • abcde sayısı 5’e tam bölüneceğinden sayımız: abcd5fghk0
  • abc sayısı 3’e tam bölüneceğinden abcd5f sayısıda 6’ya dolayısıyla 3’e de tam bölünmek zorundadır. Burdan da iki durum oluyor: abc456 veya abc654

İşlemler bu şekilde devam ettirilir…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.