Menu
Coddy logo textTech

Struct Başlatma

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 42 / 63.

Yapı (struct) değişkenleri oluşturup ardından üyelerine tek tek değer atayabilseniz de, C başlangıç değerlerini atamak için daha kullanışlı bir yöntem sunar. Süslü parantezler içine alınmış bir başlatıcı listesi kullanarak, bir struct değişkenine tanımlandığı anda ilk değerlerini verebilirsiniz.

Struct ilklendirme sözdizimi şöyledir:

struct StructureName variableName = {value1, value2, ...};

Oluşturduğumuz Point struct örneğini kullanarak, onu tek bir temiz satırda tanımlayabilir ve başlatabilirsiniz:

struct Point p1 = {10, 20};

Bu, x değeri 10 ve y değeri 20 olarak ayarlanmış p1 adlı bir Point değişkeni oluşturur. Başlatıcı listesindeki değerler, struct tanımında bildirildikleri sırayla struct üyelerine atanır.

Bu ilklendirme yaklaşımı, yalnızca ayrı atamalardan daha kısa ve öz olmakla kalmaz, aynı zamanda struct'ınızın rastgele çöp veriler yerine anlamlı değerlerle başlamasını sağlar. Özellikle başlangıç değerlerini derleme zamanında bildiğinizde ve kullanıma hazır struct değişkenlerini verimli bir şekilde oluşturmak istediğinizde oldukça kullanışlıdır.

challenge icon

Görev

Kolay

Başlatıcı listelerini (initializer lists) kullanarak struct başlatmayı gösteren bir C programı oluşturun. Programınız şunları yapmalıdır:

  1. Aşağıdaki üyelere sahip Employee adında bir struct tanımlayın:
    • Çalışan kimliğini saklamak için bir tam sayı id
    • Departman adını saklamak için 15 boyutunda bir karakter dizisi department
    • Hizmet yılını saklamak için bir tam sayı yearsOfService
    • Çalışanın maaşını saklamak için bir ondalıklı sayı salary
  2. Aşağıdaki verileri içeren başlatıcı listelerini kullanarak üç Employee değişkeni oluşturun:
    • emp1: ID 101, departman "Engineering", 5 yıl hizmet, maaş 75000.50
    • emp2: ID 102, departman "Marketing", 3 yıl hizmet, maaş 65000.25
    • emp3: ID 103, departman "Sales", 8 yıl hizmet, maaş 80000.75
  3. Her çalışanın bilgisini tam olarak şu formatta yazdırın:
    • Employee 1:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 2:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 3:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
  4. Üç çalışanın toplam maaşını şu formatta hesaplayın ve yazdırın: Total Salary: [total]
  5. Ortalama hizmet yılını şu formatta hesaplayın ve yazdırın: Average Years of Service: [average]

Bu görev, struct değişkenlerini tek bir satırda tanımlayıp başlattığınız başlatıcı listelerini kullanarak struct başlatma konusundaki anlayışınızı test eder. Başlatıcı listesindeki değerler, struct tanımındaki üyelerin bildirildiği sırayla verilmelidir.

Beklenen çıktınız şu şekilde olmalıdır:

Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33

Kopya kağıdı

Bir struct değişkenini, süslü parantezler içine alınmış bir başlatıcı listesi (initializer list) kullanarak bildirim sırasında başlatabilirsiniz:

struct StructureName variableName = {value1, value2, ...};

Bir Point struct'ı ile örnek:

struct Point p1 = {10, 20};

Başlatıcı listesindeki değerler, struct tanımında bildirildikleri sırayla struct üyelerine atanır. Bu yaklaşım, ayrı atamalardan daha kısa ve öz bir yöntemdir ve struct'ınızın rastgele çöp veriler yerine anlamlı değerlerle başlamasını sağlar.

Kendin dene

#include <stdio.h>

// YAPILACAK: Employee yapısını (struct) burada tanımlayın

int main() {
    // YAPILACAK: Başlatıcı listelerini kullanarak üç adet Employee değişkeni oluşturun
    
    // YAPILACAK: Her bir çalışanın bilgilerini yazdırın
    
    // YAPILACAK: Toplam maaşı ve ortalama hizmet yılını hesaplayıp yazdırın
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler