Algoritmalar ve Akış Diyagramları
Algoritma Kavramı
Algoritma kavramı, bilgisayarların bir problemi çözebilmesi için gerekli tüm adımları açıklayan bir tarif olarak düşünülebilir. Daha açık ifade edilmesi gerekirse, algoritmalar bilgisayara nelerin yapılması gerektiğini söyleyen talimatlar dizisidir. Bir yemek tarifinde, yemeğin nasıl yapılacağının adım adım açıklanması gibi, bir programlama algoritması da bir şeyin nasıl yapılacağını açıklar. Bu açıklamalar, bilgisayarların anladığı dile dönüştürüldüğünde, bilgisayarlar bunu her defasında açıklamalara uygun olarak çalıştırır. Günümüzde, algoritmaları hemen her alanda görmemiz mümkündür: Bilgisayarlarda, cep telefonlarında, uçaklarda, otomobillerde, ev aletlerinin birçoğunda, asansörlerde, … Teknolojisinin arkasında önemli algoritmalar yatan arama motorlarını kullanarak istediğimiz bilgilere kolayca ulaşabiliriz. Şifreleme algoritmaları sayesinde internet üzerinden güvenli alışveriş yapmak mümkün olmakta. Sıkıştırma algoritmaları sayesinde verileri internet üzerinden daha hızlı ve daha az maliyetle aktarabilmekteyiz. Hata düzeltme algoritmaları da hayatımızı önemli ölçüde kolaylaştırmakta. Bilgisayar bilimciler birbirlerinin çalışmalarını temel alarak, yeni problemlere çözüm algoritmaları geliştiriyor veya önceki algoritmayı, problemi daha verimli bir şekilde çözecek şekilde geliştiriyor.
Algoritma Tanımları
- Algoritma, belirli bir problemi çözmek için gerekli özgün adımlar serisidir (Dr. James F. Wirth).
- Algoritma, bir problemi çözmek için gerekli yöntemi tanımlar (Goldschlager/Lister).
- Matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumda sonlanan, sonlu elemanlar kümesidir.
- Algoritma, belirli bir veri kümesi üzerinde kullanılacak olan aritmetiksel işlemlerin sırası ve türünü belirleyen kurallar kümesidir.
- Algoritma bilgisayar neleri yapması gerektiğini söyleyen talimatlar dizisidir.
- Algoritmalar, bir problemi sonlu zamanda çözebilmek için geliştirilmiş açık, yürütülebilir, sıralı, basit ve gerektikçe tekrarlanan adımlardan oluşan yöntemlerdir.
- Belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan yol
Algoritmaların Genel Özellikleri
Kesin olmalıdır: Talimatlar bir bilgisayar tarafından yerine getirilebilecek kadar kesin ve belirsizlikten uzak olmalıdır. Algoritmanın her adımı anlaşılır şekilde ifade edilmiş olmalıdır.
Etkin olmalıdır: Gereksiz tekrarlardan uzak olmalıdır. Birçok farklı problemin çözümünde kullanılabilecek genel özelliklere sahip olmalıdır. Örneğin, öğrencilerine yüzlük sistemde not veren bir üniversitenin, öğrenci işleri programının algoritması tasarlanırken yüzlük sistemin yanında dörtlük, beşlik vb. diğer sistemlerde de kullanılacak şekilde bir algoritma tasarımı yapılmalıdır.
Sonluluk: Algoritma belirli sayıda adımdan oluşmalı, sonsuz döngüye (loop) girmemelidir.
Giriş bilgisine karşılık bir çıkış bilgisi sağlamalıdır: Algoritma, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumda sonlanan ve bu noktada bir giriş verisine karşılık bir çıkış verisi üreten özelliğe sahiptir.
Başarım ve performans: Algoritmanın bilgisayar belleğinde depolaması gereken bilgi, bilgisayarın belleğinden fazla olmamalıdır. Gereksiz tekrarlar içermemelidir. Algoritmanın çalışma zamanı makul sürelerden fazla olmamalıdır.
Algoritma Dokümanlarında Olması Gereken Özellikler
Algoritmanın adı: Algoritmaya anlamlı bir isim verilmelidir.
Yaptığı iş: Algoritmada ne iş yapıldığı, kullanılan sabitler, değişkenler, sınıflar, nesneler hakkında yeterli bilgi bulunmalıdır.
İşlem adımları: Algoritmada işlem adımlarına numara verilmeli veya girintiler kullanılarak algoritmanın anlaşılabilir olması sağlanmalıdır.
Açıklama: Algoritma metinlerinde yeterince açıklayıcı bilgi bulundurulmalıdır.
Algoritmaların İfade Edilme Şekilleri
Bir programlama algoritmasının bilgisayar dili olmadığını bilmek önemlidir. Algoritmalar basit bir şekilde Satır Algoritması (doğal dil), Pseudocode code (sözde kod) veya Flow Chart (akış şemaları) ile ifade edilebilir. Algoritmalar ifade edilirken, adımları numaralandırmak genellikle iyi bir fikirdir. Ancak, bazen algoritmanın okunabilirliğini arttırmak için, bazı satırların daha içeriden bazı satırların da daha dışarıdan yazılması yaklaşımı kullanılır.
Algoritmaların Satır Algoritmaları (Doğal Dil) ile İfade Edilmesi
Algoritmaların doğal dil (günlük yazı/konulma dili) ile ifade edilme şeklidir. İfadenin doğal dil ile yapılmasından dolayı yazılması ve bu şekilde yazılan algoritmaların okunması, anlaşılması kolaydır. Satır algoritmalarda satır numaralarının belirtilmesi gereklidir.
Soru 1: Klavyeden kısa ve uzun kenar ölçüleri girilen dikdörtgenin çevresini ve alanını hesaplayan algoritmanın satır algoritmasını yazınız.
- BAŞLA
- YAZ “Uzun Kenar”
- OKU ukenar
- YAZ “Kısa Kenar”
- OKU kkenar
- Cevre=2*(ukenar+kkenar)
- Alan=ukenar*kkenar
- YAZ Cevre
- YAZ Alan
- SON
Algoritmaların Sözde Kod (Pseudocode) ile İfade Edilmesi
Sözde kod, herhangi bir katı programlama dili sözdizimi veya temel teknoloji hususları gerektirmeyen, gayri resmi bir programlama açıklaması yoludur. Bir programın taslağını oluşturmak için kullanılır. Sözde kod, bir programın akışını özetler. Sistem tasarımcılarının, programcıların bir yazılım projesinin gereksinimlerini anlamalarını ve kodu buna göre geliştirmelerini sağlamak için sözde kod yazılır. Sözde kod, program ile algoritma veya akış şeması arasında köprü görevi görür. Sözde kod gerçek bir programlama dili değildir. Bu nedenle yürütülebilir bir programda derlenmez. Sözde kodlar, Algoritmalar belirli bir programlama diline dönüştürülmeden önce, kısa terimler veya basit İngilizce sözdizimleri kullanılarak hazırlanır. Bu, üst düzey akış hatalarını belirlemek ve program geliştiricilerin veri akışlarını anlamaları için yapılır. Kavramsal hatalar sözde kodlar hazırlanırken önceden düzeltildiği için, gerçek programlama sırasında zaman kazanmanıza yardımcı olur. Sözde kodu hazırlamanın ana amacı, bir programın her satırının tam olarak ne yapması gerektiğini açıklamaktır. Sözde kod aşamasında hataları yakalamak veya yanlış program akışlarını tespit etmek, bu hataları daha sonra yakalamaktan daha az maliyetli olduğundan, programların kodlanması aşamasına geçmeden önce sözde kod hazırlamak faydalıdır. Sözde kod hatalardan arındırılıp kabul edildiğinde, bir programlama dilinin kelime ve sözdizimi kullanılarak program yazılmasına geçilir.
Yani sözde kod:
- Yürütülebilir bir programda derlenemez
- Programcıların sadece kod geliştirme sürecinin algoritma kısmına odaklanmasını sağlar.
- Her tür programcı tarafından anlaşılır.
Soru 2: Klavyeden kısa ve uzun kenar ölçüleri girilen dikdörtgenin çevresini ve alanını hesaplayan algoritmanın sözde kodunu yazınız.
- Begin
- Print “Uzun Kenar”;
- Read ukenar;
- Print “Kısa Kenar”;
- Read kkenar;
- Cevre=2*(ukenar+kkenar);
- Alan=ukenar*kkenar;
- Print Cevre;
- Print Alan;
- End
Algoritmaların Akış Şemaları (diyagramlar) ile İfade Edilmesi
Akış şemaları, algoritmaları görsel olarak temsil etmek için ideal diyagramlardır. Farklı alanlardaki bir süreci veya diyagramı analiz etmek, tasarlamak, belgelemek veya yönetmek için kullanılırlar. Diğer diyagram türlerine benzer şekilde, neler olduğunu görselleştirmeye yardımcı olurlar. Bu, bir süreci anlamaya ve içindeki kusurları ve darboğazları bulmaya yardımcı olur. Program akış şeması, bir binanın mimari planına benzer. Bir tasarımcı, bir bina inşa etmeye başlamadan önce mimari plan çizer. Aynı şekilde, bir programcı akış şemasına dayalı bir bilgisayar programı yazmadan önce bir akış şeması çizer. Akış şeması, Amerikan Ulusal Standart Enstitüsü tarafından verilen standart akış şeması sembollerini içeren tanımlanmış kurallara göre çizilir. MS Word veya hatta Visio’da akış şemalarını kolayca yapabilirsiniz. Bir akış şeması, belirli bir sorunun çözümünü elde etmek için gerçekleştirilecek işlem sırasını gösteren diyagramlara sahiptir. Programcılar ve analistler arasında iletişimi sağlar. Bir akış şeması çizildikten sonra, programı herhangi bir üst dilde yazmak nispeten daha kolay hale gelir. Başka bir deyişle, karmaşık bir programın iyi belgelenmesi için akış şemaları zorunludur. Algoritmalar temsil edilirken iki farklı akış şeması çizilebilir: Yüksek Seviye Akış Şeması, Ayrıntılı Akış Şeması.
Yüksek Seviye Akış Şeması
Bu akış şeması, bir algoritmada önemli adımları göstermektedir. Ayrıca her bir adımın ara çıktılarını ve ilgili alt adımları verir. Bundan başka, sürecin temel bir resmini sunar ve süreç içinde meydana gelen değişiklikleri tanımlar.
Ayrıntılı Akış Şeması
Bu akış şeması, süreçteki tüm adımlar ve faaliyetler dahil sürecin ayrıntılı bir resmini verir. Sürecin adımlarını ayrıntılı bir şekilde incelemek ve sorunları veya verimsizlik alanlarını saptamak için çok yararlıdır.
Akış Şeması Sembolleri
Başlangıç ve Bitiş Sembolleri: Genellikle daireler, oval şekiller veya yuvarlatılmış dikdörtgenlerle gösterilir. Normalde, başlangıç sembolünün içine “BAŞLAT” sözcüğü yazılır. Son sembolün içine “SON” sözcüğü yazılır.
![]()
Oklar: Kontrol akışını gösterirler. Bir ok bir simgeden gelip başka bir simgeyle sonra erdiğinde, program kontrolünün okun işaret ettiği simgeye geçeceği anlamına gelir.

Dikdörtgenler: Bir eylemi veya işlemi temsil eder.

Dış Fonksiyon: Genellikle çift dikey dikdörtgenlerle gösterilirler.

Girdi: Genellikle paralelkenarlar ile gösterilir.

Koşul veya Karar: Elmas olarak tasvir edilmiştir. Bir ok girişi, iki ok çıkışı vardır. Bir ok “Evet” veya “Doğru” anlamına gelirken, diğer ok “Hayır” veya “Yanlış” anlamına gelir.

Bağlayıcılar: Bunlar bir dairenin içindeki tanımlayıcı bir etiketle gösterilir. Etiketi konektörler ok yerine çok sayfalı diyagramlarda kullanılır.

Görüntüleme: Kâğıt ve ekrana yapılacak çıktıların sembolleri

Döngü: Döngülerin gösterimi için kullanılacak sembol

Manyetik Disk: Veritabanı sembolü

Soru 3: Klavyeden kısa ve uzun kenar ölçüleri girilen dikdörtgenin çevresini ve alanını hesaplayan algoritmanın akış şemasını çiziniz.

Uygulamalar
Uygulama 1: Ekrana “Merhaba C#” yazılmasını sağlayan algoritmanın satır algoritması ile sözde kodunu yazınız ve akış şemasını çiziniz.
Satır Algoritması
- BAŞLA
- YAZ “Merhaba C#”
- SON
Sözde Kod
- Begin
- Print “Merhaba C#”;
- End
Akış Şeması
