[{"data":1,"prerenderedAt":294},["ShallowReactive",2],{"tag-labels":3,"site-header":4,"article-konsep-dasar-pemrograman-id":72},{},{"featuredPost":5,"navigations":29},{"id":6,"title":7,"title_en":8,"slug":9,"excerpt":10,"excerpt_en":11,"has_translation":12,"published_at":13,"reading_time":14,"hidden_from_listing":15,"tags":16,"thumbnail_image":21,"og_image":22,"series":23,"authors":28},110,"Ketika Pilih Framework Cuma Biar Kelihatan Beda","When You Pick a Framework Just to Look Different","ketika-pilih-framework-cuma-biar-kelihatan-beda","Terakhir kali kamu milih framework atau library baru, itu karena masalahmu butuh alat itu, atau karena alatnya kedengaran keren dan belum banyak yang pakai? Pertanyaan ini nggak enak dijawab. Soalnya keputusan teknologi sering diambil dengan alasan yang nggak pernah ditulis di dokumen teknis mana pun.","The last time you chose a new framework or library, was it because your problem needed that tool, or because it sounded cool and few people around you were using it? That question is uncomfortable. Technology decisions are often made for reasons that never appear in any technical document.",true,"2026-10-06T15:25:21.000Z",5,false,[17,18,19,20],"karier","framework","opini","pengalaman",null,"\u002Fog\u002Fketika-pilih-framework-cuma-biar-kelihatan-beda.png",{"id":24,"title":25,"title_en":26,"slug":27},9,"Artikel","Articles","all",[],[30,46,67],{"collection":31,"item":32},"series",{"__typename":31,"title":25,"title_en":26,"slug":27,"children_series":33},[34,38,42],{"title":35,"title_en":36,"slug":37},"Kecerdasan Artifisial","Artificial Intelligence","kecerdasan-artifisial",{"title":39,"title_en":40,"slug":41},"Konsep Dasar Pemrograman","Programming Fundamentals","konsep-dasar-pemrograman",{"title":43,"title_en":44,"slug":45},"Algoritma dan Struktur Data","Algorithms and Data Structures","algoritma-struktur-data",{"collection":31,"item":47},{"__typename":31,"title":48,"title_en":48,"slug":49,"children_series":50},"Tutorial","tutorial",[51,55,59,63],{"title":52,"title_en":53,"slug":54},"Belajar Python","Learning Python","belajar-python",{"title":56,"title_en":57,"slug":58},"Belajar Golang","Learning Go","belajar-golang",{"title":60,"title_en":61,"slug":62},"Belajar Java","Learning Java","belajar-java",{"title":64,"title_en":65,"slug":66},"Belajar Pascal","Learning Pascal","belajar-pascal",{"collection":31,"item":68},{"__typename":31,"title":69,"title_en":69,"slug":70,"children_series":71},"Lab","lab",[],{"article":73,"renderedBody":180,"renderedTakeaway":181,"latestArticles":182,"toc":279},{"id":74,"title":39,"title_en":75,"slug":41,"excerpt":76,"excerpt_en":77,"has_translation":12,"published_at":78,"reading_time":79,"hidden_from_listing":15,"tags":80,"thumbnail_image":21,"og_image":83,"series":84,"authors":174,"body_locale":175,"available_locales":176,"body":178,"takeway":179,"prerequisite":21},6,"Programming Fundamentals: Four Concepts Behind Every Program","Inti dari pemrograman adalah memberi instruksi alias menyuruh komputer untuk melakukan sesuatu yang kita inginkan.","The core of programming is giving instructions: telling the computer to do what you want it to do, in a language that has rules of its own.","2026-06-14T16:51:40.694Z",7,[81,82],"intro","basic","\u002Fog\u002Fkonsep-dasar-pemrograman.png",{"id":85,"title":39,"title_en":40,"slug":41,"description":86,"description_en":87,"articles":88,"children_series":167,"parent_series":168},12,"Mengenal konsep dasar pemrograman. Pada seri ini kita akan membahas tentang bagaimana cara berkutat dengan variabel, mengatur alur program dengan struktur kontrol, me-reuse kode dengan fungsi, dan aturan sintaks pada bahasa pemrograman. Konsep-konsep ini pastinya akan sangat berguna ketika kita mulai mengkoding ceria.","The concepts every language shares: variables, control flow, functions, and syntax. Learn them once and the next language is mostly vocabulary.",[89,92,105,119,131,145],{"id":74,"title":39,"title_en":75,"slug":41,"excerpt":76,"excerpt_en":77,"has_translation":12,"published_at":78,"reading_time":79,"hidden_from_listing":15,"tags":80,"thumbnail_image":21,"og_image":83,"series":90,"authors":91},{"id":85,"title":39,"title_en":40,"slug":41},[],{"id":79,"title":93,"title_en":94,"slug":95,"excerpt":96,"excerpt_en":97,"has_translation":12,"published_at":98,"reading_time":14,"hidden_from_listing":15,"tags":99,"thumbnail_image":21,"og_image":102,"series":103,"authors":104},"Konsep Variabel dan Tipe Data pada Pemrograman","Variables and Data Types in Programming","variable-dan-tipe-data","Variabel itu ibarat “tokoh utama” di sebuah program. Nggak peduli bahasa pemrograman apapun, pasti semua punya konsep variabel.","A variable is the main character of a program, and every language has one. The type is what decides which data fits inside.","2026-06-14T16:51:40.710Z",[82,81,100,101],"variable","types","\u002Fog\u002Fvariable-dan-tipe-data.png",{"id":85,"title":39,"title_en":40,"slug":41},[],{"id":106,"title":107,"title_en":108,"slug":109,"excerpt":110,"excerpt_en":111,"has_translation":12,"published_at":112,"reading_time":113,"hidden_from_listing":15,"tags":114,"thumbnail_image":21,"og_image":116,"series":117,"authors":118},8,"Struktur Kontrol Kondisi (If-Else dan Switch-Case), Apa Bedanya?","If-Else vs Switch-Case: What's the Real Difference?","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!","Not sure when to reach for if-else and when switch-case earns its place? Here is why switch-case sometimes runs faster.","2026-06-14T17:23:03.446Z",2,[82,81,115],"conditions","\u002Fog\u002Fstruktur-kontrol-kondisi.png",{"id":85,"title":39,"title_en":40,"slug":41},[],{"id":24,"title":120,"title_en":121,"slug":122,"excerpt":123,"excerpt_en":124,"has_translation":12,"published_at":125,"reading_time":113,"hidden_from_listing":15,"tags":126,"thumbnail_image":21,"og_image":128,"series":129,"authors":130},"Struktur Kontrol Perulangan (For, While, Do-While), Kapan Harus Dipakai?","Loop Control Structures: When to Use For, While, and Do-While","struktur-kontrol-perulangan","Pernah ngerasa capek nulis baris kode yang sama berulang kali? Gimana caranya nyuruh komputer buat ngerjain itu secara otomatis?","Tired of writing the same lines of code over and over? Here is how you make the computer repeat the work for you, and which loop to pick.","2026-06-14T17:23:03.479Z",[82,81,127],"looping","\u002Fog\u002Fstruktur-kontrol-perulangan.png",{"id":85,"title":39,"title_en":40,"slug":41},[],{"id":132,"title":133,"title_en":134,"slug":135,"excerpt":136,"excerpt_en":137,"has_translation":12,"published_at":138,"reading_time":139,"hidden_from_listing":15,"tags":140,"thumbnail_image":21,"og_image":142,"series":143,"authors":144},10,"Fungsi dan Prosedur dalam Pemrograman, Apa Bedanya?","Functions vs Procedures: What's the Difference?","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!","Ever wondered when to reach for a function and when a procedure does the job while coding? Here is the split that keeps your code tidy.","2026-06-14T17:23:03.636Z",3,[82,81,141],"functions","\u002Fog\u002Ffungsi-dan-prosedur.png",{"id":85,"title":39,"title_en":40,"slug":41},[],{"id":146,"title":147,"title_en":148,"slug":149,"excerpt":150,"excerpt_en":151,"has_translation":12,"published_at":152,"reading_time":14,"hidden_from_listing":15,"tags":153,"thumbnail_image":21,"og_image":158,"series":159,"authors":160},119,"Aturan Sintaks: Satu Titik Koma Bikin Program Nggak Jalan","Syntax Rules: One Missing Semicolon Stops the Program","aturan-sintaks-pemrograman","Baru nulis beberapa baris, programnya udah nolak jalan? Seringnya bukan logikanya yang salah, cuma satu karakter yang kurang atau salah tempat.","You wrote a few lines and the program already refuses to run? Most of the time the logic is fine, and one character is missing or in the wrong place.","2026-10-11T23:00:15.000Z",[154,155,156,157],"syntax","dasar","konsep","python","\u002Fog\u002Faturan-sintaks-pemrograman.png",{"id":85,"title":39,"title_en":40,"slug":41},[161],{"authors_id":162},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},1,"Daffa Izzuddin","izzudd","Writer",[],{"id":24,"title":25,"title_en":26,"slug":27,"parent_series":21,"children_series":169},[170,171,172],{"id":106,"title":35,"title_en":36,"slug":37,"cover_image":21},{"id":85,"title":39,"title_en":40,"slug":41,"cover_image":21},{"id":173,"title":43,"title_en":44,"slug":45,"cover_image":21},15,[],"id",[177,175],"en","\nBelajar pemrograman tuh nggak sesulit yang kalian bayangin, lho. Nggak seberat belajar bahasa asing yang harus ngafal banyak *vocab*, dan pastinya nggak sesusah matematika yang isinya ngitung melulu. Pada dasarnya, inti dari pemrograman itu sebenarnya simpel banget karena kalian cuma butuh ngasih instruksi alias nyuruh komputer buat ngelakuin sesuatu yang kalian mau. Selama instruksi yang kita kasih jelas, komputer pasti bisa ngerjainnya dengan baik tanpa banyak protes.\n\nNah, pertanyaannya sekarang, gimana sih cara ngasih instruksinya? Tentu saja, kita bisa ngasih instruksi ke komputer dengan cara bikin program. Program ini sebenernya nggak lebih dari sekumpulan instruksi yang ditulis pake *programming language* atau bahasa pemrograman. Sama kayak bahasa manusia pada umumnya, bahasa komputer juga punya aturan mainnya sendiri. Oleh karena itu, ada beberapa konsep dasar yang harus kita pahamin buat nulis program yang bener.\n\nKonsep-konsep dasar tersebut antara lain:\n\n- *Variable* dan *data type*\n- *Control structure*\n- *Function* atau sub program\n- *Syntax*\n\nYuk, kita bahas satu-satu secara singkat biar kalian makin paham. Buat pembahasan yang lebih detailnya, nanti bakal dikupas tuntas di artikel yang terpisah ya.\n\nPembahasan lengkap tiap konsep ada di artikelnya masing-masing, dan tautannya bisa kalian temukan di tiap bagian di bawah ini.\n\n## Variabel dan Tipe Data\n\n*Variable* tuh ibarat \"tokoh utama\" di sebuah program. Menariknya, hampir semua bahasa pemrograman pasti punya konsep yang satu ini. Kalau kalian bingung apa sih *variable* itu, menurut definisi, *variable* adalah tempat nyimpen data yang dikasih nama simbolis tertentu. Gampangnya, *variable* itu cuma sebuah wadah buat nyimpen data supaya nantinya data tersebut bisa kita pake lagi pas dibutuhin.\n\nDi dunia *programming*, setiap data pasti punya bentuknya masing-masing. Karena bentuknya beda-beda, setiap bentuk itu juga butuh jenis wadah yang beda-beda pula. Nah, bentuk dari data inilah yang biasa kita sebut dengan *data type* (tipe data). Sebagian besar bahasa pemrograman punya tipe data standar yang mirip-mirip dan udah ada dari sananya (*default*).\n\nBeberapa contoh tipe data standar yang sering dipake:\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- `string`: Buat nyimpen huruf atau kata (contoh: \"a\", \"ikan\", \"Inva si kode\")\n- `byte`: Buat nyimpen data mentah kayak gambar dan teks\n- `boolean`: Buat nyimpen data logika (`true` atau `false`)\n- `array`: Buat nyimpen sekumpulan *variable* dengan tipe yang sama\n\nSelain tipe data standar tersebut, beberapa bahasa juga ngasih kebebasan buat bikin tipe data sendiri sesuai kebutuhan. Fitur ini biasanya disebut dengan istilah *custom data type* atau tipe data bentukan.\n\nKalau mau lebih dalam soal cara deklarasi, pengisian nilai, sampai macam-macam tipe datanya, ada di [Konsep Variabel dan Tipe Data pada Pemrograman](\u002Fp\u002Fvariable-dan-tipe-data).\n\n## Struktur Kontrol: Percabangan\n\nSelanjutnya ada percabangan atau *branching*. Percabangan ini merupakan bagian penting dari *control structure* yang fungsinya buat ngambil keputusan. Keputusan ini selalu didasarin sama yang namanya *boolean condition*. Dalam percabangan sendiri, ada dua hal pokok yang nggak bisa dipisahin, yaitu kondisi dan keputusan itu sendiri.\n\nKalo di dunia nyata, contohnya kira-kira kayak gini:\n\n```text\njika (hari ini hujan) maka (aku akan tidur saja)\n      └─ kondisi            └─ keputusan\n```\n\nPake percabangan, kita pada dasarnya ngasih tau komputer buat jalanin perintah tertentu kalau syaratnya terpenuhi. Syarat inilah yang kita sebut sebagai *boolean condition*. Lalu, apaan tuh *boolean condition*? Seperti yang udah sempet disinggung sebelumnya, `boolean` itu adalah salah satu tipe data. Tipe ini terbilang spesial banget karena cuma punya dua nilai mutlak, yaitu `true` (benar) dan `false` (salah).\n\nBuat dapet kondisi boolean, kita butuh yang namanya *boolean expression*. Walaupun istilahnya kedengeran rumit, 😅 sebenernya *boolean expression* itu cuma operasi perbandingan kayak \"lebih dari\", \"kurang dari\", sama \"sama dengan\". Atau selain itu, bisa juga berupa operasi logika kayak `AND`, `OR`, dan `NOT`.\n\nBiasanya, simbol yang dipake di bahasa pemrograman tuh kayak gini:\n\n- `>`: lebih dari\n- `\u003C`: kurang dari\n- `>=`: lebih dari atau sama dengan\n- `\u003C=`: kurang dari atau sama dengan\n- `==`: sama dengan\n- `!=`: tidak sama dengan\n- `&&` atau `and`: logika AND\n- `||` atau `or`: logika OR\n- `!` atau `not`: logika NOT\n\nUmumnya, percabangan ditandai pake kata kunci `if`, terus diikutin perintah yang bakal dijalanin kalau kondisinya memang `true`. Sebagai gambaran, coba perhatiin contoh percabangan pake *Python* berikut ini:\n\n```python\nif (nilai >= 94):\n  print(\"bagus sekali\")\n```\n\nGampang dibaca kan kodenya? Kalian nggak harus jadi *programmer* pro kok buat sekadar paham maksud dari baris kode tersebut.\n\nBentuk lengkapnya, termasuk kapan `if-else` lebih pas dipakai daripada `switch-case`, ada di [Struktur Kontrol Kondisi](\u002Fp\u002Fstruktur-kontrol-kondisi).\n\n## Struktur Kontrol: Perulangan\n\nKonsep berikutnya yang nggak kalah penting adalah perulangan atau *looping*. Sama kayak percabangan, perulangan ini juga masuk ke dalam kategori *control structure*. Sesuai dengan namanya, fungsinya adalah buat ngulang-ngulang suatu perintah selama kondisinya masih terpenuhi. Seringkali, kita butuh ngelakuin hal yang repetitif alias berulang-ulang pas lagi bikin program.\n\nMisalnya nih, kalian diminta untuk nyetak angka 1 sampai 5. Memang sih, nulis kodenya bisa diketik manual satu-satu kayak gini:\n\n```python\nprint(1)\nprint(2)\nprint(3)\nprint(4)\nprint(5)\n```\n\nKalo cuma 5 angka doang sih jelas nggak masalah buat diketik. Tapi coba bayangin deh kalo harus nyetak sampe 1000 angka, bisa keriting tuh jari! Oleh karena itu, dengan pake perulangan, kita nggak perlu repot nulis kode yang panjang-panjang. Komputer bakal ngerjain tugas yang berulang-ulang tersebut dengan gampang dan super cepat.\n\nBiasanya perulangan ditandai pake kata kunci `for` atau `while`. Coba liat contoh perulangan `for` di *Python* berikut ini buat nyetak angka 1 sampe 999:\n\n```python\nfor number in range(1, 1000):\n  print(number)\n```\n\nTuh kan, jauh lebih simpel dan pastinya lebih gampang dibaca.\n\nTiga jenis perulangan yang beda dan kapan masing-masing dipakai ada di [Struktur Kontrol Perulangan](\u002Fp\u002Fstruktur-kontrol-perulangan).\n\n## Fungsi atau Sub Program\n\nLanjut lagi, ada yang namanya fungsi atau sub program. Fungsi ini merupakan cara paling ampuh buat mecah masalah yang tadinya gede jadi bagian yang kecil-kecil, biar masalahnya lebih gampang diselesain. Di samping itu, fungsi juga bikin kode yang kita tulis bisa dipake berulang kali di berbagai tempat, jadi *code* kalian bakal lebih rapi dan efisien.\n\nKalian mungkin pernah denger istilah fungsi pas lagi belajar di pelajaran matematika. Contohnya kira-kira kayak gini nih:\n$$\nf(x)=x^2+x+1\n$$\nNah, menariknya, di *programming* juga konsepnya ternyata mirip banget! Bedanya cuma satu, nilai yang dimasukin ke dalam fungsi pemrograman nggak melulu cuma angka, tapi bisa tipe data apa aja yang udah kita bahas panjang lebar tadi.\n\nKalo di *Python*, fungsi matematika di atas tadi bisa ditulis jadi bentuk kayak gini:\n\n```python\ndef f(x):\n  return x*x + x + 1\n```\n\n*Variable* yang ada di dalem kurung fungsi tersebut (kayak huruf `x` tadi) sering disebut dengan istilah *parameter*. Dalam praktiknya, sebuah fungsi nggak cuma bisa nerima satu parameter aja. Fungsi bisa menerima banyak parameter, atau bahkan malah nggak butuh parameter sama sekali.\n\nCoba perhatiin contoh lainnya:\n\n```python\ndef nama_lengkap(nama_depan, nama_belakang):\n  return nama_depan + \" \" + nama_belakang\n```\n\nItu adalah contoh sederhana dari sebuah fungsi dengan dua parameter yang bertugas buat gabungin nama depan dan nama belakang jadi satu nama lengkap. Praktis banget kan penggunaannya?\n\nBeda fungsi dan prosedur, lengkap dengan contoh pemakaiannya, ada di [Fungsi dan Prosedur dalam Pemrograman](\u002Fp\u002Ffungsi-dan-prosedur).\n\n## Sintaks\n\nTerakhir nih, kita bakal bahas tentang sintaks atau *syntax*. Kalau konsep-konsep sebelumnya tuh secara umum selalu ada di semua bahasa pemrograman, urusan sintaks ini jelas beda cerita. Sama halnya dalam bahasa sehari-hari, sintaks itu ibarat aturan tata bahasa. Karena tiap bahasa manusia pasti beda-beda tata bahasanya, otomatis tiap bahasa pemrograman pun punya aturan sintaks yang unik.\n\nWalaupun begitu, kadang ada juga beberapa bahasa yang punya aturan mirip-mirip. Contohnya kayak `c` dan `c++` yang kalau diibaratkan tuh mirip banget kayak Bahasa Indonesia dan Bahasa Melayu. Biar makin kebayang, coba perhatiin gimana cara nampilin teks \"Hello World\" pake beberapa bahasa yang beda ini.\n\nPake C\u002FC++:\n\n```cpp\n#include\u003Cstdio.h>\nint main(){\n    printf(\"Hello World\\n\");\n  return 0;\n}\n```\n\nPake *Python*:\n\n```python\nprint(\"Hello World\")\n```\n\nPake *Pascal*:\n\n```pascal\nprogram Hello_World;\nbegin\n  writeln('Hello World');\nend.\n```\n\nSering kali orang di luar sana mikir kalau \"belajar pemrograman\" itu berarti harus ngafalin sintaks. Nggak sepenuhnya salah sih, tapi selalu inget ya kalau bahasa pemrograman itu ujung-ujungnya cuma alat buat nyelesain masalah. Jadi, bahasa apa pun yang kalian pake, yang paling penting itu adalah masalahnya bisa beres dengan baik! 💡\n\nAturan-aturan yang bikin kode kamu diterima komputer, lengkap dengan contoh yang sengaja dibikin error, ada di [Aturan Sintaks: Satu Titik Koma Bikin Program Nggak Jalan](\u002Fp\u002Faturan-sintaks-pemrograman).\n\nMengingat memang ada buanyak banget bahasa pemrograman yang beredar di luar sana, kalian nggak perlu terlalu ambisius pengen jadi *polyglot* dan nguasain semuanya sekaligus. Sebaliknya, cukup pelajarin satu bahasa aja dan pahamin konsep-konsep dasarnya sampai bener-bener dalem. Dengan fondasi yang kuat, nanti kalo mau pindah belajar ke bahasa lain pun dijamin bakal jauh lebih gampang dan gampang adaptasi.\n","- Pemrograman itu intinya ngasih instruksi ke komputer, dan instruksinya ditulis pakai bahasa pemrograman yang punya aturan sendiri.\n- Empat konsep yang wajib dipahami: *variable* dan *data type*, *control structure*, *function*, dan *syntax*.\n- Sintaks beda-beda tiap bahasa, tapi konsepnya sama. Kuasai satu bahasa sampai dalem, pindah ke bahasa lain bakal jauh lebih gampang.","\u003Cp>Belajar pemrograman tuh nggak sesulit yang kalian bayangin, lho. Nggak seberat belajar bahasa asing yang harus ngafal banyak \u003Cem>vocab\u003C\u002Fem>, dan pastinya nggak sesusah matematika yang isinya ngitung melulu. Pada dasarnya, inti dari pemrograman itu sebenarnya simpel banget karena kalian cuma butuh ngasih instruksi alias nyuruh komputer buat ngelakuin sesuatu yang kalian mau. Selama instruksi yang kita kasih jelas, komputer pasti bisa ngerjainnya dengan baik tanpa banyak protes.\u003C\u002Fp>\n\u003Cp>Nah, pertanyaannya sekarang, gimana sih cara ngasih instruksinya? Tentu saja, kita bisa ngasih instruksi ke komputer dengan cara bikin program. Program ini sebenernya nggak lebih dari sekumpulan instruksi yang ditulis pake \u003Cem>programming language\u003C\u002Fem> atau bahasa pemrograman. Sama kayak bahasa manusia pada umumnya, bahasa komputer juga punya aturan mainnya sendiri. Oleh karena itu, ada beberapa konsep dasar yang harus kita pahamin buat nulis program yang bener.\u003C\u002Fp>\n\u003Cp>Konsep-konsep dasar tersebut antara lain:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cem>Variable\u003C\u002Fem> dan \u003Cem>data type\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>\u003Cem>Control structure\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>\u003Cem>Function\u003C\u002Fem> atau sub program\u003C\u002Fli>\n\u003Cli>\u003Cem>Syntax\u003C\u002Fem>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Yuk, kita bahas satu-satu secara singkat biar kalian makin paham. Buat pembahasan yang lebih detailnya, nanti bakal dikupas tuntas di artikel yang terpisah ya.\u003C\u002Fp>\n\u003Cp>Pembahasan lengkap tiap konsep ada di artikelnya masing-masing, dan tautannya bisa kalian temukan di tiap bagian di bawah ini.\u003C\u002Fp>\n\u003Ch2 id=\"variabel-dan-tipe-data\">Variabel dan Tipe Data\u003C\u002Fh2>\n\u003Cp>\u003Cem>Variable\u003C\u002Fem> tuh ibarat &quot;tokoh utama&quot; di sebuah program. Menariknya, hampir semua bahasa pemrograman pasti punya konsep yang satu ini. Kalau kalian bingung apa sih \u003Cem>variable\u003C\u002Fem> itu, menurut definisi, \u003Cem>variable\u003C\u002Fem> adalah tempat nyimpen data yang dikasih nama simbolis tertentu. Gampangnya, \u003Cem>variable\u003C\u002Fem> itu cuma sebuah wadah buat nyimpen data supaya nantinya data tersebut bisa kita pake lagi pas dibutuhin.\u003C\u002Fp>\n\u003Cp>Di dunia \u003Cem>programming\u003C\u002Fem>, setiap data pasti punya bentuknya masing-masing. Karena bentuknya beda-beda, setiap bentuk itu juga butuh jenis wadah yang beda-beda pula. Nah, bentuk dari data inilah yang biasa kita sebut dengan \u003Cem>data type\u003C\u002Fem> (tipe data). Sebagian besar bahasa pemrograman punya tipe data standar yang mirip-mirip dan udah ada dari sananya (\u003Cem>default\u003C\u002Fem>).\u003C\u002Fp>\n\u003Cp>Beberapa contoh tipe data standar yang sering dipake:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>integer\u003C\u002Fcode>: Buat nyimpen angka bulat (contoh: 1, 2, 90)\u003C\u002Fli>\n\u003Cli>\u003Ccode>float\u003C\u002Fcode>: Buat nyimpen angka desimal (contoh: 2.5, 3.14, 2.71)\u003C\u002Fli>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode>: Buat nyimpen huruf atau kata (contoh: &quot;a&quot;, &quot;ikan&quot;, &quot;Inva si kode&quot;)\u003C\u002Fli>\n\u003Cli>\u003Ccode>byte\u003C\u002Fcode>: Buat nyimpen data mentah kayak gambar dan teks\u003C\u002Fli>\n\u003Cli>\u003Ccode>boolean\u003C\u002Fcode>: Buat nyimpen data logika (\u003Ccode>true\u003C\u002Fcode> atau \u003Ccode>false\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Ccode>array\u003C\u002Fcode>: Buat nyimpen sekumpulan \u003Cem>variable\u003C\u002Fem> dengan tipe yang sama\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Selain tipe data standar tersebut, beberapa bahasa juga ngasih kebebasan buat bikin tipe data sendiri sesuai kebutuhan. Fitur ini biasanya disebut dengan istilah \u003Cem>custom data type\u003C\u002Fem> atau tipe data bentukan.\u003C\u002Fp>\n\u003Cp>Kalau mau lebih dalam soal cara deklarasi, pengisian nilai, sampai macam-macam tipe datanya, ada di \u003Ca href=\"\u002Fp\u002Fvariable-dan-tipe-data\">Konsep Variabel dan Tipe Data pada Pemrograman\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"struktur-kontrol-percabangan\">Struktur Kontrol: Percabangan\u003C\u002Fh2>\n\u003Cp>Selanjutnya ada percabangan atau \u003Cem>branching\u003C\u002Fem>. Percabangan ini merupakan bagian penting dari \u003Cem>control structure\u003C\u002Fem> yang fungsinya buat ngambil keputusan. Keputusan ini selalu didasarin sama yang namanya \u003Cem>boolean condition\u003C\u002Fem>. Dalam percabangan sendiri, ada dua hal pokok yang nggak bisa dipisahin, yaitu kondisi dan keputusan itu sendiri.\u003C\u002Fp>\n\u003Cp>Kalo di dunia nyata, contohnya kira-kira kayak gini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"jika%20(hari%20ini%20hujan)%20maka%20(aku%20akan%20tidur%20saja)%0A%20%20%20%20%20%20%E2%94%94%E2%94%80%20kondisi%20%20%20%20%20%20%20%20%20%20%20%20%E2%94%94%E2%94%80%20keputusan\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>jika (hari ini hujan) maka (aku akan tidur saja)\n      └─ kondisi            └─ keputusan\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Pake percabangan, kita pada dasarnya ngasih tau komputer buat jalanin perintah tertentu kalau syaratnya terpenuhi. Syarat inilah yang kita sebut sebagai \u003Cem>boolean condition\u003C\u002Fem>. Lalu, apaan tuh \u003Cem>boolean condition\u003C\u002Fem>? Seperti yang udah sempet disinggung sebelumnya, \u003Ccode>boolean\u003C\u002Fcode> itu adalah salah satu tipe data. Tipe ini terbilang spesial banget karena cuma punya dua nilai mutlak, yaitu \u003Ccode>true\u003C\u002Fcode> (benar) dan \u003Ccode>false\u003C\u002Fcode> (salah).\u003C\u002Fp>\n\u003Cp>Buat dapet kondisi boolean, kita butuh yang namanya \u003Cem>boolean expression\u003C\u002Fem>. Walaupun istilahnya kedengeran rumit, 😅 sebenernya \u003Cem>boolean expression\u003C\u002Fem> itu cuma operasi perbandingan kayak &quot;lebih dari&quot;, &quot;kurang dari&quot;, sama &quot;sama dengan&quot;. Atau selain itu, bisa juga berupa operasi logika kayak \u003Ccode>AND\u003C\u002Fcode>, \u003Ccode>OR\u003C\u002Fcode>, dan \u003Ccode>NOT\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Biasanya, simbol yang dipake di bahasa pemrograman tuh kayak gini:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>&gt;\u003C\u002Fcode>: lebih dari\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;\u003C\u002Fcode>: kurang dari\u003C\u002Fli>\n\u003Cli>\u003Ccode>&gt;=\u003C\u002Fcode>: lebih dari atau sama dengan\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;=\u003C\u002Fcode>: kurang dari atau sama dengan\u003C\u002Fli>\n\u003Cli>\u003Ccode>==\u003C\u002Fcode>: sama dengan\u003C\u002Fli>\n\u003Cli>\u003Ccode>!=\u003C\u002Fcode>: tidak sama dengan\u003C\u002Fli>\n\u003Cli>\u003Ccode>&amp;&amp;\u003C\u002Fcode> atau \u003Ccode>and\u003C\u002Fcode>: logika AND\u003C\u002Fli>\n\u003Cli>\u003Ccode>||\u003C\u002Fcode> atau \u003Ccode>or\u003C\u002Fcode>: logika OR\u003C\u002Fli>\n\u003Cli>\u003Ccode>!\u003C\u002Fcode> atau \u003Ccode>not\u003C\u002Fcode>: logika NOT\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Umumnya, percabangan ditandai pake kata kunci \u003Ccode>if\u003C\u002Fcode>, terus diikutin perintah yang bakal dijalanin kalau kondisinya memang \u003Ccode>true\u003C\u002Fcode>. Sebagai gambaran, coba perhatiin contoh percabangan pake \u003Cem>Python\u003C\u002Fem> berikut ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"if%20(nilai%20%3E%3D%2094)%3A%0A%20%20print(%22bagus%20sekali%22)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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:#F97583\">if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> (nilai \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">>=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 94\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"bagus sekali\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Gampang dibaca kan kodenya? Kalian nggak harus jadi \u003Cem>programmer\u003C\u002Fem> pro kok buat sekadar paham maksud dari baris kode tersebut.\u003C\u002Fp>\n\u003Cp>Bentuk lengkapnya, termasuk kapan \u003Ccode>if-else\u003C\u002Fcode> lebih pas dipakai daripada \u003Ccode>switch-case\u003C\u002Fcode>, ada di \u003Ca href=\"\u002Fp\u002Fstruktur-kontrol-kondisi\">Struktur Kontrol Kondisi\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"struktur-kontrol-perulangan\">Struktur Kontrol: Perulangan\u003C\u002Fh2>\n\u003Cp>Konsep berikutnya yang nggak kalah penting adalah perulangan atau \u003Cem>looping\u003C\u002Fem>. Sama kayak percabangan, perulangan ini juga masuk ke dalam kategori \u003Cem>control structure\u003C\u002Fem>. Sesuai dengan namanya, fungsinya adalah buat ngulang-ngulang suatu perintah selama kondisinya masih terpenuhi. Seringkali, kita butuh ngelakuin hal yang repetitif alias berulang-ulang pas lagi bikin program.\u003C\u002Fp>\n\u003Cp>Misalnya nih, kalian diminta untuk nyetak angka 1 sampai 5. Memang sih, nulis kodenya bisa diketik manual satu-satu kayak gini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"print(1)%0Aprint(2)%0Aprint(3)%0Aprint(4)%0Aprint(5)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">1\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">4\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">5\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Kalo cuma 5 angka doang sih jelas nggak masalah buat diketik. Tapi coba bayangin deh kalo harus nyetak sampe 1000 angka, bisa keriting tuh jari! Oleh karena itu, dengan pake perulangan, kita nggak perlu repot nulis kode yang panjang-panjang. Komputer bakal ngerjain tugas yang berulang-ulang tersebut dengan gampang dan super cepat.\u003C\u002Fp>\n\u003Cp>Biasanya perulangan ditandai pake kata kunci \u003Ccode>for\u003C\u002Fcode> atau \u003Ccode>while\u003C\u002Fcode>. Coba liat contoh perulangan \u003Ccode>for\u003C\u002Fcode> di \u003Cem>Python\u003C\u002Fem> berikut ini buat nyetak angka 1 sampe 999:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"for%20number%20in%20range(1%2C%201000)%3A%0A%20%20print(number)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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:#F97583\">for\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> number \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">in\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> range\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">1\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">1000\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(number)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Tuh kan, jauh lebih simpel dan pastinya lebih gampang dibaca.\u003C\u002Fp>\n\u003Cp>Tiga jenis perulangan yang beda dan kapan masing-masing dipakai ada di \u003Ca href=\"\u002Fp\u002Fstruktur-kontrol-perulangan\">Struktur Kontrol Perulangan\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"fungsi-atau-sub-program\">Fungsi atau Sub Program\u003C\u002Fh2>\n\u003Cp>Lanjut lagi, ada yang namanya fungsi atau sub program. Fungsi ini merupakan cara paling ampuh buat mecah masalah yang tadinya gede jadi bagian yang kecil-kecil, biar masalahnya lebih gampang diselesain. Di samping itu, fungsi juga bikin kode yang kita tulis bisa dipake berulang kali di berbagai tempat, jadi \u003Cem>code\u003C\u002Fem> kalian bakal lebih rapi dan efisien.\u003C\u002Fp>\n\u003Cp>Kalian mungkin pernah denger istilah fungsi pas lagi belajar di pelajaran matematika. Contohnya kira-kira kayak gini nih:\u003C\u002Fp>\n\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>f\u003C\u002Fmi>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmi>x\u003C\u002Fmi>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmsup>\u003Cmi>x\u003C\u002Fmi>\u003Cmn>2\u003C\u002Fmn>\u003C\u002Fmsup>\u003Cmo>+\u003C\u002Fmo>\u003Cmi>x\u003C\u002Fmi>\u003Cmo>+\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">f(x)=x^2+x+1\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"katex-base\">\u003Cspan class=\"katex-strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"katex-base\">\u003Cspan class=\"katex-strut\" style=\"height:0.9474em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8641em;\">\u003Cspan style=\"top:-3.113em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"katex-sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">2\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">+\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"katex-base\">\u003Cspan class=\"katex-strut\" style=\"height:0.6667em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">+\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"katex-base\">\u003Cspan class=\"katex-strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cp>Nah, menariknya, di \u003Cem>programming\u003C\u002Fem> juga konsepnya ternyata mirip banget! Bedanya cuma satu, nilai yang dimasukin ke dalam fungsi pemrograman nggak melulu cuma angka, tapi bisa tipe data apa aja yang udah kita bahas panjang lebar tadi.\u003C\u002Fp>\n\u003Cp>Kalo di \u003Cem>Python\u003C\u002Fem>, fungsi matematika di atas tadi bisa ditulis jadi bentuk kayak gini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"def%20f(x)%3A%0A%20%20return%20x*x%20%2B%20x%20%2B%201\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> f\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(x):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> x\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">*\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">x \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">+\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> x \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">+\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>\u003Cem>Variable\u003C\u002Fem> yang ada di dalem kurung fungsi tersebut (kayak huruf \u003Ccode>x\u003C\u002Fcode> tadi) sering disebut dengan istilah \u003Cem>parameter\u003C\u002Fem>. Dalam praktiknya, sebuah fungsi nggak cuma bisa nerima satu parameter aja. Fungsi bisa menerima banyak parameter, atau bahkan malah nggak butuh parameter sama sekali.\u003C\u002Fp>\n\u003Cp>Coba perhatiin contoh lainnya:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"def%20nama_lengkap(nama_depan%2C%20nama_belakang)%3A%0A%20%20return%20nama_depan%20%2B%20%22%20%22%20%2B%20nama_belakang\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> nama_lengkap\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(nama_depan, nama_belakang):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> nama_depan \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">+\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \" \"\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> +\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> nama_belakang\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Itu adalah contoh sederhana dari sebuah fungsi dengan dua parameter yang bertugas buat gabungin nama depan dan nama belakang jadi satu nama lengkap. Praktis banget kan penggunaannya?\u003C\u002Fp>\n\u003Cp>Beda fungsi dan prosedur, lengkap dengan contoh pemakaiannya, ada di \u003Ca href=\"\u002Fp\u002Ffungsi-dan-prosedur\">Fungsi dan Prosedur dalam Pemrograman\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"sintaks\">Sintaks\u003C\u002Fh2>\n\u003Cp>Terakhir nih, kita bakal bahas tentang sintaks atau \u003Cem>syntax\u003C\u002Fem>. Kalau konsep-konsep sebelumnya tuh secara umum selalu ada di semua bahasa pemrograman, urusan sintaks ini jelas beda cerita. Sama halnya dalam bahasa sehari-hari, sintaks itu ibarat aturan tata bahasa. Karena tiap bahasa manusia pasti beda-beda tata bahasanya, otomatis tiap bahasa pemrograman pun punya aturan sintaks yang unik.\u003C\u002Fp>\n\u003Cp>Walaupun begitu, kadang ada juga beberapa bahasa yang punya aturan mirip-mirip. Contohnya kayak \u003Ccode>c\u003C\u002Fcode> dan \u003Ccode>c++\u003C\u002Fcode> yang kalau diibaratkan tuh mirip banget kayak Bahasa Indonesia dan Bahasa Melayu. Biar makin kebayang, coba perhatiin gimana cara nampilin teks &quot;Hello World&quot; pake beberapa bahasa yang beda ini.\u003C\u002Fp>\n\u003Cp>Pake C\u002FC++:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">CPP\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%23include%3Cstdio.h%3E%0Aint%20main()%7B%0A%20%20%20%20printf(%22Hello%20World%5Cn%22)%3B%0A%20%20return%200%3B%0A%7D\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>#include&lt;stdio.h&gt;\nint main(){\n    printf(\"Hello World\\n\");\n  return 0;\n}\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Pake \u003Cem>Python\u003C\u002Fem>:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"print(%22Hello%20World%22)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Hello World\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Pake \u003Cem>Pascal\u003C\u002Fem>:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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%20Hello_World%3B%0Abegin%0A%20%20writeln('Hello%20World')%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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 Hello_World;\nbegin\n  writeln('Hello World');\nend.\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Sering kali orang di luar sana mikir kalau &quot;belajar pemrograman&quot; itu berarti harus ngafalin sintaks. Nggak sepenuhnya salah sih, tapi selalu inget ya kalau bahasa pemrograman itu ujung-ujungnya cuma alat buat nyelesain masalah. Jadi, bahasa apa pun yang kalian pake, yang paling penting itu adalah masalahnya bisa beres dengan baik! 💡\u003C\u002Fp>\n\u003Cp>Aturan-aturan yang bikin kode kamu diterima komputer, lengkap dengan contoh yang sengaja dibikin error, ada di \u003Ca href=\"\u002Fp\u002Faturan-sintaks-pemrograman\">Aturan Sintaks: Satu Titik Koma Bikin Program Nggak Jalan\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Mengingat memang ada buanyak banget bahasa pemrograman yang beredar di luar sana, kalian nggak perlu terlalu ambisius pengen jadi \u003Cem>polyglot\u003C\u002Fem> dan nguasain semuanya sekaligus. Sebaliknya, cukup pelajarin satu bahasa aja dan pahamin konsep-konsep dasarnya sampai bener-bener dalem. Dengan fondasi yang kuat, nanti kalo mau pindah belajar ke bahasa lain pun dijamin bakal jauh lebih gampang dan gampang adaptasi.\u003C\u002Fp>\n","\u003Cul>\n\u003Cli>Pemrograman itu intinya ngasih instruksi ke komputer, dan instruksinya ditulis pakai bahasa pemrograman yang punya aturan sendiri.\u003C\u002Fli>\n\u003Cli>Empat konsep yang wajib dipahami: \u003Cem>variable\u003C\u002Fem> dan \u003Cem>data type\u003C\u002Fem>, \u003Cem>control structure\u003C\u002Fem>, \u003Cem>function\u003C\u002Fem>, dan \u003Cem>syntax\u003C\u002Fem>.\u003C\u002Fli>\n\u003Cli>Sintaks beda-beda tiap bahasa, tapi konsepnya sama. Kuasai satu bahasa sampai dalem, pindah ke bahasa lain bakal jauh lebih gampang.\u003C\u002Fli>\n\u003C\u002Ful>\n",[183,200,213,226,239,259],{"id":184,"title":185,"title_en":21,"slug":186,"excerpt":187,"excerpt_en":21,"has_translation":15,"published_at":188,"reading_time":74,"hidden_from_listing":15,"tags":189,"thumbnail_image":21,"og_image":191,"series":192,"authors":197},133,"Python Strings: the Badge That Only Worked for One Name","python-strings","The badge script printed the right name for the person who wrote it and the wrong name for everybody else. Slicing counts characters, and a name is words.","2026-10-28T13:00:00.000Z",[157,190],"string","\u002Fog\u002Fpython-strings.png",{"id":193,"title":194,"title_en":195,"slug":196},30,"Koleksi dan String","Collections and Strings","python-collections",[198],{"authors_id":199},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},{"id":201,"title":202,"title_en":21,"slug":203,"excerpt":204,"excerpt_en":21,"has_translation":15,"published_at":205,"reading_time":74,"hidden_from_listing":15,"tags":206,"thumbnail_image":21,"og_image":208,"series":209,"authors":210},132,"Python Tuples: Why All Three Points Are the Same Point","python-tuples","Three points walk into a loop and come out identical. The list was never copied three times; the name was. A tuple makes that bug impossible.","2026-10-28T12:00:00.000Z",[157,207],"tuple","\u002Fog\u002Fpython-tuples.png",{"id":193,"title":194,"title_en":195,"slug":196},[211],{"authors_id":212},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},{"id":214,"title":215,"title_en":21,"slug":216,"excerpt":217,"excerpt_en":21,"has_translation":15,"published_at":218,"reading_time":74,"hidden_from_listing":15,"tags":219,"thumbnail_image":21,"og_image":221,"series":222,"authors":223},131,"Python Sets: the Duplicate That Keeps Coming Back","python-sets","A de-duplication loop that works on clean data leaves four tags where there should be two. The bug is case, and the fix is a `set`.","2026-10-28T11:00:00.000Z",[157,220],"set","\u002Fog\u002Fpython-sets.png",{"id":193,"title":194,"title_en":195,"slug":196},[224],{"authors_id":225},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},{"id":227,"title":228,"title_en":21,"slug":229,"excerpt":230,"excerpt_en":21,"has_translation":15,"published_at":231,"reading_time":74,"hidden_from_listing":15,"tags":232,"thumbnail_image":21,"og_image":234,"series":235,"authors":236},130,"Python Dictionaries: the Key That Isn't There","python-dictionary","A word counter dies the first time it meets a word twice. The fix is one line; what takes longer is knowing which of a dict's three lookups to reach for.","2026-10-28T10:00:00.000Z",[157,233],"dictionary","\u002Fog\u002Fpython-dictionary.png",{"id":193,"title":194,"title_en":195,"slug":196},[237],{"authors_id":238},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},{"id":240,"title":241,"title_en":242,"slug":243,"excerpt":244,"excerpt_en":245,"has_translation":12,"published_at":246,"reading_time":14,"hidden_from_listing":15,"tags":247,"thumbnail_image":21,"og_image":254,"series":255,"authors":256},129,"Biar RAG nggak kena 504: pisahin jalur query dan ingestion","So Your RAG Stops Hitting 504: Split the Query Path From Ingestion","rag-pisah-jalur-query-dan-ingestion","Satu service RAG yang merangkap parsing dan menjawab kueri bakal tumbang pas ada yang upload PDF 200 halaman. Obatnya dua jalur dan satu queue.","One RAG service that both parses uploads and answers queries will fall over the moment someone uploads a 200-page PDF. The cure is two paths and one queue.","2026-10-22T01:30:00.000Z",[248,249,250,251,252,253],"rag","cloud-run","cloud-tasks","gcp","serverless","arsitektur","\u002Fog\u002Frag-pisah-jalur-query-dan-ingestion.png",{"id":106,"title":35,"title_en":36,"slug":37},[257],{"authors_id":258},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},{"id":260,"title":261,"title_en":262,"slug":263,"excerpt":264,"excerpt_en":265,"has_translation":12,"published_at":266,"reading_time":74,"hidden_from_listing":15,"tags":267,"thumbnail_image":21,"og_image":274,"series":275,"authors":276},128,"Linear atau graf: cara mengatur banyak agent tanpa loop abadi","Linear or Graph: How to Run Many Agents Without an Eternal Loop","multi-agen-linear-atau-grafik","Satu agent dengan dua puluh tool gampang kacau. Begitu beberapa agent saling revisi, kamu butuh graf yang mendukung cycle dan angka yang membuatnya berhenti.","One agent with twenty tools gets messy fast. Once several agents revise each other, you need a graph that allows cycles and a number that makes it stop.","2026-10-21T16:05:00.000Z",[268,269,270,271,272,273],"multi-agent","langgraph","autogen","orkestrasi","checkpoint","llm","\u002Fog\u002Fmulti-agen-linear-atau-grafik.png",{"id":106,"title":35,"title_en":36,"slug":37},[277],{"authors_id":278},{"id":163,"name":164,"slug":165,"role":166,"profile_picture":21},[280,283,286,288,291],{"text":281,"depth":113,"id":282},"Variabel dan Tipe Data","variabel-dan-tipe-data",{"text":284,"depth":113,"id":285},"Struktur Kontrol: Percabangan","struktur-kontrol-percabangan",{"text":287,"depth":113,"id":122},"Struktur Kontrol: Perulangan",{"text":289,"depth":113,"id":290},"Fungsi atau Sub Program","fungsi-atau-sub-program",{"text":292,"depth":113,"id":293},"Sintaks","sintaks",1793295834409]