Algoritma derslerimizin üçüncüsünde iki farklı örnekle şu ana kadar öğrendiklerimizi pekiştirmeye çalışacağız. İlk örneğimiz girilen bir tam sayıyı hanelerine ayıran algoritma ve akış diyagramı olacak.
1-Başla
2-Sayıyı Öğren (A)
3-Eğer (A=0) ise git 8
4-Basamak = A - TAM(A/10)*10
5-Basamak ekrana yaz
6-A = TAM(A/10)
7-Git 3
8-Dur.
Şimdi bu algoritmamızı adım adım inceleyelim.
İkinci adımda kullanıcıdan bir sayı girmesini istiyoruz. Aldığımız bu sayının 0'dan farklı olduğunu varsayalım. Bu bölümde dilerseniz kullanıcıya gireceği sayının 0'dan büyük bir tamsayı girmesi gerektiğini uyarı olarak verebilirsiniz. Diğer bir yöntem de girilen sayının 0'dan küçük ya da tamsayı olmaması durumunda bir hata mesajı verilebilir. Amacımız algoritmaya yeni başlayan kullanıcılarımıza basit örneklerle alıştırmalar yaptırmak olduğundan şimdilik ayrıntılara girmeyeceğiz.
Üçüncü adımda 0 rakamıyla karşılaştırıyoruz ve bu sayede hanelerini elde edebilmemiz için döngümüzü de başlatmış oluyoruz. Peki neden 0 ile karşılaştırıyoruz? Girilen sayımızın hanelerini elde ettikçe haneler azalacak ve en son sayımız bize 0 rakamını döndürecektir. Bu yüzden 0 ile karşılaştırarak hane elde etme işlemimizin bittiğini anlıyoruz.
Dördüncü adımda sayımızın son hanesini elde etmek için ilk önce 10'a bölüyoruz. Bölme işleminden sonra sayımızın bir basamak sola kaymasını sağlıyoruz. Ondalık olan bu sayımızın tam kısmını alarak virgülden sonraki hanenin silinmesini sağlıyoruz. Bu sildiğimiz haneyi elde etmek için sayımızı 10 ile çarparak silinen hanenin yerine 0 gelmesini sağlıyoruz. İlk girilen sayı(A) ile sonradan sonuna 0 yerleştirdiğimiz sayıyı birbirinden çıkartıyoruz. Son hane hariç diğer sayılar aynı olduğu için çıkarma sonucunda geriye sadece son hane kalacaktır. Son hanemizi bu şekilde elde etmiş oluyoruz. Elde ettiğimiz bu haneyi yukarıdaki işlemi kullanarak kalıcı olarak sildikten sonra döngümüzün başlangıcına gönderiyoruz. Sayımız 0 olana dek diğer haneler içinde aynı işlemi gerçekleştiriyoruz.
Beşinci adımda elde ettiğimiz bu haneleri ekrana yazdırıyoruz. Sayımız en son 0 değerine geldiğinde döngüden çıkıp algoritmamızı bitiriyoruz.
Algoritmamızın sağlamasını yapmak için sizlere şiddetle tavsiye edeceğim bir konu da hafıza tablosunu yapmanızdır. Yukarıdaki algoritmanın hafıza tablosu aşağıdaki gibi olacaktır. Hafıza tabloları özellikle karmaşık hesaplamaların olduğu algoritmalardaki hesap ve/veya mantık hatalarını tespit edilebilmesi için çok faydalıdır. Temel olarak kendinizi bilgisayarın yerine koyup algoritmanın her adımını teker teker çalıştırmanız ve işlemlerin sonucunda oluşan değerleri bir tabloya işlemeniz size hafıza tablosunu verecektir.
Bu yazımızda vereceğimiz ikinci örneğimiz ise girilen 10 sayıdan en küçük sayının bulunmasını sağlayan algoritma ve akış diyagramı olacaktır.
1-Başla
2-İlk sayıyı öğren (A)
3-En_Kucuk = A : Sayac = 1
4-Eğer (Sayac = 10) ise Git 8
5-Sonraki Sayıyı öğren (A)
6-Eğer (En_Kucuk > A) ise En_Kucuk = A
7-Sayac = Sayac + 1 : Git 4
8-En_Kucuk değişkenini ekrana yazdır.
9-Dur.
Bakalım Ne Yapmışız?
Şimdi bu algoritmamızı adım adım inceleyelim.
İkinci adımda kullanıcıdan bir sayı girmesini istiyoruz. 3. adımda En_Kucuk adında bir değişken belirleyip içine 2. adımda aldığımız sayıyı aktarıyoruz. En_Kucuk değişkeni, algoritma boyunca bizim en küçük sayımızı taşıyacak olan değişkendir.
İlk sayıyı aktarmamızın sebebi ise ilk sayı henüz başka bir sayı olmadığı için bizim en küçük sayımızdır. Diğer değişkenimiz sayac ise klavyeden girilecek verilerin sayısını temsil edeceğinden ve ilk girilen veri bizim için ilk sayı olduğunda başlangıç değerini 1 olarak atıyoruz.
Dördüncü adımda eğer sayacımız 10. sayıya ulaşmış ise 10 tane verinin girildiğini anlıyoruz ve 8. adıma giderek kullanıcıdan veri alma işini bitiriyoruz. Eğer 10. sayıya ulaşmamış ise alttaki adıma geçerek devam ediyoruz.
Beşinci adımda kullanıcıdan diğer sayıyı girmesini istiyoruz.
Altıncı adımda yeni aldığımız sayı ile daha önce En_Kucuk olarak elde tuttuğumuz sayıyı karşılaştırıyoruz ve yeni aldığımız sayı elde tuttuğumuz En_Kucuk sayıdan daha küçükse En_Kucuk değişkenine yeni sayıyı aktarıyoruz. Bu sayede artık en küçük sayımız yeni aldığımız sayı oluyor. Değilse hiçbir işlem yapmadan bir alt satırdan devam ediyoruz.
Yedinci adımda sayacımızı bir artırıyoruz. Bunun sebebi 5. adımda her aldığımız sayı için sayacı artırmamız gerektiğidir. Diğer sayıları da aynı işlemden geçirerek en küçük sayıya ulaşmaya çalışıyoruz. Son olarak sayacımız 10. sayıya ulaştığında 8. adıma atlayarak bulunan en küçük sayıyı yani En_Kucuk adlı değişkeni ekrana yazıp algoritmayı bitiriyoruz.














