Algoritma ve Akış Şemaşı

Algoritma Nedir?

Günlük hayatımızda bir işi yapmak için genellikle önceden plan yaparız. Bu plan ile yapacağımız işin adımlarını belirlemek bizim için hem işimizi kolaylaştırır hem de hedefimize ulaşmamız konusunda yol gösterir. Bilgisayar biliminde bu planların yerini algoritma alır. Yani algoritma istenen işlemleri bilgisayara yaptırmak için bilgisayara iletilen sıralı işlem basamaklarıdır. Bir problemin çözümünde hangi giriş değerlerinin nerelerden alınacağını, bunlar işlenirken ne gibi yöntemler kullanılacağını, ne tür sonuçlar üretileceğini ve bu sonuçların nasıl ve nerede gösterilip saklanacağını … vb adımların hepsini algoritma belirtir. Algoritma hazırlandıktan sonra tercih edilen programlama dili ile program yazılıp, hataları giderilip, test edilir. En yalın biçimde bir sorunu ya da bir problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir.

Hazırlanan bir algoritma genel olarak 3 farklı şekilde gösterilebilir.

  • Birincisi metin olarak yazılabilir.
  • İkincisi sözde kodlar (pseudo-codes) ile yani komut benzeri anlaşılır ifadeler ile belirtilebilir.
  • Üçüncüsü ise akış şeması (diyagram veya çizelge) denilen geometrik şekillerle gösterilebilir.

Algoritmanın Faydaları nelerdir?

  • Algoritma hazırlamak program yazmayı kolaylaştırır.
  • Hatalı kodlama oranını azaltır.
  • Algoritma hazırlandığında programın işlem akışı açık bir şekilde görülebildiği için program kontrolü kolaylaşır ve program yazımı için geçen süre daha kısa olur.
  • Algoritma hazırlamadan sonradan yapılacak düzenlemelere de kolaylık sağlar.
  • Algoritma sonrasında hazırlanacak iyi bir program, hızlı olmalı ve işlemleri hatasız gerçekleştirip doğru sonuçlar üretmelidir. Program türüne göre bellekte fazla yer kaplamamalı ve sistem kaynaklarını gereksiz kullanmamalıdır.

Programın sade olması ve sonradan gerekebilecek değişiklik ve güncellemelerin kolaylıkla uygulanabilmesi gerekmektedir.

Bir problemi bilgisayar ile çözmek için geliştireceğimiz programın yazımında izleyeceğimiz adımlar nelerdir?

Problem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayırt edilmelidir. Bu işlem sırasında Descartes tarafından “Discourse on Method” adlı kitabında anlatıldığı gibi bir problemi çözme tekniklerinde

  1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçınınız,
  2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölünüz,
  3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyiniz ve
  4. Olaya bakışınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar kusursuz ve eksiksiz olmalıdır.

Problemin ne olduğunu kavrama (farkına varmak).
Problemi analiz etmek ve çözüm için gereksinimleri belirlemek.
Problemin girdilerini, çıktılarını ve diğer kısıtlama ve gereksinimleri belirleme (yani bilgilerin giriş ve çıkış biçimlerinin nasıl olacağına kadar).
Problemin çözümünü veren algoritmayı yazmak.
Algoritmayı Uygun bir programlama dilinde kodlamak.
Programın doğru çalışıp çalışmadığını test etmek.
(Bu testi değişik girdi verileri doğrulamak ve tekrarlamak).

Bir algoritmada hazırlarken dikkat edilmesi gereken adımlar nelerdir?

Her algoritma aşağıdaki kriterleri sağlamalıdır.

  1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
  2. Çıktı: En azından bir değer üretilmeli.
  3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
  4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
  5. Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.

Algoritmalarda kullanılan terimler nelerdir?

Tanımlayıcı : TanımlayıcıProgramcının oluşturduğu ve programdaki değişkenleri, sabitleri, paragrafları, kayıt alanlarını, özel bilgi tiplerini ve alt programları adlandırmak için kullanılan kelimedir. Programın daha kolay anlaşılabilmesi için prensip olarak programda kullanılan tanımlayıcı kelimeler yerlerini tuttukları ifadeleri çağrıştıracak şekilde seçilirler. Tanımlayıcı isimlerini seçerken dikkat edilmesi gereken bazı kurallar vardır. Öncelikle tanımlayıcılar kullanılan programlama dilinin komutu veya saklı kelimelerinden olamaz. Tanımlayıcı isimleri rakamla başlayamaz veya sadece rakamdan oluşamaz. Harf veya alt çizgi ile başlayabilir. Tanımlayıcı isimlerde İngiliz alfabesindeki 26 harf ve 0-9 arası rakamlar kullanılabilir.

Değişken:  Değişkenler programın her çalıştırılmasında, farklı değerler alabilen ve aktarılabilen bilgiler veya bellek alanlarıdır. Değişkenlerin isimlendirilmesi programcının isteğine bağlıdır. Tanımlayıcılarda olduğu gibi değişken adlarının da yerini aldıkları ifadelere göre seçilmesi programın anlaşılırlığı açısından önemlidir.

Sabit: Sabit adından da anlaşılacağı üzere programlardaki değişmeyen ifadelerdir. İsimlendirme kurallarına göre oluşturulan sabitlere, sayısal veriler doğrudan, alfa-sayısal veriler ise tek veya çift tırnak içinde aktarılır.

Aktarma: Herhangi bir bilgi alanına veri yazma ve herhangi bir ifadenin sonucunu başka bir değişkende gösterme gibi görevlerde aktarma operatörü kullanılır.

değişken = ifade

Burada ifade matematiksel, mantıksal veya alfa-sayısal bir ifade olabilir.

Sayaç: Bazı programlarda belli işlemlerin belirli sayıda yapılması ve işlenen ya da üretilen değerlerin sayılması gerekebilir. Bu tür işlemlerde sayaç (sayıcı) kullanılır.

sayaç değişkeni = sayaç değişkeni + adım (artma/azalma)

Döngü: Programlarda bazı işlemlerin belirli ardışık değerlerle gerçekleştirilebilir ya da belli sayıda yapılabilir. Döngü, programdaki belli işlem bloklarını verilen sayıda gerçekleştiren işlem akış çevrimleridir. Döngü oluşturmak için öncelikle döngü değişkenine başlangıç değeri verilir. Döngünün artma veya azalma miktarı ve bitiş değeri belirlenir.

Algoritmalarda Kullanılan Operatörler nelerdir?

Bilgisayar dilinde işlemleri belirten simgelere “operatör” denir. Genel olarak kullanılan operatörler aşağıda belirtilmiştir. Farklı programlama dillerinde daha fazla veya daha az operatör kullanılabilir.

Matematiksel Operatörler
+toplama
çıkarma
.tam ve ondalıklı kısımları ayırma
/bölme
*çarpma
sqrt (x)kök alma
pow(x, y)üs alma
Karşılaştırma Operatörleri
==eşit
!=eşit değil
küçük
büyük
>=büyük eşit
<=küçük eşit
Mantıksal İşlem Operatörleri
!değil
&&ve
||veya
Alfasayısal Operatörler
+birleştirme
Genel İşlem Operatörleri
=aktarma
( )parantez
Küme İşlem Operatörleri
+birleşim
fark
*kesişim
=eşit
<> eşit değil
=> veya >=sağdaki küme, soldakinin alt kümesi
<= veya =<soldaki küme, sağdakinin alt kümesi

AKIŞ ŞEMASI (DİYAGRAMI)

Bir algoritmanın şekillerle görsel gösterimne akış şeması denir. Dikkat edilirse algoritma doğal dille yazıldığı için herkes tarafından anlaşılmayabilir ya da istenmese de başka anlamlar çıkarılabilir. Ancak akış çizgelerinde her bir şekil standart bir anlam taşıdığı için farklı yorumlanıp anlaşılamaması mümkün değildir. Bir algoritmanın ifade edilebilmesi için kullanılan şekiller ve anlamları şunlardır:

Bir algoritmanın başladığı konumu göstermektedir. Tek çıkışlı bir şekildir
Bir algoritmada aritmetik işlem yapılmasını sağlayan şekildir. Bu dikdörtgen kutu içerisine yapılmak istenen işlem yazılır. Tek girişli ve tek çıkışlı bir şekildir.       
Giriş/çıkış komutunun kullanılacağı yeri belirler ve kutu içerisine hangi değişkeni ve OKU/YAZ mamı yapılacağını belirtmeniz gerekir.   
  Bilginin Yazıcıya yazılacağı konumu gösteren şekildir.     
Bir algoritmanın birden fazla alana yayılması durumunda bağlantı noktalarını gösteren şekildir. Tek girişli veya tek çıkışlı olarak kullanılırlar 
Bir işlemin belli bir sayıda veya belli bir koşul doğru olduğu sürece tekrar edilmesini sağlayan döngü komutunu gösteren şekildir. Bu döngüde altıgen içerisine ya koşul yada döngünün başlangıç, adım ve sonlanma değerlerini belirtebilirsiniz. DÖNGÜ olarak belirlenen blokta da tekrar edilmek istenen komutlar yer almaktadır.
Bir algoritmada bir kararın verilmesini ve bu karara göre iki veya üç seçenekten birinin uygulanmasını sağlayan şekildir. burada eşkenar dörtgen içerisine kontrol edilecek mantıksal koşul yazılır. Program akışı sırasında koşulun doğru olması durumunda “Evet” yazılan kısma Yanlış olması durumunda “Hayır” yazılan kısma sapılır. Tek girişli ve iki/üç çıkışlı bir şekildir.
Bir algoritmanın bittiği konumu göstermektedir. Tek girişli bir şekildir.
Bir algoritmada alt program ve fonksiyonları göstermek için kullanılır.
Akış yönü gösterimi için bu şekil kullanılır

Algoritmanın Yapısı nasıldır?

Bir algoritma genel yapısı aşağıda gösterilmiştir. Burada

Adım0, Adım1 , Adım2, Adım3  … AdımN

A0, A1, A2, A3, …. AN

biçiminde indislenmektedir. Aşağıda N adımlık bir algoritma yapısı gösterilmiştir. Bu yapıdan da anlaşılacağı üzere bir algoritmanın ilk adımı A0. adımı olup her zaman “BASLA” ve son (N’inci) adım her zaman “DUR” ile bitmek zorundadır. Ara adımlar ise

A2, A3, A4, A5, …

biçiminde devam eder. Ara adımlar başlangıç değerleri ile başlar, aritmatik ve/veya mantıksal işlemleri, döngüleri, şartları ve diğer ifadeleri ile devam eder ve sondan bir önceki işlemde ise istenen değerler (sonuçlar) yazdırılır.