You are on page 1of 52

Algoritmalar

Problem
• Bir işlemin, otomasyonun yada bilimsel hesaplamanın
bilgisayarla çözülmesi fikrinin ortaya çıkmasına problem denir.
Bu tip fikirlerde insanların bu sorunları beyinle çözmeleri ya
imkansızdır ya da çok zor ve zaman alıcıdır. Bu tip bir sorunu
bilgisayarla çözebilme fikrinin ortaya çıkması bir bilgisayar
probleminin ortaya çıkmasına neden olmuştur.

• Bazen de bir işletme veya yönetimin otomasyonunu sağlamak


amacı ile bu tip problemler tanımlanır.
Problem Çözümü
• Problemi Çözebilmek için öncelikle sorunun çok net olarak
programcı tarafından anlaşılmış olması gerekir. Tüm ihtiyaçlar ve
istekler belirlenmelidir. Gerekiyorsa bu işlem için birebir görüşmeler
planlanmalı ve bu görüşmeler gerçekleştirilmelidir.
• Problemin Çözümüne ilişkin zihinsel alıştırmalar yapılır. Bu
alıştırmaların bilgisayar çözümüne yakın olması hedeflenmelidir. Bir
sorunun tabii ki birden fazla çözümü olabilir. Bu durumda bilgisayar
ile en uygun çözüm seçilmelidir. Çünkü bazen pratik çözümler
bilgisayarlar için uygun olmayabilir.
• Oluşturulan Çözüm Algoritma dediğimiz adımlarla ifade edilmelidir.
• Bu algoritmanın daha anlaşılabilir olması için Akış Çizgesi
oluşturulmalıdır.
• Uygun bir programlama dili seçilmeli ve oluşturulan algoritma ve
akış çizgesi bu programlama dili aracılığı ile bilgisayar ortamına
aktarılmalıdır.
Program
• Problem Çözümü kısmında anlatılan adımlar uygulandıktan
sonra ortaya çıkan ve sorunumuzu bilgisayar ortamında çözen
ürüne Program denir.

• Bazı durumlarda bu ürüne yazılım denebilir.


Programlama
• Çok iyi tanımlanmış bir sorunun çözümüne dair adımlar ile
çözümün oluşturulup bunun bir programlama dili ile bilgisayar
ortamına aktarılması Programlama olarak adlandırılır.
Algoritma
• Bir sorunu (problemi) çözebilmek için gerekli olan sıralı
mantıksal adımların tümüne Algoritma denir.
• Algoritma doğal dille yazıldığı için formal değildir.

• Bir algoritma için aşağıdaki ifadelerin mutlaka doğrulanması


gereklidir.
• Her adım son derece belirleyici olmalıdır. Hiç bir şey şansa bağlı
olmamalıdır.
• Belirli bir sayıda adım sonunda algoritma sonlanmalıdır.
• Algoritmalar karşılaşılabilecek tüm ihtimalleri ele alabilecek kadar
genel olmalıdır.
Sö zde Kod (Pseudo Code)
• Pseudo Code (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.
• Örnek:
–assign (ilkdeğer) value (100)
–if (sayı<x)
then (ilk satıra git)
else (son satıra git)
–while (döngü<girilen_değer)

do assign (toplam) value (toplam+döngü)


Gerçek Kod (Real Code)

• Real Code (Gerçek Kod), algoritmanın herhangi bir


programlama diliyle, belirli bir veri yapısı üzerinde
gerçekleştirilmiş halidir.

• Bir algoritmanın gerçek kodu, yalnızca tasarlandığı veri yapısı


üzerinde koşar; veri yapısı değiştirildiğinde algoritmanın
gerçek kodu üzerinde oynamalar yapılmalıdır.
Algoritma Yazımı
• 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.

Yukarıdaki gösterimlerin ingilizce karşılıkları da algoritma


hazırlamada kullanılmaktadır.
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 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


Algoritmada Yapılan İşlemler
• Aritmetiksel işlemler
toplama, çıkarma, ..

• Mantıksal işlemler (LOGİC)


ve, veya , değil
Aritmetiksel işlemler
• Toplama a+b
• Çıkarma a-b
• Çarpma a*b
• Bölme a/b
• Üs alma a^b
İşlem ö nceliğ i
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
Karşılaştırma İşlemleri
• Eşittir =
• Eşit değildir <>
• Büyüktür >
• Küçüktür <
• Büyük eşittir >=
• Küçük eşittir <=
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
Mantıksal İşlem Sonuçları
Sonuç Rakam olarak Bilgisayar Dilinde
Doğru 1 True (1)
Yanlış 0 False (0)
Mantıksal İşlemler
A B A VE B
0 0 0
VE (AND) 0 1 0
1 0 0
1 1 1

A B A VEYA B
0 0 0
VEYA (OR) 0 1 1
1 0 1
1 1 1

A DEGiL A
DEGiL(NOT) 0 1
1 0
Ö rnek
Bir işyerinde çalışan işçiler arasından yalnızca yaşı
23’ün üzerinde olup maaş olarak asgari ücret ve üzerine 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
Ö rnek
• Bir sınıfta Bilgisayar dersinden 65 in üzerinde not almış
olup Seçmeli Yabancı Dil (İngilizce) veya Seçmeli Yabancı
Dil (Almanca) derslerinin herhangi birinden 65 in
üzerinde not alanların isimleri istenmektedir.

• Eğer Bilgisayar notu > 65 VE


(İngilizce > 65 VEYA Almanca > 65) ise
Yaz “Öğrencinin ismini”
Ö rnek Algoritma
1. Başla
2. A sayısını gir
3. B sayısını gir
4. Eğer A>B ise Yaz “A sayısı, B sayısından büyüktür”
5. Eğer A<B ise Yaz “A sayısı, B sayısından küçüktür”
6. Eğer A=B ise Yaz “A sayısı, B sayısına eşittir”
7. Dur

Girilen A sayısı Girilen B sayısı Ekrana yazılan sonuç


3 7 A sayısı, B sayısından küçüktür.
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.
Ö 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
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.

• Döngüsel işlemler akış diyagramı bölümünde daha detaylı


anlatılacaktır.
Aşağ ıdaki algoritma nasıl bir çıktı
verir?
1. Başla
2. sayac=0
3. Eğer sayac>4 ise Git 7
4. sayac=sayac+1
5. Yaz sayac
6. Git 3
7. Dur
Aşağ ıdaki algoritma ne iş
yapmaktadır?
1. Başla
2. sayac=0
3. OKU sayi
4. Eğer sayi=0 ise Git 7
5. Eğer mod(sayi,2)=0 ise sayac=sayac+1
6. Git 3
7. Yaz sayac
8. Dur
Ö rnek:
123456
23456
3456
456
56
6

Bu çıktıyı veren algoritmayı tasarlayınız.


Cevap
1.basla
2.baslangic=1
3.i=baslangic
4.Yaz i
5.i=i+1
6.eğer i<=6 git 4
7.alt satıra geç
8.baslangic=baslangic+1
9.eğer baslangic<=6 git 3
10.Dur
Akış Çizelgesi(Şeması)
• Bir algoritmanın daha görsel gösterimidir. Çizgiler, Dörtgen,
daire vb.geometrik şekillerle algoritmanın gösterilmesini
sağlar. Doğal dille yazılmadığı için daha formal olduğu
düşünülebilir.
Akış Çizelgesinde Kullanılan
Semboller
Ö rnek

• Sözde Kod(Algoritma)
-Başla
-OKU A,B
-Ort=(A+B)/2
-YAZ Ort
- DUR
Karar Verme
Karar Verme
Karar Verme
Ö rnek

• ax2+ bx + c = 0 şeklindeki ikinci dereceden bir denklemin


köklerini bulan algoritmayı tasarlayıp akış şeması ile gösteriniz.
Ö rnek Çö zü mü
Dö ngü Yapısı
• Bu yapı kullanılırken, döngü sayacı, koşul bilgisi ve sayacın artım
bilgisi verilmelidir. Döngü sayacı kullanılmıyorsa sadece döngüye
devam edebilmek için gerekli olan koşul bilgisi verilmelidir.

• Genel olarak çoğu programlama dilinin döngüdeyimleri ;


• •While
• •Do-while
• •For

• gibi yapılar üzerine kurulmuştur. Farklı dillerde bu yapılara farklı


alternatifler olsa da döngülerin çalışma mantığı genel olarak
benzerdir.
While Deyimi
• Koşul daha çevrim içerisine girmeden sınanır. Koşul olumsuz
olduğunda çerime hiç girilmez ve döngü içerisinde yapılması
gerekenler atlanır.
Do-While Deyimi
• Bu döngüdeyiminde, çevrim
en az bir defa olmak üzere
gerçekleşir. Çünkü koşul
sınaması döngü sonunda
yapılmaktadır. Eğer koşul
sonucu olumsuz ise bir
sonraki çevrime geçilmeden
döngüden çıkılır. Çevrimin
devam edebilmesi için her
döngü sonunda yapılan koşul
testinin olumlu
sonuçlanması gerekir.
For Deyimi I=1,20,3 J=30,4,-2 K=1,80

• Diğer deyimlerden farklı olarak, döngü sayacı doğrudan koşul


parametreleri düzeyinde verilir.

• Döngü girmeden önce sayaç değişkenine başlangıç değeri


atanmakta ve daha sonra koşula bakılmaktadır. Döngü
içerisinde belirtilen işlemler yapıldıktan sonra sayaç değişkeni
arttırılmaktadır.
İç İçe Dö ngü ler
• İçiçe döngü kurulurken en önemli unsur, içteki döngü
sonlanmadan bir dıştaki döngüye geçilmemesidir. Diğer bir
deyişle döngüler birbirlerini kesmemelidir.
• Aşağıdaki gösterimde en içteki döngü bir dıştaki döngünün her
adımında N kez tekrarlanır.
Ö rnek: Faktö riyel Hesabı
• N ile hangi sayının faktöriyelin
hesaplanacağı belirlenir ve N
çevrimlik bir döngü kurulur.

• İlk çevrimde 1!, ikinci


çevrimde 2! ve sırayla N’inci
çevrim sonucunda da N!
değeri hesaplanmış olur.

• Sayac>N koşulu oluştuğunda


döngüden çıkılır ve elde edilen
sonuç dış ortama aktarılır.
Ö rnek

• Bankaya aylık getirisi %8 ile 1000 YTL para yatırılmıştır. Buna


göre;
• a)10 ay sonrası için paranın ne kadar olacağını ve bu süre
içerisinde her ay sonunda ne kadar olacağını hesaplayıp
ekrana yazan programın akış şeması nınasıldır?
• b)Paranın kaç ay sonra 5000 YTL olacağını hesaplayan
programın akış şemasınasıldır?
Cevap-a

para
Cevap-b Ne zaman, para değeri 5000’den eşit veya
büyük olduğunda döngü sonlanır ve döngü
içerisindeki ay bilgisinin son hali bize
istediğimiz değeri verir.
Bu akış diyagramı ne yapmaktadır?
Akış diyagramının bazı dillerde yazımı
Akış diyagramının bazı dillerde yazımı
Programlama Dili
• Bir Problemin Algoritmik çözümünün Bilgisayara anlatılmasını
sağlayan, son derece sıkı-sıkıya kuralları bulunan kurallar
dizisidir.

• Programlama Dilleri için; Farklı problem alanlarına göre farklı


dillerden söz etmek mümkündür. Dilin seçimi bu yüzden
önemli olabilir. Probleme uygun dilin seçilmesi programın
geliştirilmesinde kolaylık ve hızlıçalışma sağlayabilir.
Derleyici
• Bir programlama dili ile bilgisayara aktarılan programın
bilgisayarın anlayabileceği Makine Diline çevirmeyi sağlayan
ve yazılan programda söz dizim hatalarının olup olmadığını
bulan yazılımlardır.

• Her Programlama dili için bir derleyici olması gerekmektedir.


Yorumlayıcı
• Derleyici gibi çalışan ancak yazılmış programları o anda
Makine diline çeviren yazılımlardır. Bu tür bir yazılımda
Programın Makine dili ile oluşturulmuş kısmı bilgisayarda
tutulmaz. Programın her çalıştırılmasında her adım için
Makine dili karşılıkları oluşturulur ve çalıştırılır.
Derleyici-yorumlayıcı farkı?
• Derleyicisi olan programlama dillerinde, program yazıldıktan
sonra derleyiciden geçilerek makine koduna dönüştürülür.
Program yazılırken hatalar yapılmışsa,derleme esnasında bu
hatalar listelenir. Programcı daha sonra bu hataları
gidererek,programı yeniden derler. Bu tür programlar ancak
derlendikten sonra bilgisayarda çalıştırılabilirler.
• Yorumlayıcılar programın her satırını anında makine diline
çevirerek çalıştırırlar. Bu yüzden program yarım bile olsa,
yazılmış kısımlarını hemen uygulamaya sokmak mümkündür.
Ayrıca,yorumlayıcılar kaynak programın makine koduna
çevrilmiş şeklini ayrı bir dosyada saklamazlar. Yorumlayıcı,
program her çalıştırıldığında her satırı yeniden makine koduna
dönüştürerek uygulamaya sokar. Bu yüzden yorumlayıcılar
yavaş çalışırlar.
Kaynak ve Amaç Program
• Programın, bir programlama diline bağlı olarak hazırlanan
simgesel kodlardan oluşan kısmına kaynak program (source
code) adı verilir.
• Bu kaynak programın derlenip bilgisayarda çalışabilecek
makine kodlarına çevrilmiş koduna ise amaç program ismi
verilir.

You might also like