Bölüm 4.3: Programlamaya Giriş
Çoktan Seçmeli · Temel Kavramlar
Soru 1: Söz Dizimi ve Anlam
Programlama dilinin söz dizimi (syntax) ve anlamı (semantics) hakkında hangisi doğrudur?
B: Söz dizimi biçimi (nasıl yazılır), anlam davranışı (ne yapar) tanımlar. A yanlıştır: kuralına uygun yazılmış program yanlış iş yapabilir (mantık hatası). Aynı problem farklı dillerle çözülebilir; seçim gereksinime bağlıdır.
Çoktan Seçmeli · Temel Kavramlar
Soru 2: Kaynak Kod ve Makine Dili
Kaynak kod ve makine dili ile ilgili ifadelerden hangisi yanlıştır?
C yanlıştır: işlemci yalnızca kendi makine dilini anlar. Kaynak kod önce derleyici veya yorumlayıcı (Java'da javac + JVM) aracılığıyla çalıştırılabilir hâle getirilir; programlama dili ile işlemci dili aynı şey değildir.
Çoktan Seçmeli · Çalıştırma
Soru 3: Derlenen, Yorumlanan, Hibrit
C, Python ve Java dilleri (yaygın uygulamalarına göre) sırasıyla nasıl sınıflandırılır?
D: C önceden hedef makine koduna derlenir. Python komutları çalışma sırasında (bytecode üzerinden) yürütülür, yorumlanan olarak anılır. Java kaynak kodu bytecode'a derlenir, bytecode JVM'de yürütülür: hibrit. C# da hibrittir.
Çoktan Seçmeli · Çalıştırma
Soru 4: Üç Dil, Üç Çeviri Yolu
Dillerin tipik çeviri yolları için aşağıdakilerden hangisi doğrudur?
A: C derleyicisi işlemciye özgü makine kodu üretir. JVM sık çalışan kısımları JIT ile makine koduna çevirir (B yanlış); CPython önce bytecode’a derler, sonra sanal makinede yorumlar (C yanlış). Çoğu sistem iki yaklaşımı birlikte kullanır (D yanlış).
Çıktı Sorusu · Çalıştırma
Soru 5: Söz Dizimi Hatası: Derleyici ve Yorumlayıcı
3. satırda bir yazım (söz dizimi) hatası var. Program (a) bir derleyiciyle, (b) satır satır çalışan basit bir yorumlayıcıyla çalıştırılırsa ekranda ne görünür?
yaz "Merhaba" x ← 10 yaz (x + 2 // ) eksik! yaz "Son"
Cevabı göster
(a) Derleyici: ekranda hiçbir şey görünmez; yalnızca "satır 3: söz dizimi hatası" iletisi çıkar. Çeviri başarısız olduğu için çalıştırılabilir dosya üretilmez, program hiç başlamaz.
(b) Basit yorumlayıcı: Merhaba yazılır, x = 10 atanır, satır 3'e gelince hata verip durur; "Son" yazılmaz.
Modern Python/JavaScript önce tüm dosyayı ayrıştırır, söz dizimi hatasını en başta bildirir.
Adım Adım Çalıştırma · Çalıştırma
Soru 6: Derlenen Programda Sıfıra Bölme
Bu program derlenerek çalıştırılıyor. Çeviri ve çalıştırma aşamalarında sırayla ne olur, ekranda ne görünür?
Derleyici programın tamamını okur ve söz dizimini denetler. Henüz hiçbir satır çalışmadı.
x / 0 söz dizimi kuralına uygundur; çeviri başarılı. 0'a bölme bir söz dizimi hatası değildir.
Çalıştırma başlar: satır 1 → Merhaba.
Bellekte x kutusuna 10 yazılır.
10 / 0 hesaplanamaz: çalışma zamanı hatası, program durur. Derleyici bu hatayı yakalayamadı.
Satır 4 hiç çalışmaz; "Son" yazılmaz. Önceki satırlar çoktan çalışmıştı.
yaz "Merhaba" x ← 10 yaz x / 0 yaz "Son"
Çoktan Seçmeli · Hata Türleri
Soru 7: Yanlış Bölen
Üç notun ortalaması hesaplanırken toplam yanlışlıkla 3 yerine 4'e bölünmüş. Program sorunsuz çalışıyor ama yanlış sonuç veriyor. Bu hangi hata türüdür?
B: Program derlenir ve çalışır, hata iletisi yoktur; ancak sonuç yanlıştır → mantık hatası. Bu tür hatalar ancak test edilerek (beklenen ve gerçek sonucu karşılaştırarak) bulunur.
Çoktan Seçmeli · Hata Türleri
Soru 8: Çalıştırmadan Önce Yakalanan Hata
Aşağıdaki hatalardan hangisi program hiç çalışmadan, derleme sırasında yakalanır?
A: Noktalı virgül eksikliği bir söz dizimi hatasıdır; derleyici satır numarasıyla bildirir ve program üretilmez. B çalışma zamanında (girdi 0 olunca), C ve D ise mantık hatası olarak ancak yanlış sonuçla fark edilir.
Çıktı Sorusu · Hata Türleri
Soru 9: Ortalama Neden 185?
Notları 70, 85 ve 90 olan öğrenci için bu sözde kod ne yazdırır? Beklenen sonuç nedir, hata nerededir?
n1 ← 70
n2 ← 85
n3 ← 90
ort ← n1 + n2 + n3 / 3
yaz "Ortalama: ", ortCevabı göster
Çıktı: Ortalama: 185 (beklenen 81.67)
- Bölme, toplamadan önce yapılır: yalnızca
n3 / 3= 30 hesaplanır. - 70 + 85 + 30 = 185.
- Program çalışır ve hata iletisi vermez: mantık hatası.
- Düzeltme:
ort ← (n1 + n2 + n3) / 3→ 245 / 3 ≈ 81.67.
Çoktan Seçmeli · Diller
Soru 10: Dil Düzeyi
Programlama dillerinin düzeyiyle ilgili hangisi doğrudur?
B: Assembly, makine komutlarının sembolik karşılığıdır; donanıma çok yakındır. Düzey bir kalite ölçüsü değil, soyutlama düzeyidir: yüksek düzeyli diller (Python, Java) problemi insanın ifade biçimine yakın yazdırır.
Çoktan Seçmeli · Diller
Soru 11: Paradigmalar
notlar = {70, 90, 80} dizisinin toplamı dört biçimde hesaplanıyor. Hangisi fonksiyonel yaklaşıma örnektir?
C: Fonksiyonel yaklaşım veriyi değiştirmeden dönüşümleri birleştirir; stream().sum() ara durum değişkeni tutmaz. A ve D durumu adım adım değiştiren buyurgan yaklaşımdır; B veri ve davranışı nesnede birleştiren nesne yönelimli yaklaşımdır. Java üçünü de destekler.
Adım Adım Çalıştırma · Problem Çözme
Soru 12: Alan ve Çevre Sözde Kodu
Girdi en = 3, boy = 4 iken sözde kod satır satır nasıl çalışır, ne yazdırır?
en = 3 okunur; bellekte "en" kutusuna yazılır.
boy = 4 okunur.
İki koşul da doğru → "ise" dalına girilir.
alan = 3 × 4 = 12.
Önce parantez: 3 + 4 = 7, sonra 2 × 7 = 14.
Metin ve değer yan yana yazılır.
Çevre yazılır.
"değilse" dalı bu çalıştırmada atlanır. Program biter.
oku en oku boy eğer en > 0 ve boy > 0 ise alan ← en × boy cevre ← 2 × (en + boy) yaz "Alan: ", alan yaz "Çevre: ", cevre değilse yaz "Geçersiz ölçü"
Çıktı Sorusu · Problem Çözme
Soru 13: Sınır Durumu Girdileri
Aynı sözde kod iki kez çalıştırılıyor: (a) en = 0, boy = 5 · (b) en = 5, boy = 2. Her çalıştırmanın çıktısı nedir?
oku en oku boy eğer en > 0 ve boy > 0 ise alan ← en × boy cevre ← 2 × (en + boy) yaz "Alan: ", alan yaz "Çevre: ", cevre değilse yaz "Geçersiz ölçü"
Cevabı göster
(a) Geçersiz ölçü
- 0 > 0 yanlıştır; "ve" ile bağlanan koşulun tamamı yanlış olur → değilse dalı. Alan ve çevre hiç hesaplanmaz.
(b)
Alan: 10 Çevre: 14
- 5 × 2 = 10 ve 2 × (5 + 2) = 14. Farklı dikdörtgenlerin çevresi aynı olabilir.
0 bir sınır durumudur: algoritma tasarlanırken elle denenmesi gereken özel girdilerdendir.
Çıktı Sorusu · Problem Çözme
Soru 14: Not Ortalaması Sözde Kodu
Sözde kod iki öğrenci için çalıştırılıyor: (a) 70, 85, 90 · (b) 40, 55, 62. Çıktılar nedir? (Ortalama 2 ondalık basamağa yuvarlanarak yazılır.)
oku n1, n2, n3 ort ← (n1 + n2 + n3) / 3 eğer ort ≥ 60 ise yaz "Geçti: ", ort değilse yaz "Kaldı: ", ort
Cevabı göster
(a) Geçti: 81.67 · (b) Kaldı: 52.33
- (a) Parantez önce: 70 + 85 + 90 = 245; 245 / 3 ≈ 81.67 ≥ 60 → "ise" dalı.
- (b) 40 + 55 + 62 = 157; 157 / 3 ≈ 52.33 < 60 → "değilse" dalı.
- Her çalıştırmada iki daldan yalnızca biri çalışır.
Çoktan Seçmeli · Yazılım Süreci
Soru 15: Geliştirme Aşamalarının Sırası
Yazılım geliştirme sürecinin aşamaları hangi seçenekte doğru sırada verilmiştir?
C: Önce kullanıcının ne istediği (gereksinim), sonra plan (tasarım; akış diyagramı burada), kodlama, test (hata varsa kodlamaya dönülür), dağıtım ve bakım. Bakımda gelen yeni istekler döngüyü yeniden başlatır.
Çoktan Seçmeli · Yazılım Süreci
Soru 16: Belirsiz Gereksinim
Müşteri ne istediğini tam anlatamıyor; "ekranları görünce karar veririm" diyor. Bu durumda en uygun ilk adım hangisidir?
D: Prototipleme belirsiz gereksinimi görünür kılar; prototip ürünün kendisi değildir. Şelalede aşamalar nettir ama geri dönüş maliyetlidir; çevik yaklaşım da kısa döngülerle geri bildirim alır.
Çoktan Seçmeli · Temel Yapılar
Soru 17: Uygun Veri Tipleri
Bir öğrenci için sırasıyla ad, not ortalaması ve dersi geçti mi? bilgileri hangi veri tiplerinde saklanmalıdır?
A: Ad karakterlerden oluşur (dizgi; Java'da String), ortalama 81.67 gibi kesirli olabilir (ondalık; double), geçti mi sorusu doğru/yanlış değer alır (mantıksal; boolean). Veri tipi değerin temsilini ve yapılabilecek işlemleri belirler.
Adım Adım Çalıştırma · Temel Yapılar
Soru 18: Geri Sayan Döngü
Bu sözde kod ekrana hangi sayıları yazar? Döngü kaç kez çalışır?
sayac = 10.
10 > 0 → sayac = 7 → yazılır.
7 > 0 → 4.
4 > 0 → 1.
1 > 0 hâlâ doğru → sayac = −2 ve −2 de yazılır: koşul yazmadan önce değil, tur başında denetlenir.
−2 > 0 yanlış → döngü biter. Toplam 4 tur.
Döngüden sonraki satır çalışır.
sayac ← 10 sayac > 0 iken tekrarla sayac ← sayac − 3 yaz sayac yaz "bitti"
Çıktı Sorusu · Temel Yapılar
Soru 19: Dizi ve İndis
İndisler 0'dan başlıyor (Java'daki gibi). Sözde kodun çıktısı nedir?
dizi ← [4, 8, 15, 16, 23] yaz dizi[2] yaz dizi[0] + dizi[4] yaz uzunluk(dizi)
Cevabı göster
15 27 5
dizi[2]: ilk öğe 0. indiste olduğu için 3. öğe → 15 (8 değil).dizi[0] + dizi[4]= 4 + 23 = 27: ilk ve son öğe.- 5 öğe vardır; son indis uzunluk − 1 = 4'tür.
dizi[5]istenseydi dizinin dışına çıkılırdı.
Adım Adım Çalıştırma · Temel Yapılar
Soru 20: Fonksiyon Çağrısı
Fonksiyon iki kez çağrılıyor. Her çağrıda x ne olur, ne döner ve ekrana ne yazılır?
Program fonksiyon tanımını atlar, 4. satırdan başlar: kare(3) çağrılır.
Yeni çağrı açılır; girdi x = 3. 3 × 3 = 9 döndürülür.
Çağrı biter, sonuç a'ya atanır: a = 9. kare'nin x'i artık yok.
Aynı fonksiyon farklı girdiyle: x = 4 → 16 döner.
b = 16.
9 + 16 = 25. Fonksiyon bir görevi adlandırır; tekrar tekrar kullanılabilir.
fonksiyon kare(x) döndür x × x son a ← kare(3) b ← kare(4) yaz a + b