Tampilkan postingan dengan label Belajar Program. Tampilkan semua postingan
Tampilkan postingan dengan label Belajar Program. Tampilkan semua postingan

Kamis, 10 Desember 2009

Belajar C++ part 4

BAB VII. If, Else If, dan Else
Dalam bab – bab sebelumnya, secara sekilas kita sudah melihat cara penerapan if dan else dalam kode – kode yang kita gunakan. Di sini kita kan mencoba membahasnya lebih lanjut.

If
Seperti namanya, if berarti jika, yang berarti “jika kondisi ini terbukti maka… (akan dilakukan sesuatu dalam kondisi seperti ini)”. Dan biasanya if “berpasangan” dengan else. Jadi, dapat dikatakan bahwa secara keseluruhan apa yang dimengerti oleh komputer adalah: “jika kondisi A terjadi, maka saya akan melakukan tindakan A, selain itu maka saya akan melakukan tindakan B”.

Else
Else adalah kondisi selain / diluar kondisi pertama (if). Salah satu perumpamaan dari “kasus” ini adalah: “jika dia bukan laki – laki, maka dia adalah perempuan”. Cukup simple, kan? OK, klo begitu kita langsung saja ke contohnya:



#include
using namespace std;

void main () {
char gender;
cout << “masukkan gender anda (L/P): “
cin >> gender;

if (gender == ‘L’)
cout << “anda adalah laki – laki!\n”;
else
cout << “anda adalah wanita alias perempuan :D\n”;
}

else if
else if sebenarnya adalah kondisi kedua yang diperkirakan akan terjadi sedangkan else sebenarnya adalahkondsi terakhir yang diperkirakan akan terjadi. Mengapa saya mengatakan demikan? Coba anda lihat kembali kode di atas. Jika anda perhatikan sebenarnya else adalah untuk semua kondisi selain kondisi pertama. Artinya, jika anda memasukkan huruf selain “L” juga akan diangap gender anda adalah perempuan. Karena yang terbaca oleh komputer adalah “jika variabel gender “isinya” huruf L, maka dia adalah laki – laki, selain itu dia adalah perempuan”. Jadi, jika anda memasukkan huruf M atau H sekalipun, anda akan tetap dianggap sebagi perempuan. Penempatan else if adalah selalu di bawah if (mengingat bahwa bagaimana bisa ada else if yaitu kondisi selain if jika if-nya sendiri belum ada?). Berikut adalah kode lengkapdari penggunaan if, else if dan else:


#include
#include
using namespace std;

void main () {
int pilihan;
string nama;
cout << “masukkan nama anda: “;
cin >> nama;
cout << “selamat datang di restoran kami, “ << nama << “\n”;
cout << “silahkan masukkan pilihanmu, “ << nama << “:\n”;
cout << “1. ayam goreng campur oli mesin\n”;
cout << “2. ikan hiu bakar plus bongkahan kapal Titanic\n”;
cout << “3. kodok hamil campur toge\n”;
cout << “silahan memilih”;
cin >> pilihan;

if (pilihan == 1)
cout << “selamat, anda memilih plihan nomor satu\n”;
else if (pilhan == 2)
cout << “wah, selera anda cukup unik ya...?\n”;
else if (pilihan == 3)
cout << “wah, memang menu ini lagi top di sini\n”;
else {
cout << wah, sepertinya anda kurang bisa membaca ya?\n”
<< “dari planet mana, mas / mba?\n”;
}
}



BAB VIII. switch
Dalam pemakaian if, sering kali kita harus berkali – kali menuliskan kondsi tertentu ssepert dalam dalam kondisi di atas, dimana kita harus menuliskan beberapa kondisi dengan kode yang agak panjang. Dengan memakai contoh program di atas, kita bisa membuat hasil yang sama dengan kode yang lebih singkat.Kali ini saya akan langsung menunjukkan contoh penggunaan switch.

#include
using namespace std;

void main () {
int pilihan;
//dan lain sebagainya d sini...

cout << “masukkan pilihan anda: “;
cin >> pilihan;

switch (pilihan) {
case 1: {
cout << “anda memilih pilihan nomor satu!\n”;
break;
}

Case 2: {
cout << “anda memilh pilihan nomor dua!\n”;
break;
}

Case 3: {
cout << “anda memilih pilihan nomor tiga!\n”;
break;
}
default:
cout << “anda memasukkan piihan yang salah, bro!\n”;
}
}
Ada yang terasa aneh atau janggal dikode tersebut? Mengapa saya memakai break ? Ini karena disebabkan oleh switch akan mengeksekusi stateent di bawahnya jika tidak dikeluarkan oleh break. Jadi, jika tida dikeluarkan oleh break, yang akan terjadi adalah:

Ini akan terjadi jika kita memasukan angka 1 (satu).





Dan ini untuk memasukkan angka 2 (dua):

Dan seterusnya.

Mengapa? Ini terjadi karena ketika switch selesai mengeskusi case 1, misalnya, tanpa break, maka switch akan terus mengeksekusi statement yang berada di bawahnya sampai selesai. Makanya, break berfungsi untuk keluar dari switch begitu statement pada satu cae selesai di eksekusi (tanpa melanjutkan ke statement berikutnya / yang berada di bawahnya). Namun demikian, “sifat” dari switch ini bisa dimanfaatkan untuk kondisi – kondis tertentu, misalnya membuat program untuk menghitung anda berada di kuartal ke berapa dari satu tahun:

Kodenya adalah sebagai berikut:
#include
using namespace std;

void main () {
int bulan;
cout << "bulan sekarang: ";
cin >> bulan;

switch (bulan) {
case 1:
case 2:
case 3: cout << "anda berada di kuartal pertama!\n"; break;
case 4:
case 5:
case 6: cout << "anda berada di kuartal kedua!\n"; break;
case 7:
case 8:
case 9: cout << "anda berada di kuartal ketiga!\n"; break;
case 10:
case 11:
case 12: cout << "anda berada di kuartal keempat!\n";
break;
default: cout << "bulannya salah!\n";
}
}



















BAB IX. Fungsi
Penggunaan fungsi adalah untuk mempersingkat proses pengkodean, dalam arti ketika menghadapi masalah yang memiliki penyelesaian yang sama. Misalnya saja, ketika harus melakukan proses kalkulasi tertentu terhadap sejumlah angka secara berulang - ulang, dll.
Penulisan fungsi adalah di mulai dari tipe data kembaliannya (return), lalu nama fungsi tersebut kemudian parameter dan kerja dari fungsi tersebut.
() {

//kerja dari fungsi di taruh di sini...

return
//optional
}

Tipe data kembalian bisa tidak dispesifikasikan jika memang tidak ada kembalian dari fungsi kita. Jadi, untuk fungsi yang tidak mempunyai kembalian maka sebenarnya ada tipe khusus untuk fungsi ini yaitu void / kosong.

Contoh fungsi yang tidak mempunyai tipe kembalian adalah:

void fungsiku_yang_void (int n) {
int n2 = n * n;
cout << “n setelah di pangkat dua adalah “ << n2 << “\n”;
}
Fungsi juga bisa mempunyai parameter yang kosong (tanpa parameter). Artinya, tanpa adanya sebuah variabel pun, kita dapat memanggil fungsi ini. Dan sekali lagi, contoh untuk fungsi seperti ini adalah:
int fungsiku_tanpa_parameter () {
cout << “hi\n”;
}
Contoh lain dari fungsi adalah seperti yang bisa kita lihat dari kode di bawah:
#include
using namespace std;

int fungsiku (int angka) {
return (angka * 2);
}

void main () {
int angka1, angka2, angka3;
cout << “masukkan tiga angka yang anda ingin kalikan dengan 2: “;
cin >> angka1 >> angka2 >> angka3;
cout << “angka anda setelah di kalikan dengan 2 adalah: “ <<
fungsiku (angka1) << “ terus, “ << fungsiku (angka2) <<
“, dan “ << fungsiku (angka3) << “\n”;
}

Fungsi Rekursif
Sebuah fungsi dikatakan rekursif kalau fungsii itu memanggil dirinya sendiri. Misalnya saja fungsi A setelah melakukan kerjanya, memanggil ulang dirinya sendiri sampai pada batas tertentu yang telah ditetapkan. Misalnya saja, mengurangi sebuah angka sampai tersisa hanya setengah dari nilainya saja. Contohnya adalah seperti kode berikut ini:

#include
using namespace std;

void masukan_angkanya (int n, int m) {
if (n == m)
cout << "angkanya setelah diproses berkali-kali, adalah: " << n << "\n";
else {
n -= 1;
masukan_angkanya (n, m);
}
}

void main () {
int masukan, masukan2;
cout << "masukkan sebuah angka yang genap: \n";
cin >> masukan;
masukan2 = masukan / 2;
masukan_angkanya (masukan, masukan2);
} Baca Selengkapnya...

Belajar C++ part 3

BAB V. Looping
Looping adalah pengulangan sesuatu atau serangkaian “kerja” dari program. Dalam C++, paling tidak dikenal ada 3 looping.

While
Perintah while adalah pengulangan yang dilakukan oleh program selama (while) dalam keadaan tertentu. Misalnya saja, ada sebuah kondisi yang mengharuskan program agar melakukan “pekerjaan” tertentu selama keadaan itu terpenuhi (true).
Contoh:
Mencetak angka 1 sampai 1000
#include
using namespace std;

void main() {
int i = 1;

//kondisi ditetapkan (bahwa selama i lebih kecil atau sama dengan
//1000 ada perintah yang diberikan pada program...)
while (i <= 1000) {

//perintah untuk mencetak nilai dari i dan kemudian membuat
//baris baru
cout << i << “\n”;

//iterasi
++i;
//i = i + 1;
//i += 1;
}
}

Nah, dari kode di atas kita lihat bahwa selama i lebih kecil atau sama dengan 1000, nilai dari i akan di cetak ke layar. Jadi, hasilnya adalah:

1
2

1000

Akan tercetak angka dari 1 sampai 1000 di layar. Perhatikan baik – baik ada sepenggal kode yang diberi komentar “iterasi”. Apakah iterasi itu? Iterasi dalam looping adalah proses yang berpengaruh dalam nilai dari variabel yang ditetapkan sebagai acuan looping. Atau dapat pula dikatakan bahwa, iterasi adalah bagaimana penambahan nilai atau pengurangan dalam perulangan. Contohnya seperti nilai dari i di atas. Penulisan yang diberikan pada variabel i adalah:

++i;

Itu sama saja dengan perintah yang berada di dalam komentar:
// i = i + 1;

Dan
//i += i;

Perintah ini berarti bahwa i menambahkan dirinya sendiri dengan 1. Tanda “++” pada i pada bagian depan dari i (prefix), berarti kita langsung menambahkan variabel i dengan 1, tanpa menggunaan terlebih dahulu nilai dari i. Jika kita menggunakan tanda “++” pada bagian akhir dari variabel i (postfix), berarti nilai dari i digunakan terlebih dahulu lalu kemudian ditambahkan dengan 1. Contoh lain dari hal ini adalah dengan menggunakan pengurangan sebagai pengulangan. Contoh:

#include
using namespace std;

void main () {
int i = 1000;

while (i >= 1) {
cout << i << “\n”;

//yang digunakan adalah “—-“
--i;
}
}

Hasil yang didapat mungkin saja berbeda, tapi persamaan dari keduanya adalah bahwa terjadi perulangan sebanyak 1000 kali, yaitu:

1000
999

1

Perlu diketahui bahwa yang terjadi pada perulangan jika sudah mencapai false (dimana kondisinya tidak lagi true melainkan false) adalah perulangan akan segera keluar dan melanjutkan program. Misalnya saja dari program di atas, jika i tidak lagi lebih kecil atau sama dengan 1000 (misalnya 1001), perulangan akan menghasilkan nilai false (kondisi tidak lagi i <= 1000).

do...while
Biasanya in adalah perintah untuk tetap melakukan sesuatu dalam program sampai kondisinya terpenuhi (aku memanggilnya “kepala batu” atau “si keras kepala” :DDD). Misalnya perintah untuk tetap menampilan sebuah pesan sampai adanya input yang valid dari user. Contoh:
#include
using namecspace std;

void main () {
char yes_no;
//lalu beberapa variabel diletakkan di sini...
//... (di sini misalnya terdapat kerja dari program)

// disini diletakkan do...while untuk “menunggu” inputan yang
//valid dari user.
do {
cout << “masih mau lanjut? (y / n): “;
cin >> yes_no;
} while (yes_no != ‘y’ || yes_no != ‘n’);

if (yes_no == ‘y’)
//lakukan terserah apa aja yang anda mau lakukan di sini

else
//di sini juga anda bisa lakukan apa saja yang anda mau
//lakukan
}
Jika kita perhatikan mungkin ada tanda yang di pergunakan dalam kode tersebut. Akan saya coba jelaskan mengenai beberapa operator logika yang terdapat dalam C++.

Operator logika biasanya dipakai dalam perbandingan (kondisi). Mengenai fungsi perbandingan ini akan dibahas dalam bab-bab berikutnya. Operator logika yang biasanya dipakai ada beberapa macam, yaitu:
- Tanda “&&” (and), operator ini berfungsi jika kedua nilai pembandingnya bernilai true. Contoh: i >= 0 && i <= 1000. Ini berarti penggunaan kondisi dimana kondisi tersebut adalah i lebih besar atau sama dengan 0 dan lebih kecil atau sama dengan 1.000 (0 – 1.000).
- Tanda “||” (or), operator ini berfungsi jika salah satu dari kedua nilai pembandingnya bernilai true. Contoh: i >= 1000 || i <= 0. Ini berarti penggunaan kondisi dimana kondisi tersebut adalah i lebih besar atau sama dengan 1.000 atau leih kecil atau sama dengan 0 (-1 ke bawah atau 1.001 ke atas).
- Tanda “!” (not), seperti yang kita lihat terdapat di bagian dari kode di atas adalah merupakan tanda negasi, yang berarti semacam pembalik dari sesuatu. Misalnya seperti yang kita lihat pada potongan kode di atas:

while (yes_no != ‘y’ || yes_no != ‘n’);
Ini kurang lebih dapat dibaca: “ketika yes_no tidak sama dengan ’y’ n atau
yes_no tidak tidak sama dengan ’n’.

Kembali ke masalah kode di atas, pada bagian “pembuka” kita membuat beberap variabel, salah satunya adalah yes_no yang berfungsi untuk “menampung” nilai atau karakter yang dipilih dari user. Jadi, kita membuat sebuah program yang entah kerjanya baagimana lalu pada bagian akhir dari program tersebut, kita memberikan sebuah pilihan apakah user masih mau lanjut atau tidak. Jika user memasukkan input yang tidak valid misalnya menekan angka 0 atau menekan huruf “t”), maka perintah yang berada dalam blok do…while akan di eksekusi, dan begitu seterusnya jika user masih tidak memasukan input yang valid.

for
Ini adalah (mungkin) perulangan yang paling sering dipakai dalam C++. Sintaknya adalah sebagai berikut:
for (inisialisasi; kondisi; iterasi) {
//yang ingin dilakukan...
}
Dalam for, anda bisa melakukan inisialisasi, yaitu mendeklarasikan variabel baru dan langsung memasukan nilai di dalamnya, kemudian memberi kondisi dimana perulangan itu akan terus dilakukan, dan pada akhirnya menentukan iterasi. Contoh dari for adalah sebagai berikut:

#include
using namespace std;

void main () {
int num_masuk;
cout << “berapa banyak anda mau melakukan perulangan?: “;
cin >> num_masuk;

for (int i = 1; i <= num_masuk; ++i) {
cout << “ini adalah baris ke-“ << i << “\n” ;
}
}

Pada kode di atas, yang akan menjadi input dari user untuk menentukan berapa banyak perulangan akan dilakukan adalah num_masuk, dan variabel yang akan dijadikan patokan dalam perulangan adalah i, di mana i di buat di dalam perintah for dan kemudian langsung di assign (inisialisasi). Kondisi yang digunakan adalah kondisi dimana i <= num_masuk yang berarti, jika / selama i lebih kecil atau sama dengan num_masuk maka perulangan akan terus dilakukan. Iteasi yang ditentukan di sini adalah nilai dari i akan ditambah 1 (satu) dalam setiap perulangan (++i). Contoh program yang sudah di compile dari kode ini adalah:



Namun for juga bisa digunakan sebagai berikut:
for (int i = 1; i <= 10; ++i) {
for (int j = 1; j <= 10; ++j) {
cout << i * j << “\n”;
}
}
Program seperti ini dapat digunakan dalam perhitungan perkalian, misalnya saja hasilnya dapat menjadi sebagai berikut:

Koding untuk program ini adalah:
#include
using namespace std;

void main () {
//untuk berapa banyak baris yang diinginkan...
for (int i = 1; i <= 10; ++i) {
//jumlah kolom, mengingat bagian ini yang akan
//dieksekusi lebih lanjut dan sampe selesai daul baru
//dilanjutkan dengan bagian yang selanjutnya (bagian baris)
for (int j = 1; j <= 3; ++j) {
cout << i << " X " << j << " = " << j * i << "\t";
}
//baris baru, setelah ketiga kolom selesai “dibuat”
cout << "\n";
}
}
BAB VI. Break dan continue
Ketika melakukan perulangan, ketika sampai batas tertentu kita ingin memberhentikan perulangan tersebut. Untuk itulah, dibuat statement break dan continue.

break
Adalah perintah untuk langsung keluar dari looping (perulangan). Contoh penggunaan statement break adalah:
while (i > 0) {
cout << i << “\n”;
if (i == 2)
break;
--i;
}
Sudah bisa tebak apa kira – kira yang akan dihasilkan oleh program ini? Kalau belum, silahkan baca lebih lanjut.
Program tersebut akan dieksekusi sampai nilai i sama dengan 2. Seharusnya, progrma tersebut akan bejalan sampai dengan nilai i sama dengan 1. Tapi statement break yang diberikan pada kondisi dimana jika nilai i sama dengan 2 maka looping dihentikan, maka ketika nilai i sama dengan 2, nilai i tidak dikurangi lagi (--i;) dan looping keluar. Hasilnya kurang lebih bisa dilihat sama dengan contoh program berikut:

Kodenya adalah sebagai berikut:
#include
using namespace std;

void main () {
int baris;
cout << "berapa banyak anda ingin mencetak baris?: ";
cin >> baris;

for (int i = 1; i <= baris; ++i) {
cout << "ok, ini adalah baris yang ke-" << i << "\n";

if (i == (baris - 1))
break;
}
cout << "sorry, hanya bisa sampe di situ doang... :D\n";
}
continue
Nah, ini juga mirip dengan break tadi hanya saja ini kebalikannya. Langsung saja ke contohnya:
for (int i = 1; i <= 20; ++i) {
if (i % 7 == 0)
cout << i << “\n”;
else
continue;
}
Yang di atas itu adalah (kurang lebih) contoh yang saya pelajari ketika saya belajar C++ juga :D. Itu adlaah kode untuk mencari bilangan kelipatan 7 dari 1 – 20. Fungs continue diatas adalah, jika bilangan itu tidak habis di bagi 7 (if (i % 7 == 0)), maka lopingnya dilanjutkan terus, tanpa adanya apa – apa yang akan dieksekusi. Contoh tampilannya adalah sebagai berikut (kali ini kita akan mencoba mencari dari 1 sampai 100):

Kodenya adalah sebagai berikut:
#include
using namespace std;

void main () {
for (int i = 1; i <= 100; ++i) {
if (i % 7 == 0)
cout << i << " adalah kelipatan 7!\n";
else
continue;
}
} Baca Selengkapnya...

Belajar C++ part 1

Pemrograman Dengan C++ (Part I)


Pengantar
Apa itu program? Bagaimanakah membuatnya? Jika sudah dibuat, apakah gunanya? Mungkin itu adalah pertanyaan – pertanyaan dari orang – orang yang baru saja mengenal komputer. Program adalah semacam sebuah metode penyelesaian masalah yang disediakan dalam komputer untuk digunakan oleh manusia dalam mempermudah pekerjaannya / kegiatannya. Kurang lebih itulah pengertian program, paling tidak menurut saya. Lantas, bagaimana membuatnya? Pembuatan program adalah dengan memberi “perintah” sedemikian rupa kepada komputer sehingga “terciptalah” program itu yang kemudian disimpan dalam memori komputer. Lalu, apa yang “diperintahkan” pada komputer sehingga program itu dapat terbentuk? Tidak ada yang berpikiran bahwa dia harus mengatakan kepada komputer: “Buatkan saya sebuah program yang bagus yang mau dipake untuk pembukuan perusahaan saya.” , kan? ? Kita, tentu saja, harus “ngobrol” dengan komputer dengan bahasa yang bisa dimengerti olehnya. Bahasa apa itu? Sudah banyak dibuat banyak bahasa pemrograman untuk menerjemahkan logika pemrograman menjadi instruksi yang dapat dimengerti oleh komputer, untuk kemudian dijalankan (dan dalam hal ini untuk membuat program). Perintah tersebut di jalankan oleh komputer untukmembuat sebuah program yang kemudian akan digunakan oleh manusia / pihak yang berkepentingan.

C++
C++ adalah salah satu bahasa pemrograman yang powerful untuk membuat sebuah program. C++ adalah sebuah bahasa tingkat menengah yang merupakan perkembangan dari bahasa C, dimana bahasa ini merupakan bahasa pemrograman berorentasi objek (tidak seperti pendahulunya, C). Dikatakan menengah karena bahasa ini berada di antara bahasa tingkat tinggi dan rendah. Bahasa tingkat tinggi merupakan bahasa yang lebih “manusawi”, karena perintah – perintah dari bahasa ini lebih berorientasi kepada bahasa manusia. Visual Basic (VB) dan Pascal adalah dua dari beberapa contoh bahasa tingkat tinggi. Sedangkan bahasa tingkat rendah adalah bahasa yang lebih berorientasi kepada bahasa mesin sehingga bahasa ini tidak terlalu “manusiawi” ?. Contoh dari bahasa tingkat rendah ini adalah Assembly.

Bab I. Header dan Fungsi main()
Sekarang kita masuk ke dalam pembuatan program. Beberapa bagian yang harus di perhatikan adalah header dan fungsi. Header adalah diana kita memasukkan library yang ada dalam C++ kedalam kode program kita. Fungsi adalah “tempat” dimana kita bisa “bereksperimen” ?. Didalamnya terdapat semua statement yang kita buat. Program yang paling sederhana yang pernah diketahui umat manusia (seram amat kata-katanya) adalah:



#include
using namespace std;

void main () {
cout << “Hello, World!\n”;
}

Pada baris pertama, seperti yang kita lihat, ada perintah #include . Tanda ‘#’ adalah preprocessor directive. Preprocessor directive adalah perintah – perintah yang diberikan kepada compiler untuk melakukan definisi, memasukkan file library, dll. Contoh – contoh dari preprocessor ini adalah:
• #define maximum_number 100000
• #include “fileku.h”
• #ifdef maximum_number
#undef maximum_number
#define maximum_number_2 1000
#endif

Itu berarti bahwa kita memasukkan (include) library iostream ke dalam kode program kita. iostream itu adalah header yang dibutuhkan untuk “kegiatan” input dan output dari program. Perintah cout sendiri ada karena kita memasukkan iostream ke dalam kode program kita dan juga using namespace std; dimana ada member cout di dalamnya.
Berikut beberapa header yang terdapat dalam C++:
• ctime = header waktu
• cstdio = header untuk perintah C seperti printf dan scanf
• cmath = header untuk operasi matematika seperti sin, cos, sqrt, dan tan
• cstring = header untuk memanipulasi string seperti strcpy, strcat, dll

(untuk lebih lengkapnya, lihat http://cplusplus.com/tutorial)

main () adalah fungsi utama (main) yang harus ada dalam setiap program C++ kita. Di sini yang digunakan adalah dengan main tanpa nilai kembalian dan tanpa paramater. Apa itu nilai kembalian dan apa itu paramater? Saksikan setelah pesan – pesan berikut… eh salah, lihat dalam bab berikutnya ?. Jika diperhatikan ada perintah \n pada akhir “kalimat” Hello, World!. Apa itu? ”\n” adalah perintah dalam banyak bahasa pemrograman sebagai baris baru (new line) jadi yang akan ditampilkan pada program adalah:


Perintah dengan menggunkan backslash (‘\’) juga ada beberapa jenis, diantaranya:
• ‘\a’ = untuk menghasilkan bunyi alert
• ‘\t’= tabulasi
• ‘\0’ = null terminated dalam array

Tanda ‘{‘ juga harus ada dalam setiap fungsi C++, itu menandakan awal dari fungsi / program dan ‘}’ menandakan akhir dari fungsi / program.






















BAB II. Penulisan Dalam Bahasa C++
Penulisan dalam bahasa C++ adalah case sensitive. Yang berarti, C++ membedakan huruf kecil dan kapital. Yang berarti (lagi): variabel_pertama tidak sama dengan variabel_Pertama atau mboknya_echi tidak sama dengan mboknya_Echi ?.

Komentar dalam C++ ditulis dengan ‘//’ untuk komentar dengan panjang satu baris atau ‘/*’ dan ‘*/’ untuk komentar lebih dari satu baris, dimana tanda /* merupakan “pembuka” komentar dan */ adalah “penutup” komentar. Komentar adalah cataatan ang ditulis oleh programmer untuk sebagai pengingat atau penjelasan ketika membaca sebuah kode. Kata – kata dalam sebuah komentar tidak akan dieksekusi oleh compiler.

Beberapa kesalahan dalam penulisan dalam C++ adalah:
• int int; /*salah karena nama sebuah variabel tidak boleh sama dengan seuah tipe data (int)*/
• int Jam_9; //salah karena nama variabel dimulai dengan huruf besar
• int 90jam; /*nah, ini juga salah karena nama sebuah variabel tidak boleh dimulai dengan bilangan*/

Penulisan yang benar dalam C++ adalah:
• int myint; //betul
• char kata_2; //betul juga...
• double bilangan_KeDuA; /*walaupun nama identifiernya aneh, tapi ini juga betul :) */

Setiap statement dalam C++ harus diberi tanda ‘;’ pada akhir dari statement. Contoh penulisan statement yang benar dalam C++ adalah:

int a, b, c;
a = 1;
b = 2;
c = a + b;

Sedangkan penulisan yang salah adalah:
int a, b, c
karena itu dianggap error oleh compiler, karena merupakan statement yang tidak lengkap. Baca Selengkapnya...

Minggu, 06 Desember 2009

Belajar C++




Algoritma Pemrograman Dengan Menggunakan C++

Pengantar
Puji dan syukur kepada Tuhan Yang Maha Esa karena berkat Dia-lah tulisan ini bisa selesai. Tulisan pertama saya ini membahas mengenai algoritma dalam pemrograman. Mudah –mudahan tulisan ini bisa memberi masukan bagi banyak orang khususnya bagi orang yang mempelajari pemrograman komputer untuk mempermudah mereka dalam membuat sebuah program yang baik.
Dalam membuat sebuah program, ada beberapa hal yang penting, paling tidak menurut saya, yaitu:
1. Tujuan pembuatan program,
2. Algoritma,
3. Bahasa pemrograman itu sendiri
Dalam kesempatan kali ini, saya ingin membahas mengenai algoritma dalam pemrograman. Hal – hal yang akan disajikan di sini merupakan contoh – contoh program yang ditulis dalam bahasa C++ yang kemudian akan dijelaskan lebih detail. Lebih tepatnya jika saya katakan bahwa tulisan ini merupakan kumpulan contoh algoritma yang pernah dibahas dan cukup “populer” sebagai contoh – contoh algoritma.
Pembahasan yang terdapat disini sebenarnya lebih ditujukan kepada orang – orang yang sudah sedikit mengenal bahasa pemrograman C++ sehingga akan mempermudah dalam memahami konsep algoritma yang dijelaskan di sini.

Sekilas Mengenai Algoritma
Algoritma seperti kata kebanyakan orang, bukanlah sesuatu yang hanya berhubungan dengan dunia komputer saja. Algoritma juga berlaku dalam kehidupan sehari-hari. Kali ini saya mau membahas contoh yang mungkin kedengaran tidak “lazim” digunakan untuk memberi gambaran mengenai algoritma :D.
Beberapa contoh sederhana mengenai algoritma yang dapat ditemui dalam kehidupan sehari – hari misalnya:
1. Memasak mie instant.
Prosesnya sbb: memanaskan air, membuka pembungkus mie instant (tentunya), memasukkan mie ke dalam air, taruh bumbu di piring, angkat mie jika sudah masak, campurkan dengan bumbu yang sudah ada di piring dengan mie, makan… :D (koq jadi laper? :D)
2. Menelepon
Prosesnya sbb: angkat telepon, tekan nomor teleponnya:
• jika diangkat maka mulai berbicara setelah selesai tutup teleponnya
• jika tidak diangkat, maka tutup teleponnya

Dan masih banyak lagi contoh – contoh sederhana mengenai algoritma yang dapat kita jumpai dalam kehidupan sehari – hari.

Algoritma Pemrograman
Sekarang kita mulai membicarakan mengenai algoritma pemrograman. Pertama – tama, akan saya kutip dulu ciri – ciri dari algoritma seperti yang dipaparkan oleh Donald E. Knuth:
• Algoritma mempunyai awal dan akhir.
• Setiap langkah harus didefinisikan dengan tepat sehingga tidak memiliki arti ganda (ambigu).
• Memiliki masukan (input) atau kondisi awal.
• Memiliki keluaran (output) atau kondisi akhir.
• Algoritma harus efektif; bila digunakan benar – benar menyelesaikan persoalan.

Saya sendiri sebenarnya tidak terlalu setuju dengan hal – hal seperti itu yang terkesan terlalu membatasi. Karena sebenarnya ada banyak cara untuk menghasilkan sesuatu tanpa harus mengikuti aturan yang “baku” / satu aturan saja yang terkesan mengikat, iya kan? Namun jika ada yang mau “bertindak” seperti yang telah dipaparkan di atas, itu sah – sah saja.
Sekarang, kita akan melihat beberapa program, mulai dari yang mudah sampai yang cukup sulit, beserta penjelasannya.


Nilai Terbesar Dari 3 Buah Bilangan
Untuk mencari nilai terbesar dari 3 buah bilangan, dalam C++, kode yang saya gunakan adalah sbb:

#include
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 adalah : " << (c > d ? c : d) << "\n";
}

Logika:
Bandingkan nilai pertama dengan nilai kedua. Kemudian yang lebih besar di antara nilai tersebut di bandingkan dengan nilai berikutnya (nilai ke tiga), sehingga di dapat nilai terbesar di antara ketiga variabel tersebut.

Penjelasan kode:
Seperti yang kita lihat di atas, pertama – tama, kita membuat tiga variabel yaitu, variabel a, b, c, dan d. Kemudian, kita meminta user untuk memasukkan nilai untuk variabel a, b, dan d. Setelah itu, kita membandingkan nilai masing – masing variabel. Disini digunakan variabel c sebagai “alat bantu”. Variabel c sendiri menyimpan nilai terbesar antara variabel a dan b. Kemudian ditampilkan nilai yang terbesar yang didapat setelah membandingkan variabel c dan d.

Jumlah Deret
Yang dimaksud dengan jumlah deret di sini adalah misalnya saja yang diminta adalah 3 suku deret. Maka dikalkulasikan menjadi:
1 – 1/3 + 1/5 – 1/ 7
Perhatikan bahwa dalam proses kalkulasi tersebut tanda + dan – berubah setiap kali dilakukan proses perhitungan. Baiklah, sekarang kita membahas kodenya:

#include
using namespace std;

void main () {
int mp = -1;
double satu = 1, ulang = 3;
int masuk;
cout << "masukan nilai : ";
cin >> masuk;

for (int ulang2 = 1; ulang2 <= masuk; ++ulang2) {
satu = satu + ((1 / ulang) * mp);
mp *= -1;
ulang += 2;
}

cout << satu << "\n";
}

Logika:
Melakukan perhitungan dari suku pertama sampai suku ke – n (jumlah suku yang diminta oleh user). Mungkin yang paling “mengganggu” pemikiran Anda adalah bagaimana cara untuk membuat tanda + dan minus berubah – ubah setiap kali, kan? Padahal itu bisa saja diatasi hanya dengan mengalikan -1 dengan -1 sehingga hasilnya bisa menjadi positif , ya kan? Jika sudah begitu, “urusan” berikutnya menjadi beres ?.

Penjelasan kode:
Kode di atas juga cukup jelas jika diamati dengan baik. Awalnya kita membuat beberapa “buah” variabel:
• Yang akan menjadi input bagi / dari user, yaitu masuk
• Yang akan “menampung” hasil perhitungan, yaitu satu
• Yang akan menjadi pembagi dan terus dinaikkan nilainya, yaitu ulang
• Yang akan “merubah” tanda dan jenis perhitungan (dari penjumlahan menjadi pengurangan dan sebaliknya), yaitu mp
Kemudian kita melakukan perulangan dengan menjumlahkan variabel satu yang bernilai 1 (pada awalnya) dengan hasil dari 1 dibagi dengan variabel ulang dimana nilai awalnya adalah 3, dan kemudian ditambah 2 untuk setiap perulangan yang dilakukan kemudian dikalikan dengan variabel mp yang bernilai -1 pada awalnya sehingga menghasilkan perhitungan: 1 – (1/3).Variabel mp kemudian dikalikan dengan -1 untuk menghasilkan nilai positif sehingga pada perhitungan berikutnya menjadi seperti berikut:
1 – (1/3) + (1/5)
Begitu seterusnya hingga perhitungan mencapai suku ke – n, dan proses perhitungan pun dilakukan sekali lagi dan berhenti. Hasilnya kemudian ditunjukkan oleh variabel satu. Jelas sekali, bukan?




Array
Ok, sekarang, masuk ke “permainan” array. Dalam “permainan” ini, kita akan meminta user untuk memasukkan nomor stambuk yangterdiri atas 7 angka. Masing - masing angka (dari nomor stambuk) tersebut akan disimpan dalam sebuah array yang terdapat variabel a. Nilai dari masing – masing array tersebut akan dikalikan jika nilai tersebut bukan 0 (nol) dan “disimpan dalam sebuah variabel sebut saja x. Kemudian dibuat variabel lain sebut saja b yang memiliki 7 array juga. “Isi” variabel b merupakan hasil dari masing – masing array variabel a ditambah x. Berikut ini kodenya:

#include
using namespace std;

void main() {
int a[7], x = 1;
for (int i = 0; i < 7; ++i) {
cout << "nomor " << i + 1 << ": ";
cin >> a[i];
}

for (int j = 0; j < 7; ++j) {
if (a[j] == 0)
continue;

else {
x *= a[j];
}
}

int b[7];

for (int k = 0; k < 7; ++k) {
b[k] = a[k] + x;
cout << b[k] << "\n";
}
}


Logika:
Dari semua array (angka – angka) yang ada (sudah dimasukkan), kita melakukan “pencarian”. Jika array tersebut bernilai 0 (nol) maka, array tersebut kita lewati. Jika array tersebut bukan bernilai nol (karena itu tentu saja bernilai lebih dari nol, karena secara logika, tidak ada nomor stambuk yang minus, kan?), maka kita kalikan dengan array berikutnya yang juga tidak bernilai nol. Kemudian setelah itu, kita membuat array lain dari sebuah variabel yang lain (tentunya) untuk “ditempati” masing – masing oleh hasil dari masing – masing array variabel yang satunya ditambah dengan hasil perkalian seluruh nilai tadi.

Penjelasan kode:
Pertama – tama, kita buat sebuah variabel (variabel a) untuk menampung 7 buah array, lalu variabel x untuk menampung hasil perkalian seluruh array variabel a. Nilai awal x adalah 1, dengan asumsi bahwa tidak ada nomor stambuk yang seluruhnya 0 (nol) (karena klo gitu buat apa dibuatkan nomor stambuk, kan?) sehingga bisa dikalikan dengan seluruh array variabel a dengan memiliki kemungkinan nilai terkecil adalah 1. Lakukan perulangan untuk setiap array variabel a, dengan “menyisipkan” kondisi agar jika nilai array tersebut adalah 0 (nol) maka dilewati (continue), dan apabila nilainya bukan nol, maka dikalikan dengan variabel x. Setelah selesai, dibuat variabel baru dengan array yang sama, yaitu 7. Lalu perulangan dilakukan lagi untuk mengisi semua array tersebut dengan hasil dari x ditambah dengan masing – masing array variabel a.




Segitiga Siku - Siku
Gambar segitiga yang akan dibuat adalah seperti di bawah ini:


*
**
***
****
*****
******
*******

Seperti yang kita lihat, bahwa terdapat segitiga siku – siku yang dibuat dengan cara membuat simbol “*” mulai dari satu sampai baris ke – n. Misalnya saja, dengan contoh di atas, user ingin menampilkan segitiga dengan jumlah baris 7, maka ditampilkan gambar seperti di atas. Begitu seterusnya. Berikut adalah contoh kodenya:

#include
using namespace std;

void main () {
int segi1;
cout << "";
cin >> segi1;

for (int j = 1; j <= segi1; ++j) {
for (int i = 1; i <= segi1; ++i) {
if (i <= segi1 - j)
cout << " ";

else
cout << "*";
}
cout << "\n";
}
}
Logika:
Bila diamati baik – baik, akan diketahui bahwa, misalnya, jika ada 7 baris yang diminta, maka ada 6 buah spasi yang dibuat lalu kemudian dicetak tanda asterisk “*”, dan pada baris berikutnya ada 5 buah spasi lalu dicetak dua buah tanda asterisk. Lalu kemudian pada baris berikutnya ada 4 buah spasi, pada baris berikutnya lagi ada 3 buah spasi, dst. Dapat disimpulkan bahwa jumlah spasi yang dibuat pada baris pertama adalah:
Total baris yang diinginkan – 1

Lalu kemudian pada baris kedua adalah:
Total baris yang diinginkan – 2

Begitu seterusnya.

Dengan demikian diketahui bahwa untuk mecetak spasi menggunakan rumus:
Total baris yang diinginkan – baris yang akan dicetak

Jadi, misalnya baris yang sedang “dikerjakan” adalah baris pertama maka, rumusnya menjadi: total baris yang diinginkan – 1, begitu juga dengan baris kedua menjadi: total baris yang diinginkan – 2, dst. Jika sudah “melewati” keadaan tersebut, dicetak “*”.

Penjelasan kode:
Pada kode di atas, pertama – tama kita membuat sebuah variabel / identifier dengan nama segi1. Dimana segi1, merupakan input dari user untuk menentukan berapa banyak baris segitiga yang akan dicetak. Setelah itu, dilakukan perulangan untuk mencetak banyaknya baris, di sini kita memakai variabel j. Untuk mencetak spasi dan tanda “*” sendiri digunakan variabel i, dengan kondisi:
• Jika i lebih kecil atau sama dengan segi1 - j, dicetak spasi
Ini karena syarat yang telah dikemukakan sebelumnya, jumlah spasi yang dicetak per baris adalah hasil dari segi1 – j, dimana j adalah baris yang aktual (current) pada saat itu.
• Jika i lebih besar dari segi1, maka dicetak tanda “*”.
Sebenarnya, jika Anda bisa mengamati dengan cukup seksama, maka Anda akan menemukan bahwa kita selalu mencetak dengan jumlah yang sama. Misalnya jumlah baris yang diinginkan adalah 7, maka sebenarnya dalam setiap baris dari baris pertama sampai baris 7, kita selalu mencetak sebanyak 7 kali pada setiap barisnya. Hanya saja ada “variasi”pada setiap barisnya, yaitu jika dengan dikuranginya segi1 dengan j, maka denga sendirinya jumlah “*” yang tercetak akan semakin banyak dan pada akhirnya sama dengan jumlah baris yang diinginkan. Jadi, cobalah bayangkan bahwa yang kita cetak adalah sebuah persegi / persegi panjang dengan gambaran seperti yang telah disebutkan di atas (bisa, kan? ?).
Hal ini terus berlanjut pada setiap baris dan pada ahirnya berhenti pada kondisi dimana j lebih besar dari segi1. Hasilnya dapat Anda lihat pada screen shot berikut:



















Baris Ganda
Kali ini Anda diminta untuk membuat / menampilkan berapa banyak baris yang diminta oleh user tapi dengan menggandakan setiap baris yang dicetak di layar. Misalnya, jumlah baris yang diminta adalah 5, maka yang tercetak adalah:
11
2222
333333
44444444
5555555555



Maka kode yang saya buat adalah sebagai berikut:

#include
using namespace std;

void main () {
int in;
cout << "banyaknya baris: ";
cin >> in;

for (int i = 1; i <= in; ++ i) {
for (int j = 1; j <= i * 2; ++j) {
cout << i;
}
cout << "\n";
}
}

Logika:
Logika yang digunakan di sini cukup mirip dengan cara kita mencetak segitiga siku –siku ke layar. Mungkin bisa dibilang ini masih ada “hubungan keluarga” dengan yang tadi ?. Disini kita melakukan perulangan untuk mencetak baris yang diminta oleh user. Dalam melakukan perulangan tersebut, kita menampilkan baris yang dicetak pada saat itu. Misalnya jika baris yang sedang dicetak pada saat itu adalah baris kedua, maka yang ditampilkan adalah angka 2. Begitu seterusnya. Perhatikan bahwa angka – angka yang dicetak memiliki sebuah pola. Pada setiap baris yang sedang dicetak pola dari angka –angkanya adalah: baris yang sedang dicetak dikali 2. Misalnya pada baris pertama, jumlah angka / banyaknya angka yang dicetak adalah 1 X 2 = 2 kali di cetak. Pada baris kedua, banyaknya baris yang di cetak adalah 2 X 2, dst. Hal ini berlanjut sampai baris yang diinginkan oleh user sudah tercetak.

Penjelasan kode:
Pada kode di atas, dibuat variabel untuk menampung berapa banyak baris yang diinginkan oleh user (in), just like usual ?. Berdasarkan input dari user tersebut, kita membuat perulangan untuk mencetak baris – baris yang diinginkan user. Dalam perulangan ini, kita “menyisipkan” sebuah perulangan lagi untuk mencetak angka ke layar (dengan menggunakan variabel j). Perulangan ini dilakukan dengan kondisi j lebih kecil atau sama dengan i dikali 2. Dimana, i adalah baris yang sedang dikerjakan dan j adalah berapa banyak perulangan yang dilakukan dalam kondisi j lebih kecil atau sama dengan i.
Berikut ini screen shot-nya:


Menyebut Angka Terbalik
Kita mulai memasuki salah satu bagian favorit saya yaitu “mengkonversi” bilangan menjadi kalimat / kata – kata ?. Kita memasuki dulu bagian yang mudahnya, menyebut angka dengan terbalik. Kali ini, kita meminta user untuk mengurangi bilangan apa pun (yang lebih kecil dari 10.000) dengan 10.000. Misalnya, user memasukkan angka 3456, maka 10.000 – 3.456 tentu saja hasilnya = 6.544, tapi kita mengkonversinya dengan menjadikannya sebagai kalimat tapi dibaca terbalik. Jadi, tampilannya adalah: empat empat lima enam ?.
Kodenya adalah:

#include
using namespace std;

void sntce (int n) {
switch (n) {
case 1: cout << "satu "; break;
case 2: cout << "dua "; break;
case 3: cout << "tiga "; break;
case 4: cout << "empat "; break;
case 5: cout << "lima "; break;
case 6: cout << "enam "; break;
case 7: cout << "tujuh "; break;
case 8: cout << "delapan "; break;
case 9: cout << "sembilan "; break;
case 0: cout << "nol "; break;
default: break;
}
}

void reverse (int n) {
int zero, mod;
zero = n / 10;
mod = n % 10;

if (zero == 0 && mod == 0)
exit;

else {
sntce (mod);
reverse (zero);
}
}


void main () {
int in, reduce;
const int stay = 10000;

do {
cout << "";
cin >> in;
} while (in > 10000 || in < 1);

reduce = stay - in;
reverse (reduce);
cout << "\n";
}

Logika:
Dari input yang dimasukan oleh user, dikurangi dengan 10.000 lalu hasilnya mulai dari angka paling terakhir sampai dengan angka pertama dikonversi ke dalam bentuk angka. Cara untuk “mengambil” angka terakhir adalah dengan mengambil modulo / sisa bagi dari hasil pengurangan tersebut dibagi 10. Misalnya, hasilnya 6544 dibagi 10 tentu saja sisanya adalah 4. Kemudian hasil bulat dari 6544 dibagi 10 yang adalah 654 akan di bagi lagi dengan 10 dan akan menghasilkan angka 4. Dan hasil bulat dari 654 dibagi 10 yang adalah 65 kembali dibagi dengan 10 dan sisanya adalah 5. Kemudian yang terakhir, karena nilai 6 yang disimpan kemudian dibagi 10, dan sisanya pasti 6, maka 6 diambil.

Penjelasan kode:
Pada bagian utama program, kita membuat beberapa variabel: reduce, in, dan stay. Variabel reduce sendiri berguna untuk menampung hasil pengurangan dari stay, yang telah kita beri nilai konstan dari awal yaitu 10.000. Tapi, kita mau mencegah agar user tidak memasukkan angka yang “tidak lazim” misalnya angka 0 atau 10.001 dan seterusnya. Maka, kita memakai fungsi do...while (ini sebenarnya “favorit” saya, karena saya ingin selalu mencegah input yang tidak normal) dengan “aturan” bahwa tampilan tersebut (“”) akan selalu terulang bila user memasukkan angka yang lebih besar dari 10.000 atau lebih kecil dari 1. Kita lalu memasukkan reduce ke reverse, itulah akhir dari program utama. Lalu, seperti yang kita lihat di atas, ada 2 fungsi yang kita buat sejak awal: sntce dan reverse. sntce berfungsi untuk mengkonversi angka menjadi sebuah kata dengan fungsi switch, yang saya rasa sudah cukup jelas, bahwa jika inputnya (dalam hal ini adalah sisa bagi dari 10.000 dikurangi input dari user kemudian dibagi 10) adalah 1, maka yang ditampilkan adalah kata “satu”, bila 2, maka ditampilkan adalah “dua”, dst. Sedangkan reverse untuk menghitung hasil pengurangan dari 10.000 dikurangi dengan input dari user (in). Di sini kita memakai dua kondisi, yaitu jika hasil bulat dari n (reduce) dibagi 10 sama dengan 0 dan juga sisa bagi (mod) sama dengan 0 (nol), dan kondisi di luat itu (tentu saja ini berarti bahwa masih ada bilangan yang harus di bagi 10 atau bisa saja masih ada sisa bagi yang harus di masukkan ke sntce). Jika yag terjadi adalah kondisi kedua, kita “melempar” variabel mod ke sntce (udah tau kan fungsinya?) lalu memangil kembali reverse dengan menggunakan zero sampai akhirnya tidak ada lagi yang bisa dibagi dan tidak ada lagi sisa pembagian. Berikut tampilannya:










Menyebut Angka
Ok, akhirnya sampai di sini juga. Program berikut adalah program untuk menyebut angka dalam bentuk kalimat mulai dari 1 sampai jutaan. Misalnya angka 123 menjadi “seratus dua puluh tiga”, dst. Berikut ini salah satu contoh kodenya:

#include
using namespace std;

void first (int n) {
switch (n) {
case 1: cout << "satu "; break;
case 2: cout << "dua "; break;
case 3: cout << "tiga "; break;
case 4: cout << "empat "; break;
case 5: cout << "lima "; break;
case 6: cout << "enam "; break;
case 7: cout << "tujuh "; break;
case 8: cout << "delapan "; break;
case 9: cout << "sembilan "; break;
case 10: cout << "sepuluh "; break;
case 11: cout << "sebelas "; break;
default: break;
}
}

void second (int n) {
int bul, sisa;
bul = n / 10;
sisa = n % 10;

if (bul == 0)
first (sisa);

else if (bul == 1) {
if (sisa <= 1)
first (n);

else {
first (sisa);
cout << "belas ";
}
}

else {
first (bul);
cout << "puluh ";
first (sisa);
}
}

void third (int n) {
int bul, sisa;
bul = n / 100;
sisa = n % 100;

if (bul == 0)
second (sisa);

else if (bul == 1) {
if (sisa == 0)
cout << "seratus ";

else {
cout << "seratus ";
second (sisa);
}
}

else {
first (bul);
cout << "ratus ";
second (sisa);
}
}

void fourth (int n) {
int bul, sisa;
bul = n / 1000;
sisa = n % 1000;

if (bul == 0)
third (sisa);

else if (bul == 1) {
if (sisa == 0)
cout << "seribu ";

else {
cout << "seribu ";
third (sisa);
}
}

else {
third (bul);
cout << "ribu ";
third (sisa);
}
}

void fifth (int n) {
int bul, sisa;
bul = n / 1000000;
sisa = n % 1000000;

if (bul == 0)
fourth (sisa);

else if (bul == 1) {
if (sisa == 0)
cout << "satu juta ";

else {
cout << "satu juta ";
fourth (sisa);
}
}

else {
third (bul);
cout << "juta ";
fourth (sisa);
}
}

void main () {
int n = 1;
while (n == 1) {
int num1;

do {
cout << "";
cin >> num1;
} while (num1 < 1);

fifth (num1);
cout << "\n";
}
}



Logika:
Kita mau mengetes apakah angka yang dimasukkan adalah jutaan, ribuan, ratusan, puluhan, atau satuan. Karena pada dasarnya hanya itu saja jenis – jenis angka yang ada (tidak termasuk milyaran dan triliunan dan yang lebih besar, karena tipe int tidak dapat menjangkau bilangan – bilangan tersebut).
Pada waktu pertama kali kita “mengetes” bilangan tersebut, kita mencoba menguji:
1. Apakah bilangan itu adalah jutaan?
Pertama – tama, mungkin ada yang bertanya mengapa bagian ini dimasuki terlebih dahulu? Secara logisnya, dari cara pengucapannya, dalam mengucapkan nama bilangan, tentu saja yang akan diucapan adalah bilangan terbesarnya lalu berurut sampai yang terkecil. Misalnya, 1.234 dibaca seribu dua ratus tiga puluh empat. Maka, dari besarnya angka yang dapat dimasukkan ke dalam program, jutaan merupakan “porsi” yang terbesar. Maka yang paling pertama diuji adalah “apakah bilangan itu adalah jutaan?”.
• jika tidak, maka bilangan itu dites apakah bilangan itu adalah ribuan.
• jika ya, maka “bagian jutaan” bilangan itu diterjemahkan ke dalam kata – kata lalu sisanya (ratusan ribu ke bawah) dicek lagi pada fungsi untuk bilangan ribuan.
2. Apakah bilangan itu ribuan?
• Jika tidak, maka bilangan itu akan dites apakah bilangan itu adalah ratusan.
• Jika ya, maka “bagian ribuan” dari bilangan itu diterjemahkan lalu sisanya dimasukkan di bagian ratusan.
3. Apakah bilangan itu ratusan?
• Jika tidak, maka bilangan itu akan dites apakah bilangan itu adalah puluhan.
• Jika ya, maka “bagian ratusan” dari bilangan itu diterjemahkan lalu sisanya dimasukkan ke dalam fungsi puluhan.
4. Apakah bilangan itu puluhan?
• Jika tidak, maka bilangan itu akan dimasukkan ke dalam fungsi terakhir, fungsi satuan.
• Jika ya, maka “bagian puluhan” dari bilangan itu akan diterjemahkan dan kemudian sisanya dimasukkan ke dalam fungsi satuan.

Penjelasan kode:
Pertama – tama, perlu kita perhatikan bahwa sudah “disiapkan” sebuah perulangan di sana (while). Itu sebenarnya “kerjaaan” saya, yang membuatnya supaya programnya bisa diulang terus menerus (silahkan edit sendiri kalau mau merubahnya) ?. Pada fungsi utama, seperti yang kita lihat, kita ingin supaya masukan kita mempunyai nilai paling tidak sama dengan satu. Lalu setelah itu, kita memasukkan input tersebut pada bagian jutaan. Caranya mirip dengan bagaimana kita menerjemahkan angka – angka ke dalam kata – kata. Prosesnya dapat kita lihat pada kondisi – kondisi pada fungsi tersebut.
• Jika hasil bulat dari pembagian n dengan 1.000.000 adalah 0 (nol), maka bisa dipastikan bahwa n bukanlah bilangan jutaan.
• Jika hasil bulat dari pembagian n dengan 1.000.000 adalah 1 dan sisanya adalah 0 (nol), maka n pastilah 1.000.000 (satu juta).
• Jika hasil bulat dari pembagian n dengan 1.000.000 lebih besar dari 1, maka bilangan tersebut pastilah lebih atau sama dengan 2.000.000. Maka hasil bulat pembagian tersebut, dimasukkan ke dalam third (karena nilai maksimal dari bilangan jutaan adalah ratusan juta), lalu di cetak kata “juta ”, dan kemudian sisanya dimasukkan ke dalam fourth (karena ada kemungkinan sisanya bernilai ribuan)
Pada fungsi – fungsi yang lainnya juga dibuat dengan cara seperti itu hingga akhirnya pada bagian satuan dari bilangan tersebut. Hanya saja, jika kita perhatikan pada fungsi second, ada sebuah kondisi dimana jika hasil bulat dari pembagian adalah 1, dan jika sisanya lebih besar dari 1, maka sisanya akan dimasukkan ke dalam first dan selanjutnya di cetak kata “belas ”. Jadi misalnya, angkanya adalah 19, sisanya tentu saja adalah 9. Angka 9 di first, akan menghasilkan kata “sembilan “ di layar. Lalu ditambah dengan kata “belas “, maka hasilnya adalah “sembilan belas “. Jadi, kita tidak usah membuat case untuk “belas – belas” yang lain selain 11 (sebelas), ‘tul ga? ?.









Penutup
Phew, akhirnya selesai juga tulisan ini (tepatnya beberapa menit lagi sebelum Van Helsing beraksi alias tengah malam :D). Ngga tau, berapa lama waktu saya habiskan di depan kompie untuk menyempurnakan tulisan ini. Lagi pula, karena ini merupakan tulisan pertama saya, maka pasti tidak luput dari kesalahan – kesalahan (sebenarnya tulisan ke berapa pun pasti ada kesalahan karena manusia tidak ada yang sempurna, ‘tul ga?). Oleh karena itu, saran dan kritik sangat diharapkan untuk menjadi masukan yang berguna dikemudian hari.

Referensi
• Drs. Suarga, M.Sc., M. Math., Ph.D., Algoritma Pemrograman, Penerbit ANDI, 2006
• Robert Setiadi, Algoritma Itu Mudah, PT. Prima Infosarana Media, 2008
• http://www.lautanindonesia.com (beserta para penghuninya ?. Thanks atas kritikan –kritikan dan masukan -masukannya).
• Benda kecil yang telah dibuatkan dan dititipkan Tuhan pada saya untuk dijaga yang bernama otak ?. Baca Selengkapnya...