Algoritmalar Ve Programlama Dersi 1. Ünite Sorularla Öğrenelim

Algoritma Kavramı ve Programlama Temelleri

1. Soru

Algoritma nedir?

 

Cevap

Algoritma, bir işin nasıl yapılacağını tarif eden adımlar kümesidir. Günlük hayatımızın büyük kısmında, farkında olmadan da olsa algoritmalar ile karşı karşıya geliriz. Bir yemeğin yapılmasındaki adımları içeren yemek tarifi, yerini bilmediğimiz bir restoranı bulmamıza yardımcı olan yol tarifi, bir elektronik cihazın kullanım kılavuzu, algoritmaların günlük hayatımızdaki kullanımına örnek olarak gösterilebilir.


2. Soru

Banka hesabımızdan nakit para temin etmemizi sağlayan ATM’den para çekme algoritmasını nasıl oluşturabiliriz?

Cevap

Günlük yaşantımızda karşılaştığımız algoritma örneklerini detaylı ve açık bir şekilde tarif etmek mümkündür. Banka hesabımızdan nakit para temin etmemizi sağlayan ATM’den para çekme algoritmasını adım adım inceleyelim:

  • Hesabın bulunduğu bankaya ait bir ATM’ye gidilir.
  • ATM önündeki bekleme kuyruğunu girilir.
  • İşlem sırası gelene kadar kuyrukta beklenir.
  • İşlem sırası geldiğinde, bankamatik kartı ATM’nin kart haznesine takılır.
  • Bankamatik kartına ait şifre girilir ve “Giriş” tuşuna basılır.
  • Para çekme menüsüne erişilir.
  • Çekilecek nakit tutarı belirlenir ve “Devam” tuşuna basılır.
  • ATM, bankamatik kartını kart haznesinden çıkartır.
  • Bankamatik kartı ATM’den geri alınır.
  • ATM, nakit parayı para haznesine doldurur.
  • Nakit para ATM’den alınır.
  • Para çekme işlemi tamamlanarak, işlem kuyruğundan çıkılır.

ATM’den para çekme algoritmasının yukarıda gösterilen adımlarında, bir kişinin para çekmek için yapması gerekenler listelenmiştir. Bu örnek doğrultusunda, bir algoritmayı oluşturan temel bileşenlerin, yapılacak işe yönelik açıklama ve işin yapılmasında izlenecek adımlar olduğu söylenebilir. Açıklama kısmında işin tanımı yapılır ve işle ilgili detaylar bildirilir. Adımlar kısmında ise işin başlangıcından sonuna kadar takip edilecek işlemler belirtilir.


3. Soru

Algoritmanın temel özellikleri nelerdir?

Cevap

Bir algoritmanın sahip olması gereken temel özellikler aşağıda listelenmiştir:

  • Girdi ve Çıktı Bilgisi: Algoritmalarda girdi ve çıktı bilgileri olmalıdır. Girdi bilgisi algoritmaya dışarıdan verilirken, çıktı bilgisi ise algoritma içerisinde üretilir. Bu bilgiler, algoritma için tanımlı veri kümesine ait olmalıdır.
  • Açıklık: Algoritmayı oluşturan adımlar doğru ve kesin bir şekilde tanımlanmalıdır.
  • Doğruluk: Farklı girdi bilgileri ile çalışabilen algoritmalar, her girdi için doğru bir çıktı üretmelidir.
  • Sonluluk: Algoritmaların daima bir sonu olmalıdır. Girilen veri boyutundan bağımsız bir şekilde, algoritma adımları farklı bir aşamaya geçebilmeli veya sonlanmalıdır. Algoritma adımları gerçekleştirilirken, algoritma sonsuz döngüye girmemelidir.
  • Verimlilik: Algoritmayı oluşturan adımlar, yapılan iş için kabul edilebilir bir süre içerisinde tamamlanmalıdır.
  • Genellik: Bir algoritma, aynı türdeki problemlerin hepsine uygulanabilir olmalıdır.

4. Soru

Algoritmaların tanımlanmasında ve gösteriminde kullanılan başlıca yöntemler nelerdir?

Cevap

Algoritmaların tanımlanmasında ve gösteriminde kullanılan farklı yöntemler mevcuttur. Bu yöntemlerden başlıcaları konuşma dili ile gösterim, akış şeması ile gösterim ve sözde kod (pseudocode) ile gösterimdir.


5. Soru

Konuşma dili ile algoritmalar nasıl gösterilir?

Cevap

Bir algoritmanın açıklaması ve algoritmada yer alan adımlar, konuşma dili kuralları çerçevesinde ifade edilebilir. Bu gösterim yönteminde, algoritma açık ve kesin bir dille tanımlanır. Algoritmada yer alan adımlar liste halinde yazılır.

page4image5352

6. Soru

Akış şeması ile algoritma gösterme nasıl yapılır?

Cevap

Akış şeması, algoritmaların gösteriminde kullanılan faydalı bir yöntemdir. Bir akış şemasında algoritma adımlarını ifade eden kutucuklar, adımlar arası geçişleri gösteren oklar, karar verme mekanizmaları olarak kullanılan şekiller bulunabilir. Akış şeması, bir algoritmanın görsel halini ifade eder. Görsellik, algoritmaların daha kolay anlaşılabilmesine olanak sağlar. Programcılar ve çözümleyiciler tarafından yaygın olarak kullanılan akış şemalarını oluşturmak için birçok farklı çizim yazılımı bulunmaktadır.


7. Soru

Sözde kod ile algoritma nasıl gösterilir?

Cevap

Sözde kod (pseudocode), bir algoritma veya program oluşturulurken kullanılan, konuşma diline benzer bir yapıya sahip, programlama dillerinin detaylarından uzak bir anlatım şeklidir.

Algoritmaların sözde kod ile gösterimi, oldukça yaygın ve etkili bir yöntemdir. Sözde kodlarda bir programlama diline benzeyen ifadeler kullanılsa da bu ifadelerin bilgisayar tarafından anlaşılması mümkün değildir.

Sözde kodlar, programlama mantığı ile konuşma dili cümlelerinin harmanlanma- sından meydana gelir ve herkes tarafından rahatlıkla anlaşılabilir. Sözde kodu okuyan bir kişi, programlama dillerinin detaylarına takılmadan, algoritmanın çalışma mantığını kavrayabilir.


8. Soru

Özyinelemeli algoritma nedir?

Cevap

Kendisini doğrudan veya dolaylı olarak çağıran algoritmalara özyinelemeli algoritma adı verilir. Bu algoritmalarda, problemler daha küçük ve basit parçalara indirgenir. Küçük parçalar için oluşturulan çözümlerin birleştirilmesiyle ana problemin çözümü elde edilir.


9. Soru

Geri izlemeli algoritmalar nasıl çalışır?

Cevap

Geri izlemeli algoritmalar, genellikle optimizasyon problemlerinde kullanılan, problem çözümünde tüm olasılıkları deneyen algoritmalardır. Bu algoritmalarda çözüm kademeli şekilde oluşturulur. Algoritma çözüm aşamasında ilerlerken, olası çözüm yollarının hepsini deneyerek bir sonraki adıma geçmeye çalışır. Algoritmanın denediği çözüm yolundan sonuç alınamazsa, algoritma bir önceki adımda bulunan diğer olası çözüm yollarına geri döner.


10. Soru

Böl ve yönet algoritması nedir?

Cevap

Böl ve yönet algoritmaları, problemlerin mümkün olan en küçük alt parçalara ayrıldığı, her bir alt parçanın diğerlerinden bağımsız şekilde çözüldüğü algoritmalardır. Problemin genel çözümü elde edilirken alt parçalara ait çözümler belirli bir sırayla bir araya getirilir.


11. Soru

Böl ve yönet algoritmalarındaki genel olarak hangi aşamalardan meydana gelir?

Cevap

Böl ve yönet algoritmaları, genellikle üç ana aşamadan meydana gelmektedir:

  • Bölme (Divide): Problemin daha küçük parçalara ayrıldığı aşamadır. Problem daha alt parçalara bölünemeyecek hale gelene kadar, özyinelemeli bir yaklaşımla bölme işlemi gerçekleştirilir.
  • Yönetme (Conquer): Problemin alt parçalarının, birbirlerinden bağımsız olarak çözüldüğü aşamadır.
  • Birleştirme (Merge): Problemin alt parçalarına ait çözümlerin, özyinelemeli bir yaklaşımla birleştirildiği aşamadır.

12. Soru

Dinamik programlama nedir?

Cevap

Dinamik programlama, karmaşık problemleri küçük parçalar halinde çözen, elde edilensonuçları bilgisayar hafızasında bir veri yapısında saklayan, genel çözümü elde ederken de veri yapılarında saklanan sonuçları kullanan bir programlama yöntemidir.

Bir problemin dinamik programlama ile çözülebilmesi için problemin alt parçalara ayrılabilmesi ve genel çözümün bu alt parçalardan oluşturulabilmesi gerekmektedir. Dinamik programlama yaygın olarak optimizasyon problemlerinde kullanılır.


13. Soru

Açgözlü algoritma nedir?

Cevap

Bir problem için mümkün olan en doğru çözümü hede eyen algoritmalara açgözlü algoritmalar adı verilir. Açgözlü algoritmalarda yerel olarak optimum sonuç elde edilirken, bulunan sonuç her zaman için en iyi çözüme karşılık gelmeyebilir.

Açgözlü algoritmalar ile problem çözümündeki temel yaklaşım, problemin küçük bir alt kümesi için çözüm oluşturmak ve bu çözümü problemin geneline yaymaktır. Algoritma içerisinde yapılan bir seçim, o an için doğru olsa bile sonraki seçimlerde olumsuz etki yapabilir.


14. Soru

Kaba kuvvet algoritması nedir?

Cevap

Bir problemin çözümü aşamasında, kabul edilebilir bir çözüm elde edene kadar tüm olasılıkları deneyen algoritmalara kaba kuvvet algoritmaları denir.


15. Soru

Kaba kuvvet algoritmaların dezavantajları nelerdir?

Cevap

Kaba kuvvet algoritmaları, genellikle problemin tanımından yola çıkarak en basit çözüm yolunu uygular ve rahatlıkla kodlanır. Fakat bu algoritmalarda çok fazla işlem yapılır ve çözüm yolu optimumdan uzaktır. Problemdeki veri hacmi büyüdükçe, kaba kuvvet algoritması ile çözüm şansı da azalır.


16. Soru

Veri yapıları ne amaçla kullanılır?

Cevap

Üst düzey programlamada veri içerisinde arama yapmak, veriye hızlı bir şekilde ulaşmak, bilgisayarın işlemcisini verimli kullanmak, aynı anda birçok isteğe cevap verebilmek gibi gereksinimler söz konusudur. Bilgisayar programlarının karmaşıklığı ve programda işlenen veri büyüklüğü arttıkça, verilerin daha sistematik ve verimli yönetilmesi gerekir. 

Bilgisayar programlarında verilerin sistematik ve etkili bir şekilde organize edilmesi için veri yapıları kullanılır. Bir veri yapısı, içerdiği elemanların mantıksal düzeni ve elemanlar üzerinde yapılabilecek işlemler ile tanımlanır.

 

17. Soru

Kuyruk veri yapısıyla veriler nasıl organize edilir?

Cevap

Veri yapılarına örnek olarak, oldukça sık kullanılan bir veri yapısı çeşidi de kuyruktur. Her kuyruğun bir başı ve sonu olur. Veriler kuyruğun baş tarafından girerken, son tarafından çıkar. Bu özellikten dolayı kuyruk veri yapısını bir marketteki ödeme sırasına benzetebiliriz.


Güz Dönemi Dönem Sonu Sınavı
18 Ocak 2025 Cumartesi
v