Algoritma ve Programlama Dünyası — Koşul Yapıları

Turhan Can Kargın
Kodcular
Published in
5 min readOct 8, 2022

--

Herkese merhabalar!! Algoritma ve programlama dünyası serisinde bir önceki bölümünde programlama dillerinde fonksiyon ve metot kavramlarını gördük. Bu yazıdan önceki bölüm olan Algoritma ve Programlama Dünyası — Fonksiyonlar ve Metotlar yazısını daha okumadıysanız bu linke tıklayarak ulaşabilirsiniz.

Bu yazıda ise programlam dillerinde if-else ve switch-case gibi koşullu yapılardan bahsedeceğiz. Hadi başlayalım!!

Kaynak: https://o7planning.org/11561/java-if-else

Programlamada, bazen belirli bir koşul karşılanırsa işlemlerin yapılması istenir. Ayrıca kullanıcı tarafından girilecek bir değerin doğruluğu, aralığı vb. veya program dahilindeki hesaplamalarla üretilecek değerler gibi özellikler kontrol edilebilir. Bu gibi durumlarda programlama dili tarafından desteklenen karar yapıları kullanılır. Hemen hemen tüm programlama dillerinde karar yapıları If blokları tarafından uygulanmaktadır. Bu yazıda ele alacağımız If yapılarının yanı sıra sıklıkla kullanılan Switch Case yapısına da değinilecektir.

IF Yapısı

Programlama dillerindeki karar yapılarının genellikle If blokları tarafından sağlandığını söyledik. Aşağıda inceleyeceğimiz iki farklı yapı if yapısını göstermektedir. Aralarındaki en büyük fark, karar yapıları küme parantezleri ile blok açılmadan kullanılırsa tek satır işlemli koşullarda kullanılabilirler.

// Birinci stil
if (kosul)
Islemler;
// İkinci stil
if (kosul) {
Islemler;
}

Buraya kadar olan bölümde, şartlar veya koşullar yerine getirildiği takdirde yapılacak işlemlerin If karar yapısı ile sağlanacağından bahsetmiştik. Bazı durumlarda koşul hem sağlanıyor hem de sağlanmıyorsa başka işlemler yapılması istenebilir. Bu gibi durumlarda Else blok yapıları kullanılır. Else yapısı tek başına kullanılan bir blok yapı değildir. Yalnızca If blok yapılarında kullanılır ve If’in sağlanmadığı durumlarda çalışır. If bloğu yapısında sağlanan koşulların tersi şekilde çalışır. Else blok yapısının kullanımı şu şekildedir:

if (kosul) { 
Islemler;
}
else{
DigerIslem;
}

ELSE IF Yapısı

Else-If karar yapıları, birbiri altında listelenen çoklu karar yapılarının kullanımını tanımlamak için kullanılan terimdir. Hatırlarsanız, If ve Else yapılarını kullanabileceğimiz iki durum vardı. Yine de, değişkenlerin düzenleneceği dönemlerde meydana gelebilecek ikiden fazla olay varsa Else-If karar yapısı kullanılır.

if (1. kosul) { 
islemler 1;
}
else if (2. kosul) {
islemler 2;
}
else if (3. kosul) {
islemler 3;
}
else {
diger_islemler;
}

Yukarıdaki yapıya göre değişkenin aralıkları toplam 4 durum alabilir. Farklı bir If yapıcısı ile her koşul yakalanmaya çalışılır. Bu ön koşulların hiçbiri karşılanmazsa, sonuçta Else yapısı tek başına kullanılırsa blok çalışmaya devam eder. Else-If yapısının en önemli düşüncesi, mantıksal hataları önlemek için blokların doğru şekilde düzenlenmesidir. Bloklar, en dar aralığın önce gelmesi gerektiğini belirten yönergeye göre yukarıdan aşağıya doğru düzenlenmelidir.

Else-If yapısını daha iyi anlamak için C++ üzerinden bir örnek yapalım. Okullarda alınan derslerde Else-If yapısını daha iyi anlamak için hep verilen bir örnek vardır. Alınan sınav puanına göre verilen harf notu hesaplama. Bu programda if-else ile basit şekilde harf notu hesaplayacağız.

if (1. kosul) { 
islemler 1;
}
else if (2. kosul) {
islemler 2;
}
else if (3. kosul) {
islemler 3;
}
else {
diger_islemler;
}

Yukarıdaki yapıya göre değişkenin aralıkları toplam 4 durum alabilir. Farklı bir If yapıcısı ile her koşul yakalanmaya çalışılır. Bu ön koşulların hiçbiri karşılanmazsa, sonuçta Else yapısı tek başına kullanılırsa blok çalışmaya devam eder. Else-If yapısının en önemli düşüncesi, mantıksal hataları önlemek için blokların doğru şekilde düzenlenmesidir. Bloklar, en dar aralığın önce gelmesi gerektiğini belirten yönergeye göre yukarıdan aşağıya doğru düzenlenmelidir.

Else-If yapısını daha iyi anlamak için C++ üzerinden bir örnek yapalım. Okullarda alınan derslerde Else-If yapısını daha iyi anlamak için hep verilen bir örnek vardır. Alınan sınav puanına göre verilen harf notu hesaplama. Bu programda if-else ile basit şekilde harf notu hesaplayacağız.

#include<iostream>
using namespace std;
int main(){
int puan;
cout<<"Sınav Puanını Girin : ";
cin>>puan;
if(puan>100){
cout<<"100' den büyük değer girmeyin"<<endl;
}
else if(puan>=85)
{
cout<<"A"<<endl;
}
else if(puan>=75){
cout<<"B"<<endl;
}
else if(puan>=60){
cout<<"C"<<endl;
}
else if(puan>=45){
cout<<"D"<<endl;
}
else if(puan>=30){
cout<<"E"<<endl;
}
else if(puan>=0){
cout<<"F"<<endl;
}
else{
cout<<"Sıfır' dan Küçük Değer Girdiniz";
}}

Bu programın çıktısı aşağıdaki gibidir:

Switch-Case Yapısı

Switch-Case karar yapısının genel amacı, değişkenler için olası değerlere dayalı olarak programı farklı bir yönde hareket ettirmektir. If, Switch-Case karar yapısının izin verdiği her kontrolü uygulamak için kullanılabilir. Yine de, okunması If yapısından daha kolay olduğu için tavsiye edilirler. Bir Nesne Yönelimi konusu olan enumeration türleri, Switch-Case yapıcısından önemli ölçüde yararlanır. Ancak switch-case, veri kaybı olasılığı nedeniyle double ve float gibi ondalık değerlerle kullanılamaz. Ancak, içsel doğası gereği, switch-case karar yapısı büyüklük veya küçüklük gibi kısıtlamalara izin vermez. Sadece eşitliğin sağlandığı durumlarda uygulanabilirler. Genel yapısı aşağıdaki gibidir:

switch (degisken){
case [deger1] : islemler1; break;
case [deger2] : islemler2; break;
case [deger3] : islemler3; break;
}

Hadi şimdi JAVA ile haftanın günlerini switch/case yapısı kullanarak oluşturalım.

import java.util.Scanner;
public class HaftanınGünleri {
public static void main(String[] args)
{
int gun;
System.out.println(“Lütfen 1 ve 7 arasında bir sayı giriniz…”);
Scanner p = new Scanner(System.in);
gun = p.nextInt();
switch(gun) {
case 1:
System.out.println(“Pazartesi”);
break;
case 2:
System.out.println(“Salı”);
break;
case 3:
System.out.println(“Çarşamba”);
break;
case 4:
System.out.println(“Perşembe”);
break;
case 5:
System.out.println(“Cuma”);
break;
case 6:
System.out.println(“Cumartesi”);
break;
case 7:
System.out.println(“Pazar”);
break;
default:
System.out.println(“1-7 arası değer girmediniz. HATA var”);
break;
}
}
}

Programın çıktısı aşağıdaki gibidir:

Koşul bloklarının sonundaki break, Switch-Case yapısında dikkate alınması gereken en önemli faktördür. Break anahtar sözcüğü olmayan switch-case yapılarında, değişkenin değeri ne olursa olsun, işlemeye başlayan koşul bloğundan sonraki tüm koşul blokları aynı şekilde işlenir. Sonuç olarak, amaçlanan senaryo doğru bir şekilde tespit edilemez ve yazılım bir mantık hatası geliştirir.

Önceki Else blogundan hatırlarsanız, If yapılarında hiçbir koşulun sağlanmadığı durumda else koşulu sağlanıyordu. default bloğu, Switch-Case yapısındaki aynı amacı gerçekleştiren bloktur. Yakalanacak kriterlerden herhangi birinin olmaması durumunda, varsayılan blok çalıştırılır.

Bu yazıda kısaca programlamada koşullu yapıları yani if, else-if ve Switch-Case mantığını gördük. Vakit ayırıp okuduğunuz için teşekkür ederim. Serinin bir sonraki bölümünde görüşmek üzere.

Herhangi bir sorunuz olursa veya benimle iletişim kurmak isterseniz tüm sosyal medya hesaplarım aşağıdaki linkte yer alıyor.

--

--