Pada Modul 1 anda diharapkan telah menginstall Python dan mengerti cara membuka dan menggunakan program IDLE, baik pada mode interaktif maupun pada mode Editor. Di modul ini anda akan belajar materi berikut ini:
Seperti yang sudah disampaikan sebelumnya, bahwa komputer sangat ahli dalam menghitung. Sekarang kita akan melihat penggunaan Python untuk menghitung dengan menggunakan bilangan integer maupun float yang dioperasikan melalui sejumlah operator aritmatik. Sebagai contoh, kita dengan mudah bisa menggunakan Python Prompt sebagai kalkulator seperti di bawah ini:
Tanda +
pada kode di atas disebut operator sementara nilai
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]0 dan
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]1 biasa disebut sebagai operan.
Anda dapat mencoba-coba dengan kombinasi nilai dan operator lain yang anda ketahui, coba juga jika terdapat sangat banyak nilai dan operator.
Note
Perhatikan bahwa antara operan dan operator terdapat sebuah spasi. Hal ini tidaklah wajib di Python, namun sangat dianjurkan menambahkan sebuah spasi agar kode lebih mudah dibaca.
Operator Aritmatika Dasar
Ada banyak jenis operator di pemrograman, saat ini kita akan melihat dulu operator aritmatika. Berikutnya di Modul 3 anda akan belajar operator perbandingan, dan di Modul 4 tentang operator boolean/logika.
Beberapa operator tentu sudah tidak asing bagi anda, seperti:
tambah [
+
]kurang [
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
3]kali [
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
4]bagi [
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
5]pangkat [
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
6]
namun mungkin ada yang baru mendengar tentang operator berikut ini:
modulo [
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
7]integer division [
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
8]
Mari kita bahas penggunaannya satu per satu di Python.
Pemangkatan
Tanda dua bintang [double asterisk]
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]6 digunakan sebagai tanda operasi pemangkatan bilangan. Sebagai contoh 23 dapat ditulis di dalam Python sebagai
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]0. Angka kiri
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]1 disebut sebagai basis dan angka kanan
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]2 sebagai pangkat.
Basis dan pangkat dapat berupa integer atau pun float, dan tipe data hasil pemangkatan tergantung tipe data operan. Coba jalankan kode di bawah ini satu per satu, dan perhatikan hasilnya untuk memahami aturan tipe data hasil.
>>> print[2 ** 4] >>> print[2 ** 4.] >>> print[2. ** 4] >>> print[2. ** 4.]
Terlihat bahwa tipe data hasilnya:
integer: ketika kedua operan bertipe integer
float: ketika setidaknya satu operan bertipe float
Perkalian dan Pembagian
Simbol satu bintang [asterisk]
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]4 digunakan sebagai operator perkalian, sementara garis miring [slash]
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]5 sebagai operator pembagian.
Baik operan di sebelah kiri maupun di sebelah kanan dapat berupa integer maupun float. Jalankan kode di bawah ini untuk melihat aturan tipe data hasil untuk perkalian dan pembagian.
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
Terlihat bahwa untuk perkalian, aturan tipe data hasil sama seperti pada pemangkatan.
Sedangkan untuk pembagian, tipe data hasil selalu berupa float.
Integer division
Simbol dua garis miring [double slash]
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]8 adalah operator integer division.
Sifat operasi integer division adalah:
hasil pembagiannya selalu berupa pembulatan ke nilai integer yang lebih kecil atau sama dengan nilai realnya, artinya tidak memperhatikan bagian pecahan [jika ada]
tipe data hasilnya mengikuti aturan integer vs float seperti pada perkalian
Jalankan kode di bawah ini dan perhatikan hasilnya untuk memahami cara kerja operator ini.
Perhatikan bahwa hasil pembagian
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]6 adalah
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]7, bukan
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]8 seperti pada pembagian biasa. Hal ini didapatkan dengan membulatkan nilai hasil pembagian biasa menjadi bilangan integer dengan nilai yang sama atau lebih kecil. Hasil pembagian biasa adalah
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]8 dan integer terdekat yang nilainya sama atau lebih kecil adalah
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]7.
Operan negatif
Jika anda telah memahami cara kerja operator ini, dapatkah anda menebak apa output kode berikut ini?
Jika kita kurang teliti, mungkin kita akan menjawab dengan
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]1, namun jika anda jalankan akan terlihat bahwa hasilnya adalah
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]2. Hal ini dikarenakan hasil pembagian biasa adalah
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]3 dan integer terdekat yang lebih kecil adalah
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]2, sedangkan
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]1 lebih besar dari
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]3.
Aturan Tipe Data Hasil
Kemudian, meskipun kita membulatkan ke integer, namun tipe data hasilnya tergantung tipe data operan, sehingga tidak selalu integer. Jalankan kode di bawah ini untuk mengetahui aturan tipe data hasil integer division.
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]
Terlihat bahwa aturannya mengikuti aturan perkalian.
Kapan Integer Division digunakan?
Berikut satu contoh kasus dimana kita perlu menggunakan integer division. Anggaplah anda membuat program kasir swalayan untuk menghitung jumlah kupon yang diberikan kepada pembeli. Aturannya mudah sekali, yaitu 1 kupon untuk setiap kelipatan Rp. 100.000,-. Ketika ada pembeli yang belanja Rp. 250.000, berapa kupon yang harusnya ia dapatkan?
Ia akan mendapat 2 buah kupon, dan anda dapat menghitungnya dengan mudah menggunakan integer division:
Modulo
Simbol persen
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]7 merupakan operator modulo pada Python. Operasi modulo adalah untuk mendapatkan sisa bagi setelah proses integer division.
Sebagai contoh:
>>> print[6 // 3] >>> print[6 // 3.] >>> print[6. // 3] >>> print[6. // 3.]
8 adalah>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
7. Karena dari nilai>>> print[-12 % 5] >>> print[12 % -5]
0 tersebut,>>> print[-12 % 5] >>> print[12 % -5]
1-nya habis dibagi dengan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1, sehingga menyisakan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
7.>>> print[-12 % 5] >>> print[12 % -5]
4 adalah>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1. Karena dari nilai>>> print[-12 % 5] >>> print[12 % -5]
6 tersebut,>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
0-nya habis dibagi dengan>>> print[-12 % 5] >>> print[12 % -5]
0, sehingga menyisakan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1.
Jika dijabarkan melalui operasi dasar lainnya, maka operasi modulo 12
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]7 5 terdiri dari:
12
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
8 5 menghasilkan 22
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
4 5 menghasilkan 1012
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
3 10 menghasilkan 2
Sehingga hasil akhirnya adalah 12
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]7 5
>>> print[12 % 5] >>> print[12 % 5.0] >>> print[12.0 % 5] >>> print[12.0 % 5.0]5 2
Dengan melakukan operasi seperti di atas, apakah output dari kode berikut?
Bagaimana dengan hasil operasi berikut ini? Bisakah anda menebak hasilnya?
Dengan cara yang sama kita bisa jabarkan:
>>> print[12 % 5] >>> print[12 % 5.0] >>> print[12.0 % 5] >>> print[12.0 % 5.0]
6 menghasilkan>>> print[12 % 5] >>> print[12 % 5.0] >>> print[12.0 % 5] >>> print[12.0 % 5.0]
7>>> print[12 % 5] >>> print[12 % 5.0] >>> print[12.0 % 5] >>> print[12.0 % 5.0]
8 menghasilkan>>> print[12 % 5] >>> print[12 % 5.0] >>> print[12.0 % 5] >>> print[12.0 % 5.0]
9>>> print[25 % 2] >>> print[20 % 2]
0 menghasilkan>>> print[25 % 2] >>> print[20 % 2]
1
Maka jawabannya adalah
>>> print[25 % 2] >>> print[20 % 2]1
Operan Negatif
Bagaimana jika terdapat operan bernilai negatif? Coba tebak apa output dari kode berikut ini:
>>> print[-12 % 5] >>> print[12 % -5]
Dengan cara yang sama kita bisa jabarkan
>>> print[25 % 2] >>> print[20 % 2]3 menjadi:
>>> print[25 % 2] >>> print[20 % 2]
4 menghasilkan>>> print[25 % 2] >>> print[20 % 2]
5>>> print[25 % 2] >>> print[20 % 2]
6 menghasilkan>>> print[25 % 2] >>> print[20 % 2]
7>>> print[25 % 2] >>> print[20 % 2]
8 menghasilkan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
2
Sedangkan
>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]0 menjadi:
>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
1 menghasilkan>>> print[25 % 2] >>> print[20 % 2]
5>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
3 menghasilkan>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
1>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
5 menghasilkan>>> print[25 % 2] >>> print[20 % 2]
5
Operan Kiri Lebih Kecil
Bagaimana jika operan kiri lebih kecil dari operan kanan?
Tetap lakukan cara sebelumnya, yaitu
>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]7 menjadi:
>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
8 menghasilkan>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
9>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
0 menghasilkan>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
9>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
2 menghasilkan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1
maka jawabannya adalah
>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]1
Aturan Tipe Data Hasil
Untuk aturan tipe data hasil mengikuti aturan perkalian dan integer division.
>>> print[12 % 5] >>> print[12 % 5.0] >>> print[12.0 % 5] >>> print[12.0 % 5.0]
Kapan Modulo Digunakan?
Berikut satu contoh kasus penggunaan modulo. Anda ingin menentukan apakah suatu integer adalah bilangan genap atau ganjil. Kita tau bahwa bilangan *genap adalah bilangan yang habis dibagi dengan 2, dan selainnya adalah ganjil. Maka anda dapat menggunakan modulo untuk mengetes apakah suatu bilangan ganjil atau genap.
>>> print[25 % 2] >>> print[20 % 2]
Maka 25 adalah bilangan ganjil, karena modulonya tidak nol [tidak habis]. Sedangkan 24 adalah genap, karena modulonya nol [habis dibagi tanpa sisa].
Berikut adalah contoh lain yang sedikit lebih kompleks.
Misalnya anda sedang membuat sistem pengaturan transportasi, dan anda memiliki banyak armada dengan jenis:
Bus kapasitas 60 penumpang
Mobil kapasitas 8 penumpang
Motor kapasitas 1 penumpang
Agar efisien, maka perusahaan menerapkan aturan sederhana:
prioritaskan bus, lalu mobil, baru motor.
suatu armada baru boleh digunakan jika semua kursi penumpang terisi.
Anda diminta untuk membuat program yang jika diketahui total jumlah penumpang yang akan berangkat, maka tentukan jumlah masing-masing armada yang dibutuhkan.
Anda dapat menghitungnya dengan cara berikut: Misal diberikan jumlah penumpang 139 orang.
jumlah bus yang dibutuhkan adalah
>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
5 menghasilkan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1, artinya butuh>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1 buah bushitung penumpang yang tidak tertampung di bus, yaitu
>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
8 menghasilkan>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
9, artinya ada>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
9 orang yang tidak tertampung di busjumlah mobil yang dibutuhkan adalah
+
1 menghasilkan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1, artinya butuh>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
1 buah mobilhitung penumpang yang tidak tertampung di bus,
+
4 menghasilkan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
2jumlah motor yang dibutuhkan adalah
+
6 menghasilkan>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
2, artinya butuh>>> print[6 / 3] >>> print[6 / 3.] >>> print[6. / 3] >>> print[6. / 3.]
2 motor.
Penambahan dan Pengurangan
Operasi penjumlahan dan pengurangan di Python sama dengan di matematika, dan aturan tipe data hasil mengikuti perkalian.
>>> print[12 - 5] >>> print[12 - 5.0] >>> print[12.0 - 5] >>> print[12.0 - 5.0]
Operator Unary dan Binary
Sejauh ini kita telah melihat operator yang membutuhkan 2 operan, yang disebut operator binary.
Seperti di matematika, simbol
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]3 [minus], selain digunakan untuk pengurangan ia digunakan juga untuk mengubah tanda suatu bilangan [dari positif ke negatif, dan sebaliknya].
Operator
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]3 [minus] hanya membutuhkan satu operan, sehingga disebut sebagai operator unary. Selain
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]3,
+
juga merupakan operator unary, ia menjaga tanda sebuah bilangan di kanannya seperti apa adanya.Perhatikan kode berikut ini untuk melihat bagaimana operator-operator ini bekerja.
>>> print[-4 - 4] >>> print[4. - 8] >>> print[-1.1] >>> print[--5] >>> print[+2]
Operator dan prioritasnya
Operator di Python memiliki prioritas seperti halnya pada matematika, sebagai contoh prioritas operator perkalian lebih tinggi dari pada operator penjumlahan, sehingga meskipun +
muncul lebih dulu [lebih kiri] dari pada
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]4, namun operasi kali tetap didahulukan. Perhatikan contoh berikut ini:
Terlihat prosesnya bukanlah
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
05 menghasilkan>>> print[-12 % 5] >>> print[12 % -5]
0, lalu>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
07 menghasilkan>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
08
tetapi
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
09 menghasilkan>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
1, lalu>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
11 menghasilkan>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]
12
Sebelum kita melihat prioritas dari operator-operator yang telah kita bahas di atas, perlu kita bahas terlebih dahulu peran tanda kurung
>>> print[2 * 3] >>> print[2 * 3.] >>> print[2. * 3] >>> print[2. * 3.]13.
Tanda Kurung
Meskipun operator memiliki urutan prioritas, namun urutan tersebut dapat berubah dengan menggunakan tanda kurung. Operasi yang ada di dalam tanda kurung selalu akan dihitung terlebih dahulu. Jika ada tanda kurung di dalam tanda kurung, maka yang terdalam akan diprioritaskan terlebih dahulu.