Menu
Coddy logo textTech

Hilfsmethoden

Teil des Abschnitts Objektorientierte Programmierung der C-Journey von Coddy. Lektion 10 von 61.

Bisher haben wir Funktionen gesehen, die Struct-Daten verändern (wie player_take_damage), und Funktionen, die sie einfach anzeigen. Aber es gibt noch eine weitere wichtige Kategorie: Funktionen, die abgeleitete Werte aus Struct-Mitgliedern berechnen, ohne etwas zu verändern.

Betrachte eine Rectangle-Struktur, die Breite und Höhe speichert. Die Fläche wird nicht gespeichert: Sie wird bei Bedarf berechnet:

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);
}

Dies sind Hilfsmethoden. Sie verwenden die vorhandenen Daten der Struktur und erzeugen einen neuen Wert. Beachte, dass sie const-Zeiger verwenden, da sie nur lesen und niemals schreiben. Das berechnete Ergebnis wird zurückgegeben, anstatt in der Struktur gespeichert zu werden.

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

Dieses Muster hält deine Strukturen schlank: Speichere nur die wesentlichen Daten und berechne alles andere bei Bedarf. Außerdem wird sichergestellt, dass abgeleitete Werte immer mit dem aktuellen Zustand übereinstimmen.

challenge icon

Aufgabe

Einfach

Erstelle ein Circle-Modul, das abgeleitete Werte aus gespeicherten Daten berechnet. Du übst das Schreiben von Hilfsmethoden: Funktionen, die Ergebnisse aus Struct-Mitgliedern berechnen, ohne sie zu verändern.

Du erstellst drei Dateien:

  • circle.h: Deklariere ein Circle-Struct mit einem einzigen double radius-Mitglied. Deklariere außerdem zwei Hilfsmethoden:
    • circle_area: akzeptiert einen const-Zeiger auf Circle und gibt die Fläche zurück
    • circle_circumference: akzeptiert einen const-Zeiger auf Circle und gibt den Umfang zurück
    Verwende Include-Guards mit dem Symbol CIRCLE_H.
  • circle.c: Implementiere beide Hilfsmethoden. Verwende für die Berechnungen 3.14159 als Wert von Pi. Die Flächenformel lautet pi * radius * radius, und die Umfangsformel lautet 2 * pi * radius. Beide Funktionen sollen den Radius nur lesen: Ändere ihn niemals.
  • main.c: Erstelle einen Circle und verwende die Hilfsmethoden, um seine Eigenschaften zu berechnen und auszugeben.

Du erhältst eine Eingabe: den Radius des Kreises (als double).

Initialisiere in deiner Hauptdatei einen Circle mit dem gegebenen Radius und verwende anschließend deine Hilfsmethoden, um die Fläche und den Umfang zu berechnen und auszugeben.

Gib die Ergebnisse in diesem Format aus:

Area: {area}
Circumference: {circumference}

Verwende für beide Werte %.2f, um zwei Dezimalstellen anzuzeigen.

Bei einem Radius von 5.0 würde die Ausgabe beispielsweise so aussehen:

Area: 78.54
Circumference: 31.42

Probier es selbst

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

int main() {
    double radius;
    scanf("%lf", &radius);
    
    // TODO: Erstelle ein Circle-Struct mit dem gegebenen Radius
    
    // TODO: Use circle_area and circle_circumference helper methods
    // um die Ergebnisse zu berechnen und auszugeben
    
    // Ausgabeformat:
    // printf("Area: %.2f\n", ...);
    // printf("Circumference: %.2f\n", ...);
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C-Compiler