1 Koşullu İfadelerin Genel Bakışı

Koşullu ifadeler, programlamada programların mantıksal akışını kontrol etmek için önemli araçlardır. Golang'da koşullu ifadeler diğer programlama dillerine benzer, ancak kendi özelliklerine sahiptir. Bu ifadeler, doğru veya yanlış koşullara bağlı olarak hangi kodun çalıştırılacağına karar vermeye olanak tanır ve kodun esnekliğini ve bakımını büyük ölçüde arttırır.

2 if İfadesi

2.1 if İfadesinin Temel Kullanımı

if ifadesi, Go dilindeki en temel koşullu ifadedir. Sözdizimi aşağıdaki gibidir:

if koşul {
    // Koşul doğru olduğunda çalıştırılacak kod
}

İşte basit bir örnek:

package main

import "fmt"

func main() {
    x := 10
    if x > 5 {
        fmt.Println("x 5'ten büyük")
    }
}

Bu kod, x'in 5'ten büyük olup olmadığını kontrol edecek ve eğer öyleyse, yazdırma işlemini gerçekleştirecektir.

2.2 Koşullu İfadeler

Koşullu ifadeler, karşılaştırma operatörleri (örneğin, ==, !=, <, >, <=, >=) ve mantıksal operatörler (örneğin, && (VE), || (VEYA), ! (DEĞİL)) içerir.

Örneğin, bir değişkenin belirli bir aralıkta olup olmadığını kontrol etmek için:

y := 20
if y >= 10 && y <= 30 {
    fmt.Println("y 10 ile 30 arasında")
}

Yukarıdaki koşullu ifade, && mantıksal operatörünü kullanarak y'nin 10 ile 30 arasında olmasını sağlar.

2.3 if...else ve else if Yapısı

if koşulu karşılanmadığında, alternatif bir kod bloğunu çalıştırmak için else kullanabiliriz. else if ise birden fazla koşulu kontrol etmemize olanak tanır. İşte bir örnek:

puan := 88

if puan >= 90 {
    fmt.Println("Mükemmel")
} else if puan >= 80 {
    fmt.Println("İyi")
} else if puan >= 70 {
    fmt.Println("Orta")
} else {
    fmt.Println("Düşük")
}

Bu kod, puan'ın değerine bağlı olarak farklı değerlendirmeleri yazdıracaktır.

3 switch İfadesi

3.1 switch'in Temel Sözdizimi

switch ifadesi, özellikle birden fazla değerin değerlendirilmesi gereken durumlar için uygun olan daha kısa bir koşullu dal ifadesidir. switch ifadesinin temel sözdizimi aşağıdaki gibidir:

switch ifade {
case değer1:
    // değer1 eşleştiğinde çalıştırılacak kod
case değer2:
    // değer2 eşleştiğinde çalıştırılacak kod
default:
    // Varsayılan olarak çalıştırılacak kod
}

Eğer ifade'nin değeri case'den sonra gelen değere eşitse, ilgili kod bloğu çalıştırılacaktır.

3.2 switch Fallthrough

Go'nun switch ifadesinde, her dal, varsayılan olarak bir sonraki duruma geçmez, ancak fallthrough anahtar kelimesi kullanılmadıkça.

switch sayı {
case 1:
    fmt.Println("Bir")
    fallthrough
case 2:
    fmt.Println("İki")
default:
    fmt.Println("Ne Bir Ne İki")
}

Yukarıdaki kodda, eğer sayı 1 ise, case 1 e eşleşmesine rağmen, fallthrough anahtar kelimesinin varlığı nedeniyle program case 2'deki kodu çalıştırmaya devam eder ve "İki"yi yazdırır.

3.3 Tür Dalma ve Özel Dalma

switch ifadesi ayrıca değişken türlerine dayalı dalma (type branching) desteği sunar. Ayrıca, daha karmaşık özel dalma koşullarını oluşturabiliriz.

Tür dalma örneği:

var i interface{} = 1

switch i.(type) {
case int:
    fmt.Println("i bir tam sayıdır")
case float64:
    fmt.Println("i bir float64'tür")
default:
    fmt.Println("i başka bir türdür")
}

İhtiyaç duyulduğunda, daha karmaşık koşullu değerlendirmeleri gerçekleştirmek için özel dalma koşulları yazılabilir.

4 Pratik Egzersiz

Bu bölümde, gerçek dünya problemlerini çözmek için if ve switch ifadelerini kullanma becerinizi derinleştireceğiz. Somut programlama zorluklarıyla, if ve switch ifadelerini kullanarak Golang'daki koşullu ifadelerin anlayışını ve uygulamasını artıracaksınız.

Not Ortalaması Hesaplayıcı

Haydi basit bir not ortalaması hesaplayıcı yazalım. Bu program, kullanıcı tarafından girilen puanına göre karşılık gelen notu belirleyecek ve çıktı olarak verecek. Notlandırma kriterleri şöyle:

  • 90 ve üzeri puanlar için A
  • 80 ile 89 arasındaki puanlar için B
  • 70 ile 79 arasındaki puanlar için C
  • 60 ile 69 arasındaki puanlar için D
  • 60'dan düşük puanlar için F

Bu işlevselliği uygulamak için ya bir if ifadesi ya da bir switch ifadesi kullanabiliriz. İlk olarak, bir if ifadesi kullanarak bir örnek inceleyelim:

package main

import (
	"fmt"
)

func main() {
	var puan int
	fmt.Print("Lütfen puanı girin: ")
	fmt.Scan(&puan)

	if puan >= 90 {
		fmt.Println("Not: A")
	} else if puan >= 80 {
		fmt.Println("Not: B")
	} else if puan >= 70 {
		fmt.Println("Not: C")
	} else if puan >= 60 {
		fmt.Println("Not: D")
	} else {
		fmt.Println("Not: F")
	}
}

Bu kodda, öncelikle kullanıcının girdiği puanı saklamak için bir puan değişkeni bildiriyoruz. Kullanıcının girdisini almak için fmt.Scan işlevini kullanıyoruz. Sonra, puan için karşılık gelen notu belirlemek için birkaç if ve else if ifadesi kullanıyoruz ve notu çıktı olarak vermek için fmt.Println işlevini kullanıyoruz.

Şimdi, bir switch ifadesi kullanarak bir örnek inceleyelim:

package main

import (
	"fmt"
)

func main() {
	var puan int
	fmt.Print("Lütfen puanı girin: ")
	fmt.Scan(&puan)

	switch {
	case puan >= 90:
		fmt.Println("Not: A")
	case puan >= 80:
		fmt.Println("Not: B")
	case puan >= 70:
		fmt.Println("Not: C")
	case puan >= 60:
		fmt.Println("Not: D")
	default:
		fmt.Println("Not: F")
	}
}

Switch ifadesi kullanarak yapılan örnekte, kod yapısı daha kısa ve açıktır. Birçok ardışık if ve else if ifadeleri kullanmaya gerek yoktur; bunun yerine, switch ifadesinden sonra her case'de koşulları doğrudan belirtiriz. Önceki case'in koşuluna uymayan puan, ilgili koşulu karşılayan case'e otomatik olarak geçer veya default durumuna ulaşana kadar devam eder, bu durumda da F notunu yazdırır.

Artık koşullu ifadelerde if ve switch kullanmayı öğrendiniz, kendi programlarınızı yazmaya çalışarak ve prati yaparak anlayışınızı pekiştirebilirsiniz.

Gelecek bölümde, Go dilinde koşullu ifadelerin ustalığını pekiştirmenize yardımcı olacak daha fazla pratik problemi tanıtmaya devam edeceğiz.

Lütfen yukarıdaki kodun eğitim amaçlı olduğunu unutmayın. Pratik uygulamalarda, kullanıcı etkileşimi ve hata işleme gibi faktörlerin daha sağlam hale gelmesi için düşünülmesi gerekmektedir.