Menu
Coddy logo textTech

Yardımcı Metotlar

Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 10 / 61.

Şimdiye kadar, yapı verilerini değiştiren (player_take_damage gibi) ve onları yalnızca görüntüleyen işlevleri gördük. Ancak başka bir önemli kategori daha var: hiçbir şeyi değiştirmeden yapı üyelerinden türetilmiş değerleri hesaplayan işlevler.

Genişlik ve yüksekliği depolayan bir Rectangle yapısını düşünün. Alan depolanmaz: gerektiğinde hesaplanır:

typedef struct {
    double width;
    double height;
} Rectangle;

double rectangle_area(const Rectangle *self) {
    return self->width * self->height;
}

double rectangle_perimeter(const Rectangle *self) {
    return 2 * (self->width + self->height);
}

Bunlar yardımcı metotlardır. Struct'ın mevcut verilerini alır ve yeni bir değer üretirler. Yalnızca okudukları, hiçbir zaman yazmadıkları için const işaretçileri kullandıklarına dikkat edin. Hesaplanan sonuç struct içinde saklanmak yerine döndürülür.

Rectangle box = {5.0, 3.0};
printf("Area: %.1f\n", rectangle_area(&box));       // 15.0
printf("Perimeter: %.1f\n", rectangle_perimeter(&box)); // 16.0

Bu kalıp, yapılarınızdaki gereksiz yükü azaltır: yalnızca temel verileri depolayın ve diğer her şeyi gerektiğinde hesaplayın. Ayrıca türetilmiş değerlerin mevcut durumla her zaman tutarlı olmasını sağlar.

challenge icon

Görev

Kolay

Depolanan verilerden türetilmiş değerleri hesaplayan bir Circle modülü oluşturalım. Yapı üyelerini değiştirmeden onlardan sonuç hesaplayan işlevler olan yardımcı yöntemleri yazma pratiği yapacaksınız.

Üç dosya oluşturacaksınız:

  • circle.h: Tek bir Circle üyesine sahip bir double radius yapısı bildirin. Ayrıca iki yardımcı yöntem bildirin:
    • circle_area: Circle'a yönelik bir const işaretçisi alır ve alanı döndürür
    • circle_circumference: Circle'a yönelik bir const işaretçisi alır ve çevreyi döndürür
    CIRCLE_H sembolüyle include guard kullanın.
  • circle.c: Her iki yardımcı yöntemi de uygulayın. Hesaplamalar için pi değeri olarak 3.14159 kullanın. Alan formülü pi * radius * radius, çevre formülü ise 2 * pi * radius şeklindedir. Her iki işlev de yalnızca yarıçapı okumalıdır: onu asla değiştirmeyin.
  • main.c: Bir Circle oluşturun ve özelliklerini hesaplayıp görüntülemek için yardımcı yöntemleri kullanın.

Bir girdi alacaksınız: dairenin radius değeri (double olarak).

Ana dosyanızda, verilen yarıçapla bir Circle başlatın, ardından alanı ve çevreyi hesaplayıp yazdırmak için yardımcı yöntemlerinizi kullanın.

Sonuçları şu biçimde yazdırın:

Area: {area}
Circumference: {circumference}

Her iki değer için de iki ondalık basamak görüntülemek üzere %.2f kullanın.

Örneğin, yarıçap 5.0 olduğunda çıktı şöyle olur:

Area: 78.54
Circumference: 31.42

Kendin dene

#include <stdio.h>
#include "circle.h"

int main() {
    double radius;
    scanf("%lf", &radius);
    
    // TODO: Verilen yarıçap ile bir Circle struct oluştur
    
    // TODO: Use circle_area and circle_circumference helper methods
    // sonuçları hesaplamak ve yazdırmak için
    
    // Yazdırma formatı:
    // printf("Area: %.2f\n", ...);
    // printf("Circumference: %.2f\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.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi