[{"data":1,"prerenderedAt":235},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-sistem-input-dengan-read-dan-readln-pada-bahasa-pascal-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":170,"renderedTakeaway":171,"latestArticles":172,"toc":224},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":54,"takeway":55,"body":56,"authors":57,"series":63},"60","Sistem Input dengan Read dan Readln pada Bahasa Pascal","sistem-input-dengan-read-dan-readln-pada-bahasa-pascal","Pada kesempatan kali ini kita akan belajar tentang proses masukan dari keyboard dengan menggunakan perintah read dan readln pada Bahasa Pascal.","2020-10-22T12:05:49.000Z",{"id":49},"cd7ff963-992f-49cc-8520-a7a6685d7546",[51,52,53],"pascal","input-output","syntax",3,null,"Input atau masukan merupakan hal yang sangat penting dalam pemrograman. Pada kesempatan kali ini kita akan belajar tentang proses masukan dari keyboard dengan menggunakan perintah read dan readln pada Bahasa Pascal.\n\nPerintah input sangat erat kaitannya dengan [penggunaan variable](https://invasikode.com/tipe-data-pascal/) yang nanti akan melalui proses [operasi data](https://invasikode.com/operasi-aritmatika-pascal/). Inputan berguna dalam pengisian nilai variable saat program sudah berjalan, sehingga kita tidak perlu lagi mengisikan nilai variable dengan mengubah kode program.\n\n## Penggunaan Perintah readln\n\nDari program Pascal yang telah kita buat sebelumnya pasti kalian sudah pernah bertemu dengan perintah `readln`. Perintah `readln` merupakan singkaran dari **read line** yang artinya **baca baris**. Jadi fungsi dari perintah ini adalah untuk **membaca inputan berupa ketikan dalam satu baris**.\n\nSupaya bisa membayangkan bagaimana proses input itu, coba tuliskan kode Pascal berikut ini.\n\n```pascal\nprogram input;\nuses crt;\nvar\n  nama: string;\n  umur: integer;\n\nbegin\n  clrscr;\n  write('nama: ');\n  readln(nama); // input nama\n  write('umur: ');\n  readln(umur); // input umur\n\n  // output nama dan umur\n  writeln; // menambah satu spasi\n  writeln('nama saya ', nama);\n  writeln('saya berusia ', umur, ' tahun');\n  readln;\nend.\n```\n\nSetelah kalian jalankan maka program akan berhenti dengan tulisan \"nama: \". Nah kalian bisa mengetikkan nama kalian lalu tekan **enter**. Selanjutnya akan keluar tulisan \"umur: \" silahkan kalian ketikkan umur kalian lalu tekan **enter**.\n\nJika saya mengisi \"Budi\" dan \"17\" maka outputnya kurang lebih akan sebagai berikut\n\n```\nnama: Budi\numur: 17\n\nnama saya Budi\nsaya berusia 17 tahun\n```\n\nNah dari output tersebut kita bisa melihat bahwa nilai variable **nama** dan **umur** memiliki nilai yang sama seperti inputan yang kalian ketik. variable **nama** berisi \"Budi\", dan variable **umur** berisi \"17\".\n\nProses input juga harus meperhatikan tipe data. Variable **nama** memiliki tipe data string, sehingga hanya dapat menerima kata atau kalimat saja. Sedangkan variable **umur** memiliki tipe data integer, sehingga hanya bisa diisikan angka bulat.\n\n> Variable bertipe data string dapat menerima input berupa angka, namun nilai variable tersebut tidak akan bisa melalui proses hitung. Karena angka yang dimasukkan tetap dibaca sebagai kata kata.\n\nUntuk eksperimen coba kalian ubah ubah inputan nama dan umurnya. Oh iya coba juga lakukan input umur dengan angka desimal semisal **9.2**.\n\n## Penggunaan Perintah read\n\nPerintah `read` sama seperti `readln` berfungsi sebagai sistem input. Yang membedakan keduanya hanya cara memasukkan data pada variable saja.\n\nPada perintah `readln` kita harus menekan tombol **enter** agar inputan dapat masuk kedalam nilai variable. Sedangkan pada perintah `read` kita bisa menggunakan tombol **spasi** atau **enter** untuk memasukkan inputan kedalam nilai variable.\n\nSekarang coba kita modifikasi sedikit kode yang telah kita buat sebelumnya.\n\n```pascal\nprogram input;\nuses crt;\nvar\n  nama: string;\n  umur: integer;\n  jmlsaudara: integer; // tambahkan variable baru\n\nbegin\n  clrscr;\n  write('nama: ');\n  readln(nama); // input nama\n  writeln('masukkan umur dan jumlah saudara dipisahkan spasi');\n  read(umur); // input umur\n  read(jmlsaudara); // input jumlah saudara\n\n  // output nama dan umur\n  writeln; // menambah satu spasi\n  writeln('nama saya ', nama);\n  writeln('saya berusia ', umur, ' tahun');\n  writeln('saya punya ', jmlsaudara, ' saudara')\n  readln;\nend.\n```\n\nSelanjutnya coba jalankan kode tersebut lalu masukkan nama lalu tekan enter. Selanjutnya masukkan umur dan jumlah saudara dipisahkan **spasi** contohnya **\"29 4\"** lalu tekan **enter**. Kalau sudah kurang lebih outputnya akan terlihat seperti ini.\n\n```\nnama: Adi\nmasukkan umur dan jumlah saudara dipisahkan spasi\n29 4\n\nnama saya Adi\nsaya berusia 29 tahun\nsaya punya 4 saudara\n```\n\nBisa dilihat kan sesuai outputnya. Variable **nama** bernilai \"Adi\", Variable **umur** dan **jmlsaudara** bernilai \"29\" dan \"4\".\n\n> Jika kalian ingin menggunakan perintah read untuk input variable dengan tipe data string, maka memisahkannya harus dengan menggunakan tombol enter. Ini karena inputan spasi pada tipe data string juga dibaca sebagai sebuah karakter.\n\nSeperti biasa, sebagai eksperimen kalian bisa coba ubah ubah inputan yang kalian ketikkan.\n\n## Penutup\n\nJadi perintah untuk melakukan sistem input pada Pascal ada 2 yaitu read dan readln. Hal yang membedakan perintah read dan readln terdapat pada cara memasukkan nilai variable saja. Jika perintah readln harus menggunakan **enter**, sedangkan perintah read bisa menggunakan **spasi**.\n\nSemoga tutorial kali ini bermanfaat :D Untuk tutorial selanjutnya kita akan coba [membuat program Pascal sederhana](https://invasikode.com/konversi-waktu-pascal/) menggabungkan semua yang sudah kita pelajari sebelumnya.",[58],{"authors_id":59},{"name":60,"slug":61,"role":62,"profile_picture":55},"Daffa Izzuddin","izzudd","Writer",{"id":64,"title":65,"slug":66,"articles":67,"parent_series":152},"23","Berkenalan dengan Bahasa Pascal","pascal-intro",[68,78,81,91,98,106,115,125,133,143],{"id":69,"title":65,"slug":70,"excerpt":71,"thumbnail_image":72,"tags":74},"59","berkenalan-dengan-bahasa-pascal","Pascal merupakan bahasa pemrograman dengan sintaks sederhana, ekspresif, dan mudah dibaca. Ini membuatnya menjadi bahasa pemrograman yang baik untuk pemula.",{"id":73},"ed6e86a1-9928-4571-b812-1228b8742067",[51,75,76,77],"intro","pemrograman","dasar",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":79,"tags":80},{"id":49},[51,52,53],{"id":82,"title":83,"slug":84,"excerpt":85,"thumbnail_image":86,"tags":88},"102","Menginstal Free Pascal pada Windows","menginstal-free-pascal-pada-windows","Untuk menjalankan kode Pascal pada sistem operasi Windows kita perlu compiler. Kali ini kita akan mengunakan Free Pascal sebagai compiler sekaligus code editor kita.",{"id":87},"2c84752c-6726-4126-bfd7-ae7f311be684",[51,89,90],"instalasi","tooling",{"id":92,"title":93,"slug":94,"excerpt":85,"thumbnail_image":95,"tags":97},"61","Menginstall Free Pascal pada Linux","menginstall-free-pascal-pada-linux",{"id":96},"36758a2e-8f5d-4485-af44-ac5c17d6b438",[51,89,90],{"id":99,"title":100,"slug":101,"excerpt":102,"thumbnail_image":103,"tags":105},"103","Membuat Program Hello World pada Pascal","membuat-program-hello-world-pada-pascal","Setelah melakukan instalasi Free Pascal baik pada windows atau linux, kali ini kita akan belajar untuk membuat program pertama kita. Sekaligus kenalan sedikit dengan Program Free Pascal.",{"id":104},"81fde45a-bbc8-4080-8167-4717eef59014",[51,23,77],{"id":107,"title":108,"slug":109,"excerpt":110,"thumbnail_image":111,"tags":113},"62","Mengenal Bagian dan Struktur Bahasa Pascal","mengenal-bagian-dan-struktur-bahasa-pascal","Ibarat menulis surat mulai dari kepala surat sampai tanda tangan, kode Pascal juga memiliki aturan penulisan dan struktur yang harus dipenuhi. Mari kita bahas lebih lanjut.",{"id":112},"d003025e-345c-426d-b499-d76da7a8ee72",[51,53,77,114],"konsep",{"id":116,"title":117,"slug":118,"excerpt":119,"thumbnail_image":120,"tags":122},"63","Penulisan Komentar pada Bahasa Pascal","penulisan-komentar-pada-bahasa-pascal","Kali ini kita akan membahas tentang penulisan komentar pada bahasa Pascal. Komentar adalah bagian dar kode yang tidak akan dibaca oleh komputer.",{"id":121},"a1fb41b3-5d8d-4c47-b0d3-0f344ad33107",[51,123,53,124],"komentar","best-practice",{"id":126,"title":127,"slug":128,"excerpt":129,"thumbnail_image":130,"tags":132},"64","Output dengan Write dan Writeln pada Bahasa Pascal","output-dengan-write-dan-writeln-pada-bahasa-pascal","Sistem output merupakan suatu yang sangat penting dalam pemrograman. Bukan cuma pemrograman, bahkan semua hal pasti berorientasi pada output.",{"id":131},"234ec268-ef60-4f16-837f-b0cf86471406",[51,52,53],{"id":134,"title":135,"slug":136,"excerpt":137,"thumbnail_image":138,"tags":140},"65","Variable, Konstanta, dan Tipe Data pada Pascal","variable-konstanta-dan-tipe-data-pada-pascal","Variable, konstanta, dan tipe data merupakan jantung dari pemrograman yang akan kita gunakan untuk melakukan manipulasi data.",{"id":139},"52b80649-eebb-4321-990e-c8f34b547c9b",[51,141,142,77],"variabel","tipe-data",{"id":144,"title":145,"slug":146,"excerpt":147,"thumbnail_image":148,"tags":150},"66","Operasi Aritmatika pada Bahasa Pascal","operasi-aritmatika-pada-bahasa-pascal","Setelah tahu tentang apa itu tipe data, sekarang kita akan coba belajar tentang operasi apa saja yang dapat dilakukan pada setiap tipe data dalam bahasa Pascal.",{"id":149},"20365e59-b759-4ac3-9e1d-6f9c1ddc6ac7",[51,151,77],"operator",{"id":153,"title":29,"slug":30,"parent_series":154,"children_series":156},"14",{"id":155,"title":22,"slug":23,"parent_series":55},"1",[157,158,162,166],{"id":64,"title":65,"slug":66,"cover_image":55},{"id":159,"title":160,"slug":161,"cover_image":55},"24","Struktur Kontrol","pascal-struktur-kontrol",{"id":163,"title":164,"slug":165,"cover_image":55},"25","Tipe Data Bentukan","pascal-tipe-data-bentukan",{"id":167,"title":168,"slug":169,"cover_image":55},"26","Pemrograman Prosedural","pascal-pemrograman-prosedural","\u003Cp>Input atau masukan merupakan hal yang sangat penting dalam pemrograman. Pada kesempatan kali ini kita akan belajar tentang proses masukan dari keyboard dengan menggunakan perintah read dan readln pada Bahasa Pascal.\u003C/p>\n\u003Cp>Perintah input sangat erat kaitannya dengan \u003Ca href=\"https://invasikode.com/tipe-data-pascal/\">penggunaan variable\u003C/a> yang nanti akan melalui proses \u003Ca href=\"https://invasikode.com/operasi-aritmatika-pascal/\">operasi data\u003C/a>. Inputan berguna dalam pengisian nilai variable saat program sudah berjalan, sehingga kita tidak perlu lagi mengisikan nilai variable dengan mengubah kode program.\u003C/p>\n\u003Ch2 id=\"penggunaan-perintah-readln\">Penggunaan Perintah readln\u003C/h2>\n\u003Cp>Dari program Pascal yang telah kita buat sebelumnya pasti kalian sudah pernah bertemu dengan perintah \u003Ccode>readln\u003C/code>. Perintah \u003Ccode>readln\u003C/code> merupakan singkaran dari \u003Cstrong>read line\u003C/strong> yang artinya \u003Cstrong>baca baris\u003C/strong>. Jadi fungsi dari perintah ini adalah untuk \u003Cstrong>membaca inputan berupa ketikan dalam satu baris\u003C/strong>.\u003C/p>\n\u003Cp>Supaya bisa membayangkan bagaimana proses input itu, coba tuliskan kode Pascal berikut ini.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"program%20input%3B%0Auses%20crt%3B%0Avar%0A%20%20nama%3A%20string%3B%0A%20%20umur%3A%20integer%3B%0A%0Abegin%0A%20%20clrscr%3B%0A%20%20write('nama%3A%20')%3B%0A%20%20readln(nama)%3B%20%2F%2F%20input%20nama%0A%20%20write('umur%3A%20')%3B%0A%20%20readln(umur)%3B%20%2F%2F%20input%20umur%0A%0A%20%20%2F%2F%20output%20nama%20dan%20umur%0A%20%20writeln%3B%20%2F%2F%20menambah%20satu%20spasi%0A%20%20writeln('nama%20saya%20'%2C%20nama)%3B%0A%20%20writeln('saya%20berusia%20'%2C%20umur%2C%20'%20tahun')%3B%0A%20%20readln%3B%0Aend.\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>program input;\nuses crt;\nvar\n  nama: string;\n  umur: integer;\n\nbegin\n  clrscr;\n  write('nama: ');\n  readln(nama); // input nama\n  write('umur: ');\n  readln(umur); // input umur\n\n  // output nama dan umur\n  writeln; // menambah satu spasi\n  writeln('nama saya ', nama);\n  writeln('saya berusia ', umur, ' tahun');\n  readln;\nend.\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Setelah kalian jalankan maka program akan berhenti dengan tulisan &quot;nama: &quot;. Nah kalian bisa mengetikkan nama kalian lalu tekan \u003Cstrong>enter\u003C/strong>. Selanjutnya akan keluar tulisan &quot;umur: &quot; silahkan kalian ketikkan umur kalian lalu tekan \u003Cstrong>enter\u003C/strong>.\u003C/p>\n\u003Cp>Jika saya mengisi &quot;Budi&quot; dan &quot;17&quot; maka outputnya kurang lebih akan sebagai berikut\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"nama%3A%20Budi%0Aumur%3A%2017%0A%0Anama%20saya%20Budi%0Asaya%20berusia%2017%20tahun\" 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>nama: Budi\numur: 17\n\nnama saya Budi\nsaya berusia 17 tahun\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Nah dari output tersebut kita bisa melihat bahwa nilai variable \u003Cstrong>nama\u003C/strong> dan \u003Cstrong>umur\u003C/strong> memiliki nilai yang sama seperti inputan yang kalian ketik. variable \u003Cstrong>nama\u003C/strong> berisi &quot;Budi&quot;, dan variable \u003Cstrong>umur\u003C/strong> berisi &quot;17&quot;.\u003C/p>\n\u003Cp>Proses input juga harus meperhatikan tipe data. Variable \u003Cstrong>nama\u003C/strong> memiliki tipe data string, sehingga hanya dapat menerima kata atau kalimat saja. Sedangkan variable \u003Cstrong>umur\u003C/strong> memiliki tipe data integer, sehingga hanya bisa diisikan angka bulat.\u003C/p>\n\u003Cblockquote>\n\u003Cp>Variable bertipe data string dapat menerima input berupa angka, namun nilai variable tersebut tidak akan bisa melalui proses hitung. Karena angka yang dimasukkan tetap dibaca sebagai kata kata.\u003C/p>\n\u003C/blockquote>\n\u003Cp>Untuk eksperimen coba kalian ubah ubah inputan nama dan umurnya. Oh iya coba juga lakukan input umur dengan angka desimal semisal \u003Cstrong>9.2\u003C/strong>.\u003C/p>\n\u003Ch2 id=\"penggunaan-perintah-read\">Penggunaan Perintah read\u003C/h2>\n\u003Cp>Perintah \u003Ccode>read\u003C/code> sama seperti \u003Ccode>readln\u003C/code> berfungsi sebagai sistem input. Yang membedakan keduanya hanya cara memasukkan data pada variable saja.\u003C/p>\n\u003Cp>Pada perintah \u003Ccode>readln\u003C/code> kita harus menekan tombol \u003Cstrong>enter\u003C/strong> agar inputan dapat masuk kedalam nilai variable. Sedangkan pada perintah \u003Ccode>read\u003C/code> kita bisa menggunakan tombol \u003Cstrong>spasi\u003C/strong> atau \u003Cstrong>enter\u003C/strong> untuk memasukkan inputan kedalam nilai variable.\u003C/p>\n\u003Cp>Sekarang coba kita modifikasi sedikit kode yang telah kita buat sebelumnya.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PASCAL\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"program%20input%3B%0Auses%20crt%3B%0Avar%0A%20%20nama%3A%20string%3B%0A%20%20umur%3A%20integer%3B%0A%20%20jmlsaudara%3A%20integer%3B%20%2F%2F%20tambahkan%20variable%20baru%0A%0Abegin%0A%20%20clrscr%3B%0A%20%20write('nama%3A%20')%3B%0A%20%20readln(nama)%3B%20%2F%2F%20input%20nama%0A%20%20writeln('masukkan%20umur%20dan%20jumlah%20saudara%20dipisahkan%20spasi')%3B%0A%20%20read(umur)%3B%20%2F%2F%20input%20umur%0A%20%20read(jmlsaudara)%3B%20%2F%2F%20input%20jumlah%20saudara%0A%0A%20%20%2F%2F%20output%20nama%20dan%20umur%0A%20%20writeln%3B%20%2F%2F%20menambah%20satu%20spasi%0A%20%20writeln('nama%20saya%20'%2C%20nama)%3B%0A%20%20writeln('saya%20berusia%20'%2C%20umur%2C%20'%20tahun')%3B%0A%20%20writeln('saya%20punya%20'%2C%20jmlsaudara%2C%20'%20saudara')%0A%20%20readln%3B%0Aend.\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>program input;\nuses crt;\nvar\n  nama: string;\n  umur: integer;\n  jmlsaudara: integer; // tambahkan variable baru\n\nbegin\n  clrscr;\n  write('nama: ');\n  readln(nama); // input nama\n  writeln('masukkan umur dan jumlah saudara dipisahkan spasi');\n  read(umur); // input umur\n  read(jmlsaudara); // input jumlah saudara\n\n  // output nama dan umur\n  writeln; // menambah satu spasi\n  writeln('nama saya ', nama);\n  writeln('saya berusia ', umur, ' tahun');\n  writeln('saya punya ', jmlsaudara, ' saudara')\n  readln;\nend.\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Selanjutnya coba jalankan kode tersebut lalu masukkan nama lalu tekan enter. Selanjutnya masukkan umur dan jumlah saudara dipisahkan \u003Cstrong>spasi\u003C/strong> contohnya \u003Cstrong>&quot;29 4&quot;\u003C/strong> lalu tekan \u003Cstrong>enter\u003C/strong>. Kalau sudah kurang lebih outputnya akan terlihat seperti ini.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"nama%3A%20Adi%0Amasukkan%20umur%20dan%20jumlah%20saudara%20dipisahkan%20spasi%0A29%204%0A%0Anama%20saya%20Adi%0Asaya%20berusia%2029%20tahun%0Asaya%20punya%204%20saudara\" 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>nama: Adi\nmasukkan umur dan jumlah saudara dipisahkan spasi\n29 4\n\nnama saya Adi\nsaya berusia 29 tahun\nsaya punya 4 saudara\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Bisa dilihat kan sesuai outputnya. Variable \u003Cstrong>nama\u003C/strong> bernilai &quot;Adi&quot;, Variable \u003Cstrong>umur\u003C/strong> dan \u003Cstrong>jmlsaudara\u003C/strong> bernilai &quot;29&quot; dan &quot;4&quot;.\u003C/p>\n\u003Cblockquote>\n\u003Cp>Jika kalian ingin menggunakan perintah read untuk input variable dengan tipe data string, maka memisahkannya harus dengan menggunakan tombol enter. Ini karena inputan spasi pada tipe data string juga dibaca sebagai sebuah karakter.\u003C/p>\n\u003C/blockquote>\n\u003Cp>Seperti biasa, sebagai eksperimen kalian bisa coba ubah ubah inputan yang kalian ketikkan.\u003C/p>\n\u003Ch2 id=\"penutup\">Penutup\u003C/h2>\n\u003Cp>Jadi perintah untuk melakukan sistem input pada Pascal ada 2 yaitu read dan readln. Hal yang membedakan perintah read dan readln terdapat pada cara memasukkan nilai variable saja. Jika perintah readln harus menggunakan \u003Cstrong>enter\u003C/strong>, sedangkan perintah read bisa menggunakan \u003Cstrong>spasi\u003C/strong>.\u003C/p>\n\u003Cp>Semoga tutorial kali ini bermanfaat :D Untuk tutorial selanjutnya kita akan coba \u003Ca href=\"https://invasikode.com/konversi-waktu-pascal/\">membuat program Pascal sederhana\u003C/a> menggabungkan semua yang sudah kita pelajari sebelumnya.\u003C/p>\n","",[173,186,201,213],{"id":174,"title":175,"slug":176,"excerpt":177,"thumbnail_image":178,"tags":180},"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":179},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[181,182,183,184,185],"system-programming","rust","zig","c","memory-safety",{"id":187,"title":188,"slug":189,"excerpt":190,"thumbnail_image":191,"tags":193},"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":192},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[194,195,196,197,198,199,200],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":202,"title":203,"slug":204,"excerpt":205,"thumbnail_image":206,"tags":208},"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":207},"e3c617fd-1486-4b82-b937-94fbec846c77",[194,209,199,210,211,195,212],"microservices","database","message-broker","postgresql",{"id":214,"title":215,"slug":216,"excerpt":217,"thumbnail_image":218,"tags":220},"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":219},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[221,211,194,199,209,222,223],"rabbitmq","async","python",[225,229,232],{"text":226,"depth":227,"id":228},"Penggunaan Perintah readln",2,"penggunaan-perintah-readln",{"text":230,"depth":227,"id":231},"Penggunaan Perintah read","penggunaan-perintah-read",{"text":233,"depth":227,"id":234},"Penutup","penutup",1791045067402]