You are on page 1of 43

Algoritma ve Programlamaya Giriş

Hafta – 2
Algoritma ve Temel Operatörler
Giriş

İnsan, yaşamı boyunca herhangi bir işi gerçekleştirmeden


önce genellikle plan yapar. Plan; işin nasıl yapılacağını, hangi
aşamalardan geçileceğini, ne tür adımlar izleneceğini, neler
elde edileceğini düzenli bir şekilde belirtir ve hedefe
ulaşmada hem yol gösterir hem de büyük kolaylıklar sağlar.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Giriş

❖ Bilgisayar dünyasında, insanın yaşamı boyunca yaptığı "plan" kavramına eşdeğer ‘’algoritma" kavramı vardır.
Bilgisayardaki işlemin/işlemlerin gerçekleştirilmesinde izlenecek mantıklı adımlara (adımlar dizisine, aşamalara),
"algoritma" denir.

❖ Algoritmanın özel geometrik şekillerle çizilmiş şekli de "akış diyagramı’’ olarak adlandırılmaktadır.

Bilgi
"Algoritma" kelimesi Orta Asya'daki Harezm'de doğan matematikçi Ebu Abdullah Muhammed bin Musa el-Harezm’nin isminden gelmektedir. IX. yüzyılda
cebir alanında yayınladığı "Hisab el-cebir ve el-mukabala " kitabı dünyadaki cebir alanında ilk kıtaplardandır. Latince 'ye tercume edilmesiyle çok büyük ilgi
görür ve Avrupalılar ‘’el-Harezmi" (Arapça'da Al- Khwarızmı) yerine "algorizm" kelimesini 'Arap rakamlarını kullanarak aritmetiksel problemleri çözme
kuralları' anlamında kullanırlar ve zamanla bu kelime "algoritma"ya dönüşür.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Giriş

✓ Bir programın yazımındaki temel işlem, programlama mantığına


uygun algoritmanın hazırlanması veya akış diyagramının
çizilmesidir.

✓ Program yazılırken/kodlanırken her ne kadar farklı programlama


dilleri kullanılsa da, bu programın algoritma/akış diyagramı
hiçbir zaman değişmemektedir.

✓ Bu nedenle algoritması hazırlanmış/yazılmış veya akış diyagramı


çizilmiş bir program/problem, tüm programlama dillerinde
kolaylıkla kodlanabilmektedir.
Bilgi

i. Problem/iş iyice irdelenir/incelenir/anlaşılır (analiz edilir).


ii. Çözüm yolları ortaya konularak programlamaya en uygun (en az komutla, en kısa sürede, en doğru-hassas sonuç veren) çözüm yolu seçılir/belirlenir.
iii. Programın algoritması hazırlanır veya akış diyagramı çizilir.
iv. Algoritma veya akış diyagramı, programcının bildiği veya tercih ettiği bir programlama diliyle kodlanır.
v. Program, kodlandığı editörde çalıştırılarak hataları düzeltilir.
vi. Bilinen giriş-çıkış değerleriyle programın doğru çalışıp çalışmadığı test edilir ( doğrulama yapılır).

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Giriş

Algoritmalar genel olarak üç şekilde ifade edilebilirler (gösterilebilirler/sunulabilirler):

❑ Algoritmanın metin olarak yazılması: Problemin çözüm adımları (program), düz metin olarak açık cümlelerle ifade
edilebilir.

❑ Algoritmanın sözde kodlarla (pseudo-code) yazılması: Problemin çözüm adımları (program), komut benzeri anlaşılır
metinlerle veya kısaltmalarla ifade edilebilir.

❑ Algoritmanın akış diyagramının çizilmesi: Problemin çözüm adımları (program), geometrik şekillerle gösterilebilir.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Giriş

Örnek

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Oparetörler

İşlemleri belirten simgelere/sembollere, bilgisayar


terminolojisinde ‘’operatör" denir.

Not
Her programlama dilinde bu operatörlerin yazımında farklılıklar olabileceği gibi, daha az veya daha fazla sayıda da bulunabilmektedir

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Veri

Bilgisayarlarda işlenen tüm bilgiler "veri'" olarak adlandırılır ve iki gruba ayrılırlar (Şekil 2.2).

▪ Sayısal veriler: Sayısal ağırlığı (değeri) olan ve üzerinde matematiksel işlemler yapılabilen verilerdir. Tamsayılar, ondalıklı
sayılar vb. bu grupta yer alırlar. Sayısal veriler, bilgisayara herhangi bir tabanda veya üstel biçimde aktarılabilirler
(girilebilirler).

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Alfasayısal veriler: Herhangi bir sayısal ağırlığı (değeri) olmayan verilerdir. Bu grupta karakterler (harfler, simgeler,
rakamlar) ve karakter dizileri (kelimeler, cümleler) yer alır. Alfasayısal veriler, programlarda veya algoritma/akış
diyagramlarında tek/çift tırnak içinde verilirler.

Not
✓ Programlardaki sayısal verilerde herhangi bir taban belirtme simgesi yoksa 10 tabanında (decimal) kabul edilirler.
✓ Üstel belirtme biçimindeki "sayıeüs " veya ‘’sayıEüs" anlamı "sayı.10üs‘’ tür.
✓ Programlarda/algoritmalarda sayısal veriler doğrudan, alfasayısal veriler ise tek/çift tırnak içinde aktarılırlar/gösterilirler.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Tanımlayıcı

Programı yazan kişi tarafından düşünülüp oluşturulan ve programdaki değişkenleri, sabitleri, paragrafları, kayıt alanlarını,
özel veri/bilgi tiplerini, fonksiyonları, alt programları vb. adlandırmak için kulanılan karakterlere/kelimelere/ifadelere
‘’tanımlayıcı" denir.

Tanımlayıcılar oluşturulurken, aşağıdaki "isimlendirme kuralları"na uyulmalıdır.

İsimlendirme Kuralları
✓ İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılabilir.
✓ 0-9 arası rakamlar kullanılabilir.
✓ Simgelerden sadece alt çizgi( _ ) kullanılabilir.
✓ Tanımlayıcılar, harf veya alt çizgi ile başlayabilir; ancak rakamla başlayamaz veya sadece rakamlardan oluşmaz (sayı olmaz).
✓ Tanımlayıcı, ilgili programlama dilinin komutu veya saklı/anahtar kelimesi olamaz.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

En çok kullanılan standartlar/notasyonlar "Pascal case" ve "Camel case" olmasına karşın bazıları genel şekilleriyle aşağıda
özetlenmektedir:

▪ Pascal case/casing/ Notasyonu: Kelimelerin ilk harfleri büyük, diğerleri küçük yazılır. Örneğin AdSoyad, EvTel,
CepTelNo vb.
▪ Camel case/casing/ Notasyonu : Birinci kelimenin ilk harfi hariç diğer kelimelerin ilk harfleri büyük, diğerleri küçük
yazılır. Örneğin adSoyad, evTel, cepTelNo vb.
▪ Upper (upperscore) case/ Notasyonu : Kelimenin tüm harfleri büyük yazılır. Örneğin ADSOYAD, EVTEL, CEPTELNO
vb.
▪ Underscore case/ Notasyonu : Kelimelerin arasına alt çizgi yazılır. Örneğin Ad_Soyad, Ev_Tel, Cep_Tel_No vb.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Değişken

Program içinde farklı değerler alabilen/aktarılabilen bellek/veri/bilgi alanlarını gösteren tanımlayıcılar, ‘’değişken’’ olarak
adlandırılırlar. ‘’İsimlendirme kurullarına’’ uygun olarak oluşturulan değişken isimlerinin; yerini tuttukları/aldıkları verilere
çağrışım yapacak şekilde olması, programın anlaşılırlığı açısından önemlidir.

Örnek
Yandaki algoritma, klavyeden (dışarıdan) girilen/okunan/alman iki sayının
toplamını yapıp sonucu ekrana yazdırır. Algoritmada 'A', 'B' ve ‘C' değişkendir.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Program her çalıştırıldığında 'A' ve 'B' değişkenlerine farklı değerler girilir ve sonucu temsil eden ‘C' de farklı değerler
oluşur (Tablo 2.3).

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Burada değişken olarak No, Adsoy, Vize, Final ve ort vardır. Programın çalıştırılmasıyla oluşabılecek bazı sonuçlar Tablo 2.4
'te verilmektedir.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Yapısal dillerdeki programlarda, kullanılacak olan değişkenler ve bunlara aktarılacak olan veri tipleri önceden (program
belirli bloklarında, kullandıkların yerden önce, kullandıkları yerde vb.) bildirilmektedir.

Değişken bildirimi yapıldığında; veri türüne göre bellekte yer açılmakta/ayrılmakta ve program içinde bunlara değerler
aktarılarak kullanılabilmektedirler. Bu bildirimler iki şekilde gerçekleştirilebilmektedir:

❖ Değişken bildirimi
❖ İşaretçi(pointer) bildirimi.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

İşaretçiler, bellek adreslerini gösteren/saklayan veya bellek adreslerini göstererek değeri kullanan/işleyen değişkenlerdir.

Programlama dillerindeki operatörler ile işaretçinin bellek adresini mi yoksa bellekteki değeri mi gösterdiği
belirtilmektedir.

Örneğin Şekil 2.3 'teki gibi "m=3" şeklinde programda değişken bildirimi yapılırsa, "m" değişkeni hafızadaki "3’’ değerini
gösterecektir. Ancak işaretçi bildirimi yapılırsa "3" değerinin kayıtlı olduğu bellek/hafıza adresi olan ‘’0x0000FFFF"i (16
tabanında) gösterecektir.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Sabit

Uygulama alanlarına ait birçok sabitler bulunmaktadır. Örneğin geometride π sayısı, matematikte doğal logaritma tabanı
olan e sayısı bunlara ilişkin bazı örneklerdir.

Programlardaki değeri değişmeyen veriler (veri alanlan) "sabit" olarak adlandırılmakta ve değişkenlerde olduğu gibi
"isimlendirme kuralları’’ na uygun olarak oluşturulmaktadırlar.

Örnek

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Atama/aktarma

Herhangi bir veri alanına bilgi yazma/kaydetme;


herhangi bir işlemin veya ifadenin sonucunu başka vir
değişkende gösterme vb. Görevlerde ‘’atama’’ veya
‘’aktarma’’ operatörü kullanılır.

tanımlayıcı = ifade

Satırında ‘tanımlayıcı’ ile gösterilen kısım, herhangi bir


değişkenin, sabitin vb. İsmidir. ‘ifade’ ile belirtilen
kısımda ise; matematiksel, mantıksal veya alfasayısal
ifade olabilir. Aradaki ' = ' sembolü, "atama operatörü"
veya "aktarma operatörü" olarak adlandırılır ve
sağdaki ifadenin/işlemin sonucunu, soldakine aktarır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

TPL = TPL + l
TPL = TPL+l TPL - TPL = 1 0=1

şeklinde yanlış sonuç çıkmaktadır.

Bilgisayar mantığında/dilinde durum böyle değildir. Önce sağ taraftaki


ifadede değişkenin eski/mevcut değeriyle işlem gerçekleştirilmekte (1
arttırılmakta, 1 ile toplanmakta); sonra bulunan sonuç, sol tarafa yeni değer
olarak aktarılmaktadır (eskisinin üzerine yazılmaktadır).

Not
Atama operatörü, eşitlik operatörü ile karıştırılmamalıdır . "= " atama operatörü, ‘’ " anlamındadır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Örnek

Not
Atama öperatörünün sol tarafında kesinlikle işlem yer almamalıdır! Sol tarafta her zaman sonucun aktarıldığı tanımlayıcı olmalıdır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Sayaç

Programlarda; bazı işlemlerin belirli sayıda yapılması


veya işlenen/üretilen değerlerin sayılması gerekebilir.
Örneğin klavyeden girilen bir cümlede kaç tane sesli
harf olduğunu bulan programda, cümlenin her harfi
sırasıyla çağrılır ve sesli harfler kümesine ait olup
olmadığı araştırılır. Eğer sıradaki çağırılan harf bu
kümeye ait ise, bunları sayacak olan değişkenin değeri
bir arttırılır. s =s + 1 şeklindeki işlemde sağdaki ifadede
değişkenin eski (mevcut/önceki) değerine ‘1'
eklenmekte; bulunan sonuç yine kendisine, yeni değer
olarak aktarılmaktadır. Bu tür sayma işlemlerine,
algoritmada "sayaç" veya "sayıcı" adı verilir. Yani
"sayaç"; işlem akışı kendisine her geldiğinde, belirtilen
adım değeri kadar artan/azalan değişkendir.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Örnek

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Döngü

Birçok programda; bazı işlemler, belirli ardışık değerlerle gerçekleştirilmekte veya belirli sayıda yapılmaktadır. Programlardaki
belirli işlem bloklarını (kod parçalarını); aynı veya farklı değerlerle, verilen sayıda gerçekleştiren çevrim yapılarına "döngü"
denir.

Örneğin 1 ile 1000 arasındaki tek sayılann toplamını hesaplayan programda T = 1+3+5+7+9+11+ ... gibi uzun uzun yazmak
yerine 1 ile 1000 arasında ikişer ikişer artan bir döngü açılır ve döngü değişkeni ardışık olarak toplanır.

Döngü oluşturma kuralları


i. Döngü değişkenine başlangıç değeri verilir
ii. Döngünün artma veya azalma miktarı belirlenir.
iii. Döngünün bitiş değeri belirlenir.
iv. Eğer döngü, karar/karşılaştırma ifadeleriyle oluşturuluyorsa; karar/karşılaştırma işleminden önce döngü değişkenine başlangıç değeri verilmiş olmalı ve
döngü içinde adım miktarı kadar arttırılmalı/azaltılmalıdır .

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Örnek

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Ardışık Toplama

Ardışık toplama işleminin çalışma prensibi, sayacınkine benzemekte olup programlarda aynı değerin üzerine yeni değerler
eklemek için kullanılır. Genel kullanım şekli aşağıdaki gibidir:

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

Not
Toplam değişkenine, başlangıç değeri olarak toplama işleminin etkisiz elemanı olan 0 (sıfır) atanır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Örnek

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Ardışık Çarpma

Ardışık çarpma işleminde; aynı değer, yeni değerlerle çarpılarak eskisinin üzerine aktarılmaktadır. Genel kullanım şekli
aşağıdaki gibidir:

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

Not
Çarpım değişkenine, baslangıç değeri olarak çarpma işleminin etkisiz elemanı olan 1 (bir) atanır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalarda Kullanılan Terimler

Örnek

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Daha önce de belirtildiği gibi, "algoritma, programın temelidir’'. Algoritması hazırIanmış veya akış diyagramı çizilmiş
programın kodunu yazmak çok kolaydır. ilgili programlama dilinin kaynaklarına bakılarak kodlamalar rahatlıkla
gerçekleştirilebilir.

Algoritma hazırlanırken aşağıdaki adımlar izlenebilir:

❖ Problem/sorun/iş tanımlanmalı, iyice analiz edilmelidir.


❖ Problem/sorun/iş büyük, karmaşık ve zorsa; daha küçük ve çözümü daha kolay parçalara ayrıştırılmalıdır.
❖ Tüm olasılıklar göz önünde bulundurularak çözüm yollan kapsamlı araştırılmalı ve uygun olan bir tanesi seçilmelidir. Bir
problemin birçok çözüm yolunun olabileceğini unutmayınız. Aynca her yazılımcının/programcının algoritma geliştirme ve
program kodlama tarzının da farklı olması gayet doğaldır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Algoritma hazırlanırken aşağıdaki adımlar izlenebilir:

❖ Algoritmada kullanılacak olan tanımlayıcılara, alt programlara, fonksiyonlara, modüllere, dahili ve harici bileşenlere vb.
karar verilmelidir.

❖ Problemin/sorunun/işin bildirimi/çözümü için gerekli verilerin/bilgilerin girişi/alınması/okunması belirlenmelidir. Yani


algoritmanın kesinlikle bir girdisinin olması gerekmektedir.

❖ Problemin/sorunun/işin çözümü için belirlenen/seçilen yol açık, kesin ve net bir şekilde sunulmalıdır.

❖ Algoritmada adımlan (çözüm aşamaları); şansa bağlı faktörler içermemelidir, tüm ihtimaller göz önünde bulundurulmalıdır.
Örneğın bölme ışlemı olan bir programda "paydadaki değer sıfır çıkmayabilir", "kullanıcı paydaya sıfır atamayabilir/
girmeyebilir" gibi iyi niyetlerde (temennilerde) bulunulmalıdır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

❖ Algoritmadaki adımlar, kesin ifadelerle belirtilmelidir.


Örneğin "Değişkenin değerini biraz arttınn" şeklinde
kesin olmayan ifadeler içermemelidir. Buradaki
arttırma miktarı bir, iki vb. gibi kesin olmalıdır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

❖ Algoritmadaki adımlar, programın sonlu sayıda işlem yapmasını


sağlamalıdır. Yani her program; sonucu/çözümü bulma, belirli bir koşulu
sağlama, belirtilen değere ulaşma vb. Durumlarda sonlanmalıdır. Bir
programın, sonsuz tane işlem yapamayacağını göz ardı etmeyiniz.

❖ Algoritmadaki adımlar sıralı ve mantıklı olmalıdır. Örneğin


önceki satırlarda hesaplanmamış/tanımlanmamış bir değeri
mevcut satırda kullanma; önceki satırlarda veya önceden
yazılmamış bir alt programı çağırma gibi işlemler
yapılmamalıdır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

❖ Algoritmalarda tekrar eden işlemlerden programın hızı ve


etkinliği açısından kaçınılmalıdır. Örneğin önceki adımlarda
hesaplanmış olan bir ifadeyi mevcut adımda tekrar
hesaplamak, programın hızını yavaşlatacaktır.

❖ Algoritmalarda farklı değerlerle gerçekleştirilen aynı


işlemleri, tekrar tekrar yazmak yerine bunları alt
program/fonksiyon/ modül olarak oluşturmak daha
uygundur.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

❖ Algoritmalarda gereksiz işlemlerden kaçınılmalıdır.


Örneğin bir tamsayının kendisi hariç tam bölenlerini
bulabilmek için 1 'den o tamsayıya kadar döngü
açılır ve bunun sıradaki döngü değişkenine tam
bölünüp bölünmediği kontrol edilir.

Ancak hiçbir tamsayı , kendi yarısından daha büyük


tamsayıya tam bölünemez. Bu durumda örneğin 1000
sayısının tam bölenlerini bulmak için 1-1000 arası
döngü (1000 tane işlem) yerine 1-500 arası döngü (500
tane işlem) açmak çok daha doğrudur.

Ayrıca tüm tamsayılar, bire tam bölünürler. Bu


durumda "1" başlangıçta işlem yapılmadan yazdırılıp
döngü 2'den açılabilir. Böylece gereksiz işlemler
yapılmayıp programın çalışma hızı arttırılır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

❖ Algoritmalarda etkisiz işlemlerden kaçınılmalıdır. Örneğin bir değeri 0 ile toplama veya bir değeri 1 ile çarpma, sonuçta
herhangi bir değişikliğe yol açmamasına rağmen programda bir işlem zamanı alacaktır.

❖ Algoritmalarda bellek verimliliği açısından fazladan veya gereksiz tanımlamaların yapılmaması daha uygundur. Özellikle
sonuçtaki asıl çıktıda yer almayacak veya daha sonra kullanılmak üzere saklanmayacak verilerin, ayrı tanımlayıcılarda
tutulmaması daha uygun olacaktır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

❖ Algoritma adımlarındaki işlemlerle bir veya birden fazla çıktı (sonuç, ürün, süreç tamamlama vb.) elde edilmelidir. Yani
her algoritmanın çıktısı olmalıdır. Buradaki çıktı veya çıktılar; ekranda görüntülenen veya yazıcıdan yazdırılan veriler
(sonuçlar, grafikler, resimler vb.), kayıtlar (verileri dosya oluşturarak veya başka çevre birimlere kaydetme, kes-kopyala-
yapıştırma vb. işlemler), ses çalma, video oynatma, donanımsal veri alışverişi yapma (örneğin USB porta bağlı bir karttan
veri alma-gönderme) gibi somut ve anlamlı/anlaşılır bilgiler veya süreçler olmalıdır.

Bilgi
Çözüme/sonuca/bilgiye ulaşmak için izlenecek yolu dört başlıkta özetler:
➢ Tahmin ve önyargılardan kaçınarak, doğruluğu kanıtlanmadıkça, hiçbir şeyi (çözüm, bilgi, vb. ) kesin olarak doğru kabul etmeyiniz.
➢ Büyük problemleri/bilgileri (güçlükleri), mümkün olduğunca küçük parçalara bölününüz.
➢ Çözüme/bilgiye çözülmesi/anlaşılması en kolay olan parçalarla başlayıp adım adım daha karmaşık ve zor olanlara doğru - duzenli ve sistematik duşunerek
– ilerleyiniz.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Algoritma hazırlama adımları (özet)


➢ Yapılacak iş/çözülecek problem iyice irdelenir. Tüm olasılıklar gözden geçirilir. İş/problem büyük ise daha küçük parçalara bölünür.
➢ En az işlemle (komutla), en kısa sürede, en doğru-hassas sonuca ulaştıracak çözüm yolu/yöntem veya sadece çö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ılaca sonlu sayıdaki işlemler/kullanılacak yöntemler açık, net ve kesin şekilde verilir.
➢ İşlemler sonucunda süreç tamamlanır veya bulunan sonuçlar anlamlı/anlaşılır hale getirilir (görüntüleme, yazdırma, kaydetme vb.).

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Algoritma yazma kuralları


➢ Algoritmadaki tüm satırlar, 1 'den başlayarak tamsayılarla numaralandırılmalıdır.

➢ Bütün algoritmalarda birinci satır ‘’1.Başla" şeklindedir.

➢ Bütün algoritmalar ‘’Dur’’ ile biter.

➢ Algoritmalarda kullanılan ‘’Git’’ işlem akışı yönlendirme komutu satır numarasıyla birlikte kullanılmalıdır.

➢ Algoritmalarda kullanılabilecek alt program veya fonksiyonlar, tanımlayıcı ·isimleri ve parametreleriyle birlikte verilmelidir.

➢ Algoritmalardaki adımlar sınırlı sayıda, açık, net ve kesin olmalıdır.

➢ Algoritmalardaki ifadeler anlaşılır ve mümkün olduğunca sade (az ve öz) olmalıdır.

➢ Algoritmalardaki ifadeler; herhangi bir programlama diline, ݧletim sistemine, donanıma vb. bağımlı olmamalıdır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Algoritma/akış diyagramının avantajları


➢ Pogram yazmayı kolaylaştırır.

➢ Hatalı kodlama oranını azaltır.

➢ Program yazımı için geçen süreyi kısaltır.

➢ Program kontrolünü ve hata takibini kolaylaştırır.

➢ Sonradan yapılacak düzenlemelerde kolaylıklar sağlar.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Not
Algoritma;
➢ Bilgisayarın gerçekleştireceği tüm işlem adımlarını açık/ayrıntılı ve tam olarak, sıralı bir şekilde anlatmalıdır.

➢ Algoritmadaki adımlar, tüm olasılıklar göz önünde bulundurularak kesin/belirgin olmalıdır.

➢ Algoritmada veri girişi (alınması) olmalıdır.

➢ Algoritmadaki işlemler sınırlı/sonlu olmalıdır.

➢ Algoritmada anlaşılır/anlamlı veri çıkışı olmalıdır.

➢ Esnek yapıda, etkin ve hızlı olmalıdır.

➢ Değişikliklere/güncellemelere/geliştirmelere açık olmalıdır.

➢ Programlamaya uygun olup herhangi bir programlama diline bağımlı olmamalıdır.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Algoritmalara Hazırlama

Not
İyi bir program;
❖ İşlemleri, hatasız gerçekleştirip doğru sonuçlar üretmelidir.

❖ Hızlı olmalıdır.

❖ Türüne göre bellekte fazla yer kaplamamalıdır.

❖ Sistem kaynaklarını gereksiz kullanmamalıdır .

❖ Kodları veya modülleri sade olup değişiklikler/güncelleştirmeler/geliştirmeler kolaylıkla yapılabilmelidir.

❖ Modüler olup diğer programlarla da uyumlu bir şekilde çalışabilmelidir.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
GİRİŞ

Kaynakça

Bu ders notu aşağıdaki kitaplardan faydalanılarak hazırlanmıştır.

“Algoritma Geliştirme ve Programlamaya Giriş”, Dr. Fahri Vatansever, Seçkin


Yayıncılık, 2014.

© Copyright 2020 Sakarya Uygulamalı Bilimler Üniversitesi. Her hakkı saklıdır. Teknoloji Fakültesi - Bilgisayar Mühendisliği - Dr. Öğr. Üyesi Süleyman UZUN - suleymanuzun@subu.edu.tr
Hafta – 3
Programlama Dilleri

You might also like