Uygulama | Ders Ortalaması Hesaplama

Şimdi, öğrendiklerimizi daha güzel bir şekilde pekiştirmek adına küçük bir proje yapacağız. Bu proje, bir üniversite dersinin ortalamasını bulan ve kullanıcıya geçip geçmediğini belirten bir program olacak.

Başlamadan önce bilmemiz gereken birkaç şey var:

  1. Birçok üniversitede biri vize, biri de final olmak üzere iki sınav vardır.
  2. Vize notunun hesabı, 'vize * 0.40' şeklinde iken final notunun hesabı 'final * 0.60' şeklindedir. Ortalama ise bu iki işlemin sonucunun toplamıdır: '(vize * 0.40) + (final * 0.60)'
  3. Öğrencinin ortalaması 50'nin altında ise (50 dahil değil) o dersten kalır ve bu durumda bütünleme adı verilen bir sınava girer. Eğer ortalaması 50 ile 55 arasındaysa (50 ve 55 dahil) öğrenci, şartlı geçer. Eğer oralama 56 (56 dahil) ve üzerindeyse sınavdan geçer.

Şimdi, isterseniz bu programı aşağıdaki algoritmadan yararlanarak kendiniz yazmaya çalışın.

Algoritma

1. Başla

2. Kullanıcıdan vize notunu girmesini iste 

3. Eğer vize notu 0 ile 100 arasında değilse kullanıcıyı uyar

4. Eğer vize notu 0 ile 100 arasındaysa final notunu iste

5. Eğer final notu 0 ile 100 arasında değilse kullanıcıyı uyar

6. Eğer final notu 0 ile 100 arasındaysa vize ve final notlarını hesapla

7. Ortalamayı kıyasla ve geçip geçmediğini bildir

8. Son

Şimdi, yapmamız gereken ilk şey bir vize bir de final notunu tutacak olan iki değişken belirlemek. Bu deişkenlerin tipi float olmalıdır çünkü bir not tam sayı olmak zorunda değildir.

Yukarıda görüğünüz üzere iki değişken atadık fakat onlara bir değer vermedik çünkü bu değerleri kullanıcıdan alacağız.

Algoritmanın ikinci adımına baktığımızda kullanıcıdan vize notunu istememiz gerektiğini anlıyoruz; hemen yapalım.

Önceki konulardan da hatırlayacağınız gibi önce 'Print()' fonksiyonu ile kullanıcıdan istediğimiz şeyi söylüyoruz. Daha sonra 'Scanln()' ile '&' sembolünü unutmadan kullanıcının veriyi girmesini bekliyoruz.

Şimdi, kullanıcının girdiği vize notu üzerinde biraz kontrol sahibi olmamız lazım. Algoritmanın üçüncü maddesinde de belirtildiği üzere vize notu 0 ile 100 arasında olmalıdır. Örneğin kullanıcı 101 şeklinde bir not girerse onu uyarmamız gerekiyor.

Yukarıdaki görsele iyi bakmanızı istiyorum. Vize notunun 0 ile 100 arasında olması gerektiğini söylemiştik. Eğer öyleyse final notunu istesin, değilse de kullanıcıyı uyarsın istemiştik. Bu yüzden ilk kırmızı kutuya baktığınızda bu söylediğimizi mantık sembolleriyle yazdığımızı görürsünüz: 'if vize <= 100 && vize >= 0'. Bu kodun Türkçesi şudur: "Eğer 'vize' değişkeni 100'den küçük ya da ona eşitse ve 'vize' değişkeni 0'dan büyük ya da ona eşitse aşağıdaki kodları yürüt." Dolayısıyla kullanıcı artık vize notunu 0 ile 100 arasında girmek zorundadır.

Aksi koşulda yani 'else' kısmında da kullanıcıyı 'Lütfen geçerli bir vize notu giriniz.' şeklinde uyardık. Bu kısmın da söylediği şey tam olarak şudur: "Eğer 'if' kısmı çalışmazsa yani kullanıcı, vize notunu 0 ile 100 arasında yazmazsa onu uyar."

Çıktı kısmına da baktığımız zaman ilk kırmızı kutu içerisinde bizden istenen vize notunu '101' olarak girdik ve direkt olarak 'else' bölgesi çalıştı. Bir altındaki kutuya baktığınızda bu sefer notu '90' olarak yani 0 ile 100 arasında verdik ve bize hemen final notumuzu sordu.

Dikkatli olun; 'if' dedikten sonra final notunu istiyoruz ama bu istemeyi 'if'in içinde gerçekleştiriyoruz. Kapsama alanı kavramını unutmayın.

Şimdi, kullanıcıdan final notunu istedik ama final notunu da yanlış girme ihtimali var, öyle değil mi? İşte o yüzden, vize için yaptıklarımızı final için de yapmamız gerekiyor.

Yukarıdaki kırmızı kutunun içindekilere iyi bakın. Az önce de gösterdiğimiz gibi ilk önce vize notunu kontrol ettik sonra da final notunu istedik. Hemen altında, yeşil kutu içerisine bakarsanız bir 'if' bloğu daha olduğunu görürsünüz. Fakat lütfen dikkatli bakın; yeşil kutudaki if, bir önceki if'in içerisinde yani eğer ilk if koşulu gerçekleşmezse ikincisine bakılmayacaktır bile. Dolayısıyla vize notu geçersiz ise final notunu sormadan programı sonlandıracaktır. Lütfen deneyin.

Vize notu için yaptığımız kontrolün aynısını final için de yaptık sadece 'else' kısmındaki yazı biraz değişti. Eğer kullanıcıya net mesajlar vermezseniz kullanıcı ne olduğunu anlamayabilir ve sitenizi veya programınızı terk edebilir. Bu yüzden eğer vize notunu yanlış girerse vize ile ilgili, final notunu yanlış girerse de final ile ilgili bir mesaj verdik.

Kullanıcı, vize notunu doğru girerse final notu istenecek demiştik. Eğer final notunu da doğru girerse hemen ortalama hesabı yapılacaktır: 'ortalama := vize * 0.40 + final * 0.60'. Peki, size bir sorum var: "Ortalama isimli değişkeni neden üst tarafta, vize ile final değişkenlerini tanımladığımız yerde tanımlamadık da buradaki if içerisine tanımladık?". Çünkü ortalama değişkeninin sadece vize ile final değerleri doğru girildiğinde devreye girmesi gerekir. Elbette bu değişkeni diğer değişkenlerin yanında tanımlayabilirdik ama eğer öyle yapsaydık vize ve final değişkenleri gibi kendisi de tüm prorgam boyunca çalışacaktı. Bu yüzden kendisini sadece lazım olduğu yerde kullandık ki sırası gelince çalışsın ve programımızın verimliliğini ve güvenliğini düşürmesin.

Şimdi, gerekli koşullarımızı tanımladık. Sıra, bu ortalama hesabını kıyaslamada. Blogun başında belirttiğim yönergeleri hatırlayın.

Dikkat edin; kırmızı kutu içerisindeki if bloğu, en iç tarafta duruyor. Bunun nedenini tahmin edebiliyorsunuzdur; kendisi, gerekli koşullar sağlandıktan sonra çalışması gereken bir kod bloğudur. Eğer vize ve final notları doğru girilirse ortalama hesabı yapacak ve ortalamayı, yukarıda verdiğimiz yönergelere göre kıyaslayacak. 

Bu koddaki 'Printf()' fonksiyonunun ve içerisindeki '%v' sembolünün ne işe yaradığını artık biliyorsunuz. Lütfen incelemelerinizi yapın ve bunları tek tek, yazarak uygulayın.

Şimdi, isterseniz kodumuzu test edelim.

Lütfen incelemelerinizi yapıp kendiniz de uygulamasını yapın. Sevgiler.


Yayınlanma Tarihi: 2022-07-29 21:02:08

Son Düzenleme Tarihi: 2022-08-01 22:50:20