[{"data":1,"prerenderedAt":200},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-perulangan-dengan-repeat-until-loop-pada-pascal-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":133,"renderedTakeaway":134,"latestArticles":135,"toc":187},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":55,"takeway":56,"body":57,"authors":58,"series":64},"71","Perulangan dengan REPEAT UNTIL loop pada Pascal","perulangan-dengan-repeat-until-loop-pada-pascal","Pada REPEAT UNTIL loop, pengecekan kondisi dilakukan pada akhir perintah dan perulangan akan terus berjalan selama kondisi masih bernilai `false`.","2020-11-15T12:34:28.000Z",{"id":49},"7c6b59b4-5fc4-432f-9bb2-388b761240b4",[51,52,53,54],"pascal","perulangan","loop","struktur-kontrol",2,null,"Setelah sebelumnya kita membahas tentang [FOR loop](https://invasikode.com/for-loop-pascal/), dan [WHILE DO loop](https://invasikode.com/while-loop-pascal/) pada Pascal. Sekarang kita akan membahas tentang REPEAT UNTIL loop.\n\n## Pengertian REPEAT UNTIL loop pada Pascal\n\nREPEAT UNTIL loop memiliki kemiripan dengan WHILE DO loop. Keduanya sama sama menggunakan ekspresi boolean sebagai kondisinya. Perbedaannya terletak pada letak kondisi, dan juga waktu berhentinya.\n\nPada REPEAT UNTIL loop, pengecekan kondisi dilakukan pada akhir perintah dan perulangan akan terus berjalan selama kondisi masih bernilai `false`. Ini kebalikan dari WHILE DO loop yang pengecekan kondisi berada di awal dan perulangan berjalan selama kondisi bernilai `true`.\n\nMari kita lihat contoh sederhananya, tetap dengan mengaduk adonan roti hehe...\n\n```\n// dalam bahasa pascal\nrepeat\n  aduk_adonan;\nuntil (roti_mengembang);\n\n// atau dalam bahasa Indonesia\nulangi\n  aduk_adonan;\nsampai (roti_mengembang);\n```\n\nPada perulangan REPEAT UNTIL tersebut, perintah `aduk_adonan` akan terus berjalan selama roti belum mengembang. Namun ketika roti telah mengembang, perulangan akan berhenti.\n\n## Format Penulisan REPEAT UNTIL loop pada Pascal\n\nSama seperti WHILE DO loop, komponen terpenting dari REPEAT UNTIL loop terletak pada [kondisi](https://invasikode.com/operasi-logika-pascal/) dan perintah yang akan dijalankan. Untuk format penulisannya sebagai berikut.\n\n```\nrepeat\n  {perintah yang akan dijalankan}\nuntil ({kondisi});\n```\n\nOke supaya lebih paham, kita lanjut dengan membuat program sederhana menggunakan REPEAT UNTIL loop.\n\n## Contoh Penggunaan REPEAT UNTIL loop pada Pascal\n\nPada contoh kali ini kita akan coba membuat program untuk mengeluarkan output bilangan kelipatan 2 dengan mengunakan REPEAT UNTIL loop. Silahkan ketikkan kode berikut.\n\n```pascal\nprogram WhileDoLoop;\nuses crt;\nvar\n  i: integer;\nbegin\n  clrscr;\n  i := 2;\n  writeln('Bilangan kelipatan 2');\n  repeat\n    write(i, ', ');\n    i := i+2; // menambah i sebanyak 2\n  until(i > 100); // perulangan sampai i lebih dari 100\n  readln;\nend.\n```\n\nSilahkan kalian jalankan, maka kurang lebih outputnya akan seperti ini.\n\n```\nBilangan kelipatan 2\n2 4 6 8 ... 98 100\n```\n\nPada program tersebut perintah `write(i, ' ')` dijalankan sebanyak 50 kali karena variable i ditambah 2 setiap perulangannya. Setelah variable i lebih dari 100 maka perulangan akan berhenti dan program selesai.\n\nSekarang coba kalian ubah sedikit kondisinya menjadi sebagai berikut.\n\n```pascal\n....\n  until (i >= 100);\n....\n```\n\nKalau sudah coba kalian jalankan. Jika kalian perhatikan, hasil outpunya tidak akan sampai 100, hanya sampai angka 98 saja. Kira kira kenapa?\n\nIni karena saat nilai variable i sudah mencapai angka 100 perulangan telah berhenti. karena `100 >= 100` menghasilkan value `true`. Ini perlu diperhatikan dalam penulisan kondisi, karena jika terjadi kesalahan maka logika program juga akan ikut salah.\n\nOh iya, perulangan REPEAT UNTIL ini juga dapat menghasilkan infinite loop, apabila logikanya selalu bernilai false. Contohnya saja.\n\n```pascal\n....\n  until (false); // akan menghasilkan infinite loop\n....\n```\n\nJadi selalu ingat untuk memberikan perintah logika agar tidak terjadi infinite loop hehe... :D\n\nSeperti biasanya, silahkan kalian bereksperimen dengan mengubah variable dan kondisi perulangannya. Selamat mencoba...\n\n## Penutup\n\nCukup sekian untuk tutorial kali ini, semoga bermanfaat :D pada tutorial selanjutnya kita akan kembali lagi membahas seputar percabangan seperti IF ELSE yang pernah kita bahas sebelumnya. Namun kali ini akan menggunakan metode yang lain yaitu [percabangan dengan kondisi CASE OF](https://invasikode.com/case-of-pascal/).",[59],{"authors_id":60},{"name":61,"slug":62,"role":63,"profile_picture":56},"Daffa Izzuddin","izzudd","Writer",{"id":65,"title":66,"slug":67,"articles":68,"parent_series":115},"24","Struktur Kontrol","pascal-struktur-kontrol",[69,79,88,96,104,107],{"id":70,"title":71,"slug":72,"excerpt":73,"thumbnail_image":74,"tags":76},"67","Expresi Boolean dan Operasi Logika pada Bahasa Pascal","expresi-boolean-dan-operasi-logika-pada-bahasa-pascal","Dalam penyusunan algoritma pemrograman, perlu yang namanya expresi boolean. Expresi boolean dapat berupa operasi logika dan perbandingan.",{"id":75},"0d7b8bac-d407-4c10-adac-9629c054e44a",[51,77,78,54],"boolean","operator",{"id":80,"title":81,"slug":82,"excerpt":83,"thumbnail_image":84,"tags":86},"68","Percabangan dengan Kondisi IF dan ELSE pada Pascal","percabangan-dengan-kondisi-if-dan-else-pada-pascal","Pada kesempatan kali ini kita akan membahas sebuah kondisi percabangan dengan menggunakan keyword IF ELSE.",{"id":85},"12176154-b51a-40f7-92c9-76bd22f27edd",[51,87,54],"percabangan",{"id":89,"title":90,"slug":91,"excerpt":92,"thumbnail_image":93,"tags":95},"69","Perulangan dengan FOR loop pada Pascal","perulangan-dengan-for-loop-pada-pascal","Pada FOR loop kita menginstruksikan komputer untuk menjalankan suatu perintah sebanyak berapa kali secara explisit.",{"id":94},"add308c3-92a3-46cf-b748-c088955b16ac",[51,52,53,54],{"id":97,"title":98,"slug":99,"excerpt":100,"thumbnail_image":101,"tags":103},"70","Perulangan dengan WHILE DO loop pada Pascal","perulangan-dengan-while-do-loop-pada-pascal","WHILE DO loop merupakan perulangan pada Pascal yang menggunakan kondisi berupa ekspresi boolean sebagai penanda perulangannya.",{"id":102},"a0a6e8a4-08ae-448f-b8a1-b3ca3b24c559",[51,52,53,54],{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":105,"tags":106},{"id":49},[51,52,53,54],{"id":108,"title":109,"slug":110,"excerpt":111,"thumbnail_image":112,"tags":114},"72","Percabangan dengan CASE OF pada Pascal","percabangan-dengan-case-of-pada-pascal","CASE OF pada Pascal merupakan percabangan yang menggunakan variable dan nilainya untuk menentukan sebuah kondisi",{"id":113},"7e66c22e-799f-4e20-bccb-f386d45987ba",[51,87,54],{"id":116,"title":29,"slug":30,"parent_series":117,"children_series":119},"14",{"id":118,"title":22,"slug":23,"parent_series":56},"1",[120,124,125,129],{"id":121,"title":122,"slug":123,"cover_image":56},"23","Berkenalan dengan Bahasa Pascal","pascal-intro",{"id":65,"title":66,"slug":67,"cover_image":56},{"id":126,"title":127,"slug":128,"cover_image":56},"25","Tipe Data Bentukan","pascal-tipe-data-bentukan",{"id":130,"title":131,"slug":132,"cover_image":56},"26","Pemrograman Prosedural","pascal-pemrograman-prosedural","\u003Cp>Setelah sebelumnya kita membahas tentang \u003Ca href=\"https://invasikode.com/for-loop-pascal/\">FOR loop\u003C/a>, dan \u003Ca href=\"https://invasikode.com/while-loop-pascal/\">WHILE DO loop\u003C/a> pada Pascal. Sekarang kita akan membahas tentang REPEAT UNTIL loop.\u003C/p>\n\u003Ch2 id=\"pengertian-repeat-until-loop-pada-pascal\">Pengertian REPEAT UNTIL loop pada Pascal\u003C/h2>\n\u003Cp>REPEAT UNTIL loop memiliki kemiripan dengan WHILE DO loop. Keduanya sama sama menggunakan ekspresi boolean sebagai kondisinya. Perbedaannya terletak pada letak kondisi, dan juga waktu berhentinya.\u003C/p>\n\u003Cp>Pada REPEAT UNTIL loop, pengecekan kondisi dilakukan pada akhir perintah dan perulangan akan terus berjalan selama kondisi masih bernilai \u003Ccode>false\u003C/code>. Ini kebalikan dari WHILE DO loop yang pengecekan kondisi berada di awal dan perulangan berjalan selama kondisi bernilai \u003Ccode>true\u003C/code>.\u003C/p>\n\u003Cp>Mari kita lihat contoh sederhananya, tetap dengan mengaduk adonan roti hehe...\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%2F%2F%20dalam%20bahasa%20pascal%0Arepeat%0A%20%20aduk_adonan%3B%0Auntil%20(roti_mengembang)%3B%0A%0A%2F%2F%20atau%20dalam%20bahasa%20Indonesia%0Aulangi%0A%20%20aduk_adonan%3B%0Asampai%20(roti_mengembang)%3B\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>// dalam bahasa pascal\nrepeat\n  aduk_adonan;\nuntil (roti_mengembang);\n\n// atau dalam bahasa Indonesia\nulangi\n  aduk_adonan;\nsampai (roti_mengembang);\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Pada perulangan REPEAT UNTIL tersebut, perintah \u003Ccode>aduk_adonan\u003C/code> akan terus berjalan selama roti belum mengembang. Namun ketika roti telah mengembang, perulangan akan berhenti.\u003C/p>\n\u003Ch2 id=\"format-penulisan-repeat-until-loop-pada-pascal\">Format Penulisan REPEAT UNTIL loop pada Pascal\u003C/h2>\n\u003Cp>Sama seperti WHILE DO loop, komponen terpenting dari REPEAT UNTIL loop terletak pada \u003Ca href=\"https://invasikode.com/operasi-logika-pascal/\">kondisi\u003C/a> dan perintah yang akan dijalankan. Untuk format penulisannya sebagai berikut.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"repeat%0A%20%20%7Bperintah%20yang%20akan%20dijalankan%7D%0Auntil%20(%7Bkondisi%7D)%3B\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>repeat\n  {perintah yang akan dijalankan}\nuntil ({kondisi});\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Oke supaya lebih paham, kita lanjut dengan membuat program sederhana menggunakan REPEAT UNTIL loop.\u003C/p>\n\u003Ch2 id=\"contoh-penggunaan-repeat-until-loop-pada-pascal\">Contoh Penggunaan REPEAT UNTIL loop pada Pascal\u003C/h2>\n\u003Cp>Pada contoh kali ini kita akan coba membuat program untuk mengeluarkan output bilangan kelipatan 2 dengan mengunakan REPEAT UNTIL loop. Silahkan ketikkan kode berikut.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"program%20WhileDoLoop%3B%0Auses%20crt%3B%0Avar%0A%20%20i%3A%20integer%3B%0Abegin%0A%20%20clrscr%3B%0A%20%20i%20%3A%3D%202%3B%0A%20%20writeln('Bilangan%20kelipatan%202')%3B%0A%20%20repeat%0A%20%20%20%20write(i%2C%20'%2C%20')%3B%0A%20%20%20%20i%20%3A%3D%20i%2B2%3B%20%2F%2F%20menambah%20i%20sebanyak%202%0A%20%20until(i%20%3E%20100)%3B%20%2F%2F%20perulangan%20sampai%20i%20lebih%20dari%20100%0A%20%20readln%3B%0Aend.\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>program WhileDoLoop;\nuses crt;\nvar\n  i: integer;\nbegin\n  clrscr;\n  i := 2;\n  writeln('Bilangan kelipatan 2');\n  repeat\n    write(i, ', ');\n    i := i+2; // menambah i sebanyak 2\n  until(i &gt; 100); // perulangan sampai i lebih dari 100\n  readln;\nend.\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Silahkan kalian jalankan, maka kurang lebih outputnya akan seperti ini.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Bilangan%20kelipatan%202%0A2%204%206%208%20...%2098%20100\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Bilangan kelipatan 2\n2 4 6 8 ... 98 100\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Pada program tersebut perintah \u003Ccode>write(i, &#39; &#39;)\u003C/code> dijalankan sebanyak 50 kali karena variable i ditambah 2 setiap perulangannya. Setelah variable i lebih dari 100 maka perulangan akan berhenti dan program selesai.\u003C/p>\n\u003Cp>Sekarang coba kalian ubah sedikit kondisinya menjadi sebagai berikut.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"....%0A%20%20until%20(i%20%3E%3D%20100)%3B%0A....\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>....\n  until (i &gt;= 100);\n....\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Kalau sudah coba kalian jalankan. Jika kalian perhatikan, hasil outpunya tidak akan sampai 100, hanya sampai angka 98 saja. Kira kira kenapa?\u003C/p>\n\u003Cp>Ini karena saat nilai variable i sudah mencapai angka 100 perulangan telah berhenti. karena \u003Ccode>100 &gt;= 100\u003C/code> menghasilkan value \u003Ccode>true\u003C/code>. Ini perlu diperhatikan dalam penulisan kondisi, karena jika terjadi kesalahan maka logika program juga akan ikut salah.\u003C/p>\n\u003Cp>Oh iya, perulangan REPEAT UNTIL ini juga dapat menghasilkan infinite loop, apabila logikanya selalu bernilai false. Contohnya saja.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"....%0A%20%20until%20(false)%3B%20%2F%2F%20akan%20menghasilkan%20infinite%20loop%0A....\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>....\n  until (false); // akan menghasilkan infinite loop\n....\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jadi selalu ingat untuk memberikan perintah logika agar tidak terjadi infinite loop hehe... :D\u003C/p>\n\u003Cp>Seperti biasanya, silahkan kalian bereksperimen dengan mengubah variable dan kondisi perulangannya. Selamat mencoba...\u003C/p>\n\u003Ch2 id=\"penutup\">Penutup\u003C/h2>\n\u003Cp>Cukup sekian untuk tutorial kali ini, semoga bermanfaat :D pada tutorial selanjutnya kita akan kembali lagi membahas seputar percabangan seperti IF ELSE yang pernah kita bahas sebelumnya. Namun kali ini akan menggunakan metode yang lain yaitu \u003Ca href=\"https://invasikode.com/case-of-pascal/\">percabangan dengan kondisi CASE OF\u003C/a>.\u003C/p>\n","",[136,149,164,176],{"id":137,"title":138,"slug":139,"excerpt":140,"thumbnail_image":141,"tags":143},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":142},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[144,145,146,147,148],"system-programming","rust","zig","c","memory-safety",{"id":150,"title":151,"slug":152,"excerpt":153,"thumbnail_image":154,"tags":156},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":155},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[157,158,159,160,161,162,163],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":165,"title":166,"slug":167,"excerpt":168,"thumbnail_image":169,"tags":171},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":170},"e3c617fd-1486-4b82-b937-94fbec846c77",[157,172,162,173,174,158,175],"microservices","database","message-broker","postgresql",{"id":177,"title":178,"slug":179,"excerpt":180,"thumbnail_image":181,"tags":183},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":182},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[184,174,157,162,172,185,186],"rabbitmq","async","python",[188,191,194,197],{"text":189,"depth":55,"id":190},"Pengertian REPEAT UNTIL loop pada Pascal","pengertian-repeat-until-loop-pada-pascal",{"text":192,"depth":55,"id":193},"Format Penulisan REPEAT UNTIL loop pada Pascal","format-penulisan-repeat-until-loop-pada-pascal",{"text":195,"depth":55,"id":196},"Contoh Penggunaan REPEAT UNTIL loop pada Pascal","contoh-penggunaan-repeat-until-loop-pada-pascal",{"text":198,"depth":55,"id":199},"Penutup","penutup",1791045069944]