/ENGINEERING

Mari Berkenalan Dengan Dart

Dart merupakan sebuah bahasa pemrograman yang dikembangkan oleh Google untuk membangun aplikasi mobile, desktop, backend dan web. Mungkin bagi teman-teman yang sudah familiar ngoding javascript, belajar Dart bukanlah hal yang terlalu menyulitkan.

  • Flutter merupakan Framework Dart untuk membuat aplikasi baik Android maupun iOS atau dengan katalain aplikasi cross-platform.
  • Web merupakan pengembangan Dart dalam dunia Web, terutama dalam hal front-end, yang dimana kode program yang ditulis dengan Dart dikompilasi (transpile) menjadi javascript sehingga dapat dimengerti oleh web browser. Sebagai contoh AngularDart.
  • Server/CLI merupakan pengembangan Dart dalam pembuatan aplikasi berbasis text (CLI), backend, IoT dan sebagainya. Sebagai contoh Exspress.

Nah disini gw nggak akan bahas bagaimana implementasi Dart untuk web, mobile mauapun server. Melainkan gw bakal bahas dasar-dasar dari Dart, seperti :

  • Tipe Data
  • Variabel
  • Operator

    1. Arithmetic
    2. Relational
    3. Type Test
    4. Assigment
    5. Conditional
    6. Ternary
  • Loop Control

Tipe Data

Bahasa pemrograman Dart memiliki tipe data seperti dibawah ini.

Tipe DataDefault
Stringnull
Integer | Doublenull
Booleannull
List | Setnull
Mapsnull
Runesnull

Semua tipe data dalam bahasa pemrograman Dart memiliki default value null, dan untuk tipe data String, Integer, Double dan Maps mungkin sudah tidak asing lagi ditelinga kalian.

  1. Tipe data Set merupakan tipe data sejenis List, namun akan menghapus value yang memiliki nilai yang sama. Sehingga tidak ada duplikat value seperti dibawah ini.

    void main(){
        var data = Set();
        data.add("1");
        data.add("2");
        data.add("2");
        print(data);
    }

    dan hasilnya akan seperti dibawah ini.

    {1, 2} 
  2. Tipe data Runes atau Unit Code merupakan sebuah tipe data yang digunakan untuk membaca String yang memiliki deretan kode unit UTF-32, karena secara default String merupakan menggunakan kode unit UTF-16. untuk menggunakan Runes, diperlukan library dart:core.

    main() {
        var clapping = '\u{1f44f}';
        print(clapping);
        print(clapping.codeUnits);
        print(clapping.runes.toList());
        Runes input = new Runes(
      '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');
        print(new String.fromCharCodes(input));
    }

    dan hasilnya seperti dibawah ini.

    👏
    [55357, 56399]
    [128079]
    ♥  😅  😎  👻  🖖  👍

Variabel

Deklarasi variabel di Dart dapat dideklarasikan secara eksplisit maupun implisit, sebagai contoh.

    var nama = "Wahyu Permadi"

Deklarasi variabel diatas merupakan salah satu contoh deklarasi secara implisit, karena tidak memberitahukan tipe data dari variabel nama itu apa, bisa string, int, dsb. Tipe variabel jika dideklarasikan secara implisit akan bergantung dari value yang di-assign, dan variabel nama tersebut secara tidak langsung bertipe data String, karena di-assign sebuah String value. Contoh deklarasi secara eksplisit adalah seperti dibawah ini.

    String nama = "Wahyu Permadi"

Jika ingin membuat sebuah variabel yang nilainya bersifat tetap, dapat menggunakan const maupun final. Keduanya memiliki perbedaan, dimana const akan dibuat ketika aplikasi pertama kali di compile atau dengan kata lain compile-time variabel. Sedangkan final adalah variabel yang dibuat pada saat runtime. Penggunannya seperti contoh dibawah ini.

    const phi = 3.14; 
    // nilai phi tetap dan diketahui sebelum runtime
    final dateNow = new DateTime.now(); 
    // nilai datenow hanya diketahui pada saat runtime, jadi gunakan final

Operator Arithmetic

Operator arithmetic merupakan operator yang digunakan untuk melakukan perhitungan mamtematis, contoh dari operator arithmetic adalah sebagai berikut.

OperatorMeaning
+Add
-Substract
*Multiply
/Divide
%Modulo
-exprUnary Minus
~/Divide (Return Integer)
++Increment
Decrement

Contoh penggunaan dari operator arithmetic adalah sebagai berikut.

void main(){
    print(1 + 1);
    print(5 - 2);
    print(3 * 3);
    print(4 / 2);
    print(5 % 2);
    print(-5);
    print(5 ~/ 2);
    var increment = 0;
    print(++increment);
    var decrement = 5;
    print(--decrement);
}
1+1 = 2
5-2 = 3
3*3 = 9
4/2 = 2
5%2 = 1
-(5)= -5
5 ~/ 2 = 2 (return always integer not double)
++increment = 1 (increment = increment + 1) 
--decrement = 4 (decrement = decrement - 1)

Operator Relational

Operator relational merupakan operator yang digunakan untuk menentukan relasi atau hubungan dari duah buah operand. Operator relational ditempatkan untuk membandingkan dua ekspresi yang kemudian hasilnya menentukan apakah benar atau tidaknya hasil operasi itu. Contoh dari operator relational dapat dilihat dibawah ini.

OperatorMeaning
>Greater Than
<Less Than
>=Greater Than or Equal To
<=Less Than or Equal To
==Equal To
!=Not Equal To

contoh penggunaannya sebagai berikut.

void main(){
    print(3 > 1); //true
    print(5 < 10); //true
    print(3 >= 3); //true
    print(5 <= 6); //true
    print(10 == 10); //true
    print(10 != 5); //true
    print(10 == 9); //false
}

Operator Type Test

Operator type test biasanya digunakan untuk mengecek apakah suatu variabel/object memiliki tipe data sesuai apa yang diinginkan. Contoh dari operator type test seperti dibawah ini.

OperatorMeaning
isTrue if the object has specified type
is!True if the object has not specified type

Contoh penggunaannya seperti dibawah ini.

void main(){
    var nama = "Wahyu Permadi";
    print(nama is String); // true
    
    var jumlah = 100;
    print(jumlah is Map); // false
}

Seperti contoh diatas, dimana dilakukan type checking terhadapat variabel dengan nama name dan jumlah, untuk variabel name is String return True, karena benar variabel tersebut adalah String, sedangkan variabel jumlah is Map return False karena tipe dari variabel jumlah adalah Integer bukan Map.

Operator Assigment

Operator assigment merupakan operator yang digunakan untuk memberikan suatu nilai ke sebuah variabel. Contoh dari operator assigment adalah sebagai berikut.

OperatorMeaning
=Assign value from right operand to left operand
??=Assign value only if the value is null

contoh penggunannya seperti ini.

void main(){
    var nama = "Wahyu";
    nama = "Wahyu Permadi";
    
    String title = "Wahyu";
    title ??= "Putu Wahyu";
    
    String jobs = null;
    jobs ??= "Android Engineer";
    
    print(nama);
    print(title);
    print(jobs);
}

Hasilnya sudah pasti bisa kalian tebak dong bagaimana, okeh jadi hasilnya seperti ini.

Wahyu Permadi
Wahyu
Android Engineer

Nah operator ??= hanya akan mengisi variabel tersebut jika variabel yang akan di-assign null, itulah mengapa pada variabel title valuenya tidak berubah.

Operator Conditional

Operator conditional merupakan operator yang digunakan untuk mengecek kondisi dari satu, dua atau lebih boolean expressions. Contoh operator conditional adalah sebagai berikut.

OperatorMeaning
&&Return true if all conditions are true
IIReturn true if any one conditions are true
!Return the inverese of the result

Contoh implementasinya sebagai berikut.

void main(){
    var isWahyuMale = true;
    var isWahyuStupid = true;
    print(isWahyuMale && isWahyuStupid);
    
    var isWahyuGanteng = true;
    var isWahyuDokter = false;
    print(isWahyuGanteng && isWahyuDokter);
    
    print(isWahyuGanteng || isWahyuDokter);
    
    print(!isWahyuGanteng);
}

Nah dari contoh implementasi diatas, sudah bisa ditebak dong hasilnya bagaimana. Yap benar hasilnya seperti dibawah ini.

true
false
true
false

Operator Ternary

Operator ternary bisa dikatakan operator seperti if-else namun lebih pendek penulisannya, sebagai contoh disini kita akan mengecek apakah seseorang ini benar adalah wahyu, jika benar maka print("wahyu") jika tidak maka print("bukan"). Pertama kita gunakan if-else seperti dibawah ini.

    void main(){
        var isThisWahyu = true;
    
        if(isThisWahyu){
            print("wahyu");
        }else{
            print("bukan");
        }
    }

Nah dengan ternary operator, kita dapat mempersingkatnya menjadi.

    void main(){
        var isThisWahyu = true;
        isThisWahyu ? print("wahyu") : print("bukan");
    }

Cukup mudah bukan untuk dipahami, ? digunakan untuk kondisi true, dan : digunakan sebagai pengganti else.

Loop Control

Perulangan didalam bahasa pemrograman Dart bisa menggunakan For, While dan Do-While.

  1. For sendiri memerlukan initial count value, termination condition dan step. Contoh penggunaan dari For seperti ini.

    void main() { 
    var num = 5; 
    var factorial = 1; 
    
    for( var i = num ; i >= 1; i-- ) { 
      factorial *= i ; 
    } 
    }

    var i = num merupakan initial count value, i >= 1 merupakan termination condition (bertujuan agar tidak loopoing foreva), dan i-- merupakan step.

  2. Penggunaan While memerlukan termination condition dan step seperti ini.

    void main() { 
    var num = 5; 
    var factorial = 1; 
    
    while(num >= 1){
     factorial*=num;
     num--;
    }
    }

    num >= 1 merupakan termination condition dan num-- merupakan step.

  3. Dan yang terakhir penggunaan Do-While, Do-While sendiri melaukan proses terlebih dahulu, baru kemudian melakukan checking kondisi. seperti dibawah ini.

    void main() { 
    var num = 5; 
    var factorial = 1; 
    
        do{
            factorial*=num;
            num--;
        }while(num >= 1);
    }

Terimakasih, sekian dari saya semoga artikel ini bermanfaat dan jika ada kekurangan bisa dibantu untuk create issue di github sata, terimakasih :)

References

  1. Dart.dev
  2. Tutorialspoint