{"id":740,"date":"2025-09-09T09:34:23","date_gmt":"2025-09-09T09:34:23","guid":{"rendered":"https:\/\/sungaipuar.info\/wordpress\/?p=740"},"modified":"2025-09-09T11:03:16","modified_gmt":"2025-09-09T11:03:16","slug":"testing-laporan","status":"publish","type":"post","link":"https:\/\/sungaipuar.info\/wordpress\/testing-laporan\/","title":{"rendered":"Setup Environment, Dasar Dart dan OOP Menggunakan Dart"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">link repository untuk laporan ini <a href=\"https:\/\/github.com\/ZakyAH123\/Pratikum-1-AppMobile.git\">github<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Langkah Setup Dart<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Download Dart SDK melalui link <a href=\"https:\/\/dart.dev\/get-dart\/archive\">berikut<\/a><\/li>\n\n\n\n<li>Pastikan mendownload dari Stable Channel<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"393\" src=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-09-164421-1024x393.png\" alt=\"\" class=\"wp-image-750\" srcset=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-09-164421-1024x393.png 1024w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-09-164421-300x115.png 300w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-09-164421-768x294.png 768w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-09-164421.png 1153w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ekstrak file .zip kemudian tambahkan ..\/dart\/dart-sdk\/bin pada  PATH environment variabel<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" width=\"602\" height=\"664\" src=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141033-2.png\" alt=\"\" class=\"wp-image-752\" style=\"width:750px;height:auto\" srcset=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141033-2.png 602w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141033-2-272x300.png 272w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pastikan jika Dart berhasil di install dengan menjalankan kode &#8220;Dart&#8221; pada command promt jika berhasil maka tampilan akan seperti ini<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"593\" src=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141450-1-1024x593.png\" alt=\"\" class=\"wp-image-754\" srcset=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141450-1-1024x593.png 1024w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141450-1-300x174.png 300w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141450-1-768x445.png 768w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Screenshot-2025-09-04-141450-1.png 1103w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Membuat Project Dart Pertama<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Langkah-langkah untuk membuat project dart<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buka Terminal kemudian jalankan &#8220;dart create halo&#8221;<\/li>\n\n\n\n<li>kodingan itu akan membuat sebuah project dengan nama &#8220;halo&#8221;<\/li>\n\n\n\n<li>adapun struktur dari proejct dart yaitu\n<ul class=\"wp-block-list\">\n<li>bin\/ &#8211;&gt; berisikan file yang dapat dijalankan<\/li>\n\n\n\n<li>lib\/ &#8211;&gt;berisikan source code utama<\/li>\n\n\n\n<li>test\/ &#8211;&gt; berisikan file testing<\/li>\n\n\n\n<li>pubspecs.yaml\/ &#8211;&gt; berisikan file konfigurasi dan dependencies <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Dasar pemograman Dart<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">list<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/LIST\n  List&lt;String&gt; fruits = &#91;'apel', 'pukat', 'nanas', 'mangga', 'pisang'];\n  print(fruits);\n\n  \/\/Manupulasi LIST\n  fruits.add('jeruk'); \/\/menambah list\n  print(fruits);\n\n  fruits.remove('pukat'); \/\/menghapus list\n  print(fruits);\n\n  fruits&#91;0] = 'semangka'; \/\/menambah list di indeks-ke\n  print(fruits);\n\n  fruits.sort(); \/\/Menyusun list sesuai abjad (jika string)\n  print(fruits);\n\n  fruits.shuffle(); \/\/mengacak isi dari list termasuk indeksnya\n  print(fruits);\n\n  print(fruits.length); \/\/melihat ukuran list\n\n  print(fruits.first); \/\/melihat indeks pertama di list\n\n  print(fruits.last); \/\/melihat indeks terkahir dari list\n\n  print(fruits.contains('mangga')); \/\/bernilai true jika ada dalam list\n\n  print(fruits.indexOf('pisang')); \/\/melihat indeks ke- dari kata \"pisang\"\n\n  print(fruits.isEmpty); \/\/berilai true jika list kosong\n\n  print(fruits.isNotEmpty); \/\/bernilau true jika list ada isi<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Set<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/SET\n  Set&lt;String&gt; animal = {'kucing', 'ayam'};\n  print(animal);\n\n  \/\/MANIPULASI SET\n  animal.add('kambing');\n  print(animal);\n  animal.remove('kambing');\n  print(animal.length);\n  print(animal.contains('ayam'));\n  print(animal.isEmpty);\n  print(animal.isNotEmpty);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Map<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/MAP\n  Map&lt;String, String&gt; produk = {\n    'laptop': '10.000',\n    'mouse': '20.000',\n    'monitor': '40.000',\n  };\n  print(produk);\n\n  \/\/manipulasi map\n  produk&#91;'printer'] = '1.500.000';\n  print(produk);\n\n  produk.remove('monitor');\n  print(produk);\n\n  produk&#91;'laptop'] = '60.000';\n  print(produk);\n\n  print(&#91;produk.keys]);\n  print(produk.values);\n\n  print(produk.containsValue('40.000'));<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">perulangan<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ For-in loop\nfor (var fruit in fruits) {\n  print(fruit);\n}\n\n\/\/ For loop tradisional\nfor (var i = 0; i &lt; fruits.length; i++) {\n  print(fruits&#91;i]);\n}\n\n\/\/ ForEach untuk map\nproductPrices.forEach((key, value) {\n  print('$key: $value');\n});<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">TUGAS PRATIKUM 1<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Membuat Aplikasi Sederhana Mini Laundry<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Buatlah Aplikasi sederhana mini laundry menggunakan bahasa pemograman Dart dengan letentuan sebagai berikut<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Paket Cuci dan Setrika 1kg = Rp6.000<\/li>\n\n\n\n<li>Paket Cuci 1kg = Rp4.000<\/li>\n\n\n\n<li>Paket Setrika 1kg = Rp3.000<\/li>\n\n\n\n<li>Jika Total Laundry &gt;= Rp50.000 maka mendapatkan potongan harga 5% dan jika lebih dari Rp100.000 maka mendapatkan potongan harga 10%<\/li>\n\n\n\n<li>TAMPILKAN OUTPUT JUMLAH YANG HARUS DIBAYAR<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Kodingan<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import 'dart:io';\n\nvoid main() {\n  print(\"=== Mini Laundry ===\");\n  stdout.write(\"Masukkan total berat baju (kg): \");\n  double berat = double.parse(stdin.readLineSync()!);\n\n  print(\"\\nPilih paket:\");\n  print(\"1. Cuci &amp; Setrika (Rp6000\/kg)\");\n  print(\"2. Cuci saja (Rp4000\/kg)\");\n  print(\"3. Setrika saja (Rp3000\/kg)\");\n  stdout.write(\"Masukkan pilihan paket (1\/2\/3): \");\n  int pilihan = int.parse(stdin.readLineSync()!);\n\n  double hargaPerKg;\n  String namaPaket;\n\n  switch (pilihan) {\n    case 1:\n      hargaPerKg = 6000;\n      namaPaket = \"Cuci &amp; Setrika\";\n      break;\n    case 2:\n      hargaPerKg = 4000;\n      namaPaket = \"Cuci saja\";\n      break;\n    case 3:\n      hargaPerKg = 3000;\n      namaPaket = \"Setrika saja\";\n      break;\n    default:\n      print(\"Pilihan tidak valid!\");\n      return;\n  }\n\n  double totalHarga = berat * hargaPerKg;\n  double diskon = 0;\n\n  if (totalHarga &gt; 100000) {\n    diskon = 0.10; \/\/ 10%\n  } else if (totalHarga &gt; 50000) {\n    diskon = 0.05; \/\/ 5%\n  }\n\n  double potongan = totalHarga * diskon;\n  double totalBayar = totalHarga - potongan;\n\n  print(\"\\n=== Ringkasan Transaksi ===\");\n  print(\"Paket       : $namaPaket\");\n  print(\"Berat       : ${berat.toStringAsFixed(2)} kg\");\n  print(\"Harga\/kg    : Rp$hargaPerKg\");\n  print(\"Total awal  : Rp$totalHarga\");\n  print(\"Diskon      : ${diskon * 100}% (Rp$potongan)\");\n  print(\"Total Bayar : Rp$totalBayar\");\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Input dan Output<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">input dari kodingan ini yaitu Total berat baju dengan tipe Double dan pemilihan Paket dengan tipe Integer<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">output dari kodingan ini yaitu Jumlah hasil kali dari Total Berat Baju dengan harga Pemilihan Paket<br>setelah dikali baru dilakukan pengecekan jika total harga lebih dari 50.000 maka diskon 5%, dan jika lebih 100.000 maka diskon 10%<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"789\" height=\"528\" src=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-3.png\" alt=\"\" class=\"wp-image-758\" srcset=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-3.png 789w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-3-300x201.png 300w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-3-768x514.png 768w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">VERSI OOP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">untuk versi OOP memiliki 1 class yaitu Laundry, dimana didalam class ini terdapat:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>2 properti yaitu <code><strong>double berat; int paket;<\/strong><\/code><\/li>\n\n\n\n<li>1 constructor <code><strong>Laundry({required this.berat, required this.paket});<\/strong><\/code><\/li>\n\n\n\n<li>7 method double \n<ul class=\"wp-block-list\">\n<li><code><strong>getHargaPerKg()<\/strong><\/code><\/li>\n\n\n\n<li><code><strong>String getNamaPaket()<\/strong><\/code><\/li>\n\n\n\n<li><strong><code>double hitungTotal() =&gt; berat * getHargaPerKg();<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>double hitungDiskon()<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>double hitungPotongan() =&gt; hitungTotal() * hitungDiskon();<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>double hitungTotalBayar() =&gt; hitungTotal() - hitungPotongan();<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>void cetakStruk()<\/code><\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Kodingan<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">untuk class Laundry<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Laundry {\n  double berat;\n  int paket; \/\/ 1: Cuci &amp; Setrika, 2: Cuci, 3: Setrika\n\n  Laundry({required this.berat, required this.paket});\n\n  double getHargaPerKg() {\n    switch (paket) {\n      case 1:\n        return 6000;\n      case 2:\n        return 4000;\n      case 3:\n        return 3000;\n      default:\n        return 0;\n    }\n  }\n\n  String getNamaPaket() {\n    switch (paket) {\n      case 1:\n        return \"Cuci &amp; Setrika\";\n      case 2:\n        return \"Cuci saja\";\n      case 3:\n        return \"Setrika saja\";\n      default:\n        return \"Tidak diketahui\";\n    }\n  }\n\n  double hitungTotal() =&gt; berat * getHargaPerKg();\n\n  double hitungDiskon() {\n    double total = hitungTotal();\n    if (total &gt; 100000) return 0.10;\n    if (total &gt; 50000) return 0.05;\n    return 0;\n  }\n\n  double hitungPotongan() =&gt; hitungTotal() * hitungDiskon();\n\n  double hitungTotalBayar() =&gt; hitungTotal() - hitungPotongan();\n\n  void cetakStruk() {\n    print(\"\\n=== Ringkasan Transaksi ===\");\n    print(\"Paket       : ${getNamaPaket()}\");\n    print(\"Berat       : ${berat.toStringAsFixed(2)} kg\");\n    print(\"Harga\/kg    : Rp${getHargaPerKg()}\");\n    print(\"Total awal  : Rp${hitungTotal()}\");\n    print(\"Diskon      : ${hitungDiskon() * 100}% (Rp${hitungPotongan()})\");\n    print(\"Total Bayar : Rp${hitungTotalBayar()}\");\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">untuk main<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import 'dart:io';\nimport 'laundry.dart';\n\nvoid main() {\n  print(\"=== Mini Laundry OOP ===\");\n  stdout.write(\"Masukkan total berat baju (kg): \");\n  double berat = double.parse(stdin.readLineSync()!);\n\n  print(\"\\nPilih paket:\");\n  print(\"1. Cuci &amp; Setrika (Rp6000\/kg)\");\n  print(\"2. Cuci saja (Rp4000\/kg)\");\n  print(\"3. Setrika saja (Rp3000\/kg)\");\n  stdout.write(\"Masukkan pilihan paket (1\/2\/3): \");\n  int pilihan = int.parse(stdin.readLineSync()!);\n\n  \/\/ Membuat objek Laundry\n  Laundry laundry = Laundry(berat: berat, paket: pilihan);\n\n  \/\/ Cetak hasil\n  laundry.cetakStruk();\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Output<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"417\" src=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-4.png\" alt=\"\" class=\"wp-image-759\" srcset=\"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-4.png 772w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-4-300x162.png 300w, https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/image-4-768x415.png 768w\" sizes=\"(max-width: 772px) 100vw, 772px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>link repository untuk laporan ini github Langkah Setup Dart Membuat Project Dart Pertama Langkah-langkah untuk membuat project dart Dasar pemograman [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":760,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-740","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laporan"],"jetpack_featured_media_url":"https:\/\/sungaipuar.info\/wordpress\/wp-content\/uploads\/2025\/09\/Desain-tanpa-judul.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/posts\/740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/comments?post=740"}],"version-history":[{"count":4,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/posts\/740\/revisions"}],"predecessor-version":[{"id":766,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/posts\/740\/revisions\/766"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/media\/760"}],"wp:attachment":[{"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/media?parent=740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/categories?post=740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sungaipuar.info\/wordpress\/wp-json\/wp\/v2\/tags?post=740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}