AP CSP Big Idea 3, algoritmaların nasıl çalıştığını okumayı, bir programın adım adım yürütülmesini izlemeyi ve temel programlama yapılarını yorumlamayı öğretir. Bu ünitede öğrenciden değişken değerlerini takip etmesi, atama işlemlerini doğru sırayla değerlendirmesi, koşul ve döngülerin davranışını anlaması, prosedürleri çağırması ve parametrelerin aldığı değerleri izlemesi beklenir.
Bu konular sınavda yalnızca kod yazma becerisiyle değil, verilen bir algoritmanın sonucunu ve çalışma mantığını açıklayabilme becerisiyle ölçülür. Bu nedenle AP CSP sınav hazırlığı sürecinde sözdizimini ezberlemekten çok, her satırın program durumunu nasıl değiştirdiğini görmek önemlidir.
Big Idea 3 kapsamında hangi konular yer alır?
College Board’ın AP Computer Science Principles çerçevesinde Big Idea 3, “Algorithms and Programming” başlığı altında algoritmaların geliştirilmesini ve programların temel yapı taşlarını ele alır. Bu kapsam; değişkenler ve atamalardan koşullu yapılara, döngülerden prosedürlere, soyutlamadan program geliştirme sürecine kadar uzanır.
Öğrencinin özellikle şu soruya cevap verebilmesi gerekir: “Bu algoritma hangi sırayla çalışıyor ve her adımın sonunda programın durumu nasıl değişiyor?” Bu soru, Big Idea 3 içindeki birçok konuyu aynı anda anlamanın temelidir.
| Konu | Öğrencinin anlaması gereken temel nokta | Yaygın hata türü |
|---|---|---|
| Değişkenler ve atama | Bir değişkenin tuttuğu değer, atama yapıldığında değişir; önceki değer otomatik olarak korunmaz. | Atama sırasını ters okumak veya eski değeri kullanmaya devam etmek |
| Koşullar | IF ve ELSE blokları, koşulun doğru ya da yanlış olmasına göre farklı yollar izler. | Karşılaştırma sonucunu yanlış yorumlamak |
| Mantıksal operatörler | AND, OR ve NOT ifadeleri birden fazla koşulun birlikte değerlendirilmesini sağlar. | AND ile OR arasındaki farkı karıştırmak |
| Döngüler | REPEAT, FOR EACH ve REPEAT UNTIL yapıları farklı tekrar mantıklarına sahiptir. | Döngünün kaç kez çalışacağını veya ne zaman biteceğini yanlış hesaplamak |
| Prosedürler ve parametreler | Prosedürler belirli işlemleri gruplar; parametreler çağrı sırasında farklı değerler alabilir. | Parametre ile prosedür içindeki değişkeni aynı şey sanmak |
| Algoritma geliştirme ve soyutlama | Karmaşık bir problemi daha küçük adımlara ayırmak ve gereksiz ayrıntıları gizlemek çözümü kolaylaştırır. | Problemi tek ve belirsiz bir adımda çözmeye çalışmak |
Değişkenler ve atama işlemleri
Değişken, programın çalışması sırasında bir değeri saklayan isimlendirilmiş alandır. Ancak bir değişkenin değeri sabit değildir. Yeni bir atama yapıldığında değişkenin tuttuğu değer güncellenir.
x <- 4
y <- x + 3
x <- 10
DISPLAY(y)
Bu örnekte x önce 4 değerini alır. Ardından y hesaplanırken x değerinin o andaki hâli kullanılır ve y değeri 7 olur. Daha sonra x değeri 10 yapılır; fakat bu işlem y değerini geriye dönük olarak değiştirmez. Ekrana yazdırılan sonuç 7 olur.
Buradaki temel ayrım şudur: Sağ taraftaki ifade okunur, hesaplanır ve çıkan sonuç sol taraftaki değişkene atanır. Bir öğrencinin “x <- x + 1” ifadesini matematiksel bir eşitlik gibi değerlendirmesi hatalıdır. Bu ifade, mevcut x değerinin 1 artırılıp tekrar x içine yazılması anlamına gelir.
IF ve ELSE ile karar verme
Koşullu ifadeler, algoritmanın her durumda aynı yolu izlememesini sağlar. Bir koşul doğruysa IF bloğu, yanlışsa ELSE bloğu çalışır. Sınav sorularında çoğu hata, koşulun kendisini okumaktan çok karşılaştırmanın sonucunu yanlış belirlemekten kaynaklanır.
score <- 72
IF(score >= 60)
{
DISPLAY("Gecti")
}
ELSE
{
DISPLAY("Tekrar calis")
}
Burada score >= 60 ifadesi doğrudur ve program Gecti sonucunu üretir. >= operatöründeki eşitlik kısmı önemlidir: puan tam olarak 60 olduğunda da koşul doğru kabul edilir. Bu nedenle > ile >= arasındaki fark, sınır değerli sorularda sonucu değiştirebilir.
Mantıksal operatörleri ayrı ayrı değerlendirme
Bir koşul içinde birden fazla ifade bulunduğunda önce her karşılaştırmanın doğru veya yanlış olduğunu belirlemek, sonra mantıksal operatörün sonucunu bulmak daha güvenlidir.
- AND: Birleşik ifadenin doğru olması için iki koşulun da doğru olması gerekir.
- OR: Koşullardan en az birinin doğru olması yeterlidir.
- NOT: Bir koşulun doğruluk durumunu tersine çevirir.
age <- 16
hasPermission <- true
IF(age >= 13 AND hasPermission)
{
DISPLAY("Katılabilir")
}
ELSE
{
DISPLAY("Katılamaz")
}
İlk koşul olan age >= 13 doğrudur. İkinci koşul olan hasPermission da doğrudur. İki koşul AND ile bağlandığı için sonuç doğru olur ve ekrana Katılabilir yazılır. Eğer iki koşuldan biri yanlış olsaydı AND ifadesinin tamamı yanlış kabul edilirdi.
Pratik bir yöntem olarak uzun koşulları tek bakışta yorumlamaya çalışmak yerine küçük parçalara ayırın. Önce age >= 13 ifadesini, sonra hasPermission değerini, en sonunda AND sonucunu değerlendirin.
REPEAT, FOR EACH ve REPEAT UNTIL farkı
Big Idea 3 içinde döngüler, aynı işlemin belirli bir kurala göre tekrarlanmasını sağlar. Ancak her döngü aynı şekilde okunmaz.
- REPEAT n TIMES: İçerideki blok belirli bir tekrar sayısı kadar çalışır.
- FOR EACH: Bir listenin veya koleksiyonun her elemanı için aynı işlemi uygular.
- REPEAT UNTIL: Belirtilen koşul doğru hâle gelene kadar tekrar eder.
total <- 0
REPEAT 3 TIMES
{
total <- total + 2
}
DISPLAY(total)
Bu kodda total başlangıçta 0’dır. Döngü üç kez çalışır ve her çalışmada 2 eklenir. Ara değerler sırasıyla 2, 4 ve 6 olur. Beklenen çıktı 6 değeridir.
REPEAT UNTIL kullanılırken özellikle döngünün bitiş koşuluna dikkat edilmelidir. Koşulun ne zaman kontrol edildiği ve değişkenin bu koşulu doğru hâle getirip getirmediği izlenmelidir. Döngü içinde koşulu etkileyen hiçbir değer değişmiyorsa algoritmanın sonlanıp sonlanmayacağı ayrıca sorgulanmalıdır.
FOR EACH yapısında ise tekrar sayısı çoğunlukla listenin elemanlarıyla ilişkilidir. Listenin ilk elemanından son elemanına doğru ilerlenir ve her adımda döngü değişkeni sıradaki değeri temsil eder. Bu yapı, bir listenin tüm elemanlarını toplam, sayma veya koşula göre inceleme gibi işlemlerde kullanılır.
Prosedürler, çağrılar ve parametre-değer ilişkisi
Prosedür, belirli bir görevi gerçekleştiren adlandırılmış kod bloğudur. Aynı işlemi programın farklı yerlerinde tekrar yazmak yerine prosedür tanımlanır ve gerektiğinde çağrılır. Parametreler ise prosedürün dışarıdan değer almasını sağlar.
PROCEDURE showDouble(number)
{
result <- number * 2
DISPLAY(result)
}
showDouble(5)
showDouble(8)
İlk çağrıda number parametresi 5 değerini alır ve ekrana 10 yazılır. İkinci çağrıda aynı prosedür bu kez 8 değeriyle çalışır ve 16 yazdırır. Prosedürün kodu değişmez; çağrı sırasında verilen değer değişir.
Burada karıştırılmaması gereken iki kavram vardır: Prosedür tanımındaki isim, parametredir; çağrı sırasında parantez içinde verilen 5 ve 8 ise gerçek değerlerdir. Birden fazla çağrıda farklı sonuçlar alınmasının nedeni, prosedürün farklı parametre değerleriyle çalıştırılmasıdır.
Algoritma geliştirme ve soyutlama
Big Idea 3 yalnızca hazır bir kod parçasının çıktısını bulmayı değil, problemi algoritmik olarak parçalara ayırmayı da kapsar. Bir problemi çözmeden önce girdinin ne olduğunu, hangi işlemlerin yapılacağını ve çıktının nasıl üretileceğini belirlemek gerekir.
Örneğin bir listedeki pozitif sayıların toplamını bulma problemi şu alt adımlara ayrılabilir:
- Toplamı tutacak değişkene başlangıç değeri verilir.
- Listedeki her eleman sırayla incelenir.
- Elemanın pozitif olup olmadığı kontrol edilir.
- Koşul doğruysa eleman toplama eklenir.
- Son toplam görüntülenir.
Bu yaklaşım, algoritmayı tek parça ve belirsiz bir işlem olarak görmek yerine izlenebilir adımlara ayırır. Soyutlama da benzer biçimde, tekrar eden veya ayrıntısı o an gerekli olmayan işlemleri daha anlaşılır bir yapı altında toplamaya yardımcı olur. Prosedür kullanımı, bu düşüncenin programlama içindeki somut örneklerinden biridir.
Big Idea 3 çalışırken öğrencilerin özellikle şu hata türlerini fark etmesi yararlıdır:
- Bir değişkenin yeni değerini atamadan önce kullanmak veya atama sırasını yanlış okumak
>,>=,=ve diğer karşılaştırmaları birbirine karıştırmak- AND ve OR ifadelerinde tüm koşulların nasıl birleştiğini kontrol etmemek
- Döngünün tekrar sayısını, başlangıç değerini veya sonlanma koşulunu gözden kaçırmak
- Prosedür çağrısında gönderilen değerleri, prosedürün tanımındaki parametrelerle karıştırmak
Bu hataları azaltmanın en güvenilir yolu, algoritmayı hızlıca tahmin etmek yerine değişkenleri küçük bir çizelgede izlemektir. Her satırdan sonra hangi değişkenin değiştiğini yazmak, özellikle iç içe koşullarda ve döngülerde zihinsel yükü azaltır.
College Board pseudocode formatı nasıl okunmalı?

College Board’ın AP CSP için kullandığı pseudocode, belirli bir programlama dilinin doğrudan sözdizimi değildir. Amacı, öğrencinin bir algoritmanın mantığını belirli ve ortak bir gösterimle okuyabilmesini sağlamaktır. Bu nedenle pseudocode sorularında kodu Python, Java veya başka bir dile çevirmeye çalışmak yerine verilen gösterimin yürütme sırasını izlemek gerekir.
College Board pseudocode kılavuzunu okurken dört noktaya odaklanın: atamanın yönü, blokların girintisi ve sınırları, koşulun değerlendirilme biçimi ve döngünün ne zaman sona erdiği. Büyük harfle yazılan DISPLAY, INPUT, IF, ELSE, REPEAT ve FOR EACH gibi komutlar, programın yapısal işlemlerini ayırt etmeye yardımcı olur.
Atama ve karşılaştırmayı birbirinden ayırma
Pseudocode içinde atama, bir ifadenin sonucunu değişkene yerleştirme işlemidir. Örneğin:
count <- 3
count <- count + 2
DISPLAY(count)
İkinci satırdaki işlem matematiksel bir denklem olarak değil, “count değerini oku, 2 ekle ve sonucu yine count değişkenine ata” şeklinde okunmalıdır. Sonuç 5’tir.
Karşılaştırma ise iki değerin ilişkisini kontrol eder. <, >, <=, >=, eşitlik ve eşitsizlik karşılaştırmaları bir koşulun doğru veya yanlış sonucunu belirlemek için kullanılır. Atama ile karşılaştırmayı aynı işlem sanmak, algoritmanın bütün akışını değiştirebilir.
Girinti ve blok sınırlarını takip etme
Koşul ve döngü yapılarında girinti, hangi komutların ilgili bloğa ait olduğunu görmeyi kolaylaştırır. Bir komut IF bloğunun içindeyse yalnızca koşul doğru olduğunda çalışır. ELSE bloğundaysa IF koşulu yanlış olduğunda devreye girer. Döngü bloğundaki komutlar ise döngünün her tekrarında yeniden yürütülür.
value <- 4
IF(value > 2)
{
value <- value + 1
DISPLAY(value)
}
DISPLAY("Bitti")
Bu örnekte ilk DISPLAY komutu yalnızca koşul doğru olduğunda çalışır ve 5 değerini gösterir. Son satırdaki DISPLAY("Bitti") ise koşulun sonucundan bağımsız olarak, IF bloğu tamamlandıktan sonra çalışır. Öğrenci kodu okurken her satırın hangi süslü parantez veya girinti bloğunda bulunduğunu işaretleyebilir.
Prosedür tanımı ile prosedür çağrısını ayırma
Bir prosedürün tanımlandığı bölüm, yapılacak işlemleri açıklar; ancak tanımın kendisi her zaman işlemin hemen yürütüldüğü anlamına gelmez. İşlemin gerçekleşmesi için prosedürün çağrılması gerekir.
PROCEDURE addOne(value)
{
DISPLAY(value + 1)
}
number <- 6
addOne(number)
Önce prosedürün ne yaptığını okuyun: Kendisine verilen değere 1 ekliyor. Ardından çağrıdaki gerçek değeri bulun: number değişkeninin değeri 6. Bu nedenle çıktı 7 olur. Prosedürün içinde yer alan value ismi, çağrıdaki number değerini temsil eder.
Pseudocode okuma sırası
- Başlangıç değişkenlerini ve ilk değerlerini belirleyin.
- İlk yürütülecek satırdan başlayarak komutları sırayla okuyun.
- Her atamadan sonra değişkenin yeni değerini not edin.
- Koşul gördüğünüzde önce karşılaştırmayı, sonra mantıksal bağlaçları değerlendirin.
- Döngüde tekrar sayısını veya sonlanma koşulunu açıkça takip edin.
- Prosedür çağrısında gönderilen değerleri tanımdaki parametrelerle eşleştirin.
DISPLAYkomutlarına gelindiğinde oluşan çıktıyı sırayla yazın.
Bu yöntemde amaç, pseudocode’u görsel olarak tanımak değil, küçük bir bilgisayar gibi adım adım yürütmektir. Bir satırın sonucu sonraki satırın girdisi olabileceği için aceleyle sonuca atlamak yerine değişken tablosu oluşturmak daha güvenlidir.
Trace tekniğiyle pseudocode çıktısı nasıl bulunur?
Trace tekniği, bir pseudocode parçasını zihinden tahmin etmek yerine programın durumunu adım adım takip etme yöntemidir. Her atamadan, koşul değerlendirmesinden ve ekrana yazdırma işleminden sonra değişkenlerin aldığı değerleri kaydettiğinizde özellikle döngü ve iç içe koşul soruları daha yönetilebilir hâle gelir.
Bu yöntemi geliştirmek için önce küçük algoritmaları yavaşça izlemek önemlidir. İsterseniz çalışmaya başlamadan önce algoritma bilgi testi ile değişken, koşul ve döngü konularındaki mevcut durumunuzu kontrol edebilirsiniz. Aşağıdaki örnek, College Board’a ait belirli bir gösterimin birebir kopyası değildir; amaç, pseudocode çıktısını satır satır takip etme mantığını göstermektir.
Örnek pseudocode: değişken, döngü ve IF/ELSE
total ← 0
step ← 1
REPEAT UNTIL step > 3
total ← total + step
IF total MOD 2 = 0
DISPLAY(total)
ELSE
DISPLAY(total + 100)
step ← step + 1
END REPEAT
Bu örnekte iki değişken vardır: total toplamı, step ise döngüde kullanılacak adımı tutar. Döngünün gövdesi çalıştıktan sonra step > 3 koşulu değerlendirilir. Koşul doğru olduğunda döngü sonlanır; yanlış olduğunda yeni bir tur başlar.
İlk tur başlamadan önce total = 0 ve step = 1 değerindedir. Gövdeye girildiğinde önce total değişkeni güncellenir. Yani total ← total + step satırında yeni değer 0 + 1 = 1 olur. Daha sonra total MOD 2 = 0 koşulu kontrol edilir. 1 MOD 2 sonucu 1 olduğu için koşul yanlıştır ve ELSE dalı çalışır. Ekrana 1 + 100, yani 101 yazılır.
Satır satır izleme tablosu nasıl hazırlanır?
Trace yaparken boş bir kâğıda veya sınavdaki çalışma alanına dört sütun açabilirsiniz. Her satıra bütün kodu yeniden yazmak yerine, yalnızca o adımda değişen bilgileri not etmek yeterlidir. Özellikle değişken atamalarını ve koşul sonuçlarını atlamamak gerekir.
| Adım/Satır | Değişken değerleri | Koşul sonucu | Ekrana yazılan |
|---|---|---|---|
| Başlangıç | total = 0, step = 1 | — | — |
| 1. tur: total ← total + step | total = 1, step = 1 | — | — |
| 1. tur: total MOD 2 = 0 | total = 1, step = 1 | Yanlış | 101 |
| 1. tur: step ← step + 1 | total = 1, step = 2 | step > 3: Yanlış | — |
| 2. tur: total ← total + step | total = 3, step = 2 | — | — |
| 2. tur: total MOD 2 = 0 | total = 3, step = 2 | Yanlış | 103 |
| 2. tur: step ← step + 1 | total = 3, step = 3 | step > 3: Yanlış | — |
| 3. tur: total ← total + step | total = 6, step = 3 | — | — |
| 3. tur: total MOD 2 = 0 | total = 6, step = 3 | Doğru | 6 |
| 3. tur: step ← step + 1 | total = 6, step = 4 | step > 3: Doğru | — |
Tablonun son sütununda görüldüğü gibi beklenen çıktı sırasıyla 101, 103, 6 olur. Burada ekrana yazılan değer her zaman total değişkeninin kendisi değildir. total çift olduğunda IF dalı doğrudan total değerini yazdırır. Tek olduğunda ELSE dalı çalışır ve total + 100 ekrana gönderilir.
Döngünün her turunu nasıl takip etmelisiniz?
Bir döngü sorusunda her tur için şu dört soruyu sırayla sorun:
- Tur başlamadan önce değişkenlerin değeri nedir?
- Döngü gövdesinde hangi atama ilk önce çalışıyor?
- IF/ELSE koşulu yeni değişken değerleriyle doğru mu, yanlış mı?
- Tur sonunda sayaç veya kontrol değişkeni nasıl güncelleniyor?
Örneğin ikinci turda total değeri 1, step değeri 2 olarak başlar. Toplama satırı çalışınca total değeri 3 olur. Öğrencilerin sık yaptığı hata, koşulu eski total = 1 değeriyle değerlendirmektir. Oysa koşul, kendisinden önceki satırların güncellediği değer üzerinden çalışır. Bu nedenle her atamadan sonra yeni değeri tabloya yazmak yalnızca düzenli görünmek için değil, doğru dalı seçebilmek için gereklidir.
Üçüncü turda total değeri 6’ya ulaşır. 6’nın 2’ye bölümünden kalan 0 olduğu için IF koşulu doğrudur ve ELSE bölümü atlanır. Burada IF ve ELSE iki ayrı çıktıyı aynı anda üretmez: koşul doğruysa yalnızca IF dalı, yanlışsa yalnızca ELSE dalı çalışır.
Güncelleme sırası değişirse çıktı neden değişir?
Algoritmalarda aynı satırların bulunması, satırların herhangi bir sırayla çalışabileceği anlamına gelmez. Bir değişkeni hangi değerden önce veya sonra güncellediğiniz sonucu doğrudan etkiler.
Örneğin döngü içinde step ← step + 1 satırının, total ← total + step satırından önce çalıştığını düşünelim. İlk turda step önce 2 olur ve toplama işlemi total = 0 + 2 şeklinde gerçekleşir. Sonraki turlarda toplam değerleri 5 ve 9 olur. Bu durumda çıktı 2, 105, 109 şeklinde değişir.
İlk örnekte toplama işlemi eski step değeriyle, yani 1, 2 ve 3 ile yapılmıştı. Karşı örnekte ise toplama işlemi güncellenmiş değerlerle, yani 2, 3 ve 4 ile yapıldı. Trace sırasında bu farkı yakalamak için “Bu satırdan hemen önce değişkenin değeri neydi?” sorusunu sormak gerekir. Bir satırın sonunda oluşan değer, sonraki satırın girdisidir.
Trace yaparken dikkat edilmesi gereken sınır durumları
- İlk değer: Bir değişkenin başlangıç değeri verilmemişse, onu kendi varsayımınızla doldurmayın. Pseudocode içinde başlangıç atamasını arayın.
- Koşulun zamanı: Koşulun döngüden önce mi, gövdenin sonunda mı kontrol edildiğini belirleyin. Bu ayrım, döngünün kaç kez çalışacağını değiştirir.
- Güncelleme satırı: Sayaç artışı, toplam güncellemesinden önceyse yeni sayaç; sonraysa eski sayaç kullanılır.
- Çıktı ifadesi:
DISPLAY(total + 100)ileDISPLAY(total) + 100ifadelerini aynı kabul etmeyin. Ekrana gönderilen ifadenin tamamını hesaplayın. - Dal seçimi: IF koşulu doğruysa ELSE çalışmaz. Koşul yanlışsa IF gövdesi atlanır ve ELSE değerlendirilir.
Dört adımlı trace kontrol listesi
- Başlangıç değerlerini yazın: Tüm değişkenleri ve ilk değerlerini tabloya ekleyin.
- Çalışma sırasını izleyin: Her atamanın hangi değeri kullandığını ve yeni değeri nasıl oluşturduğunu not edin.
- Koşulları tek tek değerlendirin: IF/ELSE ve döngü koşullarını “doğru” veya “yanlış” olarak yazın; sezgisel tahmin yapmayın.
- Çıktıyı son kontrolden geçirin: Ekrana yazılan değerleri sırayla birleştirin ve döngünün sonlanma koşulunun gerçekten sağlanıp sağlanmadığını kontrol edin.
Koşul, mantıksal operatör ve döngü hataları nasıl önlenir?

Trace sorularında hata çoğu zaman kodu hiç anlamamaktan değil, doğru değeri yanlış sırada kullanmaktan kaynaklanır. Bir koşulu okumadan önce değişkenin güncel hâlini kontrol etmek, AND ve OR ifadelerini parçalara ayırmak ve döngü sayacını her tur sonunda yeniden yazmak bu hataları önemli ölçüde azaltır. Kişiye göre değişen yanlışları daha sistemli incelemek isteyen öğrenciler için 1-1 özel ders desteği, belirli bir algoritma veya koşul sorusunu birlikte izleme fırsatı sunabilir.
Değişken güncellemesini yanlış zamanda kullanmak
En temel hata, bir değişkenin yeni değeriyle eski değerini karıştırmaktır. Şu iki işlem aynı değildir:
count ← count + 1
total ← total + count
İlk satır önce çalışırsa total, artırılmış count değerini kullanır. Satırların sırası tersine çevrilirse total, artırılmamış eski count değerini kullanır. Bu yüzden trace tablosunda yalnızca turun sonundaki değerleri değil, önemli atamalardan sonraki ara değerleri de yazmak gerekir.
AND ve OR ifadelerini sezgiyle yorumlamamak
AND kullanılan bir koşulun doğru olabilmesi için iki alt koşulun da doğru olması gerekir. OR kullanılan bir koşulda ise alt koşullardan en az birinin doğru olması yeterlidir.
Örneğin age > 12 AND age < 18 ifadesi, yaşın aynı anda 12’den büyük ve 18’den küçük olmasını ister. age < 13 OR age > 17 ifadesi ise yaşın 13’ten küçük veya 17’den büyük olmasını kabul eder. Öğrencinin kendi günlük dilindeki “veya” kullanımını doğrudan koda aktarması hatalı sonuç verebilir. En güvenli yöntem, birleşik koşulu iki ayrı satıra bölüp her birinin doğruluk değerini yazmaktır.
Karşılaştırmaların önceliğini kontrol etmek
Bir koşulda birden fazla karşılaştırma ve mantıksal operatör bulunuyorsa, ifadenin hangi parçalarının birlikte değerlendirildiği önem kazanır. Belirsiz görünen ifadeyi parantezlerle zihninizde gruplandırın. Örneğin:
IF score > 50 AND level = 2 OR bonus = true
Bu ifadeyi tek parça hâlinde yorumlamak yerine şu üç soruya ayırın:
score > 50doğru mu?level = 2doğru mu?bonus = truedoğru mu?
Daha sonra AND grubunu ve OR bağlantısını ayrı ayrı değerlendirin. Soruda parantez verilmişse parantezleri temel alın; verilmemişse ifadeyi küçük mantık parçalarına ayırmadan doğrudan “koşul doğru” veya “koşul yanlış” demeyin. Trace tablosundaki “Koşul sonucu” sütununa yalnızca sonucunuzu değil, gerekiyorsa ara sonuçları da kısa not olarak ekleyebilirsiniz.
IF/ELSE dallarını doğru takip etmek
IF/ELSE yapısında önce IF koşulu değerlendirilir. Koşul doğruysa IF gövdesi çalışır ve ELSE gövdesi atlanır. Koşul yanlışsa IF gövdesi çalışmaz; varsa ELSE gövdesi devreye girer. İki dalın da çalıştığını varsaymak, ekrandaki çıktı sayısını yanlış hesaplamaya yol açar.
Bir dalın içindeki değişken güncellemesi de sonraki satırları etkiler. Örneğin IF dalında points ← points + 5, ELSE dalında points ← points - 2 varsa, sonraki koşul veya çıktı bu değişiklikten sonra değerlendirilir. Bu nedenle yalnızca hangi dalın seçildiğini değil, seçilen dalın değişkenlerde ne değiştirdiğini de yazın.
FOR EACH ve sayaçlı döngülerde sıra takibi
FOR EACH yapısında bir koleksiyonun elemanları, belirlenen sırayla birer birer ele alınır. Her turda geçici değişken, koleksiyondaki o anki elemana karşılık gelir. Örneğin bir liste [3, 6, 9] ise döngü gövdesi ilk turda 3, ikinci turda 6, üçüncü turda 9 ile çalışır. Her elemanın aynı koşula girdiğini varsaymak yerine, o turun elemanını tabloya yazın.
Sayaç kullanan döngülerde ise iki noktayı kontrol edin: sayaç hangi değerle başlıyor ve her turda ne kadar değişiyor? counter ← counter + 2 ifadesi, sayacın her turda bir değil iki arttığını gösterir. Sayacın yanlış miktarda artırılması hem döngünün tur sayısını hem de hesaplanan çıktıyı değiştirir.
REPEAT ve REPEAT UNTIL arasındaki durma mantığı
REPEAT türü yapılarda temel soru, döngü gövdesinin koşul kontrolünden önce mi yoksa sonra mı çalıştığıdır. Kavramsal olarak, gövde en az bir kez çalıştırılıyorsa önce işlem yapılır, ardından devam etme veya durma kararı verilir.
REPEAT UNTIL ifadesinde “until” bölümündeki koşulun gerçekleşmesi, döngünün durma işaretidir. Örneğin REPEAT UNTIL count = 5 ifadesini “count 5 olana kadar gövdeyi çalıştır” şeklinde takip edebilirsiniz. Ancak kontrolün gövdenin hangi noktasında yapıldığına dikkat edilmelidir. Gövde içinde count hiç değişmiyorsa sonlanma koşuluna ulaşılmayabilir; count yanlış yönde güncelleniyorsa beklenen tur sayısı oluşmaz.
Bu mantığı ters yorumlayan öğrenci, “koşul doğruysa bir tur daha çalışır” sonucuna varabilir. Oysa burada koşulun doğru hâle gelmesi durma anını belirtir. Trace sırasında her turun sonunda “sonlanma koşulu doğru mu?” sorusunu ayrı bir satır olarak yazmak bu karışıklığı önler.
| Konu | Sık hata | Doğru kontrol sorusu | Mini düzeltme |
|---|---|---|---|
| Değişken güncellemesi | Güncellenmiş değeri, atama gerçekleşmeden önce kullanmak | Bu satır çalıştığı anda değişkenin eski değeri nedir? | Her atamadan sonra yeni değeri tabloya yazın. |
| AND / OR | AND için tek doğru alt koşulu yeterli sanmak veya OR için tüm koşulları zorunlu görmek | Her alt koşulun doğruluk değeri nedir? | İfadeyi küçük koşullara bölüp sonuçları ayrı ayrı değerlendirin. |
| Karşılaştırma önceliği | Birleşik ifadeyi parantez veya mantıksal gruplama olmadan tek seferde yorumlamak | Hangi iki alt ifade önce birlikte değerlendiriliyor? | Koşulu parçalara ayırın ve ara sonuçları not edin. |
| Döngü sayacı | Sayacı yanlış miktarda artırmak veya güncellemeyi unutmak | Her tur sonunda sayaç hangi değeri alıyor? | Başlangıç, artış miktarı ve durma koşulunu aynı satırda kontrol edin. |
| REPEAT UNTIL | Sonlanma koşulu doğru olduğunda döngünün devam ettiğini düşünmek | Bu koşul devam etme koşulu mu, durma koşulu mu? | Her turun sonunda “koşul doğruysa dur” notunu yazın. |
Soruyu çözmeden önce uygulanacak kısa yöntem
- Döngünün başlangıç değerlerini ve koşulun kontrol edildiği yeri işaretleyin.
- Her turda değişen değişkenleri, eski ve yeni değerleriyle birlikte yazın.
- IF/ELSE içindeki koşulları alt parçalara ayırarak değerlendirin.
- Çıktıları yalnızca DISPLAY veya benzeri ekran komutu çalıştığında sıraya ekleyin.
Bu yaklaşım, özellikle uzun görünen fakat az sayıda değişken kullanan pseudocode sorularında zihinsel yükü azaltır. Sonucu tahmin etmeye çalışmak yerine algoritmanın durumunu kaydettiğiniz için bir satırdaki güncelleme sırası, dal seçimi veya döngü sonlanması gözden kaçmaz.
Sınav odaklı çalışma planı nasıl kurulmalı?
AP CSP Big Idea 3 için en verimli çalışma planı, konuları uzun bir ezber listesine dönüştürmek yerine üç aşamalı bir uygulama döngüsü kurmaktır: önce temel kavramları ayırmak, sonra her gün kısa pseudocode trace çalışmaları yapmak, son olarak süre tutarak karışık sorular çözmek ve hataları düzenli biçimde kaydetmek. Amaç yalnızca doğru seçeneği bulmak değil, bir algoritmanın hangi sırayla çalıştığını ve sonuca nasıl ulaştığını açıklayabilmektir.
1. Aşama: Temel kavramları birbirinden ayırın
İlk aşamada atama, koşul, döngü ve prosedür kavramlarını birbirine karıştırmayacak kadar netleştirin. Her kavram için kısa bir kart hazırlayabilir ve kartın arkasına şu üç soruyu yazabilirsiniz:
- Bu yapı ne işe yarar?
- Programın akışını nasıl değiştirir?
- Bir pseudocode örneğinde bunu nasıl tanırım?
Örneğin bir değişkene yeni değer verilmesi atama, bir koşulun doğru veya yanlış olmasına göre farklı yol izlenmesi koşul, bir komut grubunun tekrar çalıştırılması döngü, belirli bir işi yapan adlandırılmış komut grubunun kullanılması ise prosedür olarak ele alınmalıdır.
Bu kavramları yalnızca tanımlarıyla değil, küçük karşılaştırmalarla öğrenmek daha kalıcıdır. “Bir değişkenin değeri değişti mi?”, “Bir karar verildi mi?”, “Bir işlem tekrarlandı mı?”, “Başka yerde çağrılabilecek bir komut grubu mu kullanıldı?” soruları, pseudocode satırlarını sınıflandırmanıza yardımcı olur. Çalışma planının ilk günlerinde bu ayrımı oturtmak isteyen öğrenciler, AP Computer Science Principles sınav hazırlığı içeriğinde kendi seviyelerine uygun bir çalışma yolu belirleyebilir.
2. Aşama: Her gün kısa trace çalışması yapın
İkinci aşamada her gün uzun bir soru seti çözmek yerine, birkaç satırlık pseudocode parçalarını elle takip edin. Trace çalışmasının amacı hızla tahmin yürütmek değil, her satırdan sonra değişkenlerin durumunu güncellemektir.
Her çalışma oturumunda şu sırayı uygulayın:
- Komutları tanıyın: Atama mı, koşul mu, döngü mü, prosedür çağrısı mı?
- Başlangıç değerlerini ayrı bir yere yazın.
- Her satırdan sonra değişken tablosunu güncelleyin.
- Koşulları gerçek değerlerle değerlendirin; yalnızca sembollere bakarak karar vermeyin.
- Döngünün neden devam ettiğini veya neden sona erdiğini açıklayın.
- Bir çıktı komutu varsa, çıktının o andaki değerini kaydedin.
- Son satıra ulaştığınızda beklenen çıktıyı bir kez daha kontrol edin.
Örneğin bir döngüde başlangıç değeri 1 olan bir değişkenin her turda 2 arttığını görüyorsanız, yalnızca son değere odaklanmayın. Döngünün her turunda hangi değerlerin oluştuğunu yazın. Böylece artış miktarı, koşulun değerlendirilme zamanı ve çıktı komutunun döngü içindeki konumu birlikte görünür hâle gelir.
Bu aşamada amaç, her soruyu zihinden çözmek değildir. Aksine, tablo kullanmayı otomatikleştirerek daha sonra kolay sorularda tabloyu kısaltabilmektir. Bir öğrenci değişken güncellemelerini sıkça atlıyorsa 1-1 AP Computer Science Principles sınav hazırlığı ile özellikle trace, koşul ve döngü takibi üzerine kişiselleştirilmiş alıştırmalar yapabilir.
3. Aşama: Karışık sorular ve hata günlüğü
Temel kavramlar ve kısa trace alıştırmaları belirli bir düzeye geldikten sonra farklı soru türlerini aynı oturumda çözmeye başlayın. Bir soruda atama ve koşul, diğerinde döngü ve prosedür parametresi bulunabilir. Bu karışıklık, sınav ortamına daha gerçekçi bir hazırlık sağlar.
Her çalışma oturumundan sonra yalnızca yanlış sorularınızı değil, doğru cevabı tesadüfen bulduğunuz soruları da inceleyin. Hata günlüğünü şu başlıklarla düzenleyebilirsiniz:
- Kavram hatası: IF, REPEAT veya prosedür yapısının görevini yanlış anladım.
- Takip hatası: Bir değişkenin yeni değerini tabloya yazmadım.
- Mantık hatası: AND veya OR koşulunu yanlış değerlendirdim.
- Sınır hatası: Döngünün son turunu veya eşitlik durumunu atladım.
- Okuma hatası: Bir prosedüre gönderilen parametreleri yanlış sırayla takip ettim.
- Çıktı hatası: Değeri doğru bulduğum hâlde çıktının sırasını yanlış yazdım.
Hata günlüğü, “Bu soruyu yanlış yaptım.” cümlesini “Bu soruda döngünün koşulunu her turdan sonra yeniden değerlendirmedim.” gibi düzeltilebilir bir açıklamaya dönüştürür. Haftanın sonunda aynı hata türünden üç veya daha fazla örnek varsa, yeni konuya geçmeden önce o başlık için kısa bir tekrar oturumu yapın.
Çalışma seviyesini ölçmek için algoritma bilgi testi gibi kısa bir değerlendirmeyi başlangıçta ve birkaç hafta sonra yeniden kullanabilirsiniz. Buradaki amaç yalnızca puanı görmek değil, hangi kavramlarda daha fazla trace ve açıklama çalışmasına ihtiyaç olduğunu belirlemektir.
Uygulanabilir çalışma kontrol listesi
| Adım | Kontrol sorusu | Sık hata |
|---|---|---|
| Komutları tanıma | Satır atama, koşul, döngü veya prosedür mü? | Her komutu aynı tür işlem gibi okumak |
| Başlangıç değerleri | Değişkenlerin ilk değerlerini yazdım mı? | İlk değeri varsaymak veya atlamak |
| Tabloyu güncelleme | Her satırdan sonra değişen değeri kaydettim mi? | Yalnızca çıktı satırlarını takip etmek |
| Koşulu değerlendirme | Koşulu mevcut gerçek değerlerle kontrol ettim mi? | Eski değişken değerini kullanmak |
| Döngüyü bitirme | Döngünün hangi koşulda sona erdiğini açıklayabiliyor muyum? | Son turu erken bitirmek veya fazladan tur eklemek |
| Çıktıyı kontrol etme | Çıktıların sırasını ve biçimini son kez inceledim mi? | Değerleri doğru bulup sıralamayı karıştırmak |
Veliler öğrencinin çalışma sürecini nasıl destekleyebilir?
Veliler için en yararlı yaklaşım, öğrenciden yalnızca “Doğru cevap hangisi?” diye sormak yerine “İlk olarak hangi değişkeni takip ettin?”, “Koşulu hangi değerlerle değerlendirdin?” veya “Döngünün bitmesine ne sebep oldu?” gibi sorular istemektir. Bu yöntem, öğrenciyi sonucu tahmin etmeye değil, izlediği adımları açıklamaya yönlendirir.
Bir sorunun cevabı yanlış çıktığında hemen doğru cevabı söylemek yerine öğrencinin tabloyu hangi satırda bıraktığını bulmasına yardımcı olun. Böylece hata, kişisel bir başarısızlık gibi değil, algoritmanın belirli bir adımında düzeltilebilecek bir takip sorunu gibi görülür. Sakin ve açıklamaya dayalı bu yaklaşım, özellikle uzun pseudocode sorularında gereksiz kaygının azalmasına yardımcı olur.
Sık Sorulan Sorular
AP CSP Big Idea 3 sorularını çözerken trace tablosu ne zaman kullanılmalı?
Trace tablosu, birden fazla değişkenin güncellendiği, koşulların bulunduğu, döngülerin tekrarlandığı veya bir prosedüre parametre gönderildiği sorularda kullanılmalıdır. Çok kısa ve tek adımlı bir işlemde zihinden takip mümkün olabilir; ancak bir değeri atlama ihtimali varsa tabloya dönmek daha güvenlidir. Tabloyu yalnızca zor sorular için değil, hata türünüzü tanımak için de kullanabilirsiniz. Zamanla tabloyu tamamen bırakmak yerine daha kısa hâle getirmek genellikle daha iyi bir yöntemdir.
REPEAT UNTIL döngüsünün ne zaman duracağını nasıl doğru yorumlayabilirim?
REPEAT UNTIL yapısında temel soru şudur: “Döngünün durmasını sağlayan koşul ne zaman doğru olacak?” Her turdan sonra ilgili değişkenlerin yeni değerlerini yazın ve koşulu bu yeni değerlerle değerlendirin. Koşul yanlış olduğu sürece döngü devam eder; koşul doğru hâle geldiğinde döngü sona erer. Döngü gövdesinin en az bir kez çalışabileceğini göz önünde bulundurun ve koşulun tur başlamadan önce mi, işlemden sonra mı etkili olduğunu pseudocode yapısına göre dikkatle takip edin.
IF/ELSE koşullarında AND ve OR operatörlerini karıştırmamak için ne yapmalıyım?
AND ifadesinde iki koşulun da doğru olması gerekir. OR ifadesinde ise koşullardan en az birinin doğru olması yeterlidir. Karar verirken ifadeyi tek parça okumak yerine küçük bir doğruluk tablosu gibi değerlendirin: önce sol koşulun sonucunu, sonra sağ koşulun sonucunu yazın; ardından AND veya OR kuralını uygulayın. Eşitlik, büyüklük ve küçüklük işaretlerini de ayrıca kontrol edin. Özellikle parantez bulunan ifadelerde önce hangi koşul grubunun değerlendirildiğini belirlemek karışıklığı azaltır.
Pseudocode komutlarını ezberlemek mi, yoksa kodun yürütme sırasını anlamak mı daha önemlidir?
Öncelik kodun yürütme sırasını, değişkenlerin nasıl güncellendiğini ve koşulların akışı nasıl değiştirdiğini anlamaktır. Pseudocode komutlarının temel anlamlarını ve kullanılan gösterim biçimini tanımak elbette gereklidir; ancak yalnızca sözdizimini ezberlemek, döngü içindeki değer değişimini veya prosedür parametrelerinin etkisini açıklamaya yetmez. Bir komutu gördüğünüzde “Bu satır hangi değeri değiştiriyor, akışı durduruyor, tekrarlıyor veya başka bir işlemi çağırıyor?” sorusunu sorabiliyorsanız, ezberden daha sağlam bir anlayış geliştirmiş olursunuz.
Big Idea 3 çalışırken düzenli trace, hata günlüğü ve açıklamaya dayalı tekrar birlikte yürütüldüğünde algoritmaları daha sakin ve kontrollü biçimde yorumlayabilirsiniz.