B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü)



Benzer belgeler
B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) Şimdi başka bir problem üzerinde çalışalım.

Şimdi başka bir problem üzerinde çalışalım.

BİLGİSAYAR PROGRAMLAMA

BİLGİSAYAR PROGRAMLAMA

Bölüm 3 Yapısal Programlama

Hafta 4 Döngü Yapıları

Algoritma ve Programlama: Karar Yapıları ve Döngüler

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-4 Döngü Yapıları. Yrd. Doç. Dr. Ümit ATİLA

ALGORİTMA VE PROGRAMLAMA I

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

C Programlama Dilininin Basit Yapıları

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Dr. Fatih AY Tel: fatihay@fatihay.net

YZM 2105 Nesneye Yönelik Programlama

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

Temel Giriş/Çıkış Fonksiyonları

Algoritmalar ve Programlama. Algoritma

BİL1001 Bilgisayar Bilimlerine Giriş 1

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

Program AkıĢ Kontrol Yapıları

PROGRAMLAMA DİLLERİ I

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Dr. Fatih AY Tel: fatihay@fatihay.net

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

BLM 111 ALGORİTMA VE PROGRAMLAMA I

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

ALGORİTMA VE PROGRAMLAMA I

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

ALGORİTMA VE PROGRAMLAMA II

Bölüm 4 C de Program Kontrolü

Fonksiyonlar (Altprogram)

ALGORİTMAYA GİRİŞ. Program: Belirli bir işi gerçekleştirmek için gerekli komutlar dizisi olarak tanımlanabilir.

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

MATLAB de. Programlama. Kontrol Yapıları. Döngü Yapıları. Doç. Dr. İrfan KAYMAZ Matlab Ders Notları

ALGORİTMA VE PROGRAMLAMA I

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I

Bireylerin yaşadığı çevreye uyum sağlaması durumunda ortaya çıkan olumsuzluklara PROBLEM denir.

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

Dr. Musa KILIÇ Öğretim Görevlisi

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA

HSancak Nesne Tabanlı Programlama I Ders Notları

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

C Konsol Giriş Çıkış Fonksiyonları

Python Programlama Dili

BİL-142 Bilgisayar Programlama II

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

C PROGRAMLAMA DİLİNE GİRİŞ

C Dersleri Bölüm 3 : Program akışı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

DÖNGÜLER BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA DENEY-4 FÖYÜ GİRİŞ LABORATUARI.

Print Komutu ile Değişkenleri Yazdırmak

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

BİLGİSAYAR PROGRAMLAMA MATLAB

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BİLGİSAYAR PROGRAMLAMA DERSİ

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

ÖRNEK 1: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır:

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Bigisayar Programlama

BÖLÜM 2: ALGORİTMALAR

Dr. Fatih AY Tel:

YUVARLAMA FONKSİYONLARI

Program Akış Kontrol Yapıları

ALGORİTMA VE PROGRAMLAMA II

Python Programlama Dili

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

Genel Programlama II

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Eln 1001 Bilgisayar Programlama I

GÜMÜŞHANE ÜNĐVERSĐTESĐ MÜHENDĐSLĐK VE DOĞA BĐLĐMLERĐ FAKÜLTESĐ ELEKTRĐK-ELEKTRONĐK MÜHENDĐSLĐĞĐ EEM 114 ALGORĐTMA TASARIMI VE PROGRAMLAMA DĐLLERĐ

3- Turbo Pascal Programlamada Giriş Çıkış İşlemleri

Genel Programlama II

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

Dr. Fatih AY Tel: fatihay@fatihay.net

Transkript:

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 59 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Algoritmaların nasıl geliştirildiğini gösterebilmek için sınıf ortalaması bulma probleminin değişik biçimlerini çözeceğiz. Aşağıdaki problemi inceleyelim. Bir sınıftaki 10 kişi bir sınava girmiştir. Notlar (0'dan 100'e kadar tamsayılar) size verilmiş ve bu sınavın sonucunda sınıf ortalamasını bulmanız istenmiştir. Sınıf ortalaması, notların toplamının sınıftaki öğrenci sayısına bölünmesiyle bulunur. Bu problemi bilgisayarda çözecek algoritma, bütün notların teker teker bilgisayara girilmesi, ortalama hesabının yapılması ve sonucun ekrana yazdırılması biçimindedir. Sahte kodları kullanalım ve yaptırılacak işleri listeleyip, onların hangi sırada kullanılacağını belirleyelim.

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 60 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Notları girmek için sayıcı kontrollü döngüyü kullanacağız. Bu teknik sayici adındaki bir değişken kullanarak, ifadelerin kaç kez tekrar edileceğini belirlememiz esasına dayanır. Bu örnekte döngü, sayıcı 10'u geçtiğinde sonlanmaktadır. Bu kısımda sahte kodlardan oluşan algoritmayı ve bu algoritmanın C ile yazılmış halini inceleyeceğiz. Diğer kısımda, sahte kodlardan oluşan algoritmaların nasıl geliştirildiğine bakacağız. Sayıcı kontrollü döngüler, genellikle belirli döngüler olarak adlandırılırlar. Çünkü döngü başlamadan önce döngünün kaçıncı tekrardan sonra sonlanacağını biliriz.

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 61 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Sayıcı Kontrollü Döngülerle sınıf ortalaması problemini çözen algoritmanın sahte kodlarla yazılmış biçimi : toplamı 0'a ata sayici 'yı 1'e ata sayici 10' eşit ya da 10'dan küçükken (while) Diğer notu gir. Girilen notu, toplama ekle sayici ya 1 ekle Sınıf ortalamasını, toplamı 10'a bölerek bul Sınıf ortalamasını yazdır.

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 62 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Algoritmada toplam ve sayici değişkenlerinden bahsedildiğine dikkat ediniz. toplam değişkeni, bir dizi değerin toplamını depolamak için kullanılacaktır. sayici değişkeni ise saymak amacıyla kullanılacaktır ( Burada kaç tane not girildiğini saymak için kullanacağız). Toplamları depolamak için kullanılan değişkenlere, programda kullanılmadan önce 0 atanmalıdır. Aksi takdirde, bu değişkeni depoladığımız hafıza konumunda daha önceden bulunan sayı da hesaplarımıza katılır. toplamı 0'a ata sayici 'yı 1'e ata sayici 10' eşit ya da 10'dan küçükken (while) Diğer notu gir. Girilen notu, toplama ekle sayici ya 1 ekle Sınıf ortalamasını, toplamı 10'a bölerek bul Sınıf ortalamasını yazdır.

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 63 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) sayici değişkenine genellikle kullanımına göre 0 ya da 1 atanır ( Her ikisi içinde örnekler göstereceğiz ). toplamı 0'a ata sayici 'yı 1'e ata İlk değeri verilmemiş değişkenler genellikle, çöp (garbage) değer ( hafıza konumunda bu değişken için en son depolanmış değer) içerirler. sayici 10' eşit ya da 10'dan küçükken (while) Diğer notu gir. Girilen notu, toplama ekle sayici ya 1 ekle Sınıf ortalamasını, toplamı 10'a bölerek bul Sınıf ortalamasını yazdır.

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 64 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) B03_Uygulama7 Aşağıda algoritması verilen problemle ilgili olarak, önceki uygulama programlarınızı da göz önüne alarak uygun çıktılar veren bir program yazınız. Not: Bu programda, sonuç olarak hesaplanan ortalamanın bir tamsayı olduğuna dikkat ediniz. Örneğin bu uygulama için notların toplamı 817 olsun. Bu durumda 10'a bölündüğünde ortalama değeri olarak 81.7 sonucu çıkar. İleride bu tür sayılarla (ondalıklı sayılarla) ilgili konuları da inceleyeceğiz. Algoritma: toplamı 0'a ata sayici 'yı 1'e ata sayici 10' eşit ya da 10'dan küçükken (while) Diğer notu gir. Girilen notu, toplama ekle sayici ya 1 ekle Sınıf ortalamasını, toplamı 10'a bölerek bul Sınıf ortalamasını yazdır.

B03.8 Algoritmalari Uygulamak : Durum 1 (Sayici Kontrollü Döngü) 65 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) B03_Uygulama8 Ekrana 10 tane öğrencinin yıl sonu notlarını girmesini isteyen bir programı yazdınız. Programınızda while döngü yapısını kullandınız. Eğer girilen not 100 den büyükse veya 0 dan küçükse hata mesajı yazdırın ve notu tekrar girmesini isteyin. En sonunda notların ortalamasını ekrana yazdırın. Programınızın yorum kısmına en başta bir sahte kod ekleyiniz. Programınızda "scanf " fonksiyonunu, "if/else" yapısını ve "while" döngüsünü kullanınız.

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 66 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Ortalama problemimizi genelleştirelim.aşağıdaki problemi inceleyiniz: Program çalıştırıldığında, kaç kişinin ortalamasının hesaplanacağını önceden bilmeden, sınıf ortalamasını bulacak bir program geliştirin. İlk sınıf ortalaması örneğinde, notların sayısını (10) başlangıçta biliyorduk. Bu örneğimizde ise kaç not girileceğini başlangıçta bilmiyoruz. Program, herhangi bir sayıda veriyi işlemek zorundadır. Bu durumda, programımız notların girişinin sonlandığına nasıl karar verecektir? Sınıf ortalamasını ne zaman hesaplayacağını ve yazdıracağını nasıl bilecektir?

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 67 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Ortalama problemimizi genelleştirelim.aşağıdaki problemi inceleyiniz: Program çalıştırıldığında, kaç kişinin ortalamasının hesaplanacağını önceden bilmeden, sınıf ortalamasını bulacak bir program geliştirin. İlk sınıf ortalaması örneğinde, notların sayısını (10) başlangıçta biliyorduk. Bu örneğimizde ise kaç not girileceğini başlangıçta bilmiyoruz. Program, herhangi bir sayıda veriyi işlemek zorundadır. Bu durumda, programımız notların girişinin sonlandığına nasıl karar verecektir? Sınıf ortalamasını ne zaman hesaplayacağını ve yazdıracağını nasıl bilecektir?

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 68 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Bu problemi çözmenin yolu, veri girişinin sonlandığını belirten bir özel değer, nöbetçi değer, ( sinyal değer ve ya işaretçi değer de denir) kullanmaktır. Kullanıcı, girmesi gereken tüm verileri girdikten sonra son değeri girdiğini belirten bir nöbetçi değer girer. Nöbetçi kontrollü döngüler, genelde belirsiz döngüler olarak adlandırılır çünkü döngü çalışmaya başlamadan önce döngünün kaç kez tekrarlanacağı bilinmemektedir. Nöbetçi değer, kabul edilebilir herhangi bir giriş değeriyle karıştırılmayacak biçimde seçilmelidir. Not değerleri genellikle pozitif tamsayılar olduğundan, -1 bu örnek için uygun bir nöbetçi değer olabilir. Böylece sınıf ortalama programı, 95,96,75,74,89 ve 1 gibi verileri işleyecektir. Program, sınıf ortalamasını 95,96,75,74 ve 89 notları için hesaplayacak ve ortalamayı yazdıracaktır.( -1 nöbetçi değerdir, bu sebepten ortalama hesabına katılmamalıdır.)

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 69 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Bu sınıf ortalama problemine, iyi yapısal programlar geliştirmek için ihtiyaç duyduğumuz bir teknikle yaklaşacağız. Bunun için ilk başta yapmak istediğimiz işin sahte kodunu yazalım: Toplam değişkenini sıfır olarak belirle Sayıcı değişkenini sıfır olarak belirle İlk notu gir Kullanıcı nöbetçi değeri girmediği sürece (while) bu notu o andaki değere ekle Sayıcıyı bir arttır Sıradaki notu al(bu değer nöbetçi değer olabilir) Eğer ( if ) sayıcı sıfıra eşit değilse Ortalamayı, notların toplamını sayıcıya bölerek hesapla Ortalamayı yazdır Aksi takdirde ( else ) Not girilmemiştir yazdır

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü), B03_Örnek1 70 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Sahte Kod Toplam değişkenini sıfır olarak belirle Sayıcı değişkenini sıfır olarak belirle İlk notu gir Kullanıcı nöbetçi değeri girmediği sürece (while) bu notu o andaki değere ekle Sayıcıyı bir arttır Sıradaki notu al(bu değer nöbetçi değer olabilir) Eğer ( if ) sayıcı sıfıra eşit değilse Ortalamayı, notların toplamını sayıcıya bölerek hesapla Ortalamayı yazdır Aksi takdirde ( else ) Not girilmemiştir yazdır

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü), B03_Örnek1 71 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Sahte Kod Toplam değişkenini sıfır olarak belirle Sayıcı değişkenini sıfır olarak belirle İlk notu gir Kullanıcı nöbetçi değeri girmediği sürece (while) bu notu o andaki değere ekle Sayıcıyı bir arttır Sıradaki notu al(bu değer nöbetçi değer olabilir) Eğer ( if ) sayıcı sıfıra eşit değilse Ortalamayı, notların toplamını sayıcıya bölerek hesapla Ortalamayı yazdır Aksi takdirde ( else ) Not girilmemiştir yazdır

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 72 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Ortalamaların hesabında her zaman tamsayı değerleri hesaplayamayız. Sıklıkla ortalama, 7.2 ya da 93.5 gibi ondalıklı bir kısım içeren bir değerdir. Bu değerler ondalıklı sayılar (floating point numbers) ya da gerçek sayılar olarak adlandırılır ve float veri tipi ile temsil edilirler. Hesaplamadaki ondalık kısmı tutabilmek için, ortalama değişkeni float tipinde bildirilmiştir.buna rağmen toplam/sayici işleminin sonucu bir tamsayıdır. Çünkü toplam ve sayici değişkenleri tamsayı değişkenleridir. İki tamsayıyı bölmek bize ondalık kısmı kaybolmuş bir tamsayı değeri verecektir. Hesaplama işlemi ilk önce yapıldığından, ondalık kısım, sonuç ortalama değişkenine atanmadan önce kaybolur.

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 73 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Tamsayı değerleriyle ondalık kısma sahip bir hesaplama yapabilmek için, işlemde kullanılacak değerleri geçici olarak ondalıklı sayılara çevirmeliyiz. C, bu işlemi gerçekleştirmek için dönüşüm (cast) operatörünü kullanır. Programın 28. satırındaki ifadesi bir dönüşüm operatörü, ( float ), içermektedir. Bu operatör sayesinde, bu operatörün operandı olan toplam değişkeninin geçici olarak, ondalıklı sayı biçiminde bir kopyası oluşturulur. toplam değişkeninde depolanan değer hala bir tamsayıdır. İşlem artık, ondalıklı bir sayının (toplam değişkeninin geçici olarak float tipine çevrilmiş kopyası), sayici değişkeni içinde tutulan tamsayı değerine bölünmesi haline gelmiştir.

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 74 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) C derleyicisi, operandlarının tipi aynı olan deyimleri hesaplayabilir. Operandların aynı tipte olmaları için, derleyici seçilen operandlara terfi ( promotion ) adı verilen bir işlem uygular. Örneğin, int ve float veri tipini içeren bir deyimde, ANSI standardı int operandlarının kopyalarının oluşturulmasını ve float tipine terfi ettirilmesini söylemektedir. Örneğimizde, sayici değişkenin kopyası oluşturulup, float tipine terfi edildikten sonra işlem yapılmakta ve ondalıklı biçimdeki sonuç ortalama değişkenine atanmaktadır. ANSI standardı, değişik tipteki operandlar arasındaki terfi işlemleri için bir takım kurallara sahiptir.

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 75 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) 29.satırdaki printf ifadesindeki dönüşüm belirteci ortalama değişkeninin değerini yazdırmak için %.2f biçiminde kullanılmıştır. f, ondalıklı bir değerin yazdırılacağını belirtmektedir..2 ise, değerin hangi duyarlık ile gösterileceğini belirtir ve gösterilecek değerin, noktadan sonra iki basamak içerebileceği anlamına gelir. Eğer %f dönüşüm belirteci tek başına kullanılırsa, değerleri 6 duyarlığında yazdırır. Yani noktadan sonra 6 basamak yazdırır. Bu, %.6f yazmak ile aynıdır. Ondalıklı sayılar duyarlık ile yazdırıldıklarında, yazdırılan değerin belirtilen sayıda ondalıklı kısım içerebilmesi için değer yuvarlanır. Hafızadaki değer değiştirilmez.

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 76 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Aşağıdaki ifadeler çalıştırıldığında, 3.45 ve 3.4 değerleri yazdırılır.

B03.9 Algoritmalari Uygulamak : Durum 2 (Nöbetçi Kontrollü Döngü) 77 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) B03_Uygulama9 Ekrana 22/7 (pi sayısı) gerçel sayısını en az 10 farklı formatta yazdıran bir program yazınız. Programınızda gösterilecek her bir format öncesinde açıklayıcı ifadeler bulunsun.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 78 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 79 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 80 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 81 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 82 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 83 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 84 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 85 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

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 86 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.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 87 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.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) 88 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.