Penjelasan Secara Logic Cara Membuat Piramida Sempurna dengan Bintang Menggunakan Java

Hallo gan, lama tidak jumpa 🙂 sudah lama blog ini tidak meng update postingannya hehe … maklum si Admin dengan sibuk Skripsi dan Cari Cari Kerja (wkakaka pengangguran) ..
Oke kali ini ane bakalan posting bagaimana Membuat Piramida Sempurna dengan Bintang. Piramida yang ane maksud tuh seperti ini gan :
Piramida Sempurna
Lihat tanda bintangnya “*” Jangan tanda “-“. Tanda “-” hanya sebagai tanda bagaimana proses bintang itu terjadi.
Terus pertanyaannya kok harus ada tanda “-” dan “*” bisa jadi berdampingan, kan saat print pasti berbeda yang meng outputkannya?
Terus bagaimana codingnya? kok bisa?
Okay gan, satu satu, ane juga pusing ini mikirannya haha. Tp gpp, kita namanya belajar, mari kita lihat pelan pelan:
1. The Code


 /*  
  * To change this license header, choose License Headers in Project Properties.  
  * To change this template file, choose Tools | Templates  
  * and open the template in the editor.  
  */  
 package DeretBintang;  
 /**  
  *  
  * @author putuguna  
  */  
 public class Piramida {  
   public static void main(String[] args) {  
     piramidaBintang();  
   }  
   private static void piramidaBintang() {  
     for (int i = 1; i <= 5; i++) {  
       System.out.print("no i ke +" + i);  
       for (int j = i; j <= 5; j++) {  
         System.out.print("-");  
       }  
       for (int k = 0; k <= (i * 2) - 2; k++) {  
         System.out.print("*");  
       }  
       System.out.println();  
     }  
   }  
 }  

Bingung dengan kode diatas, saya juga sebelumnya begitu hahaha, mari kita belajar sama sama gan perhatikan aja keyword “i”, “j” dan “k”.
yah, biar memudahkan, saya kasi warna masing masing di setiap keyoword tersebut.
for yang pertama pada warna merah menggunakan keyword “i”. Keyword ini berfungsi sebagai penentu panjang (dari atas – kebawah) piramida (Perhatikan gambar panjangnya sebanyak 5 )
yang mana menentukan panjang tersebut :

1. Perhatikan pada for “i” berikut ini :

for(int i = 1; i <= 5; i++){System.out.print("no i ke : "+ i)}

“i” dimulai dari “1” sampai dengan ” i lebih kecil sama dengan 5″, Sudah Jelas ? Sip!  Ohya, “i++” itu artinya penambahan agar si “i” mau dengan sendirinya increment (1,2,3,4,5).

Setelah itu, kita print isi dari “i”, Maka hasilnya ada keluar seperti ini :

no i ke : 1
no i ke : 2
no i ke : 3
no i ke : 4
no i ke : 5

Mungkin teman teman ada yang bertanya, kenapa System.out.print(); kenapa tidak System.out.println();

Jawab : Nanti saya jelaskan, itu hanyalah masalah design agar bisa terbentuk piramidanya, yang penting teman teman pahami dulu logika dari programnya. Sip!!

2. Perhatikan pada for “j” berikut ini :

for(int j=1; j<= 5; j++){System.out.print("-");}

Pertanyaan satu :

Kenapa j = i , Kenapa tidak j = 0 atau j = 1 .

Jawab :

Sebenarnya boleh saja j = 1, itu sah sah saja, tapi kita akan merasa lebih gampang kalau si “j” mengikuti panjang si “i”, Masuk akal ga?

Pertanyaan kedua :

Kenapa tetap j <= 5 Kenapa tidak berubah ?

Jawab :

Oke, Mari kita trace satu satu biar teman teman mengerti apa fungsi dari j <= 5 ini.

Ketika :

i = 1 maka j meng-outputkan tanda “-” sebanyak j = i sampai j <= 5. Karena i = 1, maka j juga sama dengan 1 dan batas akhirnya adalah j <= 5, berarti j akan meng- outputkan tanda “-” dari 1 sampai 5 . Jika “i=2”,  “j” pun ikut sama dengan “2”, berarti “j” akan meng-outputkan tanda “-” sebanyak 2 sampai 5 yaitu sebanyak 4 buah tanda “-“… dan seterusnya. Mengerti? coba deh sesuai dengan perhitungan diatas sesuaikan dengan table dibawah ini :

Tabelnya :



Int i Int j Tanda “-“
i=1 j=1
j=2
j=3
j=4
j=5
—– (ada 5)


Berapa panjang “j” sebanyak itu juga jumlah tanda “-” yang akan mencul.

Tabel keseluruhan :



Int i Int j Tanda “-“
i=2 j=2
j=3
j=4
j=5
—- (ada 4)
i=3 j=3
j=4
j=5
— (ada 3)
i=4 j=4
j=5
— (ada 2)
i=5 j=5 – (ada 1)


Output pada progam seperti ini :

no i ke : 1 : -----

Mungkin ada pertanyaan yang membuat teman teman penasaran, kenapa output dari “i” dan “j” bisa segaris ?
Jawab : itu masalah design aja dan ada System.out.println(); paling bawah. Coba deh perhatikan. Untuk lebih jelasnya nanti saya jelaskan. (Panjang juga ini penjelasan haha)

oke lanjut ke proses terjadinya tanda “*

3. Perhatikan pada for “k” berikut ini :



 for(int k=0; k <= (i*2)-2; k++){  
   System.out.print("*");  
 }  

Pertanyaan 1:

Kenapa k=0 kok tidak sama sepeti j=i?

Jawab :

Well, pertanyaan bagus, gini jangan salah kaprah dulu ya, INGAT di pemrograman itu index awal itu dihitung dari angka NOL ya teman teman,

Keyword “i” tidak mengambil dari index NOL melainkan langsung dari SATU, (biar gampang di       mengerti, karena biasanya pusing dengan angka NOL). Berarti kita asumsikan “i” tidak punya index   ke NOL. Sepakat ya semua (Telan mentah mentah aja dulu mas hehe)..

Keyword “j” dimulai dari “i” dimana nilai awal dari “i” adalah SATU, berarti secara logika si “j” juga tidak memiliki index ke NOL karena dia mengikuti si “i”, iya gak? (telan mentah mentah),
Kenapa harus mengikuti “i”?

karena dia berada dalam looping “i”, jadi dia harus mengikuti “i” agar mau terbetuk piramida yang dinginkan, (AGAR MAU TERBENTUK HASIL SEPERTI TABEL DIATAS)

Mungkin ada yang tidak setuju, harusnya secara logika itu index “j” yang ke NOL itu adalah “i” yang ke SATU, Kalau teman teman membaca ini sambil berfikir saya yakin ada.

Oke, kalau ada yang berfikir begitu, bagus sekali analisisnya. Namun yang harus teman teman sadari itu, suatu index bisa dimulai itu dari mana inisiasinya? pasti dari suatu variable kan, dalam looping suatu index dimulai ketika diset (for int i = berapa; …… ). Jadi kata “berapa” itu menjukan indexnya si “i”, kalau ditulis “i=3” maka dia mulai dari index ke 3. paham?

Oke, kita lanjutkan lagi penjelasan ke “k”

“k” kenapa sama dengan NOL?, EEMM,, harusnya sih mulai mengerti skrg ya, Oke deh saya jelaskan

pertama-tama yang harus teman teman sadari lagi bahwa “k” masih ada didalam loopingnya si “i” BUKAN DALAM LOOPING “j”. (coba deh liat lagi koding diatas tadi), ya kan? oke itu satu.

yang kedua, karena dia masih berada pada dalam looping si “i”, maka secara logika index ke NOL si “k” ada pada index ke satu si “i”. Setuju? (harusnya sih sudah mengerti tentang ini)

Pertanyaan 2 :

kok ada rumus segala sih “k=(i*2)-2”, kegunaannya apa?

Jawab:

rumus itulah yang nantinya akan mengelurkan output tanda “*” sesuai design kita.
Pertama yang harus kalian ingat, apa sih output tanda “-” si “j”?
seperti ini kan :

no i ke : 1 : -----
no i ke : 2 : ----
no i ke : 3 : ---
no i ke : 4 : --
no i ke : 5 : -

Itu sudah terlihat satu sudut kemiringan agar piramida terbentuk. Logika kan lagi, agar terbentuk piramida sempurna, maka tanda “*” harus dikeluarkan dari sedikit ke banyak, maka akan terbentuk bentuk piramida sempurna.

Pertanyaan lanjutan :

Jadi kalau dari sedikit kebanyak akan terbentuk seperti ini dong :

-----*
----**
---***
--****
-*****

Saya yakin pasti ada yang mikir seperti itu, hahaha.. but it’s ok, kalian sudah mau berfikir…

untuk menjawab kegundahaan hati teman teman, maka rumus itu adalah solusinya, kenapa ? coba deh teman teman kali kalikan itu semuanya.
Inget kasusnya : “k” masih dalam Looping si “i”
perhitungan :

i = 1, k = (i*2)-2

jika diterapkan, maka : k = (1*2)-2 = 0

“k” dimulai dari NOL, dan “k” sama dengan NOL artinya tidak ada penjumlahan terhadap tanda “*” makanya dia print sebanyak satu kali saja.

i = 2, jadinya k = (2*2)-2 = 2

fungsi dari 2 tanda bintang sebanyak 2 itu akan seperti apa?
hasilnya akan seperti ini, satu disisi kanan, dan satu lagi disisi kiri (saling menutupi utk membentuk segitiga)

-----*
----**
---
--
-

Kok belum enak dilihat? Karena menggunakan System.out.println(); bukan menggunakan System.out.print(); Apa bedanya? nanti dibawah saya kasi gambaran. coba kita gunakan System.out.print(), apa yang terjadi?

-----*
----***
---
--
-



int i int j & k Tanda – dan *
i=1 j=1
j=2
j=3
j=4
j=5

k=0

—–* (ada 5 – dan ada 1 *)
i=2 j=2
j=3
j=4
j=5

k=0
k=1

—-*** (ada 4 – dan ada 3 *)
i=3 j=3
j=4
j=5

k=0
k=1
k=2

—***** (ada 3 – dan ada 5 *)
i=4 j=4
j=5

k=0
k=1
k=2
k=3

–******* (ada 2 – dan ada 7 *)
i=5 j=5

k=0
k=1
k=2
k=3
k=4

-********* (ada 1 – dan ada 9 *)



Gimana sudah enakan? selanjutkan coba kali kalikan sampai “i=5” dan diprint menggunakan System.out.print(); maka, jRENGggg JEENGGG, jadilah piramida sempurna!!!!

======*******************************========

Oke apa perbedaan System.out.print(); dan System.out.println();

1. System.out.print();

dia akan mengoutputkan sesuatu tanpa adanya enter, misalkan kita mau print tanda “-“, jika menggunakai ini maka hasilnya akan menjadi

-------

2. System.out.println();

hasilnya akan seperti :

-
-
-
-
-

Pada program piramida diatas (coba perhatikan baik baik) ada System.out.println(); paling bawah, dan sisanya menggunakan System.out.print();

Artinnya begini :

setelah hitung hitungan dari index “i” ke satu selesai, maka akan dienter, dan mulai lagi ke index i ke dua. dan setereusnya seterusnya

Gambaran :

index i=1

——-*

kalo misalkan tanpa ada System.out.println() paling bawah maka pada index “i” kedua akan segaris dengan index “i” ke satu
hasilnya :

——*———***

begitu…

mengerti kah sekarang? Sipp!!

Akhirnya.. hahaha.. sampai sakit kepala menjelaskan dengan logic, mikir kata kata yang bagus agar bisa dengan mudah dipahami,, padahal outputnya cuma tanda “*” dan tanda “-” hahahaha…. tapi tak apalah, namanya juga berbagi ilmu.

Karena saya sadar susahnya mengerti hal seperti ini sendiri,makanya saya share ketemen-temen cara mencari piramida sempurna dengan Logic.

Jika ada yang kurang mengerti, silakan ditanyakan dikolom komentar.

(Visited 388 times, 1 visits today)



Baca juga :


About The Author

Related Posts

4 Comments

  1. Unknown
    April 6, 2017
  2. Putu Guna
    April 12, 2017
  3. sokocul
    October 19, 2017
    • putuguna
      October 19, 2017

Add Comment

Berlangganan Artikel

Untuk mendaftarkan tutorial pemrograman terbaru dari putuguna[dot]com, silakan tuliskan email kalian dibawah ini