Perulangan dan Uji Kondisi (1)

Mʀ Bee
5 min readNov 14, 2016

--

Sejauh ini, kita telah mengenal beberapa operator dan penanda (literal)¹ berikut ini:

  • ; (titik koma) untuk pemisah perintah dalam satu baris,
  • pasangan {} (kurung kurawal) untuk penanda kelompok perintah,
  • // (dua garis miring) untuk penanda komentar dalam satu baris,
  • pasangan /**/ (garis miring dan bintang) untuk penanda komentar lebih dari satu baris.
  • = (sama dengan) untuk memberi nilai pada sebuah penyimpan,
  • : (titik dua) untuk menyatakan tipe data pada pembuatan penyimpan,
  • pasangan <> (kurung sudut) untuk penanda tipe data pada perintah pembuatan penyimpan bertipe data himpunan,
  • pasangan () (kurung) untuk penanda elemen pada nilai bertipe data kelompok gabungan (tuples),
  • pasangan [] (kurung siku) untuk penanda elemen pada nilai bertipe data deret, himpunan, dan kamus,
  • , (koma) untuk pemisah dalam pembuatan beberapa penyimpan dalam satu baris atau pemisah elemen pada tipe data kelompok,
  • ? (tanda tanya) di akhir tipe data untuk menyatakan tipe data tersebut bersifat tak-tentu, dan
  • ! (tanda seru) di akhir suatu penyimpan untuk memaksa nilai bertipe data tak-tentu menjadi tipe data tetapnya.

Tanpa terasa kita sudah menggunakan operator. Tapi, apakah operator itu?

Operator

Operator adalah simbol yang menjadi bagian dari struktur sebuah perintah agar perintah tersebut bisa dikerjakan dengan tepat dan benar. Bisa dibilang operator itu seperti tanda baca dalam bahasa manusia. Kurang atau keliru atau salah posisi bisa menyebabkan salah arti atau bahkan tak bisa dibaca. Bedanya, bahasa pemrograman tak mengenal kompromi. Hilang satu saja tanda baca (operator), komputer menjadi sama sekali tak bisa menjalankan perintah yang dimaksud.

Ada cukup banyak operator dalam bahasa Swift, tapi untuk awalan kita bahas operator-operator yang penting dan sering digunakan. Operator lainnya akan dijelaskan pada saat operator tersebut dibutuhkan dalam contoh program.²

Operator aritmatika

Operator aritmatika adalah operator perhitungan yang terdiri dari:

  1. Operasi penjumlahan dengan tanda + (tambah).
  2. Operasi pengurangan dengan tanda - (kurang).
  3. Operasi perkalian dengan tanda * (bintang).
  4. Operasi pembagian dengan tanda / (garis miring).
  5. Operasi sisa-bagi (modulo) dengan tanda % (persen).

Contoh:

let a = 1 + 2       // a = 3
let b = 4 - 3 // b = 1
let c = 5 * 5 // c = 25
let d = 6 / 4 // d = 1
let e = 6.0 / 4.0 // e = 1.5
let f = 9 % 7 // f = 2

Perhatikan perbedaan hasil perhitungan penyimpan d dan e pada contoh di atas. Anda tentu bertanya, mengapa operator yang sama pada bilangan yang sama bisa menghasilkan nilai yang berbeda?

Seperti yang telah dijelaskan pada bahasan nilai dan tipe data, penulisan 6/4 tidak sama dengan 6.0/4.0. Penulisan yang pertama adalah penulisan bilangan bulat sehingga operasi pembagian bekerja dengan bilangan bulat. Sementara penulisan yang kedua adalah penulisan bilangan pecahan sehingga operasi pembagian bekerja dengan bilangan pecahan. Pembagian bilangan bulat di Swift menghasilkan bilangan bulatnya saja. Dengan begitu 6/4 hasilnya adalah 1, bukan 1.5, dan 6.0/4.0 hasilnya adalah 1.5.

Jadi, hati-hati dalam penulisan operasi pembagian. Pastikan tipe data yang diberikan telah sesuai dengan yang diinginkan. Operasi pembagian bilangan pecahan mensyaratkan minimal salah satu bilangannya harus bertipe bilangan pecahan.

Keterangan: Bagi yang tidak paham, operasi sisa-bagi adalah sisa bilangan dari hasil operasi pembagian dua bilangan bulat. Contoh:
8 % 4 = 0 karena 8 habis dibagi 4 (tanpa sisa);
9 % 2 = 1 karena bilangan terdekat ke 9 yang habis dibagi 2 adalah 8 sehingga 9 dikurangi 8 adalah 1;
7 % 5 = 2 karena bilangan terdekat ke 7 yang habis dibagi 5 adalah 5 sehingga 7 dikurangi 5 adalah 2;
3 % 6 = 3 karena bilangan terdekat ke 3 yang habis dibagi 6 adalah 0 sehingga 3 dikurangi 0 adalah 3;
dan seterusnya.

Secara bawaan, operator aritmatika hanya berlaku untuk nilai bertipe data bilangan (bulat dan pecahan). Kecuali operator penjumlahan juga berlaku pada nilai bertipe data teks yang fungsinya untuk menggabungkan dua nilai teks menjadi satu nilai. Contoh:

var s = "Hello " + "World"  // var s berisi nilai "Hello World"

Urutan prioritas perhitungan
Seperti umumnya bahasa pemrograman, operator di Swift juga memiliki urutan prioritas (precedence) perhitungan agar hasil perhitungan tidak ambigu atau hasilnya bisa berbeda-beda. Operator yang memiliki urutan prioritas lebih tinggi diproses terlebih dahulu daripada operator yang memiliki urutan prioritas lebih rendah. Berikut urutan prioritas dari yang tertinggi ke yang terendah:

  • kelompok perhitungan yang diapit () (tanda kurung),
  • perkalian dan pembagian, termasuk sisa-bagi,
  • penjumlahan dan pengurangan.

Selain urutan prioritas, operator juga memiliki keterikatan (associativity). Ada dua jenis keterikatan, yaitu keterikatan kiri (left associativity) dan keterikatan kanan (right associativity). Keterikatan di sini artinya operator lebih mengutamakan bergabung dengan sisi sebelah mana, kiri atau kanan. Ketika operator yang berurutan prioritas sama maka pertimbangan selanjutnya adalah keterikatan.

Contoh:

let x = 2 + 3 % 4 * 5   // berapakah nilai x ?

Jika kita menghitung dari kiri ke kanan maka cara menghitungnya adalah ((2+3)%4)*5 dengan hasil 5. Tapi di bahasa Swift cara menghitungnya adalah 2+((3%4)*5) dengan hasil 17. Ini dampak adanya urutan prioritas perhitungan dan keterikatan operator. Jika Anda tak yakin bagaimana cara berhitung yang benar di Swift, atau ingin mengubah urutan prioritas, maka gunakanlah tanda kurung (prioritas tertinggi) untuk mengubah urutan perhitungan. Contoh:

let x = 2 * 3 % 4 + 5     // = ((2*3)%4)+5 = 7
let y = 2 * 3 % (4 + 5) // = (2*3)%(4+5) = 6

Operator perbandingan

Operator perbandingan adalah operator untuk mengetahui perbandingan antara dua nilai yang bertipe data sama. Operator perbandingan terdiri dari:

  1. Operator kesamaan (equal) dengan tanda == (dua sama dengan),
  2. Operator ketidaksamaan dengan tanda != (tanda seru dan sama dengan).
  3. Operator lebih dari, dengan tanda > (lebih besar),
  4. Operator kurang dari, dengan tanda < (kurang dari),
  5. Operator lebih dari atau sama dengan, dengan tanda >= (lebih dari dan sama dengan),
  6. Operator kurang dari atau sama dengan, dengan tanda <= (kurang dari dan sama dengan).
  7. Operator ke-identik-an (identical) dengan tanda === (tiga sama dengan),
  8. Operator ke-tidak-identik-an dengan tanda !== (tanda seru dan dua sama dengan).

Bagi yang pernah belajar matematika tingkat Sekolah Dasar, pasti sudah paham makna operator nomor 1 hingga nomor 6. Kecuali pada operator kesamaan, == di Swift persis sama dengan = di matematika.³ Namun, jika dalam matematika itu operator perbandingan hanya berlaku pada bilangan, maka dalam bahasa pemrograman, termasuk Swift, operator perbandingan berlaku pada semua nilai bertipe data apa pun. Contoh:

"abc" == "ABC"   // bernilai salah 
"def" != "DEF" // bernilai benar
"Abc" > "abc" // bernilai salah
"ABC" < "abc" // bernilai benar
7.7 == 7.6 // bernilai salah
8.0 >= 8.0 // bernilai benar
120 <= 121 // bernilai benar

Untuk operator nomor 7 dan 8, ini berkaitan dengan penjelasan nilai tak-tentu pada bahasan sebelumnya. Dalam pemrograman, dimungkinkan ada dua (atau lebih) penyimpan yang menunjuk ke nilai pada lokasi memori yang sama. Operator 7 dan 8 berfungsi untuk membandingkan arah penunjuknya, bukan nilainya. Dua penyimpan yang mengarah ke lokasi memori yang sama disebut identik, sebaliknya disebut tak-identik. Lebih rinci tentang operasi ke-identik-an akan kita bahas pada bab yang akan datang.

Tips: Karena dalam Swift ada operator =, ==, dan === maka penulisan tanda sama dengan harus hati-hati dan pastikan sesuai dengan maksud yang diinginkan agar tidak muncul kesalahan program.

bersambung ke bagian 2

__________

Catatan kaki:

¹ Saya menyederhanakan pengertian operator dan penanda (literal) menjadi semuanya operator dengan pemahaman lebih ke tanda baca. Ini supaya pembelajar pemula tidak dipusingkan dengan berbagai istilah. Makna yang lebih rinci dan lebih tepat, operator adalah simbol yang berkaitan dengan operasi kelola nilai (mengisi, mengubah, menggabungkan, dan seterusnya). Sedangkan penanda adalah simbol yang berkaitan dengan tata penulisan kode program (pemisah, pengkhususan, tanda, dan sebagainya). Semoga pembaca yang sudah mahir bisa maklum.

² Daftar lengkap operator dalam bahasa Swift bisa dibaca di sini.

³ Operator kesamaan di Swift terpaksa harus menggunakan tanda == karena tanda = telah digunakan sebagai operator pemberian nilai ke penyimpan.

--

--

Mʀ Bee

is an Apple’s Swift programming language enthusiast.