You are on page 1of 50

ALGORİTMA ve POGRAMLAMA 1

Algoritma nedir?
Algoritma Oluşturma Yöntemleri 1
(Satır Algoritma Yöntemi
Akış Diyagramları Yöntemi)

Dr. Çağrı KAYMAK


12.10.23
Algoritma Programlama Kapsamında Problem Nedir?

 Bir işlemin, 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.
 Belirli bir işi gerçekleştirmek için gerekli komutlar dizisi Program olarak
tanımlanabilir.
 Bir programı oluşturabilmek için gerekli komutların belirlenmesi ve uygun
biçimde kullanılmasına Programlama denir.

12.10.23 2
•Bir problemi çözmek için takip edilecek sonlu sayıda adımdan oluşan çözüm yöntemine
Algoritma denir.

Algoritma bir programlama dili değildir.


Programlama dillerine yol gösteren bir yöntem dizisidir.
Her dilde algoritma yazılıp uygulanabilir.

12.10.23 3
Bir algoritma oluştururken dikkat edilmesi gereken özellikler nelerdir ?

1.Kesinlik : Algoritma içindeki adımların herkes tarafından anlaşılabilir olması,


içerisinde farklı anlamlara gelebilecek bulanık ifadeler içermemesi gerekir.
2.Sıralı Olma : Yapılacak işlemlerin hangi adımda gerçekleştirileceği algoritma
içerisinde net bir şekilde belirtilmelidir.
3.Sonluluk : Algoritma mutlaka sonlu sayıda adımdan oluşmalıdır. Her algoritmanın
bir son noktası ve sınırlı bir zaman dilimi olması gerekir.

12.10.23 4
Problem çözmek için Algoritma geliştirmenin temel adımları şöyledir;

1.Problemin Tanımlanması /Anlanması : Algoritmanın amacı belirli bir problemi


çözmektir. bu nedenle problem ne kadar anlaşılırsa algoritmanın geliştirilmesi de o kadar
kolaylaşır.
2.Girdi ve Çıktıların Belirlenmesi : Problemin iyi tanımlanabilmesi için başlangıç ve
bitiş noktalarının çok net bilinmesi gerekir.
3. Çözüm Yolları Bulmak : Bir problemin çözümü için birden fazla çözüm alternatifi
olabilir. Bu noktada programcının en sade çözümü tercih etmesi gerekir. Çünkü karmaşık
çözümlemeler programa dönüştürüldüğünde anlaşılabilirliğini kaybedebilir.
4.Algoritma Geliştirmek
5.Çözümün Kontrolü ve Testi : Algoritma oluşturulduktan sonra mutlaka kontrol
edilmelidir. Kontrol esnasında bir eksiklik yada bir hata ile karşılaşılır ise bu sorunun
düzeltilmesi gerekir. Bu eksiklikler ve hatalar giderildikten sonra mutlaka algoritma kağıt
üzerinde değerler vererek test edilmelidir.
6.Algoritmanın Kodlanması: Geliştirilen algoritma bilgisayar üzerinde bir programlama
dili ile yazılır. Böylece kağıt üzerinde geliştirilen algoritma bilgisayar ortamında
çalışabilecek hale gelmiş olur.
7.Kodun Sınanması ve İyileştirilmesi: Yazılan kod algoritmada olduğu gibi test edilir.
Bu test aşamasında bir hata meydana gelir ise hatanın bulunduğu kod bloğunda
iyileştirilme yapılır.
12.10.23 5
BİR MATEMATİK PROBLEMİNİ ÇÖZEN ALGORİTMA:

1. Başla.
2. Soruyu oku.
3. Soruyu çöz.
4. Cevabı kontrol et.
5. Cevap doğru mu?
6. a. Evet ise 7. Adıma git.
b. Hayır ise 2. Adıma git. ve daha dikkatli davran.
7. Dur.

12.10.23 6
Çay demleme algoritması:

1. Mutfağa git
2. Çaydanlığa su koy
3. Çaydanlığı ocağa koy
4. Ocağı yak
5. Su kaynadı mı?
6. Evet ise demliğe çay koy demle, hayır ise adım 5 e git
7. 10 dk bekle
8. Çayı doldur

12.10.23 7
Algoritmanın temel öğeleri nelerdir ?

•Tanımlayıcı : Değişken, sabit, alt yordam gibi programlama birimlerine yazılımcı


tarafından verilmiş isimlere tanımlayıcı adı verilir.
•Değişken : Programın akışı içinde farklı değerleri tutmak üzere ayrılmış bellek
bölümlerine değişken adı verilir.
•Sabit : Program her çalıştırıldığında ve programın içinde herhangi bir anda hep aynı değeri
döndüren tanımlayıcılara sabit adı verilir.
•Gömülü değer : Kod içinde yazılmış olan metinsel, sayısal ya da diğer veri tiplerindeki
sabit değerlere denir.
•Operatörler : Aritmetik ve Mantıksal işlem operatörleri.

12.10.23 8
Aritmetik İşlemler;

Programlamadaki en temel işlemlerdir. Aritmetik işlemler için kullanılan


işleçlere aritmetiksel operatör adı verilir.

İşleç Adı Örnek Açıklama

+ Toplama C=A+B A ve B sayılarını toplar ve sonucu C ye aktarır.

- Çıkarma C=A-B A sayısından B yi çıkarır ve sonucu C ye aktarır.

* Çarpma C=A x B A ve B sayılarını çarpar ve sonucu C ye aktarır.

/ Bölme C=A / B A sayısını B sayısına böler ve sonucu C ye aktarır.

% Mod C=A % B A sayısını B sayısına böler ve kalanı C ye aktarır.

= Atama C=A+B A ve B sayılarını toplar ve sonucu C ye aktarır.

12.10.23 9
Mantıksal İşlemler;

Bir programın akışı içerisinde, belirli bir koşula bağlı olarak akışın hangi yönde
ilerleyeceğine karar vermede mantıksal operatörler kullanılır.

Bu operatörler karşılaştırma işlemlerinde kullanıldıklarında sonuç olarak sadece


true(doğru) yada false(yanlış) değerleri üretilir.

İşleç Adı Örnek Açıklama

> Büyük A>B A değişkeni B değişkeninden büyükse true, değilse false değeri üretir.

< Küçük A<B A değişkeni B değişkeninden küçükse true, değilse false değeri üretir.

== Eşit A == B A değişkeni B değişkeninden eşitse true, değilse false değeri üretir.

Eşit Değil A değişkeni B değişkeninden eşit değilse true, değilse false değeri
!= A != B
(Farklı) üretir.
A değişkeni B değişkeninden büyük yada eşitse true, değilse false
>= Büyük eşit A >= B
değeri üretir.
A değişkeni B değişkeninden küçük yada eşitse true, değilse false
<= Küçük eşit A <= B
değeri üretir.

12.10.23 10
Algoritma Yazım Teknikleri

Algoritmayı getirebilmek için 3 yöntem kullanılır:

 Satır Algoritma Yöntemi


 Akış Diyagramları Yöntemi
 Sözde Kod Yöntemi

Satır algoritma ile Akış diyagramı yöntemleri matematik, inşaat, vb. herhangi
bir konuda problem çözülürken kullanılabilir. Ancak sözde kod tamamen
programlamaya yönelik bir gösterimdir ve kodlamaya çok yakın bir yöntemdir.

12.10.23 11
Satır Algoritmaları

Satır Algoritmalar, problem çözümünü günlük yazı konuşma


diliyle ifade ederek sıra numarasıyla yazılarak oluşturulur. Konuşma
diline çok yakın olmasından dolayı bir algoritmayı ifade etmenin en basit
yoludur.

12.10.23 12
Örnek 1: Kullanıcıdan iki sayıyı alıp, bu iki sayının toplamını ekrana yazdıran algoritmayı
tasarlayın.

Çözüm :
1.Başla
2.Oku (Sayı1,Sayı2)
3.Sonuç=Sayı1 + Sayı2
4.Sonucu Ekrana Yaz
5.Dur

Not: Burada Sayı1 ve Sayı2 değişkenleri girdi, Sonuç değişkeni çıktı olarak kullanılmıştır.
Yani programın iki girdisi ve bir çıktısı vardır.

12.10.23 13
Örnek 2: Kullanıcıdan bir kenarı alınan karenin çevresini ve alanını hesaplayarak ekrana
yazdıran algoritmayı tasarlayın.

Çözüm:

1.Başla
2.Oku (Kenar)
3.Çevre=kenar * 4
4.Alan=kenar * kenar
5.Çevreyi ekrana yaz
6.Alanı ekrana yaz
7.Dur

Not: Burada kenar bilgisi girdi, çevre ve alan değerleri ise çıktı olarak kullanılmıştır.
Burada kenar, çevre ve alan değişken olarak tanımlanmıştır.

12.10.23 14
Örnek 3: Klavyeden yol ve aracın hız bilgisi alınarak ne kadar sürede yolun
tamamlanacağını hesaplayan algoritmayı oluşturunuz.

Çözüm;

1.Başla
2.Oku (Yol)
3.Oku (Hız)
4.Süre=Yol / Hız (x=V * t ’den)
5.Süreyi Ekrana Yaz
6.Dur

12.10.23 15
Örnek 4: Klavyeden girilen iki adet sayıdan büyük olanını ekrana yazan algoritmayı
oluşturunuz.

Çözüm;

1.Başla
2.Oku (Sayı1)
3.Oku (Sayı2)
4.Eğer
4.1. (Sayı1>Sayı2) Enbüyük=Sayı1
4.2. değilse Enbüyük=Sayı2
5. Enbüyüğü ekrana yaz
6.Dur

12.10.23 16
Örnek 5: Klavyeden girilen sayının tek yada çift olup olmadığını ekrana yazdıran
algoritmayı oluşturunuz.

Çözüm;

1.Başla
2.Oku (sayı)
3.Eğer
3.1. ((Sayı % 2)==0) ise ekrana çift yaz
3.2. değilse ekrana tek yaz
4. Dur

12.10.23 17
Örnek 6: Kullanıcıdan bir sayı alıp 1’den başlayarak kullanıcıdan aldığı sayıya kadar
bir artırarak ekrana yazdıran algoritmayı oluşturunuz.

Çözüm;

1.Başla
2.Sayac=0, Toplam=0
3.Oku (Sayı)
4.Eğer (Sayac >= Sayı), Adım 8 e git
5.Toplam = Toplam + Sayac
6.Sayac = Sayac + 1
7.Adım 4 e git
8.Yaz Toplam
9.Dur

12.10.23 18
Örnek 7:

Çözüm;

12.10.23 19
Örnek 8:

Çözüm;

12.10.23 20
Örnek 9:

Çözüm;

12.10.23 21
Örnek 9:

Çözüm;

12.10.23 22
Örnek 10:

Çözüm;

12.10.23 23
Örnek 11:

Çözüm;

12.10.23 24
Örnek 12:

Çözüm;

12.10.23 25
Örnek 13:

Çözüm;

12.10.23 26
Örnek 14:

Çözüm;

12.10.23 27
Algoritmanın Akış Diyagramı ile İfade Edilmesi

Akış diyagramı , bir algoritmanın adımlarının mantıksal sırasını, adımların


birbiri ile bağlantısını, bir işlemden diğerine nasıl gidileceğini belirten kontrol
mekanizmalarını, özel bazı şekil ve sembollerle anlatan bir ifade biçimidir.

12.10.23 28
Akış şeması elemanları

Akış şemasının başlangıcını yada bitişini belirtir.

Yazıcıya çıktı olacağını belirtir.

Veri girişi yapılacağını belirtir.

Hesaplama ya da değerlerin değişkenlere aktarımını gösterir.

Ekranda görüntüleme yapılacağını belirtir.

12.10.23 29
Akış şeması elemanları

Aritmetik ve mantıksal ifadeler için karar verme Yapılacak işler birden fazla sayıda yinelenecek ise
ya da karşılaştırma durumunu gösterir. 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ı
Fonksiyon çağırılacağını belirtir.
göstermek amacıyla kullanılır.

İş akışının yönünü belirtir.


Akış Yönü

30
12.10.23
AKIŞ ŞEMASININ AVANTAJLARI

 Birbiri ile ilgili adımlar arasındaki mantıksal ilişkiyi gösterirler.


 İzlenmesi ve anlaşılması kolaydır.
 Şartlara bağlı olarak ortaya çıkan olayların takip edilmesi mümkündür.
 Belli bir standarda göre hazırlandıklarından herkesçe anlaşılabilir ve birden
fazla kişi aynı şema üzerinde çalışabilir.

12.10.23 31
AKIŞ ŞEMASI HAZIRLAMA KURALLARI

 Başlangıç ve bitiş uçları tanımlanmalıdır.


 Standart semboller kullanılmalıdır.
 Birbirini kesen akış hatları kullanılmamalıdır.
 Basit kararlar alınmalıdır.
 Şema belli bir yönde hazırlanmalıdır.

12.10.23 32
Akış şemaları içerik ve biçimlerine göre genel olarak üç grupta sınıflandırılır:

1. Doğrusal akış şemaları


2. Mantıksal akış şemaları
3. Döngü içeren akış şemaları

12.10.23 33
Doğrusal akış şemaları: İş akışları, Mantıksal akış şemaları: Geniş ölçüde
giriş, hesaplama, çıkış biçiminde olan mantıksal kararları içeren akış şemalarıdır.
akış şemaları bu grup kapsamına Hesap düzenleri genellikle basittir. Verilen
girer. Yapısında karar alma ya da koşulun doğru ya da yanlış olmasına göre
iş akışı yönlendirilir.
döngü ifadeleri içermeyen akış
şemalarıdır.
Başla

Merhaba
Dünya

Dur (Son-Bitir)

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.

12.10.23 34
Örnek 15: Ekrana «Merhaba Dünya» yazdıran programın algoritmasını akış şeması ile
ve satır kod ile yazınız.

Çözüm:

Satır algoritması: Akış şeması:


Adım 1: Başla
Adım 2: Ekrana ‘Merhaba Dünya’ Başla
yazdır.

Adım 3: Dur Merhaba


Dünya
C Dili Kodu
#include <stdio.h>
Dur (Son-Bitir)
void main()
{
printf("Hello World");
} 12.10.23 35
Örnek 16: Kullanıcıdan istenen ve klavyeden girilen iki sayının toplamını
hesaplayan ve sonucu ekrana yazdıran programın algoritmasını akış diyagramı ve
satır kodu şeklinde yazınız.
Çözüm : Akış Şeması:
Değişkenler: Başla
A: Birinci sayı
B: İkinci sayı
C:Toplam sonucu A
Satır Algoritması:
Adım 1: Başla B
Adım 2: Birinci sayıyı gir
Adım 3: İkinci sayıyı gir
Adım 4: İki sayıyı topla C=A+B
Adım 5: Toplam sonucunu ekranda görüntüle
Adım 6: Dur
C
Adım 1: Başla
Adım 2: A’yı gir
Adım 3: B’yi gir Dur
Adım 4: C=A+B
Adım 5: C’yi ekranda görüntüle 12.10.23 36
Adım 6: Dur
Örnek 17: Kullanıcıdan 100 adet sayı alarak, bu sayıların toplamını ekrana yazan
algoritmayı akış diyagramları ile oluşturunuz.
Çözüm :
Başla

Başla Toplam=0, Adet=0

Toplam=0, Sayac=1, Yaz ‘’Bir Sayı


Girin’’

Sayac=1,100,1
Oku (Sayı)

Yaz ‘’Bir Sayı


Girin’’
Yaz Toplam Toplam=Toplam +
Sayı

Oku (Sayı)
Adet=Adet + 1
Dur

Toplam=Toplam + True (E)


Sayı Adet<=100

False (H)

Yaz Toplam

12.10.23 37
Dur
Örnek 18 : Kullanıcıdan iki sayıyı alıp, bu iki sayının toplamını ekrana yazdıran
algoritmayı tasarlayın.

Çözüm :
Başla

1. Başla
2. Oku (Sayı1,Sayı2)
3. Sonuç=Sayı1 + Sayı2 (Sayı1,Sayı2)
4. Sonucu Ekrana Yaz
5. Dur
Sonuç=Sayı1 + Sayı2

Yaz Sonuç

Dur

12.10.23 38
Örnek 19: Kullanıcıdan bir kenarı alınan karenin çevresini ve alanını
hesaplayarak ekrana yazdıran algoritmayı tasarlayın.
Çözüm:

1.Başla
Başla
2.Oku (Kenar) Yaz Çevre
3.Çevre=kenar * 4
4.Alan=kenar * kenar Oku
5.Çevreyi ekrana yaz (Kenar) Yaz Alan
6.Alanı ekrana yaz
7.Dur
Çevre = 4 * Kenar
Dur

Alan = Kenar * Kenar

12.10.23 39
Örnek 20: Klavyeden girilen 2 sayıdan birincisi büyük ise çarpma, aksi durumda
toplama yapan programa ait satır algoritması ve akış şemasını çiziniz.

Çözüm: Akış şeması


Değişkenler: Başla
X: Birinci sayı
Algoritması
Y: İkinci sayı
X
S: Toplam sonucu
Y
Adım 1: Başla
Adım 2: X’i gir Evet
Adım 3: Y’yi gir X>Y S=X*Y
Adım 4: X>Y ise S=X*Y hesapla adım Hayır
6’ya git
S=X+Y
Adım 5: X<=Y ise S=X+Y hesapla
Adım 6: S’i görüntüle
S
Adım 7: Dur
Dur
40

12.10.23
Örnek 21: Klavyeden girilen iki adet sayıdan büyük olanını ekrana yazdıran
programın akış şemasını oluşturunuz.

Çözüm:
Başla

Oku
(Sayı1)

Oku
(Sayı2)

True (E) False (H)


Sayı1 > Sayı2
Yaz Yaz
Sayı1 Sayı2

Dur

12.10.23 41
Örnek 22: Klavyeden girilen sayının pozitif ya da negatif, ya da sıfır olduğunu
ekrana yazan algoritmayı oluşturunuz.
Çözüm:
Başla

Oku (Sayı)

True (E) False (H)


Sayı>0

True (E) False (H)


‘’POZİTİF’’ Sayı<0

‘’NEGATİF’’ ‘’SIFIR’’

Dur

12.10.23 42
Örnek 23: Klavyeden girilen sayının faktöriyelini hesaplayan programın akış şemasını
oluşturunuz.
Çözüm:
Başla

Fakt=1, Sayac=0

Oku (Sayı)

Sayac=Sayac + 1

Fakt=Fakt * Sayac
True (E)
Sayac<Sayı
False(H)
Yaz Fakt

Dur
12.10.23 43
Örnek 24: Klavyeden 5 kişinin doğum yılını girip 2013 yılındaki yaşını hesaplayan
algoritma ve akış şeması

Değişkenler: Adım 1: Başla


dy : kişinin doğum yılı Adım 2: i=1;
yas: kişinin yaşı Adım 3: dy’yi gir
Adım 4: yas=2019-dy
i : sayaç (5 kişi olup olmadığını
Adım 5: yas’ı ekrana yazdır
kontrol eder) Adım 6: i<5 ise i’yi 1 arttır, adım 3’e git
Adım 7: Dur
Başla
Başla
i=1 i, 1, 5, 1
i,1,5,1
dy
Döngü
dy Değişkeni Bitiş
değeri
yas=2013-dy
i=i+1 yas=2013-dy Artım
değeri
yas Başlangıç
değeri
yas
Evet
i<5
Hayır
i
12.10.23 44
Dur Dur
Örnek 25: 1’den 10’a kadar sayıları ekranda görüntüleyen programın algoritmasını
akış şeması şeklinde oluşturunuz.
Çözüm:

Kontrol İfadesiyle Döngü İfadesiyle

Başla Başla

i=1 i,1,10,1

i i
i=i+1

Evet i
i<10
Hayır
Dur
Dur

12.10.23 45
Örnek 26: Klavyeden girilen 5 sayının karelerini hesaplayan ve ekrana yazdıran
programın akış şeması algoritmasını çiziniz.
Çözüm:

Kontrol İfadesiyle Döngü İfadesiyle

Başla Başla

i=1 i,1,5,1

sayı sayı

kare=sayı*sayı kare=sayı*sayı
i=i+1
kare kare

Evet
i<5 i
Hayır

Dur
Dur
12.10.23 46
Örnek 26: Klavyeden girilen 15 sayıdan pozitif olanların adedini bulup
görüntüleyen programın akış şemasını oluşturunuz.
Döngü İfadesiyle
Çözüm:
Kontrol İfadesiyle Başla

Başla adet = 0

i=1, adet = 0 i,1,15,1

sayı sayı
Evet
Evet
i=i+1 sayı>=0 adet=adet+1 sayı>=0 adet=adet+1
Hayır
Hayır
Evet
i<15 i

adet adet Dur

Dur 47

12.10.23
Örnek 27: Klavyeden girilen 50 öğrencinin notlarının ortalamasını bulan akış
şemasını çiziniz.
Çözüm:
Döngü İfadesiyle
Kontrol İfadesiyle
Başla
Başla toplam = 0

i=1, toplam=0 i,1,50,1

not not

i=i+1 toplam=toplam+not toplam=toplam+not


Evet
i<50 i
Hayır

ortalama=toplam/50 ortalama=toplam/50

ortalama ortalama
12.10.23 48
Dur Dur
Örnek 28: Klavyeden girilen sayının faktöriyelini hesaplayan programın akış
şemasını çiziniz.
Çözüm:
Kontrol İfadesiyle Döngü İfadesiyle
Başla Başla

f=1,i=2
f=1
sayı
sayı

i=i+1 f=f*i i,2,sayı,1

Evet
f=f*i
i<sayı
Hayır

i
f

Dur f

Dur 12.10.23 49
Örnek 29: y=x^2+5x-7 denkleminin x=[-4,4] aralığındaki çözümlerini bulan ve
görüntüleyen akış şemasını çiziniz. (x’in artım değeri 0,5’tir)
Çözüm:
Kontrol İfadesiyle Döngü İfadesiyle

Başla Başla

x=-4 x,-4,4,0.5

y=x*x+5*x-7 y=x*x+5*x-7

y y
x=x+0.5
Evet i
x<4
Hayır
Dur
Dur

12.10.23 50

You might also like