Koşul Yapıları – C Programlama Dili

in #tr5 years ago


C Programlama Dili, yapısal programlama dil olma özelliği taşır. Yapısal Programlama özelliğine sahip dillerde temel olarak 3 özellik bulunur :

  • Bloğun koşullu olması (if else / Switch )
  • Bloğun tekrarlanabilir olması (while, for)
  • Bloğun parametrik olması (fonksiyonlar)

Bu dersimizde koşul ifadelerini göreceğiz. Koşul ifadelerinde sıklıkla doğru ve yanlış ifadelerinden bahsedeceğim. Java gibi programlama dillerinde bunun için true ve false değerleri kullanılsa da C de bunun yerine 0 (yanlış) ve 1 (doğru) kullanılır.

C dilinde, koşullu ifade için 3 yapı bulunur. Bunlar :

  • if else yapısı
  • switch case yapısı
  • ?: operatörü

İçerisinde koşullu bir ifade bulunan programda; derleyici koşul bloğuna geldiğinde bir sorgulama yapacak, sorgu doğru ise ilgili bloğu yanlış ise diğer bloğu işleyecek. Sistem genel olarak bu mantık üzerine kurulu.

Koşul yapıları, programlarımızda bizlere kolaylık ve esneklik sağlayacaktır.

if Yapısı

if kelimesi herkesin bildiği gibi eğer anlamına gelmektedir. Programlama da ise eğer doğruysa bunu yanlış ise şunu yap şeklinde düşünebilirsiniz.

if yapısının birden fazla kullanımı vardır. Tek başına kullanılabildiği gibi else ile de kullanılabilir.

Tek başına kullanımı aşağıdaki gibidir.

if(sart)
ifade ;

if içerisinde bulunan sart sağlanırsa ifade ile gösterilen kod kısmı çalışacak, sağlanmazsa bu kod blogu pas geçilecektir.

Eğer ifade ile gösterilen kod kısmı tek bir ifade den oluşuyorsa {} curly bracket a gerek yoktur. Birden fazla ifadeden oluşuyorsa kullanımı zorunludur. Aşağıdaki gibi :

if(sart)
{
ifade1 ;
ifade2 ;
ifade3 ;
}

Çok anlamlı olmasa da durumun anlaşılması adına basit bir uygulama yapalım :

Sonuç aşağıdaki gibidir :

Şimdi program üzerine konuşalım. Programda iki adet if yapısı vardır. int tipinde var adında bir değişken tanımlanıp ilk değer olarak 45 değeri atanmıştır. Sonrasında ilk if yapısına gelindiğinde var değişkeninin değerinin 44 den farklı olup olmadığı sorgulanmıştır. (44'e eşit olup olmadığı)

var değişkeni 44 den farklı olduğu için if yapısı doğru sonuç vermiş hemen altındaki 2 satırlık kod bloğu işlenip ekrana

var değişkeni 44 değildir.

var : 45

ifadesi yazılmıştır. Görüldüğü gibi if den sonra işlenecek statement sayısı 1 den fazla olduğu için {} curly bracket kullanılmıştır.

Program çalışmaya devam edecek ve sonraki satırda var = 1; ifadesi ile var değişkenin değeri 1 olarak değiştirilecektir.

Sonrasında 2.if yapısına gelinecek ve burada var==1 ifadesi ile var değişkeninin değerinin 1 olup olmadığı sorgulanacak ve şart sağlandığından hemen altındaki 1 statement işlenecek ve ekrana :

var değişkeni 1'e eşittir.

yazacaktır. if'den sonra tek ifade olduğu için de curly bracket'a gerek kalmamıştır.. {}

Olayın özü bundan ibaret. Konu anlaşıldığına göre şimdi daha anlamlı bir uygulama yapalım :

Sonuç ise aşağıdaki gibidir :

Bu uygulamamızda sayi adında int tipinde bir değişken tanımlayıp ilk değer olarak 0 ataması yaptık. Sonrasında kullanıcıdan bir sayı girmesini isteyip scanf() fonksiyonu ile girilen sayıyı aldık.

Sonrasında gelen if yapılarında bu sayının 3 ile olan ilişkisi sorgulanmıştır. Biz klavyeden 6 değerini girdik. Yani sayi değişkenimizin içerisine 6 değeri atandı.

sayi değişkeni ilk if yapısına girdiğinde sayi == 3 sorgusuna tabi tutulacak ve değeri 6 olduğundan koşul sağlanmadığından bu bloğu atlayıp bir sonraki if yapısına geçecek. Bu if yapısında da sayi > 3 sorgusuna tabi tutulacak ve 6 > 3 olup koşul sağlandığından bu ifade içerisinde yer alan “Girilen sayı 3’den büyüktür.” yazısı ekrana yazılacak.

Sonrasında son if yapısına geçecek ve buradaki koşul sağlanmadığından son satırdaki printf fonksiyonu ile “Sayımızın değeri..” yazısı ekrana yazıp uygulama sonlanacak.

if yapısı içerisinde basit sorgular yapılabileceği gibi komplike sorgular yapılabilir:

if (var % 3 == 0 && var % 5 == 0)

Sonuç aşağıdaki gibidir :

if else Yapısı

if yapısı else anahtar kelimesi ile birlikte de kullanılabilir. Ancak else tek başına kullanılamaz.

Genel yapı aşağıdaki gibidir :

if(sart)
{
statements1;
}
else
{
statements2;
}

if blogu içerisindeki şart sağlanırsa statements1 içerisindeki ifadeler işlenirken şart sağlanmadığı takdirde statements2 içerisindeki ifadeler işlenecektir.

Konu ile alakalı olarak ufak bir uygulama yapalım :

Sonuç aşağıdaki gibidir :

Uygulamamızda iki sayının karşılaştırmasını yapan basit bir if else yapısı kurduk. İlk if sorgusunda sayi1 , sayi2 den büyük mü şeklinde bir sorgulama var (sayi1 > sayi2). sayi1 , sayi2 den büyük olmadığından bu sorguyu sağlamayacak ve diğer if sorgusuna geçecektir. (sayi1 < sayi2).

sayi1 < sayi2 doğru olduğundan bu bloğu işleyecek ve sonrasında diğer else kısmına uğramadan sorgudan çıkacaktır.

Bu şekilde çoklu if else yapılarında şart birinde sağlandıktan sonra, sonra gelen if sorgularına program uğramayacak if-else bloglarından sonra devam edecektir.

if else yapıları bu şekilde peşpeşe kullanılabileceği gibi iç içe kullanımı da vardır. Bir örnek üzerinden gidelim:

Uygulamamızın amacı verilen 2 haneli sayının 15 ile bölünüp bölünmediğini belirlemek. Bunun içinde 15 bölünebilme kuralını uygulayacağınız. 15 sayısının asal bölenleri olan 3 ile 5 e tam bölünen bir sayı 15 e de tam bölünür. Bu mantığı program üzerinde kullanacağız.

int tipinde adı sayi olan bir değişken tanımlayarak uygulamaya başladık. Sonrasında kullanıcıdan iki haneli bir sayı girmesini istedik. scanf() fonksiyonu ile kullanıcının girdiği iki haneli sayıyı sayi değişkenine atadık. Sonrasında if bloglarına sıra geldi.

Görüldüğü gibi en dışta bir if else bloğu ve onun içinde de bir if else bloğu bulunuyor. Kısaca iç içe if else bloğu diyelim.

sayi % 3 == 0

şartı ile girilen sayının 3 ile bölümünden kalanın 0 olup olmadığı sorgulanmış. Buradaki amaç verilen sayının 3 e tam bölünüp bölünmediğini anlamak. Sayı 3 e bölünüyorsa iç bloğa geçecek  bölünemiyorsa en dıştaki else kısmına geçerek ekrana “ …., 15 ile bölünemez” yazısını yazacak.

Eğer sayı 3 e bölünebiliyorsa içteki if bloğuna geçecek ve buradaki

sayi % 5 == 0

sorgusu ile karşılaşacak. Eğer sayımız 5 e bölünemiyorsa else bloğuna düşecek ve ekrana

“….., 3 ile bölünebilir ancak 5 ile bölünemez”

yazacak. Ancak sayı sorguyu geçerse içteki if bloğuna girecek ve ekrana

“ …., 15 ile bölünebilir”

yazısı çıkacak. …..(noktalarla) ifade ettiğim kısımlar kullanıcıdan alınan sayıyı ifade etmektedir. Şimdi bu uygulamayı 21 sayısı için test edelim, çıktı aşağıdaki gibi olacaktır :

Uygulama doğru hesapladı, biliyorsunuz 21 sayısı 3 ile bölünürken 5 ile bölünemez.

Şimdi de 15 ile tam bölünebilen 45 sayısını girelim bakalım sonuç ne olacak:

Sanırım çalışıyor. if else kavramı umarım anlaşılmıştır.

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/11/03/2019/kosul-yapilari-c-programlama-dili/
Sort:  

Congratulations @etasarim! You received a personal award!

DrugWars Early Access
Thank you for taking part in the early access of Drugwars.

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

Are you a DrugWars early adopter? Benvenuto in famiglia!

You can upvote this notification to help all Steem users. Learn how here!

👏👌 Başarılı ders anlatımların hız kesmeden devam ediyor.

Posted using Partiko Android

Teşekkür ederim @tahirozgen hocam fark ettiniz mi? Bugün itibariyle kesintisiz 4 postu yayınladım. 3 günde zar zor bir post yayınlayan benim için oldukça zordu :) Bir de buna RC den dolayı postu yayınlayamama eklenince vay be dedim hayat böyle işte :) Eğlenceli olmaya devam ediyor.

Maşallah evet farkındayım. Çabalarının karşılık görmesi dileğiyle. :)

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

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by etasarim from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Congratulations @etasarim! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 80 posts. Your next target is to reach 90 posts.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

You can upvote this notification to help all Steem users. Learn how here!

🎁 Hi @etasarim! You have received 0.3 SBD tip from @thales7!

@thales7 wrote lately about: Check My Latest Fight ! Thales7 Vs Oleg326756 Feel free to follow @thales7 if you like it :)

Sending tips with @tipU - how to guide :)

Yine güzel bir paylasim olmus.

!tip 0.3

@thales7 hocam büyüksünüz valla :) ne diyeceğimi şaşırdım. Teşekkür ederim.

Hi, @etasarim!

You just got a 1.48% 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.


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

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.033
BTC 62934.09
ETH 3118.65
USDT 1.00
SBD 3.85