Algoritma Nedir? Girdi, Karar ve Döngülerle Problem Çözme
Algoritma, belirli bir problemi çözmek veya amaca ulaşmak için izlenen, mantıksal sıraya sahip sonlu adımlar dizisidir. İyi bir algoritmada girdi ve çıktı açıkça tanımlanır; karar ve tekrar adımları gerekiyorsa bunlar net koşullarla gösterilir.
Bu yazıda (6)
- ›Bir algoritmayı başlatan üç soru: Girdi, işlem ve çıktı
- ›Sıralı adımların içine karar ve tekrar yerleştirmek
- ›Liste içinden en büyük değeri bulma mantığı
- ›Asallık kontrolünde eşik koşullarını doğru kurmak
- ›Algoritmanın doğruluğunu test etmek: tek örnekle yetinmemek
- ›Çözümlü örnekler: yazılı bir problemi algoritmaya dönüştürme
Algoritma Nedir? Girdi, Karar ve Döngülerle Problem Çözme
Bir problemi çözmeye başlamadan önce yalnızca sonuca değil, sonuca hangi sırayla ulaşacağımıza da karar veririz. Bir sayılar listesindeki en büyük değeri bulmak, bir sayının asal olup olmadığını kontrol etmek veya hazırlanma sürecini düzenlemek bu düşünme biçimine örnektir. Bu tür düzenli ve izlenebilir çözüm yollarına algoritma denir.
Algoritma, bilgisayar programıyla aynı şey değildir. Algoritma çözümün mantığını programlama dilinden bağımsız olarak açıklar; program ise bu mantığın Python, C++ ya da başka bir dille bilgisayara aktarılmış biçimidir. Bu nedenle algoritma kurma becerisi, kod yazmaya başlamadan önce problemin doğru anlaşılmasını sağlar. MEB kaynaklarında da algoritma, bir problem veya görev için izlenecek mantıksal ve sıralı adımlar olarak ele alınır.
Bir algoritmayı başlatan üç soru: Girdi, işlem ve çıktı
Birçok problemi açıklamak için algoritma girdi, işlem ve çıktı bileşenleriyle incelenebilir. Bu bileşenler probleme göre değişebilir:
- Girdi: Algoritmanın başlangıçta aldığı veri veya veriler. Örneğin bir sayı listesi, kontrol edilecek sayısı ya da öğrencinin notudur.
- İşlem: Girdiye uygulanan karşılaştırma, toplama, bölme, sıralama veya karar adımlarıdır.
- Çıktı: İşlemler tamamlandıktan sonra elde edilen sonuçtur. Bu sonuç bir sayı, bir liste veya "asal değildir" gibi bir karar olabilir.
Bu ayrım, algoritmanın eksik kurulmasını önler. Örneğin "en büyük sayıyı bul" ifadesi tek başına yeterli değildir. Hangi sayılar arasında arama yapılacağı girdi, karşılaştırma yöntemi işlem, bulunan en büyük değer ise çıktıdır.
Bir algoritmanın adımları mantıksal sırada olmalıdır. Ayrıca hedeflenen geçerli girdiler için sonlu sayıda adımda tamamlanması, her adımın açık ve uygulanabilir olması beklenir. Bir adımın "gerekirse sayıları karşılaştır" biçiminde bırakılması belirsizlik oluşturur; hangi sayıların, hangi koşulda ve hangi sırayla karşılaştırılacağı yazılmalıdır.
Bir büyüklüğü tanımlamak da tek başına yeterli değildir. Örneğin bir algoritmada "en büyük" adlı değişken tutuluyorsa, her yeni değer bu değişkenle karşılaştırılır. Yeni değer daha büyükse değişken güncellenir; değilse mevcut değer korunur. Böylece değişkenin hangi kurala göre değiştiği anlaşılır.
Sıralı adımların içine karar ve tekrar yerleştirmek
Algoritmalar yalnızca düz bir işlem sırası değildir. Problem gerektirdiğinde iki temel yapı kullanılır:
Karar yapısı: Bir koşulun doğru veya yanlış olmasına göre farklı yol izlenir. Örneğin "Eğer ise asal değildir sonucunu ver" bir karardır. Burada eşitsizlik sağlanıyorsa algoritma bir yoldan, sağlanmıyorsa başka bir yoldan ilerler.
Tekrar yapısı: Bir veya daha fazla işlemin belirli bir koşula ya da yineleme sayısına bağlı olarak tekrar çalıştırılmasıdır. Bir listedeki tüm değerleri kontrol etmek için listedeki her eleman sırayla incelenir. Sayaç, tekrarın hangi konumda olduğunu takip etmek için kullanılabilir. Sayaç her adımda artırılır ve belirlenen sınır aşıldığında döngü sonlandırılır.
Bir döngünün güvenilir olması için üç nokta açıkça belirtilmelidir: başlangıç değeri, her turda yapılan değişiklik ve bitiş koşulu. Örneğin sayaç 'den başlar; sayaç 'dan küçük veya eşit olduğu sürece işlem yapılır, ardından sayaç artırılır. Sayaç değişmiyorsa veya bitiş koşuluna ulaşamıyorsa algoritma hedeflenen geçerli girdi için sonlanmayabilir.
Karar ile tekrar birlikte de kullanılabilir. En büyük değeri bulma işleminde her yeni eleman döngüyle incelenir; her eleman için "yeni değer mevcut en büyükten büyük mü?" kararı verilir. Bu iki yapı, birçok algoritmik problemde çözümün ana iskeletini oluşturur.
Liste içinden en büyük değeri bulma mantığı
Bir listedeki en büyük değeri bulmak için başlangıçta listenin ilk elemanı geçici olarak en büyük kabul edilir. Bu seçim önemlidir; çünkü henüz hiçbir karşılaştırma yapılmadan rastgele bir sayı seçmek yanlış sonuç verebilir.
Daha sonra listedeki sonraki elemanlar sırayla kontrol edilir. Her eleman için şu karar uygulanır: Yeni değer, mevcut en büyük değerden büyükse en büyük değişkeni güncelle; değilse değiştirme. Liste bittiğinde değişkende kalan değer, incelenen listenin en büyük elemanıdır.
Bu yöntemde algoritmanın çıktısı yalnızca son değerdir; ara aşamalardaki güncellemeler ise çözümün nasıl ilerlediğini gösterir. Örneğin listesinde başlangıçta en büyük seçilir. , 'den büyük olmadığı için değer değişmez. , 'den büyük olduğu için yeni en büyük değer olur. , 'den büyük değildir. Sonuç 'dir.
Sınır durumu da dikkate alınmalıdır: Liste boşsa ilk elemanı seçme adımı uygulanamaz. Bu nedenle algoritmanın girdisinin en az bir eleman içerdiği belirtilmeli veya boş liste için ayrıca bir çıktı tanımlanmalıdır. Bu, algoritma yazarken girdinin koşullarını belirtmenin neden gerekli olduğunu gösterir.
Asallık kontrolünde eşik koşullarını doğru kurmak
Asal sayı, ve kendisi dışında pozitif böleni bulunmayan, 'den büyük pozitif tam sayıdır. Bu tanımda iki sınır özellikle önemlidir: asal değildir; olan sayılar da bu algoritmanın asal kabul ettiği kümenin dışındadır.
Bir sayının asal olup olmadığını kontrol etmek için önce koşulu incelenir. Koşul doğruysa sonuç doğrudan "asal değildir" olur. Değilse başlanır ve 'nin 'yi bölüp bölmediği kontrol edilir. Bölünüyorsa , 1 ve kendisi dışında bir bölen bulduğu için asal değildir. Bölünmüyorsa sayaç artırılır ve kontrol, belirlenen sınır içinde sürdürülür.
Bu algoritmada karar kuralı "bölünüyor mu?" sorusudur. Döngü bitene kadar hiçbir uygun bölen bulunmazsa sonuç "asaldır" biçiminde verilir. Buradaki "uygun" ifadesi, algoritmada kontrol edilmesi tanımlanan değerleri anlatır; döngünün hangi değerde sona ereceği açıkça yazılmalıdır.
Örneğin için değerleri kontrol edilebilir. Bu değerlerin hiçbiri 7'yi bölmediği için algoritma 7'nin asal olduğunu bildirir. Buna karşılık için başarısız olur, olduğunda 9'un 3'e bölündüğü görülür ve sonuç asal değildir. Böylece algoritma hem tekrar hem de erken sonuçlandıran karar yapısını içerir.
Algoritmanın doğruluğunu test etmek: tek örnekle yetinmemek
Bir algoritmanın doğru olduğunu değerlendirmek için yalnızca beklenen sonucu veren bir örneğe bakmak yeterli değildir. Farklı türde girdiler seçilmelidir. En azından normal bir örnek, sınır değeri ve kararın iki farklı sonucunu veren örnek denenmelidir.
Asallık algoritması için normal bir örnek, sınır durum, ise bölünebilir bir örnek olabilir. üzerinde ilk koşulun çalışıp "asal değildir" sonucunu vermesi gerekir. üzerinde döngünün uygun böleni bulduğunda gereksiz kontrolleri sürdürmeden bitmesi beklenir.
En büyük değeri bulma algoritmasında da listenin ilk elemanının en büyük olması, en büyük değerin son eleman olması ve negatif değerlerin bulunması gibi durumlar kontrol edilebilir. Örneğin listesinde başlangıç değerinin ilk eleman alınması, karşılaştırmalar sonunda sonucuna ulaşılmasını sağlar. Bu örnek, "en büyük" kavramının sayısal olarak en yüksek değeri ifade ettiğini; tüm değerlerin pozitif olmasının gerekmediğini gösterir.
Test sırasında şu sorular sorulmalıdır: Her girdi için bir çıktı tanımlı mı? Her adım uygulanabilir mi? Döngü sonlanıyor mu? Karar koşulu yanlış yönde kurulmuş olabilir mi? Algoritmanın adımları bu sorulara cevap verecek açıklıkta değilse, çözüm henüz tamamlanmış sayılmaz.
Çözümlü örnekler: yazılı bir problemi algoritmaya dönüştürme
Örnek 1 — Bir listedeki en büyük değeri bulma
Verilenler: listesi.
İstenen: Listedeki en büyük değeri bulmak.
Çözüm adımları:
- Girdi listesinin ilk elemanını geçici en büyük değer seç: en büyük .
- İkinci elemanı kontrol et: yanlış, bu yüzden en büyük değişmez.
- Üçüncü elemanı kontrol et: doğru, bu yüzden en büyük yapılır.
- Dördüncü elemanı kontrol et: yanlış, değişiklik yapılmaz.
- Liste bittiği için mevcut en büyük değeri çıktı olarak ver.
Sonuç: En büyük değer 'dir.
Bu çözümde girdi liste, çıktı , tekrar yapısı listedeki elemanları sırayla inceleme, karar yapısı ise her eleman için yapılan büyüklük karşılaştırmasıdır.
Örnek 2 — 9 sayısının asal olup olmadığını kontrol etme
Verilen: .
İstenen: 9'un asal olup olmadığını belirlemek.
Çözüm adımları:
- kontrol edilir. yanlış olduğu için devam edilir.
- seçilir.
- 9'un 2'ye bölünüp bölünmediği kontrol edilir. Bölünmediği için yapılır.
- 9'un 3'e bölündüğü görülür.
- 1 ve kendisi dışında bir bölen bulunduğundan sonuç "asal değildir" olarak verilir.
Sonuç: 9 asal değildir.
Bu örnekte algoritma, tüm olası kontrolleri tamamlamadan da doğru sonuca ulaşabilir; çünkü asal olmadığını göstermek için uygun bir bölen bulmak yeterlidir. Buna karşılık asal sonucuna ulaşmak için algoritmada belirlenen kontrol aralığının tamamlanması gerekir.
En büyük değeri güncelleme kuralı: yeni değer > mevcut en büyük ise mevcut en büyük = yeni değer. Asallık kontrolündeki temel karar: n < 2 ise asal değildir; aksi durumda belirlenen k değerleri için n'nin k'ye bölünüp bölünmediği kontrol edilir.
Bir öğrencinin okul çantasını ders programına göre hazırlaması somut bir algoritma olarak kurulabilir: önce ertesi günün derslerini kontrol eder, her ders için gerekli kitabı ve defteri listeye ekler, listedeki her malzemeyi çantaya koyar ve son olarak ders programındaki tüm dersler için malzeme eklenip eklenmediğini kontrol eder. Ders programı girdi, çantadaki malzemeler çıktı, her ders için yapılan tekrar döngü, eksik malzeme varsa ekleme kararı ise koşullu adımdır.
TYT/AYT ve 9. sınıf matematik bağlamında algoritma sorularında önce girdiyi ve çıktıyı yazın. Ardından başlangıç değerini, döngünün hangi veriyi kaçıncı sırayla kontrol ettiğini ve karar koşulunun hangi eşitsizlikle kurulduğunu belirtin. Bir tabloyla ara değerleri izlemek hata riskini azaltır. Özellikle sayısının asal olmaması, boş listenin ilk elemanı bulunamayacağı için özel durum oluşturması ve döngünün bitiş koşulunun yazılması bu tür sorularda karşılaşılabilecek ayrıntılardır. Verilen çözümü en az bir normal, bir sınır ve bir karşı örnek üzerinde çalıştırarak kontrol edin.
Sık sorulan sorular
Algoritma ile program arasındaki fark nedir?
Algoritma, bir problemin çözüm adımlarını programlama dilinden bağımsız biçimde tanımlar. Program ise bu çözüm mantığının Python, C++ veya başka bir programlama diliyle bilgisayara aktarılmış hâlidir. Bu nedenle aynı algoritma farklı programlama dilleriyle uygulanabilir.
Her sıralı işlem algoritma sayılır mı?
Bir işlem listesinin algoritma olarak değerlendirilebilmesi için yalnızca sıralı olması yetmez. Hedeflenen problem veya görev belli olmalı, adımlar açık ve uygulanabilir olmalı, geçerli girdiler için sonuç üretmesi ve sonlu bir süreçte tamamlanması beklenmelidir. Belirsiz veya sonsuza kadar süren bir işlem listesi bu ölçütleri karşılamayabilir.
Sayaç neden kullanılır?
Sayaç, tekrar edilen işlemin hangi aşamada olduğunu takip eder. Örneğin 1'den 10'a kadar ilerleyen bir işlemde sayaç 1'den başlatılır, sayaç 10'dan küçük veya eşit olduğu sürece işlem yapılır, ardından sayaç 1 artırılır. Sayaç değişiminin ve bitiş koşulunun yazılmaması döngünün eksik kalmasına yol açabilir.
Asal sayı algoritmasında 1 neden asal değildir?
Asal sayı, 1 ve kendisi dışında pozitif böleni olmayan 1'den büyük pozitif tam sayıdır. 1 sayısı bu tanımdaki '1'den büyük' koşulunu karşılamadığı için algoritmada durumunda asal değildir sonucu verilir.
Bir algoritmanın doğru çalıştığı nasıl sınanır?
Algoritmayı farklı girdiler üzerinde izlemek gerekir. Normal bir örneğin yanında sınır değeri, kararın doğru ve yanlış olduğu örnekler, mümkünse negatif değer veya boş veri gibi özel durumlar denenmelidir. Her adımın uygulanabilir, çıktının tanımlı ve döngünün sonlanan yapıda olup olmadığı kontrol edilir.
- •algoritma - Örnek...1 : Örnek...2 : Örnek...3 :matbaz.com
- •Algoritma Temelli Problemlercdn.karakok.net
- •ALGORİTMA DERS NOTLARI15temmuzsehitlerfen.meb.k12.tr
- •bilimgenc.tubitak.gov.trbilimgenc.tubitak.gov.tr
- •rezanhas.meb.k12.trrezanhas.meb.k12.tr
- •eokultv.comeokultv.com