Yazılım 101 - 1 Algoritmalar Nedir?

Eğitim - 04 Ocak, 2021 - Okuma Süresi: 9 Dk.

04 Ocak, 2021

Yazılım 101 - 1 Algoritmalar Nedir?
Kredi: Algoritma

Algoritma nedir, nasıl kullanırız, nasıl daha kolay öğreniriz. Algoritma öğrenmemize yardımcı olacak programlar nelerdir ve neden öğrenmemiz gerekir? Hepsi bu yazıda sizinle.

Yazılım 101 - 1. Yazı 

Selam arkadaşlar ben Umut, ilk defa bu seriyi okuyorsan hoop buradan seni 0. bölüme alalım. Yo hayır ben illa burayı okuyacağım diyorsan hay hay, patron sensin. 
Bu seriyi bir sözle anlatmak istesem "bana balık verme, balık tutmayı öğret" olurdu. Çünkü size programlamayı öğretemem fakat nasıl öğrenebileceğinizi çok güzel bir şekilde öğretirim. Umarım :(


Nerede kalmıştık?

Geçen yazıda öğrenmek istediğimiz programlama dilini seçtik ve nasıl öğrenebileceğimiz hakkında fikir edindik ( spoiler alert : internetten :p) eğer hala bir dil seçemediysen bir algoritma hazırla ve hemen seçmeye başla. Bir dakika! Hey sen arka sıradaki boş bakan. Evet sen! Algoritma ne bilmiyor musun? Hayır mı? Daha önce hiç yapmadın mı? Gönlünü ferah tut arka sıradaki boş bakan arkadaş, çünkü bu yazımızın konusu algoritmalar! 

İlk soru gelsin! Algoritma nedir?

Algoritma;

  1. Bir sorunu çözmek veya belirlenmiş bir amaca ulaşmak için tasarlanan yola, takip edilen işlem basamaklarına algoritma denir. [Kaynak : Robotistan]
  2. Algoritma, belli bir problemi çözmek veya belirli bir amaca ulaşmak için tasarlanan yol.[Kaynak : Vikipedi]
  3. Algoritma, matematikte ve bilgisayar biliminde belirli bir problemi çözüme ulaştırmak veya belirli bir işi sonuca ulaştırmak için atılacak adımların önceden planlanmasıdır.[Kaynak : Dudigan]

        

Evet birbirine benzeyen 3 farklı tanımı okuduk peki daha da basit hale getirirsek nedir bu algoritmalar? Algoritmalar haftalık to-do listler gibidir. To-do listler sizin o hafta yapmanız gereken şeyleri gösterir böylece ne yapmanız gerektiğini hatırlar, karıştırmaz ve planlı bir şekilde gidersiniz.  Bu bakımdan to-do listlere benzetebiliriz.
 

Algoritmaların bazı özellikleri vardır gelin bu özellikleri size direkt vermektense örnek üzerinden anlatalım.  

Şimdi, belki algoritma kavramını ilk kez duymuş olabilirsiniz fakat hepimiz günlük hayatımızda algoritma kullanıyoruz. Hayatın hem en basit zamanlarında  hem en karmaşık zamanlarında. ÖRNEK!!!! 
Karşıdan karşıya geçerken algoritma kullanıyoruz. Hatta bu algoritma bize çocukken zorla ezberletildi. Yolu kontrol et. önce sola bak, sonra sağ tarafa bak, sonra tekrar sola bak. Sizi bilmem ama ben bu yaşıma geldim hala karşıdan karşıya geçerken bunları içimden tekrarlıyorum adeta bir çocukluk travması :(. Şimdi elimizde bir örnek var gelin bunu algoritmaların sahip olması gereken özelliklerini ekleyerek tam bir algoritmaya çevirelim! 

Algoritmanın Sahip Olması Gereken Özellikleri

Cadde ve sokakta karşıdan karşıya geçme algoritması;

  • Her algoritmanın bir başı ve sonu olur! 
  1. başla 
  2. yolu kontrol et 
  3. sola bak                                                                                                                                                       BURASI ÇOK BOŞ KALDI :(
  4. sağa bak                                 
  5. sola bak 
  6. Bitir 

Gördüğünüz gibi Başla ile başladım Bitir ile bitirdim illa bu isimlerle olacak diye bir şey yok.(Start,GO,Finish,Stop) Sadece algoritmaya başladığımızı ve bitirdiğimizi göstermemiz gerekiyor. Nasıl ki sokağa tam adımızı attığımızda kontrole başlıyorsak ve karşıya geçtiğimizde kontrolü bitiriyorsak algoritmalarda da bunu yapmalıyız. Sonuçta evdeyken caddeyi kontrol etmiyoruz değil mi? 

  •    Algoritmalarda problemin çözümü adım adım olmalıdır ve ifadeler anlaşılabilir olmalıdır. 
  1. başla
  2. yolda araba var mı kontrol et 
  3. araba YOKSA yürümeye başla 
  4. soldan araba geliyor mu kontrol et 
  5. soldan gelen araba YOKSA yürümeye devam et 
  6. sağdan araba geliyor mu kontrol et                                                                                                                BURASI DA ÇOK BOŞ KALDI  :(
  7. sağdan gelen araba YOKSA yürümeye devam et 
  8. soldan araba geliyor mu diye kontrol et 
  9. soldan gelen araba YOKSA yürümeye devam et
  10. karşıya geçme işlemi bitmediyse adım 6 ya git 
  11. bitir

Çok daha uzun oldu değil mi? Çok da verimli bir algoritma da olmadı. Araba gelirse ne yapacağı belli değil bunları da eklemek lazım. Mesela "araba geliyorsa bekle" gibi adımlarda ekleyebiliriz.

Algoritmaların bir kaç kuralı daha var. Bunları artık internetteki bir çok kaynaktan bulursunuz ama en önemlilerinden bir tanesini gelecek nesillerin kitaplarında göreceğime emin olduğum  bir sözle anlatayım.

En iyi algoritma, problemi en kısa şekilde çözen algoritmadır. -Umut Erol 2018

Karşıdan karşıya geçme algoritmamıza, "yolun ortasında dur ve dans etmeye başla" diye bir adım eklersek hiç hoş olmaz değil mi? Bu yüzden gereksiz adımlardan uzak durmalıyız. Bu çok basit bir örnek oldu tabii ki ama kod yazarken "ne var ya dursun bu burada" diyeceğiniz bir satır bile size saniyeler kaybettirebilir ve saniyeler bizler için çok önemlidir. Hatta biliyor musunuz bu konu üniversitelerin Bilişim/Bilgisayar/Yazılım bölümlerinde ders konusu olarak gösteriliyor. Algorithm complexity analysis olarak geçer literatürde. Kurduğunuz algoritmanın karmaşıklığını size gösterir. Çok detaya girmeyeceğim çünkü yeni başladıysanız hiç işiniz olmaz bu konuyla. Yeni başlamadıysanız buyrun efendim mis gibi türkçe kaynak.


Devam edersek tabii ki de günlük hayatımızda karşıdan karşıya geçerken 2. algoritmadaki kadar kadar sorgulamıyoruz. İnsan beyini o kadar gelişmişki araba gelirken bir saniyeden kısa süren bir hesaplama ile "geçerim la ben buradan" diyip harekete başlıyoruz ama gariban bilgisayarlar o kadar zeki değil :( . İşte neden algoritmaya ihtiyacımız olduğunu yazının bu kısmında öğreniyoruz.

Bilgisayarlarımız hiç zeki değil o yüzden onlara her şeyi adım adım anlatmamız gerek. Normalde bu şahane beyine sahip olmasaydık karşıdan karşıya geçerken yolda oturup arabanın hızını, arabanın bize olan uzaklığını, bizim hızımızı, yolun uzunluğu gibi faktörleri hesaplayıp adeta bir fizik problemi çözmemiz gerekirdi. İşte bilgisayarların tam olarak yapması gereken bu. Bilgileri ona vereceğiz, o bilgileri nasıl kullanması gerektiğini söyleceğiz sonra işleme başlamasını da söyleyeceğiz, bitirmesini de söyleyeceğiz. Evet tüm işi biz yapıyoruz aslında ama bilgisayarların hesaplama hızı bizimkinden kat ve kat daha hızlı olduğu için hayatımızda bu kadar önemli yere sahipler. 

Düşünün bu algoritmayı en ince detayına kadar yazdınız koda döktünüz sonra bunu bir akıllı gözlüğe yüklediniz gözlükte size direkt karşıya geçip geçemeyebileceğinizi söyledi. Nasıl fikir ama 10/10 start-up fikri ilgilenenler DM! 

Ders kitabı gibi yazı oldu ya az görsel ekleyek ve algoritmanın bir başka haline geçiş yapalım.

Akış Şeması

Akış şeması için kısaca algoritmaların görselleştirilmiş hallere diyebiliriz sizin için karşıdan karşıya geçme algoritmamızın akış şeması halinin bir benzerini buldum. (Çok uğraşmadım google görsellere yazınca direkt çıktı) 

AKIŞ ŞEMASI Akış şeması belirli bir işin yapılabilmesi için, basit  işlemlerle şema halinde gösterilmesidir. Kısaca algoritmanın şemalarla  gösterilmesidir. - ppt indir

Görsel Kaynak: [23.Slayt]

Akış şeması ise bu şekilde algoritmaların görselleştirilmesidir. Şekillerin farklı olduğuna dikkat edin Başla ve Dur için farklı, sorular için farklı şekiller kullanılmış. Tabii ki rastgele değil, bunun bir kuralı var. Gözünüz korkmasın kesinlikle ezberlemek zorunda değilsiniz ama öğrenmek çok işinize yarayabilir. Ben üniversiteye başlamadan önce kodlamayı öğrenmeden algoritma ile ilgili videolar izlemiştim bulursam buraya eklerim. Algoritmayı akış şemalarından öğrenmek çok daha kolaydır bence. 

Algoritma kurarken harcadığım zaman benim mesleğimde en sevdiğim zaman. Çünkü asıl iş tamamen burada. Problemi burada çözüyorum, planı burada kuruyorum, adımlarımı burada hazırlıyorum gerisi sadece ihtiyacım olan kod satırlarını yazmak oluyor.  Problem çözmeyi seviyorsanız size de eğlenceli geleceğine eminim. 


Sonuç

Evet bitirişi yapalım. Kodunuzu yazmaya başlamadan önce bir algoritmasını çıkartın ister akış şeması ister yazı olarak önceden görmek işinize çok yarar. Özellikle yeni başladıysanız bunu alışkanlık haline getirin.

Kod yazarken yanınızda kağıt kalem bulundurun çizin hemen, çok işinize yarar.  Alıştırma yapmak isteyende makarna yapma algoritması yapsın ama baya detaylı olsun. Tencereyi ocağa koymaktan tutun, tuza kadar her şey olsun. 

Heh bu arada programlamayı Flowgorithm ile başlayabilirsiniz. Hem algoritma mantığınız gelişir hem de programlama mantığınız. Ücretsiz bir yazılım, akış şeması kullanarak çalışan bir program yazıyorsunuz. Bir çok şey yapmak mümkün kesinlike göz atmanızı öneririm. Bölümde biz de flowgorithm ile başlamıştık. Sadece bir yerden sonra bırakmak gerek çok fazla zaman kaybetmeyin benim önerim en fazla 20 saat harcayın. 

 

Haftaya Menüde Ne Var inanın ben de bilmiyorum, tek bildiğim yazılım öğrenirken hayatınızı kolaylaştıracak bir yazı olacağı. Şimdiden kendinize iyi bakın sağlıklı günler diliyorum. Eleştirilerinizi ve sorularınız bekliyorum LinkedIn hesabımdan  ulaşabilirsiniz. Okuduğunuz için teşekkürler.

 

 

Haftalığın PeP'te!

İlk 15'a giren her içerik ile 200 TL kazan!

En popüler yazar sen ol!

Okunma puanını artır, kazan!

Liderlik Tablosu'na göz at!

Bu haftanın en çok okunanları.

E-bültenimize abone ol!

Haftanın en popüler içerikleri, en çok kazananlar ve staj haberleri bültenimizde.

Gizlilik Sözleşmesi'nde belirtilen hüküm ve koşulları kabul ediyorum.