Rangkuman: Dispatch Kalkulator
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 37 dari 61.
Tantangan
MudahBuat kalkulator menggunakan tabel dispatch. Kamu akan membuat array berisi pointer fungsi yang memetakan kode operasi ke fungsi yang sesuai, lalu menggunakannya untuk melakukan perhitungan.
Tulis program yang:
- Membuat
typedefbernamaOperationuntuk pointer fungsi yang menerima dua parameterintdan mengembalikanint - Mendefinisikan empat fungsi aritmetika:
add: mengembalikan a + bsub: mengembalikan a - bmul: mengembalikan a * bdivide: mengembalikan a / b (pembagian bilangan bulat)
- Di dalam
main, membuat tabel dispatch: array berisi 4 pointer fungsiOperation, dengan indeks 0 adalah add, indeks 1 adalah sub, indeks 2 adalah mul, dan indeks 3 adalah divide - Membaca tiga input: dua bilangan bulat dan kode operasi (0-3)
- Menggunakan kode operasi untuk mengakses tabel dispatch berdasarkan indeks dan memanggil fungsi yang sesuai
- Mencetak hasilnya
Kamu akan menerima tiga input: bilangan pertama, bilangan kedua, dan kode operasi (0 untuk add, 1 untuk sub, 2 untuk mul, 3 untuk divide).
Output kamu harus berupa satu bilangan bulat: hasil operasi:
7Dalam contoh ini dengan input 10, 3, 1: kode operasi 1 memilih sub dari tabel dispatch, jadi kita menghitung 10 - 3 = 7.
Intinya adalah menggunakan pengindeksan array untuk memilih fungsi: tidak perlu pernyataan if atau switch. Tabel dispatch kamu seharusnya seperti ini:
Operation ops[4] = {add, sub, mul, divide};Lalu panggil fungsi menggunakan: ops[code](a, b)
Coba sendiri
#include <stdio.h>
// TODO: Buat typedef bernama 'Operation' untuk pointer ke fungsi
// yang menerima dua parameter int dan mengembalikan int
// TODO: Definisikan empat fungsi aritmetika: add, sub, mul, divide
int main() {
// Baca input
int a, b, code;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &code);
// TODO: Buat tabel pemanggilan fungsi (array berisi 4 pointer ke fungsi Operation)
// Operation ops[4] = { ... };
// TODO: Gunakan kode operasi untuk memanggil fungsi yang sesuai
// dan simpan hasilnya
int result;
// Tampilkan hasilnya sebagai output
printf("%d\n", result);
return 0;
}Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar Pemrograman Modular
file headerProteksi includefile sumberFungsi StatisRingkasan: Kalkulator Modular4Enkapsulasi
Konsep Opaque PointerMendefinisikan Opaque StructGetter dan SetterValidasi pada SetterUlasan: Kotak Rahasia7Pointer Fungsi
Mendeklarasikan Pointer FungsiMemanggil Pointer FungsiTypedef untuk Pointer FungsiMengirim Fungsi sebagai ArgumenRangkuman: Dispatch Kalkulator2Object dan method
Struct sebagai objectPointer 'self'Konsistensi constPointer vs nilaiMethod pembantuRangkuman: Pengelola Point5Proyek: Akun Bank Sederhana
Penyiapan ProyekImplementasi Akun3Siklus Hidup object
Pola KonstruktorPola DestruktorInisialisasi StackSalinan MendalamRangkuman: Pembungkus string6Pewarisan melalui Komposisi
Penyematan StructAturan Anggota PertamaMengakses Anggota ParentUpcastingRekap: Hierarki Bentuk9Proyek: Penggambar Bentuk
Ringkasan ProyekImplementasi LingkaranImplementasi Persegi PanjangPenggunaan PolimorfismeWadah BentukLatihan sendiri: Compiler C online