Bölüm 1: Akış Diyagramları
Çoktan Seçmeli · Akış Diyagramı
Soru 1: Akış Diyagramının Sınırı
Aşağıdakilerden hangisi akış diyagramlarının bir sınırlılığıdır?
A: Ayrıntı arttıkça sembol sayısı artar ve diyagram hantallaşır; bu durumda sözde kod daha pratiktir. Akış diyagramı dilden bağımsızdır (B), karar ve geri oklarla dallanmayı ve döngüyü gösterir (C), hataları kodlamadan önce görmeyi kolaylaştırır (D).
Çoktan Seçmeli · Semboller ve Kurallar
Soru 2: Hangi Sembol?
“Kullanıcıdan yaşını oku” adımı akış diyagramında hangi sembolle çizilir?
B: Klavyeden veri okumak giriş işlemidir: paralelkenar. Dikdörtgen hesaplama ve atama, eşkenar dörtgen Evet/Hayır sorusu, altıgen belirli sayıda tekrar içindir. Okumayı dikdörtgenle çizmek sık yapılan bir hatadır.
Çoktan Seçmeli · Semboller ve Kurallar
Soru 3: Çizim Kuralları
Aşağıdakilerden hangisi akış diyagramı çizim kurallarına aykırıdır?
C: Karar sembolünün iki çıkışı olmalı ve ikisi de E/H diye etiketlenmelidir; yoksa “hayır” durumunda ne olacağı belirsiz kalır. Tek Başla ve en az bir Bitir kuralı iki Bitir'e izin verir (D).
Kod Yazma · Semboller ve Kurallar
Soru 4: Diyagramdan Java'ya
Diyagramı Java programına çevirin. Kullanıcı 2 girerse çıktı ne olur?
Cevabı göster
Scanner giris = new Scanner(System.in); double r = giris.nextDouble(); double alan = 3.14 * r * r; System.out.println(alan);
Paralelkenar → nextDouble(), dikdörtgen → atama, yazdır → println.
Başla/Bitir main metodunun gövdesidir. r = 2 → 3.14 · 2 · 2 = 12.56. Akış sıralıdır: karar ve tekrar yok, her kutu bir kez çalışır.
Çoktan Seçmeli · Kontrol Yapıları
Soru 5: Üç Yapı
Böhm ve Jacopini'nin yapısal programlama teoremine göre her algoritma hangi üç yapı iç içe kullanılarak yazılabilir?
A: Sıra (art arda deyimler), seçim (if/else) ve tekrar (while/for) yeterlidir. B bir programın veri akışını, D nesne yönelimli programlamanın kavramlarını anlatır; kontrol yapısı değildir.
Hata Bulma · Sıralı Akış
Soru 6: Sırası Bozuk Diyagram
Diyagram iki sayının toplamını yazdırmak için çizildi. Hata nedir? Aynı sırayla Java'ya çevrilirse (int a, b; tanımlanıp) ne olur?
Cevabı göster
Toplama, sayılar okunmadan önce yapılıyor: bir adım öncekinin sonucunu kullanıyorsa yeri değiştirilemez. İşlem kutusu “Oku a, b”nin altına alınmalıdır.
int a, b; int toplam = a + b; a = giris.nextInt(); b = giris.nextInt();
Derlenmez: error: variable a might not have been initialized (b için de aynı hata). Java değer almamış değişkenin kullanılmasına izin vermez.
Adım Adım Çalıştırma · Koşullu Akış
Soru 7: İç İçe Karar: Harf Notu
Diyagram ve Java karşılığı önce 72, sonra 45 girdisiyle çalıştırılıyor. Ne yazılır, hangi kararlar sınanır?
Başla; kullanıcı 72 girer.
1. karar: 72 ≥ 85 yanlış → H çıkışı, sonraki karara.
2. karar: 72 ≥ 70 doğru → E çıkışı.
“B” yazılır, akış Bitir'de birleşir. Üçüncü karar hiç sınanmadı.
İkinci çalıştırma: kullanıcı 45 girer.
45 ≥ 85, 45 ≥ 70, 45 ≥ 50: üçü de yanlış, hep H çıkışı.
“F” yazılır. 72 için 2, 45 için 3 karar sınandı; her çalıştırmada tek bir Yaz kutusu çalışır.
int not = giris.nextInt(); if (not >= 85) { System.out.println("A"); } else if (not >= 70) { System.out.println("B"); } else if (not >= 50) { System.out.println("C"); } else { System.out.println("F"); }
Çıktı Sorusu · Koşullu Akış
Soru 8: Negatif Tek Sayı
Tek/çift diyagramında karar kutusu “sayı mod 2 = 1?” diye kurulmuş ve Java'ya şöyle çevrilmiş. Girdi sırasıyla −3, 7 ve 0 iken çıktı nedir?
if (sayi % 2 == 1) { System.out.println(sayi + " tek"); } else { System.out.println(sayi + " çift"); }
Cevabı göster
-3 çift 7 tek 0 çift
Java'da kalan bölünenin işaretini alır: −3 % 2 = −1; −1 == 1 yanlış olduğu için −3 “çift” sanılır. 7 % 2 = 1, 0 % 2 = 0.
Düzeltme: koşulu sayi % 2 == 0 (çift) diye kurmak; −1 de 1 de “tek” koluna düşer.
Çoktan Seçmeli · Koşullu Akış
Soru 9: Diyagramın Java Karşılığı
Diyagramın Java karşılığı hangisidir?
D: Karar kutusunun yalnızca Evet kolunda iş var, Hayır kolu doğrudan birleşme noktasına gidiyor: tek yönlü karar, yani else'siz if. Geri ok olmadığı için döngü değildir (A, C); Hayır kolunda “x = 0” kutusu yoktur (B).
Adım Adım Çalıştırma · Tekrarlı Akış
Soru 10: Tekrarlı Akış: Üçle Çarpma
Diyagram ve Java karşılığı ne yazdırır? Döngü gövdesi kaç kez çalışır?
Döngü değişkenine başlangıç değeri: sayı = 1.
1 < 100 doğru → E: sayı = 1 × 3 = 3; geri okla karara dönülür.
3 < 100 doğru → E: sayı = 3 × 3 = 9; geri okla karara dönülür.
9 < 100 doğru → E: sayı = 9 × 3 = 27; geri okla karara dönülür.
27 < 100 doğru → E: sayı = 27 × 3 = 81; geri okla karara dönülür.
81 < 100 doğru → E: sayı = 81 × 3 = 243; geri okla karara dönülür.
243 < 100 yanlış → H: 243 yazılır. Gövde 5 kez, karar 6 kez çalıştı; son değer sınırı aşan ilk değerdir.
int sayi = 1; while (sayi < 100) { sayi = sayi * 3; } System.out.println(sayi);
Çıktı Sorusu · Tekrarlı Akış
Soru 11: Sınır Koşulları
Üç döngü ne yazdırır? Her biri kaç kez döner?
for (int i = 0; i < 10; i += 2) System.out.print(i + " "); System.out.println(); for (int i = 0; i <= 10; i += 2) System.out.print(i + " "); System.out.println(); for (int i = 10; i > 0; i -= 3) System.out.print(i + " ");
Cevabı göster
0 2 4 6 8 0 2 4 6 8 10 10 7 4 1
1. döngü 5 kez: i = 10 olunca 10 < 10 yanlış. 2. döngü <= yüzünden 10'u da yazar: 6 kez.
3. döngü 4 kez: 1 − 3 = −2 > 0 yanlış. Koşulu son değerle denemek bir eksik / bir fazla hatasını yakalar.
Çoktan Seçmeli · Tekrarlı Akış
Soru 12: Döngü Başlığında Noktalı Virgül
Kod çalıştırıldığında ne olur?
int sayac = 1; while (sayac <= 10); { System.out.print(sayac + " "); sayac++; }
B: while (sayac <= 10); gövdesi boş bir döngüdür; sayaç hiç artmadığı için koşul hep doğru kalır ve program takılır. Kod derlenir (C yanlış); süslü parantezli blok döngünün parçası değildir, hiç çalışmaz.
Çoktan Seçmeli · Tekrarlı Akış
Soru 13: Geri Ok Yanlış Yerde
1'den 10'a kadar yazan diyagramda geri ok karar kutusuna değil, “sayaç = 1” kutusunun üstüne bağlanmış. Ne olur?
C: Her turda başlangıç kutusu yeniden çalışır ve sayaç 1'e sıfırlanır; 1 ≤ 10 hep doğru kalır: sonsuz döngü. Geri ok, başlangıç değerinden sonraya, karar kutusuna dönmelidir.
Kod Yazma · Tekrarlı Akış
Soru 14: Döngü Sembolünden for'a
Altıgen döngü sembolünün üç parçası başlangıç, koşul ve güncellemedir. Diyagramı Java'ya çevirin; çıktı nedir?
Cevabı göster
for (int i = 5; i >= 1; i--) { System.out.print(i * i + " "); }
Çıktı: 25 16 9 4 1. Başlangıç bir kez, koşul her turdan önce (6 kez), güncelleme her turdan sonra (5 kez) çalışır. Aynı döngü while ile: int i = 5; while (i >= 1) { … i--; }
Adım Adım Çalıştırma · Uygulama
Soru 15: 0 Girilene Kadar Topla
Kullanıcı sırasıyla 5, 8, −3 ve 0 giriyor. Program ne yazdırır?
Döngüden önce ilk sayı okunur: 5.
5 ≠ 0 → toplam = 5, adet = 1; sıradaki sayı okunur: 8.
8 ≠ 0 → toplam = 13, adet = 2; sıradaki sayı okunur: -3.
-3 ≠ 0 → toplam = 10, adet = 3; sıradaki sayı okunur: 0.
0 ≠ 0 yanlış: döngü biter. 0 toplama katılmaz; tekrar sayısı girdiye bağlı olduğu için while seçildi.
int toplam = 0, adet = 0; int sayi = giris.nextInt(); while (sayi != 0) { toplam += sayi; adet++; sayi = giris.nextInt(); } System.out.println(toplam + " / " + adet);
Kod Yazma · Uygulama
Soru 16: Üçe Bölünenler
1'den n'e kadar 3'e tam bölünen sayıların toplamını ve adedini yazan programı (önce algoritmasını) yazın. n = 20 için çıktı nedir?
Cevabı göster
toplam = 0, adet = 0 → i = 1'den n'e: i mod 3 = 0 ise toplam += i, adet += 1 → yaz. Döngü içinde bir karar vardır.
int toplam = 0, adet = 0; for (int i = 1; i <= n; i++) { if (i % 3 == 0) { toplam += i; adet++; } } System.out.println(toplam + " " + adet);
n = 20: 3 + 6 + 9 + 12 + 15 + 18 = 63 6. Daha kısası: i = 3'ten başlayıp i += 3.
Çoktan Seçmeli · Uygulama
Soru 17: Biriktiricinin Başlangıcı
1'den n'e kadar toplam diyagramında “toplam = 0” kutusu yanlışlıkla “toplam = 1” yazılmış. n = 4 için çıktı ne olur?
D: Döngü yine 1 + 2 + 3 + 4 = 10 ekler, ama başlangıç 1 olduğu için sonuç 11 olur. Toplama için biriktirici 0, çarpma için 1 ile başlatılır; derleyici bu mantık hatasını yakalamaz.