About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

Algoritma Mencari Statistik Huruf

Salah satu member saya di source.rosihanari.net, mbak Sulis namanya, meminta saya untuk menjelasin bagaimana algoritma mencari statistik huruf dari suatu string yang telah diketahui melalui input.

Mbak Sulis memberi contoh misalkan diketahui suatu string: ‘algoritma dengan pascal‘, maka output yang diharapkan adalah:

Jumlah huruf vokal : 8
Jumlah huruf konsonan : 13
Jumlah karakter lain : 2

Nah… yang menjadi pertanyaan adalah bagaimana ide penyelesaian dan algoritmanya, serta kalau perlu programnya sekalian 🙂

OK… kita akan fokuskan terlebih dahulu ke statistik huruf vokal. Untuk menampilkan jumlah huruf vokal, tentu saja kita harus tahu huruf vokal itu meliputi huruf apa saja? 🙂 ya… tentu saja ‘A’, ‘I’, ‘U’, ‘E’, ‘O’. Ada lagikah yang lain? Oh… ada, yaitu ‘a’, ‘i’, ‘u’, ‘e’, ‘o’. Lho… emang beda ya antara besar kecilnya huruf? Iya… emang beda, karena dalam komputer, karakter besar dan kecil itu beda. Hal ini dikarenakan karakter-karakter tersebut memiliki kode ASCII yang berbeda.

Nah… setelah kita mengetahui huruf vokal itu apa saja, eit salah… bukan ‘huruf vokal’, tapi ‘karakter huruf vokal‘, selanjutnya ngapain? Ya… tentu saja kita mulai menghitungnya. Bagaimana proses menghitungnya? Proses menghitungnya mirip dengan anak kecil yang mulai belajar menghitung, yaitu menghitung satu persatu karakter huruf vokalnya 🙂 Trus… darimana proses mulai menghitungnya? Proses ini dimulai dari awal karakter dari string inputnya. Jumlah huruf vokal ini akan terus bertambah setiap kali ketemu karakter huruf vokal. OK… berikut ini idenya:

Karena kita belum mulai menghitung, maka jumlah huruf vokal ini mula-mula 0 terlebih dahulu. Trus… kita cek karakter pertama dari string input, yaitu ‘a’ (berdasarkan contoh di atas). Nah… karena karakter ini termasuk karakter huruf vokal, maka jumlah huruf vokal yang mula-mula 0, akan bertambah menjadi 1. Trus… kita lanjutkan pengecekan ke karakter kedua, yaitu ‘l’. Karena karakter ini tidak termasuk karakter huruf vokal, maka jumlah huruf vokal tidak bertambah, yaitu masih tetap 1. Nah… proses ini terus dilakukan sampai dengan karakter terakhir dari string input. Setelah proses ini selesai, akan diperoleh jumlah huruf vokal keseluruhan.

Dari algoritma di atas, maka kita bisa buat programnya. Oya, untuk programnya saya nyatakan dalam bentuk bahasa Pascal.


function jumVokal(x : string) : integer;
var jumlah, i : integer;
begin
jumlah := 0;
for i:=1 to length(x) do
begin
if (x[i] in [‘A’, ‘I’, ‘U’, ‘E’, ‘O’, ‘a’, ‘i’, ‘u’, ‘e’, ‘o’]) then jumlah := jumlah + 1;
end;
jumVokal := jumlah;
end;

Keterangan:
x adalah string input dan length(x) digunakan untuk mencari panjang string x atau jumlah karakter total dari x.

Selanjutnya, bagaimana dengan menghitung huruf konsonan? Pada prinsipnya caranya sama seperti mencari jumlah huruf vokal di atas. But… ngomong-ngomong, bisa jadi nanti sangat banyak ya karakter hurufnya. Katakanlah jumlah huruf alfabet itu ada 26. Huruf vokal ada 5, jadi huruf konsonan ada 26-5 = 21. Eit… tunggu dulu, karena ada huruf besar dan kecil, maka total karakter huruf konsonan ada 21 x 2 = 42. Wow… banyak sekali, jadi panjang deh programnya… 🙁

Tapi jangan khawatir, ada ide lain mencari jumlah total huruf konsonannya, yaitu mencarinya dengan rumus ‘jumlah karakter string – (jumlah karakter vokal + jumlah karakter bukan huruf)‘. Lho kok gitu rumusnya? Iya donk, soalnya string yang dimasukkan sebagai input kan pasti terdiri dari karakter huruf dan bukan huruf. Sedangkan karakter huruf, terdiri dari konsonan dan vokal. Sehingga ‘total karakter penyusun string = jumlah karakter vokal + jumlah karakter konsonan + jumlah karakter non huruf‘. So… seperti itulah rumusnya.

Nah… berdasarkan rumus tersebut, maka tugas kita selanjutnya adalah mencari jumlah karakter yang bukan huruf. Untuk mencari jumlah karakter huruf vokal kan sudah, seperti yang saya jelaskan sebelumnya. Untuk mencari jumlah karakter non huruf, caranya sama seperti mencari jumlah vokal, yaitu kita cek satu persatu untuk setiap karakter penyusun string. Trus… apa yang dicek, ya… yang dicek adalah apakah karakter tersebut termasuk alfabet? Jika tidak, maka jumlah karakter non hurufnya bertambah. Proses ini terus dilakukan sampai dengan akhir dari string.

Yang menjadi pertanyaan selanjutnya adalah, bagaimana menyatakan apakah suatu karakter dari string bukan karakter huruf/alfabet? Mudah sekali kawan. Dalam Pascal, kita bisa nyatakan sebagai if (not(x[i] in [‘A’..’Z’, ‘a’..’z’])) then … atau cara yang lain kita gunakan kode ASCII. Untuk karakter alfabet ‘A’ s/d ‘Z’, kode desimal ASCII nya adalah 65 s/d 90, sedangkan ‘a’ s/d ‘z’ kode desimal ASCII nya 97 s/d 122. Nah… berdasarkan ide ini, kita bisa buat programnya sekarang.


function jumNonHuruf(x : string) : integer;
var jumlah, i : integer;
begin
jumlah := 0;
for i:=1 to length(x) do
begin
if (not (x[i] in [‘A’..’Z’, ‘a’..’z’])) then jumlah := jumlah + 1;
end;
jumNonHuruf := jumlah;
end;

Ingat ya… jangan lupa pakai operator NOT, karena kita akan mengecek apakah suatu karakter dalam string ‘bukan‘ termasuk karakter alfabet.

OK… mencari jumlah huruf vokal sudah, dan karakter non huruf juga sudah. Selanjutnya kita bisa buat program untuk mencari jumlah konsonan menggunakan rumus yang telah diberikan sebelumnya.


function jumKonsonan(x : string) : integer;
begin
jumKonsonan := length(x) – (jumVokal(x) + jumNonHuruf(x));
end;

Implementasi program secara utuh untuk mencari jumlah huruf vokal, konsonan dan selain huruf adalah sebagai berikut:


program statistikHuruf;
var stringInput : string;

function jumVokal(x : string) : integer;
var jumlah, i : integer;
begin
jumlah := 0;
for i:=1 to length(x) do
begin
if x[i] in [‘A’, ‘I’, ‘U’, ‘E’, ‘O’, ‘a’, ‘i’, ‘u’, ‘e’, ‘o’] then jumlah := jumlah + 1;
end;
jumVokal := jumlah;
end;

function jumNonHuruf(x : string) : integer;
var jumlah, i : integer;
begin
jumlah := 0;
for i:=1 to length(x) do
begin
if (not (x[i] in [‘A’..’Z’, ‘a’..’z’])) then jumlah := jumlah + 1;
end;
jumNonHuruf := jumlah;
end;

function jumKonsonan(x : string) : integer;
begin
jumKonsonan := length(x) – (jumVokal(x) + jumNonHuruf(x));
end;

begin
stringInput := ‘algoritma dengan pascal’;
writeln(‘Jumlah huruf vokal : ‘,jumVokal(stringInput));
writeln(‘Jumlah huruf konsonan : ‘,jumKonsonan(stringInput));
writeln(‘Jumlah karakter lain : ‘,jumNonHuruf(stringInput));
end.

OK… jadi deh programnya. Demikian mbak Sulis atas penjelasannya. Mudah-mudahan berguna buat Anda khususnya, dan buat pengunjung setia blog ini umumnya.

Eh… ada update nih…

Code di atas saya jadikan dalam bentuk modul-modul subroutine atau subprogram. Untuk mencari statistik karakter vokal saya jadikan subprogram sendiri, begitu pula untuk huruf konsonan dan karakter lain. Sekarang… bagaimana jika bentuk codenya tidak dalam bentuk subprogram? Ya… semua perintah di subprogram tinggal dipindah saja ke bagian utama program Pascal. Ini dia bentuk programnya:


program statistikHuruf;
var stringInput, x : string;
jumlah,i , jumVokal, jumKonsonan, jumNonHuruf : integer;

begin
stringInput := ‘algoritma dengan pascal’;
x := stringInput;

{ mencari jumlah huruf vokal }

jumlah := 0;
for i:=1 to length(x) do
begin
if x[i] in [‘A’, ‘I’, ‘U’, ‘E’, ‘O’, ‘a’, ‘i’, ‘u’, ‘e’, ‘o’] then jumlah := jumlah + 1;
end;
jumVokal := jumlah;

{ mencari jumlah karakter lain }

jumlah := 0;
for i:=1 to length(x) do
begin
if (not (x[i] in [‘A’..’Z’, ‘a’..’z’])) then jumlah := jumlah + 1;
end;
jumNonHuruf := jumlah;

{ mencari jumlah huruf konsonan }

jumKonsonan := length(x) – (jumVokal + jumNonHuruf);

{ menampilkan outputnya }

writeln(‘Jumlah huruf vokal : ‘,jumVokal);
writeln(‘Jumlah huruf konsonan : ‘,jumKonsonan);
writeln(‘Jumlah karakter lain : ‘,jumNonHuruf);
end.

Demikian mbak Sulis… btw… panggilannya mbak Sulis or Elis nih… he..he..he.. 🙂

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply