You are on page 1of 16

BÖLÜM 4

PYTHONDA KONTROL KOMUTLARI- WHILE VE FOR

PYTHONDA WHILE KOMUTU

Çevrimsel işlem veya tekrarlı işlem(iterasyon,İng. iteration) bilgisayarı aynı işlemler grubunu
belirli bir koşul sağlanana kadar tekrar tekrar yapmak için yönlendirir. Python dilinde çevrim
yapısını oluşturmak için 2 deyim mevcuttur:

• while deyimi
• for deyimi

WHILE DEYİMİ

While deyiminin yazılış biçimi aşağıdaki gibidir:

while ifade:

Deyim;

veya

while ifade:

Deyim1;

Deyim2;

...

Deyim_n;

while deyiminin çalışma biçimi ise aşağıdaki gibidir:

Önce ifade hesaplanır. İfade true(doğru) ise deyim icra edilir. Deyim icra edildikten sonra,
programın kontrolü while deyiminin başına geçer ve işlem tekrarlanır yani ifade yeniden
hesaplanarak sonucuna göre işlem yapılır. Bu işlem, ifadenin değeri false(yanlış) olana kadar
kadar sürer. Bu durumda program deyimi izleyen noktaya gider.

İfadenin değeri true(doğru) olduğu sürece while bir sonsuz çevrim(infinite loop) oluşturur.

Deyim yerinde genellikle bir deyimler grubu bulunur;bu durumda while yapısının ifadeden
sonra aynı sütundan başlayan deyimler grubundan oluşması beklenir.İkinci şekli de benzer
biçimde çalışır;ifade tekrar tekrar hesaplanır;ifadenin değeri true olduğu sürece bir sonsuz
çevrim oluşur ve bunun her adımında Deyim1,Deyim2,..Deyim_n ile belirtilen deyimler
grubu yeniden icra edilir.

While çevrim yapısı ile,çevrim içindeki deyim grubu ya da işlem grubunun,kontrol edilen bir
koşula bağlı olarak tekrarlanabilmesi olanağı mevcuttur.
Böylece,işlemlerin ne kadar tekrarlanacağının önceden belli olmadığı fakat değeri değişen bir
değişken ya da ifadenin değerinin kontrol edilmesi ile belirlenebildiği uygulamalarda bu
çevrim yapısını kullanmak uygun olacaktır.
Aşağıda,while çevrimi ile ilişkili çeşitli uygulamalar verilmiştir:
İŞLEMLERİN,BİLGİSAYARA GİRİLEN BELİRLİ ÖZELLİKTEKİ BİR VERİ İLE DURDURULDUĞU
UYGULAMALARDA WHILE ÇEVRİMİNİ KULLANMAK

ÖRNEK:Aşağıdaki Python programında,bilgisayara girilen pozitif sayıların miktarı ve


toplamı bulunmakta ve program negatif bir sayı girişi ile durdurulmaktadır:

PROGRAMIN ÇIKTISI

İŞLEMLERİN,BİLGİSAYARDA HESAPLANAN BİR İFADENİN DEĞERİNİN


KONTROL EDİLEREK DURDURULDUĞU UYGULAMALARDA WHILE
ÇEVRİMİNİ KULLANMAK
ÖRNEK:Aşağıdaki Python programında,faktöryel hesaplanmakta ve hesaplanan
faktöryelin değeri 720’yi aştığı ya da 720’ye ulaştığı anda program durdurulmaktadır:

PYTHON PROGRAMI
fakt=1
i=2;
while fakt<720:
fakt=fakt*i;
i=i+1
print("\n FAKTÖRYEL=",fakt);
print("\n i=",i);

PROGRAMIN ÇIKTISI

Bu programda,7!=720 hesaplandıktan sonra while’daki 720<720 ifadesi yanlış olacağı için bu


durumda while bloğunun dışına çıkılacak ve fakt’ın ve i’nin değerleri yazdırılacaktır.

ÖRNEK:KARE KÖK BULMA ALGORİTMASI

‘i hesaplamak için kullanılabilecek bir yaklaşım aşağıdaki gibi ifade edilebilir:


a)r0=x/2 şeklinde bir başlangıç yaklaşımı ile başla.Burada, r0,x’in kare kökü için ilk
tahmin değeridir.
b)Başlangıç tahmini yeterli değilse,bunu izleyen r1, r2, r3 yaklaşımlarını aşağıdaki
bağıntıya göre belirle:

Bu yöntem ile ,mesela,10 sayısının kare kökü için(x=10)ilk tahmin değeri r0=5 olacak ve
izleyen adımlar,
R1=1/2(5+10/5)=3.5
R2=1/2(3.5+10/3.5) şeklinde hesaplanacaktır.
Her hangi bir aşamadaki kök tahmin değeri r ise ve
| x-r2|≤0.0001 ise işlem durdurularak r’nin köke yeteri kadar yakın olduğu kabul
edilecektir.Bu işlemi gerçekleştirecek bir Python programı yazınız.

KAREKÖK ALGORİTMASI İÇİN GELİŞTİRİLEN PYTHON


PROGRAMININ LİSTESİ:
x=input(" KARE KOKU HESAPLANACAK SAYIYI GIR.. ");

x=float(x)

eps=input("HASSASİYET...eps..")

eps=float(eps)
import math

r0=x/2;

r=r0;

while math.fabs(x-r*r)>eps:

r0=r;

r=1.0/2.0*(r0+x/r0);

print(x," SAYISININ KAREKOKU" ,r," DİR");

PROGRAMIN ÇIKTISI

WHILE YAPISININ SONLU ÇEVRİM OLUŞTURMA AMACI İLE KULLANILMASI

Çevrimdeki tekrar sayısının önceden belli olduğu uygulamalarda,for yapısını kullanmak daha
uygundur fakat while yapısı kullanılarak ta bu tip problemler çözülebilir.

ÖRNEK:

1+2+3+......+n toplamının hesaplanması.

TOPLAMI HESAPLAYAN PYTHON PROGRAMI:

PROGRAMIN ÇIKTISI

WHILE ELSE YAPISI

else sözcüğü if dışında while ile de kullanılır.Aşağıdaki örnek bu konuda bir fikir verecektir:
PROGRAMIN ÇIKTISI

for DEYİMİ

for deyimi ve for deyimi kullanılarak oluşturulacak çevrim (döngü,İng. loop)yapısı,işlemlerin


tekrar sayısının önceden belli olduğu durumlarda kullanılır.

For deyiminin yazılış biçimi aşağıdaki gibidir:

for i in range(başlangıç,son):

Deyim ya da deyimler;

ya da

for i in range(başlangıç,son,artım):

Deyim ya da deyimler;

şeklindedir.

Birincisinde başlangıç değerinden son-1’e kadar deyim ya da deyimler icra edilir;örneğin i


parametresi için başlangıç=1 ve son =5 ise, i=1,2,3 ve 4 için deyim ya da deyimler icra edilir.

İkinci formda ise parametre her adımda artım kadar arttırılarak deyim ya da deyimler son-1’e kadar
icra edilir.

ÖRNEKLER:

I)
PROGRAM:

for x in range(1,9):

print("x=",x)

ÇIKTISI:

II)

PROGRAM:

for x in range(1,9,2):

print("x=",x)

ÇIKTISI:

III)

PROGRAM:

for x in range(-10,0,3):

print("x=",x)

ÇIKTISI:
for deyiminin sayısal artımlar dışında başka kullanım biçimleri de mevcuttur.Aşağıdaki örnekleri
inceleyiniz:

IV)

PROGRAM:

ÇIKTISI:

V)

PROGRAM:

sehir=["paris","londra","istanbul","viyana","roma"]

for x in range(len(sehir)):

print(x+1," ",sehir[x])

ÇIKTISI:
VI)for else YAPISI:

PROGRAM:

ÇIKTISI:

VII)

PROBLEM: 1+2+....n TOPLAMINI for ÇEVRİMİ İLE BULAN BİR PROGRAM YAZINIZ

Bu programda,for’un başlangıç koşulunu belirleyen ve başlangıç olarak belirttiğimiz ifade i=1


şeklindedir ve bu for çevriminin parametresi diyebileceğimiz i değişkenine 1 değerini bir ilk
değer olarak atamaktadır.

son ise, n+1’dir.i değişkeninin değeri n+1’den küçük olduğu sürece çevrim sürecektir.

artım belirtilmediği için 1 kabul edilir.

Aşağıdaki tabloda çevrim süresince i ve top değişkenlerinin değerlerinin nasıl değişeceği


belirtilmiştir:

ÇEVRİM ADIMI i top

Başlangıç,çevrim 0
öncesi

1 1 1

2 2 3 (1+2)

3 3 6 (1+2+3)

4 4 10 (1+2+3+4)
5 5 15 (1+2+3+4+5)

PROGRAM:

n=input("\nUST SINIR(BIR TAM SAYI) ");

n=int(n)

top=0;

for i in range(1,n+1):

top=top+i;

print("\n1+2+3+..",n,"=", top);

print("i=",i)

PROGRAMIN ÇIKTISI:

VIII)

ÖRNEK:FAKTÖRYEL HESABI

for çevrimini kullanacağımız diğer bir örnek program ise faktöryel hesabı programı
olacaktır.Matematikte faktöryel,bilindiği gibi,
n!=1.2.3...n

şeklinde tanımlanır;yani n sayısının faktöryeli 1’den n’e kadar tam sayıların çarpımına

eşittir.Aşağıda,faktöryel hesabı ile ilişkili Python programı ve bu program içindeki

değişkenlerin programın icrası esnasındaki değişimlerini gösteren tablo verilmiştir:

FAKTÖRYEL PROGRAMI:
PROGRAMIN ÇIKTISI:

FAKTÖRYEL PROGRAMINDAKİ DEĞİŞKENLERİN PROGRAMIN İCRASI


ESNASINDAKİ DEĞİŞİMLERİNİ GÖSTEREN TABLO

i fakt n

Çevrim öncesi 1 5

1 1 5

2 2(1*2) 5

3 6(1*2*3) 5

4 24(1*2*3*4) 5

5 120(1*2*3*4*5) 5

ÖRNEK:

1.2/(3.4)-5.6/(7.8)+9.10/(11.12)-13.14/(15.16)

şeklindeki alterne seri toplamının hesaplanması.

Yukardaki ifadede, . sembolü çarpma işlemi anlamındadır.

ALTERNE SERİ TOPLAMINI HESAPLAYAN PYTHON PROGRAMI:


s=0;

p=1;

x=1.0;

for i in range(1,5):

s=s+(x*(x+1))/((x+2)*(x+3))*p;

x=x+4;

p=-p;

print("TOPLAM=",s)

PROGRAMIN ÇIKTISI:

ALTERNE SERİ PROGRAMINDAKİ DEĞİŞKENLERİN PROGRAMIN İCRASI


ESNASINDAKİ DEĞİŞİMLERİNİ GÖSTEREN TABLO

i x s p

Çevrim öncesi 1.0 0 1

1 1.0 (1.2)/ (3.4) 1

2 5.0 (1.2)/ (3.4) -(5.6)/ -1

(7.8)

3 9.0 (1.2)/ (3.4) -(5.6)/ 1

(7.8) +(9.10)/

(11.12)
4 13.0 (1.2)/ (3.4) -(5.6)/ -1

(7.8) +(9.10)/

(11.12) -(13.14)/

(15.16)

AÇIKLAMA:

Sadece 4 terim olduğu için for çevrimi 1’den 4’e kadar çalıştırılmıştır.ilk terim 1.2/(3.4) ve

ikinci terim 5.6/(7.8) olduğu için, x değişkeni ilk terimdeki ilk sayıyı temsil etmek üzere

terimi,x.(x+1)/((x+2).(x+3)) şeklinde ifade edebiliriz.x yerine 1 konulursa bu durum kolayca

kanıtlanabilir.İkinci terimde ilk sayı 5 ,3.terimde ilk sayı 9 olduğuna göre x,her seferinde 4

arttırılmalıdır.Bu da programda x=x+4 ; deyimi ile gerçekleştiriliyor.Bu terimi,x+=4; şeklinde

de yazabilirsiniz.

Seri alterne seri olduğuna göre,yani terimlerin işaretleri +,-,+,- şeklinde değiştiğine göre,p

değişkeni yardımı ile terimlerin işaretleri ayarlanabilir.p önce 1 olarak atanmıştır.Sonra

çevrim içine konulan p=-p;ifadesi ise bir sonraki işareti -,bir sonrakini + ve onu izleyeni –

yapacaktır.(Programı kağıt üzerinde adım adım izleyiniz).

İÇ İÇE ÇEVRİMLER

Bir çevrim yapısının içine başka bir çevrim yapısının yerleştirilmesi ile elde edilen yapıya iç
içe çevrim(nested loop) adı verilir.

Python dilinde, if deyimlerini her hangi bir derinliğe kadar iç içe kullanmak nasıl
mümkünse, çevrim deyimlerini de iç içe kullanmak mümkün olacaktır. İç içe çevrimlerde
hatırlanacak anahtar bilgi, önce içteki çevrimlerin tamamlanması gerektiğidir.Bu konuda
aşağıdaki kural iç içe çevrimler için daima geçerlidir:

İç içe çevrimlerde en içteki çevrim en önce tamamlanır.


ÖRNEK:
Aşağıdaki programda,dış çevrim olan i parametreli çevrim 5 kez
çalışacaktır.(i=1,2,3,4,5).i’nin her değeri için ise içteki çevrim 3 kez
çalışacaktır.(j=1,2,3).Böylece aşağıdaki çıktı elde edilecektir:
for i in range(1,6):
print("i=",i);
for j in range(1,4):
print("j= ",j);
PROGRAMIN ÇIKTISI

ÖRNEK:ÇARPIM TABLOSU PROGRAMI


1’den 10’a kadar sayılar için bir çarpım tablosu hazırlamak istiyoruz.Bunun için iç içe 2
çevrim yeterlidir ve her iki çevrimin de parametresi 1’den 10’a kadar değişecektir.Programın
listesi aşağıdadır:
ÇARPIM TABLOSU HESAPLAYAN PYTHON PROGRAMININ LİSTESİ:

ÇARPIM TABLOSU PROGRAMININ ÇIKTISI:


break DEYİMİ

break deyiminin Python programları içinde iki bir çevrim(loop) yapısı içinden ,çevrimi
kontrol eden koşul ifadesini beklemeksizin hemen çevrim dışına çıkmak amacı ile kullanılır.

Break deyimi bir çevrim içinde yer almışsa bu durumda break deyimi ile karşılaşılır

karşılaşılmaz çevrim dışına çıkılır ve çevrimi izleyen deyime geçilir.

ÖRNEK PROGRAM:
PROGRAMIN ÇIKTISI:

continue DEYİMİ

continue deyimi,çevrim içinde,belirli bir koşulun kontrolü ile,bir sonraki çevrim adımına

gidilmesini gerçekleştirir.

ÖRNEK:

Aşağıdaki programda,for çevriminin parametresi olan i değişkeni 3 ile tam bölünemeyen bir

değer alınca bu değer ile işlem yapılmayıp bir sonraki adıma geçilmesi continue deyimi
ile sağlanmaktadır.Böylece program,kullanıcı tarafından girilen bir üst limite kadar,3 ile

bölünebilen sayıların toplamını ve bu tip sayıların adedini bulacaktır.

PROGRAMIN LİSTESİ

PROGRAMIN ÇIKTISI

You might also like