📜

Dasar-Dasar Pemrograman Dart

Jul 17, 2024

Dasar-Dasar Pemrograman Dart

Pengenalan

  • Pengajar: Eko Kurniawan Khannedy, teknik arsitek di e-commerce, pengalaman > 10 tahun.
  • Platform pengajaran: YouTube, programmer zaman now.
  • Komunikasi: Telegram, sosial media programmer zaman now (FB, IG, YouTube, Telegram).
  • Materi: Pemrograman Dart (dasar).
  • Dart: Bahasa yang dikenalkan 2011 oleh Google, untuk platform web dan mobile, open-source (dart.dev).

Instalasi Dart SDK

  • Dart SDK: Perlu untuk kompilasi dan menjalankan kode Dart.
  • Platform: Windows (choco), Linux (apt-get), Mac (brew).
  • Pengaturan PATH: Tambahkan direktori ‘bin’ dalam PATH sistem operasi.
  • Verifikasi: ‘dart --version’ harus menunjukkan versi Dart terinstal.
  • Text Editor: Disarankan Visual Studio Code, IntelliJ, atau Android Studio.

Struktur Proyek Dart

  • Struktur dasar: ‘bin’ folder untuk kode utama.
  • Good practices: Penamaan file dan variabel menggunakan lower_case_with_underscores.

Program Hello World

  • Membuat file ‘hello_world.dart’ di folder ‘bin’.
  • Main function: void main() { print('Hello World'); }.
  • Jalankan kode: dart run bin/hello_world.dart atau langsung dari Android Studio.

Variabel

  • Deklarasi variabel: String name = 'Eko'; atau var name = 'Eko'; untuk deteksi otomatis tipe data.
  • Final keyword: Variabel tidak bisa deklarasi ulang, misalnya `final String name = ‘Eko’.
  • Konst keyword: Variabel dan nilainya tidak bisa diubah sama sekali, misalnya `const String name = ‘Eko’.
  • Lat keyword: Deklarasi variabel secara lazy (diakses nanti saja), late String name;.

Komentar

  • Single line: // This is a comment.
  • Multi-line: /* This is a multi-line comment */.
  • Documentation: /// This is documentation comment.

Tipe Data

  • Number: Integer (int), Double (double).
  • Boolean: bool, nilai true atau false.
  • String: String, kutip satu atau dua. Mendukung string interpolation dengan $variable atau ${expression}.
  • List: Koleksi data, bisa deklarasi langsung atau tahap per tahap. Misal: List<int> numbers = [1, 2, 3];.
  • Set: Koleksi data unik. Misal: Set<int> numbers = {1, 2, 3};.
  • Map: Kumpulan key-value. Misal: Map<String, String> user = {'first': 'Eko', 'last': 'Khannedy'};.
  • Dynamic: Tipe data yang bisa berubah, dynamic variable = 1; variable = ‘String’;

Operator

  • Aritmatika: +, -, *, /, ~/ (integer division), %.
  • Perbandingan: ==, !=, >, <, >=, <=.
  • Logika: && (and), || (or), ! (not).
  • Pengkibatkan: =, +=, -=, *=, /=, %=, dll.
  • Inkremen/dekremen: ++, -- (Pre/Post).
  • Null-check: ?? untuk default value, ?. untuk safe call.

Control Flow

  • If/Else: Percabangan biasa, if (condition) { ... } else { ... }.
  • Else If: Percabangan lebih dari satu kondisi, if (...) { ... } else if (...) { ... } else { ... }.
  • Switch-case: Alternatif if-else, switch (variable) { case 'value': ... ; break; default: ... ; }.
  • Ternary Operator: condition ? true-value : false-value.

Perulangan

  • For-loop: for (initialization; condition; increment) { ... }.
  • While-loop: while (condition) { ... }.
  • Do-While-loop: do { ... } while (condition); – minimal dijalankan sekali.
  • Break/Continue: break menghentikan perulangan, continue lompati iterasi saat ini.
  • For-in Loop: Untuk iterasi pada List/Set. for (var element in collection) { ... }.

Function

  • Deklarasi: void functionName() { ... }.
  • Parameter: String functionName(String param) { ... }
  • Optional Parameter: [String? param].
  • Named Parameter: void functionName({String? param}) { ... }
  • Default Value: {String param = 'default'}.
  • Return Value: Ganti void dengan tipe data. String functionName() { return 'Hello'; }.
  • Short Expression: Untuk single line function, int add(int a, int b) => a + b;.
  • Inner Function: Fungsi dalam fungsi, hanya dapat diakses dalam fungsi tersebut.
  • High Order Function: Fungsi yang menerima fungsi lain sebagai parameter atau mengembalikan fungsi. void functionName(Function callback) { ... }
  • Anonymous Function: Fungsi tanpa nama, var func = (String param) { ... };

Main Function

  • Tambahkan parameter opsional: void main(List<String> args) { ... }
  • Parameter ini menerima argumen dari perintah dart run.

Scope

  • Hanya bisa diakses dalam blok tempat mereka dibuat.
  • var variable dalam function hanya bisa diakses dalam function tersebut.

Closer

  • Fungsi berinteraksi dengan variabel di scope yang sama.
  • Hati-hati penggunaan berlebihan bisa membingungkan.
  • Contoh: int counter = 0; void increment() { counter++; }.

Rekursi

  • Fungsi memanggil dirinya sendiri.
  • Solusi sederhana untuk permasalahan seperti faktorial.
  • Hati-hati terhadap stack overflow jika rekursinya terlalu dalam.