Anda di halaman 1dari 25

Lisensi Dokumen:

Copyright 2003-2007 IlmuKomputer.Com


Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disearkan
se!ara eas untuk tu"uan ukan komersial #nonprofit$, dengan syarat tidak menghapus
atau meruah atriut penulis dan pernyataan !opyright yang disertakan dalam setiap
dokumen. %idak diperolehkan melakukan penulisan ulang, ke!uali mendapatkan i"in
terleih dahulu dari IlmuKomputer.Com.
Algoritma Pemrograman Dengan Menggunakan C+
+
Pengantar
&u"i dan syukur kepada %uhan 'ang (aha )sa karena erkat *ia-lah tulisan ini
isa selesai. %ulisan pertama saya ini memahas mengenai algoritma dalam
pemrograman. (udah +mudahan tulisan ini isa memeri masukan agi anyak orang
khususnya agi orang yang mempela"ari pemrograman komputer untuk mempermudah
mereka dalam memuat seuah program yang aik.
*alam memuat seuah program, ada eerapa hal yang penting, paling tidak
menurut saya, yaitu,
-. %u"uan pemuatan program,
2. .lgoritma,
3. /ahasa pemrograman itu sendiri
*alam kesempatan kali ini, saya ingin memahas mengenai algoritma dalam
pemrograman. 0al + hal yang akan disa"ikan di sini merupakan !ontoh + !ontoh program
yang ditulis dalam ahasa C11 yang kemudian akan di"elaskan leih detail. 2eih
-
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
tepatnya "ika saya katakan ah3a tulisan ini merupakan kumpulan !ontoh algoritma
yang pernah diahas dan !ukup 4populer5 seagai !ontoh + !ontoh algoritma.
&emahasan yang terdapat disini seenarnya leih ditu"ukan kepada orang +
orang yang sudah sedikit mengenal ahasa pemrograman C11 sehingga akan
mempermudah dalam memahami konsep algoritma yang di"elaskan di sini.
Sekilas Mengenai Algoritma
.lgoritma seperti kata keanyakan orang, ukanlah sesuatu yang hanya
erhuungan dengan dunia komputer sa"a. .lgoritma "uga erlaku dalam kehidupan
sehari-hari. Kali ini saya mau memahas !ontoh yang mungkin kedengaran tidak 4la6im5
digunakan untuk memeri gamaran mengenai algoritma ,*.
/eerapa !ontoh sederhana mengenai algoritma yang dapat ditemui dalam
kehidupan sehari + hari misalnya,
-. (emasak mie instant.
&rosesnya s, memanaskan air, memuka pemungkus mie instant #tentunya$,
memasukkan mie ke dalam air, taruh umu di piring, angkat mie "ika sudah masak,
!ampurkan dengan umu yang sudah ada di piring dengan mie, makan7 ,* #ko8
"adi laper9 ,*$
2. (enelepon
&rosesnya s, angkat telepon, tekan nomor teleponnya,
"ika diangkat maka mulai eri!ara setelah selesai tutup teleponnya
"ika tidak diangkat, maka tutup teleponnya
*an masih anyak lagi !ontoh + !ontoh sederhana mengenai algoritma yang dapat
kita "umpai dalam kehidupan sehari + hari.
2
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Algoritma Pemrograman
Sekarang kita mulai memi!arakan mengenai algoritma pemrograman. &ertama +
tama, akan saya kutip dulu !iri + !iri dari algoritma seperti yang dipaparkan oleh *onald
). Knuth,
.lgoritma mempunyai a3al dan akhir.
Setiap langkah harus didefinisikan dengan tepat sehingga tidak memiliki arti
ganda #amigu$.
(emiliki masukan #input$ atau kondisi a3al.
(emiliki keluaran #output$ atau kondisi akhir.
.lgoritma harus efektif: ila digunakan enar + enar menyelesaikan
persoalan.
Saya sendiri seenarnya tidak terlalu setu"u dengan hal + hal seperti itu yang
terkesan terlalu mematasi. Karena seenarnya ada anyak !ara untuk menghasilkan
sesuatu tanpa harus mengikuti aturan yang 4aku5 ; satu aturan sa"a yang terkesan
mengikat, iya kan9 <amun "ika ada yang mau 4ertindak5 seperti yang telah dipaparkan
di atas, itu sah + sah sa"a.
Sekarang, kita akan melihat eerapa program, mulai dari yang mudah sampai
yang !ukup sulit, eserta pen"elasannya.
Nilai Terbesar Dari 3 Buah Bilangan
=ntuk men!ari nilai teresar dari 3 uah ilangan, dalam C11, kode yang saya
gunakan adalah s,
3
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
#include <iostream>
using namespace std;
void main() {
int a, b, c, d;
cout << "nilai 1: ";
cin >> a;
cout << "nilai 2: ";
cin >> b;
cout << "nilai 3: ";
cin >> d;
c (a > b ! a : b);
cout << "nilai terbesar adala" : " << (c > d ! c : d) << "#n";
$
2ogika,
/andingkan nilai pertama dengan nilai kedua. Kemudian yang leih esar di antara nilai
terseut di andingkan dengan nilai erikutnya #nilai ke tiga$, sehingga di dapat nilai
teresar di antara ketiga >ariael terseut.
&en"elasan kode,
Seperti yang kita lihat di atas, pertama + tama, kita memuat tiga >ariael yaitu, >ariael
a, b, c, dan d. Kemudian, kita meminta user untuk memasukkan nilai untuk >ariael a, b,
dan d. Setelah itu, kita memandingkan nilai masing + masing >ariael. *isini digunakan
>ariael c seagai 4alat antu5. ?ariael c sendiri menyimpan nilai teresar antara
>ariael a dan b. Kemudian ditampilkan nilai yang teresar yang didapat setelah
memandingkan >ariael c dan d.
Jumlah Deret
@
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
'ang dimaksud dengan "umlah deret di sini adalah misalnya sa"a yang diminta
adalah 3 suku deret. (aka dikalkulasikan men"adi,
- + -;3 1 -;A + -; 7
&erhatikan ah3a dalam proses kalkulasi terseut tanda 1 dan + eruah setiap kali
dilakukan proses perhitungan. /aiklah, sekarang kita memahas kodenya,
#include <iostream>
using namespace std;
void main () {
int mp %1;
double satu 1, ulang 3;
int masu&;
cout << "masu&an nilai : ";
cin >> masu&;
'or (int ulang2 1; ulang2 < masu&; ((ulang2) {
satu satu ( ((1 ) ulang) * mp);
mp * %1;
ulang ( 2;
$
cout << satu << "#n";
$
2ogika,
(elakukan perhitungan dari suku pertama sampai suku ke + n #"umlah suku yang diminta
oleh user$. (ungkin yang paling 4mengganggu5 pemikiran .nda adalah agaimana !ara
untuk memuat tanda 1 dan minus eruah + uah setiap kali, kan9 &adahal itu isa sa"a
diatasi hanya dengan mengalikan -- dengan -- sehingga hasilnya isa men"adi positif ,
ya kan9 Bika sudah egitu, 4urusan5 erikutnya men"adi eres .
&en"elasan kode,
A
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Kode di atas "uga !ukup "elas "ika diamati dengan aik. .3alnya kita memuat eerapa
4uah5 >ariael,
'ang akan men"adi input agi ; dari user, yaitu masu&
'ang akan 4menampung5 hasil perhitungan, yaitu satu
'ang akan men"adi pemagi dan terus dinaikkan nilainya, yaitu ulang
'ang akan 4meruah5 tanda dan "enis perhitungan #dari pen"umlahan men"adi
pengurangan dan sealiknya$, yaitu mp
Kemudian kita melakukan perulangan dengan men"umlahkan >ariael satu yang
ernilai - #pada a3alnya$ dengan hasil dari - diagi dengan >ariael ulang dimana nilai
a3alnya adalah 3, dan kemudian ditamah 2 untuk setiap perulangan yang dilakukan
kemudian dikalikan dengan >ariael mp yang ernilai -- pada a3alnya sehingga
menghasilkan perhitungan, - + #-;3$.?ariael mp kemudian dikalikan dengan -- untuk
menghasilkan nilai positif sehingga pada perhitungan erikutnya men"adi seperti erikut,
- + #-;3$ 1 #-;A$
/egitu seterusnya hingga perhitungan men!apai suku ke + n, dan proses perhitungan pun
dilakukan sekali lagi dan erhenti. 0asilnya kemudian ditun"ukkan oleh >ariael satu.
Belas sekali, ukan9
Array
Ck, sekarang, masuk ke 4permainan5 array. *alam 4permainan5 ini, kita akan
meminta user untuk memasukkan nomor stamuk yangterdiri atas 7 angka. (asing -
masing angka #dari nomor stamuk$ terseut akan disimpan dalam seuah array yang
D
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
terdapat >ariael a. <ilai dari masing + masing array terseut akan dikalikan "ika nilai
terseut ukan 0 #nol$ dan 4disimpan dalam seuah >ariael seut sa"a E. Kemudian
diuat >ariael lain seut sa"a yang memiliki 7 array "uga. 4Isi5 >ariael merupakan
hasil dari masing + masing array >ariael a ditamah E. /erikut ini kodenya,
#include <iostream>
using namespace std;
void main() {
int a+,-, . 1;
'or (int i /; i < ,; ((i) {
cout << "nomor " << i ( 1 << ": ";
cin >> a+i-;
$
'or (int 0 /; 0 < ,; ((0) {
i' (a+0- /)
continue;
else {
. * a+0-;
$
$
int b+,-;
'or (int & /; & < ,; ((&) {
b+&- a+&- ( .;
cout << b+&- << "#n";
$
$
2ogika,
*ari semua array #angka + angka$ yang ada #sudah dimasukkan$, kita melakukan
4pen!arian5. Bika array terseut ernilai 0 #nol$ maka, array terseut kita le3ati. Bika
array terseut ukan ernilai nol #karena itu tentu sa"a ernilai leih dari nol, karena
7
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
se!ara logika, tidak ada nomor stamuk yang minus, kan9$, maka kita kalikan dengan
array erikutnya yang "uga tidak ernilai nol. Kemudian setelah itu, kita memuat array
lain dari seuah >ariael yang lain #tentunya$ untuk 4ditempati5 masing + masing oleh
hasil dari masing + masing array >ariael yang satunya ditamah dengan hasil perkalian
seluruh nilai tadi.
&en"elasan kode,
&ertama + tama, kita uat seuah >ariael #>ariael a$ untuk menampung 7 uah array,
lalu >ariael . untuk menampung hasil perkalian seluruh array >ariael a. <ilai a3al .
adalah -, dengan asumsi ah3a tidak ada nomor stamuk yang seluruhnya 0 #nol$
#karena klo gitu uat apa diuatkan nomor stamuk, kan9$ sehingga isa dikalikan
dengan seluruh array >ariael a dengan memiliki kemungkinan nilai terke!il adalah -.
2akukan perulangan untuk setiap array >ariael a, dengan 4menyisipkan5 kondisi agar
"ika nilai array terseut adalah 0 #nol$ maka dile3ati #continue$, dan apaila nilainya
ukan nol, maka dikalikan dengan >ariael .. Setelah selesai, diuat >ariael aru dengan
array yang sama, yaitu 7. 2alu perulangan dilakukan lagi untuk mengisi semua array
terseut dengan hasil dari E ditamah dengan masing + masing array >ariael a.
Segitiga Siku - Siku
Famar segitiga yang akan diuat adalah seperti di a3ah ini,
G
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
H
HH
HHH
HHHH
HHHHH
HHHHHH
HHHHHHH
Seperti yang kita lihat, ah3a terdapat segitiga siku + siku yang diuat dengan
!ara memuat simol 4H5 mulai dari satu sampai aris ke + n. (isalnya sa"a, dengan
!ontoh di atas, user ingin menampilkan segitiga dengan "umlah aris 7, maka ditampilkan
gamar seperti di atas. /egitu seterusnya. /erikut adalah !ontoh kodenya,
#include <iostream>
using namespace std;
void main () {
int segi1;
cout << "";
cin >> segi1;
'or (int 0 1; 0 < segi1; ((0) {
'or (int i 1; i < segi1; ((i) {
i' (i < segi1 % 0)
cout << " ";
else
cout << "*";
$
cout << "#n";
$
$
2ogika,
/ila diamati aik + aik, akan diketahui ah3a, misalnya, "ika ada 7 aris yang diminta,
maka ada D uah spasi yang diuat lalu kemudian di!etak tanda asterisk 4H5, dan pada
aris erikutnya ada A uah spasi lalu di!etak dua uah tanda asterisk. 2alu kemudian
I
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
pada aris erikutnya ada @ uah spasi, pada aris erikutnya lagi ada 3 uah spasi, dst.
*apat disimpulkan ah3a "umlah spasi yang diuat pada aris pertama adalah,
%otal aris yang diinginkan + -
2alu kemudian pada aris kedua adalah,
%otal aris yang diinginkan + 2
/egitu seterusnya.
*engan demikian diketahui ah3a untuk me!etak spasi menggunakan rumus,
%otal aris yang diinginkan + aris yang akan di!etak
Badi, misalnya aris yang sedang 4diker"akan5 adalah aris pertama maka, rumusnya
men"adi, total aris yang diinginkan + -, egitu "uga dengan aris kedua men"adi, total
aris yang diinginkan + 2, dst. Bika sudah 4mele3ati5 keadaan terseut, di!etak 4H5.
&en"elasan kode,
&ada kode di atas, pertama + tama kita memuat seuah >ariael ; identifier dengan nama
segi11 *imana segi1, merupakan input dari user untuk menentukan erapa anyak
aris segitiga yang akan di!etak. Setelah itu, dilakukan perulangan untuk men!etak
anyaknya aris, di sini kita memakai >ariael 0. =ntuk men!etak spasi dan tanda 4H5
sendiri digunakan >ariael i, dengan kondisi,
Bika i leih ke!il atau sama dengan segi1 % 0, di!etak spasi
-0
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Ini karena syarat yang telah dikemukakan seelumnya, "umlah spasi yang
di!etak per aris adalah hasil dari segi1 2 0, dimana 0 adalah aris yang
aktual #current$ pada saat itu.
Bika i leih esar dari segi1, maka di!etak tanda 4H5.
Seenarnya, "ika .nda isa mengamati dengan !ukup seksama, maka .nda
akan menemukan ah3a kita selalu men!etak dengan "umlah yang sama.
(isalnya "umlah aris yang diinginkan adalah 7, maka seenarnya dalam
setiap aris dari aris pertama sampai aris 7, kita selalu men!etak seanyak 7
kali pada setiap arisnya. 0anya sa"a ada 4>ariasi5pada setiap arisnya, yaitu
"ika dengan dikuranginya segi1 dengan 0, maka denga sendirinya "umlah 4H5
yang ter!etak akan semakin anyak dan pada akhirnya sama dengan "umlah
aris yang diinginkan. Badi, !oalah ayangkan ah3a yang kita !etak adalah
seuah persegi ; persegi pan"ang dengan gamaran seperti yang telah
diseutkan di atas #isa, kan9 $.
0al ini terus erlan"ut pada setiap aris dan pada ahirnya erhenti pada kondisi dimana 0
leih esar dari segi1. 0asilnya dapat .nda lihat pada screen shot erikut,
--
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Baris an!a
Kali ini .nda diminta untuk memuat ; menampilkan erapa anyak aris yang
diminta oleh user tapi dengan menggandakan setiap aris yang di!etak di layar.
(isalnya, "umlah aris yang diminta adalah A, maka yang ter!etak adalah,
--
2222
333333
@@@@@@@@
AAAAAAAAAA
(aka kode yang saya uat adalah seagai erikut,
#include <iostream>
using namespace std;
-2
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
void main () {
int in;
cout << "ban3a&n3a baris: ";
cin >> in;
'or (int i 1; i < in; (( i) {
'or (int 0 1; 0 < i * 2; ((0) {
cout << i;
$
cout << "#n";
$
$
2ogika,
2ogika yang digunakan di sini !ukup mirip dengan !ara kita men!etak segitiga siku +siku
ke layar. (ungkin isa diilang ini masih ada 4huungan keluarga5 dengan yang tadi .
*isini kita melakukan perulangan untuk men!etak aris yang diminta oleh user. *alam
melakukan perulangan terseut, kita menampilkan aris yang di!etak pada saat itu.
(isalnya "ika aris yang sedang di!etak pada saat itu adalah aris kedua, maka yang
ditampilkan adalah angka 2. /egitu seterusnya. &erhatikan ah3a angka + angka yang
di!etak memiliki seuah pola. &ada setiap aris yang sedang di!etak pola dari angka +
angkanya adalah, baris yang se!ang !i"etak !ikali #$ (isalnya pada aris pertama,
"umlah angka ; anyaknya angka yang di!etak adalah - J 2 K 2 kali di !etak. &ada aris
kedua, anyaknya aris yang di !etak adalah 2 J 2, dst. 0al ini erlan"ut sampai aris
yang diinginkan oleh user sudah ter!etak.
&en"elasan kode,
&ada kode di atas, diuat >ariael untuk menampung erapa anyak aris yang
diinginkan oleh user #in$, just like usual . /erdasarkan input dari user terseut, kita
memuat perulangan untuk men!etak aris + aris yang diinginkan user. *alam
-3
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
perulangan ini, kita 4menyisipkan5 seuah perulangan lagi untuk men!etak angka ke
layar #dengan menggunakan >ariael 0$. &erulangan ini dilakukan dengan kondisi 0 leih
ke!il atau sama dengan i dikali 2. *imana, i adalah aris yang sedang diker"akan dan 0
adalah erapa anyak perulangan yang dilakukan dalam kondisi 0 leih ke!il atau sama
dengan i.
/erikut ini screen shot-nya,
Menyebut Angka Terbalik
Kita mulai memasuki salah satu agian fa>orit saya yaitu 4mengkon>ersi5
ilangan men"adi kalimat ; kata + kata . Kita memasuki dulu agian yang mudahnya,
menyeut angka dengan teralik. Kali ini, kita meminta user untuk mengurangi ilangan
apa pun #yang leih ke!il dari -0.000$ dengan -0.000. (isalnya, user memasukkan angka
3@AD, maka -0.000 + 3.@AD tentu sa"a hasilnya K D.A@@, tapi kita mengkon>ersinya
-@
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
dengan men"adikannya seagai kalimat tapi dia!a teralik. Badi, tampilannya adalah,
empat empat lima enam .
Kodenya adalah,
#include <iostream>
using namespace std;
void sntce (int n) {
s4itc" (n) {
case 1: cout << "satu "; brea&;
case 2: cout << "dua "; brea&;
case 3: cout << "tiga "; brea&;
case 5: cout << "empat "; brea&;
case 6: cout << "lima "; brea&;
case 7: cout << "enam "; brea&;
case ,: cout << "tu0u" "; brea&;
case 8: cout << "delapan "; brea&;
case 9: cout << "sembilan "; brea&;
case /: cout << "nol "; brea&;
de'ault: brea&;
$
$
void reverse (int n) {
int :ero, mod;
:ero n ) 1/;
mod n ; 1/;
i' (:ero / << mod /)
e.it;
else {
sntce (mod);
reverse (:ero);
$
$
void main () {
int in, reduce;
const int sta3 1////;
-A
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
do {
cout << "";
cin >> in;
$ 4"ile (in > 1//// == in < 1);
reduce sta3 % in;
reverse (reduce);
cout << "#n";
$
2ogika,
*ari input yang dimasukan oleh user, dikurangi dengan -0.000 lalu hasilnya mulai dari
angka paling terakhir sampai dengan angka pertama dikon>ersi ke dalam entuk angka.
Cara untuk 4mengamil5 angka terakhir adalah dengan mengamil modulo ; sisa agi
dari hasil pengurangan terseut diagi -0. (isalnya, hasilnya DA@@ diagi -0 tentu sa"a
sisanya adalah @. Kemudian hasil ulat dari DA@@ diagi -0 yang adalah DA@ akan di agi
lagi dengan -0 dan akan menghasilkan angka @. *an hasil ulat dari DA@ diagi -0 yang
adalah DA kemali diagi dengan -0 dan sisanya adalah A. Kemudian yang terakhir,
karena nilai D yang disimpan kemudian diagi -0, dan sisanya pasti D, maka D diamil.
&en"elasan kode,
&ada agian utama program, kita memuat eerapa >ariael, reduce, in, dan sta3.
?ariael reduce sendiri erguna untuk menampung hasil pengurangan dari sta3, yang
telah kita eri nilai konstan dari a3al yaitu -0.000. %api, kita mau men!egah agar user
tidak memasukkan angka yang 4tidak la6im5 misalnya angka 0 atau -0.00- dan
seterusnya. (aka, kita memakai fungsi do1114"ile #ini seenarnya 4fa>orit5 saya,
karena saya ingin selalu men!egah input yang tidak normal$ dengan 4aturan5 ah3a
tampilan terseut #45$ akan selalu terulang ila user memasukkan angka yang leih esar
dari -0.000 atau leih ke!il dari -. Kita lalu memasukkan reduce ke reverse, itulah
-D
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
akhir dari program utama. 2alu, seperti yang kita lihat di atas, ada 2 fungsi yang kita uat
se"ak a3al, sntce dan reverse. sntce erfungsi untuk mengkon>ersi angka men"adi
seuah kata dengan fungsi s4itc", yang saya rasa sudah !ukup "elas, ah3a "ika
inputnya #dalam hal ini adalah sisa agi dari -0.000 dikurangi input dari user kemudian
diagi -0$ adalah -, maka yang ditampilkan adalah kata 4satu5, ila 2, maka ditampilkan
adalah 4dua5, dst. Sedangkan reverse untuk menghitung hasil pengurangan dari -0.000
dikurangi dengan input dari user #in$. *i sini kita memakai dua kondisi, yaitu "ika hasil
ulat dari n #reduce$ diagi -0 sama dengan 0 dan "uga sisa agi #mod$ sama dengan 0
#nol$, dan kondisi di luat itu #tentu sa"a ini erarti ah3a masih ada ilangan yang harus
di agi -0 atau isa sa"a masih ada sisa agi yang harus di masukkan ke sntce$. Bika yag
ter"adi adalah kondisi kedua, kita 4melempar5 >ariael mod ke sntce #udah tau kan
fungsinya9$ lalu memangil kemali reverse dengan menggunakan :ero sampai
akhirnya tidak ada lagi yang isa diagi dan tidak ada lagi sisa pemagian. /erikut
tampilannya,
Menyebut Angka
-7
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Ck, akhirnya sampai di sini "uga. &rogram erikut adalah program untuk
menyeut angka dalam entuk kalimat mulai dari - sampai "utaan. (isalnya angka -23
men"adi 4seratus dua puluh tiga5, dst. /erikut ini salah satu !ontoh kodenya,
#include <iostream>
using namespace std;
void 'irst (int n) {
s4itc" (n) {
case 1: cout << "satu "; brea&;
case 2: cout << "dua "; brea&;
case 3: cout << "tiga "; brea&;
case 5: cout << "empat "; brea&;
case 6: cout << "lima "; brea&;
case 7: cout << "enam "; brea&;
case ,: cout << "tu0u" "; brea&;
case 8: cout << "delapan "; brea&;
case 9: cout << "sembilan "; brea&;
case 1/: cout << "sepulu" "; brea&;
case 11: cout << "sebelas "; brea&;
de'ault: brea&;
$
$
void second (int n) {
int bul, sisa;
bul n ) 1/;
sisa n ; 1/;
i' (bul /)
'irst (sisa);
else i' (bul 1) {
i' (sisa < 1)
'irst (n);
else {
'irst (sisa);
cout << "belas ";
$
$
else {
-G
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
'irst (bul);
cout << "pulu" ";
'irst (sisa);
$
$
void t"ird (int n) {
int bul, sisa;
bul n ) 1//;
sisa n ; 1//;
i' (bul /)
second (sisa);
else i' (bul 1) {
i' (sisa /)
cout << "seratus ";
else {
cout << "seratus ";
second (sisa);
$
$
else {
'irst (bul);
cout << "ratus ";
second (sisa);
$
$
void 'ourt" (int n) {
int bul, sisa;
bul n ) 1///;
sisa n ; 1///;
i' (bul /)
t"ird (sisa);
else i' (bul 1) {
i' (sisa /)
cout << "seribu ";
else {
cout << "seribu ";
t"ird (sisa);
-I
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
$
$
else {
t"ird (bul);
cout << "ribu ";
t"ird (sisa);
$
$
void 'i't" (int n) {
int bul, sisa;
bul n ) 1//////;
sisa n ; 1//////;
i' (bul /)
'ourt" (sisa);
else i' (bul 1) {
i' (sisa /)
cout << "satu 0uta ";
else {
cout << "satu 0uta ";
'ourt" (sisa);
$
$
else {
t"ird (bul);
cout << "0uta ";
'ourt" (sisa);
$
$
void main () {
int n 1;
4"ile (n 1) {
int num1;
do {
cout << "";
cin >> num1;
$ 4"ile (num1 < 1);
'i't" (num1);
20
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
cout << "#n";
$
$
2ogika,
Kita mau mengetes apakah angka yang dimasukkan adalah "utaan, riuan, ratusan,
puluhan, atau satuan. Karena pada dasarnya hanya itu sa"a "enis + "enis angka yang ada
#tidak termasuk milyaran dan triliunan dan yang leih esar, karena tipe int tidak dapat
men"angkau ilangan + ilangan terseut$.
&ada 3aktu pertama kali kita 4mengetes5 ilangan terseut, kita men!oa mengu"i,
-. .pakah ilangan itu adalah "utaan9
&ertama + tama, mungkin ada yang ertanya mengapa agian ini dimasuki
terleih dahulu9 Se!ara logisnya, dari !ara pengu!apannya, dalam
mengu!apkan nama ilangan, tentu sa"a yang akan diu!apan adalah ilangan
teresarnya lalu erurut sampai yang terke!il. (isalnya, -.23@ dia!a seriu
dua ratus tiga puluh empat. (aka, dari esarnya angka yang dapat
dimasukkan ke dalam program, "utaan merupakan 4porsi5 yang teresar.
(aka yang paling pertama diu"i adalah 4apakah ilangan itu adalah "utaan95.
"ika tidak, maka ilangan itu dites apakah ilangan itu adalah riuan.
"ika ya, maka 4agian "utaan5 ilangan itu diter"emahkan ke dalam kata +
kata lalu sisanya #ratusan riu ke a3ah$ di!ek lagi pada fungsi untuk
ilangan riuan.
2. .pakah ilangan itu riuan9
2-
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Bika tidak, maka ilangan itu akan dites apakah ilangan itu adalah
ratusan.
Bika ya, maka 4agian riuan5 dari ilangan itu diter"emahkan lalu sisanya
dimasukkan di agian ratusan.
3. .pakah ilangan itu ratusan9
Bika tidak, maka ilangan itu akan dites apakah ilangan itu adalah
puluhan.
Bika ya, maka 4agian ratusan5 dari ilangan itu diter"emahkan lalu
sisanya dimasukkan ke dalam fungsi puluhan.
@. .pakah ilangan itu puluhan9
Bika tidak, maka ilangan itu akan dimasukkan ke dalam fungsi terakhir,
fungsi satuan.
Bika ya, maka 4agian puluhan5 dari ilangan itu akan diter"emahkan dan
kemudian sisanya dimasukkan ke dalam fungsi satuan.
&en"elasan kode,
&ertama + tama, perlu kita perhatikan ah3a sudah 4disiapkan5 seuah perulangan di
sana #4"ile$. Itu seenarnya 4ker"aaan5 saya, yang memuatnya supaya programnya isa
diulang terus menerus #silahkan edit sendiri kalau mau meruahnya$ . &ada fungsi
utama, seperti yang kita lihat, kita ingin supaya masukan kita mempunyai nilai paling
tidak sama dengan satu. 2alu setelah itu, kita memasukkan input terseut pada agian
"utaan. Caranya mirip dengan agaimana kita mener"emahkan angka + angka ke dalam
kata + kata. &rosesnya dapat kita lihat pada kondisi + kondisi pada fungsi terseut.
Bika hasil ulat dari pemagian n dengan -.000.000 adalah 0 #nol$, maka isa
dipastikan ah3a n ukanlah ilangan "utaan.
22
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Bika hasil ulat dari pemagian n dengan -.000.000 adalah - dan sisanya
adalah 0 #nol$, maka n pastilah -.000.000 #satu "uta$.
Bika hasil ulat dari pemagian n dengan -.000.000 leih esar dari -, maka
ilangan terseut pastilah leih atau sama dengan 2.000.000. (aka hasil ulat
pemagian terseut, dimasukkan ke dalam t"ird #karena nilai maksimal dari
ilangan "utaan adalah ratusan "uta$, lalu di !etak kata 4"uta 5, dan kemudian
sisanya dimasukkan ke dalam 'ourt" #karena ada kemungkinan sisanya
ernilai riuan$
&ada fungsi + fungsi yang lainnya "uga diuat dengan !ara seperti itu hingga akhirnya
pada agian satuan dari ilangan terseut. 0anya sa"a, "ika kita perhatikan pada fungsi
second, ada seuah kondisi dimana "ika hasil ulat dari pemagian adalah -, dan "ika
sisanya leih esar dari -, maka sisanya akan dimasukkan ke dalam first dan selan"utnya
di !etak kata 4elas 5. Badi misalnya, angkanya adalah -I, sisanya tentu sa"a adalah I.
.ngka I di 'irst, akan menghasilkan kata 4semilan 4 di layar. 2alu ditamah dengan
kata 4elas 4, maka hasilnya adalah 4semilan elas 4. Badi, kita tidak usah memuat
case untuk 4elas + elas5 yang lain selain -- #seelas$, Ltul ga9 .
23
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Penutup
Phew, akhirnya selesai "uga tulisan ini #tepatnya eerapa menit lagi seelum ?an
0elsing eraksi alias tengah malam ,*$. Ngga tau, erapa lama 3aktu saya haiskan di
depan kompie untuk menyempurnakan tulisan ini. 2agi pula, karena ini merupakan
tulisan pertama saya, maka pasti tidak luput dari kesalahan + kesalahan #seenarnya
tulisan ke erapa pun pasti ada kesalahan karena manusia tidak ada yang sempurna, Ltul
ga9$. Cleh karena itu, saran dan kritik sangat diharapkan untuk men"adi masukan yang
erguna dikemudian hari.
%e&erensi
*rs. Suarga, (.S!., (. (ath., &h.*., Algoritma Pemrograman, &enerit .<*I, 200D
Moert Setiadi, Algoritma Itu Mudah, &%. &rima Infosarana (edia, 200G
http,;;333.lautanindonesia.!om #eserta para penghuninya . %hanks atas kritikan +
kritikan dan masukan -masukannya$.
/enda ke!il yang telah diuatkan dan dititipkan %uhan pada saya untuk di"aga yang
ernama otak .
2@
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com
Biogra&i Penulis
>irman a.k.a ?"ipp1
.dalah salah satu alumni S- =ni>ersitas Katolik .tma Baya
(akassar "urusan )konomi (ana"emen yang senang ngutak-ngatik
komputer, terutama software. Sekarang eker"a dalam idang yang
sama sekali jauh dari dunia pemrograman, yaitu pelayaran #seagai
staff finance$. %idak mengaku expert, dan masih terus ela"ar untuk
men"adi leih aik lagi.
)mailku
/logku
2A
Komunitas e2earning IlmuKomputer.Com
Copyright 2003-2007 IlmuKomputer.Com

Anda mungkin juga menyukai