© 2013 – Öğr. Gör. Utku KÖSE 1 ALGORİTMALAR & AKIŞ ŞEMALARI
Algoritma: Belirli bir problemin çözülmesi adına izlenen yollar bütününe algoritma denir.
Gerçek hayattan örnekler: Belirli bir yemeğin tarifi, arabanın tekerinin değiştirilmesi… vb.
Bilgisayar ortamından örnekler: Klavyeden girilen iki sayıyı toplayıp sonucu ekrana yazdırmak, klavyeden gerekli değerleri girilen denklemin köklerini bulmak, uzun ve karmaşık matematiksel işlemler… vb.
Bilgisayar Ortamında Algoritmalarda Bazı Önemli Hususlar:
Bilgisayar ortamına geçildiğinde, algoritmanın bilgisayar giriş – çıkış işlevlerine adapte edilmesi gerekmektedir. Bu amaçla örneğin; “oku” komutu klavyeden veri okumayı göstermek adına, “yaz” komutu ekrana birşeyler yazdırma adına kullanılabilmektedir.
Her algoritmada adımlar, “Adım 1, Adım 2, … Adım X” şeklinde veya “A1, A2, … A3” gibi adımları tayin eden – gösteren etiketler ile ifade edilir.
Her algoritma “Başla” ifadesi içeren 1. adımla başlar, “Dur” ifadesi içeren x. adım (x problemin çözümüne yönelik adım sayısına göre değişir) ile sona erer. Diğer işlem adımları bu iki adım arasına yazılmalıdır.
Problem çözümleri sırasında veri tutacak olan “değişken” isimli elemanlar kullanılmalıdır. Normalde programlama dillerinde değişken tanımlama için ayrı bir komut satırı – dizisi gerekirken, bilgisayar algoritmalarında basitliği sağlamak adına;
ilgili değişkenin, adının geçtiği ilk yerde tanımlandığı kabul edilmektedir.
İyi bir algoritma, mümkün olan en az adımla, en doğru çözümü üreten işlem adımları topluluğudur.
© 2013 – Öğr. Gör. Utku KÖSE 2 Örnek Algoritmalar:
1- Ekrana “Naber la?” yazdıran algoritma:
A1: Başla
A2: “Naber la?” yaz A3: Dur
2- Klavyeden girilen bir sayıyı ekrana yazdıran algoritma:
A1: Başla A2: x oku
A3: “Girilen sayı:” x yaz A4: Dur
3- Klavyeden girilen iki sayının toplamını ekrana yazdıran algoritma:
A1: Başla
A2: “Birinci sayıyı giriniz:” yaz A3: x oku
A4: “İkinci sayıyı giriniz:” yaz A5: y oku
A6: toplam = x + y (Bu satırda aktarma operatörü vardır. Detaylı bilgi için ilerleyen sayfalara bakınız.)
A7: “Girilen sayıların toplamı:” toplam yaz A8: Dur
Not: Gerekli operatör değiştirilerek (ve gerekli değişkenler daha anlamlı isimlendirilerek) diğer üç temel matematik işlemlerinden birisi gerçekleştirilebilir.
Matematiksel Operatörler:
+ Toplama - Çıkarma * Çarpma / Bölme
^ Üs alma (örneğin 3^2 3’ün karesi; 4^6 4’ün 6’ıncı kuvveti…vb.)
% Mod operatörü (örneğin 4 % 2 4’ün 2’ye bölümünden kalan 0 …vb.)
© 2013 – Öğr. Gör. Utku KÖSE 3 Mantıksal Operatörler:
< Küçüktür > Büyüktür <= Küçük eşit >= Büyük eşit
= = Eşittir ! = Eşit değildir
Aktarma Operatörü:
değişken ismi = sabit değer; değişken; işlemler bütünü (değişken ve / veya sabit karışık)
Aktarma operatöründe, önce eşittir karakterinin sağındaki değerler dikkate alınır veya işlemler varsa yapılır. Sonra, söz konusu değerler veya yapılan işlemler sonrası çıkan sonuç eşittir işaretinin solundaki değişkene aktarılır. Aktarma operatörünün solunda daima değişken vardır.
Eğer Yapısı: Şart kontrolü için kullanılır. “Eğer” ifadesinden sonra şart yazılır (parantez içinde) sonra “ise” ifadesi yazılır. Şart doğruysa gerçekleştirilecek işlemler “ise” ifadesinden sonra yazılır.
Eğer (şart) ise işlem(ler)
Birden fazla işlem adımı olması durumunda aralarına “ve” eki koyulabilir (Örneğin; toplam = x + y ve A4’e git … vb.)
Eğer tek bir adımda şartın doğru olması durumundaki işlemler ve yanlış olması durumundaki işlemler yazılmak istenirse, “değilse” ifadesi kullanılabilir.
Eğer (şart) ise şartın doğru olması durumundaki işlem(ler) değilse şartın yanlış olması durumunda işlem(ler)
Aynı anda birden fazla şartın bir arada kontrolü için; “VE”, “VEYA” mantık ifadeleri kullanılabilir:
x y VE VEYA
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1
© 2013 – Öğr. Gör. Utku KÖSE 4 VE kontrolü yazılırken; && operatörü ya da ˄ kullanılabilir.
VEYA kontrolü yazılırken; || operatörü ya da ˅ kullanılabilir.
Örnek Algoritmalar:
1- Klavyeden girilen bir sayının tek mi çift mi olduğunu ekrana yazdıran algoritma:
A1- Başla
A2- “Bir sayı giriniz:” yaz A3- sayi oku
A4- Eğer (sayi % 2 = = 0) ise “Girilen sayı çifttir” yaz değilse “Girilen sayı tektir” yaz A5- Dur
2- Klavyeden girilen vize ve final notuna göre başarı notu hesaplayıp, başarı notu 60’dan küçükse ekrana “Geçtin!”, aksi takdirde “Kaldın oğlum!” yazdıran algoritma:
A1- Başla
A2- “Vize notunuzu giriniz:” yaz A3- vize oku
A4- “Final notunuzu giriniz:” yaz A5- final oku
A6- basari = (vize * 0,4) + (final * 0,6) A7- Eğer (basari < 60) ise “Geçtin!” yaz
A8- Eğer (basari >= 60) ise “Kaldın oğlum!” yaz A9- Dur
Not: Algoritma, örnek olması adına iki farklı Eğer adımı ile yazılmıştır; “değilse” yapısının kullanımıyla daha optimum düzeyde yazılabilir.
Örnek Sorular:
1- Klavyeden girilen sayı tek ise ilgili sayının karesini, çift ise küpünü alıp; ekrana sonucu yazdıran algoritmayı yazınız.
2- x + y = toplam eşitliğine göre, klavyeden x ve toplam değerleri girildiğinde y değerini bulup ekrana yazdıran algoritmayı yazınız.
3- Klavyeden iki kenarı girilen dikdörtgenin alanını ekrana yazdıran algoritmayı yazınız.
© 2013 – Öğr. Gör. Utku KÖSE 5 4- Klavyeden girilen değere ilişkin çarpım tablosunu ekrana yazdıran algoritmayı yazınız.
5- Klavyeden girilen yaş bilgilerine göre, ekrana “çocuk”, “genç”, “yetişkin” veya “yaşlı”
yazdıran algoritmayı yazınız (Yaş aralıklarını istediğiniz şekilde belirleyebilirsiniz).
Döngü Muhabbeti:
Döngü yapısı, tıpkı “Eğer” yapısında olduğu gibi; programlama dillerinin en önemli bileşenlerinden birisi olarak ön plana çıkmaktadır. Genel olarak döngüyü, belirli şartlar dâhilinde sürekli gerçekleştirilmesi istenilen adımların yerine getirilmesi ya da ilgili adımlar olarak tanımlayabiliriz.
Örnek Algoritmalar:
1- [1, 100] aralığındaki tamsayıların toplamını bulup, ekrana yazdıran algoritma:
A1: Başla
A2: toplam = 0 sayi = 1;
A3: toplam = toplam + sayi
A4: Eğer (sayi != 100) ise sayi = sayi + 1 ve A3’e git A5: “Sonuç:” toplam yaz
A6: Dur
2- Klavyeden girilen başlangıç ve bitiş değerlerine bağlı olarak; ilgili aralıktaki tamsayıların çarpımını bulup, ekrana yazdıran algoritma:
A1: Başla A2: carpim = 1
A3: “Başlangıç değerini giriniz:” yaz A4: baslangic oku
A5: “Bitiş değerini giriniz:” yaz A6: bitis oku
A7: carpim = carpim * baslangic
A8: Eğer (baslangic != bitis) ise baslangic = baslangic + 1 ve A7’ye git A9: “Sonuç:” carpim yaz
A10: Dur
© 2013 – Öğr. Gör. Utku KÖSE 6 Not: Algoritmada, kullanıcının başlangıç değerini bitiş değerinden küçük girdiği kabul edilmiştir.
Örnek Sorular:
1- Klavyeden girilen isim bilgisini, yine klavyeden girilen değer kadar ekrana yazdıran algoritmayı yazınız.
2- Kullanıcı yeni bir işlem istemediğini bildirinceye kadar, klavyeden sürekli iki sayı girilmesini isteyen ve girilen sayıların toplamını ekrana yazdıran algoritmayı yazınız.
3- Klavyeden girilen değerin faktöriyelini bulup ekrana yazdıran algoritmayı yazınız.
4- Klavyeden girilen bir değerin kuvvetini döngü yardımıyla bulup ekrana yazdıran algoritmayı yazınız.
5- Klavyeden girilen bir tamsayının, yine klavyeden girilen başka bir tamsayıya olan bölümünü, çıkarma işlemi kullanarak bulan algoritmayı yazınız (Kullanıcı taraflı hatalı değer girişleri yok varsayılacaktır).
Akış Şeması: Algoritmanın görsel gösterimine (veya gösterim haline) akış şeması denir.
İlgili işlemler için aşağıdaki şekiller kullanılır:
Başla / Dur Genel İşlemler Akış yönleri
Şart kontrol -
Eğer
1
0
Klavyeden okuma - oku
Ekrana yazdırma - yaz
Bağlantı (akış şemasının
bir parçasını başka bir yerde
göstermek gerektiğinde)
© 2013 – Öğr. Gör. Utku KÖSE 7 Örnek Akış Şemaları:
(2. sayfadaki 3. algoritma örneğinin akış şemasını çizelim)
Başla
x
toplam = x + y
Dur y
“İkinci sayıyı giriniz:”
“Birinci sayıyı giriniz:”
“Girilen sayıların toplamı:”
toplam
© 2013 – Öğr. Gör. Utku KÖSE 8 (4. sayfadaki 1. algoritma örneğinin akış şemasını çizelim)
Başla
Dur (sayi % 2
= = 0)
1
0
“Bir sayı giriniz:”
sayi
“Girilen sayı tektir”
“Girilen sayı çifttir”
© 2013 – Öğr. Gör. Utku KÖSE 9 (5. sayfadaki 1. algoritma örneğinin akış şemasını çizelim)
Örnek Sorular:
Bu dokümanda yer alan ve akış şeması çizilmeyen bütün algoritmalar için akış şeması çiziniz.
== DOKÜMAN SONU ==
07.10.2013 – UK Başla
Dur (sayi ! =
100)
1
0 toplam = 0
sayi = 1
toplam = toplam + sayi
sayi = sayi + 1
“Sonuç:” toplam yaz