SlideShare a Scribd company logo
1 of 25
Algoritma Pemrograman Dengan Menggunakan
C++
Lisensi Dokumen:
Copyright © 2003-2007 IlmuKomputer.Com
Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan
secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus
atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin
terlebih dahulu dari IlmuKomputer.Com.

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
1
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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.
2
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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:
3
Komunitas eLearning 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 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
4
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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 <iostream>
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:
5
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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
6
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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 <iostream>
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
7
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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:

8
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
*
**
***
****
*****
******
*******
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 <iostream>
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
9
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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
Dimana segi1, merupakan input dari user untuk menentukan berapa banyak

segi1.

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

10
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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:

11
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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 <iostream>
using namespace std;

12
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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
13
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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

14
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
dengan menjadikannya sebagai kalimat tapi dibaca terbalik. Jadi, tampilannya adalah:
empat empat lima enam .
Kodenya adalah:
#include <iostream>
using namespace std;
void sntce (int n) {
switch (n) {
case 1: cout <<
case 2: cout <<
case 3: cout <<
case 4: cout <<
case 5: cout <<
case 6: cout <<
case 7: cout <<
case 8: cout <<
case 9: cout <<
case 0: cout <<
default: break;
}
}

"satu "; break;
"dua "; break;
"tiga "; break;
"empat "; break;
"lima "; break;
"enam "; break;
"tujuh "; break;
"delapan "; break;
"sembilan "; break;
"nol "; 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;

15
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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
16
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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
17
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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 <iostream>
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 {

18
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
}

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);

19
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
}

}
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);

20
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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?

21
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
•

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.
22
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
•

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? .

23
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
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 .

24
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
Biografi Penulis
Wirman

a.k.a Chipp.

Adalah salah satu alumni S1 Universitas Katolik Atma Jaya
Makassar jurusan Ekonomi Manajemen yang senang ngutak-ngatik
komputer, terutama software. Sekarang bekerja dalam bidang yang
sama sekali jauh dari dunia pemrograman, yaitu pelayaran (sebagai
staff finance). Tidak mengaku expert, dan masih terus belajar untuk
menjadi lebih baik lagi.
Emailku
Blogku

25
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com

More Related Content

What's hot

Membuat program kalkulator sederhana dengan matlab
Membuat program kalkulator sederhana dengan matlabMembuat program kalkulator sederhana dengan matlab
Membuat program kalkulator sederhana dengan matlabNur Halimah
 
ALOGARITMA 4
ALOGARITMA 4ALOGARITMA 4
ALOGARITMA 4arstwn
 
How to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - nganggurHow to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - ngangguridsecconf
 
PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi Hirwanto Iwan
 

What's hot (7)

Membuat program kalkulator sederhana dengan matlab
Membuat program kalkulator sederhana dengan matlabMembuat program kalkulator sederhana dengan matlab
Membuat program kalkulator sederhana dengan matlab
 
Pengenalan Mathlab
Pengenalan MathlabPengenalan Mathlab
Pengenalan Mathlab
 
Analisis algoritma
Analisis algoritmaAnalisis algoritma
Analisis algoritma
 
ALOGARITMA 4
ALOGARITMA 4ALOGARITMA 4
ALOGARITMA 4
 
How to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - nganggurHow to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - nganggur
 
Pertemuan 3
Pertemuan 3Pertemuan 3
Pertemuan 3
 
PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi
 

Viewers also liked

Logika dan Algoritma
Logika dan AlgoritmaLogika dan Algoritma
Logika dan AlgoritmaIhin Muslihin
 
nilai variabel & konstanta
nilai variabel & konstantanilai variabel & konstanta
nilai variabel & konstantaIhin Muslihin
 
Struktur Dasar Algoritma
Struktur Dasar AlgoritmaStruktur Dasar Algoritma
Struktur Dasar AlgoritmaIhin Muslihin
 
10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf
10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf
10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdfunn | UNITED NEWS NETWORK GmbH
 
Ata de 28 de fevereiro 2014
Ata de 28 de fevereiro 2014Ata de 28 de fevereiro 2014
Ata de 28 de fevereiro 2014GMOH_PSD
 
Lectura critica de internet
Lectura critica de internetLectura critica de internet
Lectura critica de internetroblesteranjp
 
Diy flooring , flooring buymydiscountfloors
Diy flooring , flooring   buymydiscountfloorsDiy flooring , flooring   buymydiscountfloors
Diy flooring , flooring buymydiscountfloorsBuymy Discountfloors
 
¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups
¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups
¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las StartupsDoers DF
 

Viewers also liked (20)

Ubuntu
UbuntuUbuntu
Ubuntu
 
variabel tipe data
variabel tipe datavariabel tipe data
variabel tipe data
 
operator
operatoroperator
operator
 
Logika dan Algoritma
Logika dan AlgoritmaLogika dan Algoritma
Logika dan Algoritma
 
nilai variabel & konstanta
nilai variabel & konstantanilai variabel & konstanta
nilai variabel & konstanta
 
Struktur Dasar Algoritma
Struktur Dasar AlgoritmaStruktur Dasar Algoritma
Struktur Dasar Algoritma
 
mengenal gnulinux
mengenal gnulinuxmengenal gnulinux
mengenal gnulinux
 
Ebook ubuntu
Ebook ubuntuEbook ubuntu
Ebook ubuntu
 
mengenal ubuntu
mengenal ubuntumengenal ubuntu
mengenal ubuntu
 
Jurnal juanda
Jurnal juandaJurnal juanda
Jurnal juanda
 
10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf
10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf
10-309-AI-Hintergrundpapier-Sicherheit-bei-der-Nutzung-von-Smartphones.pdf
 
Lei de ensino terapeuta
Lei de ensino terapeutaLei de ensino terapeuta
Lei de ensino terapeuta
 
Ata de 28 de fevereiro 2014
Ata de 28 de fevereiro 2014Ata de 28 de fevereiro 2014
Ata de 28 de fevereiro 2014
 
Derechos de autor
Derechos de autorDerechos de autor
Derechos de autor
 
Lectura critica de internet
Lectura critica de internetLectura critica de internet
Lectura critica de internet
 
JUC-TESSE
JUC-TESSEJUC-TESSE
JUC-TESSE
 
Diy flooring , flooring buymydiscountfloors
Diy flooring , flooring   buymydiscountfloorsDiy flooring , flooring   buymydiscountfloors
Diy flooring , flooring buymydiscountfloors
 
MarktkommentarRenten.pdf
MarktkommentarRenten.pdfMarktkommentarRenten.pdf
MarktkommentarRenten.pdf
 
Presseinformation Fun & Safety 03-12-12.pdf
Presseinformation Fun & Safety 03-12-12.pdfPresseinformation Fun & Safety 03-12-12.pdf
Presseinformation Fun & Safety 03-12-12.pdf
 
¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups
¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups
¡Abre los ojos!: 20 cosas que deberías ver sobre Internet y las Startups
 

Similar to Algoritma

Logika pemrograman hand out
Logika pemrograman hand outLogika pemrograman hand out
Logika pemrograman hand outgivaro igfar
 
Algoritma pemrograman-dalam-bahasa-pascal
Algoritma pemrograman-dalam-bahasa-pascalAlgoritma pemrograman-dalam-bahasa-pascal
Algoritma pemrograman-dalam-bahasa-pascalBudi Permana
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_stringRoziq Bahtiar
 
Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)
Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)
Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)evarahma70
 
Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010Dian Aditya
 
Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Damun Setiaji
 
Jeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.LangJeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.LangIndividual Consultants
 
DASAR - DASAR ALGORITMA
DASAR - DASAR ALGORITMADASAR - DASAR ALGORITMA
DASAR - DASAR ALGORITMAWalid_1234
 
Analisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute ForceAnalisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute ForceAdam Mukharil Bachtiar
 
Algoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.pptAlgoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.pptELDONIMOSUL1
 
Pengulangan Visual Basic
Pengulangan Visual BasicPengulangan Visual Basic
Pengulangan Visual BasicEman Mendrofa
 
Laporan praktikum iii visual basic
Laporan praktikum iii visual basicLaporan praktikum iii visual basic
Laporan praktikum iii visual basicrahmi wahyuni
 
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTFMuhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTFidsecconf
 

Similar to Algoritma (20)

Instalasi Dev-C++
Instalasi Dev-C++Instalasi Dev-C++
Instalasi Dev-C++
 
Logika pemrograman hand out
Logika pemrograman hand outLogika pemrograman hand out
Logika pemrograman hand out
 
Algoritma Symboolon
Algoritma SymboolonAlgoritma Symboolon
Algoritma Symboolon
 
E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3
 
Algoritma pemrograman-dalam-bahasa-pascal
Algoritma pemrograman-dalam-bahasa-pascalAlgoritma pemrograman-dalam-bahasa-pascal
Algoritma pemrograman-dalam-bahasa-pascal
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
 
Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)
Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)
Terjemahan bahasa indonesia (foundation of algorithm by richard neapolitan)
 
Daskom 3
Daskom 3Daskom 3
Daskom 3
 
Introduction to NumPy
Introduction to NumPyIntroduction to NumPy
Introduction to NumPy
 
Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010Tugas C++ - Dian Aditya - 2009/2010
Tugas C++ - Dian Aditya - 2009/2010
 
Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1Pembahasan ujian teori pemrograman pascal bagian 1
Pembahasan ujian teori pemrograman pascal bagian 1
 
Jeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.LangJeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.Lang
 
DASAR - DASAR ALGORITMA
DASAR - DASAR ALGORITMADASAR - DASAR ALGORITMA
DASAR - DASAR ALGORITMA
 
Analisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute ForceAnalisis Algoritma - Strategi Algoritma Brute Force
Analisis Algoritma - Strategi Algoritma Brute Force
 
Operasi dasar matlab job 1
Operasi dasar matlab job 1Operasi dasar matlab job 1
Operasi dasar matlab job 1
 
Algoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.pptAlgoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.ppt
 
Efisiensi algoritma
Efisiensi algoritmaEfisiensi algoritma
Efisiensi algoritma
 
Pengulangan Visual Basic
Pengulangan Visual BasicPengulangan Visual Basic
Pengulangan Visual Basic
 
Laporan praktikum iii visual basic
Laporan praktikum iii visual basicLaporan praktikum iii visual basic
Laporan praktikum iii visual basic
 
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTFMuhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
 

Recently uploaded

1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdfsandi625870
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfWahyudinST
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxLeniMawarti1
 
Mata Kuliah Etika dalam pembelajaran Kristen.pptx
Mata Kuliah Etika dalam pembelajaran Kristen.pptxMata Kuliah Etika dalam pembelajaran Kristen.pptx
Mata Kuliah Etika dalam pembelajaran Kristen.pptxoperatorsttmamasa
 
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.aechacha366
 
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxSKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxg66527130
 
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaAbdiera
 
materi pembelajaran tentang INTERNET.ppt
materi pembelajaran tentang INTERNET.pptmateri pembelajaran tentang INTERNET.ppt
materi pembelajaran tentang INTERNET.pptTaufikFadhilah
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptssuser940815
 
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxSBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxFardanassegaf
 
Modul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum MerdekaModul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum MerdekaAbdiera
 
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptx
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptxAKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptx
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptxHeriyantoHeriyanto44
 
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxTopik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxsyafnasir
 
Teknik Menjawab Kertas P.Moral SPM 2024.pptx
Teknik Menjawab Kertas P.Moral SPM  2024.pptxTeknik Menjawab Kertas P.Moral SPM  2024.pptx
Teknik Menjawab Kertas P.Moral SPM 2024.pptxwongcp2
 
LATIHAN SOAL geo ANALISA DATA PENDUDUK.doc
LATIHAN SOAL geo ANALISA DATA PENDUDUK.docLATIHAN SOAL geo ANALISA DATA PENDUDUK.doc
LATIHAN SOAL geo ANALISA DATA PENDUDUK.docjohan effendi
 
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKAPPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKARenoMardhatillahS
 
PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024MALISAAININOORBINTIA
 
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...NiswatuzZahroh
 
P_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.ppt
P_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.pptP_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.ppt
P_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.pptAfifFikri11
 
Modul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaunModul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaunnhsani2006
 

Recently uploaded (20)

1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdf
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
 
Mata Kuliah Etika dalam pembelajaran Kristen.pptx
Mata Kuliah Etika dalam pembelajaran Kristen.pptxMata Kuliah Etika dalam pembelajaran Kristen.pptx
Mata Kuliah Etika dalam pembelajaran Kristen.pptx
 
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
PUEBI.bahasa Indonesia/pedoman umum ejaan bahasa Indonesia pptx.
 
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxSKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
 
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
 
materi pembelajaran tentang INTERNET.ppt
materi pembelajaran tentang INTERNET.pptmateri pembelajaran tentang INTERNET.ppt
materi pembelajaran tentang INTERNET.ppt
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.ppt
 
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxSBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
 
Modul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum MerdekaModul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
 
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptx
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptxAKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptx
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pptx
 
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxTopik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
 
Teknik Menjawab Kertas P.Moral SPM 2024.pptx
Teknik Menjawab Kertas P.Moral SPM  2024.pptxTeknik Menjawab Kertas P.Moral SPM  2024.pptx
Teknik Menjawab Kertas P.Moral SPM 2024.pptx
 
LATIHAN SOAL geo ANALISA DATA PENDUDUK.doc
LATIHAN SOAL geo ANALISA DATA PENDUDUK.docLATIHAN SOAL geo ANALISA DATA PENDUDUK.doc
LATIHAN SOAL geo ANALISA DATA PENDUDUK.doc
 
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKAPPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
 
PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024
 
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
 
P_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.ppt
P_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.pptP_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.ppt
P_E_R_I_L_A_K_U__K_O_N_S_E_L_O_R__v.1.ppt
 
Modul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaunModul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaun
 

Algoritma

  • 1. Algoritma Pemrograman Dengan Menggunakan C++ Lisensi Dokumen: Copyright © 2003-2007 IlmuKomputer.Com Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. 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 1 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 2. 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. 2 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 3. 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: 3 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 4. #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 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 4 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 5. 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 <iostream> 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: 5 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 6. 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 6 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 7. 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 <iostream> 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 7 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 8. 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: 8 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 9. * ** *** **** ***** ****** ******* 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 <iostream> 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 9 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 10. 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 Dimana segi1, merupakan input dari user untuk menentukan berapa banyak segi1. 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 10 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 11. 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: 11 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 12. 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 <iostream> using namespace std; 12 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 13. 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 13 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 14. 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 14 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 15. dengan menjadikannya sebagai kalimat tapi dibaca terbalik. Jadi, tampilannya adalah: empat empat lima enam . Kodenya adalah: #include <iostream> using namespace std; void sntce (int n) { switch (n) { case 1: cout << case 2: cout << case 3: cout << case 4: cout << case 5: cout << case 6: cout << case 7: cout << case 8: cout << case 9: cout << case 0: cout << default: break; } } "satu "; break; "dua "; break; "tiga "; break; "empat "; break; "lima "; break; "enam "; break; "tujuh "; break; "delapan "; break; "sembilan "; break; "nol "; 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; 15 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 16. 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 16 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 17. 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 17 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 18. 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 <iostream> 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 { 18 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 19. } 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); 19 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 20. } } 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); 20 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 21. 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? 21 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 22. • 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. 22 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 23. • 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? . 23 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 24. 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 . 24 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com
  • 25. Biografi Penulis Wirman a.k.a Chipp. Adalah salah satu alumni S1 Universitas Katolik Atma Jaya Makassar jurusan Ekonomi Manajemen yang senang ngutak-ngatik komputer, terutama software. Sekarang bekerja dalam bidang yang sama sekali jauh dari dunia pemrograman, yaitu pelayaran (sebagai staff finance). Tidak mengaku expert, dan masih terus belajar untuk menjadi lebih baik lagi. Emailku Blogku 25 Komunitas eLearning IlmuKomputer.Com Copyright © 2003-2007 IlmuKomputer.Com