[{"data":1,"prerenderedAt":172},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-struktur-kontrol-perulangan-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":104,"renderedTakeaway":105,"latestArticles":106,"toc":158},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":54,"takeway":55,"body":56,"authors":57,"series":58},"9","Struktur Kontrol Perulangan (For, While, Do-While), Kapan Harus Dipakai?","struktur-kontrol-perulangan","Pernah ngerasa capek nulis baris kode yang sama berulang kali? Gimana caranya nyuruh komputer buat ngerjain itu secara otomatis?","2026-06-14T17:23:03.479Z",{"id":49},"8dd5085f-35bb-46fe-8044-d50a77ede34e",[51,52,53],"basic","intro","looping",null,"- Looping bikin kode lebih rapi karena mengeksekusi blok kode berulang secara otomatis.\n- Gunakan 'for' kalau kamu udah tahu pasti jumlah iterasinya.\n- Pilih 'while' atau 'do-while' untuk jumlah iterasi yang belum pasti.\n- Berbeda dengan 'while', 'do-while' memastikan kode dieksekusi minimal satu kali.","Pernah *nggak* nulis baris kode yang sama berulang-ulang? Rasanya pasti capek dan bikin kode kelihatan berantakan.\n\nNah, di sinilah struktur kontrol perulangan atau *looping* menyelamatkan hidup programmer. Fitur ini bikin kita bisa mengeksekusi satu blok kode berkali-kali secara otomatis. Kita tinggal tentuin aja syarat dan batasannya.\n\nAda tiga jenis *looping* dasar yang wajib dipahami. Kita bahas satu per satu, yuk!\n\n### 1. Perulangan For\n\nPerulangan `for` ini masuk kategori *counted loop*. Artinya, perulangan ini pas banget dipakai kalau kamu udah tahu pasti jumlah iterasinya sejak awal.\n\nStrukturnya juga rapi karena tiga elemen utamanya ditulis dalam satu baris. Ada inisialisasi (nilai awal), kondisi (batasan perulangan), dan *increment* atau *decrement* (perubahan nilai).\n\nTapi ingat, kalau sejak awal kondisinya udah *false*, blok kode di dalamnya *nggak* bakal tereksekusi sama sekali alias nol kali jalan.\n\n### 2. Perulangan While\n\nBeda cerita dengan `while`. Perulangan ini diklasifikasikan sebagai *uncounted loop*. \n\nKamu bisa pakai `while` kalau jumlah iterasinya belum jelas dan sangat bergantung pada kondisi tertentu yang dinamis. Karakteristik utamanya tuh pengecekan kondisi dilakukan di awal sebelum blok kodenya berjalan.\n\nSama seperti `for`, kalau di awal pengecekan kondisinya udah *false*, perulangannya bakal langsung berhenti. Eksekusinya juga nol kali.\n\n### 3. Perulangan Do-While\n\nPerulangan `do-while` sebenarnya mirip banget sama `while` dan sama-sama *uncounted loop*. Bedanya ada di letak pengecekan kondisi.\n\nKalau di `do-while`, pengecekan kondisi dilakukan di akhir perulangan. Struktur ini memastikan kodenya dieksekusi minimal satu kali. \n\nNantinya, setelah jalan sekali, baru deh dicek. Kalau *true*, lanjut berulang. Kalau *false*, perulangannya berhenti.\n\n### Kesimpulan: Bedanya Apa Sih?\n\nBiar makin gampang ingat, ini perbedaan mendasar ketiganya:\n\n- **Jumlah iterasi**: Pakai `for` kalau udah pasti jumlahnya. Pakai `while` atau `do-while` kalau masih *nggak* menentu.\n- **Pengecekan kondisi**: `for` dan `while` ngecek kondisi di awal, sedangkan `do-while` ngeceknya di akhir.\n- **Eksekusi minimal**: `for` dan `while` bisa aja *nggak* tereksekusi sama sekali. Kalau `do-while`, dijamin pasti jalan minimal satu kali.\n\nPilih yang mana? Sesuaikan aja sama kebutuhan logikanya buat program kamu!\n",[],{"id":59,"title":15,"slug":16,"articles":60,"parent_series":98},"12",[61,64,70,80,89],{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":62,"tags":63},{"id":49},[51,52,53],{"id":65,"title":15,"slug":16,"excerpt":66,"thumbnail_image":67,"tags":69},"6","Inti dari pemrograman adalah memberi instruksi alias menyuruh komputer untuk melakukan sesuatu yang kita inginkan.",{"id":68},"9c7f5c67-3b29-48f5-85fe-f8497bc3b4cc",[52,51],{"id":71,"title":72,"slug":73,"excerpt":74,"thumbnail_image":75,"tags":77},"7","Konsep Variabel dan Tipe Data pada Pemrograman","variable-dan-tipe-data","Variabel itu ibarat “tokoh utama” di sebuah program. Nggak peduli bahasa pemrograman apapun, pasti semua punya konsep variabel.",{"id":76},"0a59bd7f-b7b1-47c9-a0b8-b3351057a6c7",[51,52,78,79],"variable","types",{"id":81,"title":82,"slug":83,"excerpt":84,"thumbnail_image":85,"tags":87},"8","Struktur Kontrol Kondisi (If-Else dan Switch-Case), Apa Bedanya?","struktur-kontrol-kondisi","Sering bingung kapan harus pakai if-else dan kapan switch-case? Kenapa switch-case kadang bisa lebih ngebut? Yuk, bongkar rahasianya di sini!",{"id":86},"44de9a02-3223-4969-88df-907973544b04",[51,52,88],"conditions",{"id":90,"title":91,"slug":92,"excerpt":93,"thumbnail_image":94,"tags":96},"10","Fungsi dan Prosedur dalam Pemrograman, Apa Bedanya?","fungsi-dan-prosedur","Pernah bingung kapan harus pakai fungsi dan kapan pakai prosedur pas lagi ngoding? Yuk, bongkar rahasia dan bedanya di sini biar kode kamu makin rapi!",{"id":95},"aca2cb4a-803b-4fdc-85e8-c8ea2beaf441",[51,52,97],"functions",{"id":43,"title":8,"slug":9,"parent_series":54,"children_series":99},[100,102,103],{"id":101,"title":12,"slug":13,"cover_image":54},"15",{"id":81,"title":18,"slug":19,"cover_image":54},{"id":59,"title":15,"slug":16,"cover_image":54},"\u003Cp>Pernah \u003Cem>nggak\u003C/em> nulis baris kode yang sama berulang-ulang? Rasanya pasti capek dan bikin kode kelihatan berantakan.\u003C/p>\n\u003Cp>Nah, di sinilah struktur kontrol perulangan atau \u003Cem>looping\u003C/em> menyelamatkan hidup programmer. Fitur ini bikin kita bisa mengeksekusi satu blok kode berkali-kali secara otomatis. Kita tinggal tentuin aja syarat dan batasannya.\u003C/p>\n\u003Cp>Ada tiga jenis \u003Cem>looping\u003C/em> dasar yang wajib dipahami. Kita bahas satu per satu, yuk!\u003C/p>\n\u003Ch3 id=\"1-perulangan-for\">1. Perulangan For\u003C/h3>\n\u003Cp>Perulangan \u003Ccode>for\u003C/code> ini masuk kategori \u003Cem>counted loop\u003C/em>. Artinya, perulangan ini pas banget dipakai kalau kamu udah tahu pasti jumlah iterasinya sejak awal.\u003C/p>\n\u003Cp>Strukturnya juga rapi karena tiga elemen utamanya ditulis dalam satu baris. Ada inisialisasi (nilai awal), kondisi (batasan perulangan), dan \u003Cem>increment\u003C/em> atau \u003Cem>decrement\u003C/em> (perubahan nilai).\u003C/p>\n\u003Cp>Tapi ingat, kalau sejak awal kondisinya udah \u003Cem>false\u003C/em>, blok kode di dalamnya \u003Cem>nggak\u003C/em> bakal tereksekusi sama sekali alias nol kali jalan.\u003C/p>\n\u003Ch3 id=\"2-perulangan-while\">2. Perulangan While\u003C/h3>\n\u003Cp>Beda cerita dengan \u003Ccode>while\u003C/code>. Perulangan ini diklasifikasikan sebagai \u003Cem>uncounted loop\u003C/em>. \u003C/p>\n\u003Cp>Kamu bisa pakai \u003Ccode>while\u003C/code> kalau jumlah iterasinya belum jelas dan sangat bergantung pada kondisi tertentu yang dinamis. Karakteristik utamanya tuh pengecekan kondisi dilakukan di awal sebelum blok kodenya berjalan.\u003C/p>\n\u003Cp>Sama seperti \u003Ccode>for\u003C/code>, kalau di awal pengecekan kondisinya udah \u003Cem>false\u003C/em>, perulangannya bakal langsung berhenti. Eksekusinya juga nol kali.\u003C/p>\n\u003Ch3 id=\"3-perulangan-do-while\">3. Perulangan Do-While\u003C/h3>\n\u003Cp>Perulangan \u003Ccode>do-while\u003C/code> sebenarnya mirip banget sama \u003Ccode>while\u003C/code> dan sama-sama \u003Cem>uncounted loop\u003C/em>. Bedanya ada di letak pengecekan kondisi.\u003C/p>\n\u003Cp>Kalau di \u003Ccode>do-while\u003C/code>, pengecekan kondisi dilakukan di akhir perulangan. Struktur ini memastikan kodenya dieksekusi minimal satu kali. \u003C/p>\n\u003Cp>Nantinya, setelah jalan sekali, baru deh dicek. Kalau \u003Cem>true\u003C/em>, lanjut berulang. Kalau \u003Cem>false\u003C/em>, perulangannya berhenti.\u003C/p>\n\u003Ch3 id=\"kesimpulan-bedanya-apa-sih\">Kesimpulan: Bedanya Apa Sih?\u003C/h3>\n\u003Cp>Biar makin gampang ingat, ini perbedaan mendasar ketiganya:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Jumlah iterasi\u003C/strong>: Pakai \u003Ccode>for\u003C/code> kalau udah pasti jumlahnya. Pakai \u003Ccode>while\u003C/code> atau \u003Ccode>do-while\u003C/code> kalau masih \u003Cem>nggak\u003C/em> menentu.\u003C/li>\n\u003Cli>\u003Cstrong>Pengecekan kondisi\u003C/strong>: \u003Ccode>for\u003C/code> dan \u003Ccode>while\u003C/code> ngecek kondisi di awal, sedangkan \u003Ccode>do-while\u003C/code> ngeceknya di akhir.\u003C/li>\n\u003Cli>\u003Cstrong>Eksekusi minimal\u003C/strong>: \u003Ccode>for\u003C/code> dan \u003Ccode>while\u003C/code> bisa aja \u003Cem>nggak\u003C/em> tereksekusi sama sekali. Kalau \u003Ccode>do-while\u003C/code>, dijamin pasti jalan minimal satu kali.\u003C/li>\n\u003C/ul>\n\u003Cp>Pilih yang mana? Sesuaikan aja sama kebutuhan logikanya buat program kamu!\u003C/p>\n","\u003Cul>\n\u003Cli>Looping bikin kode lebih rapi karena mengeksekusi blok kode berulang secara otomatis.\u003C/li>\n\u003Cli>Gunakan &#39;for&#39; kalau kamu udah tahu pasti jumlah iterasinya.\u003C/li>\n\u003Cli>Pilih &#39;while&#39; atau &#39;do-while&#39; untuk jumlah iterasi yang belum pasti.\u003C/li>\n\u003Cli>Berbeda dengan &#39;while&#39;, &#39;do-while&#39; memastikan kode dieksekusi minimal satu kali.\u003C/li>\n\u003C/ul>\n",[107,120,135,147],{"id":108,"title":109,"slug":110,"excerpt":111,"thumbnail_image":112,"tags":114},"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":113},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[115,116,117,118,119],"system-programming","rust","zig","c","memory-safety",{"id":121,"title":122,"slug":123,"excerpt":124,"thumbnail_image":125,"tags":127},"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":126},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[128,129,130,131,132,133,134],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":136,"title":137,"slug":138,"excerpt":139,"thumbnail_image":140,"tags":142},"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":141},"e3c617fd-1486-4b82-b937-94fbec846c77",[128,143,133,144,145,129,146],"microservices","database","message-broker","postgresql",{"id":148,"title":149,"slug":150,"excerpt":151,"thumbnail_image":152,"tags":154},"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":153},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[155,145,128,133,143,156,157],"rabbitmq","async","python",[159,163,166,169],{"text":160,"depth":161,"id":162},"1. Perulangan For",3,"1-perulangan-for",{"text":164,"depth":161,"id":165},"2. Perulangan While","2-perulangan-while",{"text":167,"depth":161,"id":168},"3. Perulangan Do-While","3-perulangan-do-while",{"text":170,"depth":161,"id":171},"Kesimpulan: Bedanya Apa Sih?","kesimpulan-bedanya-apa-sih",1791045072007]