Menghitung Banyak Huruf, Vokal dan Konsonan dengan C

Kali ini saya akan menunjukan bagaimana membuat sebuah program yang dapat menghitung banyaknya huruf alphabet dari A sampai Z, serta menghitung banyaknya huruf vokal dan konsonan. Bagi yang sedang belajar pemrograman, mungkin artikel ini akan membantu anda untuk belajar atau menyelesaikan tugas pemrograman. Serta dengan sedikit penjelasan yang berguna untuk anda yang nantinya memberikan gambaran bagaimana program ini dibuat.


Membedah alogritma program
Untuk diagram alur program yang akan kita buat, kira-kira begini:
flow_huruf1
Untuk inisialisasi data dan input data, saya rasa tidak susah dan hanya perlu fungsi fgets ke stdin untuk inputnya (gets bisa juga, tetapi tidak disarankan untuk berberapa kompiler dan muncul warning karena berpotensi menyebabkan buffer overflow).

Dan pastikan, nilai semua direset ke nol.

Setelah itu, sekarang saatnya menghitung banyaknya alphabet yang digunakan dan dimasukan ke dalam suatu counter array. Untuk looping penghitungan huruf, bisa diimplementasikan sebagai berikut.

Pada contoh barusan, program akan looping ke semua karakter hingga karakter null-terminator. Untuk menghitung hanya karakter alphabet saja, maka kita perlu mengimplementasikan sebuah fungsi yang menentukan dan menghitung alphabet yang digunakan. Pada kasus ini, fungsi ini saya namai itung_kar.
Adapun alur dari fungsi dari itung_kar ini sebagai berikut:
fungsi_itung_kar
Lalu bagaimana cara mengkonversi karakter alphabet, lalu menjumlahkannya sesuai counter?
Untuk statemen pertama, anda harus paham bagaimana susunan tabel ASCII. Pertama kita buat batasan dengan if, jika karakter diantara indeks ke 64 dan 89 (a dan z besar), maka akan kita tambahkan sehingga menjadi huruf kecil (karena dalam susunan tabel ASCII, a kecil dimulai dari indeks ke 97). Tambahkan saja huruf tersebut dengan dengan hasil indeks_a_kecil – indeks_a_besar – 1. Untuk bagian ini, saya tidak menggunakan fungsi standar dari pemrograman C supaya kode lebih efisien, serta anda dapat belajar bagaimana deret suatu karakter, dan mencegah huruf besar untuk tidak masuk dalam hitungan selanjutnya.  :afro:
Supaya gak mumet kode kita, buat saja macro berikut

Untuk statemen berikutnya, buat batasan if, tetapi untuk huruf kecil (dari indeks 97 ke 122). Jika cocok, kurangi indeks dari char tersebut dengan 97 dan gunakan hasil pengurangan sebagai indeks array counter yang di increment-kan. Lalu lakukan increment pada array dengan indeks yang barusan kita dapatkan tadi.

Hmm, sudah kebayang bagaimana anda bisa mengakses array counter sesuai urutan alphabet? Maka fungsi yang akan kita hasilkan sebagai berikut:

Lanjut, sekarang untuk alur fungsi vokal_kons adalah sebagai berikut.
fungsi_vokal_kons
Karena loopingnya juga ga ribet-ribet amat, berikut kode yang akan kita amati:

Kita melakukan looping dari counter indeks 0 (untuk alphabet A) hingga indeks 25 (untuk alphabet Z). Sebenarnya, kita bisa saja menambahkan langsung counter yang konsonan dijumlahkan dalam variabel konsonan, dan sebaliknya, namun kodenya jadi kepanjangan. Sehingga saya membuat pattern (pola, lihat pada konstanta index_vk), dimana jika indeks yang ditemukan adalah k, maka indeks tersebut adalah untuk konsonan, dan sebaliknya.
Hmm, jangan lupa kode untuk penggunaan fungsi dan cetak outputnya  :cool


Hasil akhir
Berikut adalah hasil program yang telah kita buat  :cendol

Compile dan test hasilnya…
vk_out
Dan akhirnya, semoga artikel ini bermamfaat bagi anda semua. Sampai jumpa di tutorial dan artikel selanjutnya  :thanks2

Related Post

Panduan Menginstall CodeBlocks dan GCC di Windows Bagi yang baru saja mempelajari pemrograman, maka salah satu yang harus anda pasang pada komputer anda adalah kompiler dan juga editornya. Namun, tida...
Past Project: Flappy Bird for PC remake Anda pasti pernah memainkan game ini yang sangat tenar pada masanya, dan bahkan saling adu banyak skor sehingga anda jadi lupa langit dan lupa daratan...
Source Code HTTP Web Server dari Delphi Kali ini saya akan share source code yang pernah saya buat, source code yang pernah saya share di Indo-Code.com (saat ini Indo-Code sudah tidak aktif ...