11 January, 2015

Memahami Perulangan Bersarang

Setiap bahasa pemrograman tentu saja memiliki struktur perulangan di dalamnya yang dapat digunakan oleh pemrogram untuk menyelesaikan sebuah atau beberapa proses komputasi yang memerlukan proses lebih dari satu atau puluhan bahkan ratusan kali untuk menyelesaikan proses komputasi tersebut. Bayangkan jika kita melakukan proses tersebut dengan menulis baris perintah sebanyak n proses yang dibutuhkan untuk menyelesaikan komputasi tersebut, maka baris kode perintah kita akan semakin banyak, padahal perintah sama semua.
Untuk itulah terlahir struktur perulangan di dalam bahasa pemrograman. Oke, hal mendasar ini tidak kita bahas secara lebih pada postingan ini. Jika ingin memahami secara mendasar mengenai perulangan, ada lebih baiknya membaca topik yang telah diberikan sebelumnya disini Memahami Skema Perualngan .

Perulangan Bersarang (Nested Loop)

"Perulangan Bersarang (Nested Loop)" adalah struktur perulangan yang berada didalam struktur perulangan lainnya. Pada umumnya, struktur perulangan yang berada didalam struktur perulangan lainnya memiliki hubungan yang saling terkait dalam menyelesaikan sebuah kasus komputasi. Jika struktur perulangan luar (struktur perulangan yang menampung struktur perulangan lain didalamnya) tidak memiliki hubungan terkait dan tidak memiliki kepentingan dalam melakukan proses komputasi, sebaiknya jangan lakukan perulangan bersarang (nested loop), karena hanya akan menghabiskan waktu eksekusi yang sia-sia dan program berjalan tidak optimal. Oke, mari kita lihat langsung bagaimana bentuk dari perulangan bersarang itu.
for(; ; ) {
   for(; ;) {
       //kode diletakkan disini...
   }
}

Anda juga dapat menggabungkan seluruh struktur perulangan yang disediakan oleh bahasa pemrograman yang Anda gunakan untuk menyelesaikan suatu proses komputasi. Bentuknya seperti berikut.
do {
    //kode dapat diletakkan disini...
    for(; ; ) {
        //kode dapat diletakkan disini...
        while(true) {
            //kode dapat diletakkan disini...
        }
        //kode dapat diletakkan disini...
    }
    //kode dapat diletakkan disini...
} while(condition);

Pada bentuk umum "nested loop" (kedua) di atas, merupakan bentuk nested loop yang digunakan untuk menyelesaikan kasus komputasi yang cukup kompleks. Latihan membuat program dengan perulangan bersarang dalam berbagai kasus akan meningkatkan pemahaman Anda dalam penggunaan perulangan bersarang ini. Pada setiap bahasa pemrograman, baik bahasa C, C++, JAVA, C#, Python, dan lainnya, skema dan pola dari nested loop adalah sama saja, yang berbeda adalah sintaks dari struktur perulangan tersebut (tergantung setiap bahasa pemrograman). Nah, untuk meningkatkan sedikit pemahaman mengenai topik ini, mari kita lihat studi kasus berikut ini.


Studi Kasus Perulangan Bercabang (Nested Loop)

Kita akan mencoba menyelesaikan satu studi kasus sederhana mengenai matriks untuk memulai memahami penggunaan perulangan bercabang ini. Kasus yang akan dibahas disini ialah
Buatlah sebuah program yang mampu menampung nilai dari matriks mxn dan program mampu mengecek apakah keseluruhan nilai dari setiap kolom pada baris tertentu pada matriks adalah nol (0). Ketika keseluruhan nilai setiap kolom pada baris tertentu pada matriks adalah nol (0), program akan menampilkan sebuah pesan yang menyatakan bahwa "Matriks ini memilik baris yang nilai kolomnya nol semua". Jika tidak, program akan menampilkan pesan lainnya (pesan yang ditampilkan tergantung Anda sendiri). Ketentuan lainnya yang harus diperhatikan ialah, ukuran dan nilai-nilai pada matriks ditentukan oleh user melalui keyboard.

Berangkat dari kasus yang diberikan di atas, mari kita lihat kode program dalam bahasa c berikut ini.


Untuk hasil kompilasi dari kode program di atas, dapat dilihat pada screenshoot di bawah ini.
Nested Loop - kodeprogramcpp

Berikut beberapa pembahasan mengenai perulangan bersarang berdasarkan kode program di atas.
  1. Perulangan for pertama digunakan untuk menelusuri baris matriks.
  2. Perulangan for kedua digunakan untuk menelusuri nilai di tiap kolom dari tiap baris pada matriks.


Penutup

Demikianlah untuk postingan kali ini mengenai memahami Perulangan Bersarang pada bahasa pemrograman C/C++. Jika terdapat kekurangan dan tutur kata yang kurang baik, mohon dimaafkan dan jika tidak keberatan mohon menuliskan satu dua kata mengenai postingan ini, baik kritik atau saran agar kedepannya dapat membantu penulis dalam meningkatkan mutu postingan dan pembahasan tentunya. Terima kasih. :)

21 comments:

  1. lae hendroo...
    kalau buat hasil print kayak gini gimana ?
    +
    ++
    +++
    ++
    +

    ReplyDelete
    Replies
    1. Gini aja lae...

      int batas = 5;
      int i, j;

      for (i = 1; i <= batas; i += 1) {
      for (j = 0; j < i; j += 1) {
      printf("+");
      }
      printf("\n");
      }
      for (i = batas - 1; i >= 0; i -= 1) {
      for (j = 0; j < i; j += 1) {
      printf("+");
      }
      printf("\n");
      }

      Delete
  2. Kalo kaya gini gmn?
    12345
    678910
    1112131415
    1617181920
    Tlg jawab yaa mau ngumpul tugas, tq ��

    ReplyDelete
  3. #include
    #include


    main()

    {
    int i;
    int n;

    for (i=1;i<=20;i++) {

    printf("%d",i); }

    ReplyDelete
  4. mas kalau yang kaya gini gimana ya
    55555
    4444
    333
    22
    1
    1
    22
    333
    4444
    55555

    ReplyDelete
    Replies
    1. @Fitria: Untuk menampilkan perulangan bersarang dengan kode program bahasa C/C++ seperti pola yang diinginkan di atas, mbak fitria dapat menggunakan kode program berikut.

      int i, j, batas;

      printf("Tentukan batas: ");
      scanf("%d", &batas);

      for (i = batas; i > 0; i -= 1) {
      for (j = 0; j < i; j += 1) {
      printf("%d", i);
      }
      printf("\n");
      }
      for (i = 1; i <= batas; i += 1) {
      for (j = 1; j <= i; j += 1) {
      printf("%d", i);
      }
      printf("\n");
      }
      return 0;

      Selamat mencoba dan semoga bermafaat ya mbak..

      Delete
  5. 1
    23
    456

    Kalo kayak gitu gimana ya bang ? Pusing nih

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. Itu data bilangannya datangnya darimana ya? Aturan mainnya seperti apa? Mungkin bisa dijelaskan sedikit lebih detil mbak mengenai permasalahannya. Hehehe...

      Delete
  7. 24 32 40 48 56 64
    21 28 35 42 49
    18 24 30 36
    15 20 25
    12 16
    9

    ReplyDelete
  8. bagaimana program bahasa c
    11111
    2222
    333
    44
    5

    ReplyDelete
    Replies
    1. Mungkin postingan berikut ini bisa dijadikan referensi atau contoh.
      http://kodeprogramcpp.blogspot.co.id/2012/04/program-segitiga-siku-siku-berpola.html
      Semoga bermanfaat.. :)

      Delete
  9. Kayak begini kak??
    20 15 10 5
    15 10 5
    10 5
    5

    ReplyDelete
    Replies
    1. Mungkin postingan berikut ini bisa dijadikan referensi atau contoh.
      http://kodeprogramcpp.blogspot.co.id/2012/04/program-segitiga-siku-siku-berpola.html
      Bedanya hanya di logika perhitungan angkanya saja.
      Semoga bermanfaat.. :)

      Delete
  10. mau numpang tanya mas....
    kalau soalnya begini gimana ya mas ?
    Buat program untuk menghasilkan keluaran sbb :
    PROGRAM
    PROGRA
    PROGR
    PROG
    PRO
    PR
    P
    saya sudah bisa tapi keluaraannya berupa angka bukan huruf seperti itu.... mohon dibantu mas.... terima kasih..

    ReplyDelete
    Replies
    1. Gunakan array aja. Jadi mengaksesnya di dalam perulangan arr[indeks]; Intinya seperti itu dan hanya itu saja perbedaannya antara angka dengan huruf. :)

      Delete
  11. Kalo tampilan programnya gini gmna?
    *****
    ****
    ***
    **
    *

    Atau

    *****
    ** **
    * *
    ** **
    *****

    ReplyDelete
  12. Klo seperti ini gmna?
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1

    ReplyDelete
  13. Klo seperti ini gmna?
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1

    ReplyDelete
  14. Klo yg seperti ini gmna?
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1

    ReplyDelete

Berikan komentar, Kritik dan saran teman-teman mengenai blog ini. Komentar, Kritik dan saran teman-teman sangat berarti untuk perkembangan Blog ini.
Salam Blogger, salam kodeprogramcpp.

Lihat Juga Berita Pilihan Ini