Panduan Awal Mengenai Tabel Pencarian dalam C

Hai, para pemula pemrograman! Hari ini, kita akan melihat dunia yang menarik dari tabel pencarian dalam C. Jangan khawatir jika Anda baru dalam pemrograman - saya akan memandu Anda melalui konsep ini secara langkah demi langkah, seperti yang telah saya lakukan untuk ribuan murid selama tahun-tahun mengajar. Jadi, mari kita mulai perjalanan ini bersama!

C - Lookup Tables

Apa Itu Tabel Pencarian?

Sebelum kita masuk ke contoh, mari kita memahami apa itu tabel pencarian. Bayangkan Anda berada di perpustakaan, dan instead of searching through every book to find what you need, you use a catalog that tells you exactly where each book is located. Itu sebenarnya apa yang dilakukan tabel pencarian dalam pemrograman - itu adalah struktur data yang menggantikan komputasi runtime dengan operasi indeks array yang lebih sederhana.

Sekarang, mari kita jelajahi konsep ini melalui beberapa contoh praktis.

Contoh 1: Hari Dalam Seminggu

Mari kita mulai dengan contoh sederhana - tabel pencarian untuk hari dalam seminggu.

#include <stdio.h>

int main() {
const char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int day_number;

printf("Masukkan nomor hari (0-6): ");
scanf("%d", &day_number);

if (day_number >= 0 && day_number <= 6) {
printf("Hari adalah: %s\n", days[day_number]);
} else {
printf("Nomor hari tidak valid!\n");
}

return 0;
}

Dalam contoh ini, kita membuat array days yang menyimpan nama-nama minggu. Ketika pengguna memasukkan nomor antara 0 dan 6, kita dapat cepat mengambil nama hari yang sesuai menggunakan indeks array. Ini jauh lebih cepat dan rapih daripada menggunakan serangkaian pernyataan if-else!

Contoh 2: Penerjemah Morse Code

Sekarang, mari kita coba sesuatu yang sedikit lebih kompleks - penerjemah Morse code.

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

int main() {
const char *morse[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};
char text[100];
int i;

printf("Masukkan kata dalam huruf besar: ");
scanf("%s", text);

for (i = 0; i < strlen(text); i++) {
if (isalpha(text[i])) {
printf("%s ", morse[text[i] - 'A']);
}
}
printf("\n");

return 0;
}

Di sini, kita membuat tabel pencarian untuk Morse code. Setiap kode Morse huruf disimpan di array morse. Ketika pengguna memasukkan kata, kita menerjemahkan setiap huruf kepadanan Morse code nya menggunakan nilai ASCII huruf sebagai indeks ke tabel pencarian kita.

Contoh 3: Konversi Suhu

Mari kita buat tabel pencarian untuk konversi cepat Fahrenheit ke Celsius.

#include <stdio.h>

#define TABLE_SIZE 101

int main() {
float celsius_table[TABLE_SIZE];
int i;

// Isi tabel pencarian
for (i = 0; i < TABLE_SIZE; i++) {
celsius_table[i] = (i - 32) * 5.0 / 9.0;
}

int fahrenheit;
printf("Masukkan suhu dalam Fahrenheit (0-100): ");
scanf("%d", &fahrenheit);

if (fahrenheit >= 0 && fahrenheit <= 100) {
printf("%.2f°C\n", celsius_table[fahrenheit]);
} else {
printf("Suhu di luar rentang!\n");
}

return 0;
}

Dalam contoh ini, kita pra-kalkulasi nilai Celsius untuk suhu Fahrenheit dari 0 ke 100 dan menyimpannya di tabel pencarian. Ini memungkinkan konversi suhu instan tanpa perlu melakukan kalkulasi runtime.

Contoh 4: Fungsi Trigonometri

Tabel pencarian sangat berguna untuk operasi yang secara komputasi mahal seperti fungsi trigonometri. Ini adalah contoh tabel pencarian sinus:

#include <stdio.h>
#include <math.h>

#define TABLE_SIZE 360
#define PI 3.14159265

int main() {
float sine_table[TABLE_SIZE];
int i;

// Isi tabel pencarian
for (i = 0; i < TABLE_SIZE; i++) {
sine_table[i] = sin(i * PI / 180);
}

int angle;
printf("Masukkan sudut dalam derajat (0-359): ");
scanf("%d", &angle);

if (angle >= 0 && angle < 360) {
printf("sin(%d°) = %.4f\n", angle, sine_table[angle]);
} else {
printf("Sudut di luar rentang!\n");
}

return 0;
}

Contoh ini pra-kalkulasi nilai sinus untuk sudut dari 0 ke 359 derajat. Menggunakan tabel pencarian ini, kita dapat cepat mengambil nilai sinus tanpa melakukan fungsi sinus yang secara komputasi mahal di runtime.

Tabel Pencarian dalam Display LED 7-Segment

Akhirnya, mari kita lihat bagaimana tabel pencarian dapat digunakan dalam aplikasi praktis - menggerakkan display LED 7-segment.

#include <stdio.h>

#define SEGMENTS 7

int main() {
// Tabel pencarian untuk display LED 7-segment (0-9)
const unsigned char seven_seg_digits[10][SEGMENTS] = {
{1, 1, 1, 1, 1, 1, 0},  // 0
{0, 1, 1, 0, 0, 0, 0},  // 1
{1, 1, 0, 1, 1, 0, 1},  // 2
{1, 1, 1, 1, 0, 0, 1},  // 3
{0, 1, 1, 0, 0, 1, 1},  // 4
{1, 0, 1, 1, 0, 1, 1},  // 5
{1, 0, 1, 1, 1, 1, 1},  // 6
{1, 1, 1, 0, 0, 0, 0},  // 7
{1, 1, 1, 1, 1, 1, 1},  // 8
{1, 1, 1, 1, 0, 1, 1}   // 9
};

int digit;
printf("Masukkan digit (0-9): ");
scanf("%d", &digit);

if (digit >= 0 && digit <= 9) {
printf("Display 7-segment untuk %d:\n", digit);
for (int i = 0; i < SEGMENTS; i++) {
printf("%c ", seven_seg_digits[digit][i] ? '*' : ' ');
}
printf("\n");
} else {
printf("Digit tidak valid!\n");
}

return 0;
}

Dalam contoh ini, kita menggunakan tabel pencarian 2D untuk menyimpan pola segment untuk digit 0-9 di display LED 7-segment. Setiap baris mewakili digit, dan setiap kolom mewakili segment (1 untuk nyala, 0 untuk mati). Ini memungkinkan kita untuk cepat mengambil pola yang sesuai untuk setiap digit.

Kesimpulan

Tabel pencarian adalah alat yang kuat dalam senjata pemrogrammer. Mereka dapat meningkatkan performa secara signifikan dengan menukar memori untuk kecepatan, khususnya dalam situasi di mana komputasi kompleks atau sering diulang. Ketika Anda terus melanjutkan perjalanan pemrograman Anda, Anda akan menemukan banyak aplikasi lain untuk tabel pencarian.

Ingat, latihan membuat sempurna! Cobalah membuat tabel pencarian Anda sendiri untuk berbagai situasi. Semoga sukses dalam pemrograman, dan jangan ragu untuk menghubungi saya jika Anda memiliki pertanyaan!

Credits: Image by storyset