Daripada nge-Galau terus,mending kita mikir
sejenak,,itung-itung sharing ilmu yang kita dapat lah,,,
Kebanyakan,yang belajar Algoritma pasti pernah disuruh untuk membuat bintang yang berbentuk segitiga,
Kebanyakan,yang belajar Algoritma pasti pernah disuruh untuk membuat bintang yang berbentuk segitiga,
Seperti ini contoh nya:
1
2
3
4
5
|
*
**
***
****
*****
|
Atau mungkin juga sebagai berikut:
1
2
3
4
5
|
*****
****
***
**
*
|
Mungkin juga yang agak kompleks seperti
berikut:
1
2
3
4
5
|
*********
*******
*****
***
*
|
Pertanyaannya adalah, bagaimana membuatnya ke
dalam bahasa pemrograman tertentu?
Sebelum kita menerjemahkannya ke dalam kode
program, pertama kali haruslah kita mengerti bagaimana cara membuatnya. Kita
akan mengambil contoh segitiga yang pertama.
Pada segitiga ini, kita melihat bahwa ada 5
baris. Jumlah bintang pada tiap baris adalah sebagai berikut:
baris ke-1, berisi 1 bintang
baris ke-2, berisi 2 bintang
baris ke-3, berisi 3 bintang
baris ke-4, berisi 4 bintang
baris ke-5, berisi 5 bintang
Dari hal tersebut, kita bisa menyimpulkan
sebagai berikut:
Ada 5 baris, di mana
baris ke-X (X adalah 1, 2, 3, 4, 5) berisi X bintang.
Kita bisa juga menyimpulkannya sebagai
berikut:
Ada N baris, di mana
baris ke-X (X adalah 1, 2, 3, dan seterusnya sampai N) berisi X bintang.
Sekarang kita akan menerjemahkannya ke dalam
kode program.
Pertama, kita akan menuliskan kelima baris
tersebut. Ini bisa kita lakukan sebagai berikut:
for a
= 1 to 5 do {looping/perulangan untuk menuliskan 5 baris}
begin
{kode
untuk tiap-tiap baris}
end
|
Pada algoritma di atas, kita melakukan
perulangan sebanyak 5 kali untuk menuliskan kelima baris tersebut. Berikutnya
kita tuliskan bintang sebanyak angka baris tersebut (1 bintang pada baris ke-1,
2 bintang pada baris ke-2, dst). Ini bisa kita lakukan sebagai berikut:
for a
= 1 to 5 do
begin
for b
= 1 to a do {looping untuk menuliskan isi tiap-tiap baris}
begin
write '*' {tuliskan
bintang}
end
end
|
Lalu, apa yang kurang dengan algoritma di
atas? Tentunya setelah kita menuliskan bintang pada suatu baris, kita harus
turun untuk ke baris berikutnya. Setelah kita menuliskan 1 bintang di baris
pertama, kita harus turun ke baris selanjutnya (yaitu baris kedua) dan
menuliskan 2 bintang di baris ini. Berikutnya, turun ke baris ketiga dan
menuliskan 3 bintang di baris ini. Ini bisa kita lakukan sebagai berikut:
for a
= 1 to 5 do
begin
for b
= 1 to a do
begin
write '*'
end
writeln {menuliskan
karakter pergantian baris, layaknya menekan ENTER}
end
|
Selesai. Berikutnya adalah menerjemahkan
algoritma (pseudocode) di atas ke dalam bahasa pemrograman favorit kita.
Menggunakan bahasa C++, hasilnya kira-kira sebagai berikut:
#include
<iostream>
using namespace std;
int main()
{
for (int a
= 1; a <= 5; a++)
{
for (int b
= 1; b <= a; b++)
{
cout
<< "*";
}
cout
<< endl;
}
}
|
Dalam C, kira-kira sebagai berikut:
#include
<stdio.h>
int main()
{
int a,
b;
for (a
= 1; a <= 5; a++)
{
for (b
= 1; b <= a; b++)
{
printf("*");
}
printf("n");
}
}
|
Apabila jumlah baris bisa diubah-ubah,
tergantung dari masukan yang diberikan pengguna, program dalam bahasa C++ di
atas bisa diubah menjadi:
#include
<iostream>
using namespace std;
int main()
{
int n;
cout
<< "n = "; cin >> n; // baca input n dari pengguna
for (int a
= 1; a <= n; a++) // ganti looping a menjadi dari 1 sampai n
{
for (int b
= 1; b <= a; b++)
{
cout
<< "*";
}
cout
<< endl;
}
}
|
Untuk bentuk segitiga yang kedua, bisa
menggunakan program dalam bahasa C++ berikut:
#include
<iostream>
using namespace std;
int main()
{
int n;
cout
<< "n = "; cin >> n;
for (int a
= n; a >= 1; a--) // kalau tadi dari 1 sampai n, sekarang dari n sampai 1
(hitung mundur)
{
for (int b
= 1; b <= a; b++)
{
cout
<< "*";
}
cout
<< endl;
}
}
|
Perlu diingat bahwa walaupun kita menghitung
mundur dari 5 sampai 1, program tidak akan menuliskannya dari baris ke-5 menuju
baris ke-1. Program secara berurut akan menulis dari atas ke bawah, dari kiri
ke kanan. Oleh karena itu, kita bisa menggunakan perulangan yang hitung mundur
pada program dalam bahasa C++ di atas.
Bagaimana jika disuruh menampilkan segitiga
berikut?
1
2
3
4
5
|
*
**
***
****
*****
|
Bentuk seperti di atas sudah lebih kompleks
dari yang dijelaskan sebelumnya. Memang sama-sama terdiri dari 5 baris, namum
isi tiap-tiap barisnya berbeda. Isi tiap-tiap barisnya adalah sebagai berikut:
baris ke-1, berisi 4 spasi diikuti 1 bintang
baris ke-2, berisi 3 spasi diikuti 2 bintang
baris ke-3, berisi 2 spasi diikuti 3 bintang
baris ke-4, berisi 1 spasi diikuti 4 bintang
baris ke-5, berisi 0 spasi diikuti 5 bintang
Kita bisa menyimpulkannya menjadi:
Ada N baris, di mana
baris ke-X (X adalah 1, 2, 3, dan seterusnya sampai N) berisi (N – X) spasi
diikuti X bintang.
Algoritma untuk menampilkan segitiga yang
pertama di atas dapat kita tambahkan sebagai berikut:
for a
= 1 to 5 do
begin
c
= 5 - a {jumlah spasi yang akan ditulis, yaitu sebesar 5
dikurang dgn nomor baris}
for d
= 1 to c do {looping untuk menuliskan spasi sebanyak c buah}
write '
' {tuliskan karakter spasi}
end
for b
= 1 to a do
begin
write '*'
end
writeln
end
|
Jika dituliskan dalam C++, kira-kira sebagai
berikut:
#include
<iostream>
using namespace std;
int main()
{
int n;
cout
<< "n = "; cin >> n;
for (int a
= 1; a <= n; a++)
{
int c
= n - a;
for (int d
= 1; d <= c; d++)
{
cout
<< " ";
}
for (int b
= 1; b <= a; b++)
{
cout
<< "*";
}
cout
<< endl;
}
}
|
Untuk segitiga berikut, tentu beda lagi
caranya.
1
2
3
4
5
|
*****
****
***
**
*
|
Isi tiap-tiap barisnya sebagai berikut:
baris ke-1, berisi 0 spasi diikuti 5 bintang
baris ke-2, berisi 1 spasi diikuti 4 bintang
baris ke-3, berisi 2 spasi diikuti 3 bintang
baris ke-4, berisi 3 spasi diikuti 2 bintang
baris ke-5, berisi 4 spasi diikuti 1 bintang
Di sini kita bisa menyimpulkannya sebagai
berikut.
Ada N baris, di mana
baris ke-X (X adalah 1, 2, 3, dan seterusnya sampai N) berisi (X – 1) spasi
diikuti (N – X + 1) bintang.
Sehingga bisa diterjemahkan ke dalam algoritma
sebagain berikut:
for a
= 1 to 5 do
begin
b
= a - 1 {pada baris ke-a, ada (a - 1) spasi}
for c
= 1 to b do {looping untuk menuliskan spasi sebanyak b buah}
write '
' {tuliskan karakter spasi}
end
b
= 5 - a + 1 {pada baris ke-a, ada (5 - a + 1)
bintang}
for c
= 1 to b do {looping untuk menuliskan bintang sebanyak b buah}
begin
write '*' {tuliskan
karakter bintang}
end
writeln
end
|
Dan dalam bahasa pemrograman C++ sebagai
berikut:
#include
<iostream>
using namespace std;
int main()
{
int n;
cout
<< "n = "; cin >> n;
for (int a
= 1; a <= n; a++)
{
int b
= a - 1;
for (int c
= 1; c <= b; c++)
{
cout
<< " ";
}
b
= n - a + 1;
for (int c
= 1; c <= b; c++)
{
cout
<< "*";
}
cout
<< endl;
}
}
|
Terakhir, untuk membuat segitiga berikut:
1
2
3
4
5
|
*********
*******
*****
***
*
|
Untuk bentuk ini, berbeda dari
penjelasan-penjelasan sebelumnya. Isi tiap-tiap barisnya sebagai berikut:
baris ke-1, berisi 0 spasi diikuti 9 bintang
baris ke-2, berisi 1 spasi diikuti 7 bintang
baris ke-3, berisi 2 spasi diikuti 5 bintang
baris ke-4, berisi 3 spasi diikuti 3 bintang
baris ke-5, berisi 4 spasi diikuti 1 bintang
Salah satu kesimpulan yang bisa diambil adalah
sebagai berikut:
Ada N baris, di mana
baris ke-X (X adalah 1, 2, 3, dan seterusnya sampai N) berisi (X – 1) spasi
diikuti [(2 * N) - (2 * X - 1)] bintang.
Sehingga algoritmanya dalam pseudocode sebagai
berikut:
for a
= 1 to 5 do
begin
b
= a - 1 {pada baris ke-a, ada (a - 1) spasi}
for c
= 1 to b do {looping untuk menuliskan spasi sebanyak b buah}
write '
' {tuliskan karakter spasi}
end
b
= 10 - (2 * a - 1) {pada baris ke-a, ada ((2 * 5) - (2 * a - 1))
bintang}
for c
= 1 to b do {looping untuk menuliskan bintang sebanyak b buah}
begin
write '*' {tuliskan
karakter bintang}
end
writeln
end
|
Dan implementasinya dalam C++ sebagai berikut:
#include
<iostream>
using namespace std;
int main()
{
int n;
cout
<< "n = "; cin >> n;
for (int a
= 1; a <= n; a++)
{
int b
= a - 1;
for (int c
= 1; c <= b; c++)
{
cout
<< " ";
}
b
= (2 * n) - (2 * a - 1);
for (int c
= 1; c <= b; c++)
{
cout
<< "*";
}
cout
<< endl;
}
}
Sekian dulu yah,,,
hanya sekilas yang bias saya
sampaikan.
semoga bermanfaat,,,, thanks,,,, |