Menu
Coddy logo textTech

Struct'lar ile typedef Kullanımı

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

typedef kullanımının en pratik uygulamalarından biri, struct türleri için takma adlar oluşturmaktır. Bu, o türde bir değişken tanımladığınız her seferde struct anahtar sözcüğünü tekrar tekrar yazma gereğini ortadan kaldırarak kodunuzu daha temiz ve okunabilir hâle getirir.

typedef ile bir struct tanımını birleştirdiğinizde, doğrudan struct'a başvuran yeni bir tür adı oluşturabilirsiniz. Sözdizimi şöyledir:

typedef struct Point {
    int x;
    int y;
} Point;

Artık bir Point değişkenine ihtiyaç duyduğunuz her seferde struct Point p1; yazmak yerine, yalnızca Point p1; yazabilirsiniz. Both bildirim de tamamen aynı şeyi gerçekleştirir, ancak typedef sürümü daha kısa ve okunması daha kolaydır.

Bu yaklaşım, özel veri türleriyle sık sık çalıştığınız daha büyük programlarda özellikle değerlidir. Kodunuzun diğer programlama dillerine daha çok benzemesini sağlar ve programınız boyunca tekrar tekrar struct yazmanın oluşturduğu görsel karmaşayı azaltır.

challenge icon

Görev

Kolay

Basit bir kitap envanter sistemi oluşturmak için typedef ile struct'ları kullanmayı gösteren bir C programı oluşturun. Programınız şunları yapmalıdır:

  1. Aşağıdaki üyelere sahip Book adlı bir struct tanımlayın:
    • Bir tamsayı id
    • 50 boyutunda bir karakter dizisi title
    • Bir float price
    • Bir tamsayı quantity
  2. struct Book için Book adlı bir tür takma adı oluşturmak üzere typedef kullanın
  3. main işlevinde:
    • book1 ve book2 adlı, Book türünde iki değişken tanımlayın
    • İlk book için girdiyi şu sırayla okuyun: ID, title, price, quantity
    • Bu değerleri book1 üyelerine atayın
    • İkinci book için girdiyi şu sırayla okuyun: ID, title, price, quantity
    • Bu değerleri book2 üyelerine atayın
    • Her iki book için bilgileri tam olarak şu biçimde yazdırın:
      • Book 1: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
      • Book 2: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
    • Her book'un envanterinin toplam değerini (price × quantity) tam olarak şu biçimde hesaplayıp yazdırın:
      • Book 1 Total Value: [total_value]
      • Book 2 Total Value: [total_value]
    • Her iki book'un combined envanter değerini tam olarak şu biçimde hesaplayıp yazdırın: Combined Inventory Value: [combined_value]
    • Hangi book'un toplam değerinin daha yüksek olduğunu belirleyip yazdırın:
      • book1'in toplam değeri daha yüksekse: Book 1 has higher value yazdırın
      • book2'nin toplam değeri daha yüksekse: Book 2 has higher value yazdırın
      • Her ikisinin değeri equal ise: Both books have equal value yazdırın

Bu challenge, struct'larla typedef kullanmanın programınız boyunca tekrar tekrar struct Book yazma gerekliliğini nasıl ortadan kaldırdığını gösterir. Değişkenleri struct Book book1; olarak tanımlamak yerine, basitçe Book book1; yazabilirsiniz; bu da kodunuzu daha temiz ve okunabilir hâle getirir. Struct tanımını typedef ile birleştirme, struct üyeleriyle çalışma ve struct verilerini kullanarak calculations gerçekleştirme pratiği yapacaksınız.

Kendin dene

#include <stdio.h>
#include <string.h>

// TODO: struct ve typedef'inizi burada tanımlayın

int main() {
    // TODO: Book değişkenlerinizi burada bildirin
    
    // İlk kitap için girişi oku
    int id1, quantity1;
    char title1[50];
    float price1;
    
    scanf("%d", &id1);
    scanf("%s", title1);
    scanf("%f", &price1);
    scanf("%d", &quantity1);
    
    // TODO: book1 üyelerine değerleri atayın
    
    // İkinci kitap için girişi oku
    int id2, quantity2;
    char title2[50];
    float price2;
    
    scanf("%d", &id2);
    scanf("%s", title2);
    scanf("%f", &price2);
    scanf("%d", &quantity2);
    
    // TODO: book2 üyelerine değerleri atayın
    
    // TODO: Kitap bilgilerini yazdırın, değerleri hesaplayın ve karşılaştı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

Kendi başına pratik yap: Online C derleyicisi