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