You are on page 1of 24

Bölüm 1

Algoritma ve Programlamaya Giriş

1 2
Algoritma Akış Diyagramı
öğrenme çıktıları

1 Algoritma kavramını öğrenebilme ve hangi 2 Bir algoritmanın akış diyagramını çizebilme


durumlarda kullanılacağı kavrayabilme ve analizini yapabilme

3 4
Sözde Kod (Pseudo Code) Yazılım Geliştirme Süreci
3 Sözde Kod (Pseudo Code) yazımı ve 4 Yazılım geliştirmek için izlenecek adımları
analizini yapabilme belirleyebilme

5
Günlük Hayattan Algoritma Örnekleri
5 Günlük hayatta karşılaşılan olayların akışını
çıkarabilme

Anahtar Sözcükler: • Algoritma • Analiz • Pseudo Code • Sözde Kod • Akış Diyagramı
• Geliştirme Süreci

2
1
İleri Programlama I

GİRİŞ Algoritma Nedir?


Günümüz dünyasında her geçen gün bilgisayar Yapılacak işlemleri bilgisayarın anladığı dile çe-
ve programlar hayatımızın daha da vazgeçilmez bir virebilmek için, ilk önce herkesin anlayabileceği bir
parçası olmaya devam ediyor. Ofiste kullandığımız yapıya yani algoritmaya çevirmeliyiz. Bu aşamada,
kelime işlem yazılımlarından, cep telefonundaki algoritma daha çok mantıksal olarak tanımlandığı
uygulamalara kadar tüm programlar belirli aşama- için herhangi bir programlama dilini kullanmaya
lardan geçerek kullanımımıza sunuluyor. Peki hiç ihtiyaç duyulmamaktadır.
merak ettiniz mi tüm bu kullandığımız program- Peki nedir bu algoritma? Adını Özbekistan’ın
ların arka planında neler oluyor? Ya da bu seviyeye Harezm kentinde doğmuş, 9. yy.’da yaşamış olan
gelinceye kadar hangi aşamalardan geçiyorlar? bilim insanı Ebu Abdullah Muhammed İbn Musa
Programların, karşılaşılan bir problemi çözme el-Hârizmî’den alan Algoritma, ilk olarak “Hisab
amacıyla, hayatımızı kolaylaştırmak için hazırlanmış el-cebir ve el-mukabala” kitabında sunulmuştur.
işlemler olduğunu söyleyebiliriz. Bu yapılan işlem- İlk başlarda “Arap sayıları kullanarak aritmetik
leri, bir yemeğin yapılış aşamaları yani tarifi gibi de problemler çözme kuralları” olarak kullanılan algo-
düşünebiliriz. Tarife uygun yapılmayan bir yemeğin rizm, daha sonra algoritma adını alarak daha genel
sonucunu bir hayal edelim. Çevremizde her gün kar- kapsamda kullanılmaya başlanmıştır.
şılaştığımız ama belki de fark etmediğimiz olaylar da Algoritma dediğimiz kavram, belirli bir prob-
aslında bir problemin çözümüdür. Yanından geçti- lemi çözmek ya da bir hedefe ulaşmak amacıyla iz-
ğimiz bir inşaatı düşünün; inşaatı tamamlamak için
lenmesi gereken yola verilen isimdir. Bu yolda be-
tüm yapılan işlerin sırasıyla yapılması gerekmekte-
lirlenen adımlar da mantıksal olarak birbirini takip
dir. Temel kazılmadan inşaata başlanılamayacağı gibi
etmeli, hepsi açık, düzenli ve sıralı bir şekilde ifade
duvar örmeden de sıva yapılamaz.
edilmelidir.
Program yazmak için de belirli aşamaların geçil-
Algoritmalarda dikkat edilmesi gereken husus-
mesi gerekmektedir. İlk olarak ihtiyaç belirlenmeli-
ları ise şu şekilde ifade edebiliriz:
dir. Sonra bu ihtiyacı çözmek için konu hakkında
gerekli olan tüm bilgiler öğrenilmelidir. Soru sor- • İlgili adım, herkesin anlayabileceği gibi net
mak, konu hakkındaki bilgiyi arttıracağı gibi çözüm bir şekilde ifade edilmelidir.
hakkında fikir sahibi olunmasını da sağlayacaktır. • Probleme uygun olarak algoritma adımları
Ayrıca karşılaştığımız farklı problemler için çözüm arasındaki işlem sırasına dikkat edilmelidir.
yollarını ve nasıl bir yöntem uygulanacağını düşün- • Tüm olası durumları içerecek kadar genel
mek de programlama becerimizi geliştirecektir. olmalıdır.
• Başlangıç - bitiş adımlarını içermeli, sonlu
ALGORİTMA sayıda işlem adımına sahip olmalı ve belirli
Aklınızdan 1 ile 100 arasında bir sayı tuttuğu- bir sürede bitmelidir.
nuzu ve bilgisayarın bu sayıyı bulduğunu düşü- Peki algoritma neden önemlidir?
nelim. Acaba bu küçük oyun için ne yapmamız • Problem çözümü herkes tarafından anlaşıla-
gerekiyor? Bu soruya aradığımız cevabı, ilerleyen bildiği için takım çalışmasını da kolaylaştırır.
başlıklar altında sırasıyla ele alacağız. • Projeyi tasarlayan haricinde bir başka kişi
Bilgisayarlar akıllı makineler değildir ama öğ- tarafından da kodu yazılabilir.
renebilen ve öğrendiği şeyi sonsuza kadar tekrar • Kodlama öncesi kontrollerin yapılarak
edebilmesi için tasarlanmış bir yapıları vardır. Bu mantıksal hataların tespit edilmesini kolay-
yüzden yapması gereken işlemleri bizim ona bir şe- laştırır.
kilde öğretmemiz gerekmektedir. Buradaki amacı-
mıza ulaşmak için de bilgisayara tuttuğumuz sayıyı
bulması için nasıl bir yol izlemesi gerektiğini kendi
anladığı dilde anlatmalıyız.

3
1
Algoritma ve Programlamaya Giriş

Örnek Algoritma 1: Şimdi günlük hayatta sık- Örnek Algoritma 2: Kullanıcının girdiği 2 sa-
ça karşılaşabileceğimiz ama belki de hiç algoritma yının toplamı, çarpımı ve ortalamasını veren algo-
gözüyle bakmadığımız bir olayı inceleyelim. Kaşar- ritmayı inceleyelim.
lı tost hazırlamak için bir algoritma hazırlayalım. Girdiler
Algoritmayı; girdiler, beklenen çıktı ve algoritma
• 2 sayı
adımları olarak 3 adımda inceleyebiliriz.
Çıktı
Girdiler
• Sayıların toplamı, çarpımı ve ortalaması
• Tost makinesi
• Tost ekmeği (en az 2 adet)
1. Sayı Toplam
• 2 dilim kaşar
• Tereyağı Program Çarpım
• Bıçak 2. Sayı Ortalama
• Tostu koymak için tabak Girdiler İşlem Çıktılar
Çıktı
Resim 1.1 Programın girdi ve çıktıları
• Kaşarlı Tost
Algoritma
Resim 1.1’de görüldüğü gibi, öncelikle prog-
1. Başla
ramımızın girdi ve çıktılarını belirliyoruz. Daha
2. Tost makinesini, ekmeği, kaşarı, tereyağını, sonra program içinde yapılacak işlemleri çıktılar
bıçağı ve tabağı çalışacağın yere koy. doğrultusunda düzenliyoruz.
3. Tost makinesinin fişini takarak çalıştığın- Algoritma
dan emin ol.
• Başla.
4. Kaşar dilimlerini ekmeklerden birinin üze-
rine koy. • Kullanıcıdan 1. ve 2. sayıyı girmesini iste.
5. Kaşar peyniri içeride kalacak şekilde iki di- • Toplam = 1. sayı + 2. sayı
limi birbiri üzerine koy. • Çarpım = 1. sayı * 2. sayı
6. Bıçağı kullanarak birleştirilen ekmeklerin • Ortalama = toplam / 2
üstüne ve altına tereyağı sür. • Toplam, çarpım ve ortalamayı ekrana yazdır.
7. Ekmek dilimlerini tost makinesine yerleştir. • Bitir.
8. Ekmekler kızarana kadar pişir. Algoritma Sorusu
9. Tost makinesinin fişini çek. 1-100 arasında aklınızdan tuttuğunuz sayıyı
10. Kızaran tostu tabağa koyarak servis et. bulan programın algoritmasını inceleyelim. Bu
11. Bitir. kısımda biraz matematiksel işleme ihtiyacımız ola-
Bu algoritmamızda; cak. Belli iki sayı arasındaki sayıyı en hızlı şekil-
de sayı limitlerini sürekli ikiye bölerek bulabiliriz.
• Adım 2: Girdiler,
Aşağıdaki algoritmada bunun matematiksel olarak
• Adım 3-9: İşlemin yapılma aşamaları, gösterimini inceleyelim.
• Adım 10: Çıktıdır. Girdiler
İşlem adımlarından da görüleceği gibi, algorit- • Sayının büyük / küçük olduğunu bildiren
madaki adımların mantıksal sıralamasına dikkat
evet (e), hayır (h), bildin (b)
edilmesi ve bu sıranın takip edilmesi gerekmektedir.
Aksi hâlde bu basit işlemde bile istediğimiz sonuca Çıktı
ulaşamayız. Algoritma adımlarının herkes tarafın- • Tahmin edilen sayı
dan anlaşılabilir olması gerekmektedir, bu yüzden 5.
adımda oldukça detaylı bir açıklama yapılmıştır.

4
1
İleri Programlama I

Algoritma Bu algoritmamızda, tutulan sayıyı bulmak için


1. Başla. minimum ve maksimum sayılarımızın ortasında-
2. Minimum_sayı = 0, maksimum_sayı = 100 ki sayıyı bularak her tahminde tahmin kümemizi
değerlerini ver. küçültüyoruz. Tutulan sayı, tahmin edilen sayıdan
3. Tahmin = ( maksimum_sayı – minimum_ küçükse, maksimum sayıyı yani üst sınırımızı tah-
sayı ) / 2 + minimum_sayı olarak hesapla. min edilen sayıya çekiyoruz. Tutulan sayı, tahmin
4. Tahmin, tutulan sayıdan küçükse (e), bü- edilen sayıdan büyükse, minimum yani alt sınırı-
yükse (h), eşitse (b) girilmesini iste. mızı tahmin edilen sayıya çekiyoruz. Kullanıcının
yönlendirmeleri doğru girdiği her koşulda, sayı
5. EĞER
aralıkları sürekli bölüneceği için tutulan sayı en so-
a. girdi = (e) ise maksimum_sayı = tahmin
nunda bulunacaktır.
b. girdi = (h) ise minimum_sayı = tahmin
Algoritmayı daha detaylı incelemenin bir yolu
c. girdi = (b) ise ekrana “Tuttuğun sayıyı da her adımda sırayla değişkenlerin değerlerini
buldum!!!” yazdır.
yazarak bir tablo oluşturmaktır. Şimdi yukarıdaki
i. 7. adıma git. algoritma için örnek bir değer ile bu tabloyu ince-
6. 3. adıma git. leyelim.
7. Bitir.
Tablo 1.1 Sayı tahmin oyunu işlem adımları

İşlem Tutulan Tahmin Karşılaştırma


Alt Limit Üst Limit
Sırası Sayı (Üst Limit - Alt Limit)/2 + Alt Limit Tahmin < Tutulan Sayı

1 33 0 100 50 h

2 0 50 25 e

3 25 50 38 h

4 25 38 32 e

5 32 38 35 h

6 32 35 34 h

7 32 34 33 Bildi!!!

Problem Çözme
Problem, gündelik hayatta karşılaştığımız bir sorun, bir otomasyon sistemi ya da işlemin bilgisayar ile
çözülebilmesi fikrinin ortaya çıkmasıdır. İnsan gücü ile çok uzun zaman alacak ya da çözülemeyecek so-
runların bilgisayar vasıtası ile çözülmek istenmesi ile bilgisayar problemleri kavramı oluşmuştur.
Çözülmesi beklenen problemin incelenerek tam olarak anlaşılması gerekmektedir. Eğer tam olarak
anlaşılmayan bir problem çözülmeye çalışılırsa, tüm çözüm aşamalarının tekrar hazırlanması gerekecektir.

5
1
Algoritma ve Programlamaya Giriş

Belirlenen problemin bilgisayar ortamında çö- 4. Çözümün Sınanması ve İyileştirilmesi:


züm aşamaları ise şu şekilde sıralanabilir: Hazırlanan algoritmanın kodlamadan önce
1. Problemi Tanımlama (İnceleme, Analiz): nasıl çalışacağının adım adım incelenmesi,
Algoritmanın amacı problemi çözmektir. varsa eksik ve hataların giderilmesi ve ge-
Çözülecek problem ne kadar iyi anlaşılır ise rekli görülen değişikliklerin yapılması ge-
algoritmayı geliştirmek o kadar kolay ola- rekmektedir. Bu işlemler sırasında işlemci
caktır. ve bellek kullanımı konusunda görülen iyi-
leştirme imkânları da mutlaka göz önünde
2. Girdi ve Çıktıların Belirlenmesi: Prob-
bulundurulmalıdır.
lemi iyi tanımlayabilmek için başlangıç ve
bitiş noktaları belirlenmiş, sistemin girdi ve 5. Algoritmanın Kodlanması: Problemin çözü-
çıktı parametrelerinin ortaya konulmuş ol- mü için geliştirilen algoritma, bilgisayar üze-
ması beklenmektedir. rinde çalışabilmesi için ihtiyaca uygun olarak
belirlenen bir programlama dili ile kodlanır.
3. Alternatif Çözüm Yolları: Bir problemin
birden fazla çözüm yolu olduğu unutulma- 6. Kodun Sınanması ve İyileştirilmesi: Ya-
malıdır. Zamana ve insan kaynağına göre zılan kod da tıpkı algoritmada olduğu gibi
en uygun çözüm yolu belirlenmelidir. Al- sınanmalıdır. Bu seferki sınama, belirlenen
goritma, seçilen çözümü adımlara ayrıştırıp girdiler için belirlenen çıktıların alınması-
birbirleri ile ilişkilerinin düzgün biçimde nın kontrol edilmesi amacıyla kodun çalış-
kurulmasını sağlayacak şekilde dizayn edil- tırılmasıdır. Bu aşamada da performans ve
melidir. olası hataların düzeltilmesi beklenmektedir.
Öğrenme Çıktısı
1 Algoritma kavramını öğrenebilme ve hangi durumlarda kullanılacağı kavrayabilme

Araştır 1 İlişkilendir Anlat/Paylaş

Günlük hayatta sıkça ger-


Algoritma sadece program- Genellikle kullandığınız
çekleştirdiğimiz market alış-
lamada mı kullanılıyor, algoritmik bir olayı payla-
verişini, algoritma adımları
araştırınız. şınız.
ile ilişkilendiriniz.

AKIŞ DİYAGRAMI
Akış diyagramları algoritmanın, görsel ve şekilsel olarak ifade edilmesi için kullanılır. Algoritmadan
farklı olarak programın başlangıcından bitişine kadar olan tüm adımlar, geometrik şekillerle gösterilmekte-
dir. Her bir geometrik şekil ve simge, bir iş veya komuta karşılık gelmektedir. Bu yüzden algoritmadaki gibi
her adım için açıklama yapma zorunluluğu yoktur. Algoritmadaki adımlar arası geçişler, akış diyagramında
oklar ile temsil edilmektedir. Akış diyagramında kullanılan şekillerin uluslararası geçerliliği olduğundan,
herkes tarafından rahatça anlaşılabilir.
Programın asıl dokümanları arasında yer alan akış şemaları, sorunun daha kolay çözülebilmesi, iş akı-
şının kontrol edilerek programın daha rahat kodlanmasının sağlanması amacıyla kullanılır. Akışlar, ilk
olarak ana modüller ve sonrasında her bir modül detaylı şekilde hazırlanmalıdır. Böylece tüm modüllerin
detayları ve aralarındaki ilişkiler daha rahat anlaşılabilir.

6
1
İleri Programlama I

Akış Diyagramında Kullanılan Şekiller


Akış diyagramında kullanılan şekillerin içlerine değişkene atanan değerler, değişken isimleri, karşılaştır-
malar ve işlemler yazılabilir ancak burada kullanılan ifadeler algoritmada kullanılanlar kadar serbest şekilde
kullanılmamalıdır. Kullanılan ifadeler kısa, net ve anlaşılır olmalıdır.

Tablo 1.2 Akış Diyagramı Şekilleri


Şekil Adı Açıklama
Algoritmadaki başlangıç ve bitiş konumlarını
Başla / Bitir
gösterir.

Matematiksel işlemler, değişkenlere değer atamaları


İşlem / Atama
gibi aşamalar kısa ifadeler ile bu şekil içerisine yazılır.

Klavye, ekran, yazıcı, okuyucu gibi çevre birimleri


Girdi / Çıktı ile yapılan girdi / çıktı işlemlerini simgeler. Yapılacak
işlem kutucuğa kısa ifadeler ile yazılır.
Karşılaştırma işlemlerinin sonuçlarına göre akış
yönü belirlenen durumlarda kullanılır. Yapılacak
Karşılaştırma ve
karşılaştırma kutucuk içerisine kısaca yazılır. E
Karar
(Evet), H (Hayır) ile belirlenen çıktılar, başka bir akış
elemanına bağlanır.
Birden fazla yapılacak işlemlerde kullanılır.
Döngü Kutucuğun bir kolu döngüsel işlemlere, diğer kolu
da döngü sonlanınca sıradaki akışa bağlanır.
Döngü gibi alt süreçler içeren durumlarda kullanılır.
Alt süreç Kutucuğun içerisine kısa ifadeler ile sürecin
açıklaması yazılır.

Ekran Çıktısı Ekrana istenilen metni yazdırmak için kullanılır.

Bir sayfaya sığmayan akışlarda ya da fonksiyonların


Bağlantı
başlangıç / bitiş noktalarının belirlenmesi için kullanılır.

Şemada kullanılan şekillerin arasındaki bağlantıları


Akış Yönü
belirtir. Ok yönü, akış yönünü göstermektedir.

Akış Diyagramı Türleri


Akış diyagramları, kullanılan algoritmaların içerik ve biçimine göre genel olarak üç grupta sınıflandı-
rılabilir.
Doğrusal (Sıralı): Akış içerisinde giriş, hesaplama ve çıkış biçiminde sıralı bir olay kurgusu vardır. Her
işlem bir diğerini takip ederken işlemler içinde koşul veya döngü gerçekleşmez.
Örnek olarak:
• Girilen iki sayının çarpımını bulma,
• Çemberin çevre ve alanını bulma,
• Notları girilen öğrencilerin sınıf ortalamasını bulma
verilebilir.

7
1
Algoritma ve Programlamaya Giriş

Örnek Akış: Kullanıcıdan alınan iki sayının Örnek Akış: Kullanıcıdan alınan iki sayıdan
çarpımını hesaplama büyük olanı bulma

Başla
Başla

Sayı1,Sayı2

Sayı1,Sayı2

H E
Sayı1>Sayı2?

Çarpım= Sayı1 x Sayı2

Büyük=Sayı2 Büyük=Sayı1

Çarpım
Büyük

Bitir Bitir

Resim 1.2 Kullanıcıdan Alınan İki Sayının Çarpımını Resim 1.3 Kullanıcıdan Alınan İki Sayıdan Büyük Olanı
Hesaplayan Akış Diyagramı Bulan Akış Diyagramı

1. Başla.
1. Başla. 2. Sayi1 ve Sayi2’yi oku.
2. Sayi1 ve Sayi2’yi oku. 3. Eğer (Sayi1 > Sayi2)
3. Çarpım = Sayi1 x Sayi2 3.1 Büyük = Sayı 1;
4. Çarpımı ekrana yaz. 4. Değilse
5. Bitir. 4.1 Büyük = Sayı 2;
5. Büyük sayıyı ekrana yaz.
Mantıksal (Koşullu): Akışın yönünün bazı
kural ve koşullara göre değiştiği akış şemalarıdır. 6. Bitir.
Ayrıca koşulların durumuna göre bazı adımlar ger- Döngüsel (Tekrarlı): Mantıksal akış şemasının
çekleşmez. özelleşmiş bir versiyonu olduğu söylenebilir. Koşula
Örnek olarak: göre bazı adımların tekrarlandığı akış şemalarıdır.
• Girilen iki sayıdan büyük olanı bulma, Örnek olarak:
• 3 sayının en küçüğünü bulma, • Girilen bir kelimeyi ekrana 100 defa yazdırma,
• 1’den N’ye kadar olan sayıların toplamını bulma,
• Girilen bir sayının tek-çift olduğunu anlama
• Girilen bir sayının faktöriyelini hesaplama
verilebilir.
verilebilir.

8
1
İleri Programlama I

Örnek Akış: Girilen bir sayının faktöriyelinin Örnek Doğrusal Akış Diyagramı
hesaplanması • Başla.
Başla
• Kullanıcıdan 1. ve 2. sayıyı girmesini iste.
• Toplam = 1. sayı + 2. sayı
• Çarpım = 1. sayı * 2. sayı
N sayısını iste
• Ortalama = toplam / 2
• Toplam, çarpım ve ortalamayı ekrana yazdır.
Sayaç=0, Faktöriyel=1
• Bitir.
Algoritması yukarıdaki şekilde verilen, kullanı-
sayaç=sayaç+1
Faktöriyel=Faktöriyel*sayaç
cının girdiği 2 sayının toplamı, çarpımı ve ortala-
masını veren akış diyagramının çizimi

Sayaç<N? Başla
E
H
sayı1 ve
sayı2 iste

Faktöriyel
Toplam=sayı1+sayı2
Çarpım=sayı1xsayı2
Bitir Ortalama=Toplam/2

Resim 1.4 Girilen Bir Sayının Faktöriyelinin Hesaplayan


Toplam
Akış Diyagramı
Çarpım
Ortalama
1. Başla.
2. N sayısını kullanıcıdan iste. Bitir
3. Sayaç = 0, Faktöriyel = 1
Resim 1.5 Girilen 2 sayının toplamı, çarpımı ve
4. Sayaç = Sayaç + 1
ortalamasını veren akış diyagramı
5. Faktöriyel = Faktöriyel * Sayaç
6. Eğer (Sayaç < N) ise
6.1. 4. Adıma git.
7. Faktöriyeli ekrana yaz.
8. Bitir.

9
1
Algoritma ve Programlamaya Giriş

Başla

Örnek Döngüsel Akış Diyagramı


A sayısını iste
Kullanıcının girdiği bir A tam sayısının çarpan-
larını bulan algoritmanın akışının çizilmesi
1. Başla.
i=1 to A,
2. Kullanıcıdan A tam sayısını girmesini iste. step=1
3. i değişkenine 1 değerini ata.
Hayır
4. EĞER i = A ise 8. adıma git. A mod i=0
Bitir
5. EĞER A mod i = 0 ise ekrana “i” değerini
yazdır. Evet
6. i değişkeninin değerini 1 arttır.
7. 4. Adıma git. i

8. Bitir.

Resim 1.6 Girilen Bir A Tam Sayısının Çarpanlarını


Bulan Akış Diyagramı
Örnek Akış Diyagramı
1-100 arasında aklınızdan tuttuğunuz sayıyı bulan program
1. Başla.
Başla
2. Minimum_sayı = 0, maksi-
mum_sayı = 100 değerlerini ver.
3. Tahmin = ( maksimum_sayı Min=0, Max=100
– minimum_sayı ) / 2 + mi-
nimum_sayı olarak hesapla.
Tahmin=(Max-Min)/2+Min
4. Tahmin, tutulan sayıdan
küçükse (e), büyükse (h),
eşitse (b) girilmesini iste. Cevap=Tahmin<sayı?

5. EĞER
a. girdi = (e) ise maksi- E
Cevap= e?
H
mum_sayı = tahmin
b. girdi = (h) ise mini- E H
Min=Tahmin Cevap= h?
mum_sayı = tahmin
c. girdi = (b) ise ekrana Min=Tahmin Tuttuğun sayıyı
“Tuttuğun sayıyı bul- bildim!!!
dum!!!” yazdır.
i. adıma git.
6. 3. adıma git. Bitir
7. Bitir.
Resim 1.7 1 ile 100 Arasında Tutulan Sayıyı Bulan Akış Diyagramı

10
1
İleri Programlama I

Öğrenme Çıktısı
2 Bir algoritmanın akış diyagramını çizebilme ve analizini yapabilme

Araştır 2 İlişkilendir Anlat/Paylaş

Belirlenen bir akışa uyma-


Deprem anında ve sonra- Günlük hayatta kullandı-
dığınız için yaşadığınız ta-
sında yapılması gerekenleri ğınız ardışık adımları olan
lihsiz bir olayı düşünün ve
akış diyagramı çizerek ifade olayları akış diyagramları ile
tekrar olmaması için uygun
ediniz. ilişkilendiriniz.
çözüm yolunu paylaşınız.

SÖZDE KOD (PSEUDO CODE) • Eğer … İse …(if … then … [if … then]
Problem çözümü için tasarlanan algoritmanın ) ve Eğer … ise … Değilse Eğer … (if …
kodlanması gerekmektedir. Sözde Kod (Pseudo- then … else): Koşullara göre akışa yön ver-
Code), bu algoritmanın bir programlama diline mek için kullanılır.
dönüştürülmeden önceki bir ara formu olarak dü- • Döngü (sayaç= [Başlangıç değeri] TO
şünülebilir. Bu ara form, algoritmanın yarı prog- [Hedef sayı değeri] STEP [Artış/aza-
ramlama dili yarı konuşma dili şeklinde ifade edil- lım miktarı]) … Döngü sonu (for …
mesidir. Sözde kod şeklinde verilen bir algoritmada, endfor): Kod içerisinde, sayısı belli olan
veri yapıları gibi detaylar göz ardı edilerek daha çok tekrarlı blokların oluşturulmasında kulla-
algoritmanın davranışı üzerine odaklanılır. Ayrıca nılır.
sözde kod oluşturulurken herhangi bir söz dizimi
kuralı yoktur. Böylece algoritmamız, daha fazla • Döngü (kontrol) … Döngü sonu (whi-
kişi tarafından anlaşılabilecek ve sözde kodu alan le … endwhile): Belli bir koşul sağlanana
bir yazılımcı da ihtiyaca göre seçilen programlama kadar yapılması gereken işlem bloklarında
dilinde kolay bir şekilde kodlayabilecektir. Sözde kullanılır.
kodun hazırlanmasının bir diğer faydası da, kod- Örnek Sözde Kod 1
lama bilmeyen kişilerin de yapılacak işin akışını ve - Başla.
mantığını kavramalarında kolaylık sağlamasıdır.
Burada dikkat edilmesi gereken en önemli nokta, - Kullanıcıdan 1. ve 2. sayıyı girmesini iste.
metnin anlaşılır ve kolaylıkla bir programlama dili- - Toplam = 1. sayı + 2. sayı
ne uyarlanabilir olmasıdır. - Çarpım = 1. sayı * 2. sayı
Genel olarak kullanılan sözde kod komutlarını - Ortalama = toplam / 2
şu şekilde listeleyebiliriz:
- Toplam, çarpım ve ortalamayı ekrana yazdır.
• Başla (begin): Programın başladığını gösterir.
- Bitir.
• Bitir (end): Programın bittiğini gösterir.
Algoritması yukarıdaki şekilde verilen, kullanı-
• Oku (input, read, get, accept): Kullanıcı-
cının girdiği 2 sayının toplamı, çarpımı ve ortala-
dan veri alır.
masını veren sözde kodun yazımı ve akış diyagra-
• Yaz (print, display, write): Kullanıcıya çı- mının çizimi
kış birimlerinden sonuç gösterir.

11
1
Algoritma ve Programlamaya Giriş

Başla
1. sayi1 <- INPUT
2. sayi2 <- INPUT sayı1 ve sayı2
iste
3. toplam <- sayi1 + sayi2
4. carpim <- sayi1 * sayi2 Toplam=Sayı1+Sayı2
5. ortalama <- toplam / 2 Çarpım=Sayı1xSayı2
Ortalama=Toplam/2
6. PRINT toplam, carpim, ortalama
Hazırlanan sözde koddan da anlaşılacağı gibi, Toplam, Çarpım,
değişkenlere değer atamalarında <- (ok) işareti ile, Ortalama

kullanıcıdan istenen bilgi girişleri INPUT komutu


ile, ekrana bastırılacak veriler de PRINT komutu Bitir
ile gösterilmiştir. Sözde kod akış diyagramları gibi
evrensel olduğu için daha yaygın kullanımından Resim 1.8 Girilen 2 Sayının Toplamı, Çarpımı ve
dolayı İngilizce dili tercih edilmiştir. Ortalamasını Veren Akış Diyagramı

Öğrenme Çıktısı
3 Sözde Kod (Pseudo Code) yazımı ve analizini yapabilme

Araştır 3 İlişkilendir Anlat/Paylaş

Bir ekipteki kişilere dağıtılan


Sözde kod kullanılmasında- Sözde kod yapısında hazırladı-
görevler ile sözde kod arasın-
ki amaç nedir, araştırınız. ğınız bir akış varsa paylaşınız.
daki benzerliği ilişkilendiriniz.

YAZILIM GELİŞTİRME SÜRECİ


Taleplerin
Yazılım geliştirme sürecinin aşamalarını ise şu şekilde gösterebiliriz: 01 Belirlenmesi
Taleplerin Belirlenmesi: Yazılım geliştirmenin ilk başta ele alınması
gereken ve en önemli adımıdır. İhtiyacın belirlenerek buna uygun çözü-
Planlama ve
mün geliştirilmesi için, odaklanılması gereken yerler doğru tespit edilme- 02 Analiz
lidir. Yazılım geliştirme sürecinin ilk adımı olduğu ve bundan sonraki tüm
adımları doğrudan etkilediği için, tüm ihtiyaçların net olarak anlaşılması
gerekmektedir. 03 Tasarım

Gereksinimlerin belirlenmesi esnasında, süreçler anlaşılabilir bir şekil-


de iş akış diyagramları ile desteklenmelidir. Eğer akışlar içinde karmaşık
süreçler varsa, küçük parçalara ayrılarak çözülmesi denenmelidir. Tüm iş 04 Kodlama
modelleri şeffaf bir şekilde belirlenerek karışıklığa izin verilmemelidir. İş
süreçleri mümkünse konu hakkında en uzman kişilerle görüşülerek analiz
edilmelidir. Ortaya çıkarılan gereksinimlerin bir önem sırasına sokulması 05 Test ve Entegrasyon
da yazılımın geliştirilmesi açısından önemli bir adımdır.
Tamamlanan gereksinim analizi raporu, iş sahibi ile mutabık kalınarak
tüm sınırların çizilmesinde kullanılacaktır. Bu doküman bir referans olarak 06 Bakım
kabul edilir ve dokümanda yazmayan istekler, kapsam dışı ek talepler ola-
rak değerlendirilir. Resim 1.9 Yazılım geliştirme
süreci aşamaları

12
1
İleri Programlama I

Planlama ve Analiz: Bu aşamada, ilk adımda Bu süreçte de müşteri, Bilgi İşlem (IT) ve yazı-
ortaya çıkarılan modüller detaylı olarak analiz edil- lım ekiplerinin tüm sorularına cevap aranmalı; tüm
meli, projenin hedefleri ve amaçları detaylandırıl- detaylar, çizimler ve gerekli tasarımlarla dokümana
malıdır. Çözümden elde edilen tüm çıktılar ve bek- eklenmelidir. Bu süreç sonucunda oluşan dokü-
lentilerin neler olduğu kesin olarak belirtilmelidir. man da yine tüm taraflarca onaylanmalıdır. Alınan
Yine bu aşamada, projede zaman kaybına neden onayın ardından diğer aşamaya geçilmelidir.
olacak önemli görülmeyen ve acil olmayan özellik- Kodlama: Bu aşamada ise tasarım aşamasında
ler, sonraki fazlara aktarılabilir. oluşturulan tüm dokümanlar ve istekler yazılım
Burada yazılımın nasıl geliştirileceğinden ziya- geliştirme ekibine iletilmektedir. Yazılım geliştirme
de, ihtiyaçların neler olduğuna odaklanılmalıdır. süreci de kod yazım standartlarına uyularak yazılım
Aynı zamanda, isteklerin mevcut teknoloji ve bütçe geliştirme ekibi tarafından gerçekleştirilir.
ile karşılanabilme durumu kontrol edilmelidir. Ya- Kodlama süresince, hazırlanan akışlarla ilgi-
zılım geliştirme ekibi ile en uygun yazılım dili, mi- li karşılaşılan problem ve sorunları, yazılımcılar
mari yapı ve sunucu özelliklerine karar verilmelidir. tarafından tasarım ekibi ile koordineli bir şekil-
Burada amaç, sistemin geliştirilmesi için en uygun de çözmeleri beklenmektedir. Böylece kodlama
yöntemin ortaklaşa bir kararla belirlenmesidir. yaparken daha önce düşünülmemiş bir durumla
Analiz kısmında oluşturulacak belge oldukça karşılaşıldığında, anında müdahale ile çözüm sağ-
sade olmalı ve herkesin anlayabileceği şekilde yazıl- lanacaktır.
malıdır. Çünkü bu doküman vasıtası ile; Her ne kadar kısa bir süreçmiş gibi gözükse de
• Yazılım geliştiriciler, müşterinin ihtiyacını kodlama kısmı olayın merkezinde yer almaktadır.
tam olarak anlayabilmeli, Müşterinin ihtiyaçlarının çözüme kavuştuğu ve
• Tasarım ekibi, sistem tasarımını bu ihtiyaç- işin somut bir hâle geldiği aşamadır. Mümkünse
lara göre ele alabilmeli, yazılım mimarisine bağlı olarak her modülde müş-
teri ile onaylı gidilmeli, olası mantıksal sorunların
• Test ekibi, oluşturulan analize göre test se-
müşterinin kullanımı sırasında ortaya çıkması ön-
naryolarını hazırlayabilmelidir.
lenmelidir.
İyi dokümante edilmiş bir analiz raporu, iş sa-
Test ve Entegrasyon: Geliştirilen modüller, pa-
hibi ve yazılımcı arasında varılacak mutabakat ile
ketler ve akışların, müşterinin taleplerine uygun şe-
imza altına alınmış olmalıdır. Böylece gerektiğinde
kilde hazırlanan senaryolara göre test ekibince test
ihtilafa düşülen durumlarda yol gösterici bir rehber
edildiği aşamadır.
olarak yardımcı olacaktır.
Esasında, yazılım testleri kodlamanın her aşa-
Tasarım: Bu aşamada ise hazırlanan projenin
masında yapılmalıdır. Analiz sırasında yapılan
teknik kısımları ele alınmaktadır. Kullanıcı arayüz-
mantıksal hatalar, kodsal yapılan kontrol hataları,
leri, veri tabanı şemaları, UML (Unified Modelling
devreye alım sırasında sistemsel oluşabilecek hata-
Language — Birleşik Modelleme Dili) diyagramları
ların tümü test aşamasında ele alınmalıdır.
hazırlanır. Tasarımlar yapılırken yazılım standartları-
na uygun şekilde dizayn edilmesi gerekmektedir. Yazılım geliştirme ekiplerince birim testler,
kodlama sırasında yapılmalıdır. Bununla birlikte,
Arayüz tasarımlarında kullanıcı deneyimi ve
modüller ve akışların iletişimleri de test edilmelidir.
kullanım kolaylığı göz önüne alınarak hareket
Test ekipleri ise tüm sistem ele alınarak oluşturulan
edilmelidir. Kullanıcının istediği sayfaya kolaylıkla
senaryolar ile tüm süreçleri kontrol etmelidir.
ulaşabileceği, en az tıklama ile girebileceği şekilde
sayfalar dizayn edilmelidir. Genişletilebilir bir ya- Testin en son aşamasında ise müşterinin ka-
zılım mimarisi ile, ileride gelebilecek taleplerin de bul testi yer almaktadır. Teknik detaya girmeden,
kolaylıkla karşılanabilmesi hedeflenmelidir. müşterinin isteklerinin karşılanıp karşılanmadığı
kontrol edilir. Bu sürece kadar somut bir şey gör-
Ayrıca proje takip sistemleri kullanarak ekiple-
meyen müşteri için, ihtiyaçlarının ne oranda kar-
rin takım çalışması içerisinde yönetilmesi, gerek-
şılandığını göreceği aşama burasıdır. Bu aşama da
tiği yerde kodların kontrolü, çalışma raporları ve
geçilince sistemin devreye alım için hazır olduğu
iş süreçleri takibinin daha rahat şekilde yapılması
ifade edilebilir.
sağlanmalıdır.

13
1
Algoritma ve Programlamaya Giriş

Devreye alım süreci ise imkân varsa öncelikle Bakım: Her ne kadar son sistem test araçları
pilot bir uygulama olarak müşteriye sunulmalıdır. kullanılsa da, birim ve sistem testleri başarılı bir
Genellikle büyük ölçekli, çok kullanıcılı sistemlerde şekilde geçse de, operasyon sırasında kullanıcılar
bu yol izlenmektedir. Karşılaşılan hatalar, sistemsel hata alabilirler. Burada önemli olan alınan hatalar
kısıtlar gibi sorunlar bu süreçte giderilerek sorunsuz için hızlı bir şekilde ve kalıcı çözüm üretebilmektir.
bir sistem tüm kullanıcılara hizmet vermeye hazır Bakım süreci, projenin büyüklüğüne göre şekillen-
hâle gelecektir. Devreye alımda önemli bir nokta da
mektedir. Operasyon kısmında artık sorun alınma-
sistemin kullanımına yönelik oluşturulan kullanma
kılavuzları, yönergelerin hazırlanması ve sürekli gün- dığı zaman bu süreç de sonlandırılarak, standart
cel tutulmasıdır. Bu belgeler, sisteme yeni dâhil olan bakım sürecine geçilebilir.
kullanıcılar için de önemli bir kaynak olacaktır.
Öğrenme Çıktısı
4 Yazılım geliştirmek için izlenecek adımları belirleyebilme

Araştır 4 İlişkilendir Anlat/Paylaş

Yazılım geliştirme adımları Geliştirme süreçlerine ben-


Yazılım geliştirirken kulla-
ile bir inşaat projesi yapıl- zer şekilde kullandığınız
nılan diğer modelleri araş-
ması adımlarının benzerlik- ürün geliştirme adımları
tırınız.
lerini ilişkilendiriniz. varsa paylaşınız.

GÜNLÜK HAYATTAN ALGORİTMA ÖRNEKLERİ


Günlük hayatta yaptığımız çoğu eylem de algoritmalara örnek olarak verilebilir. Bunların çoğunu pra-
tik bir şekilde ve sürekli yaptığımız için, eylemdeki algoritma adımlarını fark etmeyiz. Yaptığımız en küçük
bir işte bile, yine bir algoritmanın takip edildiğini göreceksiniz.
• Hava durumuna göre yanımıza şemsiye, şapka alma,
• Çay demleme,
• Asansörün 250 kg üzeri yük geldiğinde çalışmayı durdurması,
• Çamaşır yıkama ve asma, Başla
• İşe gitmek için yapılan hazırlıklar
gibi örnekler verebiliriz. Şimdi bu örnek-
lerden birkaçı için algoritma ve akış diyag- E Hava H
yağmurlu mu
ramlarını inceleyelim.
• Hava durumuna göre yanımıza
şemsiye, şapka alma
1. Başla. E Hava H
güneşli mi
2. Hava yağmurlu veya kapalı mı?
3. Evet ise 10. adıma git.
4. Hayır ise 5. adıma git. Şemsiyeni al Şapkanı al
5. Hava çok güneşli mi?
6. Evet ise 8. adıma git.
7. Hayır ise 11. adıma git.
8. Şapkanı yanına al.
9. 11. adıma git.
10. Şemsiyeyi yanına al. Bitir

11. Bitir. Resim 1.10 Hava Durumuna Göre Şemsiye ya da Şapka Alma Akış
Diyagramı
14
1
İleri Programlama I

• Çay demleme • Maksimum 3 kişi ve 250 kg taşıma kapa-


1. Başla. sitesine sahip bir asansöre daha fazla yük
yüklediğimizde “Aşırı Yük” uyarısı vererek,
2. Mutfağa git .
yük miktarı azaltıldığında hareket etmesini
3. Çaydanlığa su koy. sağlayan algoritmayı inceleyelim.
4. Çaydanlığı ocağa koy. 1. Başla.
5. Ocağın altını yak. 2. Asansördeki yük miktarını ölç.
6. Su kaynamış mı kontrol et. 3. Yük miktarı 250 kg büyük mü?
7. Evet ise 9. adıma git. 4. Evet ise 6. adıma git.
8. Hayır ise 6. adıma git. 5. Hayır ise 8. adıma git.
9. Çayı demle. 6. Aşırı yük uyarısı ver.
10. 10 dakika demlenmesini bekle. 7. 2. adıma git.
11. Çayı servis et. 8. Bitir.
12. Bitir.

Başla Başla

Mutfağa git
Asansördeki
yükü ölç
Çaydanlığa su koy

E 250 kg dan H
Çaydanlığı ocağa koy
fazla mı

Ocağın altını yak

Aşırı yük!!!
Su kaynamış mı kontrol et

Bitir

E Su kaynamış H Resim 1.12 Asansörde Yük Kontrolü Yapan Akış


mı?
Diyagramı

Çayı demle

10 dk bekle

Servis et

Bitir

Resim 1.11 Çay Demleme Akış Diyagramı

15
1
Algoritma ve Programlamaya Giriş

Yaşamla İlişkilendir

ALGORİTMALARIN ÖNEMİ bulabilme, yüz tanıma algoritması ile daha net


İnsan hayatı mekân ve zaman sınırlamaları fotoğraf çekimi, herhangi bir yol bulma uygu-
ile kısıtlanmıştır. İnsanların bir gün veya yaşan- lamasında en kısa yolu bulabilme iyi bir algorit-
tısı boyunca neyi yapıp neyi yapmayacağı konu- ma geliştirilmesi sayesinde gerçekleşmektedir.
sunda karışıklığa düştüğü kabul edilmektedir. Organ nakli için veri tabanı oluşturularak uy-
Bu açıdan bakıldığında bu sınırlamalar içinden gun kişilerin eşleştirilmesinde, üniversite ter-
çıkılmaz bir duruma gelmektedir. Sadece insan- cihinde öğrencilerin puan sıralamasına ve ter-
lar değil bilgisayarın da aynı kısıtlamalar altında cihlerine göre üniversitelere yerleştirilmesinde,
olduğu düşünülmektedir. Fakat birçok uzman, bir havaalanında veya otobüs terminallerinde
algoritma bilen insanlar için bu durumun öyle sefer saatlerinin çakışmayacak şekilde ayarlan-
olmadığını savunmaktadır. Bilgisayar bilimciler ması gibi birçok konuda algoritmalar önemini
yıllarca bu tür sorunların farklı versiyonları ile artırmaktadır. Algoritmalar sadece kullanmış
uğraşmışlardır. Bilgisayarlarda kullanılan algorit- olduğumuz teknolojik araçlar ya da aldığımız
maların insanlığın birçok problemini çözebilece- hizmet alanlarında değil kişisel yaşamlarımızda
ği savunulmaktadır. Algoritma mantığına sahip da önemlidir. Örneğin günümüzde dijitalleş-
olmanın insan sezgilerini geliştirdiği, mevcut menin artması ile gerek sosyal medyada gerek
veya olası işlerin ne zaman başlayıp bitirileceği dijital bankacılık gibi alanlarda birçok kişinin
sorusuna daha rahat cevap verilmesini sağladığı hesabı bulunmaktadır. Bu hesapların çokluğu
ve problemli seçimlerle nasıl başa çıkılacağı ko- nedeniyle şifreleri unutmamak veya karıştır-
nularında kolaylık sağladığı savunulmuştur. mamak adına tüm hesaplarda aynı şifre veya
doğum günü gibi özel tarihlerin kullanılması
Çağımızda hemen her alanda birçok tek-
hesapların bir başkası tarafından ele geçirilme-
nolojik araç kullanılmaktadır. Bu teknolojik
si açısından risk taşımaktadır. Hesap sahipleri
araçların etkili bir şekilde kullanılabilmesinin
bu riski azaltmak için kişisel kriptografik yani
sebebi sahip oldukları algoritmalardır. Günlük
şifreleme algoritması geliştirerek birçok dijital
yaşamın karmaşık yapısından dolayı karşılaşı-
hesap şifresinin tahmin edilmesini daha zor
lan problemleri çözüme ulaştırmak için yapıl-
hâle getirebilir. Bu sayede kişisel hesabının gü-
ması gerekenleri adım adım belirleme ihtiyacı
venlik seviyesini artırabilir. Bu ve buna benzer
algoritmaların önemini artırmaktadır. Bir ma-
örneklerde görüldüğü gibi algoritmalar olduk-
tematik problemi çözerken, internette alışveriş
ça önemlidir.
yaparken, tatile çıkarken bile farkında olarak
ya da olmayarak kullanmış olduğumuz algorit-
malar hayatımızı şekillendirmektedir. Kaynak: Aytekin, A. , Sönmez Çakır, F. , Yücel, Y.
Geliştirilmiş iyi bir algoritma ile çözüme B. & Kulaözü, İ. (2018). ALGORİTMALARIN
veya amaca en kısa yoldan ulaşılması sayesinde HAYATIMIZDAKİ YERİ VE ÖNEMİ. Avrasya
karmaşık birçok süreç basit bir şekilde sonu- Sosyal ve Ekonomi Araştırmaları Dergisi, 5 (7),
ca ulaşmaktadır. Herhangi bir tarayıcıda her- 143-150. https://dergipark.org.tr/tr/pub/asead/
hangi bir arama motoruyla web’de aradığımızı issue/41013/495619 adresinden alınmıştır.

16
1
İleri Programlama I

Öğrenme Çıktısı
5 Günlük hayatta karşılaşılan olayların akışını çıkarabilme

Araştır 5 İlişkilendir Anlat/Paylaş

Geçme notu 50 olan bir


bölümde, vizenin % 40’ı ve
Daha önce hiç düşünmedi- Günlük hayatta sürekli
finalin % 60’ı alındığında,
ğiniz, gündelik hayatta kar- kullandığınız bir işlemin
girilen vize ve final notları-
şılaştığınız ilk olayın akışını arka planda gerçekleştirilen
na göre KALDIN – GEÇ-
düşününüz. adımlarını paylaşınız.
TİN yazdıran bir durumun
adımlarını çıkarınız.

17
1
Algoritma ve Programlamaya Giriş

Algoritma kavramını öğrenebilme


1 ve hangi durumlarda kullanılacağı
kavrayabilme
öğrenme çıktıları ve bölüm özeti

Algoritma

Bilgisayarlar, aklı olmayan ama çok çalışkan makinelerdir. Yapacağı işleri güzel bir şekilde anlatabilirsek,
her ihtiyacımızı kolayca yaptırabiliriz. Bilgisayar ile aramızdaki iletişimi de algoritma ve buna bağlı olarak
hazırlanan yazılımlarla sağlıyoruz.
Algoritma, bir işi yapabilmek için tasarlanmış adımlar silsilesidir. Kendi arasında mantıksal bir bütünlük
bulunur. Bu adımlar net bir şekilde ifade edilmelidir, böylece konu hakkında bilgisi olmayanlar bile bak-
tıklarında kolayca anlayabilirler. Genel kapsayıcılığı ile tüm olası durumları içermeli ve bir bitiş noktasına
sahip olmalıdır.
Algoritmalar bir problemin çözülebilmesi için tasarlanır. Çözüme ulaşabilmek için belli aşamalardan geçil-
mesi gerekmektedir. Bunları da 6 başlık altında toplayabiliriz.
• İnceleme, Analiz
• Girdi çıktıların belirlenmesi
• Alternatif çözümlerin belirlenmesi
• Çözümün iyileştirilmesi
• Kodlama
• Kodun test ve iyileştirilmesi

2 Bir algoritmanın akış diyagramını


çizebilme ve analizini yapabilme

Akış Diyagramı

Akış diyagramları, algoritmanın, uluslararası geçerliliği olan geometrik şekiller ile gösterilmesi için kullanı-
lır. İş akışlarının detaylı olarak incelenip kontrol edebilmesi ve herkes tarafından anlaşılarak daha rahat bir
şekilde kodlanmasına imkân verir. İş akışları oluşturulurken de parçalanabilecek en küçük modüle kadar
parçalanmalıdır. Böylece hem modüllerin oluşturulması hem de yönetimi daha rahat olacaktır. Akış diyag-
ramı türlerini 3 başlık altında inceleyebiliriz:
• Doğrusal
• Mantıksal
• Döngüsel

3 Sözde Kod (Pseudo Code) yazımı ve


analizini yapabilme

Sözde Kod (Pseudo Code)

Algoritma ile kodlama arasındaki ara forma verilen isimdir. Yarı programlama yarı konuşma dili şeklindedir.
Böylece programlama ile ilgisi olmayan iş paydaşlar da akışlar hakkında bilgi sahibi olabilirler.

18
1
İleri Programlama I

4 Yazılım geliştirmek için izlenecek


adımları belirleyebilme

öğrenme çıktıları ve bölüm özeti


Yazılım Geliştirme Süreci

Yazılım geliştirme aşamalarını 6 aşamada inceleyebiliriz.


• Taleplerin belirlenmesi
• Planlama ve analiz
• Tasarım
• Kodlama
• Test ve Entegrasyon
• Bakım
Hazırlanacak olan yazılım projesinin, aralarında ileri - geri gidişler olabilen bu adımları uygulaması bek-
lenmektedir. Başarılı bir proje hayata geçirebilmek için, proje hazırlanırken işin tüm akışı yazılım ekibi
tarafından incelenmeli, detaylar öğrenilmelidir. Bu öğrenme ne kadar detaylı olursa, ihtiyaçları anlama ve
bunlara çözüm yolu bulunması da o kadar kolay olacaktır.

5 Günlük hayatta karşılaşılan olayların


akışını çıkarabilme

Günlük Hayattan Algoritma


Örnekleri

Günlük hayatta yaptığımız eylemlerin çoğunu, farkında olmasak bile belli kurallara uyarak belli sırada
gerçekleştiriyoruz. Sabah yatağımızdan kalkıp işe gidişimize kadar uyguladığımız adımları düşünün. Yü-
zümüzü yıkamak için banyoya girişimiz, musluğu açıp elimizi, yüzümüzü yıkamamız ve musluğu kapatıp
elimizi, yüzümüzü kurulamamız hep bir sıra içinde gerçekleşiyor. Algoritma olarak düşünmemiş olsak bile,
hayatımızın çoğu alanına işlemiş bir olgu olarak karşımıza çıkıyor.

19
1
Algoritma ve Programlamaya Giriş

1 Aşağıdakilerden hangisi algoritma hazırlarken 6 Aşağıdakilerden hangisi akış diyagramı türle-


dikkat edilmesi gereken hususlardan biri değildir? rinden değildir?
neler öğrendik?

A. Adımların net bir şekilde ifade edilmesi A. Doğrusal B. Koşullu


B. Tüm olası durumları içermesi C. Şekilsel D. Mantıksal
C. İşlem sırasının gözetilmesi E. Döngüsel
D. Sonlu sayıda işlem adımı olması
E. İçerisinde mutlaka bir kontrol mekanizması ek- 7 BAŞLA
lenmesi
SAYI sayi1, sayi2, sayi3

2 I. Takım çalışmasını kolaylaştırır. OKU sayi1


OKU sayi2
II. Herkes tarafından kolayca koda çevrilme-
OKU sayi3
sini sağlar.
EĞER sayi1 > sayi2 VE sayi1 > sayi3 İSE
III. Kodlama öncesi mantık hataları tespit
edilebilir. YAZ sayi1
DEĞİLSE EĞER sayi2 > sayi3 İSE
Yukarıdakilerden hangileri algoritmanın önemini YAZ sayi2
belirtmektedir?
DEĞİLSE
A. Yalnız I B. Yalnız II YAZ sayi3
C. I ve II D. II ve III BİTİR
E. I, II ve III Yukarıdaki sözde (pseudo) kod ile yapılan işlem
nedir?
3 ……. belirli bir problemi çözmek ya da bir A. 3 sayının değerlerini yer değiştirmek
hedefe ulaşmak amacıyla izlenmesi gereken yola B. Bir sayı kümesinin en küçüğünü bulmak
verilen isimdir. C. Pozitif doğal sayılarda toplama işlemi yapmak
Yukarıdaki cümlede boş bırakılan yeri aşağıdakiler- D. Girilen 3 sayının en büyüğünü bulmak
den hangisi doğru şekilde tamamlar? E. Girilen sayıların ortalamasını almak
A. Kodlama B. Program
C. Algoritma D. Çözüm 8 BAŞLA
E. İşlem SAYI sayı
OKU sayı
4 Aşağıdakilerden hangisi bir problemin çözüm
aşamalarından biri değildir? DÖNGÜ sayaç = 1 TO sayı STEP = 1

A. Analiz EĞER sayı MOD sayaç == 0 İSE


B. Algoritmanın Kodlanması YAZ sayaç
C. Çözümün İyileştirmesi DÖNGÜ SONU
D. Güncelleme
E. Alternatif Çözüm Yolları BİTİR
Yukarıdaki sözde (pseudo) kod ile yapılan işlem
nedir?
5 Algoritmanın görsel ve şekilsel olarak ifade
edilmesine ne isim verilir? A. Girilen sayı kadar ekrana 1 yazdırmak
A. İş akışı B. Akış diyagramı B. Girilen tam sayının çarpanları yazdırmak
C. İşlem D. Kodlama C. Girilen sayı ile sayaç değerini toplamak
E. Analiz D. Girilen sayının mod değerini yazdırmak
E. Girilen sayı kadar değerleri toplamak

20
1
İleri Programlama I

9 Aşağıdakilerden hangisi yazılım geliştirme sü- 10 Bir yazılım geliştirilirken kullanıcı arayüzü,
reçlerinden biri değildir? veri tabanı şemaları gibi teknik kısımların ele alın-
dığı aşamaya ….. denir.

neler öğrendik?
A. Kodlama
B. Taleplerin belirlenmesi Yukarıdaki cümlede boş bırakılan yeri aşağıdakiler-
C. Test den hangisi doğru şekilde tamamlar?
D. Bakım A. Planlama
E. Güncelleme B. Analiz
C. Tasarım
D. Kodlama
E. Entegrasyon

21
1
Algoritma ve Programlamaya Giriş

1. E Yanıtınız yanlış ise “Algoritma” konusunu 6. C Yanıtınız yanlış ise “Akış Diyagramı” konu-
yeniden gözden geçiriniz. sunu yeniden gözden geçiriniz.
neler öğrendik yanıt anahtarı

2. E Yanıtınız yanlış ise “Algoritma” konusunu 7. D Yanıtınız yanlış ise “Sözde Kod (Pseudo
yeniden gözden geçiriniz. Code)” konusunu yeniden gözden geçiriniz.

3. C Yanıtınız yanlış ise “Algoritma” konusunu 8. B Yanıtınız yanlış ise “Sözde Kod (Pseudo
yeniden gözden geçiriniz. Code)” konusunu yeniden gözden geçiriniz.

4. D Yanıtınız yanlış ise “Algoritma, Problem 9. E Yanıtınız yanlış ise “Yazılım Geliştirme Süreci”
Çözme” konusunu yeniden gözden geçiriniz. konusunu yeniden gözden geçiriniz.

5. B Yanıtınız yanlış ise “Akış Diyagramı” konu- 10. C Yanıtınız yanlış ise “Yazılım Geliştirme Süreci”
sunu yeniden gözden geçiriniz. konusunu yeniden gözden geçiriniz.

Araştır Yanıt
1 Anahtarı

Algoritmalar sadece programlamaya özel bir kavram değildir. Algoritmalar,


hayatımızın tüm işleyişine yayılmış şekilde karşımıza çıkmaktadır. Çay dem-
lemekten omlet yapmaya, sabah uyanıp işe gitmekten araba sürmeye kadar
Araştır 1 neredeyse tüm yaptıklarımız belli bir plan ve sıralı adımları takip ederek, bir
algoritma dâhilinde gerçekleştiriyoruz.

Afad Başkanlığının sitesinde yer alan deprem anında yapılması gerekenler kıs-
mındaki yönergeden seçilmiş başlıklar ile oluşturulan akışımız şu şekildedir:
Başla

Hayır Evet
Deprem oluyor mu

Panik yapma

Sabitlenmemiş eşya ve dolaplardan,


pencerelerden uzak dur

Araştır 2 Korunaklı bir yerde yaşam üçgeni oluştur

Merdiven, asansör, balkona çıkma

Deprem bitti mi Tüm vanaları kapat, elektrikli aletleri


Hayır çalıştırma, çakmak ve kibrit yakma
Evet
Güvenli bir toplanma yerine git

Bitir

Resim 1.13 Deprem anında yapılması gerekenlerin akış diyagramı

22
1
İleri Programlama I

Araştır Yanıt
1 Anahtarı

Sözde (Pseudo) kodda, daha çok algoritmanın davranışı üzerine odaklanılır.


Sözde kod oluşturulurken herhangi bir söz dizimi kuralı yoktur. Hazırlanan
algoritma, daha fazla kişi tarafından anlaşılabilir ve sözde kodu alan bir yazı-
Araştır 3 lımcı da ihtiyaca göre seçilen programlama dilinde kolay bir şekilde kodlayabi-
lir. Sözde kodun hazırlanmasının bir diğer faydası, kodlama bilmeyen kişilerin
de yapılacak işin akışını ve mantığını kavramalarında kolaylık sağlamasıdır.

Yazılımın hem geliştirme hem de kullanımı süresince geçirdiği tüm aşamalara


yazılım geliştirme yaşam döngüsü adı verilir. Bu yaşam döngüsünde evreler
arasında geri-ileri şeklinde bir hareket söz konusudur. Yazılım geliştirme mo-
Araştır 4
delleri, bu yaşam döngüsünün farklı şekillerde ve sırada uygulanmasına den-
mektedir. Şelale, iteratif model, V-model, artımlı model ve çevik model gibi
çeşitli modeller projenin gereksinimlerine göre kullanılmaktadır.

1. Başla.
2. Vize notu gir.
3. Final notu gir.
4. Ortalama hesapla.
4.1 ortalama = vize x 0,4 + final x 0,6
Araştır 5 5. Ortalama >= 50 ise 8. adıma git.
6. Değilse 7. adıma git.
7. Dersten kaldınız uyarısı ver, 9. adıma git.
8. Dersi geçtiniz uyarısı ver.
9. Bitir.

23
1
Algoritma ve Programlamaya Giriş

Kaynakça
Akgül, B. (2015), BPR151 Algoritma ve Programlama I Ders Notları. https://akademiksunum.com/index.jsp?
modul=document&folder=5cd6b64a79f59ea17e8801b5216acf5733c3f13b
Aslanyürek, M. (2021, 2 Ağustos). Programlamaya Giriş ve Algoritmalar Ders Notları https://personel.klu.edu.
tr/dosyalar/kullanicilar/m.aslanyurek/dosyalar/dosya_ve_belgeler/Programlamaya%20Giri%C5%9F%28
Algoritma%29%281%29.pdf
Atık, Y.Z. (2015). Programlama Temelleri, Atatürk Üniversitesi Açıköğretim Fakültesi.
Demir, S. (2021, 1 Ağustos). Algoritma ve Akış Diyagramları. https://www.bilisimmatik.com/algoritma-ve-
akis-diyagramlari/
Hürnalı, E. (2021, 3 Ağustos). Algoritma Geliştirme. https://acikders.ankara.edu.tr/pluginfile.php/58694/
mod_resource/content/0/DersNotu_AlgoritmaKavramiVeProblemCozme.pdf
Kılıçlı, İ. (2021, 1 Ağustos). Problem Nedir? https://silo.tips/download/bazen-de-bir-iletme-veya-ynetimin-
otomasyonunu-salamak-amac-ile-bu-tip-problemle
Özdemir, E. (2021, 5 Ağustos). Waterfall Yazılım Geliştirme. https://erenozdemir.net/waterfall-yazilim-
gelistirme/

24
1
İleri Programlama I

25

You might also like