Angka Romawi adalah sistem penulisan angka yang berasal dari Roma Kuno. Meskipun terkesan kuno, angka Romawi masih digunakan hingga saat ini dalam berbagai konteks, seperti penomoran bab buku, acara resmi, hingga tahun rilis film. Sistem ini menggunakan huruf untuk mewakili nilai tertentu, dan terdapat beberapa aturan khusus dalam penulisannya.
Berikut adalah huruf dan nilai dasar dalam angka Romawi:
- I = 1
- V = 5
- X = 10
- L = 50
- C = 100
- D = 500
- M = 1.000
Aturan Penulisan Angka Romawi:
Penambahan: Jika huruf kecil berada di kanan huruf besar, maka nilainya ditambahkan.
Contoh: VI = 5 + 1 = 6, XIII = 10 + 3 = 13Pengurangan: Jika huruf kecil berada di kiri huruf besar, maka nilainya dikurangkan.
Contoh: IV = 5 - 1 = 4, IX = 10 - 1 = 9Pengulangan:
- Huruf I, X, C, dan M dapat diulang hingga 3 kali. Contoh: III = 3, XXX = 30
- Huruf V, L, dan D tidak boleh diulang.
Dengan memahami aturan-aturan ini, kita bisa melakukan konversi angka desimal menjadi angka Romawi. Nah, dalam contoh berikut, kita akan membuat program sederhana menggunakan Golang untuk melakukan konversi angka otomatis berdasarkan aturan tersebut.
Berikut adalah kode program lengkap untuk mengonversi angka desimal ke angka Romawi menggunakan bahasa pemrograman Go.
Penjelasan Program :
1. Deklarasi Package dan Import
package mainimport "fmt"
package main: Menunjukkan bahwa ini adalah paket utama dari program Go yang dapat dieksekusi. Setiap program Go harus memiliki paket utama untuk dijalankan.import "fmt": Mengimpor paketfmt, yang berfungsi untuk menangani input dan output, seperti mencetak ke layar dan membaca input dari pengguna.
2. Fungsi keRomawi
func keRomawi(Number int) string: Mendefinisikan fungsi bernamakeRomawiyang menerima parameterNumberbertipe integer dan mengembalikan hasil dalam bentuk string. Fungsi ini bertanggung jawab untuk mengonversi angka desimal ke angka Romawi.var hasil string: Mendeklarasikan variabelhasilyang akan menyimpan hasil konversi dalam bentuk string. Variabel ini diinisialisasi sebagai string kosong.diaz := []struct {...}: Membuat slice bernamadiazyang berisi struktur dengan dua elemen:nilai(tipe int) dansimbol(tipe string). Slice ini menyimpan pasangan nilai desimal dan simbol Romawi yang sesuai. Struktur ini memudahkan pengelompokan data.
3. Inisialisasi Data dalam Slice
{{1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"},{100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"},{10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"},}
- Setiap pasangan nilai dan simbol dalam struktur di atas diurutkan dari yang terbesar ke yang terkecil. Ini penting untuk proses konversi yang efektif, karena kita mulai dari nilai tertinggi untuk mengurangi angka input.
4. Proses Konversi
for _, i := range diaz {for Number >= i.nilai {hasil += i.simbolNumber -= i.nilai}}
for _, i := range diaz: Mengiterasi setiap elemen dalam slicediaz. Variabeliakan berisi setiap pasangan nilai dan simbol daridiaz.for Number >= i.nilai: Memeriksa apakahNumber(angka desimal yang ingin dikonversi) lebih besar atau sama dengani.nilai. Jika ya, langkah-langkah berikut dilakukan:hasil += i.simbol: Menambahkan simbol Romawi yang sesuai ke dalam variabelhasil.Number -= i.nilai: Mengurangi nilaiNumberdengan nilaii.nilai. Proses ini terus berlangsung hinggaNumbermenjadi lebih kecil darii.nilai.
Setelah semua iterasi selesai, fungsi mengembalikan string
hasil, yang berisi representasi angka Romawi dari input.
5. Fungsi main()
func main() {var Number intfmt.Printf("Masukkan Angka : ")fmt.Scan(&Number)
func main(): Fungsi utama yang menjadi titik awal eksekusi program.var Number int: Mendeklarasikan variabelNumberbertipe integer untuk menyimpan input angka dari pengguna.fmt.Printf("Masukkan Angka : "): Mencetak pesan ke layar yang meminta pengguna untuk memasukkan angka.fmt.Scan(&Number): Membaca input dari pengguna dan menyimpannya ke dalam variabelNumber. Simbol&digunakan untuk mendapatkan alamat variabelNumber, sehingga fungsiScandapat mengubah nilainya.
6. Validasi Input
if Number < 1 || Number > 1000 {fmt.Println("Masukkan Angka antara 1 sampai 1000")} else {fmt.Printf("Angka %d dalam Romawi : %s ", Number, keRomawi(Number))}}
if Number < 1 || Number > 1000: Memeriksa apakah input yang dimasukkan berada dalam rentang yang valid (1 hingga 1000).fmt.Println("Masukkan Angka antara 1 sampai 1000"): Jika input tidak valid, mencetak pesan kesalahan.else: Jika input valid, memanggil fungsikeRomawi(Number)untuk melakukan konversi dan mencetak hasilnya.fmt.Printf("Angka %d dalam Romawi : %s ", Number, keRomawi(Number)): Mencetak hasil konversi dengan format yang sesuai.
Contoh Output Program
Jika pengguna memasukkan angka 456, output yang dihasilkan adalah : CDLVI


Komentar
Posting Komentar