break ve continue – C Programlama Dili

in #tr5 years ago (edited)


Bir önceki dersimizde C programlama dilindeki döngüler kavramından bahsetmiştik. For, while ve do while döngülerine değinip bunların genel yapıları ve kullanım alanları üzerine konuştuk. Ancak döngüler konusunda bahsetmediğim bazı kavramlar var.

Bunlar break ve continue deyimleri. Bu dersimizde bu kavramlar üzerine konuşacağız. Ayrıca döngüler konusunun son uygulamasında kullandığım define kavramına da bir sonraki derste yer vereceğim.

break Deyimi

break deyimi aslında yabancı olduğumuz bir deyim değil. Koşul yapılarından swicth case yapısında da görmüştük.

break;

ifadesini gören derleyici switch case yapısından çıkıyordu. Aynı durum döngüler için de geçerli.

Bir önceki dersimizde  döngülerin şart sağlandığı sürece sürekli işleyen bir yapısı olduğundan bahsetmiştik. Ancak bazen yaptığımız uygulamalarda döngü içerisindeki bazı özel durumlarda döngünün kırılmasını isteyebiliriz. Yani atıyorum a şartı sağlandığında döngüden çıkılsın isteriz. İşte böyle bir durumda döngüden çıkmayı saplayan ifade, break deyimidir.

Yani özetle bir döngüyü koşul şartından bağımsız olarak sonlandırmak için break deyimini kullanırız. Döngü bloğu içerisinde herhangi bir yerde bu break deyimini gören derleyici, döngü şartına bağlı kalmaksızın döngüden çıkar. Döngüden sonra gelen satırdan işlemeye devam eder.

Break deyimini görmüş olduğumuz 3 döngü için de kullanabiliriz. Hatta iç içe döngülerde kullanılırsa sadece bulunduğu döngüden çıkar.

Bu kadar açıklama sanırım yeterli. Olayın anlaşılması adına işe yarar olmasa da süreci takip etmemizi sağlayan basit bir uygulama hazırladım :

Uygulamamızın başında ivar adında integer bir değişken tanımlayıp başlangıç değeri olarak 11 değerini atadık. Sonrasında kontrol etmek adına ekrana değişkenin değerini,

“Başlangıç değeri : ….”

Şeklinde yazdırdık. Bu değer değişkenimizin döngüye girmeden önceki değeridir. Program while döngüsüne geldiğinde

ivar < 20 “ mi sorgusu ile karşılaşır. 11 < 20 sorgusu doğru olduğundan true değer döndürür ve döngü şartı sağlandığından döngüye girilir.

ivar ++;

ifadesi ile değişkenimizin değeri döngü içerisinde bir artırılır. Sonrasında gene kontrol amaçlı ekrana

“Değerimiz : ….”

Yazar. Böylelikle döngü içerisinde değişkenimizin alacağı değerleri kontrol etme imkanına sahip oluruz.  Sonrasında karşımıza bir if ifadesi çıkar.. Bu if yapısı da

ivar  >  15

koşuluna sahiptir. Yani döngü içerisinde değişkenimizin değeri 15 den büyük olursa bu if yapısı içerisine girecektir..

Bu şekilde döngü dönmeye devam eder. Ta ki ivar değişkeninin değeri 16 olana kadar. ivar  = 16 olduğunda if koşulu sağlanacağından if yapısı içerisine girer.

İf yapısı içerisine tekrar kontrol amaçlı printf() ile

“Bitiş değeri : …..”

Ni yazdırdık. Sonrasında

break;

ifadesine gelinir ve döngüden çıkılır. Sonrasında döngünün sonuna bir kontrol printf() i daha koydum ve burada da değeri yazdırdım.

Şimdi çıktısına bakalım :

Görüldüğü gibi çıktımız uygulamanın doğru çalıştığını gösteriyor.

if yapısı içerisinde break anahtar kelimesinden sonra vermiş olduğum printf() fonksiyonunun çalışmadığını görüyoruz. break anahtar kelimesinden sonra gelen kodların çalışmayacağını da böylece test etmiş olduk.

continue Deyimi

Continue anahtar kelimesi ise isminden de anlaşılacağı gibi devam etmeyi sağlıyor. Bir döngü içerisinde bir şart dahilinde belirlenen satırdan sonrasının çalıştırılmaması isteniyorsa bu deyim kullanılır. Break anahtar kelimesi gibi döngünün sonuna atılmaz da belirlenen satıra geldikten sonra program tekrar döngünün başına döner.

Konunun anlaşılması adına basit bir örnek yapalım:

Bu uygulama genel olarak baktığımızda ekrana çift sayıları yazdırmaya yarar. Şimdi de tek tek inceleyelim.

Uygulama ilk başta ekrana

“ÇİFT SAYILAR”

Yazısı yazarak başlıyor. Sonrasında bir for döngüsü görüyoruz. Kontrol değişkenimiz i = 0 değeri ile başlıyor. Döngünün devam etme şartı ise i < 15 olması. Artirma bölümünde ise i değerimizi bir bir artırıyoruz. Buraya kadar normal bir for döngüsü.

For bloğunun içerisine girdiğimizde bizi bir if yapısı karşılıyor. Buradaki

i % 2 == 1

ifadesi bize “i değişkeninin 2 bile bölümünden kalan 1 e eşitse” sorgusunu veriyor. 1 eşitse if yapısı içine girecektir.

Aslında burada anlatılmak istenen i değişkeninin tek sayı olma durumudur. Biz matematikten zaten bunu biliyoruz tek sayılar 2 ile bölümünden 1 kalanı veren sayılardır.

İf yapısı içine giren derleyici continue deyimini görünce sonrasındaki kodları işlemeyecek, direk kendini for döngüsünün başına alacaktır.

Böylelikle i değişkeninin çift sayı olduğu durumlarda if yapısı içine girilmeyecek ve printf() fonksiyonu ile değer ekrana yazılacakken, i değişkeninin tek sayı olduğu durumlarda her defasında if yapısı içindeki continue ifadesinden sonra derleyici  döngünün başına atılacağından tek sayılar yazılmayacaktır.

Böylelikle ekrana sadece çift sayılar yazılacaktır.

Çıktımız aşağıdaki gibidir :

Son olarak da continue ifadesini do while döngüsü içerisinde vermek istiyorum. Çünkü bu döngüye özel bir durum var, onu da görmüş olalım.

continue ifadesinden sonraki kodların çalışmayacağından bahsetmiştik. Ancak do while döngüsü ters bir döngü olduğundan, continue ifadesinden sonraki kodlar gene çalışmayacaktır ama continue'dan sonra gelen while sorgusunun olduğu kod satırı çalışacaktır.

Açıklamadan bir şey anlamasanız da uygulama da demek istediğimi kolayca anlayacaksınız :

Uygulamanın başında

int i = 2;

ifadesi ile ilk değeri 2 olan bir integer değişken tanımladık. Sonrasında do while döngüsüne girdik.

İlk olarak ekrana

“do-while, continue denemesi”

Yazısı yazacak sonrasında

i--;

İfadesi ile i değişkeninin değeri  1 azaltılarak 1 yapılacaktır. Sonrasında ekrana

“continue’dan önceki i değeri : 1”

Yazısı yazacaktır ve derleyicimiz 

continue;

ifadesine gelecektir. Bundan sonrasında derleyici direk do kısmına gelmesi gerekirken bu döngünün ters yapısından dolayı ilk olarak

while (i > 0) ;

ifadesine gidecek, şartın sağlanıp sağlanmadığının kontrolünü yapacak ve şart sağlanıyorsa do ifadesinin olduğu yere gidecek.

Bu söylediklerimizin doğruluğunu kullandığımız printf() fonksiyonlarından anlayabilirsiniz.

continue ifadesinden önce ve sonra olan printf() fonksiyonları, tamamen kontrol amaçlıdır.

Çıktıda da görüldüğü gibi continue ifadesinden sonra kullandığımız hiçbir komut çalışmadı, çalışan sadece while sorgusu olmuştur.

Bugünlük bu kadar, umarım faydalı bir çalışma olmuştur.

Uygulama noktasında herhangi bir sorun yaşarsanız aşağıdaki yorum panelini kullanarak iletişime geçmekten çekinmeyin lütfen. Teşekkürler.

Kaynak belirtilmeyen görseller @etasarim a aittir. / Pictures that don’t have any source belongs to @etasarim.



Posted from my blog with SteemPress : http://etasarim.cloudaccess.host/16/03/2019/break-ve-continue-c-programlama-dili/
Sort:  

Hi, @etasarim!

You just got a 1.74% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

o kadar emek veriyorsun ki hiç ilgi alanım olmamasına rağmen okuyorum, eline sağlık:)
döngülerde kısır döngü içine girmiş olabilirim, kaçıyorum:)

İlgi alanınız olmadığını biliyordum ama okuduğunuzu bilmiyordum. Şaşırdım, sevindim. Teşekkür ederim hocam, gerçekten takdir edilesi bir hareket. Ama programlamada kısır döngü yerine sonsuz döngü var ve gerçek hayattan farklı olarak o döngünün içine hep doğru olunca giriliyor :) Çok manidar değil mi?

emek verilen her yazıyı okumaya çalışıyorum:) bu seri de onlardan biri..
kısır döngü bi zaman sonra sonsuz döngü olmuyor muydu, kafam karışık zaten, baya manidar:)

Teşekkür ederiz hocam. Emeğiniz çok gerçekten. Olayları sizin dediğiniz şekilde değerlendirirsek, her sonsuz döngü aslında kısır döngü değildir. Ama tabi kısır döngüye dönüşen sonsuz döngüler de mevcuttur diyebiliriz.

Eğer sonsuz döngü programcının hatasından kaynaklanıyorsa sizin dediğiniz gibi kısır bir döngü olmuştur. Ancak programlamada tek işe odaklanılan durumlar olabiliyor. Mesela elinizde bir program var ve o program kullanıcıdan gelen veriye göre bir iş yapacak. O programda sonsuz bir döngü kurarsınız ki sürekli kullanıcıyı dinler durur program. Böyle bir sonsuz döngüye kısır diyemezsiniz. Anlatabildim mi bilmiyorum :)

You got a 28.54% upvote from @minnowvotes courtesy of @etasarim!


Bu yazı Curation Collective Discord Sunucusunda küratörlere önerilmiş ve manuel inceleme sonrasında @c-squared topluluk hesabından oy ve resteem almıştır.
This post was shared in the #turkish-curation channel in the Curation Collective Discord community for curators, and upvoted and resteemed by the @c-squared community account after manual review.
@c-squared runs a community witness. Please consider using one of your witness votes on us here

Thanks for support

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.033
BTC 64223.84
ETH 3158.34
USDT 1.00
SBD 4.29