2. Algoritma sözcüğü nereden gelmiştir?
Ebu Cafer Muhammed
İbni Musa El Harizmi
Algoritma sözcüğü batı dillerine, ünlü
Arap matematikçisi(Bazı kaynaklara göre
İranlı) El-Harezmi sayesinde geçmiştir.
Bu ünlü matematikçinin doğum tarihi 800
yılından önce olduğu tahmin
edilmektedir; ölüm yılı ise 847’dir.
Algoritma El-Harezmi’nin
değişik telâffuzlarının bir
neticesi sonucu oluşmuştur.
2
3. Algoritma Nedir ?
• Algoritma, belirli bir problemi çözmek için gerekli adımlar
kümesi ya da formül demektir. Bir algoritmanın varlığından
bahsedilebilmesi için , algoritmanın sunduğu kurallar
kümesinin, hiçbir şüpheye yer vermeyecek kadar kesin olması
gerekir ve algoritmanın duracağı , açık olarak ifade edilmiş
bir nokta mevcut olmalıdır.
Algoritma terimi hesaplama teorisinde ve bilgisayar
biliminde son derece önemli bir kavramdır. Algoritma ile ilgili
bazı tanımlar aşağıdaki gibidir;
3
4. • Algoritma, bir problemi sistematik olarak adım adım çözmek için
kullanılan bir yöntemdir.(T.Ottmann / P.Widmayer)
• Algoritma, belirli bir problemi çözmek için gerekli özgün adımlar
serisidir. (Dr.James F.Wirth)
• Algoritma, bir işi çözmek için gerekli yöntemi tanımlar. Algoritma,
doğru olarak icra edildikleri zaman verilen işi çözecek adımlar
dizisinden oluşur. (Goldschlager / Lister)
4
5. Algoritma, gerçekte bizim günlük yaşamamızda da
hiç yabancı olmadığımız bir şeydir. Bir noktadan
başka bir noktaya nasıl gidileceğini anlatan bir yol
tarifi bir algoritmadır ya da bir yemek ya da pastanın
nasıl pişirileceğini adım adım anlatan bir reçete de bir
algoritma oluşturur. Bilgisayar programları hep
algoritmalar üzerine kurulmuştur.
5
7. Bir çay demleme algoritması:
Mutfakta değilsen mutfağa git.
Çayı kontrol et, çay yoksa
Markete git çay al
Çaydanlığa bak dolu değilse su doldur
Ocağı yak.!
Ve çaydanlığı ateşin üstüne koy,
Suyun kaynamasını bekle.
Su kaynadıktan sonra , çayı bırak ve üstüne suyu dök…
Yine demliğe biraz daha su ilave ederek bekle.
Su kaynadığında biraz dinlendirerek ateşi kapat.
Çay bardağını al çayını doldur.
Çayına istediğin kadar şeker at ve karıştır.
Geldiğin odaya geri dön
Ve çayı yudumla…
7
8. Yataktan kalkıp , işe gidene kadar yapılacak
işlemleri anlatacak bir algoritmayı inceleyelim:
Yataktan kalk
Pijamalarını çıkar
Banyoya git
Duş al
Kurulan
Giyin
Mutfağa git
Kahvaltı yap
Lavaboya git
Dişlerini fırçala
İşe doğru yola çık
8
9. Şimdi de aynı işlemlerin farklı bir
sırada uygulanacağını düşünelim
Yataktan kalk
Pijamalarını çıkar
Giyin
Duş al
Kahvaltı yap
İşe doğru yola çık
Bu algoritma uygulanırsa işe ıslak
elbiselerle gidilir. Bir programda ,
yapılacak işlemlerin sırasını
belirlemeye program kontrolü denir.
9
10. BİR ALGORİTMADA EN ÖNEMLİ ÖZELLİKLER
1) Basit olması
2) Problemin çözümünü mümkün olan en az adım ile
(en kısa sürede) gerçekleştirmesidir. Bu
özelliklere sahip olan algoritmalara şık
algoritma (elegant algorithm) ya da etkin
algoritma (efficient algorithm) denir.
10
11. SAYISAL ALGORİTMA Bir sayısal algoritma ,
adımlarının pek çoğu ayrı ayrı
bellek elemanlarına
kaydedilen hesaplamalardan
oluşan bir algoritmadır.
11
12. BELLEK ELEMANI
Burada , bellek elemanı ile kastedilen şey, algoritmanın
adımlarının sonuçlarını kaydetmek için kullanılabilecek
bir kayıt birimidir ; bu birim kağıt üzerindeki bir
dikdörtgen bölge olabileceği gibi, bilgisayar belleğinde
bir değişken ya da dizi elemanı da olabilir.
Belli bir anda, bir bellek elemanına sadece bir
sonuç kaydedilebilir.
12
13. ALGORİTMANIN BİLEŞENLERİ
• Problemin tanımı
• Başlangıç durumu ya da koşullarının belirtilmesi
• Parametrelerin belirlenmesi
• İcra
• Sonuç
Algoritmaların pek çoğu, aşağıdaki temel parçalardan
oluşur:
13
14. Bir sayı listesi verilmiştir. Bu verilen
sayıların toplamını bulunuz.
Verilen sayıların toplamını hesaplayan bir algoritma
tasarlayalım. Kullanacağımız sayılar,10,5,20 olsun. Şimdi
bu problemi kağıt üzerinde nasıl bir algoritma ile ifade
edebiliriz, onun yollarını araştıralım.
PROBLEMİNTANIMI
14
ÖRNEK
15. BAŞLANGIÇ DURUMUYA DA KOŞULLARININ
BELİRLENMESİ
Kağıt üzerine , sayı ve toplam adlı iki kutu çizelim ve
toplam kutusunun içine 0 (sıfır) yazalım. Çünkü, henüz
hiçbir sayı toplanmadığı için toplam değeri başlangıçta
sıfır olmalıdır:
0
Sayı Toplam
15
16. PARAMETRELER
Algoritmanın icrası esnasında , her adımda bir sayı istenecektir.
Aşağıda 3 adımı, hiçbir sayı kalmayıncaya kadar tekrarla:
1.Verilen yeni sayıyı , sayı adlı kutuya kaydet; yeni
bir sayı gelince , sayı adlı kutuda önceki sayının
silineceğini unutma!
2.Toplam ve sayı adlı kutulardaki sayıların toplamını
hesapla!
İCRA
16
17. 3. Bulunan değeri, toplam adlı kutuya kaydet! Bu kayıt
işlemi, toplam adlı kutuda bir önceki adım sonucunda
saklanan sayıyı silecektir.
Aşağıda, yukarıda belirtilen,10,5,20 verileri için
algoritmanın nasıl ilerlediğini şekilsel olarak verilmiştir:
10 0
Sayı Toplam
10 10
Sayı Toplam
I. 1)
2) 10+0=10
3)
17
19. 20 15
Sayı Toplam
20 35
Sayı Toplam
III. 1)
2) 20+15=35
3)
SONUÇ Toplam adlı kutuda elde edilen
sayı(35), arzu edilen sonuçtur; yani
verilen sayıların toplamıdır.
19
24. Küme işlem operatörleri
+ Birleşim
- Fark
* Kesişim
= Eşit
<> Eşit değil
=< veya <= Soldaki küme, sağdakinin
alt kümesi
>= veya => Sağdaki küme, soldakinin
alt kümesi
24
27. •Konuşma Dili
Bir algoritmanın, doğal dil kullanılarak ifade edilmesi.
Kullanımında bazı sakıncalar vardır.
Bu sakıncalar şunlardır:
1) Doğal dil ile ifade biçimlerinde belirsizlik ya da çok
anlamlılık olabilir. Bazı ifadeler yanlış anlaşılabilir.
2) Doğal dil ile ifade edilmiş bir algoritmanın başka biçimlere
mesela bilgisayar kodu haline dönüştürülmesinde güçlükler
ve belirsizlikler olabilir.
27
28. •Sahte Kod (Pseudo Code)
Kaba Kod veyaYalancı Kod veya Sözde
Kod, bir algoritmanın yarı programlama
dili kuralı, yarı konuşma diline dönük
olarak ortaya koyulması/ tanımlanmasıdır.
Bu şekilde gösterim algoritmayı genel
hatlarıyla yansıtır.
28
29. •Akış Diyagramı(flow-chart)
Akış diyagramı, algoritmanın görsel/şekilsel
olarak ortaya koyulmasıdır. Problemin
çözümü için yapılması gerekenleri, başından
sonuna kadar, geometrik şekillerden oluşan
simgelerle gösterir.
29
30. ALGORİTMA YAZIMI
• Sözde kod yada diğer deyimle algoritma hazırlanırken
bazı kullanımlar vardır. Bunlar şunlardır:
• OKU:Veri girişinin yapılacağını belirler.
• EĞER…İSE…DEĞİLSE….: Şart belirtmek için kullanılır.
• GİT… : Belirli bir adıma yönlendirmek için kullanılır.
• DÖN ..DEN..
• DÖNGÜ SONU :Döngüleri belirtmek için kullanılır.
30
32. Tanımlayıcı(değişken)
• Program yazan kişi tarafından düşünülüp oluşturulan ve
programdaki değişkenleri, sabitleri, kayıt alanlarını, alt
programları, vs.. adlandırmak için kullanılan kelimelere
tanımlayıcı denir.
• Bu kelimeler isimlendirilirken bu kurallara dikkat edilmelidir:
• İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılabilir.
• 0-9 rakamları kullanılabilir.
• Sembollerden alt çizgi kullanılabilir. ( _ )
• Tanımlayıcı ifadeleri harf veya altçizgi ile başlayabilir ama
rakamla başlamaz.
• İsimler oluşturulurken boşluk kullanılmamalıdır.
maaş katsayısı değil maas_katsayisi
32
33. Sabit
•Programdaki değeri değişmeyen ifadelere “sabit” denir.
“İsimlendirme kuralları”na uygun olarak oluşturulan
sabitlere, sayısal veriler doğrudan; alfa sayısal veriler ise
tek/çift tırnak içinde aktarılır.
33
34. Aktarma
Herhangi bir ifadenin sonucunu başka bir
değişkende göstermedir.
degisken = ifade
ifade kısmında matematiksel, mantıksal veya harfsel
(alfasayısal) ifade olabilir.
= sembolü atama operatörüdür. Bu operatör,
sağda hesaplanan ifadenin değerini degisken içine (sola)
iletir.
34
35. ÖRNEK
Klavyeden girilen üç sayının
toplamını bulan algoritma.
1. Başla
2. t=0
3. OKU a
4. t=t+a
5. OKU b
6. t=t+b
7. OKU c
8. t=t+c
9. Yaz t
10.Dur 35
36. Sayaç
Programlarda bazı işlemlerin belirli sayıda yaptırılması veya
işlenen/üretilen değerlerin sayılması gerekebilir.
say=say+1
Bu işlemde sağdaki ifadede değişkenin eski değerine 1
eklenmekte; bulunan sonuç yine kendisine yeni değer olarak
aktarılmaktadır. Bu tür sayma işlemlerine algoritmada sayaç
adı verilir.
Sayacın genel formülü;
Sayaç değişkeni=sayaç değişkeni+adım
Örnek; X=X+3 36
37. ÖRNEK Aşağıdaki algoritmada 1-5 arası sayılar, ekrana
yazdırılmaktadır. 1-5 arası sayıları oluşturmak
için sayaç(s=s+1) kullanılmıştır.
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
37
38. Döngü
• Bazı işlemler belli ardışık değerlerle veya belli sayıda
gerçekleştirilmektedir.
• Programda belirli komut bütünlerini belirli sayıda
yaptırabilmek için döngüler kullanılır.
• Algoritma yazarken döngü akış işlemlerinde genellikle
sayaç kullanılır.
38
39. Döngü oluşturma kuralları
• Döngü değişkenine başlangıç değeri verilir.
• Döngünün artma veya azalma miktarı belirlenir.
• Döngünün bitiş değeri belirlenir.
• Eğer döngü, karar / karşılaştırma ifadeleriyle
oluşturuluyorsa; döngü değişkeni, döngü içinde
adım miktarı kadar arttırılmalı / azaltılmalıdır.
39
40. ÖRNEK Aşağıdaki algoritmada, 1 ile 10 arası tek
sayıların toplamı hesaplanmaktadır.
1) Başla
2) T=0
3) J=1
4) Eğer j>10
ise git 8
5) T=T+J
6) J=J+2
7) Git4
8) Dur
Eski J EskiT Yeni T Yeni J
1 0 0+1=1 3
3 1 1+3=4 5
5 4 4+5=9 7
7 9 9+7=16 9
9 16 16+9=25 11
11 - - -
DÖNGÜ
40
42. ÖRNEK
Klavyeden girilen 5
sayısının ortalamasını
bulan programın
algoritması.
1) Başla
2) T=0
3) S=0
4) Eğer S>4 ise git 9
5) S=S+1
6) Sayıyı (A) gir
7) T=T+A
8) Git 4
9) Ortalama=T/5
10)Yaz Ortalama
11)Dur 42
43. Ardışık Çarpma
Ardışık veya ardışıl çarpma işleminde; aynı değer, yeni
değerlerle çarpılarak eskisinin üzerine aktarılmaktadır.
Çarpım değişkeni=Çarpım değişkeni * Sayı
43
44. ÖRNEK
Klavyeden girilen N
sayısının faktöriyelini
hesaplayan
programın
algoritmasını yazınız.
1) Başla
2) N sayısını gir
3) Fak=1
4) S=0
5) Eğer S>N-1 ise git 9
6) S=S+1
7) Fak=Fak*S
8) Git 5
9) Yaz Fak
10)Dur
44
45. Algoritmada Yapılan İşlemler
• Aritmetiksel işlemler
toplama, çıkarma, ..
• Mantıksal işlemler (LOGİC)
ve, veya , değil
45
47. Matematiksel işlemler içeren kümenizin içindeki matematiksel
işaretlerin bir işlem önceliği vardır.
• İşlem Önceliği Sırası
1. Parantezler ( )
2. Üs alma a^b
3. Çarpma ve bölme a*b veya a/b
4.Toplama ve çıkarma a+b veya a-b
• Aynı önceliğe sahip işlemler yan yana bulunuyorsa işlem önceliği
genelde soldan sağa doğrudur. X=2*3/6+2
İşlem önceliği
47
48. Mantıksal İşlemler
• Programlarda, birden fazla karşılaştırma ifadesi bir
anda kullanılmak istenebilir. Bu gibi durumlarda
mantıksal ifadeler kullanılması zorunludur.
MANTIKSAL KOMUTLAR
İŞLEMLER
• VE AND
• VEYA OR
• DEĞİL NOT
48
51. ÖRNEK
Bir işyerinde çalışan işçiler arasından yalnızca yaşı 23’ün
üzerinde olup maaş olarak asgari ücret alanların isimleri
istenebilir. Burada iki koşulun da doğru olması gerekmektedir.
(Asgari ücret >=500)
1nci koşul 2nci koşul
Eğer Yaş>23 ve Maaş>=Asgari ücret ise Yaz İsim
51
52. Algoritma, programın temelidir.
• Yapılacak iş/çözülecek problem iyice irdelenir.Tüm olasılıklar
gözden geçirilir
• En az komutla, en kısa sürede, en doğru-hassas sonuca ulaştıracak
çözüm yolu /yöntem belirlenir
• Tanımlayıcı isimleri belirlenir.
• Algoritmada her işlem adımına bir numara verilir.
• Problemin çözümü için gerekli olan veriler/işlenecek veriler girilir
veya başka ortamlardan alınır.
• Yapılacak işlemler/kullanılacak yöntemler açık şekilde verilir.
• Bulunan sonuçlar görüntülenir veya belirli ortamlarda saklanır
Algoritma hazırlama kuralları
52
53. AKIŞ DİYAGRAMI
•Akış şemalarında algoritmanın
adımları simgeler şeklinde
kutular içine yazılmaktadır ve
adımlar arasındaki ilişkiler ve akış
yönü oklar ile gösterilmektedir.
53
54. Akış Şemasının Avantajları
1) Birbiri ile ilgili adımlar arasındaki mantıksal ilişkiyi
gösterirler.
2) İzlenmesi ve anlaşılması kolaydır.
3) Şartlara bağlı olarak ortaya çıkan olayların takip edilmesi
mümkündür.
4) Belli bir standarda göre hazırlandıklarından herkesçe
anlaşılabilir ve birden fazla kişi aynı şema üzerinde
çalışabilir.
54
55. Akış Şeması Hazırlama Kuralları
1) Başlangıç ve bitiş uçları tanımlanmalıdır.
2) Standart semboller kullanılmalıdır.
3) Birbirini kesen akış hatları
kullanılmamalıdır.
4) Basit kararlar alınmalıdır.
5) Şema belli bir yönde hazırlanmalıdır.
55
56. Akış Şeması Elemanları
Akış şemasının başlangıcını
yada bitişini belirtir.
Veri girişi ya da çıkışı
yapılacağını belirtir.
Ekranda görüntüleme
yapılacağını belirtir.
56
57. Akış Şeması Elemanları
Yazıcıya çıktı olacağını belirtir.
Hesaplama ya da değerlerin
değişkenlere aktarımını gösterir.
Aritmetik ve mantıksal ifadeler için
karar verme ya da karşılaştırma
durumunu gösterir.
57
58. Akış Şeması Elemanları
AkışYönü
Yapılacak işler birden fazla sayıda yinelenecek
ise yani iş akışında döngü var ise bu sembol
kullanılır.
İki nokta arası ilişkiyi gösterir. Döngü sonunu
göstermek için ya da akış şemasının başka bir
yere bağlantısını göstermek amacıyla kullanılır.
Fonksiyon çağırılacağını belirtir.
İş akışının yönünü belirtir.
58
59. Akış Şemaları
• Akış şemaları içerik ve biçimlerine göre
genel olarak üç grupta sınıflandırılabilirler.
1. Doğrusal akış şemaları
2. Mantıksal akış şemaları
3. Döngü içeren akış şemaları
59
60. 1) Doğrusal akış şemaları
• İş akışları, giriş, hesaplama, çıkış biçiminde olan akış
şemaları bu grup kapsamına girer.
• Yapısında karar alma ya da döngü ifadeleri içermeyen akış
şemalarıdır.
60
61. • Algoritması
Adım 1: Başla
Adım 2: Birinci sayıyı gir
Adım 3: İkinci sayıyı gir
Adım 4: İki sayıyı topla
Adım 5:Toplam
sonucunu ekranda
görüntüle
Adım 6: Dur
Adım 1: Başla
Adım 2: A’yı gir
Adım 3: B’yi gir
Adım 4: C=A+B
Adım 5: C’yi ekranda
görüntüle
Adım 6: Dur
Değişkenler:
A: Birinci sayı
B: İkinci sayı
C:Toplam sonucu
ÖRNEK İki Sayıyı Toplama ve Görüntüleme.
Başla
C
Dur
A
B
C=A+B
• Akış Şeması (doğrusal)
61
62. 2)Mantıksal akış şemaları
• Geniş ölçüde mantıksal kararları içeren akış şemalarıdır.
• Hesap düzenleri genellikle basittir.
• Verilen koşulun doğru yada yanlış olmasına göre iş akışı
yönlendirilir.
Koşul
Evet (Doğru)
Hayır
(Yanlış)
62
63. ÖRNEK
Klavyeden Girilen 2 sayıdan birincisi büyük ise
çarpma, aksi durumda toplama yapan algoritma ve
akış şeması.
• Algoritması
Adım 1: Başla
Adım 2: X’i gir
Adım 3:Y’yi gir
Adım 4: X>Y ise S=X*Y
hesapla adım 6’ya git
Adım 5: X<=Y ise S=X+Y
hesapla
Adım 6: S’i görüntüle
Adım 7: Dur
Değişkenler:
X: Birinci sayı
Y: İkinci sayı
S:Toplam sonucu
• Akış Şeması (mantıksal)
Başla
S
Dur
X
Y
S=X+Y
X>Y
Hayır
Evet
S=X*Y
63
64. 3)Döngüsel Akış Şemaları
• Sorunun çözümü için, çözümde yer alan herhangi bir adım
ya da aşamanın birden fazla kullanıldığı akış şemalarına
denir.
• İş akışları genel olarak giriş ya da başlangıç değeri verme,
hesaplama, kontrol biçiminde olmaktadır.
64
65. ÖRNEK Klavyeden 5 kişinin doğum yılını girip 2013
yılındaki yaşını hesaplayan algoritma ve
akış şeması.
• Algoritması
Adım 1: Başla
Adım 2: i=1;
Adım 3: dy’yi gir
Adım 4: yas=2013-dy
Adım 5: yas’ı ekrana yazdır
Adım 6: i<5 ise i’yi 1 arttır, adım 3’e git
Adım 7: Dur
Değişkenler:
dy : kişinin doğum yılı
yas: kisinin yaşı
i : sayaç (5 kişi olup olmadığını
kontrol eder)
65
66. • Akış şeması I
(Döngü ifadesi içermeyen)
• Akış şeması II
(Döngü şekli içeren)
i<5
Hayır
Evet
Başla
yas
Dur
dy
yas=2013-dy
i=1
Başla
yas
Dur
dy
i,1,5,1
yas=2013-dy
i
i, 1, 5, 1
Döngü
Değişkeni
i=i+1
Bitiş
değeri
Başlangıç
değeri
Artım
değeri
66
67. ÖRNEK 1’den 10’a kadar sayıları ekranda
görüntüleyen akış şeması.
• Kontrol İfadesiyle
i<10
Hayır
Evet
Başla
i
Dur
i=1
i=i+1
Başla
i
Dur
i,1,10,1
i
• Döngü İfadesiyle
67
68. ÖRNEK Girilen 15 sayıdan pozitif olanların adedini bulup
görüntüleyen akış şeması.
• Kontrol İfadesiyle • Döngü İfadesiyle
i<15
Evet
Başla
adet
Dur
sayı
adet=adet+1
i=1, adet = 0
i=i+1
sayı>=0
Hayır
Evet
Başla
sayı
i,1,15,1
i
adet=adet+1
sayı
>=0
Hayır
Evet
adet Dur
adet = 0
68
Hayır
69. ÖRNEK Klavyeden girilen 2 sayıyı karşılaştırıp sonucu
ekrana yazdıran algoritma ve akış şemasını yazın?
• Algoritması 1) Başla
2) OKU sayi1,sayi2
3) EĞER sayi1>sayi2 İSEYAZ
“Sayi1 sayi2’den büyüktür”
4) Değilse EĞER sayi2>sayi1
İSEYAZ “Sayi2 sayi1’den
büyüktür”
5) DEĞİL İSEYAZ “Sayi1
sayi2’ye eşittir”
6) BİTİR
69