85 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Şimdi başka bir problem üzerinde çalışalım. Algoritmamızı yine sahte kod ve yukarıdan aşağıya adımsal iyileştirmeyle oluşturacağız ve bu algoritmanın C kodunu yazacağız. Daha önceden kontrol yapılarının birbirleri üzerine (bir dizide) eklenebildiğini görmüştük. Şimdi ise C de kontrol yapılarını, yapısal bir biçimde birleştirebilecek diğer yolu çalışacağız. Bu yola, bir kontrol yapısını diğeri içine yuvalamak denir.
86 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Aşağıdaki problemi inceleyiniz: Bir kurs öğrencilerini bir lisans sınavına hazırlamaktadır. Geçen sene, bu kursu tamamlayan öğrencilerden bir kısmı lisans sınavına girmiştir. Kurs yöneticileri, öğrencilerin sınavdaki başarılarını öğrenmek istemektedir ve size sonuçları özetleyen bir program yazmanızı söylemişlerdir. Bu sınava giren 10 öğrencinin isimlerinin yer aldığı bir liste size verilmiştir. Bu listede eğer öğrenci sınavı geçmişse isminin yanında 1, eğer sınavdan kalmışsa isminin yanında 2 yazmaktadır.
87 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Programınızın sınav sonuçlarını aşağıdaki şekilde analiz etmesi gerekmektedir. Sizden; Her sınav sonucunu girmenizi ve program başka bir sınav sonucunu alacağında ekrana Sonucu girin mesajını yazdırmanızı Her tipte sınav sonucunun sayısını bulmanızı Kaç öğrencinin sınavı geçtiğini ve kaçının kaldığını özetleyen bir gösterge hazırlamanızı Eğer 8 den fazla öğrenci sınavı geçtiyse yüksek başarı mesajını yazdırmanızı istemektedirler.
88 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Problemi dikkatlice okuduktan sonra aşağıdaki gözlemleri yaparız: Program 10 test sonucunu işleyecektir. Sayıcı kontrollü döngü kullanılacaktır. Her test sonucu 1 ya da 2 gibi bir sayıdır. Program yeni bir sonuç okuduğunda bu sonucun 1 mi yoksa 2 mi olduğuna karar vermelidir. Algoritmamızda 1 olması durumunu inceleyeceğiz. Eğer sayı 1 değilse 2 olduğunu düşüneceğiz. ( Bu ünitenin sonunda bu kabullenmeye benzer bir dizi alıştırma bulacaksınız ) İki sayıcı kullanılacaktır. Bunlardan birincisi sınavı geçen öğrenci sayısını, ikincisi ise sınavdan kalan öğrenci sayısını saymak için kullanılacaktır. Program tüm sonuçları işledikten sonra, sınavı geçen öğrenci sayısının 8 den fazla olup olmadığına karar vermelidir.
89 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Şimdi yukarıdan aşağıya adımsal iyileştirmeyi kullanalım. En başa aşağıdaki sahte kodu yazalım: Sınav sonuçlarını incele ve yüksek başarı durumunun gerçekleşip gerçekleşmediğini belirle. Bu kodun tüm programın bir özeti olduğunu tekrar vurgulamak istiyoruz. Ancak bu kodu C programına çevrilebilecek kadar detaylandırabilmek için birkaç iyileştirme yapmalıyız. İlk iyileştirmemiz şu şekildedir: Değişkenleri tanımla, 10 notu gir ve kalanlarla geçenleri say, Sınav sonuçlarının özetini yazdır ve yüksek başarı sağlandı mı karar ver.
90 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Bu iyileştirme sonucunda da tüm programın bütünü anlatılmış olsa bile hala iyileştirmeler yapmalıyız. Geçen ve kalanları kaydetmek için sayıcılara, döngü sürecini kontrol etmek için bir başka sayıcıya ve kullanıcının gireceği veriyi tutacağımız bir değişkene ihtiyacımız vardır.bu sebepten, Değişkenleri tanımla sahte kodunu Geçenler değişkenini sıfıra ata. Kalanlar değişkenini sıfıra ata Öğrenci değişkenini bire ata biçiminde iyileştirebiliriz.
91 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Bu iyileştirme sonucunda da tüm programın bütünü anlatılmış olsa bile hala iyileştirmeler yapmalıyız. Geçen ve kalanları kaydetmek için sayıcılara, döngü sürecini kontrol etmek için bir başka sayıcıya ve kullanıcının gireceği veriyi tutacağımız bir değişkene ihtiyacımız vardır.bu sebepten, Değişkenleri tanımla sahte kodunu Geçenler değişkenini sıfıra ata. Kalanlar değişkenini sıfıra ata Öğrenci değişkenini bire ata biçiminde iyileştirebiliriz.
92 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) On notu gir ve geçenlerle kalanları say sahte kodu, her sınavın sonucunu başarılı bir şekilde girebileceğimiz bir döngüye ihtiyaç duymaktadır. Burada, 10 adet sınav sonucu olduğunu kesin olarak bildiğimizden sayıcı kontrollü döngü kullanabiliriz. Döngünün içinde (döngünün içine yuvalanmış), bir çiftli seçim yapısı kullanarak, sınav sonucunun geçer bir not ya da kalır bir not olduğuna karar verip uygun sayıcıları arttırırız. Sahte kodun iyileştirilmiş hali: Öğrenci sayıcısı 10 a eşit ya da 10 dan küçükken yeni sınav sonucunu al Eğer ( if ) öğrenci geçmişse Geçenlere bir ekle Aksi takdirde ( else ) Kalanlara bir ekle Boş satırların if/else kontrol yapısını açığa çıkartmak için konulduğuna dikkat ediniz. Böylelikle programın okunurluğu arttırılmıştır. Öğrenci sayıcısına bir ekle
93 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Sınav sonuçlarının özetini yazdır ve yüksek başarı sağlandı mı karar ver sahte kodunu aşağıdaki biçimde iyileştirebiliriz: Geçenlerin sayısını yazdır Kalanların sayısını yazdır Eğer(if) 8 den fazla öğrenci geçmişse Yüksek başarı yazdır.
94 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Gecenler değişkenini sıfıra ata. Kalanlar değişkenini sıfıra ata Öğrenci değişkenini bire ata Sınav sonuçları programı için iyileştirilmiş sahte kodun tamamı: Öğrenci sayıcısı 10 a eşit ya da 10 dan küçükken yeni sınav sonucunu al Eğer öğrenci geçmişse Geçenlere bir ekle Aksi takdirde Kalanlara bir ekle Öğrenci sayicisına bir ekle Gecenlerin sayısını yazdır Kalanların sayısını yazdır Eğer 8 den fazla öğrenci geçmişse Yüksek başarı yazdır
95 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Gecenler değişkenini sıfıra ata. Kalanlar değişkenini sıfıra ata Öğrenci değişkenini bire ata Sınav sonuçları programı için iyileştirilmiş sahte kodun tamamı: Öğrenci sayıcısı 10 a eşit ya da 10 dan küçükken yeni sınav sonucunu al Eğer öğrenci geçmişse Geçenlere bir ekle Aksi takdirde Kalanlara bir ekle Öğrenci sayicisına bir ekle Gecenlerin sayısını yazdır Kalanların sayısını yazdır Eğer 8 den fazla öğrenci geçmişse Yüksek başarı yazdır B03_Uygulama10 Yanda sahte kodu verilen problemle ilgili olarak, önceki uygulama programlarınızı da göz önüne alarak uygun çıktılar veren bir program yazınız.