Algoritmik Düşünebilmek

Çağatay Aküren
Yetkin Yayın
Published in
4 min readJun 20, 2021

Günümüzde sıklıkla sosyal medya algoritmalarını, nasıl çalıştıklarını ve bizi nasıl yönlendirdiklerini konuşuyoruz. Peki daha basit olarak bir algoritmanın ne olduğunu ve nasıl oluşturulabileceğini biliyor muyuz? Algoritmayı anladığımız ve algoritmik düşünebilmeyi kavradığımız bir yazı olsun :) Keyifli okumalar!

Algoritma Nedir?

Algoritma; bir problemin ya da bir sorunun çözümü için ihtiyaç duyulan tüm işlemlerin mantıksal olarak, sıralı bir şekilde ifade edilmesidir. Algoritma kavramı programlama ya da yazılım geliştirmenin yanı sıra, günlük hayattaki aktiviteler, matematik vb. derslerde karşılaşılan sorunları daha kolaylıkla çözme olanağı sağlar. Çünkü bir algoritmanın asıl amacı, problem çözmektir.

Örneğin, bir küme içerisindeki verilerin sıralanması, aynı küme içerisindeki bir veriyi arama işlemleri farklı birer algoritmadır. Tüm bu algoritmalar, kullanıcının gereksinimini sağlayacak bir çözüm üretmek için bir araya getirildiğinde ise buna program veya yazılım adı verilir.

Bir programın tasarlanması ne kadar zor ve zaman alıcı gözükse de problemlerin çözümü algoritmik olarak ifade edilebildiğinde programın kodlanması oldukça basit hale gelir. Programcı, çözüme ulaşmak için hazırda var olan algoritmalardan yararlanabileceği gibi kendi algoritmasını da oluşturabilir. Çoğunlukla bir problemin çözümü için birden fazla algoritma ortaya atılır. Uygun algoritmanın kullanımı, uygulamanın yapısı ve programcının bilgi birikimine göre değişiklik gösterebilir. Farklı programcıların aynı problem için oluşturdukları algoritmaları GitHub benzeri yazılım platformlarından rahatlıkla bulabilirsiniz.

Bir algoritma için temel olarak 3 bileşen var:

1. Değişkenler: Dışarıdan girilen ve bizim oluşturduğumuz değeri tutan elemanlar

2. Algoritma: Çözüm için gereken adımların mantıksal bir sırada yazılması

3. Akış şeması: Kısaca algoritmanın şekiller ve oklar ile gösterilmesi

Basit bir akış şeması

Algoritmik Düşünmek Nedir?

Algoritmanın basitçe, bir makineye yapmasını istediğimiz işlemlerin mantıksal bir sırada anlatılması olduğunu öğrendik. Peki algoritmik düşünmek ne demek?

Günlük hayattan basit bir örnek olarak bir kek yapmak istediğinizi ve sırayla izlemeniz gereken adımlar olduğunu düşünelim:

  • Yumurta ve şekeri bir kabın içinde çırp.
  • Sıvı yağ, süt, kabartma tozu, vanilya ve un ekle.
  • Karışımı bir kek kalıbına dök.
  • Kalıbı fırına koy.
  • Yaklaşık 30 dakika fırında beklet ve kek hazır.

Sizin için karışımınızı bir kalıba dökmek belirtilmesi gereken bir detay olmayabilir veya kekinizin ne zaman hazır olduğunu bakarak tahmin edebileceğinizi düşünebilirsiniz. Ancak, bu işlemleri bir makineye yaptırmak istediğinizde her adımı detaylı olarak anlatmanız gerekiyor. O halde, algoritmik düşünme için bir tanım yazmak istersek;

Bir işi yapmak veya bir çözüme ulaşmak için izlenmesi gereken adımları sistematik ve net bir şekilde ifade edebilme becerisidir.

Başka bir örnek olarak, iki sayının toplamını bilgisayara anlatmaya çalışalım:

  • Başla
  • Birinci sayıyı gir
  • İkinci sayıyı gir
  • İki sayıyı topla
  • Toplamı yaz
  • Bitir

Programcılar, algoritmayı kodlamaya başlamadan önce ara adım olarak sözde kod(pseudocode) yazarlar. Sözde kod, bir kodlama dili değildir fakat bütün dillere benzerlik gösterir. İki sayının toplamı algoritmasının sözde kodu:

  • Toplam T, birinci sayı X, ikinci sayı Y
  • Başla
  • X değerini oku
  • Y değerini oku
  • T = X + Y
  • T değerini yaz
  • Bitir
Algoritmik Düşünmeye Giriş Sunumu, Erhan Erkut.

İki sayının nasıl toplanabileceğini gördük. Aynı işlemi, aynı algoritma içinde birden fazla kez yapmak istersek ne olur? Bir dizi içindeki ya da 1'den n’e kadar olan sayıları nasıl toplarız?

Burada algoritmaların içindeki bir başka yapı olan döngüler görev alıyor. Algoritmalar, olabildiğince hızlı çalışmak üzere tasarlanmalıdır. Bazen bir işlemi, farklı veriler için defalarca yapmak gerekebilir. Döngüler sayesinde 10 defa tekrar edilecek işlemin komutlarını tek tek yazmak yerine bu işlemi 10 defa tekrar eden tek bir yapı oluşturmak mümkün hale geliyor. 1'den 100'e kadar olan sayıların toplamını veren algoritmaya bakalım:

1'den 100'e kadar olan sayıların toplamını veren algoritmanın akış şeması.
  1. Başla
  2. Toplam = 0 ve Sayaç = 1
  3. Sayaç’ı Toplam’a ekle (Yeni Toplam = 1)
  4. Sayaç’ı 1 arttır
  5. Sayaç ≤ 100 ise 3.adıma git (Döngü, Sayaç değeri 100'den büyük oluncaya kadar devam eder)
  6. Toplam’ı yazdır (Sayaç değeri her tekrarda Toplam’a eklenir 1+2+3+…+100)
  7. Bitir

Görülebileceği gibi her toplama işlemini tek tek ifade etmek yerine döngüye alarak algoritmayı daha basit ve hızlı hale getirdik.

Bir Algoritma Nasıl Olmalı?

Algoritma tanımını ve temel bileşenlerini öğrendiğimize göre artık algoritma oluşturmaya hazırız. İşte kendi algoritmanızı oluştururken dikkat etmeniz gerekenler:

  1. Bir algoritmanın girdileri(malzemeler) ve çıktıları(kek) olmalı.
  2. Algoritma, adım adım ilerlemeli. Değişkenlerin ne olduğunu bilmeden toplama işlemine geçemeyiz.
  3. Algoritma, basit ve nettir. Ne kadar malzeme ekleyeceğiniz ve ne kadar çırpacağınız kesin ve anlaşılır olmalı.
  4. Algoritmanın bir sonu olmalı. Kalıbı fırından ne zaman çıkartacağınızı tam olarak belirtmeniz gerekir. Aksi takdirde sonsuz bir döngü içinde kaybolabilirsiniz.
  5. Algoritmanız doğru sonucu verebilmelidir.
  6. Algoritma, genellenebiliyor olmalı. Farklı X ve Y değişkenleri girildiğinde de toplama işlemi algoritması çalışmalı.

Son Sözler

Algoritmik düşünme becerinizi geliştirebilmek adına günlük yaptığınız işleri bir bilgisayara anlatıyormuş gibi adım adım anlatmayı deneyerek pratik yapabilirsiniz. Ancak, daha zorlu problemler ile geliştirmek isterseniz buradan Yetkin Gençler’in Algoritmik Düşünmeye Giriş dersini izlemenizi tavsiye ediyorum :)

--

--