# 1.18 Enums

C++'da enum (enumeration), bir değişkenin alabileceği sabit değerler kümesini tanımlamak için kullanılan bir veri türüdür. Enum'lar, kodun okunabilirliğini artırmak ve belirli bir grup sabit değeri daha anlamlı bir şekilde kullanmak için idealdir.

**Enum Tanımlama**

Enum, `enum` anahtar kelimesi ile tanımlanır. Enum tanımı, bir isim ve belirli sabit değerlerden oluşur.

**Örnek: Basit Enum Tanımı**

```cpp
#include <iostream>
using namespace std;

// Enum tanımı
enum Color {
    RED,
    GREEN,
    BLUE
};

int main() {
    // Enum değişkeni tanımlama
    Color favoriteColor;

    // Değeri atama
    favoriteColor = GREEN;

    // Enum değerini yazdırma
    cout << "Favori renk: " << favoriteColor << endl; // 1 yazdırır çünkü GREEN 1'dir

    return 0;
}
```

**Enum ile Özel Değerler Atama**

Enum değerlerine özel değerler atayabilirsiniz. Bu, belirli bir değeri temsil etme ihtiyacınıza göre özelleştirme sağlar.

**Örnek: Özel Değerler Atama**

```cpp
#include <iostream>
using namespace std;

// Enum tanımı
enum Status {
    PENDING = 1,
    IN_PROGRESS = 2,
    COMPLETED = 3
};

int main() {
    // Enum değişkeni tanımlama
    Status taskStatus;

    // Değeri atama
    taskStatus = IN_PROGRESS;

    // Enum değerini yazdırma
    cout << "Görev durumu: " << taskStatus << endl; // 2 yazdırır

    return 0;
}
```

**Enum Kullanımının Avantajları**

* **Okunabilirlik**: Kodunuzu daha anlamlı hale getirir. Sayısal değerlerin yerine açıklayıcı isimler kullanmak, kodu daha okunabilir kılar.
* **Sabit Değerler**: Enum'lar, belirli bir grup sabit değerle çalışmanızı sağlar, böylece hatalı değer atama olasılığını azaltır.

**Enum'lar ile Switch İfadesi Kullanımı**

Enum'lar, `switch` ifadesi ile birlikte kullanıldığında daha etkili bir kontrol yapısı sağlar.

**Örnek: Enum ile Switch İfadesi Kullanımı**

```cpp
#include <iostream>
using namespace std;

// Enum tanımı
enum Direction {
    NORTH,
    SOUTH,
    EAST,
    WEST
};

int main() {
    Direction myDirection = EAST;

    switch (myDirection) {
        case NORTH:
            cout << "Kuzeye gidiyorsunuz." << endl;
            break;
        case SOUTH:
            cout << "Güneye gidiyorsunuz." << endl;
            break;
        case EAST:
            cout << "Doğuya gidiyorsunuz." << endl;
            break;
        case WEST:
            cout << "Batıya gidiyorsunuz." << endl;
            break;
        default:
            cout << "Bilinmeyen yön." << endl;
    }

    return 0;
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yavuzlar.org/egitim/c-plus-plus/2.0-fonksiyonlar/1.18-enums.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
