[{"data":1,"prerenderedAt":175},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-fungsi-dan-prosedur-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},"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!","2026-06-14T17:23:03.636Z",{"id":49},"aca2cb4a-803b-4fdc-85e8-c8ea2beaf441",[51,52,53],"basic","intro","functions",null,"- Fungsi selalu mengembalikan nilai (return value) ke pemanggilnya.\n- Prosedur hanya menjalankan tugas spesifik tanpa mengembalikan nilai.\n- Membantu membuat kode jadi lebih modular, gampang di-debug, dan tidak berulang (DRY).","Pernah *nggak* kalian bikin kode program yang isinya puanjang banget sampai ratusan atau ribuan baris? Pasti pusing sendiri pas harus nyari *bug* atau mau nambahin fitur baru.\n\nNah, biar kode kita lebih rapi dan gampang dikelola, kita butuh yang namanya modularisasi. Caranya adalah dengan memecah program besar menjadi potongan-potongan kecil yang disebut sub-program. Di dunia *programming*, sub-program ini biasa kita kenal dengan istilah Fungsi (*function*) dan Prosedur (*procedure*).\n\nKedua konsep ini sering banget dipakai buat ngelompokkin baris kode yang punya tugas spesifik. Yuk, kita bahas apa bedanya dan kenapa kalian wajib banget pakai dua hal ini! 🚀\n\n## Kenapa Harus Pakai Fungsi dan Prosedur?\n\nAda banyak banget keuntungan yang bisa kalian dapet. Pertama, jelas bikin *debugging* jauh lebih gampang. Kalau ada *error* di fitur tertentu, kalian cuma perlu ngecek blok kode fungsi atau prosedur yang berkaitan, *nggak* perlu ngubek-ubek seluruh program.\n\nKedua, ada *reusability*. Maksudnya, kode yang udah kalian tulis bisa dipanggil berulang kali di berbagai bagian program. Ini bikin kalian terhindar dari nulis kode yang sama persis berkali-kali (konsep *Don't Repeat Yourself* atau DRY).\n\nKetiga, kode kalian bakal kelihatan jauh lebih profesional dan punya *readability* yang tinggi. Orang lain atau bahkan kalian di masa depan bakal lebih gampang paham alur programnya.\n\n## Mengenal Prosedur\n\nProsedur itu intinya adalah sekumpulan instruksi buat ngelakuin aksi tertentu. Karakteristik paling utamanya adalah dia **tidak mengembalikan nilai** (*no return value*) ke program utama.\n\nJadi prosedur tuh cuma dikasih tugas, dikerjain sampai selesai, terus udah. *Nggak* ada hasil perhitungan yang disetor balik ke pemanggilnya. Biasanya di bahasa pemrograman modern kayak C atau C++, prosedur ini sering ditulis pakai *keyword* `void`.\n\n## Mengenal Fungsi\n\nKalau fungsi, sifatnya agak beda sedikit. Fungsi adalah blok kode yang bertugas memproses data dan di akhir prosesnya dia **mengembalikan sebuah nilai** (*return value*).\n\nNilai hasil perhitungan dari fungsi ini nantinya bakal dilempar balik ke program utamanya. Hasil kembalian ini biasanya ditampung dulu ke dalam sebuah variabel buat dipakai ke proses selanjutnya.\n\n## Beda Fungsi vs Prosedur\n\nSebenernya beda paling mendasar cuma ada di *return value* aja. Prosedur cuma ngejalanin aksi tanpa pamrih, alias *nggak* ngasih kembalian apa-apa. Sementara fungsi, habis ngolah data, dia bakal ngasih *output* berupa nilai pasti.\n\nSecara pemakaian juga beda. Prosedur biasanya dipanggil langsung sebagai satu instruksi utuh yang mandiri. Kalau fungsi, pemanggilannya sering diselipin ke dalam sebuah ekspresi atau operasi *assignment* (pengisian nilai ke variabel).\n\n## Kapan Pakai Fungsi, Kapan Pakai Prosedur?\n\nBuat mutusin mana yang harus dipakai, balik lagi ke kebutuhan kalian. Pakai prosedur kalau kalian cuma butuh ngejalanin aksi aja. Misalnya buat nyetak teks ke layar, nyimpen data ke *database*, atau ngubah nilai variabel *global*.\n\nTapi, kalau kalian butuh ngelakuin kalkulasi matematika, pengolahan teks, atau konversi data yang hasil akhirnya bakal dipakai lagi sama program utama, nah itu saatnya kalian pakai fungsi. Gampang dipahami, kan? ✨\n",[],{"id":59,"title":15,"slug":16,"articles":60,"parent_series":98},"12",[61,70,76,86,95],{"id":62,"title":63,"slug":64,"excerpt":65,"thumbnail_image":66,"tags":68},"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?",{"id":67},"8dd5085f-35bb-46fe-8044-d50a77ede34e",[51,52,69],"looping",{"id":71,"title":15,"slug":16,"excerpt":72,"thumbnail_image":73,"tags":75},"6","Inti dari pemrograman adalah memberi instruksi alias menyuruh komputer untuk melakukan sesuatu yang kita inginkan.",{"id":74},"9c7f5c67-3b29-48f5-85fe-f8497bc3b4cc",[52,51],{"id":77,"title":78,"slug":79,"excerpt":80,"thumbnail_image":81,"tags":83},"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":82},"0a59bd7f-b7b1-47c9-a0b8-b3351057a6c7",[51,52,84,85],"variable","types",{"id":87,"title":88,"slug":89,"excerpt":90,"thumbnail_image":91,"tags":93},"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":92},"44de9a02-3223-4969-88df-907973544b04",[51,52,94],"conditions",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":96,"tags":97},{"id":49},[51,52,53],{"id":62,"title":8,"slug":9,"parent_series":54,"children_series":99},[100,102,103],{"id":101,"title":12,"slug":13,"cover_image":54},"15",{"id":87,"title":18,"slug":19,"cover_image":54},{"id":59,"title":15,"slug":16,"cover_image":54},"\u003Cp>Pernah \u003Cem>nggak\u003C/em> kalian bikin kode program yang isinya puanjang banget sampai ratusan atau ribuan baris? Pasti pusing sendiri pas harus nyari \u003Cem>bug\u003C/em> atau mau nambahin fitur baru.\u003C/p>\n\u003Cp>Nah, biar kode kita lebih rapi dan gampang dikelola, kita butuh yang namanya modularisasi. Caranya adalah dengan memecah program besar menjadi potongan-potongan kecil yang disebut sub-program. Di dunia \u003Cem>programming\u003C/em>, sub-program ini biasa kita kenal dengan istilah Fungsi (\u003Cem>function\u003C/em>) dan Prosedur (\u003Cem>procedure\u003C/em>).\u003C/p>\n\u003Cp>Kedua konsep ini sering banget dipakai buat ngelompokkin baris kode yang punya tugas spesifik. Yuk, kita bahas apa bedanya dan kenapa kalian wajib banget pakai dua hal ini! 🚀\u003C/p>\n\u003Ch2 id=\"kenapa-harus-pakai-fungsi-dan-prosedur\">Kenapa Harus Pakai Fungsi dan Prosedur?\u003C/h2>\n\u003Cp>Ada banyak banget keuntungan yang bisa kalian dapet. Pertama, jelas bikin \u003Cem>debugging\u003C/em> jauh lebih gampang. Kalau ada \u003Cem>error\u003C/em> di fitur tertentu, kalian cuma perlu ngecek blok kode fungsi atau prosedur yang berkaitan, \u003Cem>nggak\u003C/em> perlu ngubek-ubek seluruh program.\u003C/p>\n\u003Cp>Kedua, ada \u003Cem>reusability\u003C/em>. Maksudnya, kode yang udah kalian tulis bisa dipanggil berulang kali di berbagai bagian program. Ini bikin kalian terhindar dari nulis kode yang sama persis berkali-kali (konsep \u003Cem>Don&#39;t Repeat Yourself\u003C/em> atau DRY).\u003C/p>\n\u003Cp>Ketiga, kode kalian bakal kelihatan jauh lebih profesional dan punya \u003Cem>readability\u003C/em> yang tinggi. Orang lain atau bahkan kalian di masa depan bakal lebih gampang paham alur programnya.\u003C/p>\n\u003Ch2 id=\"mengenal-prosedur\">Mengenal Prosedur\u003C/h2>\n\u003Cp>Prosedur itu intinya adalah sekumpulan instruksi buat ngelakuin aksi tertentu. Karakteristik paling utamanya adalah dia \u003Cstrong>tidak mengembalikan nilai\u003C/strong> (\u003Cem>no return value\u003C/em>) ke program utama.\u003C/p>\n\u003Cp>Jadi prosedur tuh cuma dikasih tugas, dikerjain sampai selesai, terus udah. \u003Cem>Nggak\u003C/em> ada hasil perhitungan yang disetor balik ke pemanggilnya. Biasanya di bahasa pemrograman modern kayak C atau C++, prosedur ini sering ditulis pakai \u003Cem>keyword\u003C/em> \u003Ccode>void\u003C/code>.\u003C/p>\n\u003Ch2 id=\"mengenal-fungsi\">Mengenal Fungsi\u003C/h2>\n\u003Cp>Kalau fungsi, sifatnya agak beda sedikit. Fungsi adalah blok kode yang bertugas memproses data dan di akhir prosesnya dia \u003Cstrong>mengembalikan sebuah nilai\u003C/strong> (\u003Cem>return value\u003C/em>).\u003C/p>\n\u003Cp>Nilai hasil perhitungan dari fungsi ini nantinya bakal dilempar balik ke program utamanya. Hasil kembalian ini biasanya ditampung dulu ke dalam sebuah variabel buat dipakai ke proses selanjutnya.\u003C/p>\n\u003Ch2 id=\"beda-fungsi-vs-prosedur\">Beda Fungsi vs Prosedur\u003C/h2>\n\u003Cp>Sebenernya beda paling mendasar cuma ada di \u003Cem>return value\u003C/em> aja. Prosedur cuma ngejalanin aksi tanpa pamrih, alias \u003Cem>nggak\u003C/em> ngasih kembalian apa-apa. Sementara fungsi, habis ngolah data, dia bakal ngasih \u003Cem>output\u003C/em> berupa nilai pasti.\u003C/p>\n\u003Cp>Secara pemakaian juga beda. Prosedur biasanya dipanggil langsung sebagai satu instruksi utuh yang mandiri. Kalau fungsi, pemanggilannya sering diselipin ke dalam sebuah ekspresi atau operasi \u003Cem>assignment\u003C/em> (pengisian nilai ke variabel).\u003C/p>\n\u003Ch2 id=\"kapan-pakai-fungsi-kapan-pakai-prosedur\">Kapan Pakai Fungsi, Kapan Pakai Prosedur?\u003C/h2>\n\u003Cp>Buat mutusin mana yang harus dipakai, balik lagi ke kebutuhan kalian. Pakai prosedur kalau kalian cuma butuh ngejalanin aksi aja. Misalnya buat nyetak teks ke layar, nyimpen data ke \u003Cem>database\u003C/em>, atau ngubah nilai variabel \u003Cem>global\u003C/em>.\u003C/p>\n\u003Cp>Tapi, kalau kalian butuh ngelakuin kalkulasi matematika, pengolahan teks, atau konversi data yang hasil akhirnya bakal dipakai lagi sama program utama, nah itu saatnya kalian pakai fungsi. Gampang dipahami, kan? ✨\u003C/p>\n","\u003Cul>\n\u003Cli>Fungsi selalu mengembalikan nilai (return value) ke pemanggilnya.\u003C/li>\n\u003Cli>Prosedur hanya menjalankan tugas spesifik tanpa mengembalikan nilai.\u003C/li>\n\u003Cli>Membantu membuat kode jadi lebih modular, gampang di-debug, dan tidak berulang (DRY).\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,172],{"text":160,"depth":161,"id":162},"Kenapa Harus Pakai Fungsi dan Prosedur?",2,"kenapa-harus-pakai-fungsi-dan-prosedur",{"text":164,"depth":161,"id":165},"Mengenal Prosedur","mengenal-prosedur",{"text":167,"depth":161,"id":168},"Mengenal Fungsi","mengenal-fungsi",{"text":170,"depth":161,"id":171},"Beda Fungsi vs Prosedur","beda-fungsi-vs-prosedur",{"text":173,"depth":161,"id":174},"Kapan Pakai Fungsi, Kapan Pakai Prosedur?","kapan-pakai-fungsi-kapan-pakai-prosedur",1791045072220]