[{"data":1,"prerenderedAt":187},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-variable-dan-tipe-data-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":103,"renderedTakeaway":104,"latestArticles":105,"toc":157},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":55,"takeway":55,"body":56,"authors":57,"series":58},"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.","2026-06-14T16:51:40.710Z",{"id":49},"0a59bd7f-b7b1-47c9-a0b8-b3351057a6c7",[51,52,53,54],"basic","intro","variable","types",null,"Variabel itu ibarat “tokoh utama” di sebuah program. Nggak peduli bahasa pemrograman apa yang kalian pakai, pasti bakal ketemu sama konsep *variable*. Bisa dibilang, variabel itu inti dari pemrograman, soalnya dia yang bertanggung jawab buat nyimpen dan memanipulasi data.\n\n## Apa itu Variabel?\n\nKita coba intip Wikipedia dulu buat tahu definisi formalnya nih.\n\n> … variabel adalah lokasi penyimpanan dan terkait nama simbolis yang berisi beberapa kuantitas yang diketahui atau tidak diketahui atau informasi, nilai\n> [wikipedia](https://id.wikipedia.org/wiki/Variabel_(ilmu_komputer))\n\nNah, itu dia definisi formalnya. Agak ribet ya bacanya? Makanya, biar gampang, bayangin aja *variable* itu semacam **wadah** buat nyimpen **data** yang nantinya bisa kita pakai lagi di dalam program. Kalau diibaratkan di dunia nyata, variabel itu kayak botol minum, sedangkan datanya adalah air di dalamnya. Botol ini bisa kita isi air buat diminum kapan aja, dan bahkan kita bebas nambahin sirup atau gula buat ganti rasanya. Sama halnya dengan variabel, di mana kita bisa masukin data, ngeluarin, atau ngeganti isinya dengan data lain. Nggak cuma itu, variabel juga ngasih jalan buat kita buat memanipulasi data sesuai dengan *logic* yang kita mau.\n\n## Hal yang Bisa Dilakukan dengan Variabel\n\n### 1. Deklarasi variabel\n\nLangkah pertama yang harus kita lakukan adalah deklarasi, yaitu proses \"pembuatan\" variabel. Di tahap ini, kita ngenalin ke komputer kalau ada “wadah” baru yang udah siap dipakai buat nyimpen data. Walaupun cara deklarasinya beda-beda di setiap bahasa pemrograman, satu hal yang pasti adalah variabel **harus punya nama** yang jelas. Selain itu, ada aturan penamaannya juga lho, dan tiap bahasa punya *style* masing-masing yang perlu diikuti. Oleh karena itu, hal yang paling penting adalah nama variabel itu harus punya arti dan gampang dibaca supaya nggak bikin bingung nantinya. Contohnya, kalau kalian mau nyimpen data umur seseorang, kasih aja nama variabelnya `umur`, jangan dibikin asal-asalan.\n\n### 2. Memasukkan nilai (*Assignment*)\n\nSetelah wadahnya jadi, sekarang saatnya kita masukin isi ke dalamnya. Di dunia *programming*, proses ngisi nilai ke variabel ini sering disebut dengan *assignment*. Biasanya, kita pakai tanda sama dengan (`=`) buat ngelakuin proses ini. Secara penulisan, nama variabel ditaruh di sebelah kiri, sedangkan nilai yang mau dimasukin ditaruh di sebelah kanan. Aturannya mirip banget kan sama pelajaran matematika yang sering kita temui?\n\nContohnya gini:\n\n```python\nnama = \"Inva\"\nPI = 3.14\nr = 10\n```\n\nEits, tapi perlu diinget kalau nggak semua bahasa pakai tanda `=`. Ada juga bahasa yang pakai tanda `:=` kayak Pascal atau Go, jadi pastikan kalian cek dokumentasi bahasanya ya.\n\n### 3. Mengakses nilai\n\nSetelah wadahnya berhasil diisi, tentunya sekarang kita bisa ambil datanya dong. Buat ngakses nilai di dalam variabel, kita cuma perlu **manggil nama** variabel tersebut. Gampang banget, kan? Contoh nih, kalau kita mau ngakses variabel `nama` terus mencetaknya ke layar:\n\n```python\nnama = \"Inva\"\nprint(nama)\n```\n\nNantinya, kalau *code* itu dijalankan, bakal muncul *output* kayak gini:\n\n```\nInva\n```\n\n### 4. Operasi data\n\nYang terakhir tapi nggak kalah penting, kita bisa ngelakuin operasi data. Artinya, kita bisa ngasih perlakuan khusus ke data yang ada di dalam variabel tersebut. Misal, kalau kalian punya variabel yang isinya angka, kalian bebas ngelakuin penjumlahan, pengurangan, atau operasi aritmatika lainnya. Sebaliknya, kalau variabelnya berisi *string* (teks) kayak nama lengkap, kalian bisa mecah jadi nama depan dan belakang, atau sekadar ngubah hurufnya jadi kapital semua. \n\nTapi inget ya, variabel itu lumayan pemilih! Dia nggak mau sembarangan dioperasiin sama data yang beda jenis. Coba aja bayangin kalau kita jumlahin angka sama teks, misal `2 + 'semangka'`. Kira-kira hasilnya bakal jadi apa? Pasti kita aja bingung kan, apalagi komputernya! Hal aneh ini terjadi karena keduanya **nggak sejenis** alias punya **tipe data** yang beda, di mana yang satu berupa angka (`int`) dan satunya lagi berupa teks (`string`). Terus, **tipe data itu apa sih?**\n\n## Apa itu Tipe Data?\n\nSekali lagi, kita tanya Wikipedia dulu yuk buat definisi resminya.\n\n> … tipe data ialah klasifikasi data yang mengenalkan kompilator atau penerjemah bagaimana programmer bermaksud untuk menggunakan data.\n> [wikipedia](https://id.wikipedia.org/wiki/Tipe_data)\n\nKalau tadi variabel diibaratkan sebagai wadah, maka tipe data itu ibarat **bentuk dan material** dari wadah tersebut. Secara logika, tiap wadah pasti didesain pakai material yang beda-beda sesuai dengan apa yang mau disimpen di dalamnya. Misalnya aja, kita nyimpen air di botol, dan nyimpen baju di koper. Kan nggak mungkin kebalik jadi nyimpen air di koper? 😅 Nah, dengan adanya tipe data ini, kita secara otomatis ngasih tahu komputer kalau suatu variabel cuma bisa dipakai buat nyimpen *specific data type*.\n\n## Macam-macam Tipe Data\n\nUmumnya, bahasa pemrograman ngenal dua jenis tipe data utama, yaitu **tipe data standar** dan **tipe data bentukan**. Tipe data standar ini biasanya udah jadi bawaan dari bahasa pemrogramannya itu sendiri. Beberapa contoh yang paling sering dipakai adalah:\n\n- `integer`: Buat nyimpen angka bulat (contoh: `1`, `2`, `-90`).\n- `float`: Buat nyimpen angka desimal (contoh: `2.5`, `3.14`, `-2.71`).\n- `char`: Buat nyimpen satu karakter doang (contoh: `'a'`, `'$'`, `'?'`).\n- `string`: Buat nyimpen huruf atau teks panjang (contoh: `\"a\"`, `\"ikan\"`, `\"Halo kawan\"`).\n- `byte`: Buat nyimpen data mentah kayak gambar atau *file*.\n- `boolean`: Buat nyimpen nilai logika, cuma ada `true` dan `false`.\n\nTerus, kadang ada juga beberapa varian lain yang tergantung dari spesifikasi bahasanya, misal:\n\n- `long`: Kayak `integer`, tapi kapasitasnya jauh lebih gede.\n- `double`: Mirip `float`, tapi angka di belakang komanya bisa lebih banyak (*high precision*).\n- `uint` atau `unsigned integer`: Angka bulat yang khusus buat nilai positif aja.\n- `array` atau `list`: Buat nyimpen banyak nilai dalam satu variabel, asalkan tipenya sama.\n- `pointer`: Tipe data *advance* buat nyimpen alamat *memory* dari variabel lain.\n\nSelain tipe bawaan, ada juga yang namanya tipe data bentukan. Sesuai namanya, tipe data ini **dibuat sendiri** sama *programmer* buat kebutuhan yang lebih spesifik. Biasanya, tipe ini merupakan gabungan dari beberapa tipe data standar yang beda-beda.\n\n## Kesimpulan\n\nIntinya, variabel dan tipe data itu fundamental banget di dunia pemrograman. Variabel mempermudah kita nyimpen dan memanipulasi data di dalam program, sementara tipe data nentuin jenis data apa aja yang bisa masuk. Penggabungan dua konsep ini bakal ngebantu banget biar *code* kita tetap efisien dan nggak gampang *error*. Gimana, udah makin paham kan bedanya *variable* dan *data type*? Kalau ada yang masih bingung, yuk diskusi di kolom komentar! Selamat berkoding ria 👋",[],{"id":59,"title":15,"slug":16,"articles":60,"parent_series":97},"12",[61,70,76,79,88],{"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":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":77,"tags":78},{"id":49},[51,52,53,54],{"id":80,"title":81,"slug":82,"excerpt":83,"thumbnail_image":84,"tags":86},"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":85},"44de9a02-3223-4969-88df-907973544b04",[51,52,87],"conditions",{"id":89,"title":90,"slug":91,"excerpt":92,"thumbnail_image":93,"tags":95},"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":94},"aca2cb4a-803b-4fdc-85e8-c8ea2beaf441",[51,52,96],"functions",{"id":62,"title":8,"slug":9,"parent_series":55,"children_series":98},[99,101,102],{"id":100,"title":12,"slug":13,"cover_image":55},"15",{"id":80,"title":18,"slug":19,"cover_image":55},{"id":59,"title":15,"slug":16,"cover_image":55},"\u003Cp>Variabel itu ibarat “tokoh utama” di sebuah program. Nggak peduli bahasa pemrograman apa yang kalian pakai, pasti bakal ketemu sama konsep \u003Cem>variable\u003C/em>. Bisa dibilang, variabel itu inti dari pemrograman, soalnya dia yang bertanggung jawab buat nyimpen dan memanipulasi data.\u003C/p>\n\u003Ch2 id=\"apa-itu-variabel\">Apa itu Variabel?\u003C/h2>\n\u003Cp>Kita coba intip Wikipedia dulu buat tahu definisi formalnya nih.\u003C/p>\n\u003Cblockquote>\n\u003Cp>… variabel adalah lokasi penyimpanan dan terkait nama simbolis yang berisi beberapa kuantitas yang diketahui atau tidak diketahui atau informasi, nilai\n\u003Ca href=\"https://id.wikipedia.org/wiki/Variabel_(ilmu_komputer)\">wikipedia\u003C/a>\u003C/p>\n\u003C/blockquote>\n\u003Cp>Nah, itu dia definisi formalnya. Agak ribet ya bacanya? Makanya, biar gampang, bayangin aja \u003Cem>variable\u003C/em> itu semacam \u003Cstrong>wadah\u003C/strong> buat nyimpen \u003Cstrong>data\u003C/strong> yang nantinya bisa kita pakai lagi di dalam program. Kalau diibaratkan di dunia nyata, variabel itu kayak botol minum, sedangkan datanya adalah air di dalamnya. Botol ini bisa kita isi air buat diminum kapan aja, dan bahkan kita bebas nambahin sirup atau gula buat ganti rasanya. Sama halnya dengan variabel, di mana kita bisa masukin data, ngeluarin, atau ngeganti isinya dengan data lain. Nggak cuma itu, variabel juga ngasih jalan buat kita buat memanipulasi data sesuai dengan \u003Cem>logic\u003C/em> yang kita mau.\u003C/p>\n\u003Ch2 id=\"hal-yang-bisa-dilakukan-dengan-variabel\">Hal yang Bisa Dilakukan dengan Variabel\u003C/h2>\n\u003Ch3 id=\"1-deklarasi-variabel\">1. Deklarasi variabel\u003C/h3>\n\u003Cp>Langkah pertama yang harus kita lakukan adalah deklarasi, yaitu proses &quot;pembuatan&quot; variabel. Di tahap ini, kita ngenalin ke komputer kalau ada “wadah” baru yang udah siap dipakai buat nyimpen data. Walaupun cara deklarasinya beda-beda di setiap bahasa pemrograman, satu hal yang pasti adalah variabel \u003Cstrong>harus punya nama\u003C/strong> yang jelas. Selain itu, ada aturan penamaannya juga lho, dan tiap bahasa punya \u003Cem>style\u003C/em> masing-masing yang perlu diikuti. Oleh karena itu, hal yang paling penting adalah nama variabel itu harus punya arti dan gampang dibaca supaya nggak bikin bingung nantinya. Contohnya, kalau kalian mau nyimpen data umur seseorang, kasih aja nama variabelnya \u003Ccode>umur\u003C/code>, jangan dibikin asal-asalan.\u003C/p>\n\u003Ch3 id=\"2-memasukkan-nilai-assignment\">2. Memasukkan nilai (\u003Cem>Assignment\u003C/em>)\u003C/h3>\n\u003Cp>Setelah wadahnya jadi, sekarang saatnya kita masukin isi ke dalamnya. Di dunia \u003Cem>programming\u003C/em>, proses ngisi nilai ke variabel ini sering disebut dengan \u003Cem>assignment\u003C/em>. Biasanya, kita pakai tanda sama dengan (\u003Ccode>=\u003C/code>) buat ngelakuin proses ini. Secara penulisan, nama variabel ditaruh di sebelah kiri, sedangkan nilai yang mau dimasukin ditaruh di sebelah kanan. Aturannya mirip banget kan sama pelajaran matematika yang sering kita temui?\u003C/p>\n\u003Cp>Contohnya gini:\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\">PYTHON\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=\"nama%20%3D%20%22Inva%22%0API%20%3D%203.14%0Ar%20%3D%2010\" 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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Inva\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">PI\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 3.14\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">r \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 10\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Eits, tapi perlu diinget kalau nggak semua bahasa pakai tanda \u003Ccode>=\u003C/code>. Ada juga bahasa yang pakai tanda \u003Ccode>:=\u003C/code> kayak Pascal atau Go, jadi pastikan kalian cek dokumentasi bahasanya ya.\u003C/p>\n\u003Ch3 id=\"3-mengakses-nilai\">3. Mengakses nilai\u003C/h3>\n\u003Cp>Setelah wadahnya berhasil diisi, tentunya sekarang kita bisa ambil datanya dong. Buat ngakses nilai di dalam variabel, kita cuma perlu \u003Cstrong>manggil nama\u003C/strong> variabel tersebut. Gampang banget, kan? Contoh nih, kalau kita mau ngakses variabel \u003Ccode>nama\u003C/code> terus mencetaknya ke layar:\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\">PYTHON\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=\"nama%20%3D%20%22Inva%22%0Aprint(nama)\" 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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Inva\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(nama)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Nantinya, kalau \u003Cem>code\u003C/em> itu dijalankan, bakal muncul \u003Cem>output\u003C/em> kayak gini:\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=\"Inva\" 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>Inva\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch3 id=\"4-operasi-data\">4. Operasi data\u003C/h3>\n\u003Cp>Yang terakhir tapi nggak kalah penting, kita bisa ngelakuin operasi data. Artinya, kita bisa ngasih perlakuan khusus ke data yang ada di dalam variabel tersebut. Misal, kalau kalian punya variabel yang isinya angka, kalian bebas ngelakuin penjumlahan, pengurangan, atau operasi aritmatika lainnya. Sebaliknya, kalau variabelnya berisi \u003Cem>string\u003C/em> (teks) kayak nama lengkap, kalian bisa mecah jadi nama depan dan belakang, atau sekadar ngubah hurufnya jadi kapital semua. \u003C/p>\n\u003Cp>Tapi inget ya, variabel itu lumayan pemilih! Dia nggak mau sembarangan dioperasiin sama data yang beda jenis. Coba aja bayangin kalau kita jumlahin angka sama teks, misal \u003Ccode>2 + &#39;semangka&#39;\u003C/code>. Kira-kira hasilnya bakal jadi apa? Pasti kita aja bingung kan, apalagi komputernya! Hal aneh ini terjadi karena keduanya \u003Cstrong>nggak sejenis\u003C/strong> alias punya \u003Cstrong>tipe data\u003C/strong> yang beda, di mana yang satu berupa angka (\u003Ccode>int\u003C/code>) dan satunya lagi berupa teks (\u003Ccode>string\u003C/code>). Terus, \u003Cstrong>tipe data itu apa sih?\u003C/strong>\u003C/p>\n\u003Ch2 id=\"apa-itu-tipe-data\">Apa itu Tipe Data?\u003C/h2>\n\u003Cp>Sekali lagi, kita tanya Wikipedia dulu yuk buat definisi resminya.\u003C/p>\n\u003Cblockquote>\n\u003Cp>… tipe data ialah klasifikasi data yang mengenalkan kompilator atau penerjemah bagaimana programmer bermaksud untuk menggunakan data.\n\u003Ca href=\"https://id.wikipedia.org/wiki/Tipe_data\">wikipedia\u003C/a>\u003C/p>\n\u003C/blockquote>\n\u003Cp>Kalau tadi variabel diibaratkan sebagai wadah, maka tipe data itu ibarat \u003Cstrong>bentuk dan material\u003C/strong> dari wadah tersebut. Secara logika, tiap wadah pasti didesain pakai material yang beda-beda sesuai dengan apa yang mau disimpen di dalamnya. Misalnya aja, kita nyimpen air di botol, dan nyimpen baju di koper. Kan nggak mungkin kebalik jadi nyimpen air di koper? 😅 Nah, dengan adanya tipe data ini, kita secara otomatis ngasih tahu komputer kalau suatu variabel cuma bisa dipakai buat nyimpen \u003Cem>specific data type\u003C/em>.\u003C/p>\n\u003Ch2 id=\"macam-macam-tipe-data\">Macam-macam Tipe Data\u003C/h2>\n\u003Cp>Umumnya, bahasa pemrograman ngenal dua jenis tipe data utama, yaitu \u003Cstrong>tipe data standar\u003C/strong> dan \u003Cstrong>tipe data bentukan\u003C/strong>. Tipe data standar ini biasanya udah jadi bawaan dari bahasa pemrogramannya itu sendiri. Beberapa contoh yang paling sering dipakai adalah:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>integer\u003C/code>: Buat nyimpen angka bulat (contoh: \u003Ccode>1\u003C/code>, \u003Ccode>2\u003C/code>, \u003Ccode>-90\u003C/code>).\u003C/li>\n\u003Cli>\u003Ccode>float\u003C/code>: Buat nyimpen angka desimal (contoh: \u003Ccode>2.5\u003C/code>, \u003Ccode>3.14\u003C/code>, \u003Ccode>-2.71\u003C/code>).\u003C/li>\n\u003Cli>\u003Ccode>char\u003C/code>: Buat nyimpen satu karakter doang (contoh: \u003Ccode>&#39;a&#39;\u003C/code>, \u003Ccode>&#39;$&#39;\u003C/code>, \u003Ccode>&#39;?&#39;\u003C/code>).\u003C/li>\n\u003Cli>\u003Ccode>string\u003C/code>: Buat nyimpen huruf atau teks panjang (contoh: \u003Ccode>&quot;a&quot;\u003C/code>, \u003Ccode>&quot;ikan&quot;\u003C/code>, \u003Ccode>&quot;Halo kawan&quot;\u003C/code>).\u003C/li>\n\u003Cli>\u003Ccode>byte\u003C/code>: Buat nyimpen data mentah kayak gambar atau \u003Cem>file\u003C/em>.\u003C/li>\n\u003Cli>\u003Ccode>boolean\u003C/code>: Buat nyimpen nilai logika, cuma ada \u003Ccode>true\u003C/code> dan \u003Ccode>false\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>Terus, kadang ada juga beberapa varian lain yang tergantung dari spesifikasi bahasanya, misal:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>long\u003C/code>: Kayak \u003Ccode>integer\u003C/code>, tapi kapasitasnya jauh lebih gede.\u003C/li>\n\u003Cli>\u003Ccode>double\u003C/code>: Mirip \u003Ccode>float\u003C/code>, tapi angka di belakang komanya bisa lebih banyak (\u003Cem>high precision\u003C/em>).\u003C/li>\n\u003Cli>\u003Ccode>uint\u003C/code> atau \u003Ccode>unsigned integer\u003C/code>: Angka bulat yang khusus buat nilai positif aja.\u003C/li>\n\u003Cli>\u003Ccode>array\u003C/code> atau \u003Ccode>list\u003C/code>: Buat nyimpen banyak nilai dalam satu variabel, asalkan tipenya sama.\u003C/li>\n\u003Cli>\u003Ccode>pointer\u003C/code>: Tipe data \u003Cem>advance\u003C/em> buat nyimpen alamat \u003Cem>memory\u003C/em> dari variabel lain.\u003C/li>\n\u003C/ul>\n\u003Cp>Selain tipe bawaan, ada juga yang namanya tipe data bentukan. Sesuai namanya, tipe data ini \u003Cstrong>dibuat sendiri\u003C/strong> sama \u003Cem>programmer\u003C/em> buat kebutuhan yang lebih spesifik. Biasanya, tipe ini merupakan gabungan dari beberapa tipe data standar yang beda-beda.\u003C/p>\n\u003Ch2 id=\"kesimpulan\">Kesimpulan\u003C/h2>\n\u003Cp>Intinya, variabel dan tipe data itu fundamental banget di dunia pemrograman. Variabel mempermudah kita nyimpen dan memanipulasi data di dalam program, sementara tipe data nentuin jenis data apa aja yang bisa masuk. Penggabungan dua konsep ini bakal ngebantu banget biar \u003Cem>code\u003C/em> kita tetap efisien dan nggak gampang \u003Cem>error\u003C/em>. Gimana, udah makin paham kan bedanya \u003Cem>variable\u003C/em> dan \u003Cem>data type\u003C/em>? Kalau ada yang masih bingung, yuk diskusi di kolom komentar! Selamat berkoding ria 👋\u003C/p>\n","",[106,119,134,146],{"id":107,"title":108,"slug":109,"excerpt":110,"thumbnail_image":111,"tags":113},"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":112},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[114,115,116,117,118],"system-programming","rust","zig","c","memory-safety",{"id":120,"title":121,"slug":122,"excerpt":123,"thumbnail_image":124,"tags":126},"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":125},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[127,128,129,130,131,132,133],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":135,"title":136,"slug":137,"excerpt":138,"thumbnail_image":139,"tags":141},"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":140},"e3c617fd-1486-4b82-b937-94fbec846c77",[127,142,132,143,144,128,145],"microservices","database","message-broker","postgresql",{"id":147,"title":148,"slug":149,"excerpt":150,"thumbnail_image":151,"tags":153},"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":152},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[154,144,127,132,142,155,156],"rabbitmq","async","python",[158,162,165,169,172,175,178,181,184],{"text":159,"depth":160,"id":161},"Apa itu Variabel?",2,"apa-itu-variabel",{"text":163,"depth":160,"id":164},"Hal yang Bisa Dilakukan dengan Variabel","hal-yang-bisa-dilakukan-dengan-variabel",{"text":166,"depth":167,"id":168},"1. Deklarasi variabel",3,"1-deklarasi-variabel",{"text":170,"depth":167,"id":171},"2. Memasukkan nilai (Assignment)","2-memasukkan-nilai-assignment",{"text":173,"depth":167,"id":174},"3. Mengakses nilai","3-mengakses-nilai",{"text":176,"depth":167,"id":177},"4. Operasi data","4-operasi-data",{"text":179,"depth":160,"id":180},"Apa itu Tipe Data?","apa-itu-tipe-data",{"text":182,"depth":160,"id":183},"Macam-macam Tipe Data","macam-macam-tipe-data",{"text":185,"depth":160,"id":186},"Kesimpulan","kesimpulan",1791045071775]