Day 66 Prakerin Di Excellent ~ Memisahkan Huruf Vokal dan Konsonan Dengan Program Golang

Hari ke- 66 PKL:  Memisahkan Huruf Vokal dan Konsonan Dengan Program Golang

Pada hari Jumat minggu kemarin saya diberi tugas saat sedang senggang dan ternyata tugas kali ini kembali lagi dengan program Golang. 

Tugas kali ini diberikan oleh Mas Ridwan soalnya sebagai berikut:

Buatlah sebuah program yang menerima input berupa kalimat dari pengguna. Program harus:
- Menghitung jumlah huruf vokal dan konsonan dalam kalimat.
- Menghitung total nilai huruf konsonan berdasarkan posisinya dalam alfabet (a=1, b=2, ..., z=26) dan tampilkan hasilnya.

Contoh kalimat:
"Algoritma adalah dasar pemrograman"

Contoh output:
Jumlah huruf vokal: 12
Jumlah huruf konsonan: 19
Total nilai konsonan: 237

Setelah diberikan soal tersebut Mas Ridwan melakukan deal dengan saya untuk nanti programnya di riview oleh Mas Ridwan. Saya dan Mas Ridwan pun sepakat untuk meriview tugas saya di hari Rabu dini hari.

Saya akan menjelaskan sedikit step by step untuk menyelesaikan soal tersebut.

Berikut adalah langkah-langkah untuk menyelesaikan program di atas:

  • Program meminta input dari pengguna berupa kalimat.
  • Input tersebut kemudian diolah dengan menghapus spasi atau karakter newline di akhir.
  • Siapkan variabel untuk menyimpan jumlah huruf vokal, jumlah huruf konsonan, dan total nilai huruf konsonan berdasarkan posisi dalam alfabet.
  • Lakukan loop pada setiap karakter dalam kalimat yang diinput.
  • Jika karakter tersebut merupakan huruf vokal, tambahkan ke jumlah vokal.
  • Jika karakter merupakan huruf konsonan, tambahkan ke jumlah konsonan dan hitung nilainya berdasarkan posisinya dalam alfabet.
  • Tampilkan hasil: Jumlah huruf vokal, Jumlah huruf konsonan Dan Total nilai huruf konsonan.
Setelah menyusun step by step kita bisa mulai menyusun programnya.

Programnya seperti berikut:
package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	// Langkah 1: Menerima input dari pengguna menggunakan bufio
	reader := bufio.NewReader(os.Stdin)
	fmt.Println("Masukkan kalimat:")
	input, _ := reader.ReadString('\n')
	input = strings.TrimSpace(input) // Menghapus karakter newline dari input

	vokal := "aeiouAEIOU"
	jumlahVokal, jumlahKonsonan, totalNilaiKonsonan := 0, 0, 0

	for _, char := range input {
		if strings.ContainsRune(vokal, char) {
			jumlahVokal++
		} else if (char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') {
			jumlahKonsonan++
			if char >= 'A' && char <= 'Z' {
				char += 'a' - 'A'
			}
			totalNilaiKonsonan += int(char - 'a' + 1)
		}
	}

	fmt.Printf("Jumlah huruf vokal: %d\n", jumlahVokal)
	fmt.Printf("Jumlah huruf konsonan: %d\n", jumlahKonsonan)
	fmt.Printf("Total nilai konsonan: %d\n", totalNilaiKonsonan)
}
Saya akan menjelaskan sedikit terkait program diatas ini

1. Import package
import (
    "bufio"
    "fmt"
    "os"
    "strings"
)
Program mengimpor beberapa paket:

- bufio: Digunakan untuk menerima input dari pengguna secara baris (dengan Reader).
- fmt: Digunakan untuk mencetak hasil ke terminal (Println, Printf).
- os: Digunakan untuk mengakses input/output sistem (seperti os.Stdin untuk input).
- strings: Digunakan untuk memproses string (seperti TrimSpace, ContainsRune).

2. Menerima input dari pengguna menggunakan bufio
func main() {

reader := bufio.NewReader(os.Stdin)
fmt.Println("Masukkan kalimat:")
input, _ := reader.ReadString('\n')
input = strings.TrimSpace(input) // Menghapus karakter newline dari input
- Bufio.NewReader(os.Stdin) membuat objek pembaca (reader) yang akan digunakan untuk membaca input dari pengguna melalui os.Stdin (terminal).
- Reader.ReadString('\n'): Membaca input hingga pengguna menekan tombol "Enter". Input ini akan diakhiri dengan karakter newline \n.
- Strings.TrimSpace(input) digunakan untuk menghapus spasi atau karakter newline yang mungkin ada di awal atau akhir input pengguna.

3. Menyiapkan variabel untuk menyimpan hasil
vokal := "aeiouAEIOU"
jumlahVokal, jumlahKonsonan, totalNilaiKonsonan := 0, 0, 0
- Vokal: String yang berisi semua huruf vokal baik huruf kecil maupun besar (a, e, i, o, u dan variannya dengan huruf kapital).
- JumlahVokal, jumlahKonsonan, totalNilaiKonsonan: Variabel untuk menyimpan jumlah vokal, konsonan, dan total nilai konsonan, yang semuanya diinisialisasi dengan 0.

4. Loop untuk memeriksa setiap huruf
for _, char := range input {
    if strings.ContainsRune(vokal, char) {
        jumlahVokal++
    } else if (char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') {
        jumlahKonsonan++
        if char >= 'A' && char <= 'Z' {
            char += 'a' - 'A' // mengubah ke huruf kecil
        }
        totalNilaiKonsonan += int(char - 'a' + 1) // hitung nilai huruf
    }
}
- Strings.ContainsRune(vokal, char): Mengecek apakah karakter adalah vokal. Jika iya, jumlahVokal bertambah.
- Char >= 'a' && char <= 'z' || char >= 'A' && char <= 'Z': Mengecek apakah karakter adalah huruf alfabet. Jika iya, itu dihitung sebagai konsonan, dan jumlahKonsonan bertambah.
- Char >= 'A' && char <= 'Z': Jika huruf kapital, diubah jadi huruf kecil untuk perhitungan yang konsisten.
- TotalNilaiKonsonan += int(char - 'a' + 1): Menghitung nilai konsonan berdasarkan posisinya dalam alfabet.

5. Menampilkan Hasil
fmt.Printf("Jumlah huruf vokal: %d\n", jumlahVokal)
fmt.Printf("Jumlah huruf konsonan: %d\n", jumlahKonsonan)
fmt.Printf("Total nilai konsonan: %d\n", totalNilaiKonsonan)
Fmt.Printf digunakan untuk mencetak hasil perhitungan:
- JumlahVokal: Jumlah vokal dalam kalimat.
- JumlahKonsonan: Jumlah konsonan dalam kalimat.
- TotalNilaiKonsonan: Total nilai huruf konsonan berdasarkan urutan mereka dalam alfabet.

Mungkin cukup sekian penjelasannya semoga bermanfaat. Sampai jumpa di blog selanjutnya.

BABAI!

Komentar

Postingan Populer