You are on page 1of 10

Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.

tr), PAÜ Bilgisayar Mühendisliği Bölümü

BÖLÜM 2: ALGORİTMALAR

Algoritma bir problemin çözümünde (işlemin gerçekleşmesinde) izlenen adımlar


dizisi olup, problemi çözmek için yürütülecek eylemlerin ve bu eylemlerin sırasını
belirten bir talimattır, prosedürdür.

M.S. 9. yüzyılda İranlı Musaoğlu Horzumlu Mehmet Alharezmi problemlerin


çözümü için genel kurallar oluşturmuştur. Algoritma, Alharezmi'nin Latince
okunuşu olup bu kişinin adından gelmektedir.

Algoritmaların sağlaması gereken kriterler:

1. Girdi: Sıfır veya daha fazla değer dışarıdan girilmelidir.


2. Çıktı: En azından bir değer üretilmeli.
3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli. Bu özellik
geçerli değilse program işletim sistemleri gibi sonsuza dek çalışır.
5. Etkinlik: Her komut kişinin kalem ve kâğıt ile yürütebileceği kadar basit
olmalıdır.

Algoritmaların yazım dili çok farklı olabilir. Günlük konuşma diline yakın bir dil
olabileceği gibi daha simgesel de olabilir. Algoritmaların özel geometrik şekillerle
gösterilmesi de akış diyagramı olarak tanımlanır. Akış diyagramları geleneksel
olarak kullanılan bir yapı olup algoritmayı yazarken farklı anlamlar taşıyan değişik
şekillerdeki kutulardan yararlanılır. Yine aynı amaç için programlama diline yakın
bir pseudocode (sözde kod) da kendimize özgü olarak kullanılabilir.

I. ALGORİTMALARDA KULLANILAN İŞLEM OPERATÖRLERİ

1. Matematiksel (aritmetik) işlemler:

İşlem Matematik Bilgisayar dili


Toplama a+b a+b
Çıkarma a-b a-b
Üs alma ab a ^ b, a**b, pow(a,b)
Çarpma a.b a*b
Bölme a÷b a/b
Gerçel sayılar 3,14 3.14

Matematiksel işlemlerde öncelik sıraları


Sıra İşlem Bilgisayar dili
1 Parantezler ((……..))
2 Üs alma a ^ b, a**b, pow(a,b)
3 Çarpma ve Bölme a * b ve a / b
4 Toplama ve Çıkarma a + b ve a - b

7
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

2. Karşılaştırma (karar) işlemleri:

Karşılaştırma İşlemleri
İşlem sembolü Anlamı
= veya == Eşittir
<> veya != Eşit değildir
> Büyüktür
< Küçüktür
>= veya => Büyük eşittir
<= veya =< Küçük eşittir

3. Mantıksal (Lojik) işlemler:

Mantıksal işlem karşılıkları


Mantıksal işlem Bilgisayar dili Matematiksel sembol
VE AND veya && .
VEYA OR veya || +
DEĞİL NOT veya ! '

Mantıksal işlem sonuçları


Sonuç Rakam Bilgisayar Lambanın Anahtarın Gerilim
olarak dili durumu durumu durumu
Doğru 1 True Yanıyor Kapalı Var
Yanlış 0 False Yanmıyor Açık Yok

Temel mantıksal işlem tabloları:

VE (AND) doğruluk tablosu


A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1

VEYA (OR) doğruluk tablosu


A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1

DEĞİL (NOT) doğruluk tablosu


A DEĞİL (NOT) A
0 1
1 0

8
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

Mantıksal işlemlerde öncelik sıraları


Sıra İşlem Bilgisayar dili
1 Parantez içindeki işlemler ((……..))
2 DEĞİL NOT veya !
3 VE AND veya &&
4 VEYA OR veya ||

II. ALGORİTMALARDA KULLANILAN ÖZEL TERİMLER

1. Değişken (Variable)

Programın her çalıştırılmasında farklı değerler alabilen (aktarılabilen) bilgi


alanlarıdır.

Değişken isimlerinde:
1. İngiliz alfabesinin A-Z arası büyük ve küçük 26 harfi kullanılabilir.
2. 0–9 arası rakamlar kullanılabilir.
3. Alt çizgi ( _ ) dışında özel karakter kullanılmaz.
4. Mutlaka bir harf ile başlamalıdır.

Değişken adının yerini aldığı ifadeye çağrışım yapacak şekilde olması programın
anlaşırlılığı açısından önemlidir.

Örnek 1: Girilen iki sayının toplamını görüntüleyen algoritma.


1. Başla
2. Birinci sayıyı (A) gir
3. İkinci sayıyı (B) gir
4. C=A+B işlemini yap
5. Sonucu (C) yaz
6. Dur

Örnek 1 için uygulama sonuçları:


Girilen A sayısı Girilen B sayısı C=A+B Yazılan C sayısı
5 3 8 8

Örnek 2: Numarası, 1. Vize, 2. Vize ve Final notu girilen bir öğrencinin


numarasıyla beraber başarı notunu hesaplayıp görüntüleyen algoritma.
1. Başla
2. Öğrencinin numarasını (No) gir
3. Öğrencinin 1. vize notunu (Vize1) gir
4. Öğrencinin 2. vize notunu (Vize2) gir
5. Öğrencinin final (Final) notunu gir
6. BN = 0.25*(Vize1+Vize2)+0.5*Final
7. Numara (No) ve ortalamayı (BN) yaz
8. Dur

No 1. Vize 2. Vize Final BN Ekrana Yazılan


118 50 70 80 70 118 70

9
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

2. Aktarma

Herhangi bir bilgi alanına bilgi yazma, veri yazma, herhangi bir ifadenin sonucunu
başka bir değişkende gösterme gibi görevlerde aktarma işlemi kullanılır.

Değişken = İfade (matematiksel, mantıksal veya alfa-sayısal)

Aktarma operatörü

Sağdaki ifadenin sonucunu soldaki değişkene aktarır. Bu durumda değişkenin


eğer varsa bir önceki değeri (eski değer) kaybolur.

Aktarma işlemi uygulama sonuçları:


a b Eski c Yeni c
Matematiksel ifadelerde (c=a+b)
3 7 - 10 1. Çalıştırma
5 7 10 12 2. Çalıştırma
20 33 12 53 3. Çalıştırma
Mantıksal ifadelerde (c=a+b)
0 1 - 1 1. Çalıştırma
0 0 1 0 2. Çalıştırma
1 1 0 1 3. Çalıştırma
Alfasayısal ifadelerde (c=a+b)
Galata saray - Galatasaray 1. Çalıştırma
Fener bahçe Galatasaray Fenerbahçe 2. Çalıştırma
Denizli spor Fenerbahçe Denizlispor 3. Çalıştırma

Matematiksel mantıkla yaklaşılırsa:


toplam = toplam + 1
toplam - toplam = 1
0=1
şeklinde yanlış bir sonuç çıkar. Bilgisayar dilinde ise durum farklı olup, önce sağ
taraftaki ifadedeki işlem gerçekleştirilir ve sonuç aktarma operatörünün (=) sol
tarafındaki değişkene aktarılır.

Örnek 3: Girilen üç sayının toplamını görüntüleyen algoritma.


1. Başla
2. T=0
3. Bir sayı (A) gir
4. T=T+A işlemini yap
5. Başka bir sayı (B) gir
6. T=T+B işlemini yap
7. Başka bir sayı (C) gir
8. T=T+C işlemini yap
9. Yaz (T)
10. Dur

A B C Eski T Yeni T
3 - - 0 0+3=3
- 4 - 3 3+4=7
- - 5 7 7+5=12

10
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

3. Döngü (Loop)

Programlarda bazı işlemlerin tekrar tekrar yapılması veya belirli aralıklardaki


ardışık değerlerin kullanılması gerekebilir.

Örneğin 1 ile 1000 arasındaki tek sayıları toplamak için T=1+3+5+7+ … + 999
şeklinde uzun uzun yazmak yerine 1 den başlayıp 2’şer 2’şer artan bir döngü ile
bu işlem kolayca yapılabilir.

Döngü Değişkeni = Döngü değişkeni ± Adım

Döngü değişkeninin (Sayaç) eski değerine adım değeri eklenir/çıkartılır ve bulunan


yeni değer döngü değişkeninin yeni değeri olarak döngü değişkenine aktarılır.

S = S + 5 (Beşer beşer artan sayaç)


S = S – 1 (Birer birer eksilen sayaç)

Döngü oluşturma kuralları:

1. Döngü değişkenine başlangıç değeri verilir


2. Döngünün artma veya azalma miktarı belirlenir
3. Döngünün bitiş değeri belirlenir
4. Eğer döngü karar ifadesiyle oluşturulduysa, sayaç değişkeni döngü içinde
adım miktarı kadar artırılmalı ve azaltılmalı

Örnek 4: 1-5 arası sayıları ekrana yazdıran algoritma.


1. Başla
2. S=0
3. Eğer S>4 ise git 7
4. S=S+1
5. Yaz S
6. Git 3
7. Dur

Eski S Yeni S Ekrana Yazılan


0 0+1=1 1
1 1+1=2 2
2 2+1=3 3
3 3+1=4 4
4 4+1=5 5

Aynı örneği aşağıdaki algoritma ile de çözebiliriz:


1. Başla
2. S=1
3. Yaz S
4. S=S+1
5. Eğer S <= 5 ise git 3
6. Dur

11
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

4. Ardışık Toplama

Toplam değişkeni = Toplam değişkeni + Sayı


Toplam değişkenine başlangıç değeri olarak 0 atanır

Örnek 5: Dışarıdan girilen 10 adet sayının ortalamasını bulup görüntüleyen


algoritma.
1. Başla
2. T = 0
3. S = 1
4. Eğer S > 10 ise git 9
5. Sayıyı (A) gir
6. T = T + A
7. S = S + 1
8. Git 4
9. Ort = T / 10
10. Yaz (Ort)
11. Dur

5. Ardışık Çarpma

Çarpım değişkeni = Çarpım değişkeni * Sayı


Çarpım değişkenine başlangıç değeri olarak 1 atanır

Örnek 6: Dışarıdan girilen N sayısının faktöriyelini hesaplayıp görüntüleyen


algoritma:
1. Başla
2. (N) sayısını gir
3. F = 1
4. S = 1
5. Eğer S > N ise git 9
6. F = F * S
7. S = S + 1
8. Git 5
9. Yaz (F)
10. Dur

III. GENEL ÖRNEKLER

Algoritmalarda kullanılan notasyon günlük konuşma diline yakın olabileceği gibi


daha simgesel de olabilir. Aşağıda bu notasyonlara örnekler verilmiştir.

Örnek 1: 1'den 100'e kadar olan sayıların toplamını veren algoritma.


1. Toplam T, sayılar da i diye çağırılsın.
2. Başlangıçta T'nin değeri 0 ve i'nin değeri 1 olsun.
3. i'nin değerini T'ye ekle.
4. i'nin değerini 1 arttır.
5. Eğer i'nin değeri 100'den büyük değil ise 3. adıma git.
6. T'nin değerini yaz.
7. Dur.

12
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

Aynı algoritmayı aşağıdaki gibi de yazabiliriz.


1. T=0 ve i=1
2. i'nin değerini T'ye ekle
3. i'yi 1 arttır
4. i<=100 ise 2. adıma git
5. T'nin değerini yaz
6. Dur

veya aşağıdaki şekilde de yazılabilir ki bizim de benimseyeceğimiz teknik budur.

1. T=0 ve i=1
2. i<=100 olduğu sürece tekrarla
2.1. T = T + i
2.2. i = i + 1
3. T'nin değerini yaz
4. Dur

Döngü Gösterimi:
Tekrarlanan adımlar
Adım x. Koşul sağlandığı sürece
x.1 ...
x.2 ...
Tekrarlanan adımlar

x.n ...

Örnek 2: İkinci derecede ( ax 2  bx  c  0 ) bir denklemin köklerini veren programın


algoritması.
Girdi: a, b ve c katsayıları
Çıktı: Denklemin kökleri

1. a, b ve c katsayılarını al.
2. Delta = b * b - 4 * a * c
3. Eğer Delta < 0 ise Git 8
4. x1 = (-b + sqrt(delta)) / (2 * a)
5. x2 = (-b - sqrt(delta)) / (2 * a)
6. Yaz (x1, x2)
7. Git 9
8. Yaz “Gerçel kök yoktur”
9. Dur

Örnek 3: İki tamsayının çarpımını sadece toplama işlemi kullanarak gerçekleyen


algoritma.
Girdi: İki tamsayı
Çıktı: Sayıların çarpımı

1. a ve b sayılarını oku
2. c = 0
3. b > 0 olduğu sürece tekrarla
3.1. c = c + a
3.2. b = b - 1
4. Yaz (c)
5. Dur

13
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

Örnek 4: Bir tamsayının faktöriyelini döngü tekniği kullanarak hesaplayan


algoritma.
Girdi : Bir tamsayı, Çıktı : Sayının faktoriyel
İlgili formul: Faktoriyel(n)=1*2*...*n

1. N değerini oku
2. F = 1
3. N >1 olduğu sürece tekrarla
3.1. F = F * N
3.2. N = N - 1
4. Yaz (F)
5. Dur

Örnek 5: İki tamsayının bölme işlemini sadece çıkarma işlemi kullanarak


gerçekleştiren algoritma. Bölüm ve kalanın ne olduğu da bulunacak.
Girdi: İki tamsayı
Çıktı: Bölüm ve Kalan

1. a ve b değerlerini oku
2. m=0
3. a >= b olduğu sürece tekrarla
3.1. a = a - b
3.2. m = m + 1
4. Yaz kalan (a) ve bölüm (m)
5. Dur

Örnek 6: 100 adet sayıyı okuyup, ortalamasını bulan algoritma


1. T=0, i=1
2. i<=100 olduğu sürece tekrarla
2.1 m değerini oku
2.2 T = T + m
2.3 i = i + 1
3. Ort = T / 100
4. Ortalama (Ort) yaz
5. Dur

Örnek 7: Sınavdaki en büyük notu bulan algoritma.


1. En büyük = ilk sınav kağıdındaki not (ya da olabilecek en düşük değer kabul
edilebilir).
2. Başka incelenecek sınav kağıdı olduğu sürece
2.1 Sınav kağıdındaki not > En büyük ise En büyük = Sınav kağıdındaki not
3. En büyük değerini yaz.
4. Dur.

Algoritmanın yazımı daha simgesel olabilir. Ni, i. Öğrencinin notu olsun.


1. EB = N1
2. i = 2
3. İncelenecek sınav kağıdı var ise
3.1 Ni > EB => EB = Ni
3.2 i = i + 1
4. EB’ yi yaz.
5. Dur

14
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

Koşul Gösterimi:
Adım x. Koşul doğru ise
x.1 ...
x.2 ...
işlenen adımlar

x.n ...
aksi halde
x.1 ...
x.2 ...
işlenen adımlar

x.n ...

Örnek 8: Yukarda gösterilen notasyona göre kök bulma örneğinde 3. Adımı ve


sonrasını tekrar yazalım;
1. a, b ve c katsayılarını al.
2. Delta = b * b - 4 * a * c
3. Eğer Delta >= 0 ise
3.1. x1 = (-b + sqrt(delta)) / (2 * a)
3.2. x2 = (-b - sqrt(delta)) / (2 * a)
3.3. Yaz (x1, x2)
aksi halde
3.1. Yaz “Gerçel kök yoktur”
4. Dur

Sorular:
1. Girilen üç sayıdan en büyüğünü bulan algoritmayı yazınız.
2. Tamsayılarda üs alma işlemini gerçekleştiren algoritmayı yazınız ( a b ).
3. 1–100 arasında tutulan bir sayıyı tahmin eden algoritmayı yazınız.
4. Girilen N adet sayının;
a) Toplamını, b) Tek olanlarının toplamını, c) Çift olanların toplamını
d) En küçüğünü ve e) En büyüğünü bulan algoritmayı yazınız.

IV. PSEUDOCODE ÖRNEKLERİ

Örnek 1: İki sayı oku, toplamını bul, yazdır.


oku A, B
TOPLAM = A + B
yazdır TOPLAM

Örnek 2: İki sayı okuyunuz. İkisini karşılaştırarak hangisinin büyük, hangisinin


küçük olduğunu veya eşit olup olmadıklarını bulup uygun açıklamalarla yazdırınız.
oku A, B
A < B ise yazdır A, “<“, B
A = B ise yazdır A, “=“, B
A > B ise yazdır A, “>“, B

Örnek 3: Birden ona kadar sayıların toplamını bulup yazdırınız.


TOPLAM = 0
SAYAC = 1’den 10’a kadar devam et
TOPLAM = TOPLAM + SAYAC
SAYAC = SAYAC + 1
Yazdır “1’den 10’a kadar olan sayıların toplamı =“, TOPLAM

15
Bölüm 2, Yrd. Doç. Dr. A. Kadir YALDIR (akyaldir@pamukkale.edu.tr), PAÜ Bilgisayar Mühendisliği Bölümü

Örnek 4: Klavyeden girişi yapılacak on adet pozitif sayıyı okuyup bu sayıları ve


sayıların aritmetik ortalamasını bulup ekrana yazdırınız.
TOPLAM = 0
SAYAC = 1’den 10’a kadar devam
oku SAYI
EĞER SAYI > 0 İSE
yazdır SAYI
TOPLAM = TOPLAM + SAYI
SAYAC = SAYAC + 1
ORTALAMA = TOPLAM / 10
yazdır “Okunan on sayının ortalaması = “, ORTALAMA

Örnek 5: Klavyeden girişi yapılacak pozitif sayıları okuyup bu sayıları ve sayıların


aritmetik ortalamasını bulup ekrana yazdıracak bir uygulama geliştiriniz. Kaç sayı
okuyacağımızı bilmiyoruz. Sayıların bittiğini en sonda girilen –1 sayısı belirtecektir.
TOPLAM = 0
SAYAC = 0
oku SAYI
SAYI –1’den farklı olduğu müddetçe devam et
yazdır SAYI
SAYAC = SAYAC + 1
TOPLAM = TOPLAM + SAYI
oku SAYI
ORTALAMA = TOPLAM / SAYAC
yazdır “Okunan sayıların kaç tane olduğu = ”, SAYAC
yazdır “Okunan sayıların ortalaması = “, ORTALAMA

Sorular:
Aşağıdaki soruların pseudocode çözümlerini yapınız

1. Klavyeden girilen 2 sayının yerini değiştiriniz.


2. Bilinmeyen sayıda tam sayı okuyup (Veri sonu işareti –100)
a) Girilen sayıların adedi
b) 1’den büyük veya eşit ve 10’dan küçük sayıların adedi
c) 5 ile 15 arasındaki (dahil) sayıların adedi.
3. 1 ile 100 arasındaki tam sayıların tek ve çift olanların ayrı ayrı toplamlarını
bulunuz.
4. Okunan bir tam sayının tek mi çift mi olduğunu bulunuz.
5. 1 ile 10 arasındaki tam sayıların çarpımını bulunuz.
6. Her seferinde 2 sayı okunacak: DIRENC ve AKIM. VOLTAJI bulup yazdırınız.
Voltaj = direnç * akım.
7. Bir dolabın tamiri için bir pseudocode geliştiriniz. Varılacak sonuç / Çıktı: “Tamir
etme!” veya tamir edilmiş dolap. Sorgulanacak konular:
 tamir etmeye değer mi?
 araç-gereç var mı?
 gerekli yedek parçalar var mı?
8. Onluk sayı sisteminde verilen bir sayının ikili sayı sistemdeki karşılığını bulacak
bir pseudocode geliştiriniz
9. Üç haneli bir sayının birler, onlar ve yüzler hanelerindeki rakamları bulup
yazdırınız.

16

You might also like