Transcript Teorik Ders 3
Nöbetçi Kontrollü Döngü
• • Ortalama örneğini geliştirelim; Program çalıştırıldığında, kaç kişinin ortalamasının hesaplanacağını önceden bilmeden, sınıf ortalamasını bulacak bir program.
Öğrenci sayısı bilinmemekte Program nasıl sonlandırılacak?
Nöbetçi değer kullan.
Ayrıca sinyal ve ya işaretçi değer de denir.
‘Veri girişi sonunu.’ gösterir Kullanıcı nöbetçi değeri girdiğinde döngü biter.
Nöbetçi değer, kabul edilebilir herhangi bir giriş değeriyle karıştırılmayacak biçimde seçilmelidir.( Bu örnek için -1)
Sınıf Ortalaması Problemini Nöbetçi Kontrollü Döngülerle Çözen 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
} { #include
Yuvalı Kontrol Yapıları
• • Bir kontrol yapısını diğerinin içine yuvalamak.
Problem Bir kursun 10 öğrencinin test sonuçları(1=geçti, 2=kaldı) için bir listesi vardır.
Sonuçları analiz eden bir program yazınız Eğer 8’den fazla öğrenci geçtiyse ‘yüksek başarı’ mesajını yazdırmanızı istemektedirler.
• Göz önünde bulundurulmalıdır ki; Program 10 test sonucu işleyecektir. Sayıcı kontrollü döngü kullanılacaktır.
İki Sayıcı kullanılacaktır. Bunlardan biri sınavı geçen öğrenci sayısını, diğeri kalan öğrenci sayısını saymak için. Her test sonucu 1 ya da 2 gibi bir sayıdır. Eğer sayı 1 değilse, bunun 2 olduğunu varsaya biliriz.
#include
passes = passes + 1; else failures = failures + 1; student = student + 1; } printf( "Gecenler: %d\n", passes ); printf( "Kalanlar: %d\n", failures ); } if ( passes > 8 ) printf( "Yuksek Basari\n" ); getch(); return 0;
Atama Operatörleri
Atama Operatörü Örnek Deyim Açıklama Atar
Varsaylım ki:
int c = 3
,
d = 5
,
e = 4
,
f = 6
,
g = 12
;
+= c += 7 C = c + 7 -= *= /= %= d -= 4 e *= 5 f /= g %= 3 9 D = d - 4 E = e * 5 F = f / G = g % 3 9 10 to c 1 to d 20 to e 2 to f 3 to g
Artırma ve Azaltma Operatörleri
Operatör
++ ++ -- --
Örnek Deyim
++a a++ --b b--
Açıklama a
‘yı bir arttır ve
a
‘nın yeni değerini
a
‘nın içinde bulunduğu deyimde kullan
a
‘nın değerini
a
‘nın içinde bulunduğu deyimde kullan ve daha sonra
a
‘yı bir arttır.
b
‘yi bir azalt ve
b
‘nin yeni değerini
b
‘nin içinde bulunduğu deyimde kullan
b
‘nin değerini
b
‘nin içinde bulunduğu deyimde kullan ve daha sonra b’yi bir azalt
{ #include
Hatırlatma: Şu ana kadar anlatılan operatörlerin öncelikleri
Operatör İşleyiş Tip
() + - (tip) * / % ++ - Soldan sağa Sağdan sola Soldan sağa parantez tekli çarpım + == != = += -= *= /= %= Soldan sağa Soldan sağa Soldan sağa Sağdan sola Sağdan sola toplam karşılaştırma eşitlik koşul atama
for Döngü Yapısı
• Döngüler için kullanıldığında formatı For(ilk değer ataması, döngü koşulu, artırma deyimi) • Örneğin; int counter; for(counter = 1; counter <= 10; counter++ ) printf( "%d\n", counter ); Tam sayıları 1’den 10 ‘ a kadar yazdırma.
for Döngü Yapısı
• • Çoğu durumda for yapısı while yapısı biçimine çevrilebilir.
İlk değer ataması; while( döngü koşulu){ ifade; artırma; } İlk değer ve artırma Sıklıkla, virgüllerle ayrılmış listelerdir.
Örneğin; int i , j; for (i = 0, j = 0; j + i <= 10; j++, i++) printf( "%d\n", j + i );
Tipik Bir for Yapısı
Tipik Bir for Döngüsünün Akış Diyagramı
for Döngü Yapısıyla İlgili Notlar ve Gözlemler
• İlk değer verme , döngü devam koşulu ve artırma deyimleri aritmetik operatörler içerebilir. Örneğin; . Eğer x = 2 ve y = 10 ise for ( j = x; j <= 4 * x * y; j += y / x ) • eşdeğerdir for ( j = 2; j <= 80; j += 5 ) ile.
Artırma negatif olabilir.
• Eğer döngü devam koşulu en baştan yanlışsa, for yapısının gövdesi en baştan atlanır.
• Kontrol değişkeni, döngü gövdesinde sıklıkla yazdırılır ya da işleme sokulur ancak bu gerekli değildir.
for Yapısı İle İlgili Örnekler
• 1. Kontrol değişkenini 1‘den 100‘e kadar birer birer arttır. •
for ( i = 1; i <= 100; i++)
2. Kontrol değişkenini 100‘den 1‘e kadar birer birer azalt. •
for ( i = 100; i >= 1; i--)
3. Kontrol değişkenini 7‘den 77‘ye kadar yedi
ş er yedi ş
er arttır. •
for ( i = 7; i <= 77 ; i += 7)
4. Kontrol değişkenini 20‘den 2‘ye kadar iki
ş er iki ş
er azalt. •
for ( i = 20; i >= 2 ;i -= 2)
5. Kontrol değişkenini 2, 5, 8, 11, 14, 17, 20 değerlerini alacak biçimde değiştir. •
for ( j = 2; j <=20; j += 3)
6. Kontrol değişkenini 99, 88, 77, 66, 55, 44, 33, 22, 11, 0 değerlerini alacak biçimde değiştir.
for ( j = 99; j >= 0 ;j -= 11)
#include
#include
pow
fonksiyonu ilk argümanın, ikinci argümanına göre kuvvetini hesaplar.
printf( "%4s%21s\n", "Yil", "Depozito Miktari" ); for ( year = 1; year <= 10; year++ ) { amount = principal * pow( 1.0 + rate, year ); printf( "%4d%21.2lf\n", year, amount ); } getch(); return 0; }
Bir kişi $1000’nı %5 faizle bankaya yatırmıştır. Bütün faizin hesaptaki paraya eklendiğini düşünerek 10 yıl boyunca, her yılsonunda hesapta birikecek parayı hesaplayıp yazdırınız. a = p (1 + r)^n
a: n yıl sonra hesapta birikecek miktar p: ilk yatırılan miktar n: yıl sayısı r: faiz oranı
switch Çoklu Seçim Yapısı
• switch Bir değişken ya da bir ifadenin ayrı ayır sabitlerle karşılaştırılması ve buna bağlı olarak farklı işlemlerin yapılması gibi bir dizi seçimin yer aldığı durumlarda kullanılır.
Format case ve tercihe bağlı default kısımlarında oluşur.
switch ( ifade ){ case '1': actions case '2': actions } default: actions break; yapıdan çıkmak için
switch Çoklu Seçim Yapısı
} #include
do/while Döngü Yapısı
• do/while döngü yapısı while yapısına oldukça benzer.
Döngü devam koşulu, döngünün gövdesi çalışdıktan sonra kontrol edilir.
Bu sebepten, döngü gövdesi en az bir kez çalışır.
Format: do { İfade; } while ( condition );
do/while Döngü Yapısı ve Akış Diyagramı
• Örnek (counter = 1): do { printf( "%d ", counter ); } while (++counter <= 10); 1’den 10’a kadar tamsayıları yazar.
#include
break ve continue ifadeleri
• • break while,for,do/while ve switch ile kullanıldığında o yapıdan çıkış sağlar.
Program yapıdan sonraki ilk ifadeyi çağırarak devam eder.
En genel kullanımı bir döngüden istenen anda çıkmak ve döngünün belli bir kısmandan çıkmaktır.
continue while,for ve do/while yapıları içinde çalıştığında döngü gövdesinin kalan kısmı atlanır.
while ve do/while yapılarında döngü koşulu hemen kontrol edilir.
for yapısında artırma deyimi çalıştırılır daha sonra ise döngü koşulu kontrol edilir.
{ #include
Mantık Operatörleri
• • • • && ( mantıksal VE) İki koşulda true ise true döndürür.
|| ( mantıksal VEYA) İki koşuldan biri true ise true döndürür.
!
( mantıksal DEĞIL) Koşul yanlış olduğunda izlenecek yollu belirler.
Döngülerde ki koşul durumları; İfade Sonuç true && false true || false !false
false true true