Menu
CoddyTech

Method pembantu

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 10 dari 61.

Sejauh ini, kita telah melihat fungsi yang mengubah data struct (seperti player_take_damage) dan fungsi yang hanya menampilkannya. Namun, ada kategori penting lainnya: fungsi yang menghitung nilai turunan dari anggota struct tanpa mengubah apa pun.

Perhatikan struct Rectangle yang menyimpan lebar dan tinggi. Luasnya tidak disimpan: luas dihitung saat diperlukan:

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

Ini adalah method pembantu. Method ini mengambil data yang sudah ada di struct dan menghasilkan nilai baru. Perhatikan bahwa method ini menggunakan pointer const karena hanya membaca, tidak pernah menulis. Hasil perhitungannya dikembalikan, bukan disimpan di dalam struct.

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

Pola ini menjaga struct-mu tetap ringkas: simpan hanya data penting, lalu hitung hal lainnya saat diperlukan. Pola ini juga memastikan nilai turunan selalu konsisten dengan keadaan saat ini.

challenge icon

Tantangan

Mudah

Mari buat module Circle yang menghitung nilai turunan dari data yang disimpan. Kamu akan berlatih menulis method pembantu: fungsi yang menghitung hasil dari member struct tanpa mengubahnya.

Kamu akan membuat tiga file:

  • circle.h: Deklarasikan struct Circle dengan satu member double radius. Deklarasikan juga dua method pembantu:
    • circle_area: menerima pointer const ke Circle dan mengembalikan luasnya
    • circle_circumference: menerima pointer const ke Circle dan mengembalikan kelilingnya
    Gunakan include guard dengan simbol CIRCLE_H.
  • circle.c: Implementasikan kedua method pembantu. Untuk perhitungannya, gunakan 3.14159 sebagai nilai pi. Rumus luasnya adalah pi * radius * radius, dan rumus kelilingnya adalah 2 * pi * radius. Kedua fungsi hanya boleh membaca radius: jangan pernah mengubahnya.
  • main.c: Buat Circle dan gunakan method pembantu untuk menghitung dan menampilkan propertinya.

Kamu akan menerima satu input: jari-jari lingkaran (sebagai double).

Di file main-mu, inisialisasi Circle dengan jari-jari yang diberikan, lalu gunakan method pembantumu untuk menghitung dan mencetak luas serta kelilingnya.

Cetak hasilnya dalam format ini:

Area: {area}
Circumference: {circumference}

Gunakan %.2f untuk kedua nilai agar menampilkan dua angka di belakang koma.

Contohnya, dengan jari-jari 5.0, output-nya akan seperti ini:

Area: 78.54
Circumference: 31.42

Coba sendiri

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

int main() {
    double radius;
    scanf("%lf", &radius);
    
    // TODO: Buat struct Circle dengan jari-jari yang diberikan
    
    // TODO: Gunakan method pembantu circle_area dan circle_circumference
    // untuk menghitung dan mencetak hasilnya
    
    // Format cetak:
    // printf("Area: %.2f\n", ...);
    // printf("Circumference: %.2f\n", ...);
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online