Tutorial PHP Dasar

Latihan Perulangan Bersarang

Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.

Pada video ini, kita akan latihan mengerjakan soal perulangan bersarang. Perulangan bersarang berarti kita melakukan perulangan di dalam perulangan yang lain. Ada 3 soal latihan yang akan kita kerjakan.

Pada soal latihan pertama, kita membuat segitiga dengan bagian yang besar berada di bawah. Pada segitiga ini kita menuliskan nilai yang meningkat secara horizontal.

Pada soal latihan kedua, kita membuat segitiga dengan bagian besar yang berada di atas. Nilai yang kita tuliskan pada segitiga meningkat secara diagonal.

Pada soal latihan ketiga, kita kembali membuat segitiga yang bagian besarnya berada di bawah. Namun nilai yang kita tulis di dalam segitiga meningkat secara vertikal.

Pause terlebih dahulu video ini dan coba kerjakan latihan pada komputer masing-masing. Nanti kita akan kembali untuk membahas solusi dari soal latihan ini.

Oke, sekarang kita akan membahas mengenai cara mengerjakan soal latihan, dimulai dari soal pertama. Pertama kita buat konstanta terlebih dahulu ya, untuk menentukan ukuran dari segitiga. Kita beri nama SIZE, dengan nilai 4.

define('SIZE', 4);

Selanjutnya kita buat perulangan dengan nilai awal $i = 0, kondisi $i < SIZE, dan $i++. Di dalamnya kita buat lagi perulangan dengan nilai awal $j = 0, kondisi $j < SIZE dan $j++. Isi dari perulangan adalah kita mencetak bintang ditambah spasi.

for($i = 0; $i < SIZE; $i++){
  for($j = 0; $j < SIZE; $j++){
    echo '*' . ' ';
  }
}

Yang perlu diperhatikan pada saat membuat perulangan bersarang adalah kita harus menggunakan variable yang berbeda sebagai iteratornya. Kalau di perulangan pertama kita menggunakan variable $i, maka pada perulangan di dalamnya jangan menggunakan $i lagi ya. Biasanya nama variablenya dilanjutkan ke $j, $k, dan seterusnya.

Kita coba jalankan. Sebagai hasilnya kita mendapatkan 16 buah bintang. Namun bintangnya disusun sejajar ke samping ya. Kalau kita ingin menghasilkan kotak, maka setelah perulangan $j, kita harus menuliskan PHP_EOL.

Sekarang kita sudah mendapatkan kotak ukuran 4x4. Tapi bagaimana caranya agar kita bisa mengubahnya menjadi segitiga? Nah, triknya disini adalah mengubah kondisi dari perulangan $j, menjadi $j <= $i. Maka kita mendapatkan segitiga seperti soal.

Selanjutnya kita tinggal mengganti bintang dengan nilai yang sesuai dengan soal. Pertama kita coba ganti dahulu bintang menjadi variable $i. Sebagai hasilnya, kita mendapatkan nilai yang sama di setiap baris. Kalau kita ganti menjadi nilai variable $j, kita mendapatkan nilai yang sama pada setiap kolom. Jadi disini kita bisa melihat ya, bahwa $i menunjukkan baris, sedangkan $j menunjukkan kolom.

Untuk mendapatkan nilai sesuai dengan soal, maka kita mesti menggunakan variable lain. Setelah define, kita tambahkan dahulu inisialisasi dari variable nilainya, misalkan kita beri nama $value dengan nilai awal 1. Di dalam perulangan, yang kita tulis adalah nilai dari $value++. Artinya setelah nilai variable $value ditulis, PHP melakukan increment pada variable $value. Kalau kita jalankan, maka kita mendapatkan hasil yang sesuai dengan soal.

Dengan cara menuliskan kode seperti ini, kita tetap mendapatkan hasil yang sesuai dengan soal pada saat kita menaikkan nilai SIZE menjadi 5. Jadinya kita gampang ya untuk menentukan ukuran dari segitiga. Hanya saja kalau kita lihat lagi, setelah nilai mencapai angka 10, posisi kolomnya berubah. Jadinya baris kelima sudah tidak rata dengan baris sebelumnya.

Agar posisi nilai menjadi rapi, kita bisa mengganti fungsi echo menjadi printf. Printf artinya kita mencetak dengan menggunakan format. Untuk menggunakannya, pada argument pertama kita mesti menuliskan format yang hendak kita gunakan. Berhubung kita hendak menulis nilai desimal, maka kita menggunakan format %d ditambah spasi. Pada argument kedua dan seterusnya, kita memasukkan nilai-nilai yang digunakan pada format, yaitu variable $value++.

Kita masih mendapatkan hasil yang sama dengan echo ya. Namun kalau menggunakan printf, kita bisa mengatur berapa kolom yang digunakan pada setiap angka. Misalkan kita hendak menggunakan dua kolom untuk setiap angka, maka kita bisa menggunakan format %2d. Dan sekarang kolom kita sudah rapi karena setiap angka menggunakan 2 kolom. Apabila angka tersebut masih 1 digit, maka kolom pertama diisi dengan spasi.

Kita bisa mengatur lagi, misalkan spasinya mau kita ganti menjadi angka 0. Maka kita bisa mengubah formatnya menjadi %02d. Dan sekarang segitiga kita kelihatan lebih rapi lagi ya, karena angka yang terdiri dari 1 digit ditambahkan dengan angka 0 di bagian depannya. Dan kita pun sudah berhasil mengerjakan soal latihan pertama.

Kita masuk ke soal latihan kedua. Kita copy paste dulu kodenya dari latihan pertama ya. Perhatikan yang perlu diubah disini adalah bentuk segitiganya. Kalau pada latihan pertama, sisi yang besar berada di bawah, sedangkan pada latihan kedua, sisi yang besar mesti berada di atas. Untuk itu kita ubah kondisi dari perulangan $j menjadi $j <= SIZE - $i.

Bentuk segitiganya sudah berubah ya. Bagian besarnya menjadi di atas. Namun masih berlebih satu kolom. Jadi kondisinya kita ubah lagi menjadi $j < SIZE - $i.

Dan sekarang hanya tinggal nilainya saja. Kalau ingin nilainya bertambah secara diagonal seperti soal, maka kita ubah variable $value menjadi $i + $j. Hasilnya nilai masih dimulai dari 0 ya. Kalau kita ingin agar nilai dimulai dari 1, maka kita tambahkan lagi dengan angka 1. Sedangkan kalau kita ingin menghilangkan angka 0 di depan, kita bisa mengubah formatnya menjadi ‘%d ‘. Kita hapus inisialisasi dari variable $value karena sudah tidak pernah digunakan. Dan latihan kedua pun sudah selesai.

Sekarang kita masuk ke soal latihan ketiga. Untuk kode latihannya kita copy dari latihan pertama ya, karena bentuk segitiganya sama dengan soal latihan pertama. Yang menjadi masalah disini adalah cara menuliskan nilainya, karena program kita bekerja secara horizontal, sedangkan increment dari nilai dilakukan secara vertikal.

Jadi pertama kita harus membuat nilai awalnya dulu. Inisialisasi dari variable $value kita pindahkan dari sebelum perulangan $i, menjadi di dalam perulangan $i. Dan nilai awalnya kita ubah menjadi $i + 1. Setelah itu langsung kita tulis nilainya.

Selanjutnya, perhatikan lagi bentuk dari segitiga kita berubah ya. Karena bertambah kolom di setiap baris. Kita bisa kurangi kolomnya dengan cara mengubah kondisi perulangan $j menjadi $j < $i.

Sekarang kita mesti mencari trik untuk menghitung nilai ke sampingnya ditambahkan dengan angka berapa. Perhatikan pada saat kita pindah ke kolom kedua, nilai yang ditulis adalah nilai pada kolom pertama ditambah empat. Terus nilai pada kolom ketiga adalah nilai pada kolom kedua ditambah tiga. Dan begitulah seterusnya, jadi disini kita mendapatkan polanya.

Jadi di dalam perulangan $j, pertama kita tambahkan dahulu nilai $value dengan SIZE - $j - 1. Setelah itu kita cetak nilai dari variable $value tanpa ada increment.

Kita jalankan. Dan kita pun sudah berhasil mengerjakan soal latihan ketiga.

2 Jam 41 Menit

Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.

Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.