Membuat Karakter Bintang Berbentuk Segitiga

1:05 AM 6 Comments
Membuat Karakter Bintang Berbentuk Segitiga


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,
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,,,,