Salah satu latihan algoritma yang sering dipakai adalah membuat segitiga bintang. Latihan program ini sekilas terkesan tidak berguna, karena kita hanya membuat "gambar" segitiga. Namun dibalik itu, pembuatan segitiga bintang butuh logika yang kuat.
Dalam tutorial belajar bahasa pemrograman C di Duniailkom kali ini kita akan membahasnya dengan lebih dalam.
Membuat Segitiga Bintang dengan Bahasa Pemrograman
Bagi yang pernah kuliah di jurusan IT, hampir dipastikan pernah mendapat soal untuk membuat program segitiga bintang. Meskipun tidak sama persis, tapi banyak variasi yang bisa dibuat. Contoh segitiga bintang tersebut adalah sebagai berikut:
* * * * * * * * * * * * * * *
Tampilannya memang sederhana, tapi butuh proses berfikir yang cukup rumit. Tugas kita adalah bagaimana membuat kode program yang akan menghasilkan tampilan segitiga diatas. Syaratnya, tidak boleh langsung menggunakan printf sebanyak 5 kali, tapi harus menggunakan perulangan.
Jika dianalisis lagi, kode program ini butuh sebuah perulangan bersarang (nested loop). Perulangan pertama untuk membuat bintang ke arah bawah, dan perulangan kedua untuk membuat bintang ke arah samping.
Agar lebih mudah dipahami, kita akan bahas secara bertahap.
Membuat Perulangan Bintang ke Arah Bawah
Langkah pertama adalah merancang sebuah perulangan yang akan menampilkan tanda bintang ke arah bawah sebanyak 5 kali. Ini bisa dibuat dengan perulangan FOR dan perintah printf:
#include <stdio.h> int main(void) { for (int i = 1; i <= 5; i++) { printf("* \n"); } return 0; }
Hasil kode program:
* * * * *
Tidak ada yang baru disini, hanya terdiri dari perulangan FOR dari i = 1 sampai i <=5. Untuk setiap perulangan, tampilkan tanda bintang '*' dan diikuti dengan karakter newline untuk pindah baris '\n'.
Langkah kedua adalah, saya ingin agar dalam setiap baris, bintangnya tampil sebanyak 5 kali. Tapi tidak boleh hanya langsung menjalankan perintah printf("***** \n"), tanda bintang ke samping haruslah berasal dari perulangan bersarang, atau nested loop.
Berikut kode programnya:
#include <stdio.h> int main(void) { for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 5; j++) { printf("* "); } printf("\n"); } return 0; }
Hasil kode program:
* * * * * * * * * * * * * * * * * * * * * * * * *
Disini saya membuat perulangan kedua dengan variabel counter j, yang merupakan perulangan bersarang di dalam perulangan pertama dengan variabel counter i.
Perintah printf("* ") di baris 7 akan dijalankan sebanyak 25 kali, yakni hasil dari 5 * 5. Ini karena perulangan terdalam j akan dijalankan sebanyak 5 kali untuk setiap perulangan i yang juga berjalan sebanyak 5 kali, sehingga total akan di proses sebanyak 25 kali.
Jika anda masih ragu dengan konsep ini, bisa pejari sejenak Tutorial Belajar C: Cara Membuat Perulangan Bersarang (Nested Loop).
Langkah terakhir, kita akan modifikasi isi dari perulangan terdalam j, yakni bagaimana caranya agar tanda bintang bisa naik secara bertahap. Saya ingin ketika perulangan i pertama dijalankan, perulangan j hanya dijalankan 1 kali saja. Untuk perulangan i ke 2, jalankan perulangan j sebanyak 2 kali. Untuk perulangan i ke 3, jalankan perulangan j sebanyak 3 kali, dst.
Kuncinya adalah, kita harus ubah agar perulangan j mengikuti jumlah variabel i. Dan berikut kodenya:
#include <stdio.h> int main(void) { for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { printf("* "); } printf("\n"); } return 0; }
Hasil kode program:
* * * * * * * * * * * * * * *
Bisakah anda menebak apa yang berbeda dengan kode kita sebelumnya? Yup, hanya modifikasi kecil di baris 6. Sekarang, kondisi akhir perulangan j adalah sampai j <= i. Artinya, perulangan j akan naik sebanyak 1 angka untuk setiap perulangan i.
Sebagai tantangan terakhir, bisakah anda memodifikasi kode program ini agar user bisa menentukan jumlah baris segitiga? Jadi di awal akan ada pertanyaan jumlah baris segitiga. Jika diinput 10, maka tinggi segitiga yang akan ditampilkan jadi 10 baris.
Baik, berikut kode programnya:
#include <stdio.h> int main(void) { int jumlah; printf("Input tinggi segitiga: "); scanf("%i",&jumlah); printf("\n"); for (int i = 1; i <= jumlah; i++) { for (int j = 1; j <= i; j++) { printf("* "); } printf("\n"); } return 0; }
Tambahannya berupa perintah scanf untuk meminta inputan dari user di baris 7 – 9.
Dalam kode program ini, inputan jumlah baris saya simpan ke dalam variabel jumlah. Variabel jumlah ini yang kemudian menjadi nilai penentu dari perulangan i di baris 11. Perulangan i akan terus berjalan sampai kondisi i <= jumlah terpenuhi.
Dalam tutorial ini kita telah membahas salah satu contoh kasus algoritma dengan bahasa pemrograman C, yakni membuat segitiga bintang.
Selain segitiga, masih banyak variasi program lain yang mirip-mirip, seperti piramida bintang, membuat layang-layang / belah ketupat, hingga membuat segitiga angka. Latihan soal ini akan kita bahas di tutorial terpisah.
Min #REQ Tutorial C# dong :)
Request di tampung…
makasih min tutorialnya.
Min… Tolong buat tutotial C++. Terima kasih
Siip, request ditampung.
Ini udah full tutoraialnya kah..dalam bahasa C apa masih ada lanjutan tutorialnya..
Untuk saat ini tutorial bahasa C di duniailkom saya lengkapi sampai disini dulu.
Tapi bisa jadi nanti akan dilanjutkan lagi. Materi yang belum ada terutama tentang function.
********
******
**L**
Bntu min gmna jalnnya
min kalo cara untuk membuat piramida bintang di vscode dengan metode looping for gimana ya?
Bisa lanjut ke sini (pakai bahasa C++, tapi tidak jauh beda dengan bahasa C): https://www.duniailkom.com/latihan-kode-program-cpp-piramida-bintang-terbalik/
Next tutorial C# & asp
Siip, request ditampung…
bang cara nya gimana sih, si bintang nya di ubah jadi angka berurut gitu bang.
kayak misal
1
12
123
1234
dst…
Untuk versi bahasa C-nya belum sempat dibuat nih, tapi bisa coba konversi dari versi bahasa C++ berikut: https://www.duniailkom.com/latihan-kode-program-cpp-membuat-deret-angka-segitiga/
makasih banyak min, saya terbantu banyak buat ngerjain tugas kuliah xixixi
bang mau nanya, kalo hasilin output kaya gini gmn ya? makasih.
*********************
********** **********
********* *********
******** ********
******* *******
***** 1234567 *****
******* *******
******** ********
********* *********
********** **********
*********************
yg pertanyaan diatas ini bentuk wajik maksudnya bang, ditengahny angka 1-7
butalah program pengulangan dengan memasukkan jumlah bintang:5
*****
*****
*****
*****
*****
Itu gimana cara nya min saya sudah coba tapi mengatur jarak ke samping nya dengan syntax nya gimana yaa min?
mohoon bimbingannya min
terima kasih bang