Ders 3 (18.03.2015) - Yrd.Doç.Dr.Fatih AY

Bilgisayar Programlama
Ders 3
Dr. Fatih AY
Tel: 0 388 225 22 55
[email protected]
www.fatihay.net
Atama Operatörleri
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
C, atama operatörlerini kısaltmak için bir çok atama
operatörüne sahiptir.
Atama
Operatörü
Örnek
Deyim
Açıklama
Atar
int c=3, d=5, e=4, f=6, g=12; olduğunu kabul ediniz.
+=
c+=7
c=c+7
c’ye 10’u
-=
d-=4
d=d-4
d’ye 1’i
*=
e*=5
e=e*5
e’ye 20’yi
/=
f/=3
f=f/3
f’ye 2’yi
%=
g%=9
g=g%9
g’ye 3’ü
2
Artırma ve Azaltma Operatörleri
Atama Operatörleri
C, tekli artırma ve azaltma operatörlerini kullanmamıza izin
verir.
Artırma ve Azaltma
Operatörleri
Operatör
Örnek
Deyim
Açıklama
 Program Kontrolü
++
++a
a’yı bir arttır ve a’nın yeni değerini a’nın
içinde bulunduğu deyimde kullan
++
a++
a‘nın değerini a’nın içinde bulunduğu
deyimde kullan ve daha sonra a’yı bir arttır.
--
--b
b’yi bir azalt ve b’nin yeni değerini b’nin
içinde bulunduğu deyimde kullan
--
b--
b’nin değerini b’nin içinde bulunduğu
deyimde kullan ve daha sonra b’yi bir azalt
 Döngüler
3
4
5
ALIŞTIRMALAR
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
a) if (yas>=65);
printf(“Yaş 65’ten büyük ya da 65’e eşittir\n”);
else
printf(“Yaş 65’ten küçüktür.\n”);
 Döngüler
b) int x=1, toplam;
“toplam=0;” ataması yapılmalı
while (x<=10) {
toplam+=x;
++x;
}
6
ALIŞTIRMALAR
Atama Operatörleri
 Program Kontrolü
c) While (x<=100) {
toplam+=x;
++x;
}
 Döngüler
d) while
Artırma ve Azaltma
Operatörleri
Koşul unutulmuş
printf(“%d\n”,y);
++y;
}
7
ALIŞTIRMALAR
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
a) x ve y’nin toplamını z’ye atayın ve bu işlemin yapılmasından sonra
x’i 1 arttırın.
z = x++ +y ;
b) carpim değişkenini *= operatörü kullanarak 2 ile çarpın.
carpim *= 2 ;
c) = ve * operatörlerini kullanarak, carpim değişkenini 2 ile çarpın.
carpim=carpim*2 ;
d) sayici değişkeninin değerinin 10’dan büyük olup olmadığını
kontrol edin. Eğer büyükse,“sayici 10’dan büyüktür” yazdırın.
if (sayici >10)
printf(“Sayıcı 10’dan büyüktür.\n”);
8
ALIŞTIRMALAR
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
e) x değişkeninin değerini 1 azaltın ve toplam değişkeninden çıkartın.
toplam -= --x ;
f) x değişkenini toplam değişkenine ekleyin ve x’in değerini 1 azaltın.
toplam += x-- ;
g) q, bolen’e bölündükten sonra kalanı hesaplayın ve sonucu q’ya
yazdırın. Bunu iki farklı yoldan yaptırın.
q %= bolen;
q = q % bolen;
h) 123.4567 değerini 2 basamak duyarlıkta yazdırın. Sonuç ne olur?
printf(“%.2f”,123.4567);
sonuç: 123.46
i) 3.14159 ondalıklı sayısını 3 basamak duyarlıkta yazdırın. Sonuç ne
olur?
printf(“%.3f”, 3.14159);
sonuç: 3.142
9
Program Kontrolü
for
yeni döngü kontrol yapıları
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
do/while
switch
çoklu seçim yapısı
break
kontrol yapılarından çıkış
continue
gövdenin bir kısmını atlayarak, diğer
kısmı çalıştırma
10
Döngülerin Temelleri
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
Döngü, döngü-devam koşulları doğru olarak kaldığı sürece
bilgisayarın çalıştırdığı bir grup emirdir. İki tür döngüden
bahsettik:
1- Sayıcı kontrollü döngüler (Belirli döngü)
 Döngüler
2- Nöbetçi kontrollü döngüler ( Belirsiz döngü)
11
Sayıcı Kontrollü Döngüler
Atama Operatörleri
Sayıcı kontrollü döngüler aşağıdakilere ihtiyaç duyar;
Artırma ve Azaltma
Operatörleri
1- Kontrol değişkeninin (ya da döngü sayıcının) ismine
 Program Kontrolü
2- Kontrol değişkeninin ilk değerine
 Döngüler
3- Kontrol değişkeninin döngü içinde arttırılarak ya da
azaltılarak değiştirilmesine
4- Kontrol değişkeninin son değerini kontrol edecek bir
koşula(döngünün devam edip etmeyeceğini belirlemek
için).
12
13
14
for Döngü Yapısı
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
for döngü yapısı, sayıcı kontrollü döngülerin bütün detaylarını
otomatik olarak kolaylıkla uygular. for yapısının gücünü
anlayabilmek için bir önceki örneği tekrar yazarsak…
15
16
17
Küçük Bir Hata
18
Sonuç
19
kontrol değişkeninin ismi
koşulun doğru olabileceği kontrol
değişkeninin son değeri
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
for anahtar kelimesi
for ( sayici = 1 ; sayici <= 7 ; + + sayici )
 Döngüler
kontrol değişkeninin ilk değeri
kontrol değişkeninin artırılması
döngü devam koşulu
20
for Döngü Yapısı İlgili Notlar ve Gözlemler
Atama Operatörleri
1. İlk değer verme, döngü devam koşulu ve artırma deyimleri
aritmetik operatörler içerebilir. Örneğin, x=2 ve y=10
olsun,
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
for (j=x; j<=4*x*y; j+=y/x)
ifadesi
for (j=2; j<=80; j+=5)
 Döngüler
ile eşdeğerdir.
2. Arttırma negatif olabilir (Bu durumda döngü değişkeni
azaltılır ve aşağıya doğru saydırır).
3. Eğer döngü devam koşulu en baştan yanlışsa, for yapısının
gövdesi tümden atlanır ve for yapısından sonraki ilk satır
çalıştırılır.
21
for Döngü Yapısı İlgili Notlar ve Gözlemler
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
4. Kontrol değişkeni, döngü gövdesinde sıklıkla yazdırılır ya da
işlemlere sokulur. Ancak genelde bu yapılmamalıdır. En
uygun olan, kontrol değişkenini döngüyü kontrol etmek için
kullanmak ve döngünün gövdesi içinde bir daha
kullanmamaktır.
5. for yapısı while yapısının akış grafiğine benzer bir biçimde
şekillendirilir. Örneğin,
for(sayici = 1; sayici <= 10; sayici++)
printf (“%d”,sayici);
gibi bir for yapısının akış grafiği:
22
Kontrol değişkeninin
ilk değerinin
ayarlanması
Atama Operatörleri
sayici=1
Artırma ve Azaltma
Operatörleri
doğru
 Program Kontrolü
sayici<=10
printf(“%d”,sayici);
 Döngüler
yanlış
Kontrol değişkeninin
ulaştığı son değere karar
verilmesi
Döngünün gövdesi (birkaç
ifadeden oluşabilir).
sayici++
Kontrol
değişkeninin
artırılması
Tipik bir for döngü yapısının akış grafiği
23
Örnekler
1.
Kontrol değişkenini 1’den 100’e kadar birer birer arttır.
for(i = 1; i <= 100; i ++)
Atama Operatörleri
2.
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
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)
 Döngüler
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 şekilde değiştir.
for(i = 2; i <= 20; i + =3)
6.
Kontrol değişkenini 99, 88, 77, ……, 22, 11, 0 değerlerini alacak biçimde değiştir.
for(i = 99; i >= 0; i -=11)
24
25
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
%4s%21s yazdırılacak değerlerin alan genişliklerini belirtir.
Buna göre “Yıl” ifadesi için 4 karakter, “Depozito miktarı”
ifadesi için 21 karakterlik alan ayrılmıştır.
Eğer yazdırılacak alan ayrılan alandan daha az yere sahipse
ifade otomatik olarak sağa dayalı yazdırılır. Sola dayalı
yazdırmak için % işareti ile alan genişliği arasına – işareti
konulmalıdır (Örneğin %-6d ve %-8s).
“miktar” değişkeninin değerini yazdırmak için %21.2f
dönüşüm belirteci kullanılmıştır. Burada da 21 değerin
yazdırılacağı alan genişliğini, 2 sayının duyarlılığını (sonrası
rakam sayısı) belirtir.
pow(x,y) fonksiyonu x’in y’inci kuvvetini hesaplar ( xy ).
26
Switch Çoklu Seçim Yapısı
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
if tekli-seçim ve if/else çiftli seçim yapılarının yanında C’de bir
değişken ya da ifadenin ayrı ayrı sabitlerle karşılaştırılması ve
buna bağlı olarak farklı işlemlerin yapılması gibi bir dizi seçim
yer alabilir. Bu tarz seçim yapıları switch çoklu-seçim yapısı ile
gerçekleştirilebilir.
27
28
29
while ((sayi=getchar())!= EOF)
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
 Döngüler
ilk önce parantez içine atama (sayi=getchar())çalıştırılır.
getchar fonksiyonu (standart giriş/çıkış kütüphanesi içindedir.),
klavyeden bir karakter okur ve bu karakteri sayi tamsayı
değişkeni içinde depolar. Karakterler genellikle char tipiyle
saklanırlar.
EOF: End of File stdio.h içinde tanımlanmış sembolik bir sabittir
(genellikle -1).
UNIX ve diğer birçok işletim sisteminde EOF, ctrl+d
MS-DOS işletim sisteminde EOF, ctrl+z
30
do/while Döngü Yapısı
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
while yapısında döngü devam koşulu, döngünün gövdesinden
önce test edilir.
do/while yapısında döngü devam koşulu, döngünün gövdesi
çalıştırıldıktan sonra kontrol edilir.
 Döngüler
Döngü en az bir kere çalıştırılır!
do {
ifade
} while (koşul)
31
32
33
Atama Operatörleri
işlem
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
doğru
koşul
 Döngüler
yanlış
do/while döngü yapısının akış grafiği
34
Atama Operatörleri
Artırma ve Azaltma
Operatörleri
 Program Kontrolü
3. DERSİN SONU
 Döngüler
35