2024-2025 9.Sınıf Bilgisayar Bilimi Dersi 1.Dönem 1.Yazılı Soruları (2023-12-22)
-
Programcı neden yerel ve global değişkenleri kullanır? Aralarındaki fark nedir?
-
Verilen bir problemi çözmek için hangi türde modüller kullanılabilir? Modül bağımlılığı nasıl minimize edilir?
-
Verilen problem için kullanılacak algoritma ve akış şeması nedir?
-
Etkileşim çizelgesi nasıl oluşturulur ve bu problem için nasıl kullanılır?
-
Verilen problem için seçilen çözüm seçeneğini açıklayınız.
-
Klavyeden girilen üç sayı ile bir üçgen çizilip çizilemeyeceğini, çizilebiliyorsa türünü, çevresini ve alanını hesaplayan bir algoritma nasıl yazılır?
-
Problem çözme sürecinde doğrusal mantık yapısının nasıl kullanıldığını açıklayınız.
-
Karar yapılarının bilgisayar programlamasındaki önemi nedir?
-
İç içe karar yapıları neden gereklidir?
-
Verilen bir öğrencinin puan ortalamasına göre belge alma durumunu kontrol eden bir programın iç içe karar yapıları kullanarak tasarlanması nasıl olur?
-
Pozitif mantık ve negatif mantık arasındaki temel farklar nelerdir?
-
Karar yapılarının olmaması durumunda bir bilgisayar programının sınırlamaları neler olabilir?
-
Düz mantık yapısının program geliştirme sürecindeki avantajları nelerdir?
-
Düz mantık yapısının sınırlamaları nelerdir?
-
Düz mantık yapısının sınırlamalarını göz önünde bulundurarak, verilen tiyatro bilet fiyatı örneğini pozitif mantık kullanarak nasıl geliştirirsiniz?
-
While/While End döngü yapısının avantajları ve dezavantajları nelerdir?
-
While/While End döngü yapısı ile ilgili bir örnekleme yaparak, bir döngü yapısının nasıl oluşturulduğunu açıklayınız.
-
Repeat/Until ve While/While End döngü yapıları arasındaki temel farklar nelerdir? Hangi durumda hangi döngü yapısı tercih edilmelidir?
-
Repeat/Until döngü yapısının bir örneği üzerinden nasıl çalıştığını açıklayınız. Verdiğiniz örnekteki koşulun neden bu yapıyla kullanıldığını belirtiniz.
-
Otomatik sayaç döngüsü kullanarak bir program örneği veriniz. Bu programda hangi türde bir problem çözülmektedir? Algoritma ve akış şemasını oluşturarak açıklayınız.
-
Bir sınıftaki öğrencilerin yaşlarına göre "Merhaba Genç" ya da "Yaşınız 18'den büyük." mesajı veren bir programın algoritmasını yazınız.
-
Kullanıcının girdiği 10 sayı için 2'ye, 3'e ve 5'e bölünebilen sayıların adedini ve toplamlarını bulan bir programın algoritmasını yazınız.
-
Kullanıcının girdiği şifrenin belirli kriterlere uyup uymadığını kontrol eden bir programın algoritmasını yazınız.
-
Bir cümle içinde belirli bir kelimenin geçip geçmediğini arayan bir programın algoritmasını yazınız.
-
Öğrencilerin sırayla sayıldığı bir durumda, her üçüncü öğrencinin elenmesi sonucunda en sona hangi öğrenci kalır?
CEVAP ANAHTARI
- Programcılar yerel ve global değişkenleri kullanarak kodun kapsamlarını belirler ve bağlılık oluştururlar. Yerel değişkenler sadece tanımlandıkları modül içinde kullanılabilirken, global değişkenler bütün modüller tarafından tanınır ve kullanılabilir.
- Verilen bir problemi çözmek için kontrol, başlama, süreç ve bitiş modülleri kullanılabilir. Modül bağımlılığı, modüller arasında düşük birleşim ve yüksek bağlılık sağlayacak şekilde minimize edilmelidir.
- Doğrusal mantık yapısı kullanılarak, kullanıcının girdiği verilere dayalı faiz hesaplamasını gerçekleştiren bir program tasarlanabilir. Algoritma ve akış şeması genel olarak şu şekildedir: # Algoritma 1. Anapara, faiz yüzdesi, yıl ve süre bilgilerini kullanıcıdan al. 2. Faiz hesaplaması için kullanılan formülü kullanarak toplam miktarı hesapla. 3. Elde edilen sonucu ekrana yazdır. # Akış Şeması [Paralel Çizgiler] -> [Girdi Okuma] -> [Faiz Hesaplama] -> [Sonucu Yazdır] -> [Döndür]
- Etkileşim çizelgesi oluşturmak için öncelikle problemi daha küçük parçalara bölmeli ve bu parçalar arasındaki etkileşimi belirlemelisiniz. Verilen problemde etkileşim çizelgesi şu şekilde olabilir: [Kullanıcıdan Veri Al] -> [Faiz Hesapla] -> [Sonuçu Yazdır]
- Verilen problem için seçilen çözüm seçeneği şu şekildedir: Bütün verileri değişken olarak tanımla ve girdi olarak al. Anapara ve faiz yüzdesini sabit olarak tanımla. Her bir seferde bir banka için hesaplama yap.
- # Algoritma 1. Klavyeden üç sayıyı al: a, b, c 2. Üçgen çizilebilir mi kontrol et (a + b > c, a + c > b, b + c > a) 3. Eğer üçgen çizilebiliyorsa: 3.1. Üçgenin türünü belirle (eşkenar, ikizkenar, çeşitkenar) 3.2. Üçgenin çevresini hesapla: cevre = a + b + c 3.3. Üçgenin alanını hesapla: s = (a + b + c) / 2 alan = √(s * (s - a) * (s - b) * (s - c)) 3.4. Sonuçları ekrana yazdır 4. Eğer üçgen çizilemiyorsa, "Üçgen çizilemez" mesajını ekrana yazdır. # Akış Şeması [Paralel Çizgiler] -> [Üçgen Çizilebilir mi?] -> [Evet] -> [Üçgen Türü Belirle] -> [Çevre ve Alan Hesapla] -> [Sonuçları Yazdır] -> [Döndür] -> [Hayır] -> [Uyarı Mesajı Yazdır] -> [Döndür]
- Doğrusal mantık yapısı, bir algoritmanın başından sonuna kadar sıralı bir şekilde işlemesini ifade eder. Verilen problemde doğrusal mantık şu şekilde kullanılır: Kullanıcıdan anapara, faiz yüzdesi, yıl ve süre bilgileri alınır. Bu bilgiler kullanılarak faiz hesaplaması yapılır. Elde edilen sonuç ekrana yazdırılır. Bu adımlar, programın adım adım ilerleyerek belirli bir problemi çözme sürecini temsil eder.
- Karar yapıları, bilgisayar programlamasında çok önemli bir rol oynar. Bilgisayar programlarının daha karmaşık ve esnek hale gelmesini sağlarlar. Eğer karar yapıları olmasaydı, programlar sadece belirli bir sırayla adımları takip eden basit hesap makineleri olurdu. Karar yapıları, programın farklı durumlar altında farklı eylemler gerçekleştirmesine ve kullanıcı girdilerine uygun tepkiler vermesine olanak tanır. Bu nedenle, bilgisayarlar karar yapıları sayesinde daha akıllı ve çeşitli görevleri yerine getirebilen araçlar haline gelir.
- İç içe karar yapıları, programcılara daha karmaşık ve özelleştirilmiş kontrol akışları oluşturma imkanı sağlar. Bir durumun başka bir duruma bağlı olarak değerlendirilmesi gerektiğinde, iç içe karar yapıları kullanmak daha mantıklı ve okunabilir bir kod üretmeye yardımcı olur. Ayrıca, iç içe karar yapıları, bir durumun birden çok koşula bağlı olarak değerlendirilmesi gerektiğinde kullanışlıdır.
- # Algoritma If ortalama >= 50 Then Doğru If ortalama >= 85 Then durum = “Takdir Belgesi” Else If ortalama >= 70 Then durum = “Teşekkür Belgesi” Else durum = “Belge Yok” End If End If Else Yanlış durum = “Kaldı” End If # Akış Şeması If ortalama >= 50 Doğru If ortalama >= 85 durum = “Takdir Belgesi” Else If ortalama >= 70 durum = “Teşekkür Belgesi” Else durum = “Belge Yok” End If End If Else Yanlış durum = “Kaldı” End If
- Pozitif mantık ve negatif mantık arasındaki temel farklar şunlardır: Pozitif Mantık: Pozitif mantıkta, koşul doğru olduğunda belirli bir eylem gerçekleştirilir. Yani, "doğru" durumunda belirli bir şartın yerine getirilmesi beklenir. "Doğru" durumu gerçekleşmediğinde ise başka bir duruma geçilir. Negatif Mantık: Negatif mantıkta ise, koşul yanlış olduğunda belirli bir eylem gerçekleştirilir. Yani, "yanlış" durumunda belirli bir şartın yerine getirilmesi beklenir. "Yanlış" durumu gerçekleşmediğinde ise başka bir duruma geçilir.
- Karar yapılarının olmaması durumunda bir bilgisayar programının sınırlamaları şunlar olabilir: Sabit Akış: Program, sırasıyla belirlenmiş adımları takip eder ve herhangi bir koşula göre değişiklik yapamaz. Bu durumda programlar sadece belirli bir işlevi tekrar eden basit hesap makineleri olur. Esneklik Eksikliği: Programlar, farklı durumlara uygun tepkiler verme yeteneğine sahip olmaz. Kullanıcı girdilerine veya değişen koşullara göre dinamik olarak davranamazlar. Karmaşık Senaryoları Ele Alamama: Programlar, karmaşık durumları değerlendiremez ve buna göre çeşitli eylemler gerçekleştiremez. Bu, daha geniş ve karmaşık problemleri çözmekte sınırlamalara neden olur. Kullanıcı Etkileşimi Zayıflığı: Kullanıcıyla etkileşimde bulunma ve kullanıcı girdilerine göre yönlendirme yeteneği kısıtlanır. Bu da programların genel kullanıcı deneyimini olumsuz etkiler. Adaptasyon Güçsüzlüğü: Programlar, değişen koşullara uyum sağlayamaz ve yeni şartlara göre kendilerini otomatik olarak güncelleyemezler.
- Düz mantık yapısının program geliştirme sürecindeki avantajları şunlar olabilir: Basitlik: Düz mantık yapısı, koşulların sırasıyla test edildiği basit bir yapı sunar. Bu, programcılar için anlaşılması kolay ve basit algoritmaların geliştirilmesini sağlar. Makine Dostuluğu: Düz mantık yapısı, bilgisayarın doğrusal bir şekilde çalışmasına daha uygun olabilir. Her durumun sırasıyla test edilmesi, bilgisayarın adım adım talimatları izleyerek işlemesine olanak tanır. Belirgin Kontrol Akışı: Programın kontrol akışı, her durumun belirli bir sırayla işlenmesi nedeniyle belirgin ve öngörülebilirdir. Bu, programın davranışının kolayca takip edilmesini sağlar. İlişkisiz Durumlar İçin Uygundur: Birbiriyle ilişkisi olmayan durumlar veya durumlar arasında geçişler gerektiren senaryolar için uygundur. Her durumun bağımsız olarak test edilmesi avantajlı olabilir.
- Düz mantık yapısının bazı sınırlamaları şunlar olabilir: Uzun Süreli İşlemler: Düz mantık yapısı, bütün koşulların sırasıyla test edilmesi nedeniyle uzun süreli işlemleri zorlayabilir. Programın her durumu kontrol etmesi, programın performansını olumsuz etkileyebilir. Karmaşık Senaryolar İçin Uygun Değil: Programın içerdiği senaryolar çok karmaşık ve birbirine bağlıysa, düz mantık yapısı yetersiz kalabilir. İlişkili durumları ele almak zor olabilir. Gereksiz Kontroller: Düz mantık yapısında, bir durum doğru olsa bile program, sırasıyla diğer durumları kontrol eder. Bu, gereksiz kontrollerin yapılmasına ve performans kaybına neden olabilir. Esneklik Eksikliği: Düz mantık yapısı, belirli bir sırayla adımları takip eder ve belirgin bir kontrol akışına sahiptir. Bu nedenle, esneklik ve dinamizm konusunda sınırlamaları vardır.
- Düz mantık yapısının sınırlamalarını göz önünde bulundurarak, verilen tiyatro bilet fiyatı örneğini pozitif mantık kullanarak nasıl geliştirirsiniz?antık yapısının sınırlamalarını göz önünde bulundurarak, verilen tiyatro bilet fiyatı örneğini pozitif mantık kullanarak nasıl geliştirirsiniz?
- Avantajlar: Esneklik: While/While End döngü yapısı, tekrarlanan işlemleri bir koşula bağlı olarak esnek bir şekilde gerçekleştirmeyi sağlar. Koşul doğru olduğu sürece döngü devam eder. Anlaşılırlık: Doğru bir şekilde kullanıldığında, bu döngü yapısı algoritmanın okunabilirliğini artırabilir. Girinti ve uygun biçimlendirme ile kodun anlaşılması kolaylaşır. İleriye Dönük Kontrol: Koşulun döngü başında kontrol edilmesi, döngünün başlamadan önce belirli bir durumu kontrol etme ve işlem yapma olanağı sağlar. Dezavantajlar: Sonsuz Döngü Riski: Koşulun yanlış olmaması durumunda döngü sonsuz bir şekilde devam edebilir. Bu durum, programın istenmeyen bir şekilde çalışmasına neden olabilir. Performans: Döngülerin sürekli olarak koşulu kontrol etmesi, büyük veri setleri veya uzun süreli işlemler için performans sorunlarına yol açabilir. Karmaşıklık: Karmaşık bir koşul kullanılması veya döngü içindeki işlemlerin anlaşılması zor olabilir. Bu durum, bakım ve geliştirme süreçlerini zorlaştırabilir.
- # Algoritma toplam = 0 sayac = 1 While sayac <= 5 toplam = toplam + sayac sayac = sayac + 1 While End # Akış Şeması [1] --(Başla)---> [Koşul: sayac <= 5] ---- Evet ----> [İşlem: toplam = toplam + sayac] | | -----------(Hayır)-------------------<------------ | [2] --(Bitir)--> [Sonuç: toplam] Bu örnekte, 1'den 5'e kadar olan sayıların toplamını bulan bir döngü yapılmıştır. Sayac, döngü başında 1 olarak atanır ve her adımda bir artırılır. Koşul, sayac'ın 5'e eşit veya küçük olup olmadığını kontrol eder. Eğer koşul doğru ise, toplam değişkenine sayac eklenir ve sayac bir artırılır. Bu işlem, sayac 5'e eşit veya küçük olana kadar devam eder.
- Temel Farklar: Koşul Kontrol Zamanı: While/While End yapısında koşul döngünün başında kontrol edilirken, Repeat/Until yapısında koşul döngünün sonunda kontrol edilir. Çalışma Prensibi: While/While End, koşul doğru olduğu sürece çalışır; Repeat/Until, koşul yanlış olduğu sürece çalışır. Minimum Çalışma: Repeat/Until, koşul sağlandığında en az bir kez çalışır; While/While End, koşul sağlandığında hiç çalışmayabilir. Tercih Durumları: Repeat/Until: Döngü koşulu, en az bir kez çalışması gereken işlemleri içeriyorsa tercih edilir. Koşul, döngünün sonunda kontrol edildiği için bu durumu sağlar. While/While End: Döngünün koşula bağlı olarak sürekli çalışması gerekiyorsa ve koşulun başta kontrol edilmesi avantaj sağlıyorsa tercih edilir.
- # Algoritma toplam = 0 sayac = 1 Repeat kullanıcıdan_alınan_sayı = KullanıcıdanSayıAl() toplam = toplam + kullanıcıdan_alınan_sayı sayac = sayac + 1 Until sayac > 5 Bu algoritma, kullanıcının girdiği beş sayının toplamını bulmayı amaçlar. Repeat/Until döngü yapısı, sayac değişkeni 5'e eşit veya büyük olduğunda durana kadar işlemleri tekrarlar. Koşul olan "sayac > 5" durumu, kullanıcının beş giriş yaptığını kontrol eder. Döngü koşulu, döngünün sonunda kontrol edildiği için, en az bir kez çalışmasını ve kullanıcının beş giriş yapmasını garanti eder. Bu açıklama, Repeat/Until döngü yapısının nasıl çalıştığını anlamak ve koşulun kullanımını neden tercih ettiğimizi anlatmak için öğrencilere yardımcı olacaktır.
- # Problem: Kullanıcının belirli bir sayıya kadar olan çift sayıları bulma # Algoritma toplam = 0 sayaç = 0 hedef_sayı = 10 Loop-End: sayaç < hedef_sayı sayaç = sayaç + 2 toplam = toplam + sayaç Loop: sayaç = 0 # Akış Şeması [1] --(Başla)---> [Koşul: sayaç < hedef_sayı] ---- Evet ----> [İşlem: sayaç = sayaç + 2] | | | [İşlem: toplam = toplam + sayaç] | | | -----------(Hayır)-------------------<------------------------ | [2] --(Bitir)--> [Sonuç: toplam] Bu programda, kullanıcının belirli bir sayıya kadar olan çift sayıların toplamını bulan bir problem çözülmektedir. Otomatik sayaç döngüsü, belirli bir koşul sağlandığı sürece çift sayıları toplar.
- 1. Başla. 2. i = 0 3. Yaşı Oku; (yaş) 4. Eğer yaş < 19; Yazdır: "Merhaba Genç" değilse Yazdır: "Yaşınız 18'den büyük." 5. i = i + 1 6. Eğer i = 25; 7. adıma git; değilse 3. adıma git 7. Bitir.
- 1. Başla. 2. i = 1 3. 2_bölünebilen_adet = 0, 2_bölünebilen_toplam = 0 4. 3_bölünebilen_adet = 0, 3_bölünebilen_toplam = 0 5. 5_bölünebilen_adet = 0, 5_bölünebilen_toplam = 0 6. Tekrarla 10 kez: a. Sayı Gir; (sayı) b. Eğer sayı % 2 == 0; 2_bölünebilen_adet = 2_bölünebilen_adet + 1 2_bölünebilen_toplam = 2_bölünebilen_toplam + sayı c. Eğer sayı % 3 == 0; 3_bölünebilen_adet = 3_bölünebilen_adet + 1 3_bölünebilen_toplam = 3_bölünebilen_toplam + sayı d. Eğer sayı % 5 == 0; 5_bölünebilen_adet = 5_bölünebilen_adet + 1 5_bölünebilen_toplam = 5_bölünebilen_toplam + sayı 7. Bitir.
- 1. Başla. 2. Şifre Gir; (şifre) 3. En az 8 karakter kontrolü: Eğer ŞifreUzunluğu(şifre) >= 8; Yazdır: "Şifre en az 8 karakter içermektedir." değilse Yazdır: "Şifre en az 8 karakter içermelidir." 4. En az bir simge içermeyi kontrol et: Eğer ŞifreSimgeVarMı(şifre); Yazdır: "Şifre bir simge içermektedir." değilse Yazdır: "Şifre bir simge içermelidir." 5. En az bir sayı içermeyi kontrol et: Eğer ŞifreSayıVarMı(şifre); Yazdır: "Şifre bir sayı içermektedir." değilse Yazdır: "Şifre bir sayı içermelidir." 6. Bitir.
- 1. Başla. 2. Cümle Gir; (cümle) 3. Aranacak Kelime Gir; (aranacak_kelime) 4. Eğer İçeriyorMu(cümle, aranacak_kelime); Yazdır: "Cümle içinde belirtilen kelime geçmektedir." değilse Yazdır: "Cümle içinde belirtilen kelime geçmemektedir." 5. Bitir.
- 1. Başla. 2. Öğrenci_Sırala(); # Öğrencileri rastgele sırala 3. Eleman_Sayısı = 10 4. Her_Üçüncüyü_Ele(); 5. Son_Oyuncu = SonuncuyuBul(Eleman_Sayısı) 6. Bitir.