Membuat segitiga bintang sudah menjadi hal wajib dalam belajar algoritma. Jika anda pernah mengikuti mata kuliah algoritma dan pemrograman, hampir bisa dipastikan juga pernah dibuat pusing oleh kode program ini.
Dalam tutorial belajar pascal di duniailkom kali ini kita akan mempelajarinya dengan lebih rinci. Kita akan membahas cara membuat segitiga bintang menggunakan bahasa pemrograman Pascal.
Segitiga Bintang Bahasa Pemrograman Pascal
Bagi anda yang belum pernah melihatnya, berikut tampilan dari segitiga bintang yang saya maksud:
Tugas kita adalah merancang kode program untuk tampilan seperti itu.
Mungkin anda bertanya, untuk apa kita membuat kode program ini? Apa gunanya?
Kode program bintang-bintang seperti diatas memang tidak ada peran apapun dalam aplikasi “dunia nyata”. Ini lebih kepada melatih logika berfikir. Logika berfikir inilah skill paling penting yang harus dimiliki oleh (calon) programmer.
Baik, mari kita coba bahas bagaimana cara pembuatannya.
Contoh Kode Program Segitiga Bintang Bahasa Pascal
Syarat pertama, anda tidak boleh membuat tampilan tersebut secara langsung. Cara curangnya bisa dengan membuat 5 baris writeln:
writeln('*'); writeln('**'); writeln('***'); writeln('****'); writeln('*****');
Tentu saja hasilnya akan sama. Tapi disini kita akan menggunakan perulangan. Lebih tepatnya perulangan bersarang (nested loop).
Dengan menggunakan perulangan, jumlah bintang tersebut bisa diatur dari variabel. Misalnya, saya ingin membuat 100 baris bintang, pastinya akan repot jika membuat satu persatu seperti contoh diatas.
Hal pertama yang akan kita buat adalah sebuah perulangan dengan 5 bintang kebawah, seperti kode program berikut ini:
program kode_program_segitiga_bintang; uses crt; var i: integer; begin clrscr; for i := 1 to 5 do begin writeln('*'); end; readln; end.
Terlihat, sebuah perulangan bintang sudah tampil. Berikutnya bagaimana cara membuat bintang ke samping? Kita akan membuat 1 perulangan j di dalam perulangan i (nested loop). Berikut kode programnya:
program kode_program_segitiga_bintang; uses crt; var i,j: integer; begin clrscr; for i := 1 to 5 do begin for j := 1 to 5 do begin write('*'); end; writeln('*'); end; readln; end.
Dalam kode program diatas, perulangan j akan dijalankan sebanyak 5 kali untuk setiap perulangan i.
Sekarang, bagaimana caranya agar pada perulangan i pertama, perulangan j hanya dijalankan 1 kali. Ketika masuk ke perulangan i kedua, perulangan j akan dijalankan 2 kali. Saat perulangan i ketiga, perulangan j akan dijalankan 3 kali, dst.
Dari paragraf saya diatas, kita sudah bisa melihat pola yang harus ditulis. Kuncinya ada di variabel j. Bagaimana cara agar perulangan j bisa menjadi dinamis mengikuti jumlah perulangan ke – i? Caranya, dengan menjadikan nilai variabel i sebagai patokan akhir perulangan j.
Berikut kode program yang saya maksud:
program kode_program_segitiga_bintang; uses crt; var i,j: integer; begin clrscr; for i := 1 to 5 do begin for j := 1 to i do begin write('*'); end; writeln('*'); end; readln; end.
Perhatikan bagian for j := 1 to i do. Inilah yang bisa membuat perulangan j menjadi dinamis dan menaik dalam setiap perulangan i.
Baik, mari kita jalankan:
Tunggu dulu, kenapa ada dua bintang di baris pertama? Bintang pertama berasal dari perulangan i, yakni kode writeln(‘*’). Untuk memperbaikinya, kita cukup menghapus string (‘*’) karena tidak diperlukan lagi.
Namun perintah writeln; tetap dibutuhkan agar bintang bisa pindah ke baris baru:
program kode_program_segitiga_bintang; uses crt; var i,j: integer; begin clrscr; for i := 1 to 5 do begin for j := 1 to i do begin write('*'); end; writeln; end; readln; end.
Done! Kode program kita untuk membuat segitiga bintang sudah selesai. Kunci dari proses pembuatan kode program ini ada di logika dan cara berfikir kita untuk menyelesaikan masalah.
Sebagai latihan, saya tantang anda untuk membuat segitiga bintang yang sama, namun dalam posisi terbalik. Seperti tampilan berikut:
Silahkan anda luangkan waktu beberapa saat dan latihan bagaimana cara membuatnya.
…
…
Baik, berikut kode program yang saya gunakan:
program kode_program_segitiga_bintang; uses crt; var i,j: integer; begin clrscr; for i := 1 to 5 do begin for j := 1 to (6-i) do begin write('*'); end; writeln; end; readln; end.
Hanya perlu tambahan 2 karakter, tepatnya di bagian for j := 1 to (6-i) do. Inilah yang membuat perulangan terdalam (j) akan menurun dari 5 bintang, 4 bintang, 3 bintang, 2 bintang dan 1 bintang.
Dengan mengutak-atik variabel i dan j, kita bisa membuat berbagai bentuk segitiga, misalnya bagamana jika kedua segitiga ini disatukan (menjadi bentuk setengah belah ketupat). Atau anda bisa juga menambahkan perintah readln agar jumlah baris segitiga bisa diinput dari user.
Selamat berkreasi dan silahkan asah logika pemrograman dengan program segitiga pascal ini.
Penjabarannya sangat rinci dan mudah dipahami. Sangan cocok untuk dijadikan referensi. Ijin bookmark ya Om..
Siap, silahkan :)
Pintar banget mas andre, bisa bisa jadi hacker gan ☺
Hehe, saya cukup jadi programmer gan, hacker bukan bidang saya…
Saya belum paham mengenai pascal. Mau belajar dari html dulu saja (newbie)
Hehe, silahkan… HTML dan CSS memang lebih mudah dibandingkan Pascal karena keduanya belum termasuk bahasa pemrograman, tapi lebih ke bahasa kode. Untuk web programming, pemrogramannya ada di PHP dan JavaScript.
Bang Andre, saya mencoba latihan membuat Bintang Piramid. Kira-kira hasilnya begini:
*
***
****
******
Kode yang saya gunakan begini:
Program Pyramid_Star;
uses crt;
var
i,j,k: integer;
Begin
clrscr;
for k:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
for i:= 1 to 5-k do
begin
write(' ');
if j > 1 then
break;
end;
write('*');
end;
writeln;
end;
readln;
End.
Tapi.. hasilnya malah BelahKetupat Bintang. Saya bingung apa yang harus saya perbuat pada bagian counter j supaya bintangnya bertambah 2 secara bertahap tapi pada putaran awal tetap bernilai 1.
Mohon bantuan dan penjelasannya Bang.
Terimakasih..
Mmm.. Mohon maaf Bang Andre, kode di atas diabaikan saja, karna kode yang seharusnya saya kirim adalah yang di bawah ini, hehee:
Program Pyramid_Star;
uses crt;
var
i,j,k: integer;
Begin
clrscr;
for k:= 1 to 4 do
begin
for j:= 1 to k+2 do
begin
for i:= 1 to 5-k do
begin
write(' ');
if j > 1 then
break;
end;
write('*');
end;
writeln;
end;
readln;
End.
Ini hasilnya pyramid tanpa puncak Bang. Saya bingung dengan counter j. Apa yang harus dilakukan supaya tetap menghasilkan 1 bintang di putaran k pertama dan bertambah menjadi 3 bintang untk putaran kedua dan menjadi 5 utk putaran ke3 dan seterusnya. Terimakasih..
saya mau bantu jawab gan
setelah mikir 7 keliling maksud kode program anda … apakah makdsudnya seperti ini?
program Pyramid_Star;
uses crt;
var
i,j,k: integer;
Begin
clrscr;
for k:= 1 to 4 do
begin
for j:= 1 to k*2-1 do
begin
for i:= 1 to 10-k*2 do
begin
write(' ');
if j > 1 then
break;
end;
write('*');
end;
writeln;
end;
readln;
End.
Terimakasih sudah bantu jawab :)
Kalau untuk listing program yang kayak gini
54321
4321
321
21
1
Outputnya yg saya maksud
Requestnya di tampung dulu ya…
Bang klo hasil outputnya
55555
4444
333
22
1
Gmn??
Ditampung dulu ya… Tapi ini malah tinggal modif dari kode yang saya pakai, dari write(*) ganti jadi write(i).
kayanya begini dah
program angka_segitiga;
uses crt;
var
i,j: integer;
begin
clrscr;
for i := 1 to 5 do
begin
for j := (6-i) downto 1 do
begin
write(j);
end;
writeln;
end;
readln;
end.
Terimakasih tambahannya :)
Bisa seperti ini juga:
program kode_program_segitiga_angka;
uses crt;
var
i,j: integer;
begin
clrscr;
for i := 5 downto 1 do
begin
for j := 1 to i do
begin
write(i-j+1);
end;
writeln;
end;
readln;
end.
Mantaf buat belajar
alhamdulillah berhasil walau beda cara bg andre hehe
program kode_program_segitiga_bintang;
uses crt;
var
i,j: integer;
begin
clrscr;
for i := 1 to 5 do
begin
for j := 5 downto i do
begin
write('*');
end;
writeln;
end;
readln;
end.
Siip, memang ada banyak cara untuk membuat program ini, tergantung alur logika kita.
Kalo output nya kaya gini
*
**
***
****
Bisa seperti ini:
program kode_program_segitiga_bintang;
uses crt;
var
i,j,k: integer;
begin
clrscr;
for i := 1 to 5 do
begin
for k := 5 downto i do
begin
write(' ');
end;
for j := 1 to i do
begin
write('*');
end;
writeln;
end;
readln;
end.
kalo hasilnya gini :
*****
*****
*****
*****
*****
gimana???
Kalau yang seperti ini malah lebih sederhana lagi, tinggal buat 5 kali perulangan for untuk writeln('*****');
Bang klo hasil outputnya
55555
4444
333
22
1
Gmn?? punten tolong respon makasih
Bisa seperti ini:
var
i,j: integer;
begin
for i := 1 to 5 do
begin
for j := 1 to 6-i do
begin
write(6-i);
end;
writeln;
end;
end.
Klau dibalik Gimna min?
1
22
333
4444
55555
buat program queue dong bangg
Di tampung dulu ya, tapi lumayan rumit tuh (butuh pembahasan tentang teori antrian juga).
Bang gimna kalo membuat program faktorial yg seperti ini bang? Outputnya
1!=1
2!=1×2=2
3!=1×2×3=6
4!=1×2×3×4=24
5!=1×2×3×4×5=120
var
i, j, hasil : integer;
begin
clrscr;
gotoxy(1,3);
for i := 1 to 5 do
begin
write(i, '! = ');
hasil := 1; //untuk reset nilai hasil
for j := 1 to i do
begin
hasil := hasil * j;
write(j, ' × ');
end;
writeln('= ', hasil);
end;
readln;
end.
Kurang lebih seperti itu :)
Bang klo hasil outputnya gini
ooooo
xxxxx
ooooo
xxxxx
ooooo
Kao gitu sy akan buat jika i mod 2 = 0 maka writeln('xxxxx');
Contoh code nya seperti berikut
program pattern_xo;
uses crt;
var
i : integer;
begin
clrscr;
for i := 1 to 5 do
begin
if (i mod 2 = 0) then
writeln('xxxxx')
else
writeln('ooooo');
end;
readln;
end.
Bang kalo buat ini gimana
XOOOO
XOOO
XOO
XO
X
bang kalo output kayak gini gimana ya?
1234
123
12
1
12
123
1234
atau gak kayak gini bang
1
12
123
1234
123
12
1
kalau output begini, coding nya bgmn?
1
1 3
1 3 5
1 3 5 7
1 3 5 7 9
Bang kalo buat segi 8 dan segi 6 bang ?? Mohon di respon bang .. :)
Ditampung dulu ya.. kalau sudah seperti itu sudah lumayan kompleks, kadang butuh sampai 3 buah kedalaman loop (loop di dalam loop di dalam loop)
bang kalo outputnya bintang rata kanan gimana ya sama ada nomor urutnya di sebelahnya?
*
**
***
****
*****
coba bantu jawab, mungkin bang Andre lg sibuk:
for i := 5 downto 1 do
begin
write(6-i,' ':i);
for j := i to 5 do
write('*');
writeln;
end;
semoga bermanfaat…
Kak, kalau ini gimana kak ?
Buatlah program pascal untuk menampilkan konfigurasi sebagai berikut :
• Jika N = 1, maka output di layar adalah
*
• Jika N = 2, maka output di layar adalah
*
**
• Jika N = 3,maka output di layar adalah
*
**
***
• Jika N = 4,maka output di layar adalah
*
**
***
****
Sepertinya tinggal ubah2 sedikit kode dalam tutorial ini.. Nanti bisa tambah kode untuk membaca inputan, misalnya simpan ke variabel n, lalu pas masuk ke perulangan ganti dari:
for i := 1 to 5 do
Menjadi:
for i := 1 to n do
Gan kalau yang hasilnya begini gimana coding nya :
*****
*****
*****
*****
*****
bang klo output program kaya gini gmn kodingannya :
RIZAL
RIZA
RIZ
RI
R
kak, kalau menampilkan angka 1 2 4 7 11 16 22 dst gimana ya kak?
terima banyak sangat membantu sekali bang
bang, kalau mau bangun datarnya bolong didalamnya gimana codingnya?
Request ditampung dulu ya…
kalau outputnya seperti ini
*
* *
* * *
* * * *
Jika outputnya seperti ini gimna ya bang syntax nya?
1
2 6
3 7 10
4 8 11 13
5 9 12 14 15
Ka, kalo hasil output nya kaya gini gimana ya ka? Mohon bantuannya:) Terimakasih.
2 3 4 5 6
4 5 6 7
6 7 8
8 9
10
jika outputnya seperti ini gimana coding nya bang?
1
2 6
3 7 10
4 8 11 13
5 9 12 14 15
mohon bantuan nya bang……….
Bang klo buat programnya SPT ini gmn ya?
Masukan angka yang anda inginkan : 5
*****
****
***
**
*
**
*****
**
*****
**
*
**
***
****
*****
program bintang;
uses crt;
var a,b,c,n : integer;
begin
clrscr;
write ('Masukkan angka yang anda inginkan : ');
readln(n);
writeln;
for a := 1 to n do
begin for b := 1 to n-a+1 do
write (' * '); writeln;
end;
for a:=1 to (n div 2) do
begin
for b:=1 to n div 2 do
write(' * ');
writeln;
for c:=1 to n do write (' * ');
writeln;
end;
for a:=1 to 1 do begin
for b:=1 to n div 2 do
write (' * ');
writeln;
end;
for a:=1 to n do begin
for b:=1 to a do
Write(' * '); writeln;
end;
readln;
end.
Masukkan angka yang anda inginkan : 5
* * * * *
* * * *
* * *
* *
*
* *
* * * * *
* *
* * * * *
* *
*
* *
* * *
* * * *
* * * * *
Kok, hasilnya begini @Annas
Mau nanya min
kalau hasil Inputanya kyk gini codenya gmna yah
1
21
321
Mohon mantuanya Min
Mohon bantuannya abang-abang, kalo outputnya gini bagaimana yah?
1
12
123
1234
12345
terimkasih..
Mohon bantuannya abang-abang, kalo outputnya gini bagaimana yah?
1
12
123
1234
12345
terimkasih..
eh ko gabisa yah, mksd saya tingkatnya itu kekanan. yg angka 1 nya membentuk tangga kekanan atas gitu.
uses crt;
var
i,j,k: integer;
begin
clrscr;
i := 1;
while i <= 5 do
begin
j := 1;
k:=1; //display number initiation
while j <= i do
begin
write(k,' ');
j := j + 1;
k := k + 1; //display number counting
end;
writeln;
i := i + 1;
end;
readln;
end.
mohon bantuanya bg, kalau outputnya kyk gini ngimana bg
5 4 3 2
4 3 2
3 2
2
bang kalo seperti ini gmana ya?
5
5 4
5 4 3
5 4 3 2
5 4 3 2 1
Konsep dasarnya bisa lanjut ke sini: https://www.duniailkom.com/latihan-kode-program-pascal-membuat-segitiga-angka/
Thanks batt gann gw cari2 kagak nemu2 disini langsung dapet