Anda di halaman 1dari 230

Memberantas Buta Program Komputer

dengan
Bahasa Python

Python ?

Gampang!

Besutan 1.18

Maulida Khiatuddin

Penulis ke 2

Penulis ke X

BLU Press
2018
Computers are incredibly fast, accurate, and stupid; humans are incredibly slow, inaccurate, and
brilliant; together they are powerful beyond imagination.

Albert Einstein
Sekapur sirih

Perkembangan teknologi maklumat (informasi) yang cepat tanpa diikuti oleh kemampuan
sumber daya manusia untuk menguasainya menyebabkan bangsa Indonesia cenderung menjadi
konsumen informatika ketimbang menjadi produsen, baik perangkat keras maupun perangkat
lunak. Indonesia juga kekurangan tenaga pemogram sehingga banyak pemogram dari India dan
Filipina yang bekerja di Indonesia.

Dari segi perangkat keras, Indonesia tampaknya sulit untuk bersaing dalam jangka pendek dan
menengah dengan negara yang memiliki budaya industri elektronika yang sudah mapan. Tetapi
dalam bidang perangkat lunak, peluang terbuka lebar, asal Indonesia dapat mendidik sebanyak
mungkin sumber daya manusia untuk memampukan mereka menulis kode pemrograman.
Selama ini, kebanyakan orang Indonesia cenderung hanya belajar untuk menggunakan perangkat
lunak terapan (aplikasi) yang berada di lapisan luar, jauh dari inti ilmu komputer, sehingga tidak
mampu mengendalikan komputer di luar kerangka yang dibuat oleh perusahaan pembuat terapan
tersebut.

Paduan yang semakin erat antara teknologi informasi dan komunikasi, memungkinkan perusahan
besar mengendalikan jaringan komputer dari luar jurisdiksi tradisional sebuah negara.
Akibatnya, pengguna komputer di Indonesia tidak mampu mengendalikan penggunaan jaringan
komputer untuk kepentingan nasional dan beresiko terperangkap dalam program terapan bikinan
perusahaan asing.

Indonesia sering terbata-bata menghadapi perilaku perusahaan informatika raksasa yang


merugikan kepentingan nasional, misalnya tidak mau membayar pajak dari operasinya di
Indonesia, enggan untuk membasmi faham yang bertentangan dengan norma dan adat kebiasaan
Indonesia seperti situs pornografi, kekerasan, dll. Pemerintah terkesan ragu-ragu menutup
operasi perusahaan tersebut di Indonesia, karena kalau ditutup rakyat Indonesia tidak punya
pilihan untuk beralih kepada perangkat lunak alternatif. Indonesia beresiko menjadi sangat
tergantung atau malah terperangkap dalam permainan perusahaan asing yang membuat perangkat
lunak.

Berdasarkan kenyataan di atas, adalah suatu hal yang mendesak untuk memberantas „buta huruf‟
pemrograman komputer di kalangan rakyat dengan mendorong mereka menguasai bahasa
pemrograman. Dengan jumlah penduduk 250 juta jiwa, membina 1% saja penduduk yang mahir
pemrograman, akan memunculkan generasi melek pemrograman yang mampu membuat
berbagai perangkat lunak yang kreatif untuk memudahkan kehidupan manusia. Apalagi kalau
kita mampu mendidik 10% penduduk; hal ini akan menjadikan Indonesia berpotensi menjadi
negara produsen perangkat lunak yang besar. Keahlian pemrograman tidak harus dari kalangan
yang berlatar belakang informatika saja, tetapi juga dari segala bidang, mengingat komputer
semakin merasuk dalam seluruh aspek kehidupan.
Sejak awal abad 21, manusia memasuki suatu masa yang disebut sebagai revolusi industri ke
empat (Industri 4.0). Revolusi industri pertama berlangsung sejak tahun 1760 yang ditandai
dengan penggunaan energi air dan uap. Revolusi industri ke dua dimulai sejak tahun 1870
dimana manusia mulai menggunakan energi listrik dan memulai produksi secara massal di
pabrik-pabrik. Sejak tahun 1960-an, dimulai revolusi industri ketiga dimana manusia beranjak
dari teknologi mekanik dan elektronik analog ke elektronik digital serta otomatisasi dalam
produksi industri. Revolusi industri ke empat ditandai dengan otomatisasi yang dari jarak jauh
yang terhubung dengan jaringan internet mobil (internet benda / internet of thing (IoT)),
melimpahnya komputer dalam segala bidang, kecerdasan buatan, dan pembelajaran mesin (alat
bisa belajar sesuatu hal baru secara otomatis dengan data yang dicecokkan kepadanya).

Supaya tidak tergilas oleh revolusi ini, „kecelikan pemrograman‟ (programming literacy) perlu
diberikan kepada generasi muda. Kalau dalam abad 20 murid dididik untuk menguasai BTH
(baca, tulis, hitung ) maka dalam abd 21 murid diajarkan untuk menguasai BTHP (baca, tulis,
hitung, program).

Negara maju sangat memahami peran strategis „celik/ melek pemrograman‟ bagi warganya
dalam rangka memperkuat industri kreatif mereka di masa depan. Mereka mulai mendidik
murid-murid sekolah untuk mulai belajar bahasa komputer sejak usia kecil dan remaja. Jepang
memasukkan materi pemrograman komputer ke dalam kurikulum pendidikan mulai dari usia 12
tahun, AS (Massachusetts, 12 tahun), Italia (14 tahun), Finlandia (14-16 tahun), Serbia (15
tahun), dan Singapura (16 tahun). Sebelum belajar pemrograman, murid-murid tersebut sejak
usia 6 tahun (di Massachusetts) sudah lebih dahulu diajarkan pengenalan teknologi informatika
dan komunikasi (TIK) melalui penggunaan perangkat lunak terapan seperti menulis,
menggambar, menghitung, dsb. Dalam penggunaan teknologi informasi, anak Indonesia
mungkin tidak kalah dengan anak Massachusetts, cuma mungkin anak Indonesia kurang
diarahkan untuk menggunakan perangkat TIK tersebut untuk menghasilkan sesuatu yang kreatif
dan produktif, tetapi lebih ke arah hiburan.

Untuk itu perlu dicari jalan yang paling mudah supaya banyak warga Indonesia dapat dengan
mudah belajar untuk melakukan pemrograman. Setelah membaca sejumlah kepustakaan tentang
bahasa komputer yang perlu dipelajari untuk menguasai dengan cepat bahasa pemrograman
pertama, penulis berkesimpulan bahwa Python merupakan bahasa yang paling tepat untuk pelajar
pemula program komputer. Bahasa Python bukan saja mudah dipelajari, tetapi juga berpeluang
bagus untuk dapat diterapkan dalam pembuatan perangkat lunak untuk dunia usaha, pendidikan,
hiburan, keamanan, kecerdasan buatan, dll.

Pada awal tahun 2017, melalui Google, penulis mencari bahan pelajaran pemrograman Python
dalam bahasa Indonesia yang berisi lebih dari seratus halaman, yang muncul hanya ada tiga.
Kalau kita cari bahan yang sama dalam bahasa Inggris, dokumen yang berisi lebih dari seratus
halaman yang muncul lebih dari seratus buah. Banyak orang Indonesia belum menguasai bahasa
Inggris dengan baik, sehingga ada keterbatasan untuk mendapatkan bahan pembelajaran
pemrograman. Oleh karena itu, dokumen ini diharapkan dapat menambah khazanah
pembelajaran pemrograman Python untuk pemula, dalam rangka memberantas „buta huruf‟
pemrograman.

Penulis berusaha menerjemahkan istilah-istilah ilmu komputer dari bahasa Inggris ke dalam
bahasa Indonesia, karena dari pengalaman penulis sendiri pengertian yang nyata dan membumi
sangat perlu sebagai dasar memahami sesuatu. Perkembangan bahasa Indonesia sangat ini sangat
tidak kreatif dan jauh dari rasa kebangsaan dimana istilah asing diserap begitu saja untuk
mengantikan istilah yang sudah atau belum ada (bahkan ini dilakukan oleh lembaga
pemerintahan), sehingga lama kelamaan bahasa Indonesia beresiko menjadi bahasa Inggris
campur (creole English), contoh istilah pendidikan menjadi edukasi, ketrampilan menjadi
vokasi, orang tenar menjadi selebriti, terapan menjadi aplikasi, pelawak menjadi komedian,
satpam menjadi sekuriti, dlsb.

Bayangkan betapa bingungnya pelajar pemula ketika ingin memahami tentang istilah, misalnya,
golongan dalam bahasa komputer ketika membaca kalimat yang terdapat dalam dua buku paket
terbitan Kementerian Pendididikan Nasional : “Class merupakan suatu blueprint atau cetakan
untuk menciptakan suatu instant dari object”. “Class adalah metode logical untuk organisasi data
dan fungsi dalam tatanan yang sama . …” Kalimat berikut merupakan kutipan dari buku lain,
terbitan salah satu perguruan tinggi negeri terkemuka : “…Objek itu sendiri mempunyai template
yang diistilahkan dengan golongan atau class. Sebuah golongan merupakan template bagi objek
– objek yang akan dibuat. Proses pembuatan objek baru dinamakan instantiasi.”

Dari pada menggunakan penjelasan setengah bahasa Inggris dan setengah bahasa Indonesi yang
sulit dimengerti oleh pelajar, lebih baik digunakan saja definisi bahasa Inggris secara penuh
seperti yang dikutip dari salah satu buku pemrograman python untuk pemula yang berbahasa
Inggris : “class: A template for creating your own data type, which bundles up several related
pieces of data dan define a bunch of methods for accessing and manipulating that data. An
instance of class is called object”.

Penggunaan penjelasan dalam bahasa Inggris memiliki keuntungan yang besar di antaranya yaitu
dapat menolong pelajar untuk menguasai bahasa Inggris sehingga mereka bisa mencapai sumber
informasi yang tidak terbatas di internet, dan juga akan memampukan mereka berkarya di tingkat
internasional seperti dibuktikan oleh pemrogram India yang bekerja di seluruh dunia.

Namun, yang lebih penting adalah menulis dalam bahasa yang mudah dimengerti oleh pelajar
pemula sehingga mereka betul-betul paham tentang konsep baru yang kadang-kadang terlalu
abstrak untuk dijelaskan.

Ketika belajar sejarah di kelas 2 SMP, penulis tidak memahami istilah zaman renaisan di
Eropah. Penulis bertanya kepada guru sejarah, beliau juga tidak dapat menjelaskan apa arti
renaisan, baik dalam bahasa Indonesia ataupun dalam bahasa Aceh. (Ketika murid belum
memahami konsep baru dalam bahasa Indonesia, guru kadang-kadang menjelaskan dalam bahasa
Aceh agar murid betul-betul mengerti.) Ketika belajar bahasa Perancis, baru penulis memahami
bahwa kata renaisan berasal dari renaissance, dari kata renaître yang berarti lahir kembali.
Istilah renaisan merujuk pada kelahiran kembali abad kegemilangan dengan berkembangnya
kembali ilmu dan seni di Eropah setelah mengalami zaman kegelapan pasca runtuhnya
peradaban Yunani dan Romawi.

Dengan menggunakan istilah bahasa Indonesia atau menciptakan padanan baru dalam bahasa
Indonesia, bukan dengan menyerap begitu saja istilah dari bahasa Inggris, anak didik akan lebih
meresapi konsep abstrak (niskala/di awang-awang) untuk menerapkannya dalam karya nyata.
Pada awalnya memang aneh kalau kata file disebut warkah dalam buku ini. Tetapi kalau kita
sering menggunakannya kata itu tidak akan aneh lagi, misalnya daripada kata mendonlod lebih
baik menggunakan kata mengunduh; kata gawai sebagai pengganti kata gadget, dll. Disinilah
pentingnya peran lembaga pembinaan bahasa Indonesia untuk memantau istilah yang baru
muncul dalam bahasa Inggris dan segera menciptakan padanan istilah baru dalam bahasa
Indonesia.

Orang Perancis misalnya terbiasa mengucapkan fichier bukan file, ordinateur bukan computer,
donnees bukan data, sortie bukan output, logiciel bukan software, progiciel bukan software
package, numerique bukan digital, apprentissage artificiel bukan machine learning, dlsb.,
karena lembaga bahasa Perancis selalu berusaha menciptakan istilah baru untuk menghindari
anglicisme (keinggris-inggrisan) dalam perkembangan bahasa Perancis. Dengan penerjemahan
dan penciptaan istilah baru dalam bidang apa aja dan menghindari penyerapan membabi buta
dari bahasa asing, kita akan dapat menjaga kelestarian bahasa Indonesia supaya tidak menjadi
sekedar creole English (bahasa Inggris rusak).

Keinginan penulis untuk menerjemahkan istilah Inggris ke dalam bahasa Indonesia juga dipicu
oleh sebuah permintaan murid kelas 6 SD dalam sebuah forum tukar pendapat di internet. Murid
itu meminta kalau bisa bahasa yang menjelaskan tentang program komputer lebih
disederhanakan agar anak-anak bisa memahami. Tapi salah seorang peserta curahan hati malah
mengatakan kalau ingin mendalami pemrograman anak itu harus kuliah di jurusan ilmu
komputer. Peserta itu mungkin tidak baca sejarah bagaimana Bill Gates yang memulai
pemrograman sejak usia SMP dan gagal di bangku kuliah tetapi bisa menjadi kaisar dalam dunia
bisnis informatika. Mudah-mudahan bahasa buku ini dapat dimengerti oleh semua kalangan
pembaca, tidak tergantung dari latar belakang pendidikan mereka.

Penulis menyadari naskah ini penuh dengan kekurangan dan karena itu kritik dan saran dari
pembaca sangat diharapkan untuk menyempurnakannya dalam edisi mendatang.

Mudah-mudahan harapan penulis dapat terwujud.


Daftar Isi Sementara

Sekapur Sirih

Daftar isi sementara

Pendahuluan

Bab I Mengendalikan Komputer

1.1 Bahasa komputer

1.2 Perlunya menguasai bahasa pemrograman

1.3 Program dan perangkat lunak komputer

1.4 Bidang-bidang ilmu komputer sebagai pendukung pemrograman

Bab II Pengenalan Dasar Bahasa Python

2.1 Mengapa belajar Python sebagai bahasa pemrograman pertama

2.2 Mengunduh program Python dari internet

2.3 Program awal dengan Python

2.4 Prosedur kerja program Python

Bab III Penyelesaian Masalah Melalui Pemrograman

3.1 Penciptaan sistem pendata/komputer

3.2 Algoritma sebagai dasar pemrograman

3.3 Peniskalaan (abstraction) dan pemodelan (percontohan)

3.4 Algoritma pencarian harga paling murah

3.5 Nilai dan jenis data

3.6 Penetapan nilai pada peubah dan tatanan pengendalian pelaksanaan

Bab IV Jenis Data (data type) Python

4.1 Ungkapan (expression), pernyataan (statement) dan operasi matematika

4.2 Urutan operator perhitungan


4.3 Nilai sah untuk jenis data

4.4 Bentukan (format) angka

4.5 Ungkapan Boole (Boolean expression) dan operator Boole (Boolean operator)

4.6 Pemendaan galat (debugging) tulisan kode

4.7 Proses penetapan (assignment ) nilai kepada peubah

4.8 Ketentuan nama peubah (variable)

4.9 Fungsi (function)

Bab V Urutan Aksara dan Angka

5.1 Untaian (string)

5.2 Operator untaian (string operator)

5.3 Operator pengindeks (indexing operator) untaian

5.4 Daftar (list)

5.5 Operator daftar (list operator)

5.6 Merombak daftar

5.7 Metode daftar

5.8 Tela (tuple)

Bab VI Pengenalan Objek dan Golongan (class)

6.1 Objek

6.2 Jenis objek (objek type)

6.3 Menciptakan objek

6.4 Menciptakan golongan : sebutan (attributes)

6.5 Menciptakan golongan : menggabungkan sebutan dengan metode (method)

6.6 Metode golongan (class methode) dan pemrograman mengarah ke objek (object oriented
programming)

6.7 Paradigma pemrograman


6.8 Perpustakaan baku Python (Python standard library)

6.9 Modul math

6.10 Kajian kasus : Objek Grafik kura-kura (Turtle Graphics Objects)

Bab VII Pemrograman Menurut Prosedur (procedural programming)

7.1 Modul dan program / atur cara Python

7.2 Gubahan (composition) program/ atur cara

7.3 Fungsi di dalam pemrograman /pengaturcaraan berazas prosedur

7.4 Fungsi yang ditentukan /didefinisikan oleh pengguna

7.5 Pelaksanaan tatanan kendali (control structure)

7.6 Keputusan satu arah (one-way decision)

7.7 Keputusan dua arah (two-way decision)

7.8 Pelaksanaan berulang melalui tatanan kitaran (iteration structure)

7.9 Tatanan pengendalian aliran bersarang (nesting control flow structure)

7.10 Fungsi range (kisaran)

7.11 Komentar

Bab VIII Mekanisme Fungsi

8.1 Tatanan penetapan (assignment structure ) terhadap peubah

8.2 Tatanan fungsi

8.3 Fungsi tanpa parameter

8.4 Fungsi dengan parameter

8.5 Pelaluan parameter (parameter passing)

8.6 Cakupan peubah (scope of variable)

8.7 Pemanggilan fungsi (function calling)

8.8 Tumpukan panggilan (call stack)

8.9 Fungsi yang mengembalikan nilai atau tidak mengembalikan nilai


8.10 Hujjah prasetel (default argument)

8.11 Pemodulan kode

8.12 Penghalusan berjenjang (stepwise refinement)

Bab IX Pengaturcaraan Mengarah ke Objek, PMO (Object Oriented Programming, OOP)

9.1 Medan data (data field) atau peubah umpama (instance variable)

9.2 Menentukan/ mendefinisikan golongan (class)

9.3 Membangun objek

9.4 Mencapai anggota-anggota objek

9.5 Parameter swa (self)

9.6 Diagram UML

9.7 Objek tak berubah (immutable object) dan objek berubah (mutable object)

9.8 Menyembunyikan medan data

9.9 Peniskalaan (abstraction) dan penyalutan (encapsulation) golongan


Pendahuluan

Komputer adalah adalah mesin elektronik pengolah data (data processor) yang yang sanggup
menghitung (sehingga dinamakan computer [penghitung] dalam bahasa Inggris), mengatur data
(sehingga dinamakan ordinateur [pengatur] dalam bahasa Perancis), atau secara umum
melakukan pekerjaan yang berkaitan dengan data (sehingga dinamakan dator [berazas data]
dalam bahasa Swedia). Mungkin, dalam bahasa Indonesia padanan kata yang lebih tepat untuk
nama komputer adalah pendata (pelaku data) karena kemampuanya menerjemahkan data
menjadi informasi yang mudah difahami.Dalam tulisan ini sejumlah istilah komputer dalam
bahasa Inggris dicoba terjemahkan ke dalam bahasa Indonesia supaya pelajarpemula ilmu
komputer dapat memahami konsep komputer secara nyata (kongkrit), bukan dengan hanya
menghafal istilah asing seperti orang menghafal mantera.

Manusia memiliki banyak sekali data yang disimpan, disaring, diolah, diterjemahkan, sehingga
menjadi informasi/maklumat yang berguna bagi pengambilan keputusan, kemudahan hidup,
belajar, berdagang, hiburan, dll. Data adalah catatan dari suatu fakta atau peristiwa, sedangkan
informasi adalah data yang telah diolah, diringkas, dan dipaparkan sehingga mudah difahami
oleh manusia. Gambar 0.1 menunjukan salah satu konsep data dan informasi. Koordinat 43, 3
Lintang Utara dan 5,3 Bujur Timur adalah data yang menunjukkan posisi pentul (pin) dalam peta
Google. Data tersebut bersama dengan jutaan data lainnya diolah oleh Google menjadi informasi
geografis yang sangat mudah dimengerti. Salah satu informasi yang disajikan dalam gambar itu
adalah letak suatu tempat “Dekat Laut Tengah yang dapat ditempuh dalam waktu 44 menit
dengan mobil” dari tempat komputer pengguna.

Komputer berperan besar mengubah data menjadi informasi dalam waktu yang sangat cepat,
sehingga ilmu komputer disebut juga informatika dan teknologi yang berkaitan dengan informasi
disebut teknologi informasi (TI) atau teknologi maklumat.

Seiring dengan perkembangan teknologi komunikasi yang membutuhkan komputer,


telekomunikasi (saling bertukar pesan dari jarak jauh) memungkinkan komputer saling bertukar
informasi dengan komputer lain. Akhirnya terjadi paduan baru dalam teknologi yang kita kenal
sebagai TIK (teknologi informasi dan telekomunikasi). Saat ini, semakin banyak alat yang berisi
komputer di dalamnya (bukan hanya telepon cerdas saja) dan terhubung dengan jaringan
telekomunikasi (yang sering disebut benda terhubung/ connected object atau internet benda /
internet of thing), sehingga komputer tidak terpisahkan lagi dari telekomunikasi

Manusia selalu berusaha membuat alat atau sistem yang memudahkan kehidupan. Dengan alat
pengungkit manusia mampu mengangkat beban yang lebih berat dari yang dapat dilakukan
dengan anggota tubuh. Penggunaan kenderaan yang digerakkan dengan tenaga manusia, hewan,
fosil, dll., memungkinkan manusia berpindah dengan cepat dari satu tempat ke tempat lain lebih
cepat. Penggunaan huruf dan angka (bahasa tertulis) memungkinkan manusia menggunakan
lambang untuk memindahkan ide secara tepat dalam dimensi ruang dan waktu; dari satu tempat
ke tempat lain dengan cepat, dan dari satu generasi ke generasi berikutnya.

Data

Informasi

Gambar 0.1 Konsep data dan informasi

Dalam hal perhitungan, manusia menggunakan alat untuk melakukan perhitungan dalam jumlah
besar, yang berada di luar kemampuan otak untuk melakukannya. Sebelum mengenal alat,
manusia menggunakan jari tangan dan kaki untuk menghitung hingga angka 20 (dari sini muncul
istilah digital dari kata digitus/ jari). Untuk angka di atas 20, manusia menggunakan batu
(sehingga muncul kata calculus artinya batu;digunakan untuk istilah kalkulus [salah satu cabang
matematika] atau kalkulator [penghitung]) untuk membantu perhitungan, terutama untuk jumlah
besar yang sukar disimpan dalam ingatan manusia. Misalnya, ketika menyukat hasil panen padi,
setiap naleh (unit perhitungan volume gabah di Aceh, sekitar 20 kg gabah) ditandai dengan
menaruh satu kerikil ke dalam kantung, sehingga ketika seluruh gabah selesai disukat, petani
tahu berapa naleh gabah yang dihasilkan,dengan cara menghitung kembali jumlah kerikil yang
ada dalam kantung. Kantung batu tersebut mirip dengan ingatan (memori) komputer modern.
Mengajar berhitung secara visual (penglihatan) dengan menggunakan alat peraga batu juga
sangat membantu kemampuan anak yang mulai belajar berhitung.

Perhitungan dengan batu ada kendala. Masalahnya muncul ketika jumlah yang dihitung
mencapai angka yang besar. Jumlah batu yang digunakan akan terlalu banyak dan terlalu berat
sehingga tidak praktis, dan juga terlalu lama untuk menghitungnya. Untuk memecahkan masalah
itu, manusia menggunakan sempoa (abakus) untuk memperoleh hasil yang lebih cepat dan
dengan tenaga yang dibutuhkan sangat kecil. Alat perhitungan berubah terus hingga ditemukan
mistar geser (jangka sorong/slide rule) untuk melakukan perhitungan angka besar dan lebih kecil
dari angka satu.

Kemudian Blaise Pascal yang membuat kalkulator mekanik pada tahun 1442 untuk menolong
ayahnya - sebagai pengumpul pajak di kerajaan Perancis - sangat menolong manusia untuk
menghitung angka dalam jumlah banyak dalam waktu singkat. Manusia berusaha terus
menciptakan mesin hitung yang dapat lebih cepat lagi dengan pembuatan komputer mekanis
pertama oleh Charles Babbage pada tahun 1822, yang ketika itu dinamakan analytical engine
(mesin analisis) yang diharapkan dapat memecahkan berbagai persoalan matematika yang tidak
bisa lagi dihitung dengan tangan.

Kebutuhan perhitungan cepat untuk penerapan riset operasi dan pemecahan sandi musuh dalam
Perang Dunia II, berujung pada pembuatan komputer elektronik pertama oleh John Atanasoff
dan Clifford Berry antara tahun 1939-1942, dengan menggunakan klep (switch) lampu vakum
pijar. Penemuan transistor dari bahan semikonduktor, terutama silikon, yang menggantikan klep
lampu pijar dalam komputer, menimbulkan revolusi pembuatan komputer dalam bentuk mini,
dan akhirnya mikro. Komputer seperti inilah yang kita gunakan sehari-hari yaitu komputer
pribadi (personal computer/PC), komputer riba (laptop = di atas haribaan), sabak (tablet), telpon
bimbit (handphone/ mobile phone = terlepon bergerak), dan berbagai jenis gawai (gadget)
lainnya.

Selain menghitung dengan cepat, komputer juga dibekali dengan kemampuan menyimpan data
dalam jumlah besar dalam ingatannya (memori), memilahnya, mencari kembali dengan cepat,
dan menyajikannya dalam bentuk yang mudah difahami oleh manusia. Dengan kemajuan
teknologi yang memungkinkan transistor bekerja semakin cepat (klep transistor berkedip-kedip
terus dalam keadaan hidup atau mati sampai jutaan bahkan milyaran kali per detik), hampir
semua gejala alam seperti suara, gambar, suhu, cahaya, kadar bahan, dll., dapat diubah oleh
komputer menjadi data elektronika digital (keadaan klep hidup atau mati). Proses ini disebut
sebagai digitalisasi, yang memungkinkan manusia mengolah, secara teoritis, semua gejala alam
yang dapat ditangkap oleh alat pengindera buatan manusia.

Kemampuan teknologi dalam bidang elektronika ini hanya dapat dioptimalkan bila manusia juga
mampu membuat program dalam bahasa komputer, untuk memerintahkan komputer untuk
mengolah data dan mengubahnya menjadi informasi yang mudah difahami oleh manusia. Untuk
itu, anda perlu menguasai salah satu atau beberapa bahasa komputer.
Bab I

Mengendalikan komputer

1.1 Bahasa komputer

Secara umum, sistem komputer merupakan gabungan dua kelompok perangkat:

1. Perangkat keras (hardware) : alat elektronik yang bisa kita pegang seperti komputer
jinjing (laptop), pencetak (printer), gawai (gadget), sabak (tablet), telpon bimbit (hand
phone, cellular phone), perangkat mainan video (video game), dsb.
2. Perangkat lunak (software): bahasa dalam bentuk tulisan kode yang digunakan untuk
memerintahkan perangkat keras agar beroperasi seperti yang dikehendaki oleh manusia
sebagai pengguna sistem komputer. Perangkat keras seperti laptop tidak dapat digunakan
oleh orang biasa tanpa perangkat lunak seperti Windows, Linux, Word, Excel, Adobe
PDF, Photshop, Mozilla Firefox, dsb. Play Station atau X-Box, tidak ada manfaatnya
bagi anda bila tidak diisi dengan perangkat lunak seperti mainan video Great Warrior,
Superjet, Adventure in Wonder Forest, MarsRaiders, Superbowl, dlsb.

Sebagai alat elektronik, pemikiran komputer sangat primitif.Komputer hanya dapat memahami
bahasa kode dalam bentuk 0 (nol) dan 1 (satu) yang disebut dwiangka (binary), untuk
melaksanakan perintah manusia. Satu angka 0 atau 1 disebut bit (binary digit/ dwiangka) yang
merupakan satuan dasar untuk mengukur data dalam ilmu komputer.

Bahasa kode mirip dengan aliran arus listrik dalam keadaan “mati” atau “hidup” di dalam
rangkaian elektronik, atau mirip dengan kata “ya” atau “tidak” dalam bahasa manusia yang
mengalami keterbatasan bicara.

Contoh bahasa kode: 00100001 10000110 01011011 11101000 10100110 dst.

Bahasa kode yang terdiri dari angka 0 dan 1 tersebut disebut bahasa mesin (machine language).
Susunan angka-angka berbentuk kode tersebut, jumlahnya bisa ribuan hingga jutaan baris untuk
satu program. Namun ajaibnya, komputer sebagai perangkat elektronik bisa membaca dan
melaksanakan jutaan bahkan milyaran perintah dalam bentuk angka 0 atau 1 (kelap kelip “mati”
atau “hidup”) dalam hitungan detik. Pada dasarnya komputer merupakan paduan rangkaian
elektronik yang terdiri dari jutaan klep (switch) transistor yang berada dalam keadaan hidup atau
mati. Dengan mengatur paduan klep hidup atau mati hingga berjuta-juta kali dalam satu detik
rangkaian komputer itu sanggup mengolahaliran perintah manusia yang disebut data dalam
dwiangka secepat kilat.
Terapan (application) pengolah kata Word dari perusahaan Microsoft, misalnya, mengandung
jutaan baris kode pemrograman. Word memudahkan manusia meminta komputer untuk
mengolah kata (word processing) yang selanjutkanya digunakan untuk berbagai macam
keperluan komunikasi tertulis. Ketika anda mengetik huruf a di papan kunci (keyboard),
perangkat lunak Word menterjemahkannya ke dalam bahasa mesin dan komputer mengolahnya,
menyimpan hasil dalam memori (ingatan) dan menampilkan di layar dalam bentuk grafis
(gambar) yang kita kenal sebagai huruf a. Proses itu berlangsung dalam hitungan sepersekian
detik.

Bagi orang awam, menulis kode (coding) dalam bahasa mesin sangat sukar. Bayangkan, anda
harus menulis, membaca dan membetulkan galat kata-kata dalam puluhan hingga ribuan
halaman yang hanya tertulis dengan angka 0 dan 1. Untuk mengatasi kesukaran itu, manusia
membuat bahasa antara yang dapat menerjemahkan bahasa manusia (bahasa tingkat sangat
tinggi/ very high level language) ke bahasa mesin (bahasa tingkat rendah /low level language)
yang sangat primitif itu.

Untuk membuat bahasa mesin lebih mudah dibaca, pakar komputer menggunakan simbol yang
mudah diingat manusia sebagai wakil dari angka 0 dan 1, misalnya dalam bahasa yang disebut
bahasa rakitan (assembly language).

Contoh tulisan dalam bahasa rakitan:

ADD A, B
(artinya TAMBAH A, B)

Yang dilakukan oleh komputer bukan menjumlahkan huruf A dan B, tetapi menjumlahkan nilai
yang disimpan di dalam suatu tempat penyimpanan di dalam ingatan computer yang dinamakan
A dan B.

Namun demikian, simbol dalam bahasa rakitan yang masih tergolong dalam bahasa tingkat
rendah tersebut, masih sukar juga dikuasai oleh manusia biasa. Ahli komputer berusaha membuat
bahasa pemrograman lain yang lebih tinggi lagi, agar lebih mudah dimengerti oleh manusia .
Saat ini mungkin sudah ada ribuan bahasa pemrograman yang menerjemahkan bahasa tingkat
tinggi ke bahasa mesin.

Bahasa pemrograman pertama tingkat tinggi (high level language) yang pertama dibuat adalah
Fortran (Formula Translator / penerjemah rumus) pada tahun 1950-an. Setelah itu muncul
ribuan bahasa lain seperti Basic, Pascal, Cobol, C, C++, Java, Ada, PHP, Python, Perl, R, Ruby,
dll.

Ribuan bahasa antara tersebut berada dalam suatu spektrum (barisan), yang terletak antara
bahasa manusia dengan bahasa tingkat rendah (lihat Gambar 1.1). Semakin dekat suatu bahasa
pemrograman dengan bahasa mesin (bahasa tingkat rendah), semakin sukar dikuasai oleh
manusia. Semakin dekat dengan bahasa manusia (bahasa tingkat sangat tinggi), semakin mudah
bahasa pemrograman itu dikuasai oleh manusia. Bahasa Fortran dan C, misalnya, relatif lebih
dekat ke bahasa mesin, sedangkan bahasa Python dan Ruby, relatif lebih dekat ke bahasa alami
manusia.

Bahasa manusia:
Kalau panas
hidupkan AC!
Bahasa tingkat tinggi

Bahasa program:
Python
if T > 25:
Ruby
AC = 1 Java
else : C++
AC = 0 C
...
Bahasa rakitan
Bahasa mesin: Bahasa mesin
100100100010 . . .
. . .1110111101110 Bahasa tingkat rendah

Gambar 1.1 Kedudukan bahasa pemrograman dalam spektrum antara bahasa mesin dan bahasa
manusia

Bahasa-bahasa tersebut yang digunakan oleh para pembuat program (pengatur cara/
programmer) dengan cara menulis kode yang akan diterjemahkan oleh bahasa antara itu ke
dalam bahasa mesin. Keberadaan bahasa antara tersebut mempermudah manusia untuk membuat
program dan selanjutnya untuk memerintahkan komputer melaksanakan tugas yang diinginkan
oleh manusia.

Contoh program yang ditulis dalam bahasa C untuk memerintahkan komputer menampilkan
tulisan “Apa kabar, saudaraku.” di layar komputer.

Main()
{
printf (“Apa kabar, saudaraku. \n”);
return 0;
}
Sedangkan dalam bahasa Python perintah yang sama ditulis hanya dengan satu baris:

print (“Apa kabar, saudaraku.”)

Setiap bahasa tersebut memiliki kosa kata, aturan, tata bahasa, dan lambang yang berbeda-beda
sesuai ketetapan yang dibuat oleh pencipta program. Belajar bahasa pemrograman komputer
pada hakekatnya sama saja dengan belajar bahasa asing yang kosa kata, tata bahasa, dll., yang
saling berbeda antara satu dengan yang lain. Tujuannya sama yaitu memungkinkan anda untuk
berkomunikasi dengan orang asing. Demikian juga, penguasaan bahasa komputer akan
memungkinkan anda berkomunikasi dengan perangkat keras komputer.

Ahli komputer terus menerus membuat bahasa pemrograman baru yang semakin dekat dengan
bahasa manusia. Ketika kinerja suatu bahasa dinilai tidak mampu menyelesaikan suatu masalah
secara memuaskan, ahli komputer mencoba membuat bahasa lain yang lebih sempurna dari
bahasa yang sudah ada sebelumnya. Karena itu, bahasa pemrograman baru muncul dari waktu ke
waktu, seiring dengan daya kreativitas manusia untuk semakin mempermudah interaksi antara
komputer dan manusia. Pengembangan bahasa pemrograman yang lebih dekat ke bahasa
manusia, didukung oleh perkembangan teknologi komputer yang berkapasitas besar untuk
memproses kerumitan bahasa manusia. Di masa mendatang adalah tugas anda untuk membuat
bahasa pemrograman baru yang lebih dekat lagi ke bahasa manusia dan membuat komputer
mengerti perintah lisan, tulisan dan sikap manusia.

1.2 Perlunya menguasai bahasa pemrograman

Bahasa pemrograman dapat digunakan untuk membuat terapan (application) guna


memerintahkan komputer melaksanakan tugas tertentu. Misalnya : sistem operasi yang mengatur
kedudukan komponen perangkat keras dan lunak di dalam komputer seperti DOS/ Windows,
Linux, Android dan Unix; mengolah kata seperti Word; menghitung angka seperti Excel;
memutar film seperti Adobe Flash; membuat gambar arsitektur seperti FreeCAD, AutoCAD;
mengelola keuangan seperti Quicken, membuat alas data seperti MS Access, dsb.

Saat ini semakin banyak muncul berbagai perangkat elektronik yang kelihatannya bukan
komputer tetapi mengandung sistem komputer (gabungan perangkat keras dan perangkat lunak)
di dalamnya. Contohnya mesin cuci, penanak nasi, pencampur bensin di dalam mesin, pesawat
tanpa awak (drone), mobil tanpa supir, pengendali jauh (remote control), satelit, robot, penyiram
tanaman, mesin kas (ATM), lampu lalu lintas, dll. Semua perangkat itu dikendalikan oleh
berbagai jenis program terapan untuk melaksanakan tugas yang diperintahkan oleh manusia
Perangkat-perangkat otomatis tersebut semakin mudah diperintahkan oleh manusia dengan
hanya menekan urutan tombol atau pengendali otomatis lainnya.
Manusia berusaha membuat perangkat elektronik (lebih tepatnya perangkat mekatronik:
gabungan antara mekanika dan elektronika) yang cerdas. Perangkat ini dibuat dengan cara
merasukkan program kecerdasan buatan (artificial intelligence) ke dalam perangkat keras,
sehingga dapat diperintah dengan mudah dengan menggunakan bahasa manusia. Alat itu juga
dilengkapi dengan sistem telekomunikasi sehingga bisa dikendalikan dari jauh. Suatu saat nanti,
mungkin anda akan dapat membuat perangkat televisi yang mengerti bahasa Indonesia. Misalnya
anda bosan dengan saluran satu, anda cukup mengatakan : “pindah ke saluran 5” tanpa perlu lagi
memencet tombol 5 di pengendali jauh (remote control).

Penggunaan kecerdasan buatan akan sangat menolong manusia. Misalnya ketika anda datang ke
mesin kas cerdas untuk menarik uang, anda tidak perlu lagi menekan berbagai macam tombol
seperti saat sekarang. Anda cukup mengatakan: “Saya butuh uang Rp 500.000,-”, dengan segera
mesin ngeluarkannnya, karena dia mengenal anda dari paras, suara, bahkan bau badan anda.

Untuk membuat program seperti itu anda perlu menguasai bahasa pemrograman. Dengan
menguasai bahasa pemrograman, anda akan lebih kreatif menciptakan berbagai terapan baru
untuk memecahkan masalah, membuat terapan untuk berbagai keperluan apakah usaha, hiburan,
kesehatan, pendidikan, pengamanan, industri, dsb. Di masa depan, hampir semua alat-alat yang
digunakan manusia merasukkan perangkat lunak di dalamnya. Dengan menguasai pemrograman
anda akan dapat dengan mudah merombak peralatan tersebut sehingga alat itu dapat digunakan
secara lebih mudah dan nyaman.

Bila program terapan yang anda buat bagus dan diminati banyak orang, anda bisa menjualnya,
baik secara langsung seperti yang dilakukan oleh Bill Gates, melalui program Windows, Office,
dll. Atau secara tidak langsung dengan mengumpulkan orang sebanyak mungkin untuk
menggunakan terapan anda, seperti Mark Zukenberg melalui perangkat lunak Facebook, Serge
Brin dan Larry Page, melalui Google, dll. Terapan-terapan tersebut mampu mengumpulkan
banyak sekali pengguna dari seluruh dunia, sehingga dapat digunakan sebagai wahana untuk
memasang iklan dan mendatangkan uang bagi pembuatnya. Saat ini, pembuat/penjual program
komputer yang berhasil menarik banyak pengguna, menjadi orang-orang yang paling kaya di
dunia.

Suatu saat, anda juga akan dapat membuat produk perangkat lunak yang dipadukan dengan
perangkat keras untuk meluncurkan produk baru yang bermanfaat bagi manusia. Mungkin anda
akan menjual robot pembantu membuat PR di rumah, alat penjaga keamanan yang tidak lagi
membutuhkan tenaga satpam, robot penangkap tikus, robot pemanjat kelapa, mesin pembuat
makanan, alat pemantau kesehatan, dsb. Tidak ada batas kreativitas bagi seorang pemrogram:
seperti kata pepatah ”di atas langit masih ada lagi langit”.

Buku ini mengajarkan pemrograman Python dari tingkat yang paling mendasar dengan harapan,
nantinya dengan penguasaan konsep dasar ini akan memudahkan anda mempelajari konsep
pemrograman yang lebih rumit. Banyak sekali dokumen dalam bahasa Inggris yang dapat
diunduh dari internet untuk belajar bahasa pemrograman. Untuk itu penguasaan bahasa Inggris
adalah suatu kewajiban dasar untuk belajar komputer.

Seperti menurut pepatah Cina, “Perjalanan seribu li (ukuran jarak), harus dimulai dari langkah
pertama. Bagi pelajar pemula pemrograman, langkah pertama adalah mengetik kode (coding)
sederhana dan menjalankannya (run).

Semakin anda mengusai konsep dasar, semakin mudah anda mempelajari konsep lanjut. Karena
kuasai dan mengerti dulu konsep yang paling dasar sebelum beranjak ke topik pembelajaran
lebih lanjut.

Dalam belajar apa saja, anda juga perlu menggunakan pepatah “Alah bisa karena biasa” dan kata
bijak dari Cina “Saya dengar, saya lupakan. Saya lihat, saya teringat. Saya lakukan, maka saya
mengerti.” Karena itu jangan pernah ragu untuk mengetik kode sejak dari awal anda belajar
pelajaran pemrograman untuk membiasakan diri dengan pemrograman dan lama kelamaan anda
akan bisa. Anda dapat juga mengubah-ubah kode yang sudah tertulis dan melihat bagaimana
perbedaan hasilnya ketika program tersebut dijalankan. Anda perlu berlatih terus supaya mahir.
Orang tidak akan pernah bisa naik sepeda hanya dengan membaca buku „cara naik sepeda‟.

Menulis program dengan tekun seperti inilah, yang dilakukan oleh Bill Gates yang akhirnya
mendirikan perusahaan pembuat perangkat lunak, Microsoft. Sejak usia remaja Bill Gates sudah
terbiasa menulis program komputer, lalu mengemasnya dalam perangkat lunak murni seperti
DOS-Windows, atau memadukannya dengan perangkat keras seperti komputer, telpon, dan
gawai mainan X-Box, lalu kemudian menjualnya kepada konsumen. Berkat ketekunan membuat
program computer yang unik dan kreatif, lain dari yang lain yang sudah ada, Bill Gates bisa
menjadi salah satu orang terkaya di dunia, menciptakan lapangan kerja, menolong orang banyak,
sambil membangun perusahaan-perusahaan terbesar di dunia.

1.3 Program dan perangkat lunak komputer

Program komputer adalah keseluruhan perintah (instruction) yang diberikan kepada komputer
untuk melaksanakan (execute) suatu tindakan yang diinginkan manusia. Program ini adalah
sesuatu yang tidak berbentuk kebendaan seperti perangkat keras yang bisa disentuh; namun
sesuatu yang niskala (abstrak , tidak nyata). Program ini sangat diperlukan, ibaratnya seperti
nyawa komputer. Tanpa program komputer sebagai alat elektronik bisa hidup tetapi tidak dapat
melakukan tindakan apapun, mirip orang yang pingsan. Namun program saja, tanpa perangkat
keras tidak dapat difungsikan juga, hanya menjadi teori matematika saja. Jadi dibutuhkan
perangkat keras dan perangkat lunak yang dipadukan menjadi sistem komputer.

Perangkat lunak adalah gabungan dari sejumlah program untuk memerintah komputer untuk
melaksanakan tugas yang lebih rumit dari dari tugas tertentu, dari suatu program yang sederhana.
Misalnya 1+1 adalah program yang sangat sederhana, tetapi kalau seluruh program berhitung
digabung dalam suatu paket terapan seperti Lotus, Excel atau Libre Office Calc, misalnya,
gabungan tersebut menjadi perangkat lunak. Perangkat lunak, ada yang sederhana seperti contoh-
contoh dalam bulu ini, dan ada yang rumit sekali seperti program untuk pengendalian satelit atau
mobil tanpa supir.

Gabungan antara perangkat lunak dan keras disebut sistem komputer. Misalnya di sektor
keuangan, anda dapat menarik uang dari rekening anda di ATM dimana-mana di seluruh dunia,
berkat perangkat keras yang tersambung dengan jaringan telekomunikasi dan dikendalikan oleh
perangkat lunak yang cangggih.

Kedudukan pengguna (user) ketika berhadapan dengan komputer dapat dilihat pada Gambar 1.2
berikut. Bagi pengguna yang sangat awam, seperti ketika berada di hadapan sistem komputer
perbankan (ATM), yang dapat anda lakukan sangat terbatas misalnya hanya dapat mengetik kode
rahasia, jumlah uang yang ditarik, pemindah-bukuan, dll.

Pengguna yang lebih mahir yang mengerti program terapan (application program) seperti Word
dan Excel, misalnya, dia hanya dapat memerintah komputer dalam lingkungan yang ditentukan
oleh program tersebut dan melalui lapisan sistem operasi (sistem pelaksanaan/ operating sistem)
seperti Windows, Linux, Unix, Android, Mac OS, dll. Sistem operasi sangat penting, karena
program inilah yang mengatur tugas interaksi antara komponen dari perangkat keras dan
komponen perangkat lunak. Semua program terapan bekerja di atas lapisan sistem operasi (lihat
Gambar 1.2)

Pengguna

Program terapan

Sistem pelaksanaan / operasi

Perangkat keras

Gambar 1.2 Peran pengguna dalam pengendalian komputer


Bagi pengguna yang lebih canggih lagi (yang mahir bahasa pemrograman seperti C, Java,
Python, dll. atau bahkan bahasa mesin dan rakitan), dia terbebas dari batasan yang dibuat oleh
pembuat perangkat lunak seperti Microsoft, Google, Apple, dsb. Misalnya, kalau anda tidak bisa
membuat dokumen dengan aksara Jawa atau Sunda melalui perangkat lunak seperti Microsoft
Word, anda akan membuat sendiri program terapan pengolah kata yang memungkinkan orang,
misalnya, membuat dokumen dengan aksara-aksara yang ada di bumi Nusantara.

Pengguna yang canggih ini juga mampu membuat dan merombak baik sistem operasi maupun
program terapan, bahkan dapat menyarankan insinyur komputer/elektronik untuk membuat
perangkat keras yang lebih baik lagi. Tujuan anda menguasai bahasa pemrograman adalah
memiliki alat untuk membuat sistem operasi dan program terapan yang lebih baik, sehingga lebih
memudahkan lagi manusia memerintahkan komputer di masa mendatang. Bagi ahli
pemrograman, komputer dapat disulap menjadi mesin ketik, mesin hitung, alat menggambar, alat
musik, pemutar video, alat komunikasi, dlsb., tergantung dari kebutuhan pengguna.

Selama ini, pengguna komputer di Indoensia sangat tergantung pada sistem operasi DOS-
Windows bajakan milik perusahaan Microsoft. Penggunaan perangkat lunak bajakan adalah
seperti bom waktu yang dapat meledak sewaktu-waktu di masa mendatang. Bila pemegang hak
cipta menuntut pelanggaran hak, pengguna dapat didenda dan dihukum, atau membayar ganti
rugi yang tidak sedikit kepada perusahaan pemilik perangkat lunak. Hal seperti ini pernah
dialami pemerintah Indonesia pada tahun 2006 yang dituntut oleh Microsoft untuk membayar
denda penggunaan perangkat lunak secara tidak sah milik Microsoft di lembaga pemerintahan.

Untuk meningkatkan kemandirian bangsa dalam bidang produksi perangkat lunak, alangkah
baiknya semakin banyak orang Indonesia yang pintar pemrograman sehingga kita dapat
membebaskan diri dari ancaman bom waktu, karena menggunakan perangkat lunak bajakan
milik perusahaan raksasa.

Banyak perangkat lunak media sosial milik asing yang menjadi anjungan (platform) andalan
komunikasi orang Indonesia, sehingga mereka bebas menyiarkan apa saja isi yang menurut
mereka bagus tetapi melanggar norma dan aturan hukum hukum di Indonesia. Tetapi begitu
orang Indonesia mengeluarkan pernyataan yang bertentangan dengan nilai-nilai mereka,
langsung rekening kita ditutup. Karena orang Indonesia tidak memiliki prasarana komunikasi
alternatif, mau tidak mau orang Indonesia terpaksa menggunakan anjungan milik asing, dan tidak
mampu menyuarakan pendapat yang setara dengan orang asing. Melihat dari segi ini,
penguasaan keahlian membuat perangkat lunak menjadi keharusan (fardhu „ain dan kifayah) bagi
kebanyakan orang Indonesia. Cina dapat membebaskan diri dari dikte Google dengan cara
membuat terapan Baidu, dan lepas dari dikte WhatApp dengan mebuat WeChat, dsb. Indonesia
juga perlu meniru Cina supaya Indonesia benar-benar merdeka dalam bidang teknologi
maklumat/informasi.
Perangkat lunak dibuat untuk memecahkan masalah yang dihadapi oleh manusia. Misalnya saat
ini semakin sukar dicari pemanjat kelapa, sehingga di daerah sentra produksi, buah kelapa
terpaksa dibiarkan tua di pohon dan jatuh sendiri ke tanah. Ongkos pemanjatan semakin mahal.
Dua pada tahun 1970-an ongkos pemanjatan untuk sebatang pohon adalah 2 buah kelapa.
Sekarang tidak ada yang mau lagi memanjat walaupun diberi 10 buah kelapa. Untuk itu, insinyur
mesin dikerahkan untuk merancang dan membuat sebuah robot (perangkat keras) yang mampu
memanjat pohon dan memetik kelapa. Untuk mengendalikan robot tersebut dibutuhkan
perangkat lunak yang dibuat oleh ahli pakar pemrograman dan dapat ditulis dengan bahasa C,
Java, C++, Python, Ruby, dll.

Apapun jenis perangkat lunak yang kita gunakan, tujuannya sama yaitu memerintahkan
komputer untuk melaksanakan tugas yang diingini oleh manusia. Cuma, kalau kita tidak
menguasai bahasa pemrograman, kita hanya menjadi pengguna program terapan yang dibuat
oleh orang lain. Misalnya ketika kita menggunakan terapan Word atau Excel, kita hanya bisa
mengetik dan menghitung seperti yang ditentukan oleh perusahaan Microsoft sebagai pembuat
perangkat lunak itu. Kita tidak bisa mengubahnya, misalnya ingin mengetik dalam aksara Jawa
atau menjumlah dengan sistem dwiangka. Tetapi kalau kita menguasai salah satu atau lebih
bahasa komputer, kita dapat mengutak-atik perangkat lunak seperti Word dan Excel sesuai
dengan kehendak kita. Malah kita bisa juga membuat perangkat lunak yang lebih canggih dari
Word dan Excel, yang mengerti perintah manusia secara lisan sehingga pekerjaan mengetik tidak
dibutuhkan lagi. (Namun demikian, anda dilarang untuk mengutak atik program yang bukan
sumber terbuka karena dapat dituntut oleh pemilik hak cipta).

Suatu saat, kalau anda sudah mahir dalam bahasa Python, anda juga akan dapat membuat terapan
perangkat lunak yang canggih, misalnya, untuk alat penerjemah langsung pembicaraan antara
orang Indonesia dengan orang Ethiopia, misalnya. Terapan perangkat lunak yang anda buat dapat
dirasukkan (diinstal) ke dalam telepon genggam sehingga dapat dibawa kemana-mana dengan
mudah.

Tentu saja setelah membaca buku ini anda tidak bisa langsung membuat program yang canggih,
tetapi seperti pepatah Cina di atas, semua yang besar-besar itu dimulai dari kecil. Setelah
menamatkan buku ini anda perlu melanjutkan lagi ke topik lanjutan Python dan bahasa yang
lebih rumit seperti C (yang sering disebut sebagai lingua franca bahasa komputer) dan tentu saja
ilmu komputer secara umum. Kalau anda menguasai C anda juga akan mampu membuat bahasa
pemrograman seperti Python, Ruby, Java, C++, PHP, dll. Namun untuk langkah pertama,
marilah kita belajar bahasa Python yang relatif mudah dimengerti.

1.4 Bidang-bidang ilmu komputer sebagai pendukung pemrograman

Ilmu komputer (kependataan, perhitungan) sangat luas. Menurut E.W. Dijktra, pakar komputer
Belanda, komputer bagi ilmu komputer sama halnya seperti teleskop bagi ilmu falak (astronomi).
Memfokuskan pembelajaran ilmu komputer hanya pada komputer sebagai alat yang kita gunakan
sehari-hari, sama seperti pakar astronomi yang memfokuskan diri pada teleskop.

Untuk meningkatkan profesionalisme pemrograman anda perlu juga memperdalam ilmu


komputer. Pokok-pokon bahasan yang dapat digunakan untuk menguasai ilmu komputer terlihat
dalam Gambar 1.3.

Gambar 1.3 Bidang-bidang ilmu komputer secara menyeluruh (MoE, 2016)

Merujuk pada Gambar 1.3 tersebut, bidang-bidang kajian dalam ilmu komputer dapat dibagi
dalam tiga kelompok utama yaitu : ilmu (science ), alat (tool), dan masyarakat (society).
Penjabaran lebih lanjut adalah sbb:

I Ilmu komputer lebih lanjut dibagi 2 kelompok:


1. Pemikiran komputasi yang terdiri dari:

 Reka-ulah (simulation)
 Pemrograman (programming)
 Tatanan data (data structure)
 Alas data (data base)
 Peniskalaan (abstraction)
 Pemikiran algoritma (algoritmic thinking)
 Matematika diskrit (discrete mathematics)

2. Pemikiran sistem terdiri dari:

 Analisa sistem dan rancangan (system analysis and design)


 Rekayasa perangkat lunak (software engineering)
 Jaringan dan komunikasi (network and communication)
 Pengelolaan proyek (project management)
 Robotika

II Alat komputer mencakup dua bidang yaitu:

1. Penggunaan komputer yang terdiri dari:

 Perangkat keras komputer (computer hardware)


 Perbaikan (troubleshooting)
 Piranti TIK (ICT device)
 Perakitan dan pemeliharaan (assembly and maintenance)

2. Penggunaan terapan terdiri dari :

 Pengupakan (animation)
 Penyuntingan citra (image editing)
 Hamparan (spreadsheet)
 Pengolah kata (word processing)
 Alat media (media tool)
 Alat pemaparan (presentation tool)
 Rancangan dengan bantuan komputer/ pemabrikan dengan bantuan komputer {CAD
(computer aided design) / CAM (computer aided manufacturing)}
 Rancangan laman jala internet (web page design)
 Permainan (games)

IIII Kaitan komputer dengan masyarakat terdiri tiga bidang utama dari:

1. Kecakapan di Abad 21 (21st Century competencies) yang meliputi:

 Pemikiran kritis dan daya cipta (critical and inventive thinking)


 Keahlian informasi dan komunikasi (information and communication skill)
 Kecelikan kewarga-negaraan , kesadaran global, dan keahlian lintas budaya (civic
literacy, global awareness, dan cross-cultural skill)

2. Penggunaan berbudi pekerti dan sah (ethical and legal use)

 Kepemilikan intelektual (intellectual property)


 Kebersendirian data (data privacy)
 Kejahatan komputer (computer crime)
 Sopan santun internet (netiquette)
 Budi pekerti (ethics)

3.Penggunaan yang selamat dan bertanggung jawab (safe and responsible use) yaitu:

 Virus
 Internet
 Keamanan komputer (computer security)
 Media sosial (social media)
 Kecanduan (addiction)
 Keselamatan (safety)
 Penyimpanan data.

Dalam Gambar 1.3 itu juga dapat dilihat bahwa kalau kita hanya mengandalkan Penggunaan
Terapan (Use of Application,yang berada di sudut kanan atas) atau belajar menggunakan
perangkat lunak bikinan orang lain, kita beresiko terperangkap dalam produk terapan yang dibuat
oleh perusahaan raksasa seperti Microsoft, Google, dll. Setahun sekali pembuat perangkat lunak
melepaskan dan menjual versi lebih baru, yang menyebabkan kita disibukkan terus untuk
mempelajari produk baru mereka, tanpa pernah dapat berpikir untuk menciptakan produk kita
sendiri. Resiko ketergantungan pada produk terapan buatan orang, ibaratnya seperti kita hanya
mahir menggunakan cangkul tetapi tidak pernah bisa membuat cangkul.
Untuk melepaskan diri dari jebakan pembuat perangkat lunak, kita perlu menguasai bahasa
pemograman dan membuat perangkat lunak yang lebih baik dan lebih khayali (imajinatif) dari
yang mereka buat. Kalau terus menerus tergantung pada perangkat lunak buatan orang, daya
khayal kita hanya terbatas dalam kerangka pemikiran para pembuat perangkat lunak tersebut.
Daya khayal kita mungkin lebih hebat dari daya khayal mereka, kalau kita mau mencobanya.
Karena itu, kita perlu bergerak ke sisi kiri dalam Gambar 1.3, untuk belajar Ilmu Pengetahuan
(Science) yaitu Pemikiran Kependataan / Komputer (Computational Thinking) dan Pemikiran
Sistem (System Thinking). Anda dapat mengkhususkan diri pada salah satu atau beberapa bidang
yang ada dalam gambar tersebut.

Karena sangat luas, pengajaran teknologi informasi (teknologi maklumat) di berbagai lembaga
pendidikan biasanya dibagi dalam jurusan-jurusan berikut, yaitu:

 Sistem Informasi ( yang membahas tentang bisnis dan pengguna teknologi informasi)
 Ilmu komputer (yang mencakup Penggunaan perangkar lunak, Perancangan perangkat
lunak dan Penggunaan Perangkat keras).
 Rekayasa /Teknik Komputer (yang mempelajari tentang Penggunaan perangkat keras dan
Perancangan perangkat keras). (lihar Gambar 1.4)

Gambar 1.4 Jurusan-jurusan yang tercakup dalam pengajaran teknologi informasi

Dengan semakin meningkatnya penggunaan komputer dan benda-benda lain yang terhubung ke
internet (internet of thing/connected object), semakin banyak juga dibutuhkan tenaga ahli
komputer yang mampu memanipulasi perangkat keras dan lunak. Di sisi lain, di jaringan internet
juga berkembang kejahatan, sehingga dibutuhkan juga ahli keamanan komputer yang melindungi
komputer dari serangan virus, pencurian data, penipuan, dsb.

Beberapa keahlian yang banyak dibutuhkan oleh perusahaan/industri dalam jangka pendek dan
menengah adalah sbb:

 Kepala bagian digital (chief digital executive)


 Pengembang / pembangun (developper)
 Manajer sosial media (community manager)
 Pereferensi optimisasi mesin pencari (search engine optimization/ pembuat algoritma
agar situs muncul pada halaman utama mesin pencari)
 Manajer lalu lintas (trafic manager /untuk menarik sebanyak mungkin pengguna melihat
situ/iklan)
 Ilmiawan data (data scientist)
 Pembelajaran otomatis/ mesin (machine learning)
 Kecerdasan buatan (artificial intelligence)
 Pejabat perlindungan data (data protection officer)
 Analis keamanan siber (cyber security analyst)
 Pengendali pabrik 4.0 secara otomatis (manufacturing industry 4.0 control / otomatisasi
proses industri)
 Manajer produk (product manager/ pesintesa strategi perusahaan dengan kerja
pengembang dan perancang sistem informasi)
 Perancang pengalaman pengguna (UX/user experience) yang bertugar merancang antar
muka yang ergonomis antara komputer dan manusia.

Kalau sudah mahir pemrograman dan keahlian komputer yang terkait, anda dapat menawarkan
keahlian anda kepada perorangan, perusahaan atau industri yang berminat. Keahlian
pemrograman adalah modal besar untuk berusaha di zaman internet ini. Anda bisa menjadi kaya
raya seperti Bill Gates, dll.,yang memulai melakukan penulisan program sejak kecil dan
memulai usaha dengan menjual berbagai program terapan seperti DOS-Windows, Office, dll.
Selain itu, anda dapat beramal dengan menciptakan perangkat lunak yang bermanfaat bagi orang
banyak, seperti yang dilakukan oleh Linus Torvalds dengan sistem operasi Linux yang
disebarkan secara gratis melalui lisensi sumber terbuka (open source). Linux menjadi pesaing
utama DOS-Windows, karena gratis dan lebih aman dari gangguan virus. Sekarang, banyak
pemrogram amatir membuat berbagai jenis terapan mungil (applet/ application light-weighted)
dan menjualnya melalui internet. Ada juga yang beramal dengan melepaskannya secara gratis,
dan ada pula yang melepaskan secara gratis untuk versi dasar tetapi bayar untuk versi yang
lengkap (dinamakan freemium). Hal ini, misalnya, dilakukan oleh Zainuddin Nafarin yang
membuat dan melepaskan program antivirus Smadav, dan mengharumkan nama Indonesia di
dunia maya.
Bab II

Pengenalan Dasar Bahasa Python

Bahasa Python disusun oleh Guido van Rossum (pakar komputer Belanda) pada tahun 1989.
Penyusunan bahasa pemrograman(pengaturcaraan) pada hakekatnya adalah membuat aturan
penggunakan tatacara bagaimana nantinya program (aturcara) akan ditulis oleh pemrogram
(pengaturcara / programmer). Bahasa pemrograman itu sendiri disusun dengan menggunakan
bahasa yang lebih rendah, yaitu bahasa yang lebih dekat ke bahasa rakitan dan bahasa mesin.
Python sendiri ditulis dengan menggunakan bahasa C, karena van Rossum tidak puas dengan
kinerjabahasa C dalam pembuatan program komputer. Untuk itu, dia menyodorkan bahasa baru
yang dapat menggantikan peran bahasa C yang sulit dipelajari oleh pelajar pemula.

Sebenarnya tidak ada bahasa pemrograman yang sempurna. Suatu bahasa dapat memiliki kinerja
sangat bagus untuk menyelesaikan suatu masalah, tetapi „memble‟ ketika digunakan untuk
menyelesaikan masalah yang lain. Oleh karena itu pakar komputer selalu berusaha menyusun
bahasa baru yang lebih baik dari yang sudah ada. Andapun kalau sudah menguasai teori dan
praktek ilmu komputer,diharapkan juga bisa mengikuti Guido van Rossum untuk menciptakan
bahasa yang lebih sempurna lagi di masa mendatang.

2.1 Mengapa belajar Python sebagai bahasa pemrogramann pertama?

Untuk mampu mengendalikan komputer sesuai dengan keinginan kita, bahasa apa saja dapat
digunakan, asal dikuasai dengan baik. Namun, ada pertimbangan penting yang harus menjadi
pedoman bagi pelajar pemula, yaitu kemudahan untuk menguasainya dan prospek penerapannya
ke perusahaan/industri yang menggunakan bahasa tersebut. Semakin populer suatu bahasa
pemrograman digunakan oleh perusahaan, semakin baik prospek orang yang menguasai bahasa
itu untuk bekerja atau menjual jasa pemrograman kepada perusahaan tersebut. Demikian juga
dengan biaya lisensi (izin) yang dibebankan oleh pembuat/pemilik hak cipta bahasa
pemrograman kepada pengguna. Idealnya bahasa komputer yang tepat untuk pemula adalah
mudah dipelajari, banyak digunakan di kalangan perusahaan, dan bebas biaya lisensi.

Keputusan Pemerintah Afsel pada tahun 2016, yang memilih menggunakan bahasa Delphi di
dalam kurikulum pengajaran program komputer di SMA, menuai banyak kritik dari akademisi di
negara itu, karena bahasa tersebut sudah usang (sudah tidak banyak lagi perusahaan yang
menggunakannya) dan Pemerintah Afsel perlu membayar lisensi kepada perusahan Embarcadero
sebagai pemilik Deplhi. Lisensi Embarcadero Delphi pada tahun 2011 berkisar antara USD 199 –
4.300 per komputer. Bayangkan betapa besarnya beban APBN Afsel yang harus dikorbankan
untuk menggunakan Delphi di puluhan ribu komputer yang ada di SMA-SMA seluruh Afsel.
Sementara itu, setelah menguasai Delphi, tamatan SMA susah mendapatkan pekerjaan karena
sedikit sekali perusahaan yang membutuhkan jasa keahlian bahasa Delphi.

Berdasarkan pertimbangan tersebut, ada beberapa keunggulan mempelajari Python dibandingkan


dengan bahasa pemrograman lainnya:

 Mudah dikuasai oleh pelajar pemula karena Python adalah bahasa tingkat tinggi yang
relatif lebih dekat dengan bahasa alami manusia (dalam hal ini bahasa Inggris). Tatanan
kalimat pemrograman lebih sederhana dibandingkan dengan bahasa lain, seperti Java,
Perl, C++, dsb.
 Sembada dan dapat diandalkan untuk melaksanakan tugas berat seperti mengolah data
dalam jumlah besar (big data) di bidang iptek dan niaga dengan cepat.
 Menurut peringkat yang dibuat oleh IEEE (Institute of Electrical and Electronic
Engineers) pada tahun 2017, Python merupakan bahasa pemrograman yang menduduki
urutan pertama paling populer di atas bahasa C dan Java.
 Banyak digunakan di dunia usaha untuk membuat berbagai program terapan termasuk
dalam bidang kecerdasan buatan. Contoh perusahaan besar yang menggunakan Python:
General Electric, Google (Youtube), Toyota, Dropbox, JP Morgan, Nasdaq, dll.
 Python adalah program sumber terbuka (open source). Anda tidak perlu membayar
lisensi untuk menggunakannya. Anda tidak mengalami dakwaan pelanggaran hak cipta
atau penjiplakan karena menggunakan perangkat lunak bajakan. Kinerja Python terus
menerus ditingkatkan oleh sukarelawan pengembang (developper) Python di seluruh
dunia.
 Lembaga pendidikan tinggi di AS semakin banyak beralih ke Python untuk mengajarkan
bahasa pemrograman pemula bagi mahasiswa. Contoh: MIT, Cornell University,
University of California Barkeley, dll. Delapan dari 10 universitas terbaik di AS
menggunakan Python sebagai bahasa pemrograman pertama di tingkat S1. Demikian juga
dengan di 27 dari 39 jurusan informatika terbaik di berbagai universitas AS.

Walaupun ada kritik yang mengatakan bahwa program yang ditulis dengan bahasa Python lebih
lambat ketika dijalankan (run) di komputer, jika dibandingkan dengan program yang ditulis
dalam bahasa C, Python tetap saja unggul karena waktu yang diperlukan untuk menulisnya lebih
sedikit dari pada jika program ditulis dalam bahasa C (lihat contoh penulisan dalam bahasa C
dan Python dalam Bab 1 untuk menuliskan ungkapan “Apa kabar, saudaraku”; bahasa C butuh
lima baris kode sedangkan Python cukup satu baris). Dengan tatanan penulisan yang sederhana
dan mendekati bahasa alami manusia, perangkat lunak yang ditulis dalam bahasa Python lebih
mudah untuk diperiksa dan diperbaiki bila terdapat kesalahan penulisan.

Dengan kecepatan komputer yang semakin tinggi dan penurunan harga perangkat keras yang
semakin murah, keterlambatan ketika program Python dijalankan dapat diimbangi oleh
kecepatan penulisan dan rendahnya biaya pemeliharaan dan pengembangan perangkat lunak
secara keseluruhan.

Untuk sukses dalam profesi pemrograman, anda tetap harus menguasai beberapa bahasa program
karena perusahaan sebagai pengguna jasa pemrograman, biasanya sudah memiliki perangkat
lunak yang sudah ditulis dalam bahasa tertentu. Perusahaan membutuhkan orang yang ahli untuk
memelihara dan mengembangkan perangkat lunak tersebut. Dengan lebih cepat menguasai
bahasa Python, anda akan lebih cepat menguasai seluk beluk bahasa pemrograman secara umum.
Ketika anda sudah mahir Python, anda dapat menggunakan kemahiran ini sebagai batu loncatan
untuk belajar bahasa pemrograman lain yang lebih rumit, misalnya bahasa C, C++ dan Java, atau
bahkan bahasa rakitan. Dengan bekal bahasa Python, belajar bahasa program yang lain tidak
akan sesukar ketika anda belajar bahasa program untuk pertama kali.

2.2 Mengunduh program Python dari internet.

Anda perlu mengunduh program Python dari situs www.python.org . Ada dua versi yang
ditawarkan dalam layar utama yaitu versi 2 dan versi 3. Anda disarankan untuk mengunduh versi
yang terbaru yaitu versi 3. Hingga bulan Februari 2017, versi terbaru adalah v3.6.0 yang dilepas
oleh Python Software Foundation pada tanggal 23 Desember 2016. Pilih yang 32 bit karena tidak
semua prosesor siap dengan versi 64 bit (terutama komputer yang tidak sanggup lagi
menjalankan program Windows 7).

Setelah mengunduh pemasang (Python installer), anda perlu memasang/merasuki (install) atau
menyetel (setup) warkah (file) python-3.6.0 ke dalam sistem komputer anda.

Kalau pemasangan berhasil, progam Python akan berada dalam berkas (folder) All Program di
tampilan Windows (penulisan ini berada di Windows 7). Untuk memulai Python anda dapat
mengeklik pentol (bouton) Start -> All Programs -> Python 3.6 -> IDLE Python 3.6 32 bit.

IDLE (Integrated DeveLopment Environment/ Lingkungan Pengembangan Terpadu) adalah


cangkang (shell) interaktif (atau disebut juga celaga (console) atau terminal Python) dimana anda
dapat menulis kode. Klik cepat dua kali berturut-urut akan memunculkan cangkang interaktif
Python seperti dalam Gambar 2.1.

Perhatikan angka di sudut kanan bawah adalah kedudukan pejera (cursor). Dalam cangkang di
atas, kedudukan pejera berada pada baris ke 5 dan kolom ke 4.

Untuk menutup cangkang IDLE anda dapat:

 Mengeklik pada pentol X merah di sudut kanan atas


 Mengeklik File -> Exit
 Menekan serentak tombol Ctrl + Q di papan kunci (keyboard), atau
 Mengetik quit() lalu tekan tombol Enter, dan setelah itu mengeklik OK ketika muncul
pertanyaan : Your Program is still running! Do you want to kill it? (Program anda masing
sedang berjalan! Apakah anda ingin membunuhnya?
 Yang paling cepat adalah menekan tombol Ctrl + Q

Gambar 2.1 Cangkang Python (Python shell) tempat menulis program

2.3 Program awal dengan Python

Sekarang kita mencoba menulis sebuah program sangat sederhana dengan bahasa Python. Dalam
cangkang Python terdapat tanda lebih besar (>>>) tiga kali. Tanda itu adalah jeraus (prompt)
“ajakan perintah” . Coba anda ketik dalam cangkang Python di depan jeraus >>>, kemudian
tekan tombol Enter (masukkan):

>>>print(“Assalamualaikum semua orang”)


Assalamualaikum semua orang
>>>
(print = cetak)

Anda memerintah komputer untuk mencetak (print) kalimat Assamualaikum semua orang dan
komputer akan mencetak/ menampilkan kalimat itu di layarnya. Jangan lupa tanda kutip (“ “) di
awal dan akhir kalimat. Setelah itu tanda jeraus (>>>) muncul lagi yang menyatakan bahwa
cangkang Python siap menerima perintah baru.

Anda berhasil menulis program baru. Ternyata menulis program mudah sekali. Anak kecil aja
bisa.

Kata print (cetak) yang anda ketik adalah sebuah perintah Python yang digolongkan sebagai
fungsi (function) . Fungsi print ini memerintahkan komputer untuk mencetak (menampilkan)
ke layar segala sesuatu yang ada di antara dua tanda kutip yang berada di dalam tanda kurung
biasa. Anda memberikan perintah kepada komputer untuk menampilkan Assalamualaikum
semua orang ke layar komputer. Berdasarkan program yang anda tulis, baik anda maupun
komputer memahami perintah ini.

Fungsi adalah sejenis program kecil untuk melaksanakan tugas tertentu. Tugas dari fungsi
print() adalah menampilkan sebuah nilai atau urutan dari nilai. Kita dapat memulai atau
memanggil (call) sebuah fungsi dengan mengetik nama fungsi yang diikuti oleh tanda kurung.
Seperti yang telah kita kerjakan, kita melalukan (pass) sebuah nilai yang ada dalam tanda kurung
untuk digunakan oleh fungsi tersebut. Dalam contoh di atas nilai yang dilalukan adalah
‘Assalamualaikum semua orang’. Nilai yang kita taruh di dalam tanda kurung tersebut disebut
hujjah (argument). Dalam program pertama tersebut kita melalukan hujjah „Assalamualaikum
semua orang‟ kepada fungsi print(), yang akan digunakan oleh fungsi print() untuk
menampilkan pesan Assalamualaikum semua orang, ke layar.

Layar tempat anda menulis disebut cangkang interaktif (antar-tindak) karena Python segera
menampilkan hasil pelaksanaan perintah dari yang anda ketik ke layar setelah menekan tombol
Enter.

Untuk menyimpan naskah yang anda tulis, tekan pentol File -> Save , lalu ketik nama warkah
program dan pilih berkas/hala (folder/directory) dimana anda ingin menyimpannya. Sebaiknya di
suatu berkas terpisah dengan tempat dimana Python dipasang. Untuk sistem operasi Windows,
jangan lupa menambah akhiran .py (titik py) di ujung nama warkah, misalnya salam.py.

Anda juga dapat menulis naskah kode (script) untuk disimpan dan dijalankan kemudian, dengan
menggunakan cangkang yang tak interaktif. Di dalam IDLE tekan pilihan pentol File -> New
File. Setelah ditulis, warkah tersebut dapat disimpan sebagaimana warkah lainnya. Misalkan
anda menulis program yang lebih panjang:

nama = input(‘Siapa nama anda?’)


print(‘Apa kabar?’, nama)

Naskah ini dapat disimpan dalam sebuah warkah misalnya nama.py . Setelah tersimpan, anda
dapat menjalankan (run) program itu, dengan menekan pentol Run -> Run Module atau F5.
Program ini akan dijalankan oleh fungsi input() dan meminta anda memasukkan nama.
Misalnya anda masukkan (melalukan) nama Ana. Setelah anda tekan tombol Enter hasilnya
akan muncul di cangkang interaktif.

===================== RESTART: C:/kode/nama.py ========================


Siapa nama anda? Ana
Apa kabar? Ana
2.4 Prosedur kerja program Python

Apa yang anda tulis di papan kunci (keyboard) adalahperintahmasukan (input) yang anda
berikan ke komputer. Komputer mengambilnya dari papan ketikan, mengolahnya (process)
dengan penjelasan tertentu dan menampilkan di layar sebagai keluaran (output). Apapun bahasa
yang anda gunakan, yang dilakukan oleh komputer sama saja yaitu menerima input, melakukan
pengolahan (processing) dan menghasilkan output. Ketiga kata tercetak tebal ini sering
disingkat menjadi IPO.

Setelah anda memasukkan perintah sesuai dengan tata bahasa Python ke dalam komputer, ada
proses yang tidak kelihatan di layar yaitu proses penerjemahan bahasa Python ke dalam bahasa
mesin. Proses ini digolongkan dalam dua jenis:

Interpreter (penerjemah) yang langsung menerjemahkan secara langsung setiap baris kode
sumber (source code ) yang anda tulis dalam bahasa Python ke dalam bahasa mesin, untuk
selanjutnya diolah dan ditampilkan di layar atau disimpan di dalam ingatan (memory) sebagai
keluaran (output). Inilah yang berlangsung ketika anda memerintahkan komputer untuk
mencetak kata Assalamualaikum dengan perintah print di atas.

Gambar 2.2 Penerjemahan sumber kode ke keluaran

Gambar 2.3 Cara kerja penerjemah Python melalui pengepul

Cara lain untuk mengubah sumber kode bahasa Python ke dalam bahasa mesin yaitu melalui
compiler (pengepul) yang ada dalam penerjemah Python (lihat Gambar 2.3) .Ketika anda
menulis atau menyunting kode sumber (warkah sumber /source file) , penerjemah Python tidak
mengubahnya secara langsung setiap ketukan tombol Enter, tetapi menunggu perintah anda
hingga selesai semua proses penulisan (menyimpan dalam sebuah warkah). Dalam hal ini
pengubahannya secara tidak langsung ke bahasa mesin tetapi kode sumber diubah dulu oleh
pengepul ke dalam kode objek (disebut juga bytecode atau program objek). Kode objek ini
mirip dengan suatu kode antara (bahasa antara yang lain lagi) dalam bahasa mesin.

Setelah itu, kode objek /program objek itu dapat diproses langsung oleh executor (pelaksana) di
dalam mesin maya (virtual machine) yang juga merupakan bagian dari penerjemah. Program ini
dapat dijalankan berkali-kali tanpa perlu dikepul (compile) lagi. Bila diperlukan, mesin maya ini
dapat memanggil modul program pendukung lain yang berada di dalam perpustakaan (library)
program Python. Hasilnya adalah aturcara/program yang berjalan (running program).

Karena proses yang menggunakan penerjemah, Python disebut bahasa yang diterjemahkan
(interpreted language), berbeda denga bahasa C atau Java yang disebut bahasa yang dikepul
(compiled language) karena kode sumber bahasa tersebut harus dikepul dahulu sekaligus ke
dalam bahasa mesin oleh pengepul sebelum dapat dijalankan.

Ada dua cara penggunaan penerjemah oleh Python: interactive mode (modus interaktif) dan
script mode (modus naskah/ program).

Dalam modus interaktif, begitu anda selesai mengetik program dan menekan tombol Enter,
penerjemah mencetak hasilnya.

Misal:

>>> 2 + 2
4

Ketika anda mengetik 2 + 2 dan menetakan Enter, penerjemah segera Python menampilkan 4.

Cara lain, anda dapat menyimpan kode yang ada tulis dalam sebuat warkah (dokumen/ file) dan
menggunakan penerjemah untuk melaksanakan warkah tersebut. Cara ini disebut scripting
(penaskahan/ penulisan kode). Berdasarkan kesepakatan, naskah/program Python diberi nama
dengan ujung .py. Untuk melaksanakan (execute) sebuah warkah, anda harus menjelaskan
kepada penerjemah nama dari warkah yang ingin anda laksanakan.

Bekerja dengan modus interaktif bagus untuk kode dalam jumlah barisnya yang sedikit, karena
anda dapat mengetik dan melaksanakan dengan segera untuk melihat hasilnya. Tetapi untuk
program yang barisnya banyak, anda perlu menyimpannya sebagai naskah (script), sehingga
anda dapat menyempurnakannya dan melaksanakannya di masa mendatang. Warkah yang anda
simpan dengan nama.py di atas adalah salah satu kode objek Python, yang dapat anda jalankan
kapan saja tanpa perlu dikepul lagi. Karena cara kerja seperti itu, Python juga digolongkan
sebagai bahasa penaskahan (scripting language).

Selain perintah input (masukan/ ambil kode dari papan ketikan atau warkah) dan output
(keluaran/ tampilkan hasil di layar atau kirim ke dalam warkah), dalam suatu program komputer
juga terdapat perintah matematika (math) yang melaksanakan operasi matematika dasar seperti
tambah, kurang, kali dan bagi.

Intruksi berikutnya dalam sebuah program adalah pelaksanaan bersyarat (conditional


execution) yang mengecek apakah sejumlah persyaratan sudah terpenuhi, sebelum melaksanakan
urutan yang tepat dari pernyataan (statement). Misal: kalau input berat badan yang diterima
komputer lebih dari 95 kg, maka print (‘kegemukan berlebihan’).

Intruksi yang lain adalah kitaran (iteration) yang melaksanakan sejumlah tindakan berulang-
ulang. Misal print (‘10 tiga kali’) .

Semua program komputer yang anda gunakan dan yang akan anda tulis, betatapun rumitnya,
pada dasarnya hanya terdiri dari perintah-perintah berikut:

 masukan (input)
 keluaran (output),
 operasi matematika,
 pelaksanaan bersyarat
 dan kitaran berulang (iteration).
Bab III

Penyelesaian Masalah Melalui Pemrograman

3.1 Penciptaan sistem pendata/komputer

Yayasan RJ membuka sekolah, mulai dari SD sejak tahun 2008. Karena mutunya bagus, sekolah
tersebut banyak diminati masyarakat. Sekarang yayasan tersebut semakin berkembang dan sudah
mendirikan SMP. Ketika jumlah murid masih sedikit, urusan administrasi masih sederhana dan
cukup dikerjakan oleh seorang karyawan. Ketika jumlah murid semakin bertambah banyak,
karyawan semakin kewalahan menyelesaikannya dengan cepat dan tepat.

Oleh karena itu timbul ide dari pemilik yayasan untuk menyelengarakan seluruh administrasi
sekolah secara terpadu dengan menggunakan sistem pendata/komputer (paduan antara perangkat
keras dan lunak). Pekerjaan yang akan dicakup oleh sistem pendata/komputer meliputi:

 Administrasi murid (data diri, data orang tua/wali, nilai, rapor, ijazah, surat keterangan,
dll)
 Administrasi keuangan (akuntansi penerimaan uang SPP, subsidi pemerintah, infaq,
sedekah, waqaf, dll, serta pengeluaran seperti gaji, alat tulis, perbaikan gedung, dll.;
laporan keuangan)
 Sumber daya ilmu (perpustakaan, pengembangan dan penyebaran bahan ajar, dll.)
 Inventarisasi kekayaan (gedung, perabotan, alat elektronik, laboratorium, kenderaan, dll)
 Sumber daya manusia (perekrutan, pengaturan jadwal, pendidikan, pelatihan, dsb.)
 Hubungan masyarakat (situs internet, media sosial, iklan, pengabdian masyarakat,
masukan,dsb).

Untuk mengadakan sistem pendata/komputer seperti itu, yayasan perlu melakukan suatu
prosedur yang disebut analisa dan rancangan sistem (system analysis and design) guna melihat
kebutuhan yayasan serta mengadakan perangkat keras dan perangkat lunak yang sesuai.

Tahapan analisa dan rancangan sistem meliputi tahap-tahap berikut:

 Perencanaan yang berfokus pada

Mengapa sistem pendata ini perlu dibangun?

Apa manfaat dan biaya dari proyek ini?

Apa yang dibutuhkan?


Apakah yayasan itu sanggup mendanainya?

Adakah sumber daya manusia yang sanggup menyelenggarakannya?

 Analisis dengan fokus: Apa, Siapa, Dimana, dan Kapan yang menyangkut dengan sistem.
 Rancangan dengan fokus:

Bagaimana sistem ini dapat bekerja seperti yang diharapkan?

 Perwujudan dengan fokus : pengadaan perangkat keras, perangkat lunak, pemrograman,


pengujian, penyerahan dan dukungan terhadap sistem selama digunakan.

Bila lembaga itu tidak mampu melakukan sendiri analisa tersebut, dia dapat menggunakan jasa
perusahaan/konsultan luar yang menyediakan jasa analisa dan rancangan sistem.

Kalau anda sudah mahir membuat program dan memahami bagaimana sistem komputer bekerja,
andapun dapat membuat perusahaan konsultan yang bergerak dibidang jasa pengadaan sistem
pendata kepada berbagai lembaga atau perusahaan.

Pemrograman (pengaturcaraan) memegang peran yang sangat penting untuk berjalannya sistem
pendata/komputer dengan baik. Adanya perangkat keras yang baik belum tentu mampu mencapai
kinerja yang diharapkan. Namun, perangkat keras yang biasa-biasa saja tetapi dipasang
perangkat lunak yang bagus, akan dapat mencapai hasil yang lebih baik, dari pada perangkat
keras yang bagus tetapi dipasang perangkat lunak yang buruk. Disinilah perlunya pemrogram
(pengaturcara) yang handal dan benar-benar mengerti tentang hasil yang diharapkan dari sistem
yang akan dipasang.

Untuk mencapai hasil yang baik, proses pemrograman itu sendiri meliputi beberapa tahap:

 Permintaan pelanggan (costumer request) yang menjelaskan tentang kebutuhanannya


untuk memecahkan masalah dengan menggunakan komputer. Langkah ini disebut juga
fase keperluan pelanggan. Pada tahap ini tugas pemogram adalah mengecek (verify)
keperluan tersebut.
 Berdasarkan permintaan tersebut, pengaturcara (programmer) menganalisa (analysis)
kebutuhan pelanggan dan langkah-langkah apa yang perlu dilakukan untuk memenuhi
kebutuhan tersebut. Hasil analisa tersebut diumpanbalikkan ke pelanggan untuk
menentusahkan (validate) apakah kebutuhan pelanggan memang seperti yang dijelaskan
dalam permintaannya.
 Berdasarkan analisa yang telah dicek , pengaturcara merancang (design) perangkat lunak
yang diperlukan dan mengecek lagi dengan analisa dan melakukan perombakan apabila
diperlukan.
 Dalam tahap ini rancangan diwujudkan (implementation) ke dalam penulisan program
(aturcara). Program yang telah ditulis belum tentu sesuai dengan kinerja yang diharapkan.
Oleh karena itu, perlu diuji dan diumpanbalikkan ke tahap sebelumnya untuk melihat
apakah program itu sesuai dengan rancangan.
 Setelah diuji kesesuaiannya, program tersebut dipadukan (integration) dengan program
lainnya untuk membentuk suatu paket perangkat lunak, dan pemasangan (installation)
paket itu kepada perangkat keras dari sistem pendata. Setelah itu pengujian juga
diperlukan untuk melihat kinerja program setelah dipasang. Bila hasil kurang
memuaskan, umpat balik diberikan lagi ke tahap sebelumnya untuk membetulkan
penulisan.
 Setelah digunakan, program perlu dipelihara (maintenance) karena ada gangguan seperti
temuan kesalahan dalam penulisan program, virus, pengampak (hacker / pihak luar yang
merusak program atau mencuri data). Setelah itu umpan balik kembali dilakukan
terhadap tahap-tahap yang telah dilakukan sebelumnya dalam rangka peningkatan
perangkat lunak di masa mendatang.

Tahap-ahap tersebut yang disebut sebagai daur hidup pengaturcaraan (programming lifecycle)
diperlihatkan dalam gambar 3.1.

Gambar 3.1 Tahap-tahap pemrograman untuk pembuatan sistem pendata (komputer)


Kriteria aturcara (program) yang baik yaitu:

 Memberikan jawaban yang tepat dari masalah yang dihadapi.


 Jelas dan mudah dibaca; tindakan dari setiap bagian mudah dianalisa.
 Menjadi dokumen baik bagi pembaca dan pemrogram (pengatur cara)
 Mudah digunakan.
 Mudah dipermak/ dirombak (modify), namun tetap handal dan masih memberikan
jawaban yang tepat setelah perombakan.
 Dapat diwariskan kepada orang lain untuk digunakan dan dikembangkan lebih lanjut.

3.2 Algoritma sebagai dasar pemrograman

Sebelum menulis program, kita harus menganalisa masalah yang ingin kita selesaikan,
merancang penyelesaian dan mewujudkan penyelesaian dengan membuat sebuah program.
Urutan penyusunan program dari penyelesaian masalah hingga mencapai hasil yang diharapkan
yaitu:

1. Masalah yang muncul difahami dan dianalisa untuk mencari penyelesaian, dan
menentukan jenis data apa yang digunakan;
2. Penyusunan algoritma yang berisi urutan langkah-langkah yang mungkin untuk
penyelesaian masalah;
3. Mewujudkan program dalam bahasa tingkat tinggi (misalnya Python, Ruby, C++, Java,
dll), menguji dan memenda kesalahan (debugging);
4. Melaksanakan (menjalankan ) program untuk mengolah (menghitung) masukan dalam
rangka menghasilkan keluaran (lihat Gambar 3.2).

Misalkan perpustakaan Yayasan RJ menyuruh anda membuat program terapan (application)


untuk mencari buku termurah di internet dalam rangka menambah koleksi perpustakaan dengan
tujuan menggunakan anggaran sekecil mungkin, tetapi mendapatkan buku yang lebih banyak.
Anda dapat mencari harga buku paling murah (di bawah harga resmi penerbit) di berbagai situs
penjualan dalam talian (online) di internet. Biasanya penjual memberikan rabat (menurunkan
harga) dari waktu ke waktu. Secara manual anda dapat membuka satu per satu situs penjualan
buku seperti Amazon, Bukalapak, Blibuku, dll., namun hal ini tidak praktis dan anda tidak dapat
dapat melakukannya setiap saat. Karena itu anda ingin membuat sebuah program yang dapat
mencari secara otomatis situs-situs internet yang menawarkan buku dengan harga di bawah harga
sasaran anda.
Gambar 3.2 Urutan Penyelesaian masalah dengan komputer.

Walaupun anda sudah mengetahui bahwa menulis program dalam bahasa Python sangat mudah,
tetapi kemampuan menulis saja tidak cukup untuk menulis program yang baik. Sama seperti
kemampuan menulis dalam Bahasa Indonesia belum tentu menghasilkan syair atau buku yang
baik, anda perlu menguasai apa yang disebut sebagai pemikiran kependataan/informatika
(computational thinking) yang meliputi lima kategori:

- Melihat sebuah masalah dan penyelesaiannya pada berbagai tingkatan (keniskalaan/


pensarian /abstraction).
- Memikirkan pada tugas-tugas yang akan diselesaikan dalam bentuk suatu urutan dari
langkah-langkah setahap demi setahap (algoritma)
- Mengerti bahwa untuk menyelesaikan masalah yang rumit, persoalan itu perlu diuaraikan
dalam beberapa masalah yang lebih sederhana (peruraian/decomposition)
- Mempertimbangkan bahwa sebuah persoalan baru, mungkin terkait dengan masalah yang
barangkali telah diselesaikan sebelumnya (pengenalan corak / patern recognition).
- Menyadari bahwa penyelesaian terhadap suatu masalah dapat digunakan untuk
menyelesaikan serangkaian masalah yang berkaitan (pelaziman/ generalization).
Menghadapi masalah pencarian buku termurah seperti diatas, memerlukan pendekatan pemikiran
kependataan. Untuk itu kita perlu mengenal lebih dahulu masalah secara mendalam, memikirkan
langkah-langkah yang mungkin dijalankan dan menuangkannya dalam sebuah jalan penyelesaian
yang disebut algoritma (algorithm, istilah ini adalah pelesetan dari dari nama ahli matematika
Islam, Alkhwarizmi yang hidup pada abad 9 M).

Algoritma merencanakan tata cara kerja yang teratur sehingga memungkinkan anda untuk
melakukan sesuatu sehingga tujuan dapat tercapai secara berhasil. Dalam kehidupan sehari-hari,
banyak sekali algoritma misalnya cara pembuatan atau resep masakan, nasehat menghadapi
banjir, buku petunjuk bengkel, cara merakit lemari, menyelesaikan persoalan matematika, dlsb.

Penyusunan algoritma bisa berbeda-beda antara berbagai orang, seperti juga urutan pemasukan
bahan mentah ke dalam panci untuk diolah menjadi makanan oleh seorang koki. Urutan ini
menentukan enak atau tidaknya makanan. Walau hasil yang dicapai sama, namun algoritma
yang berbeda dapat menyebabkan upaya yang dilakukan untuk mencapai hasil bisa lebih berat
atau lebih ringan.

Misalnya algoritma untuk menghitung tinggi pohon. Sekelompok orang menggunakan Algoritma
A dengan memanjat pohon hingga ke ujungnya sambil menaikkan meteran untuk mengukur
tinggi. Sedangkan yang lain menggunakan Algoritma B yaitu cukup menebang pohon untuk
mengukur panjang pohon dari pangkal hingga ke ujungnya, sehingga tidak diperlukan lagi
pemanjatan.

Algoritma A : Algoritma B :
- Ambil meteran - Tebang pohon
- Naik hingga ke ujung pohon - Ambil meteran
- Sampai ke ujung, ulurkan meteran ke - Ukur dari pangkal hingga ke ujung
bawah hingga mencapai tanah. pohon
- Catat hasil = tinggi pohon - Catat hasil = tinggi pohon
- Turun

Walaupun hasil yang dicapai sama yaitu tinggi pohon, tetapi tenaga dan waktu yang diperlukan
sangat berbeda antara Algoritma A dengan Algoritma B. (Belum lagi resiko terjatuh dan pohon
patah kalau kita memilih Algoritma A. “Namun, ada yang mengatakan bahwa hasilnya berbeda,
algoritma B tidak mengukur tinggi pohon tetapi panjangnya.”)

Dalam penyusunan algoritma juga demikian, walaupun hasil yang sama dapat tercapai, namun
diperlukan pemikiran untuk menuliskan algoritma yang paling efisien (membutuhkan waktu dan
tenaga yang paling sedikit) tetapi efektif (mencapai hasil yang paling baik). Akibat algoritma
yang tidak efisien, sebuah komputer yang super sembada menjadi lambat ketika dijejali dengan
program yang didasari oleh algoritma yang tidak efisien. (Bagi seorang koki, algoritma yang
baik adalah urutan pekerjaan yang dapat menghemat energi dan waktu, tetapi menghasilkan
masakan yang enak.)
Setelah disusun, algoritma tersebutkemudian diterjemahkan ke dalam perintah (petunjuk)
program atau disebut juga kode. Menulis kode (coding) artinya menterjemahkan algoritma ke
dalam program menurut kaidah logis yang berlaku dalam salah satu bahasa pemrograman.
Algoritma menjelaskan bagaimana persoalan diselesaikan dengan membuat daftar tindakan-
tindakan yang perlu dilakukan secara rinci dan urutannya untuk memungkinkan mesin
(perangkat keras) melaksanakan sebuah program. Algoritma sangat membantu menulis program
dengan baik.

Algoritma dapat ditulis dalam bahasa alami manusia atau dengan dengan menggunakan kode-
tiruan/mirip/palsu/tetiron (pseudocode). Algoritma adalah salah satu bidang yang sangat penting
untuk menguasai ilmu komputer. Algoritma menentukan baik buruknya program yang akan
dibuat dan keberhasilan program untuk menyelesaikan masalah seperti yang diharapkan.

3.3 Peniskalaan (abstraction) dan permodelan (percontohan)

Dunia nyata dimana masalah terdapat, sangat rumit penuh dengan informasi yang tidak terlalu
terkait dengan masalah yang kita hadapi. Untuk itu kita perlu mensarikan informasi yang terkait
untuk dapat dijadikan model (contoh/teladan) yang dapat diselesaikan dengan bahasa
pemrograman.

Dalam kehidupan sehari-hari, peniskalaan sangat memudahkan kehidupan manusia. Misalkan


untuk mengukur luas sebuah petak lahan, kita tidak perlu mengukur tanah setiap jengkal, tapi
cukup mengukur sisi atau jari-jarinya saja, dan kemudian menggunakan peniskalaan yang sudah
dibakukan menjadi rumus matematika seperti : panjang kali lebar untuk mengetahui luas lahan
yang berbentuk persegi panjang; sisi kuadrat untuk bujur sangkar; ½ kali sisi untuk segitiga; r2
untuk lingkaran, dsb ( adalah 22/7). Kita tidak perlu menakar jumlah air yang masuk ke dalam
bola untuk menghitung volume sebuah bola (seperti yang dilakukan oleh Archimedes untuk
mengukur volume mahkota), tetapi cukup mengukur jari-jari yaitu ½ dari diameter bola, dan
menggunakan rumus V = 4/3 r3 .

Untuk contoh pengukuran tinggi pohon di atas sebenarnya ada metode yang lebih ringan lagi
tanpa perlu naik ke ujung pohon apalagi menebangnya, yaitu dengan menggunakan rumus
trigonometri sederhana. Kita hanya perlu mengukur jarak dari pangkal pohon (posisi O) ke satu
titik, katakanlah X1, untuk membentuk sumbu datar. Dari titik X1 tersebut diukur sudut  yang
terbentuk dari sumbu datar tersebut hingga mencapai titik tertinggi pohon, katakanlah titik Y1.
Kita tahu bahwa dalam sebuah segi tiga, tangen  adalah pembagian sisi depan sudut (dalam hal
ini sisi tegak) dengan sisi dekat sudut (dalam hal ini sumbu datar) datar atau tg = OY1/OX1.
Jadi OY1 = tg  * OX1 atau tinggi pohon adalah perkalian nilai tg  dengan panjang sumbu
datar OX1. Banyak waktu dan tenaga yang dapat dihemat dengan peniskalaan.
Contoh-contoh tersebut adalah peniskalaan yang sederhana, karena rumus bakunya sudah
ditemukan orang sejak ribuan tahun yang silam. Namun kita sering menghadapi persolaan yang
lebih rumit yang rumus bakunya belum kita ketahui. Kita perlu mencari-cari rumus mana yang
paling tepat untuk digunakan atau kita perlu menciptakan rumus baru yang belum pernah
diterapkan oleh manusia. Salah satu contoh yang rumit adalah peniskalaan untuk pencarian buku
paling murah di internet.

Yang terkait dengan masalah pencarian buku paling murah adalah setiap produk yang dicari
terdapat dalam halaman lokajala (website) yang terkait dan memiliki daftar harga. Kemudian,
kita membuat daftar harga untuk setiap produk. Ringkasnya, informasi yang terkait adalah:

a. Jala internet (web)


b. Daftar yang mengandung halaman lokajala produk
c. Daftar yang mengandung harga sasaran (target price).

Sebutkan saja b adalah daftar Alamat dan daftar c adalah Sasaran Supaya lebih rinci, kita
perlu membuat suatu gambaran bagaimana alamat produk-produk yang ada di internet dalam
daftar Alamat berhubungan dengan harga sasaran produk-produk yang ada di internet dalam
daftar Sasaran. Untuk itu, kita bisa memperjelas dengan cara memberi nomor urut produk
0,1,2,3,… ( ahli komputer memulai hitungan dari angka 0) dan mengurut Alamat dan Sasaran,
sehingga halaman lokajala alamat dan harga sasaran sebuah produk berada dalam kedudukan
seperti yang terlihat di dalam daftar berikut (lihat Gambar 3.3)

Produk 0 1 2 …

Alamat Alamat Prod. 0 Alamat Prod. 1 Alamat Prod. 2 …

Sasaran Sasaran Prod. 0 Sasaran Prod. 1 Sasaran Prod.2 …

Gambar 3.3 Daftar alamat halaman web dan harga sasaran produk 0, 1,2,…

Kedudukan produk 1 adalah 0, produk 2 adalah 1, produk 3 adalah 2, dst. Dalam pembuatan
program tersebut, judul buku tidak perlu ditulis secara spesifik, karena program ini dapat
digunakan kembali dalam penyusunan program pencarian produk apa saja di internet, misalnya,
saham, baju, mobil, rumah, harga karcis, dsb.

Proses pensarian unsur-unsur yang terkait dengan masalah dan menyarikannya dalam bentuk
yang sederhana disebut peniskalaan (abstraction). Peniskalaan ini merupakan hal yang sangat
penting, sehingga masalah dapat digambarkan secara tepat, dengan menggunakan bahasa logika
dan matematika. Hasil dari peniskalaan adalah sebuah model (contoh) yang mewakili seluruh
aspek yang terkait dengan masalah. Model mirip dengan maket bangunanyang dibuat arsitek,
sebelum bangunan asli didirikan.

3.4 Algoritma pencarian harga paling murah

Terapan pencarian yang ingin kita kembangkan perlu “mengunjungi” setiap halaman lokajala
produk “secara bergiliran” dan , untuk setiap produk, “mengecek” apakah harga produk tersebut
sudah diturunkan sehingga berada di bawah harga sasaran.

Untuk menghindari kekaburan arti “mengunjungi”, “secara bergiliran”, dan “mengecek” kita
perlu menjelaskan lebih rinci lagi. Ketika kita “mengunjungi” lokajala, kita sebetulnya
mengunduh (download) data dari sana dan menampilkannya di dalam peramban (browser) kita.
Ketika kita menyatakan akan mengunjungi halaman-halaman lokajala “secara bergiliran” kita
perlu memperjelas bahwa setiap halaman akan dikunjungi satu kali; dan kita juga perlu
menerangkan secara lugas urutan dari mana halaman-halaman tersebut akan dikunjungi. Untuk
“mengecek” apakah harga sudah cukup diturunkan, kita perlu pertama-tama menemukan harga
yang ada di halaman lokajala.

Untuk memudahkan pelaksanaan proses pencarian oleh program komputer, kita perlu
menjelaskan pencarian, dengan menggunakan perintahselangkah demi selangkah atau, dengan
kata lain algoritma. Algoritma harus mengandung penjelasan yang lugas (tidak multi tafsir) dari
langkah-langkah yang ketika dilaksanakan terhadap suatu masukan (input), akan menghasilkan
keluaran (output) yang diharapkan.

Pengembangan algoritma harus secara jelas menyatakan data masukan (yaitu informasi yang
dengannya kita mulai) dan data keluaran (yaitu informasi yang ingin kita peroleh):

Masukan (input): sebuah daftar yang berurutan alamat halaman lokajala yang dinamakan
Alamat dan daftar yang terurut sasaran harga yang dinamakan Sasaran

Keluaran (output) : (dicetak di layar). Alamat halaman lokajala untuk produk-produk yang
harganya berada di bawah harga sasaran.

Algoritma yang dapat kita tulis untuk program pencarian buku murah tersebut adalah:

1. Anggaplah N adalah jumlah produk dalam daftar Alamat


2.
3. Untuk setiap produk I = 0, 1, …, N-1, laksanakan pernyataan-pernyataan ini:
4.
5.Anggaplah ALMT adalah adalah alamat-alamat dalam daftar untuk produk I
6.
7.Unduh halaman lokajala yang alamat-alamatnya adalah ALMT dan
8. anggaplah HAL adalah isi dari halaman web ini
9.
10.Temukan di dalam HAL harga pasaran produk I dan
11 anggaplah PAS adalah nilainya.
12.
13.Anggaplah SSRN adalah harga sasaran produk I dari daftar Sasaran
14.
15.Jika PAS < SSRN:
16 Cetak ALMT

Penjelasan di atas adalah algoritma (kode tiruan/ tetiron, bukan kode sebenarnya) yang
menerangkan tugas apa yang perlu dilakukan oleh komputer. Algoritma juga dapat ditulis
dengan menggunakan kode sebenarnya yang dapat dilaksanakan.

3.5 Nilai dan jenis data

Nilai (value) adalah hal sangat mendasar yang dimanipulasi oleh Python. Nilai ini digolongkan
dalam berbagai golongan (class) atau jenis data (data type). Misalnya 5 digolongkan sebagai
bilangan bulat (integer) dan „Assalamualaikum‟, digolongkan sebagai untaian (string) karena
terdiri dari suatu rangakaian abjad yang berderetan membentuk untaian. Untaian ditandai
dengan adanya tanda kutip („untaian‟ atau “untaian”) di awal dan akhir abjad. Dalam Python
bilangan bulat termasuk dalam golongan int dan untaian masuk ke dalam golongan str.

Algoritma di atas menggunakan berbagai jenis data:

a. N, jumlah produk
b. ALMT, alamat halaman lokajala
c. HAL, isi dari halaman lokajala
d. PAS dan SSRN, harga pasaran dan harga sasaran
e. Daftar Alamat dan Sasaran

Nama N, I, ALMT, HAL, PAS, SSRN, Alamat dan Sasaran adalah peubah (variable), sama
seperti dalam matematika. Peubah adalah sebuah nama yang merujuk pada nilai yang dapat
berubah (sehingga disebut peubah/ variabel -> satu akar dengan kata variasi). Kegunaan peubah
adalah untuk menyimpan nilai, sehingga peubah itu dapat digunakan (diambil) kembali. Dalam
contoh di atas, nilai ALMT yang ditetapkan di baris 5 algoritma, diambil kembali untuk dicetak
di baris 16.

Jenis-jenis nilai dari data dalam algoritma di atas yaitu:


 N, jumlah produk adalah nilai bilangan bulat yang tak negatif (non-negative integer
number).
 PAS, harga pasar, dan SSRN, harga sasaran adalah angka positif yang mungkin dalam
bentuk desimal, dan disebut juga bilangan positif tak bulat (positive non-integer number).
 Nilai dari ALMT dan nilai dari isi halaman web adalah untaian urutan abjad (literal string
/ untaian keaksaraan).
 Daftar Alamat adalah untaian urutan abjad yang tersusun secara berurut yang terdiri dari
alamat-alamat (yaitu untaian urutan abjad), sedangkan daftar sasaran harga Sasaran
adalah urutan yang berurut dari harga (numeral string/ untaian keangkaan).

Jenis data (data type) adalah kisaran nilai yang mungkin dimiliki sebuah data (misalnya bilangan
bulat, bukan bilangan bulat, urutan abjad, atau daftar nilai yang lain), dan juga operasi apa yang
dapat dilakukan terhadap data tersebut.

Dalam algoritma di atas, kita melakukan operasi berikut terhadap data, yaitu:

a) Kita membandingkan angka PAS dengan SSRN


b) Kita menemukan alamat-alamat produk I dalam daftar Alamat
c) Kita mencari harga dari isi halaman lokajala
d) Kita menciptakan urutan 0, 1, 2, …, N-1 dari bilangan bulat N.

Beberapa anggapan:

Di dalam butir a, kita menganggap bahwa PAS dan SSRN adalah jenis angka yang dapat
dibandingkan. Di dalam butir b, kita mengganggap kita dapat mengambil produk I dari daftar
Alamat. Di dalam butir c, kita beranggapan dapat mencari urutan abjad dan mencari sesuatu
yang mirip dengan harga (urutan angka). Dalam butir d , kita menganggap bahwa kita dapat
membentuk urutan mulai dari 0 hingga satu angka sebelum sebuah bilangan bulat N.

Jadi, algoritma merupakan perintah yang mengutak atik (memanipulasikan) data. Bagaimana
data tersebut diperbolehkan untuk diutak-atik, tergantung dari jenis data tersebut. Misalnya, di
dalam butir d, pembuatan urutan hanya punya arti untuk data bilangan bulat jenis N, tetapi
operasi tersebut tidak memiliki arti untuk jenis data yang lain, misalnya data alamat halaman
web ALMT.

Karena itu, untuk dapat “berpikir secara kependataan /informatika”, kita perlu mengetahui jenis
data yang dapat kita gunakan dan operasi apa yang dapat kita lakukan terhadap data tersebut.

3.6 Penetapan nilai pada peubah dan tatanan pengendalian pelaksananaan.


Selain berbagai jenis data, hasil dari algorima pencarian yang kita kembangkan di atas juga
menggunakan berbagai jenis perintah yang berbeda.

Sejumlah perintah dalam algoritma tersebut menetapkan sebuah nilai pada suatu peubah:

a. Pada baris 1, kita menetapkan nilai pada peubah N.


b. Pada baris 5, kita menetapkan sebuah nilai pada peubah ALMT.
c. Pada baris 8, kita menetapkan nilai pada peubah HAL
d. Pada baris 11, kita menetapkan nilai pada peubah PAS
e. Pada baris 13, kita menetapkan nilai pada peubah SSRN

Walaupun nilai yang ditetapkan pada berbagai peubah terdiri dari berbagai jenis data, perintah
yang sejenis digunakan untuk melakukan penetapan. Jenis perintah semacam ini disebut
pernyataan penetapan nilai (assignment statement).

Jenis perintah yang berbeda digunakan pada baris ke 15, yaitu perintah yang membandingkan
harga pasaran PAS dengan harga sasaran SSRN. Jika nilai PAS lebih kecil dari nilai SSRN , maka
pernyataan pada baris 16 dilaksanakan (and nilai ALMT dicetak). Perintah jika ( if) pada baris ke
15 adalah sejenis perintah yang disebut sebagai tatanan kendali perandaian / bersyarat
(conditional control structure).

Pada baris 3 ada jenis lain dari perintah yaitu pelaksanaan secara berulang: pernyataan pada
baris 5 hingga ke 16, satu kali untuk setiap nilai I. Pernyataan 5 hingga 16 akan dilaksananakan
untuk I sama dengan 0, lalu untuk I sama dengan 1, kemudian untuk I sama dengan 2, dst.
Setelah pernyataan 5 hingga 16 selesai dilaksanakan untuk I sama dengan N-1, pelaksanaan
perintah pada baris 3 telah lengkap. Perintah ini disebut sebagai tatanan kendali kitaran
(iteration control structure). Proses kitaran dalam algoritma pencarian buku di atas adalah
pelaksanaan pernyataan 5 hingga 16.

Tatanan kendali perandaian dan tatanan kendali kitaran secara bersama-sama dinamakan tatanan
kendali pelaksanaan (execution control structure), yang digunakan untuk mengendalikan aliran
pelaksanaan pernyataan-pernytaan di dalam sebuah program. Tatanan kendali tersebut
menentukan urutan penetapan nilai mana yang dilaksanakan, dalam keadaan apa, dan berapa
kali. Bersama dengan pernyataan penetapan nilai, tatanan kendali pelaksanaan adalah batu
fondasi untuk menggambarkan penyelesaian kependataan terhadap masalah dan pengembangan
algoritma.

Untuk membuat mewujudkan algoritma itu ke dalam program, kita perlu lebih dahulu
mendalami tentang jenis data dan operasi apa yang dapat dilakukan terhadap data tersebut. Hal
ini akan dibahas dalam bab berikut.
Bab IV

Jenis Data (data type) Python

4.1. Ungkapan (expression), pernyataan (statement) dan operasi matematika

Unsur paling dasar dari Python adalah objek (object) yang diciptakan dan diolah oleh ungkapan
(expression). Di atasnya, satu atau lebih ungkapan menciptakan pernyataan (statement).
Selanjutnya, satu atau lebih pernyataan membentuk fungsi; setelah itu modul, dan akhirnya satu
atau lebih kumpulan modul membentuk program.

Dengan cangkang IDLE kita dapat mengamati ungkapan Python; dimulai dengan ungkapan
aljabar sederhana. Ungkapan adalah kombinasi dari nilai (value), peubah (variable), operator dan
panggilan terhadap fungsi (function call) yang ada dalam bahasa program.

Berikut ini adalah contoh-contoh ungkapan untuk memerintahkan Python menghitung. Kita tidak
perlu lagi membeli kalkulator. Python dapat diandalkan sebagai kalkulator yang dapat
melakukan perhitungan sederhana maupun rumit dalam sekejab.

Ketik angka 56 + 22 lalu tekan tombol Enter, dst.

>>>56 + 22
78
>>>-1 + 5
4
>>>-8 – (-8)
0

Dalam ungkapan di atas, kita memasukkan nilai, menggunakan operator tambah dan kurang (+ ,
-) untuk melakukan perhitungan. Begitu kita menekan tombol Enter, penerjemah (intrepreter)
Python menilainya dan menampilkan hasil. Sebuah nilai itu sendiri juga merupakan ungkapan
yang sederhana; dan peubah juga merupakan ungkapan:

>>>7
7

Penilaian terhadap ungkapan menghasilkan nilai. Nilai itu bisa ditetapkan ke satu peubah dalam
bentuk pernyataan (statement). Karena itulah ungkapan muncul sebelah kanan dari pernyataan
penetapan (assignment statement) terhadap peubah. Misal:
>>> x = 4
>>> x
4
>>> y = 5
>>> x * y
20
(Catatan: * (bintang) adalah operator perkalian.)

Pernyataan di atas harap dibaca: nilai 4 ditetapkan pada peubah x, atau x mengambil nilai 4, atau
x merujuk pada 4; bukan x sama dengan 4 seperti dalam matematika. Nilai 4 ditetapkan pada x
yang bertindak sebagai wadah atau cap untuk memudahkan penyimpanan nilai 4 dalam ingatan
komputer dan penarikan lagi sewaktu-waktu apabila diperlukan. Demikian juga dengan
penetapan nilai 5 pada peubah y.

Misal :

Anda mendapatkan beasiswa seratus juta rupiah untuk kuliah di jurusan informatika tingkat S1,
di Universitas Komputer Yogyakarta. Pendidikan secara normal berlangsung selama 4 tahun (48
bulan). Anda ingin berhemat, jangan sampai uang habis pendidikan belum tamat. Anda lalu
mencari informasi tentang biaya hidup di Yogya. Ternyata biaya sewa kamar, makan, buku,
angkutan, dan lain-lain, sekitar Rp 1.500.000,- per bulan. Anda ingin mengetahui sisa uang uang
itu dengan tujuan untuk investasi sebagai cadangan siapa tahu anda tidak dapat menamatkan
kuliah dalam waktu empat tahun.

>>> jumlahBeasiswa = 100000000


>>> biayaBulanan = 1500000
>>> jumlahBulan = 48
>>> jumlahBeasiswa – (jumlahBulan * biayaBulanan)
28000000

Coba kita periksa lagi:

>>> 100000000 - (48*1500000)


28000000

Sisa uang yang dapat diinvestasikan selama 4 tahun adalah Rp 28 juta.

Catatan: jumlahBeasiswa, biayaBulanan, dan jumlahBulan adalah peubah (variable).

Sekarang ketik:

>>>3/5
0.6
>>> 10/3
3.3333333333333335

Operator (pelaku/pekerja/pelaksana) adalah tanda khusus untuk melakukan perhitungan seperti


penjumlahan, pengurangan, perkalian, dsb. Nilai yang digunakan oleh operator disebut operan
(operand /yang diperlakukan). Dalam contoh di atas, tanda pembagian / adalah operator, nilai
10 dan 5 adalah operan.

Dalam Python, tanda desimal adalah . (titik) , bukan koma seperti yang biasa kita gunakan di
Indonesia. Operator pembagian yang menghasilkan angka desimal disebut pembagian
mengambang (float division).

Secara umum, penjumlahan, pengurangan dan perkalian bilangan bulat menghasilkan bilangan
bulat. Namun, pembagian tidak selalu menghasilkan bilangan bulat, dan dalam Python, hasilnya
ditampilkan dalam tatatanda titik desimal (decimal point notation). Meskipun hasilnya adalah
bilangan bulat, tetap saja Python menampilkan bilangan bulat yang ditambah dengan bagian
pecahan(ada angka di belakang titik). Misal:

>>>10/5
2.0

Nilai angka tanpa titik desimal disebut bilangan bulat (integer) dan disingkat menjadi int.
Sedangkan nilai angka dengan titik desimal disebut bilangan titik mengambang (floating point
number) dan disingkat menjadi float.

Python juga mendukung fungsi matematika seperti rumus:

f(x) = x + 1

Rumus itu digunakan untuk mendefinisikan/menentukan/mentakrifkan fungsi f() yang


mengambil masukan (input), dinyatakan dengan x, dan mengembalikan sebuah nilai, dalam hal
ini yaitu x + 1. Dalam matematika kalau x = 3, f(3) memberikan nilai 4.

Sekarang ketik

>>>barangTerjual = 20
>>>harga = 20
>>>print (“penjualan =” , barangTerjual*harga)
penjualan = 400

Ungkapan dan pernyataan di atas adalah beberapa contoh ungkapan Python yang menggunakan
peubah. Hati-hati Python membedakan antara huruf kecil dan huruf besar. barangTerjual tidak
sama dengan barangterjual. Tanda = (sama dengan) artinya menetapkan (assign) nilai pada
peubah misalnya barangTerjual, harga, dll. Tanda = dalam Python tidak sama dengan konsep =
dalam matematika. Dalam contoh di atas = artinya menilaikan 20 pada peubah barangTerjual dan
harga.

Operator (pelaku) pengalian pada Python adalah * (bintang) bukan tanda X (kali) yang biasa
kita temukan dalam matematika.
Tanda perhitungan lain yang berbeda adalah operator pemangkatan (exponentiation operator)
yaitu ** (dua bintang) . Misal:

>>> 2**3
8
>>> pi = 3.14
>>> jariJari = 4
>>> luasLingkaran = pi * jariJari **2
50.24
>>> pi = 22/7
>>> pi
3.142857142857143

(Catatan: pi adalah tetapan  dalam matematika yaitu,  = 22/7)

Pernyataan pemangkatan juga dapat dilakukan dengan:


>>>pow(2,3)
8
(pow adalah fungsi power : pemangkatan, disini 2 pangkat 3)

Sekarang kita coba rumus Einstein, e = mc2 ; e = energi, m = massa, c = kecepatan cahaya :

>>> m = 200
>>> c = 300000
>>> e = m * c ** 2
>>> e
18000000000000
>>> print(e)
18000000000000
>>> m
200
>>> c
300000

Setelah nilai ditetapkan pada peubah, kita hanya perlu mengetik nama peubah untuk
menampilkan nilai tersebut di layar. Kalau dengan kalkulator, kita perlu melakukan pemograman
sederhana untuk menyimpan nilai pada peubah. Dengan Python kita tidak perlu melakukan hal
tersebut. Selama cangkang interaktif tidak dimulai lagi (yaitu perintah Shell -> Restart Shell
yang ada di palang menu) atau nilai penetapan tidak diubah, nilai tersebut akan melekat terus
pada peubah-peubah yang ditetapkan. Kita dapat terus menerus menggunakan peubah tersebut
untuk melakukan operasi matematika yang lain lagi. Jadi, kita dapat menggunakan celaga
(console) Python sebagai pengganti kalkulator yang dapat melakukan perhitungan rumit, dengan
cara yang sangat sederhana.

Misal kita teruskan perhitungan dengan menggunakan peubah yang telah ditetapkan di atas:
>>> m/c
0.0006666666666666666
>>> c/m
1500.0
>>> m - c
-299800

Operator lain yang penting dalam Python adalah % (disebut modulus) yang berguna untuk
menghitung sisa pembagian dalam angka bulat yang belum terbagi. Misal:

>>>7%3
1

Artinya 7/3 = 2 , ditambah dengan sisa 1 yang masih utuh belum terbagi. Operator % sangat
berguna dalam penyusunan program.

Contoh:

Anda berobat ke dokter dan disuruh kembali lagi 10 hari mendatang. Hari ini adalah Jumat. Hari
apa anda harus kembali lagi ?

>>>(6 + 10) % 7
2

Hari Jumat adalah hari ke 6 dalam satu minggu. Berarti anda harus balik lagi ke dokter pada hari
Selasa, setelah satu minggu (hari Minggu sebagai awal hari ditetapkan sebagai nol dalam
Python).

Dii dalam Python juga dikenal pembagian yang menghasillkan bilangan bulat dengan operator
// . Disebut juga pembagian yang menghasilkan bilangan bulat (integer division).

Misal:

>>>15//7
2

Dengan operator //, Python mengabaikan sisa pembagian yang berbentuk desimal di belakang
angka 2.

Dari contoh beasiswa ke Yogya di atas: berapa bulan lagi anda dapat tinggal di Yogya dengan
sisa uang Rp 28 juta:

# perkiraan masa tinggal maksimum di Yogya dengan dana Rp 28 juta


>>>28000000//1500000
18
(Catatan: tanda # adalah tanda komentar. Tulisan setelah # diabaikan oleh penerjemah Python)

Kalau anda belum tamat dalam janga waktu 4 tahun,anda masih dapat bertahan di Yogya selama
18 bulan atau 1,5 tahun lagi. Untuk memudahkan pencairan dana sewaktu-waktu ketika anda
membutuhkannya dan menjaga nilai uang dari gerusan inflasi, anda dapat menyimpan beasiswa
dalam bentuk emas. Namun, kalau anda dapat menamatkan S1 dalam waktu tiga setengah tahun,
anda dapat menggunakan sisa uang itu untuk melanjutkan ke S2 selama 2 tahun lagi.

Program yang baik memudahkan pembacaan. Untuk membuat orang lain atau kita sendiri
mengerti terhadap apa yang telah kita tulis dalam kode, beberapa saat di waktu mendatang,
sebaiknya kita menulis komentar dengan menggunakan tanda pagar (#). Python akan
mengabaikan perintah setelah tanda #. Komentar yang lebih dari satu baris juga dapat ditulis di
antara tanda petik tiga, misalnya:

>>>’’’...komentar...’’’

Python juga akan mengabaikan semua tulisan di antara tanda baca itu.

Fungsi Python abs() digunakan untuk menghitung nilai mutlak (selalu positif) dari sejumlah
nilai:

>>> abs(-7)
7
>>> abs(7)
7
>>> abs (-2.5)
2.5

Untuk mencari nilai maksimum atau nilai minimum dari sebuah daftar, Python menggunakan
fungsi max() dan min () dan menghasilkan nilai maksimum dan minimum yang ada dalam
masukan (input).

Contoh:

>>> max (-2, -9)


-2
>>> min (2, 8, 7, 1.5)
1.5

Dalam cangkang interaktif, tanda _ (garis bawah) dapat berperan sebagai pemanggil tampilan
terakhir. Misal:

>>> x = 4.6
>>> y = 3.8
>>> x*y
17.479999999999997
>>> _
17.479999999999997
>>> 7 + _
24.479999999999997

Tanda _ memudahkan pengatur cara untuk menulis hasil yang terakhir ditampilkan.

>>> round(_, 2)
24.48
>>> round( x*y + 7 , 2)
24.48

Fungsi round() berperan untuk membulatkan ke berapa angka desimal hasil perhitungan, di
belakang titik, menurut parameter yang kita masukkan (disini parameternya adalah 2, sehingga
ditampilkan 2 angka setelah titik desimal).

4.2 Urutan operator perhitungan

>>>3*4-3
9
>>>3*(4-3)
3

Kenapa berbeda? Python mendahulukan operator perkalian (*) dan pembagian (/), dari pada
pejumlahan (+) dan pengurangan (-). Karena itu, anda perlu menggunakan tanda kurung sebagai
tanda prioritas, supaya hasilnya sesuai dengan yang anda harapkan.

Aturan-aturan operator dalam Python adalah sbb:

 Pemangkatan (**) dilakukan pertama sekali


 Berikutnya pengalian (*), pembagian mengambang (/), pembagian bilangan bulat (//),
operator modulus (%). Jika dalam satu pernyataan terdapat beberapa operator perkalian,
pembagian dan modulus, prioritas pelaksanaan berlangsung dari kiri ke kanan.
 Operator penambahan dan pengurangan dilakukan terakhir. Bila terdapat beberapa
operator dalam satu pernyataan, pelaksanaan berlangsung dari kiri ke kanan.

Singkatnya Python menjalankan perhitungan berdasarkan urutan PEMDAS (paranthese,


exponent, multiplication, division, addition, substraction) = (tanda kurung, pangkat, kali, bagi,
tambah, kurang). Kalau derajat prioritas sama, pelaksanaan operasi matematika dilakukan dari
kiri ke kanan.

Gambar 4 menunjukkan daftar ungkapan aritmetika yang tersedia di dalam Python.

Gambar 4.1 Operasi aritmetika Python

Untuk setiap operasi selain pembagian (/) aturan berikut berlaku: Jika kedua operan x dan y
bilangan bulat (atau hanya x untuk operasi esa-angka (unary) dan abs()), hasilnya adalah
bilangan bulat (integer). Jika salah satu operan angka desimal, hasilnya adalah nilai desimal
(float). Untuk pembagian (/), hasilnya adalah selalu nilai desimal, tidak tergantung pada jenis
operan.

Operator perbandingan digunakan untuk membandingkan nilai. Ada 6 operator pembanding di


dalam Python. Lihat bahwa di dalam Python, perbandingan dapat dilakukan secara sembarangan
:

>>> 5 >= 5 > 4


True
>>> 5 >= 5 < 4
False

Bila pernyataan dinilaikan benar, Python memberikan jawaban True (benar); sebaliknya False
(salah). False dan True adalah nilai Boole (Boolean value) , yang akan pelajari lebih lanjut.
Gambar 4.2 Operator perbandingan dalam Python

Ketika pernyataan mengandung lebih dari satu operator, menilai pernyataan memerlukan urutan
yang diperjelas. Contoh, apakah pernyataan 2 * 3 + 1 dinilaikan pada 7 atau 8?

>>> 2 * 3 + 1
7
>>> (2 * 3) + 1
7

Urutan menurut mana operator dinilaikan perlu dijelaskan secara eksplisit melalui penggunaan
tanda kurung atau secara implisit dengan menggunakan aturan operator yang didahulukan
(operator precedence rule) atau penilaian dari kiri ke kanan jika operator memiliki derajat
kedahuluan yang sama. Python mengikuti aturan kedahuluan seperti yang berlaku dalam aljabar
(lihat daftar dalam Gambar 4.3).

Mengandalkan aturan penilaian dari kiri ke kanan cenderung terperangkap dalam galat
manusiawi (human error). Lebih baik, penulisan program dilakukan secara eksplisit dengan
menggunakan tanda kurung untuk operator yang didahulukan.

Dari pada menulis seperti ini :

>>> 4 – 3 + 5
6

Lebih baik ditulis:

>>> (4 - 3) + 5
6
Gambar 4.3 Daftar aturan kedahuluan operator

4.3 Nilai sah untuk jenis data

Setiap objek memiliki nilai yang harus sah untuk jenis objek. Contoh sebuah objek angka
(integer object) dapat memiliki nilai 5, tetapi bukan 5.1 atau „lima‟. Nilai bilangan bulat dapat
sangat besar misalnya objek angka yang nilainya 5**1055

>>> 5**1055
259032689326815468153244899275294046874532473793059102091161466306914160355683
...
832363211040501482784748077392578125

Sebenarnya, ada batas sebesar mana nilai yang dapat disimpan dalam objek angka: Nilai tersebut
dibatasi oleh ingatan (memory) komputer yang tersedia. Karena, tidak mungkin menaruh nilai
angka yang memiliki digit yang lebih besar dari daya tampung ingatan komputer.

Jenis angka desimal (float) Python digunakan untuk mewakili bilangan riil sebagai pecahan
dengan dengan angka desimal yang terbatas.

>>> 22/7
3.142857142857143
>>> 5.0**24
5.960464477539062e+16
Yang muncul adalah cara penulisan tatatanda ilmiah (scientific notation) dengan nilai
5.960464477539062 X 1016 . Bandingkan dengan nilai pemangkatan bilangan bulat, yang
dimunculkan secara normal.

>>> 5 ** 24
59604644775390625

Angka pecahan yang sangat kecil, juga akan diperkirakan secara mendekati oleh Python, tetapi
bila terlalu kecil yang ditampilkan adalah mendekati nol.

>>> 0.5**1055
2.590327e-318
>>> 0.05**1055
0.0

Kalau nilai bilangan sudah terlalu besar, ingatan komputer sudah tidak dapat lagi
menyimpannya.

>>> 5.0 ** 1055


Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
5.0 ** 1055
OverflowError: (34, 'Result too large')
(GalatTumpah: (34,‟Hasil terlalu besar‟))

Sebuah galat terjadi ketika kita mencoba menjelaskan sebuah nilai angka desimal yang
membutuhkan lebih banyak bit (unit dasar perhitungan data oleh komputer) dari yang tersedia
untuk mewakili nilai angka desimal. Galat ini tidak terjadi dengan nilai bilangan bulat 5**1055
seperti dalam contoh di atas.

Jenis data dapat diubah ke jenis data yang lain oleh fungsi int , float dan str.

>>> int(6.7)
6
>>> float(23)
23.0
>>> str(3)
'3'
>>> int('3')
3

Angka desimal yang terdapat dalam hujjah (6.0) diubah menjadi bilangan bulat 6 oleh fungsi int.
Fungsi float mengubah (23) menjadi angka desimal, dan fungsi str mengubah (3) menjadi
untaian „3‟. Sedangkan fungsi int mengubah („3‟) menjadi bilangan bulat 3. Bagaimana kalau
kita menggunakan fungsi float untuk mengubah untaian „hari‟.

>>> float('hari')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
float('hari')
ValueError: could not convert string to float: 'hari'
(GalatNilai: tidak dapat mengubah untaian ke angka desimal : „hari‟)

Tidak semua operasi bisa dilakukan untuk semua jenis data. Fungsi yang dapat dijalankan untuk
jenis int atau float , misalnya, tidak dapat dijalankan terhadap jenis data „str‟ (string/ untaian).

4.4 Bentukan (format) angka

Fungsi format (bentukan) akan mengembalikan untaian yang terbentuk (formatted / terformat).
Misalkan kita menghitung tinggi pohon dengan tingkat pertumbuhan tertentu per tahun:

>>> tinggiAwal = 500.5


>>> tingkatPertumbuhan = 0.10
>>> tinggiAkhir_1 = tinggiAwal * (1 + tingkatPertumbuhan) ** 1
>>> tinggiAkhir_2 = tinggiAwal * (1 + tingkatPertumbuhan) ** 2
>>> tinggiAkhir_1
550.5500000000001
>>> tinggiAkhir_2
605.6050000000001

Kita ingin membulatkan angka ke cm terdekat dengan menggunakan fungsi round (bulatkan):

>>> print("Tinggi pohon pada akhir tahun pertama adalah ",


round(tinggiAkhir_1), "cm")

Tinggi pohon pada akhir tahun pertama adalah 551 cm

Kita menginginkan data yang akurat dengan pembulatan 4 angka dibelakang koma. Untuk itu
kita dapat menulis kode:

>>> print("Tinggi pohon pada akhir tahun pertama adalah",


round(tinggiAkhir_1, 4), "cm")

Tinggi pohon pada akhir tahun pertama adalah 550.55 cm

Ternyata hasilnya cuma 2 angka dibelakang koma dengan fungsi round itu, karena setelah
koma, angka nol dibelakang angka bukan nol diabaikan. Kita perlu menulis dengan fungsi
penentukhas bentukan (format specifier ) berikut:
>>> print("Tinggi pohon pada akhir tahun pertama adalah",
format(tinggiAkhir_1, ".4f"), "cm")

Tinggi pohon pada akhir tahun pertama adalah 550.5500 cm

>>> print("Tinggi pohon pada akhir tahun pertama adalah",


format(rumusTinggiAkhir_1, ".1f"), "cm")

Tinggi pohon pada akhir tahun pertama adalah 550.6 cm

Pembulatan yang dilakukan dengan fungsi format mengikuti kaedah pembuatan dimana hasilnya
dibulatkan ke nilai terdekat, dari 550, 5500 menjadi 550,6.

4.5 Ungkapan Boole (Boolean expression) dan operator Boole (Boolean operator)

Ungkapan aljabar menilai angka, seperti jenis int atau float, atau angka jenis lain, yang didukung
oleh Python. Dalam golongan (kelas/ class) aljabar, ungkapan selain aljabar juga sering terjadi.
Contoh: ungkapan 3 < 4 tidak menilai angka, tetapi menilai apakah ungkapan tersebut benar
(true) atau salah (false). Yang dilihat disini apakah ungkapan tersebut logis atau tidak. Python
juga menilai ungkapan seperti ini, dan disebut ungkapan Boole (nama ahli matematika yang
menggagas logika ini). Ungkapan Boole adalah ungkapan yang digunakan untuk salah satu dari
dua nilai Boole (Boolean value) yaitu : True atau False. Bila ungkapan logis dinilai True , bila
tidak logis dinilai False. Nilai-nilai ini disebut jenis Boole, sebagaimana jenis int dan float, dan
ditulis bool dalam bahasa Python.

Operator pembanding (seperti < atau >) biasa digunakan sebagai operator dalam ungkapan
Boole.

Contoh:

>>> 7 < 9
True
>>> 9 < 3
False
>>> 8-1 > 3 +5
False

Dalam ungkapan terakhir, ungkapan aljabar yang berada di sisi kanan dan sisi kiri operator
pembanding dinilai lebih dahulu, sebelum perbandingan dilakukan.
Untuk memeriksa persamaan di antara berbagai nilai, operator pembanding == (dua tanda sama
dengan) digunakan:

>>> 5 – 3 == 6 – 4
True
>>> 7 + 1 == 2 * 4
True
>>> 5 * 3 == 20 – 4
False

Operator pembanding logika lainnya yaitu <= (kurang dari atau sama dengan), >= (lebih dari
atau sama dengan), dan != (tidak sama dengan).

>>> 4 <= 6-2


True
>>> 5 >= 9 - 2
False
>>> 8 != 3
True

Ungkapan-ungkapan Boole dapat digabungkan dengan menggunakan operator and (dan), or


(atau) dan not (bukan/tidak) untuk membentuk ungkapan Boolean yang lebih besar. Operator
and yang digunakan pada dua ungkapan Boole akan menilai True bila kedua ungkapan tersebut
True; jika salah satu ungkapan False maka hasil akhirnya adalah False.

>>> 3 < 5 and 7 > 9


False
>>> 3 < 5 and True
True

Dalam kedua ungkapan di atas, operator pembanding didahulukan dari pada operator Boole.

Operator or yang digunakan pada dua ungkapan Boole menghasilkan False hanya bila kedua
ungkapan False. Bila salah satu dari ungkapan tersebut True, maka operator or akan menilainya
True.

>>> 5 < 6 or 8 < 9


True
>>> 6 > 8 or 3 < 2
False

Operator not (bukan) adalah operator penyanggah esa-angka (unary/ satu angka) Boole; artinya
not hanya diterapkan pada ungkapan Boole tunggal (berbeda dengan operator dwiangka (binary/
dua angka) Boole and dan or). Operator not menilai False , jika ungkapan benar atau
sebaliknya menilai True jika ungkapan salah.

Contoh :

>>> not( 5 > 7 )


True
>>> not( 2 < 3)
False

Ungkapan (5 > 7) adalah salah, jadi bukan (5 > 7) adalah benar (True). Demikian juga dengan
ungkapan (2 < 3) adalah benar, dan karena itu bukan (2 < 3) adalah salah (False).

George Boole (1815-1864) adalah orang pertama yang mengembangkan logika aljabar sehingga
namanya diabadikan menjadi aljabar Boole (Boolean algebra). Aljabar Boole merupakan dasar
dari logika digital perangkat keras dan spesifikasi dasar bahasa pemrograman komputer.

Boole membuat tabel yang disebut tabel kebenaran (truth table) untuk menilai ungkapan Boole
dengan operator and, or dan not.

Gambar 4.4 Tabel kebenaran Boole

4.6 Pemendaan galat (debugging) tulisan kode

Ketika pertama kali berbicara dalam bahasa Inggris dengan orang asing, lawan bicara kita
mungkin sulit menangkap bunyi suara yang kita utarakan, penggunaan kata yang salah, intonasi
yang aneh, dll. Tetapi karena lawan bicara kita adalah manusia, dia akan mendengarkan secara
lebih baik, meminta kita mengulangi kalimat yang tidak dapat dimengerti atau bahkan berusaha
menangkap isyarat tubuh selain bahasa dan menebak maksud kita.

Kalau kita memerintahkan komputer melalui bahasa pemrograman, kita harus seratus persen
benar mengikuti tata bahasa komputer tersebut. Sedikit saja kesalahan penulisan program (bug),
membuat komputer tidak mengerti sama sekali apa yang kita maksud, dan apa yang kita
inginkan. Tindakan yang dilakukan oleh komputer bisa melenceng dari yang kita harapkan.
Salah satu keahlian yang harus anda kuasai dalam pemrograman adalah mencari kesalahan (bug/
kumbang) dan memendanya /memperbaiki (debug/ menghilangkan kumbang). Istilah bug
muncul ketika komputer elektronik yang menggunakan lampu vakum pijar. Cahaya lampu pijar
menarik serangga dan menyebabkan korsleting di rangkaian listrik dan membuat komputer
mogok. Untuk menghidupkan lagi komputer teknisi komputer harus mencari dimana serangka
yang hangus itu dan memperbaiki kembali rangkaian yang terbakar. Walaupun operasi komputer
saat ini tidak lagi menarikserangga, istilah debugging tetap digunakan dalam mencari kesalahan
penulisan program dan memendanya.

Ada tiga sumber galat dalam pemrograman:

1. ) Galat sintaksis (syntax error/galat tatanan kalimat)

Coba ketik:

>>> print (“Selamat pagi”)


SyntaxError: unexpected indent

Python menjawab “Galat tatanan kalimat: takukan (indent) tidak diharapkan”. Kita mengetik
spasi (ruang jarak) setelah tanda jeraus (prompt) >>>. Aturan IDLE Python, tidak boleh ada
ruang jarak setelah tanda jeraus (ajakan perintah).

Coba ketik lagi;

>>>print “Selamat pagi”


SyntaxError: Missing parentheses in call to 'print'

Sekarang jawaban Python : Galat tatanan kalimat : kehilangan tanda kurung ketika memanggil
perintah untuk mencetak („print‟). Setelah kata „print‟, kita harus menggunakan tanda kurung ().
Karena komputer tidak mengerti bahasa yang kita tuliskan, dia berhenti menjalankan program.

Sekarang ketik:

>>>print(‘Assalamu’alaikum’)
SyntaxError: invalid syntax

(Galat tatanan kalimat: tatanan kalimat yang tidak sah). Galatnya ada tiga tanda kutip pada kata
„Assalamu‟alaikum‟. Untuk memenda galat tersebut, kita dapat menggunakan tanda kutip ganda
di awal dan akhir kata yang ingin dicetak:

>>>print("Assalamu'alaikum")
Assalamu'alaikum
Banyak galat lagi yang akan anda temui ketika menulis program. Salah satu keunggulan Python,
yaitu langsung menampilkan penyebab galat ketika kita menekan tombol „Enter‟, sehingga kita
tahu apa yang menyebabkan galat terjadi.

2.) Galat pelaksanaan (runtime error)

Galat terjadi pada saat program dijalankan , ketika penerjemah Python mendeteksi bahwa
program mustahil dilaksanakan. Biasanya galat pelaksanaan ketika terjasi galat pembacaan
masukan (input), misalnya, karena pengguna memasukkan nilai yang tidak bisa ditangani oleh
komputer. Galat juga bisa ketika dilaksanakan, warkah (file) sudah rusak atau tidak ada lagi di
tempat penyimpanan yang dituju.

Sekarang coba ketik :

>>>1/0
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
(GalatPembagianNol: pembagian dengan nol)

3.) Galat semantik (makna/logika; semantic error/ logic error)

Menurut computer, tidak terjadi galat dalam penulisan program, karena berdasarkan sintaksis
semua tidak melanggar aturan. Namun, operasi yang dilakukan oleh komputer berbeda dengan
harapan manusia sehingga hasilnya keliru.

Contoh: Di AS, ukuran suhu adalah Fahrenheit, sedangkan di Indonesia adalah Celsius. Rumus
untuk mengubah suhu dari Fahrenheit ke Celsius adalah :

C= 5/9 * F – 32

Sekarang kita coba untuk suhu 50 derajat Fahrenheit:

>>> print ('''50 derajat Fahrenheit=''', 5/9 * 50 -32, '''C''')


50 derajat Fahrenheit= -4.222222222222221 C

Anda ragu-ragu. Masa iya, 5/9 kali 18 atau (50-32), menghasilkan angka negatif atau berada di
bawah nol derajat Celsius. Akhirnya anda menyadari logika penulisan salah. Akibatnya, Python
mendahulukan perkalian 9*35 dari pada pengurangan 50 - 32 . Untuk itu kita perlu
menggunakan tanda kurung pada urutan perhitungan yang diprioritaskan yaitu (50-32), sehingga
rumusnya menjadi:
C = 5/9 * (50-32). Ayo kita coba lagi rumus yang benar.

>>> print ('''50 derajat Fahrenheit=''', 5/9 * (50 -32), '''C''')


50 derajat Fahrenheit= 10.0 C

Tanda tiga kali tanda kutip (’’’) adalah untuk menyuruh tampilkan apa adanya huruf-huruf yang
berada di antara dua tanda kutip itu.

Galat logika sulit terdeteksi, karena komputer tidak mampu memberikan isyarat adanya galat.
Untuk menghindarinya anda perlu berhati-hati menerjemahkan rumus ke dalam pengetikan
program Python. Galat sintaksis dan galat pelaksanaan, relatif mudah ditemukan karena
komputer memberi isyarat, tetapi galat semantik sangat sulit untuk ditemukan.

Untuk meminimalisir galat, anda perlu mengetik program secara rapi, sehingga memudahkan
untuk dibaca kembali ketika mencari dan memenda galat (debugging).

>>>print(4/5*5+40) tidak rapi


>>>print (4/5 * 5 + 40) rapi

4.7Proses penetapan (assignment) nilai kepada peubah

Dalam aljabar, kita menetapkan nilai pada nama yang disebut peubah (variable). Misalkan ada
persamaan y – x = 10 dan kita mengetahui bahwa nilai y = 10. Supaya sebelah kanan dan
sebelah kiri persamaan itu bernilai sama, maka x harus bernilai 5, atau x = 5. Dalam Python,
nilai 5 dapat ditetapkan pada peubah x di dalam sebuah persoalan aljabar, yaitu x = 5. Peubah x
dalam hal ini dapat dianggap sebagai sebuah nama (cap/ label) yang memungkinkan kita
mengambil kembali nilai 5 di kemudian hari. Untuk dapat mengambilnya kembali, kita perlu
menilaikan x dalam sebuah ungkapan.

Dalam Python, sebuah nilai dapat ditetapkan kepada sebuah peubah:

>>> x = 6

Pernyataan x = 6 disebut pernyataan penetapan (assignment statement). Format umum


pernyataan penetapan adalah sbb:

variable = expression

Ungkapan yang kita rujuk sebagai expression (ungkapan) berada di sisi kanan operator = ;
ungkapan itu bisa berbentuk ungkapan aljabar, ungkapan Boole, dan jenis ungkapan lainnya.
Sebelah sisi kiri adalah peubah yang kita rujuk sebagai variable. Pernyataan penetapan
menetapkan sebuah nilai kepada variable , untuk dinilai oleh expression. Dalam contoh terakhir,
kepada x ditetapkan nilai 6 atau x mengambil/ merujuk pada nilai 6.
Begitu nilai sudah ditetapkan kepada sebuah peubah, peubah tersebut dapat digunakan di dalam
ungkapan Python lainnya:

>>> x
6

Ketika Python menilai ungkapan baru yang mengandung peubah, Python akan menilaikan
peubah pada nilai yang ditetapkan sebelumnya kepada peubah itu, dan kemudian Python
melakukan operasi berdasarkan ungkapan tersebut:

>>> 5 * x
30

Sebuah ungkapan yang meliputi peubah dapat muncul pada sisi kanan pernyataan penetapan :

>>> penjualan = 7 * x

Dalam pernyataan penjualan = 7 * x, pertama x dinilaikan 6, kemudian ungkapan 7 * 6


dinilaikan 42, dan kemudian 42 ditetapkan pada peubah penjualan:

>>>penjualan
42

Hingga kini, kita telah menentukan dua nama peubah : x dengan nilai 6 dan penjualan dengan
nilai 42. Bagaimana dengan peubah z yang belum ditetapkan (nilai). Lihat hasilnya:

>>> z
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
z
NameError: name 'z' is not defined

Di baris terakhir ada pesan, NameError : name ‘z’ is not defined (GalatNama : nama „z‟ tidak
ditentukan/didefinisikan). Bila sebuah peubah belum ditetapkan (nilainya) – dalam kasus ini z – ,
peubah itu tidak ada dalam ingatan komputer. Ketika Python mencoba menilaikan nama yang
belum ditetapkan, galat (error) akan terjadi dan sebuah pesan (seperti name ‘z’ is not defined) akan
tampil dilayar.

Dalam aljabar, nilai dari sebuah peubah dapat berubah. Demikian juga dengan peubah dalam
Python. Contoh, anggaplah nilai dari peubah x pertamanya adalah 6:

>>>x
6
Sekarang nilai 9 ditetapkan pada peubah x:

>>> x = 9
>>> x
9

Jadi penetapan (nilai) x = 9 mengubah nilai x dari 6 ke 9.

Hati-hati untuk membedakan pernyataan penetapan = dan operator persamaan == (dua tanda
sama dengan).

Pernyataan penetapan menetapkan 9 kepada peubah x:

>>> x = 9

Sedangkan operator persamaan adalah ungkapan Boole yang membandingkan nilai peubah x
dengan angka 9 dan menampilkan True jika nilai tersebut sama:

>>> x == 9
True

Ungkapan tersebut menilai True karena peubah x memiliki nilai 9.

4.8 Ketentuan nama peubah (variable)

Huruf yang digunakan sebagai nama peubah boleh huruf kecil dan huruf besar, tanda sambung
garis bawah ( _ ) dan angka 0 hingga 9 (kecuali untuk huruf pertama). Menurut kesepakatan
nama peubah dimulai dengan huruf kecil.

Contoh:

daftarHarga dan _Hargaboleh, tetapi 7daftar tidak boleh.

daftar7 dan daftar7_1 boleh, tetapi daftar-5 tidak boleh.

daftarharga dan daftarHarga adalah dua nama peubah yang berbeda.


Walaupun diperbolehkan (tidak bertentangan dengan aturan), kadang-kadang nama peubah dapat
membingungkan, terutama ketika dibaca di kemudian hari. Beberapa petunjuk umum tentang
penamaan peubah adalah:

 Nama peubah perlu memiliki arti; nama suhu lebih baik dari nama t.
 Untuk nama lebih dari satu kata, disarankan menggunakan pembatas seperti tanda
sambung garis bawah ( daftar_harga ) atau huruf besarOnta ( daftarHarga ). Pilih dan
gunakan salah satu gaya secara konsisten dalam satu program.
 Tidak boleh mengandung operator matematika (+, *, /, -).
 Nama lebih pendek tetapi memiliki arti, lebih baik dari nama yang panjang.
 Lebih baik menggunakan huruf kecil untuk huruf pertama ( daftarHarga ), huruf besar
dikhususkan untuk tetapan/ konstan (nilainya tidak berubah).

Berikut ini adalah kata-kata kunci yang diperuntukkan khusus ketika mengepul kode sumber
menjadi bahasa mesin oleh penerjemah Python. Kata-kata tersebut terlarang digunakan untuk
nama peubah kecuali untuk perintah-perintah Python.

4.9 Fungsi (function)

Sejauh ini kita telah mempelajari bahwa ada dua cara untuk mengutak-atik data di dalam suatu
ungkapan. Yang pertama, kita dapat menggunakan operator seperti +, - , dll., kepada satu atau
dua operan, untuk menghasilkan sebuah nilai data baru. Yang kedua, kita dapat memanggil
fungsi seperti round (bulatkan) dengan satu atau lebih nilai data untuk menghasilkan sebuah
nilai data baru.

Dalam konteks bahasa pemrograman Python, fungsi adalah kumpulan perintahyang diberi nama
yang terdiri dari pernyataan-pernyataan yang dapat dipanggil untuk melaksanakan operasi
tertentu (misalnya, menghitung, mencetak, membulatkan, dsb.). Ketika kita menentukan /
mendefinisikan (define) sebuah fungsi, kita menentukan nama dan urutan dari pernyataan-
pernyataan yang ada di dalamnya.
Panggilan fungsi (function call) adalah sebuah pernyataan untuk melaksanakan sebuah fungsi.
Ketika diperlukan, kita dapat “memanggil” fungsi tersebut dengan nama, misalnya fungsi
print(). Kita memerintahkan komputer dengan dengan mengetik fungsi print (cetak):

h = ‘Halo’
print (h)
‘Halo’

Contoh fungsi yang lain adalah untuk melihat jenis data type(): ketika kita tidak mengetahui,
sebuah data termasuk kedalam golongan / kelas (class) yang mana, kita dapat mengetik perintah
berikut.

>>> type(7)
<class 'int'>
>>> type(2.1)
<class 'float'>
>>> type('5')
<class 'str'>
(jenis (7); jenis (2.1); jenis („5‟))
(golongan „int‟) (golongan „float‟) (golongan „str‟)

Hasil dari pernyataan yang ditampilkan tersebut yaitu: 7 termasuk dalam golongan jenis
bilangan bulat int (integer), 2.1 sebagai angka desimal float (floating/mengambang), dan „5‟
sebagai untaian str(string).

Nama dari fungsi di atas adalah type. Ungkapan dalam kurung disebut hujjah (argument) dari
fungsi. Fungsi “mengambil” hujjah dan “mengembalikan” hasil. Hasil tersebut dinamakan nilai
pengembalian (return value). Kita akan banyak menemukan berbagai fungsi dalam bab-bab
berikutnya.

Hujjah yang juga disebut parameter, merupakan nilai data khas dalam pelaksanaan tugas fungsi.
Ketika sebuah fungsi selesai mengakhiri tugasnya (biasanya sejenis perhitungan), fungsi dapat
mengirim kembali hasil pekerjaannya ke bagian program yang memanggil fungsi. Proses
mengirim hasil kembali ke bagian lain dari program dikenal sebagai pengembalian sebuah nilai
(returning a value).

Misal :

Round(1.5)
2

Hujjah atau parameter dari fungsi round(1.5) adalah 1.5, sedangkan 2 adalah nilai
pengembalian (return value).
Kalau hujjah dari sebuah fungsi adalah sebuah ungkapan, pertama sekali ungkapan itu dinilai dan
kemudian nilainya dilalukan/ dilewatkan ke fungsi untuk diproses lebih lanjut.

Misal :

>>>abs (5 – 9) # fungsi abs (absolute) mengembalikan nilai mutlak dari sebuah


angka
4

Panggilan fungsi abs(5 – 9) pertama menilaikan ungkapan 5 – 9 dan kemudian melalukan


hasilnya, - 4, ke fungsi abs. Setelah diolah, akhirnya abs mengembalikan 4.

Nilai yang dikembalikan oleh panggilan fungsi dapat juga digunakan di dalam ungkapan dan
pernyataan yang lain. Misal:

>>>print(abs(5 – 9) – 4)
0

Sejumlah fungsi hanya memiliki hujjah pilihan (optional argument) saja; ada yang memerlukan
hujjah wajib (required argument) ; dan ada juga fungsi yang memerlukan baik hujjah wajib
maupun hujjah pilihan. Sebagai contoh, fungsi round yang memiliki satu hujjah wajib
menunjukkan perilaku prasetelnya, yaitu mengembalikan bilangan mengambang (float) ke nilai
bilangan bulat terdekat. Namun, kalau ke dalam hujjah fungsi round tersebut dipasang lagi
sebuah angka sebagai hujjah pilihan kedua, hujjah kedua tersebut akan meminta kepada fungsi
untuk membulatkan berapa angka dibelakang koma, terhadap hasil yang dilaksanaan berdasarkan
hujjah pertama. Misal:

>>> 3/7
0.42857142857142855
>>> round(3/7, 3)
0.429

Fungsi-fungsi yang kita gunakan di atas sudah terdapat dalam modul utama penerjemah Python.
Kita juga dapat membuat sendiri berbagai fungsi untuk memadatkan penulisan perintah-perintah
yang berulang. Kita akan membuatnya dalam pembahasan lebih lanjut.
Bab V

Urutan Aksara dan Angka

5.1 Untaian (string)

Selain angka dan jenis Boole, Python juga mendukung penggunaan jenis data lain yang lebih
rumit. Jenis untaian Python yang disingkat str, digunakan untuk mewakili dan mengutak-atik
data teks atau urutan abjad / aksara, termasuk spasi kosong, tanda baca, dan berbagai simbol/
tanda/ lambang. Nilai untaian diwakili oleh urutan abjad yang dikurungi dengan tanda petik
„…‟ .

>>> ‘Apa kabar saudaraku?’


‘Apa kabar saudaraku?’
>>> s = ‘Apa kabar saudariku?’
>>> s
‘Apa kabar saudariku?’

Ungkapan pertama ‘Apa kabar saudaraku?’, adalah sebuah ungkapan yang hanya mengandung satu
nilai untaian. Ungkapan s = ’Apa kabar saudariku ?’ menetapkan nilai untaian‘Apa kabar saudariku
?’kepada peubah s. s menilaikan nilai untaian-nya ketika digunakan dalam sebuah ungkapan.

5.2 Operator untaian (string operator)

Python menyediakan operator untuk mengolah teks (yaitu nilai untaian). Seperti angka, untaian
dapat dibandingkan dengan menggunakan operator pembanding : == , != , < , > , dll. Contoh,
operator == menampilkan True jika untaian yang terdapat di kedua sisi operator memiliki nilai
yang sama:

>>> s == ‘Apa kabar ?’


True
>>> t = ‘teman’
>>> s == t
False
>>> s != t
True

Kalau == dan != menguji apakah dua untaian, sama atau tidak, operator pembanding < dan >
membandingkan untaian sesuai dengan urutan huruf di dalam kamus.

>>> s < t
True
>>> s > t
False

Operator + , ketika diterapkan pada dua untaian, menyebabkan dua untaian bersambung
(concatenation).

>>> s + t
'Apa kabar?teman'
>>> s + ' ' + t
'Apa kabar? teman'

Dalam contoh kedua, nama s dan nama t dinilaikan pada nilai untaian „Apa kabar?‟dan pada
nilai untaian „teman‟ dan menyambungkannya dalam satu untaian yang dipisahkan satu spasi.

Kalau kita ingin menyisipkan koma antara kedua untaian di atas:

>>> s + ' , ' + t


'Apa kabar? , teman'

Bagaimana dengan perkalian antara untaian:

>>> s * t
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
s*t
TypeError: can't multiply sequence by non-int of type 'str'
(JenisGalat: tidak dapat mengalikan urutan dengan jenis bukan angka bulat „str‟)

Bagaimana kalau untaian dikalikan dengan bilangan bulat:

>>> 5 * ‘A’
‘AAA’
>>> s + ' , ' + 2 * t
'Apa kabar? , temanteman'

Python memudahkan kita untuk menulis kata berulang-ulang sebanyak yang kita kehendaki.
Secara umum, dengan mengalikan untaian s dengan bilangan bulat k , Python akan
memberikan kita salinan untaian sebanyak k unit.

Kalau malas menggunakan mistar, Python dapat diandalkan untuk mengalikan untaian garis
bawah:

>>> 40 * '_'
'________________________________________'

Dengan operator in kita dapat mengecek apakah sebuah abjad terdapat di dalam sebuah untaian:

>>> s = ‘salam’
>>> ‘l’ in s
True
>>> ‘p’ in s
False

Karena „l‟ berada dalam dalam untaian s, kita dapat menyatakan bahwa „l‟ adalah bagian
untaian (substring ) dari s.

Panjang sebuah untaian dapat dihitung dengan menggunakan fungsi len():

>>> len(s)
5
Ringkasan dari penggunaan sejumlah operator untaian yang paling sering digunakan dapat
dilihat dalam Gambar 5.1 Penjelasan yang lebih lengkap tentang operator untaian dapat
diperoleh dengan memanggil fungsi help (bantuan):

>>> help(str)

Penggunaan Penjelasan
x in s Benar jika untaian x adalah sebuah bagian untaian s, dan sebaliknya Salah
x not in s Salah jika untaian x adalah sebuah bagian untaian dari s, dan sebaliknya Benar
s+t Penyambungan untaian s dan string t
s*n,n*s Penyambungan sebanyak n unit salinan untaian s
s[i] Abjad untaian s menurut indeks i
Lens(s) Panjang untaian s

Gambar 5.1 Beberapa operator untaian

5.3 Operator pengindeks (indexing operator) untaian

Abjad yang membentuk untaian dapat dicapai dengan menggunakan operator pengindeks [].
Indeks adalah kedudukan/ letak suatu abjad di dalam untaian dibandingkan dengan abjad
pertama sebuah untaian. Abjad pertama memiliki indeks 0, kedua indeks 1, ketiga indeks 2, dst.
Operator pengindeks [] mengambil menggunakan index i tidak negatif dan menampilkan sebuah
untaian abjad tunggal pada indeks i. Untuk untaian „salam‟ :
>>> s[0]
s
>>> s[1]
a
>>> s[4]
m

s s a l a m
Indeks 0 1 2 3 4
s[0] s a l a m
s[1] s a l a m
s[4] s a l a m

Gambar 5.2 Indeks untaian dan operator pengindeks

Indeks negatif juga bisa digunakan untuk mencapai abjad dalam sebuah untaian dari abjad paling
akhir (paling kanan). Abjad paling akhir dan kedua paling akhir dapat diambil kembali dengan
menggunakan indeks -1 dan -2, secara berturut-turut.

>>> s[-1]
m
>>> s[-2]
a

Indeks negatif -5 -4 -3 -2 -1
s s a l a m
Indeks 0 1 2 3 4
s[-1] s a l a m
s[-2] s a l a m

Gambar 5.3 Indeks negatif untaian dan operator pengindeks

5.4 Daftar (list)

Kita mengorganisasikan data dalam daftar, misalnya daftar murid, daftar belanja, daftar unsur,
dlsb. Dalam bahasa Python, daftar-daftar biasanya disimpan dalam suatu jenis objek yang
disebut daftar. Sebuah daftar adalah urutan objek, yang berada dalam kurung siku [0, 1, 5].
Objek dapat berupa jenis apa saja : misalnya bilangan, untaian, bahkan daftar yang lain lagi.
Contoh: kita menetapkan kepada peubah pelajaran, daftar yang berisikan beberapa mata
pelajaran:
>>> pelajaran = [‘matematika’, ‘biologi’, ‘IPA’]

Peubah pelajaran menilaikan daftar tersebut:

>>> pelajaran
[‘matematika’, ‘biologi’, ‘IPA’]

Dalam Python, daftar merupakan urutan objek yang terdapat dalam sebuah kurung persegi yang
dipisahkan oleh koma. Daftar kosong (empty list) dilambangkan dengan kurung siku kosong [].
Daftar dapat mengandung bermacam jenis bilah / barang (item) apa saja:

>>> benda = [‘tiga’, 4, [5, 6]]

Ungkapan ini mengandung tiga bilah dalam daftar benda: bilah yang pertama adalah untaian
„tiga‟, bilah yang kedua adalah bilangan bulat 4 dan bilah yang ketiga adalah daftar [5,6]

5.5 Operator daftar (list operator)

Kebanyakan operator untaian yang kita gunakan sebelumnya dapat digunakan terhadap daftar:

>>> pelajaran [0]


‘matematika’
>>> pelajaran [2]
‘IPA’

Indeks negatif juga bisa digunakan:

>>> pelajaran[-2]
‘biologi’

Panjang (length) sebuah daftar (yaitu jumlah bilah/ benda yang terdapat di dalamnya) dihitung
dengan menggunakan fungsi len() :

>>> len(pelajaran)
3

Indeks negatif -3 -2 -1
Pelajaran ‘matematika’ ‘biologi’ ‘IPA’
Indeks 0 1 2
Gambar 5.4 Indeks sebuah daftar
Seperti untaian, daftar dapat ditambah, yaitu disambungkan (concatenated). Daftar dapat juga
dikalikan dengan bilangan bulat k, yang berarti sebanyak k salinan daftar disambungkan.

>>> pelajaran + pelajaran


[‘matematika’, ‘biologi’, ‘IPA’, ‘matematika’, ‘biologi’, ‘IPA’]
>>> pelajaran * 2
[‘matematika’, ‘biologi’, ‘IPA’, ‘matematika’, ‘biologi’, ‘IPA’]

Jika kita ingin mengecek apakah „agama‟ ada di dalam pelajaran, kita dapat menggunakan
operator in di dalam sebuah ungkapan Boole, yang menilaikan True jika untaian „agama‟
ada di dalam daftar. Bila tidak, dinilaikan False.

>>> ‘agama’ in pelajaran


False
>>> ‘matematika’ in pelajaran
True

Fungsi min(), max(), dan sum(), dapat mengambil angka dalam daftar sebagai masukan (input)
dan mengembalikan nilai paling kecil, nilai paling besar dan jumlah seluruh angka dalam daftar,
sebagai keluaran (output).

>>> daftar = [2.3, 5.7, 8.9, 1.3]


>>> min(daftar)
1.3
>>> max(daftar)
8.9
>>> sum(daftar)
18.2

Gambar 5.5 menampilkan operator daftar dan tindakan yang dapat dijalankan terhadap daftar.

Penggunaan Penjelasan
x in lst True jika objek x berada dalam daftar lst, sebaliknya False
x not in lst False jika objek x berada dalam daftar lst, sebaliknya True
lstA + lstB Penyambungan daftar lstA dengan lstB
lst * n, n * lst Penyambungan sebanyak n salinan lst
lst[i] Benda pada indeks I dari daftar lst
len(lst) Panjang daftar lst
min(lst) Nilai paling kecil dari barang dalam daftar lst
max(lst) Nilai paling besar dari barang dalam daftar lst
sum(lst) Jumlah semua barang yang ada dalam daftar lst

Gambar 5.5 Operator daftar dan fungsi yang dapat dijalankan terhadap daftar
Contoh: Menghitung rata-rata

Rata-rata, m (mean), adalah pembagian jumlah seluruh angka dalam suatu daftar (sum) dengan
banyaknya angka (len) yang berada dalam daftar tersebut. Sekarang kita hitung nilai rata-rata
dari daftar a:

>>> a=[3,6,8,9,3.4]
>>> m=sum(a)/len(a)
>>> m
5.88

>>> rata-rata=sum(a)/len(a)
SyntaxError: can't assign to operator
(Galat sintaksis: tidak dapat ditetapkan pada operator. Tanda sambung (-) tidak dapat digunakan
dalam nama peubah, karena sama dengan operator pengurangan.)

>>> rerata=sum(a)/len(a)
>>> rerata
5.88
>>> rata_rata=sum(a)/len(a)
>>> rata_rata
5.88

>>> print('rata-rata = ', rata_rata)


rata-rata = 5.88

5.6Merombak daftar

Perbedaan mendasar antara daftar dan untaian yaitu isi daftar dapat diubah sementara untaian
tidak. Contoh kita ingin mengubah isi kedua dari daftar pelajaran dari „biologi‟ saja menjadi
„biologi molekuler‟. Kita ingin pelajaran[1] dinilaikan „biologi molekuler‟ sebagai ganti
„biologi‟ saja. Untuk itu, kita menetapkan „biologi molekuler‟ pada pelajaran[1] .

>>> pelajaran[1] = ‘biologi molekuler’


>>> pelajaran
[‘matematika’, ‘biologi molekuler’, ‘IPA’]

Daftar tersebut tidak lagi mengandung bilah „biologi‟, tetapi telah digantikan oleh bilah „biologi
molekuler‟.
Daftar dapat diubah tetapi untaian tidak. Misalkan kita salah ketik untaian „biologi‟ dan ingin
mengubahnya:

>>> ilmu = ‘biolohi’

Kita ingin mengantikan abjad pada indeks ke 5 dari „h‟ menjadi „g‟:

>>> ilmu[5] = 'g'


Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
ilmu[5] = 'g'
TypeError: 'str' object does not support item assignment
(JenisGalat; „str‟ objek tidak mendukung penetapan bilah)

Pesan galat mengatakan bahwa abjad tersendiri (bilah) dari untaian tidak dapat digantikan
(ditetapkan pada). Untuk memenda galat tersebut kita perlu menetapkan nilai baru untaian
kepada peubah ilmu:

>>>ilmu = ‘biologi’
>>>ilmu
‘biologi’

5.7 Metode daftar

Kita telah melihat fungsi yang beroperasi terhadap daftar , misalnya, fungsi min():

>>> angka = [4, 7, 9, 2, 5]


>>> min(angka)
2

Di dalam ungkapan min(angka), kita menyatakan bahwa fungi min() dipanggil dengan satu
hujjah masukan (input), yaitu daftar angka.

Ada juga fungsi yang dipanggil terhadap daftar. Misalkan , kita ingin menambahkan „IPS‟ ke
daftar pelajaran. Kita memanggil fungsi append() terhadap daftar pelajaran yaitu:

>>> pelajaran.append(‘IPS’)
>>> pelajaran
[‘matematika’, ‘biologi molekuler’, ‘IPA’, ‘IPS’]

(append artinya lekatkan)

Sekarang kita lekatkan lagi bilah „matematika‟ dalam daftar pelajaran;


>>> pelajaran.append(‘matematika’)
>>> pelajaran
[‘matematika’, ‘biologi molekuler’, ‘IPA’, ‘IPS’, ‘matematika’]

Lihat cara khusus fungsi append () dipanggil:

pelajaran.append(‘IPS’)

Fungsi append() dipanggil ke daftar pelajaran dengan input „IPS‟, yang dilekatkan di ujung daftar
pelajaran.

Fungsi append() adalah fungsi dari daftar (list), yang berarti fungsi append() tidak bisa
dipanggil sendiri. Ia harus dipanggil bersama dengan lst, dengan menggunakan tatatanda
lst.append(). Fungsi ini disebut juga sebagai metode (method), yaitu sebuah fungsi yang terikat
pada objek (Kita akan membahasnya dalam Bab VI). Pemanggilan atau pengaktifan metode
dapat menyebabkan objek menjawabnya.

Contoh lain dari metode daftar (list method) adalah count(). Ketika dipanggil kepada daftar
dengan hujah masukan, count() akan mengembalikan berapa banyak hujjah masukan yang
terdapat dalam daftar.

>>> pelajaran.count(‘matematika’)
2

Sekali lagi, kita mengatakan bahwa metode count() dipanggil kepada daftar pelajaran (dengan
hujjah masukan „matematika‟).

Untuk menyisihkan (remove) keberadaan bilah „matematika‟ pertama dari dafar pelajaran, kita
dapat menggunakan metode daftar remove():

>>> pelajaran.remove(‘matematika’)
>>> pelajaran
[‘biologi molekuler’, ‘IPA’, ‘IPS’, ‘matematika’]

Metode daftar reverse() membalikkan urutan dari objek:

>>> pelajaran.reverse()
>>> pelajaran
[‘matematika’, ‘IPS’, ‘IPA’, ‘biologi molekuler’]

Gambar berikut berisi tabel beberapa metode daftar yang lazim digunakan. Informasi yang lebih
lengkap dapat diperoleh dengan mengetik:
>>>help(list)

Gambar 5.6 Metode daftar yang sering digunakan

Metode sort() memilah (menyortir) barang-barang dalam daftar menurut urutan yang terkecil
hingga terbesar, kalau isi daftar berbentuk angka. Untuk daftar yang berisi untaian, urutan
dilakukan berdasarkan urutan huruf dalam kamus. Untuk datfar yang berisi campuran angka dan
untaian, penggunaan metode sort() akan memunculkan pesan galat.

>>>pelajaran.sort()
>>>pelajaran
[‘biologi molekuler’, ‘IPA’, ‘IPS’, ‘matematika’]

>>> lst = [9, 20, 4, 2, 3, 8]


>>> lst.sort()
[2, 3, 4, 8, 9, 20]

>>> daftarHargaMakanan = ['ayam goreng', 1500, 'soto', 3000, 'rendang', 2000]


>>> daftarHargaMakanan.sort()
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
daftarHargaMakanan.sort()
TypeError: '<' not supported between instances of 'int' and 'str'
(JenisGalat: „<‟ tidak mendukung di antara umpama „int‟ dan „str‟))

5.8Tela (tuple)

Tela adalah urutan yang mirip seperti daftar (list), tetapi yang membuatnya berbeda yaitu tela
tidak dapat diubah (ini sama seperti untaian (string)). Daftar dibatasi dengan dua kurung siku, [],
sedangkan tela dengan tanda kurung biasa, (). Penulisan tela sangat sederhana. Jika kita mengetik
nilai dan memisahkannya dengan koma, Python secara otomatis akan menilaikannya sebagai
tela.

>>> 5,6,2,4
(5, 6, 2, 4)
>>> (5,6,2,4)
(5, 6, 2, 4)

Tela kosong ditulis dengan dua tanda kurung kosong:


>>> ()
()

Kalau membuat tela yang hanya berisi satu nilai, cukup diketik tanda koma setelahnya:

>>> 23
23
>>> 23,
(23)

Tanpa tanda koma, Python tidak mengenalinya sebagai tela, walaupun kita menggunakan tanda
kurung:

>>> (23)
23
>>> (23,)
(23,)

Hanya satu koma dapat mengubah nilai dari sebuah ungkapan:

>>> 5 * (3 + 4)
35
>>> 5 * ( 3 + 4, )
(7, 7, 7, 7, 7)

Daftar dan string dapat diubah menjadi tela:

>>> tuple([2,4,5,3])
(2, 4, 5, 3)
>>> tuple('els')
('e', 'l', 's')
Sebaliknya, tela juga dapat diubah menjadi daftar:
>>> list((2,4,5,3))
[2, 4, 5, 3]

Kebanyakan operator terhadap daftar dapat dilakukan terhadap tela kecuali yang dapat
mengubah isi tela dan mencapai bilah (item) yang ada dalam tela:

>>> umur = (3,7,6,2)


>>> min(umur)
2
>>> b[2]
6
>>> b(2)
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
b(2)
TypeError: 'tuple' object is not callable
(JenisGalat: objek „tela‟ tidak dapat dipanggil)

Sekarang kita mencoba menetapkan nilai baru pada bilah (item) tela nomor 2 :

>>> b[2] = 1
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
b[2] = 1
TypeError: 'tuple' object does not support item assignment
(JenisGalat: objek „tela” tidak mendukung penetapan bilah)
BAB VI

Pengenalan Objek dan Golongan (class)

6.1 Objek

Jenis data (untaian, bilangan bulat, bilangan mengambang) dan fungsi berjalan seiring. Fungsi
yang diciptakan untuk menyelesaikan tugas tertentu, dibatasi pada jenis data yang dapat diterima
oleh fungsi tersebut. Sebagai contoh, kalau kita membuat fungsi untuk mengubah huruf kecil di
dalam untaian menjadi huruf besar, melalukan (pass) data keangkaan (numeric) pada fungsi
tersebut tidak akan ada artinya. Demikian juga dengan fungsi penghitung nilai mutlak, pelaluan
(passing) untaian ke fungsi tersebut tidak akan bermakna.

Jadi, data dan fungsi saling terkait satu sama lain. Karena itu, Python memperkenalkan suatu
konsep niskala (abstrak) yang disebut objek (object). Objek merupakan suatu gabungan data
dan fungsi. Dengan menggunakan objek, kita dapat melekatkan fungsi dengan data, terhadap
mana fungsi dapat beroperasi secara sah.

Untuk membedakan data tradisional dengan data yang terkandung dalam objek, kita
menyebutkan data dalam objek sebagai sebutan (atribute) atau sifat (properties) dari objek.
Sedangkan, untuk membedakan fungsi tradisional dengan fungsi yang terkandung dalam objek,
kita menyebutkan fungsi dalam objek sebagai metode objek. Oleh karena itu, dari pada
menyebutkan objek sebagai kumpulan data dan fungsi, akan lebih sesuai kalau kita sebutkan
objek adalah kumpulan dari sebutan dan metode.

Sejauh ini, kita telah mengenal jenis data (data type), operator dan metode (method) yang
didukung oleh jenis data tersebut. Di dalam Python, setiap nilai (value) apakah bilangan bulat
(integer) sederhana (seperti angka 7) atau dalam bentuk yang lebih rumit (seperti untaian (string)
„Apa kabar?‟ atau daftar (list) [„kanker‟, „panu‟, 3, 4]) disimpan dalam ingatan (memory)
komputer sebagai objek, yang dapat dirujuk oleh peubah.

Ketika sebuah ungkapan dijalankan, Python langsung memberikan nomor pengenal sebagai
objek. Kita dapat melihat nomor pengenal tersebut dengan menggunakan fungsi id (identity):

>>> 2
>>> 2, id(2), type(2)
(2, 1633961632, <class 'int'>)

>>> u = 'Selamat datang'


>>> u, id(u), type(u)
('Selamat datang', 37273416, <class 'str'>)
Objek bilangan bulat 2 di atas memiliki nomor pengenal 1633961632 dan berjenis (class ‘int’ =
golongan bilangan bulat). Kalau angka 2 tersebut kita tetapkan pada peubah x :

>>> x = 2
>>> x, id(x), type(x)
(2, 1633961632, <class 'int'>)

Python tetap saja memberikan nomor identitas yang sama seperti sebelum nilai 2 ditetapkan pada
peubah x.

Pokoknya, data apa saja seperti str, int, atau float adalah objekdari jenis tertentu. Suatu fungsi
yang kita ciptakan adalah objek dari jenis yang lain lagi, dsb.

Ketika kata jenis (type) kita gantikan dengan kata golongan (class), kita menyebutkan istilah
yang lebih teknis, yaitu: Semua objek adalah umpama (instance) /contoh / kasus dari suatu
golongan.

Misalnya ketika seseorang menyatakan memiliki mobil kita sudah mengerti konsep golongan
mobil secara umum seperti beroda empat, memiliki mesin, menggunakan BBM, mengangkut
orang dan barang, dsb., tanpa dijelaskan secara detil. Mobil orang ituyang mungkin warnanya
hitam, mengkonsumsi solar, berkursi untuk 6 penumpang, buatan Jerman, dsb. katakanlah
namanya Porche,merupakan umpama (instance) dari golongan mobil. Terhadap objek Porche
kita bisa menjalankan fungsi mengemudi, membawa barang dan penumpang, memperbaiki,
mengisi bensin, dsb. Fungsi seperti terbang, menyelam, mengarungi laut, memadamkan
kebakaran, dsb., tidak dapat kita lakukan terhadap objek Porche.

Dalam Python, kita juga dapat melakukan operasi terhadap sebuah objek. Operasi tersebut
ditentukan dengan menggunakan fungsi yang melekat pada objek. Dalam Python fungsi untuk
sebuah objek disebut metode yang dapat dipanggil hanya untuk objek tertentu. Misal, jenis
untaian memiliki metode seperti lower() dan upper(), yang mengembalikan untaian tersebut ke
dalam huruf kecil dan huruf besar:

>>> s = "Assalamualaikum"
>>> s.lower()
'assalamualaikum'
>>> s.upper()
'ASSALAMUALAIKUM'

Secara umum, sintaksis pemanggilan metode untuk sebuah objek yaitu object.method().

( objek.metode() )
6.2 Jenis objek (object type)

Setiap objek terkait dengan jenis (type) dan nilai (value). Dalam gambar 6.1 ada 4 objek yaitu:
sebuah objek bilangan bulat (integer) dengan nilai 7, sebuah bilangan desimal (float) dengan
nilai 4.1, sebuah untaian (string) dengan nilai „Apa kabar?‟ dan sebuah daftar (list) dengan nilai
[2, 3, 8, 1,2.].

type : int type:float type : str type : lst


7 4.1 ‘Apa kabar?’ [2, 3, 8, 1, 2]

Gambar 6.1 4 objek dengan jenis dan nilai masing-masing

Jenis objek menunjukkan jenis nilai apa yang dapat ditampung objek tersebut dan jenis operasi
apa yang dapat dilakukan terhadap objek itu. Jenis yang dapat kita lihat selama ini meliputi jenis
bilangan bulat (int), jenis angka desimal (float), jenis Boole (bool), jenis untaian (str) dan jenis
daftar (lst).

Fungsi type() Python dapat digunakan untuk mengetahui jenis objek:

>>> type(7)
<class ‘int’>
>>> type(4.1)
<class ‘float’>
>>> type(‘Apa kabar?’)
<class ‘str”>
>>> type([2, 3, 8, 1, 2])
<class ‘list”>
>>>type((2,3,0,8))
<class ‘tuple’>

Ketika digunakan terhadap peubah , fungsi type() akan mengembalikan objek yang sedang
dirujuk oleh peubah :

>>> x = 2.2
>>> type(x)
<class ‘float’>

Peubah tidak memiliki jenis, karena peubah hanya sebuah nama. Hanya objek yang dirujuknya
yang memiliki jenis (type). Sehingga ketika kita melihat di atas:

>>> type(x)
<class ‘float’>

Ini berarti objek yang saat ini sedang dirujuk oleh peubah adalah jenis angka desimal (float).
Objek yang dirujuk oleh peubah dapat berubah. Kita sekarang menetapkan nilai 2 pada peubah
x:

>>> x= 2
>>> type(x)
<class ‘int’>

Dari contoh ini, jenis objek yang dirujuk oleh peubah berubah menjadi bilangan bulat.

Karena nilai-nilai selalu disimpan dalam objek, bahasa pemrograman Python disebut program
yang berorientasi/ mengarah ke objek (object oriented programming/OOP)

Objek yang mirip atau berkaitan berada dalam suatu kelas/ kelompok/ golongan (class) dan
objek tersebut menjadi contoh/ umpama/ kasus (instance) dari golongan tersebut. Jadi dalam hal
ini dapat dikatakan golongan adalah wadah besar yang menampung objek yang hampir seragam
dan membundel beberapa data yang terkait, dan kemudian menetapkan sekelompok metode
(cara) untuk mencapai serta mengutak-atik data tersebut.

Karena itu, istilah golongan digunakan untuk merujuk pada jenis data (data type) yang nilainya
disimpan dalam objek. Karena setiap nilai di dalam Python disimpan di dalam objek, maka setiap
jenis Python (Python type) adalah sebuah golongan (class). Di dalam pembahasan berikut, istilah
golongan (class) dan jenis (type) dapat saling dipertukarkan.

Untuk menggambarkan konsep jenis object (object’s type), kita membahas tentang perilakunya
secara tepat.

6.3 Menciptakan objek

Untuk menciptakan sebuah objek dengan nilai 5 ( dan menetapkannya pada peubah x), kita dapat
menggunakan pernyataan berikut:

>>> x = 5

Dapat dilihat bahwa jenis dari objek bilangan bulat (integer object) ini, tidak disebutkan secara
khusus. Python juga mendukung cara menciptakan objek yang membuat jenis objek menjadi
lebih tertentu (khas).

>>> x = int(5)
>>> x
5

Fungsi int() disebut sebuah pembangun (constructor); fungsi ini digunakan untuk
mengumpamakan/ mengejawantahkan (instantiate) sebuah objek bilangan bulat. Nilai objek
tersebut ditentukan oleh hujjah (argument) fungsi: objek yang diciptakan dengan int(5)
memiliki nilai 5.
Jika tidak ada hujjah yang diberikan, sebuah nilai prasetel (default)akan diberikan kepada objek
tersebut:

>>> x = int()
>>> x
0

Nilai prasetel untuk bilangan bulat adalah 0.

Fungsi pembangun untuk angka desimal, daftar, dan untaian adalah float(), list(), dan str()
secara berturut-turut. Untuk objek angka desimal, nilai prasetel adalah 0.0:

>>> y = float()
>>> y
0.0

Nilai prasetel untuk untaian (string) dan daftar (list) adalah „‟ (untaian kosong/empty string) dan
[] (daftar kosong/empty list].

>>> s = str()
>>> s
‘’
>>> lst = list ()
>>> lst
[]

Pengubahan jenis secara implisit

Jika sebuah ungkapan aljabar atau logis meliputi operan (sasaran kerja operator) dari jenis
berbeda, Python akan mengubah tiap operan ke jenis operan lain dalam cakupan yang lebih luas.
Contoh : True akan diubah menjadi 1 sebelum penjumlahan dengan bilangan bulat dilakukan,
yang memberikan hasil bilangan bulat (int):

>>> True + 3
4

Hujjah untuk perilaku yang kelihatannya aneh ini yaitu, jenis Boole (bool) sebenarnya adalah
“bagian jenis” (subtype) dari jenis bilangan bulat (int), seperti diperlihatkan dalam Gambar 6.2.
Nilai Boole True (benar) dan False (salah) biasanya berperilaku seperti 1 dan 0 di dalam hampir
semua konteks.
Gambar 6.2 Kedudukan berbagai jenis angka. Angka Boole (bool) adalah bagian dari bilangan
bulat (int), dan bilangan bulat sendiri merupakan bagian dari bilangan riil (float / angka
desimal).

Karena bilangan bulat dapat ditulis dalam bentuk desimal atau tanpa desimal (4 adalah 4.0) tetapi
tidak sebaliknya (4.3 tidak bisa diwakilkan oleh bilangan bulat), jenis int sebenarnya berada
dalam jenis float, seperti terlihat dalam gambar 6.2. Sebagai contoh, misalkan ungkapan 4 + 0.45
, dimana nilai int dan nilai float dijumlahkan. Mengingat jenis float mengandung jenis int,
angka 4 diubah dahulu menjadi 4.0 (jenis yang lebih sempit diubah ke dalam jenis luas) sebelum
penjumlahan angka desimal dilakukan.

>>> 4 + 0.45
4.45

Kisaran nilai yang dapat dimiliki oleh objek int sangat lebih besar jika dibandingkan dengan
kisaran nilai objek float. Meskipun jenis int terkandung dalam jenis float (lihat gambar 6.2),
tidak berarti nilai int dapat selalu diubah menjadi nilai float. Sebagai contoh, ungkapan 4 **
10000 +3 dapat dinilaikan dengan mudah ke dalam nilai int, tetapi pengubahannya ke nilai
float akan mengakibatkan galat tumpah (overflow error):

>>> 4 ** 10000 + 0.0


Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
4 ** 10000 + 0.0
OverflowError: int too large to convert to float
(GalatTumpah: int terlalu besar untuk diubah menjadi float)

Pengubahan jenis yang eksplisit


Pengubahan jenis dapat juga dilakukan secara eksplisit dengan menggunakan fungsi pembangun
(constructor function) seperti yang sudah dijelaskan sebelumnya. Contoh, pembangun int()
menciptakan bilangan bulat dari hujjah masukan float, yang dilakukannya dengan menyisihkan
bagian pecahan dari hujjah:

>>> int (4.6)


4
>>> int (-4.6)
-4

Pembangun float() yang dilakukan terhadap bilangan bulat akan mengubahnya menjadi angka
desimal, kecuali kalau terjadi galat tumpah (overflow)

>>> float (6)


6.0

Pengubahan dari untaian (string) ke jenis bilangan hanya akan bekerja bila hal tersebut memiliki
arti ( untaian merupakan lambang yang sah dari nilai dari jenis). Kalau tidak, galat akan terjadi:

>>> int('7.1')
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
int('7.1')
ValueError: invalid literal for int() with base 10: '7.1'
(GalatNilai: keaksaraan tidah sah untuk int() dengan dasar 10:‟7.1‟)

>>> float('7.1')
7.1

Pembangun untaian str(), ketika diterapkan pada angka, akan mengembalikan angka tersebut
menjadi untaian:

>>> str(3.4)
‘3.4’

6.4 Menciptakan golongan : sebutan (attribute)

Dalam pemrograman mengarah ke objek (PMO/OOP), pemrogram menggunakan pernyataan


golongan (class statement) sebagai cetak biru untuk menjelaskan sebutan-sebutan(attributes)
atau sifat-sifat (properties) yang dimiliki oleh sebuah objek.
Gambar 6.3 menunjukkan sebuah golongan dengan sebutan-sebutan yang menggambarkan
sebutan atau sifat murid di sebuah sekolah berdasarkan dimensi kejiwaan yang mencakup
keceriaaan dan suasana_hati. Ada murid yang sangat gembira dan selalu ceria, tetapi ada yang
sedih dan murung. Sifat ini dapat berpengaruh pada harapan masa depan, keberhasilan belajar,
dan keberhasilan mereka kelak di dalam masyarakat. Karena itu, seorang murid dapat menjadi
berbesar hati (optimis) atau sebaliknya berkecil hati (pesimis) dalam menyongsong masa depan.

Golongan : sebutan-sebutan

keceriaan

suasana_hati

Gambar 6.3 Penciptaan golongan menurut sebutan (atribute)

Python memungkinkan penciptaan sebuah golongan dengan sebutan atau sifat umum yang
dimiliki oleh semua anggota golongan tersebut. Misalkan seorang pengatur cara / pemrogram
membuat program untuk sekolah guna mencatat data siswa. Untuk langkah awal, hanya 5
sebutan (sifat) siswa yang didata: nama, umur, jenis kelamin, keceriaan (murung atau ceria) dan
suasana hati (pesimis atau optimis).

Untuk menjelaskan kepada Python tentang siswa, pemrogram menciptakan sebuah golongan
dengan pernyataan sebagai berikut :

>>>class NamaGolongan :
>>> badan

Baris pertama merupakan judul golongan yang dimulai dengan kata kunci class yang kemudian
diikuti dengan NamaGolongan yang merupakan nama golongan. Penamaan golongan mengikuti
aturan penamaan peubah dan pengenal (identifier) lainnya; tidak boleh menyalahi aturan
penamaan. Judul diakhiri dengan tanda titik dua. Judul kemudian diikuti oleh badan yang
menyediakan pernyataan yang menentukan sebutan dan metode di dalam golongan (penjelasan
tentang metode akan dibahas dalam bagian berikut ini).
Sama seperti dalam hal definisi fungsi, badan harus ditakuk. Badan dapat terdiri dari beberapa
pernyataan dan diakhir dengan penghentian takuk (atau dengan memasukkan baris kosong di
dalam IDLE).

Pemrogram dapat menggunakan pernyataan kelas seperti berikut untuk menjelaskan tentang
sebutan. Semua sebutan tersebut menggunakan nilai prasetel (default, yang dapat diubah
kemudian).

>>> class SiswaSMP:


… nama = “Budi Raharjo”
… umur = 0
… jenis_kelamin = “pria”
… keceriaan = ‘0’ # string, nilai ‘0’ murung ‘10’ sangat ceria
… suasana_hati = ‘0’ # string, nilai ‘0’ sangat pesimis, nilai ‘10’
sangat optimis

Setelah pernyataan class, golongan SiswaSMP diciptakan. Lalu diukuti dengan pernyataan-
pernyataan untuk menciptakan sebutan (attribute) nama, umur, jenis_kelamin, keceriaan, dan
suasana_hati, dengan menggunakan operator penetapan dan nilai prasetel untuk pengenal-
pengenal tersebut. Perlu diingat bahwa penyataan class itu sendiri tidak menciptakan seorang
siswaSMP, tetapi dia hanya menyatakan apa sebutan-sebutan yang dimiliki oleh seorang objek
dari golongan SiswaSMP.

Setelah kita menciptakan golongan dengan pernyataan class, kita bebas memanggil golongan
tersebut untuk menciptakan objek dari golongan tersebut ketika diperlukan. Penciptaan sebuah
objek sebagai umpama (instance) dari golongan disebut pengumpamaan (instantiation).

Sekarang kita menciptakan sebuah umpama dari objek SiswaSMP yaitu Tati Maryati:

>>> tati = SiswaSMP()

Disini, kita menetapkan pengenal tati kepada golongan SiswaSMP. tati adalah peubah dari jenis
data baru sebuah golongan SiswaSMP. Kita menyatakan bahwa tati adalah SiswaSMP, atau tati
adalah umpama (instance) dari golongan SiswaSMP.

Untuk menampilkan nama tati :

>>> tati.nama
‘Budi Raharjo’

Yang muncul adalah nilai prasetel yaitu „Budi Raharjo‟ yang dimasukkan ketika kita
menciptakan golongan SiswaSMP. Walaupun kita sudah menciptakan umpama tati, namun
karena sebutan untuk tati belum ditetapkan, yang keluar adalah nilai prasetel.
Untuk itu, kita perlu memasukkan nilai baru sebagai sebutan-sebutanbagi objek tati. Untuk dapat
mencapai sebutan-sebutan dari sebuah objek, kita menggunakan tatatanda titik (dot notation):
kita menulis nama peubah kemudian sebuah “titik” dan kemudian nama sebutan. Titik berfungsi
sebagai operator pencapaian sebutan (access attribute operator). Istilah ini sering disebut sebagai
operator capaian (access operator) atau operator sebutan (attribute operator).

>>> tati.nama = “Tati Maryati”


>>> tati.umur = 14
>>> tati.jenis_kelamin = “wanita”
>>> tati.keceriaan = “6”
>>> tati.suasana_hati = “8”

Kita dapat mencapai sebuah sebutan, sekedar untuk melihat nilai yang ada di dalamnya atau
menetapkan nilai baru pada sebutan-sebutan tersebut, seperti ditunjukkan di atas. Untuk
menampilkan sebutan nama, umur, jenis_kelamin, keceriaan, dan suasana_hati Tati:

>>> print (tati.nama, tati.umur, tati.jenis kelamin, tati.keceriaan, tati.suasana_hati, sep=”; “)


Tati Maryati; 14; wanita; 6; 8

Ungkapan sep=”; “ artinya adalah separate (pisahkan) dengan tanda ; di antara sebutan-
sebutan objek tati. Keluaran dari pernyataan print () menunjukkan bahwa sebutan-sebutan tati
telah dirubah dari nilai prasetel (default).

Hingga tahap ini, kita telah berhasil menciptakan sebuah golongan SiswaSMP dengan umpama
dari golongan SiswaSMP tersebut yaitu objek tati beserta dengan sebutan-sebutannya.

Jika kita ingin menampilkan beberapa SiswaSMP, cara ini akan sangat melelahkan, karena harus
menulis berkali-kali pernyataan print () seperti di atas. Untuk mengurangi beban pekerjaan
seperti itu, kita dapat melakukannya dengan cara menentukan / mendefinisikan sebuah fungsi
seperti berikut:

>>> def tunjukkan(siswa_SMP): # def (define)artinya tentukan sebuah fungsi


… print(siswa_SMP.nama, siswa_SMP.umur, siswa_SMP.jenis_kelamin,
siswa_SMP.keceriaan, siswa_SMP.suasana_hati, sep=”; “)

>>> tunjukkan(tati)
Tati Maryati; 14; wanita; 6; 8
(Catatan: def tunjukkan(siswa_SMP): adalah pendefinisian/ penentuan nama fungsi tunjukkan())

Fungsi tunjukkan() mengambil seorang objek SiswaSMP yaitu Tati Maryati sebagai parameter
dan kemudian menampilkan sebutan-sebutansebuah objek dari golongan SiswaSMP tersebut.
Dapat dilihat bahwa nama peubah yang digunakan sebagai parameter resmi, siswa_SMP, dapat
menggunakan sembarang nama pengenal yang sah.
Fungsi tunjukkan() tersebut akan mengambil sebuah objek SiswaSMP sebagai parameter yang
tercatat saat ini. Ketika objek tati dilewatkan pada fungsi tunjukkan(), semua sebutan-sebutan
tati akan ditampilkan.

Jika fungsi tersebut digabungkan dengan golongan SiswaSMP, cara ini dikenal sebagai metode,
yang merupakan pokok bahasan kita berikut ini.

6.5 Menciptakan golongan : menggabungkan sebutan dengan metode (method)

Gambaran golongan dimana sebutan dan metode digabungkan ditunjukkan dalam gambar 6.4.
Metode digambarkan sebagai lingkaran yang berpanah yang mengitari sebutan/ sifat. Gabungan
dari sebutan / sifat dengan metode membentuk objek yang berada di dalam sebuah golongan.

Kembali pada Gambar 6.1 di atas, guru pembimbing ( dan penasehat) berkepentingan untuk
keberhasilan semua murid-muridnya baik yang periang/berbesar hati maupun pemurung/berkecil
hati. Di sini ada dua orang murid yang disebut objek A dan objek B. Objek A periang, angkuh,
sombong (besar kepala) tidak mau mendengar celaan dan nasehat orang dan selalu besar hati
berlebih-lebihan sehingga cenderung megalomania. Sedangkan objek B cenderung murung, dan
berkecil hati menghadapi masa depan (dilambangkan dengan wajah dan hati yang lebih kecil).

Tujuan guru pembimbing adalah membuat semuanya muridnya berhasil baik di bangku kelas
maupun dalam masyarakat. Terhadap objek A metode psikologi yang diterapkan adalah
menasehatinya supaya jangan angkuh dan sombong. Orang sombong tidak disukai oleh
lingkungan di sekitarnya sehingga dia dapat dikucilkan dan akhirnya gagal dalam masyarakat.
Dalam Gambar 6.4 ditunjukkan metode A dengan panah arah ke bawah.

Untuk objek B, guru pembimbing menerapkan metode B dengan cara menasehatinya,


menghiburnya supaya lebih bersemangat untuk menghadapi masa depan. Semangat tinggi yang
disertai dengan sikap berbesar hati akan memicu kerajinan dan keberhasilah. Metode B
digambarkan dengan lingkaran dan anak panah menuju ke atas.
Golongan : sebutan dan metode

Objek A

Objek B

Metode A
Metode B

Gambar 6.4 Penciptaan golongan yang menggabungkan sebutan/ sifat dengan metode untuk
membentuk objek.

Di dalam bagian 6.4 kita sudah menciptakan golongan Murid SMP dengan sebutan masing-
masing, sekarang kita lanjutkan dengan menggabungkan sebutan-sebutan tersebut dengan
metode. Cara yang dilakukan adalah dengan melekatkan fungsi sebagai bagian tidak terpisahkan
dari golongan. Ketimbang mendefiniskan fungsi secara terpisah di luar golongan (seperti yang
dilakukan di bagian 6.4) , kita dapat menggabungkan fungsi sebagai metode ke dalam golongan,
atau dengan kata lain metode adalah fungsi yang menjadi bagian dari golongan.

Pendekatan ini dilakukan cara memindahkan pernyataan def yang terkait, ke dalam pernyataan
class. Dengan cara ini, kita dapat menjamin bahwa metode hanya beroperasi pada objek,yang
terhadap mana metode ditetapkan. Kita akan akan membuat metode yang mirip dengan fungsi
tunjukkan() di bagian 6.1 di atas, yang memaparkan sebutan-sebutan seorang SiswaSMP. Untuk
membedakannya dengan fungsi tunjukkan(), dalam contoh sebelumnya, kita menamakan
metode ini sebagai tampilkan().

Kita kembali mengambil contoh pada bagian 6.4 sebelumnya, untuk menggabungkan metode ke
dalam golongan. Untuk memanggil metode, kita menyediakan sebuah umpama dari golongan
(dalam hal ini burhan) dan kita menentukan metode dengan tatatanda titik (dot notation).

>>> class SiswaSMP:


… nama = “Budi Raharjo”
… umur = 0
… jenis_kelamin = “pria”
… keceriaan = “0” # str, 0 sangat murung; 10 sangat ceria
… suasana_hati = “0”, str, 0 sangat pesimis, 10 sangat optimis

def tampilkan(swa): # def(define) artinya tentukan sebuah metode
print(“Nama = “, swa.nama)
print(“Umur = “, swa.umur)
print(“Jenis_kelamin = “, swa.jenis_kelamin)
print(“Keceriaan = “, swa.keceriaan)
print(“Suasana_hati = “, swa.suasana_hati)

Untuk memudahkan pembacaan, sebuah baris ditakuk, namun tidak ditulis apa-apa pada baris ke
lima. Kemudian diikuti dengan penentuan metode tampilkan(); walaupun agak berbeda dengan
tunjukkan()(lihat bagian 6.1) tetapi menampilkan data yang serupa.

Tanda kurung diperlukan dalam def tampilkan(). Dalam hal ini sebuah objek mengetahui
sebutan-sebutannya dan metodenya; jadi tatatanda titik bukan saja memungkinkan kita mencapai
sebutan-sebutan, tetapi juga untuk mencapai metode dalam golongan objek.

Acuan untuk metode, sama seperti untuk fungsi dalam contoh sebelumnya. Satu hal yang perlu
dicamkan adalah Python selalu menyediakan sebuah umpama dari golongan sebagai parameter
pertama untuk metode tersebut (dalam kasus ini, metode hanya memiliki sebuah parameter
tunggal – dalam pembahasan lebih lanjut kita akan membahas metode dengan beberapa
parameter).

Setelah pernyataan class ditutup, seorang objekSiswaSMP diciptakan dan ditetapkan pada
burhan (peubah burhan adalah sebuah umpama dari golongan SiswaSMP)

>>> burhan = SiswaSMP()


>>> burhan.nama = “Burhan Arifin”
>>> burhan.umur = 16
>>> burhan.jenis_kelamin = “pria”
>>> burhan.keceriaan = “5”
>>> burhan.suasana_hati = “4”

Pada nama, umur, jenis_kelamin, keceriaan dan suasana_hati burhan ditetapkan nilai baru.
Ketika diminta tampilkan, sebutan-sebutan burhan akan muncul.

>>>burhan.tampilkan()
Nama = Burhan Arifin
Umur = 15
Jenis_kelamin = pria
Keceriaan = 5
Suasana_hati = 4

Walaupun tertulis burhan.tampilkan(), Python secara efektif menerjemahkan ini ke ungkapan


tampilkan(burhan). Tulisan burhan.tampilkan() memerintahkan Python bahwa parameter
resmi swa (self) ditetapkan pada parameter saat ini, yaitu burhan,dan kemudian badan dari
metode dilaksanakan. Pengenal (identifier) swa tidak memiliki peran khusus. Apa saja nama
pengenal dapat digunakan. Namun, sesuai dengan kesepakatan tidak tertulis, kata swa (self)
sering digunakan dalam penulisan program.

Kalau kita ingin menambah data siswa berikutnya misalnya Tati Maryati, kita dapat
melakukannya dengan memasukkan sebutan atau sifat tati:

>>> tati = SiswaSMP()


>>> tati.nama = “Tati Maryati”
>>> tati.umur = 15
>>> tati.kelamin = “wanita”
>>> tati.keceriaan = “6”
>>> tati.suasana_hati = “8”
>>> tati.tampilkan()

Hasilnya :

Nama = Burhan Arifin


Umur = 16
Jenis kelamin = pria
Keceriaan = 5
Suasana_hati = 4
Nama = Tati Maryati
Umur = 15
Jenis kelamin = wanita
Keceriaan = 6
Suasana_hati = 8

Nama-nama murid yang ada dalam alas data (database), akan ditampilkan. Untuk menampilkan
salah seorang murid saja, misalnya Tati, kita mengetik:

>>> tati.tampilkan()
Nama = Tati Maryati
Umur = 15
Jenis kelamin = wanita
Keceriaan = 6
Suasana_hati = 8

Sebenarnya, untuk menciptakan golongan, Python memiliki metode tersendiri yaitu __init__
(initialize, memprakarsai). Hal ini akan kita bahas lebih lanjut dalam Bab IX.

6.6 Metode golongan (class methode ) dan pemrograman mengarah ke objek (object-
oriented programming)
Untuk lebih mantap, kita mengulang lagi beberapa metode yang sudah kita gunakan. Satu cara
untuk berpikir tentang suatu jenis (yaitu golongan/class) adalah melihatnya sebagai satu
himpunan dari semua operator dan metode yang dapat diterapkan pada objek dari golongan
tersebut. Contoh:terhadap golonganlist (daftar) dapat dijelaskan operator dan metode dari list
class, beberapa di antaranya ditunjukkan pada bagian 5.5. Kita telah menggunakan metode list,
misalnya append(), count(), dan remove():

>>> pelajaran = [‘matematika’, ‘biologi’, ‘IPA’]


>>> pelajaran.append(‘IPS’)
>>> pelajaran.append(‘IPA’)
>>> pelajaran
[‘matematika’, ‘biologi’, ‘IPA’, ‘IPS’, ‘IPA’]
>>> pelajaran.count(‘IPA’)
2
>>> pelajaran.remove(‘IPA’)
[‘matematika’, ‘biologi’, ‘IPS’, ‘IPA’]
>>> pelajaran.reverse()
[‘IPA’, ‘IPS’, ‘biologi’, ‘matematika’]

Untuk melihat metode-metode yang didukung oleh golonganlist, gunakan alat dokumentasi
help():

>>> help(list)

Kita sekarang menjelaskan penulisan yang digunakan di dalam metode panggilan sebelumnya.
Dalam setiap kasus, kita memiliki objek daftar, pelajaran, yang diikuti oleh titik (.), lalu diikuti
oleh metode(fungsi) panggilan (call).

Arti dari, misalnya:

pelajaran.append(‘IPS’)

adalah: metode daftar append() dipanggil kepada objek list pelajaran untuk menambahkan
masukan untaian (string input) „IPS‟ kedalamnya.

Secara umum, penulisan

o.m(x,y)

berarti bahwa metode m dipanggil kepada objek o dengan input x dan y. Metode m harus
merupakan sebuah metode dari golongan yang mana o termasuk ke dalamnya.

Setiap operasi yang dilakukan dalam Python adalah metode pemanggilan dari bentuk ini. Anda
mungkin heran karena ungkapan x + y tampaknya tidak sesuai dengan format ini, tetapi ketika
anda belajar lebih lanjut, ungkapan itu ternyata sesuai.
Pendekatan ini untuk mengutak-atik data, dimana data disimpan di dalam objek dan metoda
dipanggil pada objek, disebut pemrograman berorientasi/ mengarah ke objek (PMO/OOP).
OOP adalah sebuah pendekatan yang sembada (robust) untuk pengorganisasian dan
pengembangan kode (penulisan program) dalam skala besar.

6.7 Paradigma pemrogaman / pengaturcaraan

Pemrograman mengarah ke objek (OOP) memusatkan diri pada sebuah objek yang merupakan
sebuah unsur pemrograman yang mengandung data dan prosedur (fungsi) yang beroperasi
terhadap data tersebut (lihat Gambar 6.5 ).

Gambar 6.5 Pendekatan pemrograman yang mengarah ke objek (PMO)

Objek tersebut mengandung informasi dan kemampuan mengutak-atik (memanipulasikan)


informasi. Operasi yang dilakukan terhadap informasi di dalam sebuah objek adalah dengan cara
mengirimkan sebuah pesan kepada objek. Ketika objek menerima pesan yang mengandung
perintah, dia akan melaksanakan perintah tersebut.

Pendekatan OOP berbeda dengan pendekatan pemrograman tradisional yang disebut


pemrograman menurut prosedur (procedural programming). Dalam pendekatan prosedural,
proses penyelesaian masalah dilakukan dengan cara memecahkan tugas yang rumit menjadi
tugas-tugas kecil yang lebih sederhana dan memecahkannya lagi dalam sub tugas yang lebih
sederhana lagi, sehingga memungkinkan komputer untuk melaksanakannya dengan
menggunakan perintah-perintah yang ditulis. Cara penyusunan seperti ini disebut juga
pendekatan atas ke bawah (top-down approach).

Di dalam pemrograman prosedural, pengaturcara membangun prosedur (atau disebut juga fungsi
dalam bahasa Python). Prosedur (fungsi) adalah kumpulan dari pernyataan pemrograman yang
bertujuan melaksanakan suatu tugas khusus. Tiap prosedur (fungsi) mengandung peubahnya
sendiri dan biasanya berbagi peubah dengan prosedur yang lain (lihat Gambar 6.6 ).

Gambar 6.4. Pendekatan pemrograman menurut prosedur

Namun paradigma prosedural ini memerlukan penulisan yang berulang sehingga penulisan kode
menjadi panjang dan sulit menemukan galat program (bug), bila terjadi kesalahan penulisan.
Untuk mengatasi masalah ini dibuatlah paradigma baru yang disebut metode objek atau
pemrograman berorientasi objek .

Pemrograman mengarah ke objek semakin dominan dalam penyelesaian masalah dengan


menggunakan komputer. Bahasa Python, C++, Java, dll. menggunakan kedua pendekatan dalam
penulisan program. Sedangkan bahasa yang lebih awal seperti Fortran, Basic, C, dll., hanya
mengunakan pendekatan pemrograman prosedural. Bahasa yang lebih mutakhir seperti Ruby
hanya menggunakan pendekatan OOP.

6.8 Perpustakaan baku Python (Python standard library)

Inti bahasa pemrograman Python dilengkapi dengan fungsi seperti max() dan sum(), serta
golongan (class) seperti int, str dan list. Walaupun fungsi dan golongan itu belum mencakup
semua fungsi dan golongan yang terpasang dalam Python, inti dari bahasa Python sengaja dibuat
kecil demi efisiensi dan kemudahan penggunaan. Sebagai tambahan fungsi dan golongan inti,
Python memiliki banyak sekali fungsi dan golongan yang didefinisikan dalam Python Standard
Library yang terdiri dari ribuan fungsi dan golongan yang diorganisasikan dalam komponen yang
disebut modul.
Lebih dari 200 modul terpasang bersama-sama membentuk Python Standard Library. Setiap
modul mengandung sehimpunan fungsi dan/ atau golongan yang terkait dengan wilayah terapan
khusus, misalnya:

Pemrograman jaringan (network programming)

Pemrograman terapan Lokajala (Web application programming)

Pengembangan grafik pengguna antar muka (graphical user interface (GUI) development)

Pemrograman alas data (database programming)

Fungsi matematika (mathematical function)

Pembangkit angka mirip-acak (pseudorandom number generator).

Di luar perpustakaan standar, juga terdapat ribuan modul yang digunakan untuk berbagai macam
keperluan kependataan ilmu pengetahuan, keuangan, statistik, penyuntingan grafis, misalnya
scipy, numpy, matplotlib, pandas, dlsb. Anda dapat mengunduh semua modul tersebut dari
internet misalnya melalui program penghimpun modul yang bernama Anaconda, WinPython,
Python(x,y), Canopy, dll. Di dalam program tersebut terdapat IDE (Integrated Development
Evironment) seperti Spyder, Jupiter, IPython yang lebih canggih dari IDLE yang kita gunakan
selama ini. IDE Spyder, misalnya, mirip dengan MATLAB yang banyak digunakan di kalangan
ilmiawan. Spyder, IPython, Jupyter, dan paket Python lainnya, cuma - cuma, alias gratis – tis –
tis , sedangkan MATLAB berbiaya mulai dari EUR 800 per tahun untuk satu komputer atau
mulai dari EUR 2000 untuk seumur hidup pada tahun 2017.

Memang ada program diskriminasi harga yang dilakukan oleh produsen perangkat lunak dengan
menurunkan harga jual kepada lembaga pendidikan dan mahasiswa, namun dalam jangka
panjang penggunaan perangkat lunak komersil akan menghalangi anak bangsa untuk belajar dari
bahasa pengaturcaraan sumber terbuka seperti Python. Anak bangsa yang satu ketika akan
menjadi kaum professional akan terperangkap dalam kendali perusahaan informatika. Kita dapat
menggunakan perangkat lunak sumber terbuka untuk semua pemecahan masalah dengan
pendata. Biasanya, apa yang dapat dilakukan oleh perangkat lunak komersil, dapat dikerjakan
dengan menggunakan perangkat lunak sumber terbuka, tetapi sebaliknya belum tentu bisa.

6.9 Modul math

Bahasa Python inti hanya mendukung operator matematika yang mendasar; sebelumnya sudah
kita pelajari. Untuk fungsi matematika yang lain seperti fungsi akar pangkat dua atau fungsi
trigonometri, modul math diperlukan. Modul matematika adalah perpustakaan dari tetapan
(konstanta) dan fungsi matematika. Untuk menggunakan fungsi modul matematika, kita lebih
dahulu perlu mengimpornya secara eksplisit:

>>> import math

Pernyataan import membuat semua fungsi matematika yang didefinisikan dalam modul math
tersedia untuk digunakan.

Meskipun fungsi akar pangkat dua (square root) sqrt() ditentukan di dalam modul math, kita
tidak dapat menulis ungkapan seperti ini:

>>> sqrt(6)
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
sqrt(6)
NameError: name 'sqrt' is not defined
(GalatNama: nama „sqrt‟ tidak ditentukan/definisikan)

Penerjemah Python tidak mengetahui tentang sqrt(), nama fungsi akar pangkat dua. Kita harus
mengatakan kepada penerjemah secara eksplisit di dalam modul mana dicari fungsi tersebut:

>>> math.sqrt(6)
2.449489742783178
>>> math.factorial(1)
1
>>> math.factorial(2)
2
>>> math.factorial(3)
6
>>> math.factorial(77)
145183092028285869634070784086308284983740379224208358846781574688061991349156420080
065207861248000000000000000000

( Dibandingkan dengan kalkulator yang anda gunakan saat ini, kemampuan yang dimiliki oleh
Python jauh sangat besar. Anda dapat mengubah telpon cerdas anda menjadi kalkulator hebat
dengan memasang program QPython. Anda akan dapat melakukan perhitungan yang
menghasilkan angka besar sambil melakukan pemrograman.)

Gambar 6.7 Memperlihatkan beberapa fungsi matematika yang lazim digunakan. Daftar lengkap
dapat dilihat dengan mengetik fungsi help():

>>> help(math)
Gambar 6.5 Beberapa fungsi dalam modul math

Modul fractions (pecahan)

Modul pecahan membuat tersedianya jenis baru angka yaitu jenis Fraction. Jenis Fraction
digunakan untuk mewakili pecahan dan melakukan operasi aritmetika bilangan rasional,
misalnya:

Untuk menggunakan modul pecahan kita lebih dahulu harus mengimpornya:

>>>import fractions

Jangan lupa ada huruf s diujungnya (artinya jamak). Untuk mencipatakan objek Fraction, kita
menggunakan pembangun Fraction() dengan dua hujjah: sebuah pembilang (numerator) dan
sebuah penyebut(denominator). Disini ditunjukkan bagaimana mendefinisikan dan :

>>> a = fractions.Fraction(1, 3)
>>> b = fractions.Fraction(5, 6)

Disini kita harus menjelaskan dimana golongan Fraction berada, yaitu di modul fractions.
Ketika kita menilai a dan b, kita mendapatkan:

>>> a
Fraction(1, 3)
>>> b
Fraction(5, 6)

Lihat a tidak dinilaikan pada angka desimal 0.3333, dan b pada 0.8333
Sebagai mana angka lainnya, objek Fraction dapat dijumlahkan dan hasilnya adalah objek
Fraction juga:

>>> a + b
Fraction(7, 6)

Apa perbedaan antara jenis float dengan jenis fractions.Fraction ? Kita sudah menyinggung
sebelumnya bahwa nilai float disimpan di dalam ingatan komputer dengan jumlah bit yang
terbatas. Ini berati bahwa kisaran nilai yang dapat disimpan oleh objek float terbatas. Contoh
0.72345 tidak dapat diwakilkan sebagai nilai float dan dinilaikan sebagai angka 0:

>>> 0.7 ** 2345


0.0

Kisaran nilai yang terwakilkan dengan objek fractions.Fraction jauh lebih sangat besar dan
hanya dibatasi oleh ingatan komputer yang tersedia, sama seperti jenis int. Sehingga kita dengan
mudah dapat menghitung ( )2345 :

>>> fractions.Fraction(7,10)**2345
Fraction(568726982714266665556182222880197060985883854297483418409889715567344
...
4771191428118487277194020390020179444807,
100000000000000000000000000000000000000000000000000000000000000000000000000000
...
000000)

Karena itulah jenis fractions.Fraction tidak selalu digunakan, karena ungkapan yang meliputi
nilai float sangat cepat dinilaikan dibandingkan dengan ungkapan yang meliputi nilai
fractions.Fraction.

Bilangan kompleks (rumit)

Selain terhadap bilangan nyata (riil), Python juga dapat melakukan operasi terhadap bilangan
kompleks (bilangan rumit/complex number). Bilangan rumit terdiri dari dua bagian yaitu bagian
riil (nyata) dan bagian khayal yang dilambangkan dengan huruf j (dalam matematika
dilambangkan dengan huruf i, singkatan dari kata imaginary/khayalan). Misalnya : bilangan
rumit (4 + 2i) ditulis dalam Python sebagai (4 + 2j) :

>>> a= 4 + 2j
>>> type(a)
<class 'complex'>
Ketika kita menggunakan memanggil fungsi type() terhadap bilangan rumit, Python
menjelaskan pada kita bahwa persamaan itu adalah sebuah objek dari jenis complex .

Kita juga dapat mendefinisikan bilangan rumit dengan menggunakan fungsi complex():

>>> k = complex (3)


>>>k
(3 + 0j)
>>> a=complex(2,4)
>>>a
(2 + 4j)

Penjumlahan dan pengurangan bilangan rumit:

>>> a+k
(5+4j)
>>> a-k
(-1+4j)

Perkalian dan pembagian:

>>> a*k
(6+12j)
>>> a/k
(0.6666666666666666+1.3333333333333333j)
>>> k/a
(0.3-0.6j)

Pemangkatan bilangan rumit:

>>> a**2
(-12+16j)
>>> a**0.5
(1.7989074399478673+1.1117859405028423j)

Modulus (%) dan pembagian alas/lantai (floor division) (//) tidak sah untuk bilangan rumit.

>>> a//5
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
a//5
TypeError: can't take floor of complex number.
(GalatJenis: tidak dapat mengambil pembagian alas dari bilangan rumit)

Bagian riil dan khayal dari bilangan rumit dapat diuraikan dengan menggunakan sebutan real
dan imag, yaitu:

>>> r=(7-8j)
>>> r.real
7.0
>>> r.imag
-8.0

Konjugat (nilai terbalik) dari bilangan rumit juga dapat dilihat dengan menggunakan metode
conjugate() :

>>> r.conjugate()
(7+8j)

Kita dapat mencari besaran (magnitude) dari bilangan rumit dengan rumus √ . Di dalam
Python, kode yang dapat ditulis untuk menghitung besaran r = (7 - 8j) yaitu:

>>> (r.real**2 + r.imag**2)**0.5


10.63014581273465

Atau dengan fungsi abs() yang lebih singkat:

>>> abs(r)
10.63014581273465
(Catatan : abs = absolute = mutlak)

Fungsi abs mengembalikan nilai nilai mutlak untuk bilangan riil, misalnya abs(-5) adalah 5,
tetapi untuk bilang rumit fungsi tersebut mengembalikan besaran.

Dalam perpustakaan standar Python terdapat modul cmath ( complex math) untuk fungsi yang
lebih khusus dari bilangan rumit. Misal:

>>> import cmath


>>> cmath.sqrt(-1)
1j
(Catatan : sqrt = square root = akar pangkat dua)
6.10 Kajian kasus: Objek Grafik kura-kura (Turtle Graphics Objects)

Kita akan menggunakan alat grafik (gambar) untuk menggambarkan secara visual (pandangan)
konsep objek, golongan (class) dan metode golongan (class method), pemrograman berorientasi
objek (object-oriented programming), dan modul. Turtle garphics adalah alat yang
memungkinkan kita menarik garis dan membentuk gambar, sama seperti yang dilakukan dengan
pena di permukaan kertas.

Turtle graphics berasal dari bahasa pemrograman Logo yang dibuat pada tahun 1966. Salah
satu tuturan/ kegunaan (feature) yang menarik dari dari bahasa Logo dan dijadikan sebagai alat
pengajaran pemrograman adalah Turtle graphics.

Turtle graphics tersedia untuk pengembang Python melalui modul turtle. Di dalam modul turtle
didefinisikan 7 golongan (class) dan lebih dari 80 metode golongan (class methode) dan fungsi.
Di sini tidak akan dibahas semua tuturan dari modul turtle. Kita hanya mengenalkan sejumlah
hal mendasar yang memungkinkan kita membuat grafik yang menarik dan memperkuat
pemahaman tentang objek, golongan, metode golongan, fungsi dan modul.

Kita mulai dengan mengimpor modul dan mengejawantahkan (instantiate) sebuah objek Screen
(layar).

>>> import turtle


>>> s = turtle.Screen()

Dapat kita amati bahwa sebuah jendela baru muncul di layar dengan latar belakang putih setelah
melaksanakan pernyataan kedua. Objek Screen adalah kanvas di dalam mana kita dapat
menggambar. Golongan Screen didefinisikan di dalam modul turtle.

Untuk menciptakan pena, atau dengan menggunakan istilah graphics turtle, kita
mengejawantahkan / menjelmakan (instantiate) sebuah objek Turtle yang kita namakan t:

>>> t = turtle.Turtle()

Objek Turtle pada dasarnya adalah sebuah pena yang awalnya berada di tengah layar, pada
koodinat (0,0). Golongan Turtle, didefinisikan di dalam modul turtle, menyediakan banyak
metode untuk menggerakkan turtle. Ketika digerakkan, turtle meninggalkan jejak di
belakangnya. Untuk membuat gerakan pertama, kita menggunakan metode forward() dari
golongan Turtle. Jadi, untuk menggerakkan 100 piksel, metode forward dimohonkan pada
objek Turtle t dengan 100 (piksel) sebagai jarak:

>>> t.forward(100)

Hasilnya terlihat dalam gambar 6.6


Gambar 6.6 Gerakan forward (maju ke depan) 100 piksel

Perhatikan, gerakannya yaitu ke arah kanan. Ketika dijelmakan, turtle mengarah ke kanan.
Untuk mengarahkan turtle menghadap ke arah yang lain, anda dapat memutarnya searah jarum
jam atau berlawanan arah dengan jarum jam dengan menggunakan metode right() atau left(),
yang keduanya juga merupakan metode golongan Turtle. Untuk memutar 90 derajat berlawanan
arah dengan jarum jam, metode left() dipanggil oleh objek t pada Turtle dengan hujjah 90:

>>> t.left(90)

Kita juga dapat memunculkan beberapa objek Turtle secara bersamaan di layar. Berikutnya, kita
menciptakan sebuah umpama (instance) baru Turtle yang kita namakan u dan membuat kedua
turtle membuat beberapa gerakan:

>>> u = turtle.Turtle()
>>> u.left(90)
>>> u.forward(100)
>>> t.forward(100)
>>> u.right(45)

Keadaan kedua turtle tersebut dan jejak yang mereka buat kelihatan di gambar 6.7.

Gambar 6.7 Gerakan dua turtle


Dalam contoh yang baru kita selesaikan, kita menggunakan tiga metode golongan Turtle:
forward(), left(), dan right(). Dalam Tabel dalam Gambar 6.8 diperlihatkan beberapa metode
lain (tetapi tidak semuanya).

Untuk menggambarkan beberapa metode tambahan yang ada dalam daftar di atas, kita akan
melihat langkah-langkah yang diperlukan untuk membuat gambar sebuah emoticon (ikon/gambar
emosi) wajah tersenyum yang diperlihatkan dalam Gambar 6.9.

Kita mulai dengan mewujudkan sebuah Screen (layar) dan sebuah objek turtle dan menentukan
ukuran pena.

>>> import turtle


>>> s = turtle.Screen()
>>> t = turtle.Turtle()
>>> t.pensize(3)

Kita kemudian mendefinisikan koordinat dimana dagu dari wajah tersenyum tersebut akan
berada dan kemudian bergerak ke lokasi itu.

>>> x = -100
>>> y = 100
>>> t.goto(x, y)
Gambar 6.8Daftar beberapa metode turtle

Wah, jadinya kok sebuah garis yang berasal dari koordinat (0, 0) ke koordinat (-100, 100).
Padahal yang kita inginkan adalah menggerakkan pena, tanpa meninggalkan bekas. Karena itu
kita perlu membatalkan gerakan terakhir yaitu, mengangkat pena, dan kemudian
menggerakkanya.

>>> t.undo()
>>> t.penup()
>>> t.goto(x, y)
>>> t.pendown()
Gambar 6.9 Gambar emosi (emoticon)

Sekarang kita menggambarkan lingkaran yang melingkari wajah tersenyum tersebut. Kita
memanggil metode circle() dari golongan Turtle dengan satu hujjah, yaitu jari-jari dari
lingkaran.

Langkah tersebut akan membuat posisi turtle akan menjadi sebuah titik dari lingkaran. Pusat
dari lingkaran didefinisikan menjadi ke sebelah kiri turtle, dibandingkan dengan arah turtle
sekarang ini.

>>> t.circle(100)

Kita sekarang ingin menggambarkan mata kiri. Kita memilih koordinat mata kiri relatif terhadap
(x, y) (yaitu posisi dagu) dan meloncat pada posisi itu. Kita kemudian menggunakan fungsi dot
(titik/noktah) untuk menggambar sebuah titik hitam berdiameter10.

>>> t.penup()
>>> t.goto(x – 35, y + 120)
>>> t.pendown()
>>> t.dot(10)

Berikutnya, kita loncat dan menggambarkan mata kanan,

>>> t.penup()
>>> t.goto(x + 35, y + 120)
>>> t.pendown()
>>>t.dot(10)

Kemudian, kita menggambarkan senyuman. Disini dipilih lokasi yang tepat dari titik ujung kiri
senyuman dengan cara coba-coba. Anda dapat juga menggunakan geometri (ilmu ukur) dan
trigonometri (ilmu ukur segitiga) supaya goresan pena lebih tepat, kalau anda suka. Kita
menggunakan sebuah varian dari metode circle() yang mengambil hujjah kedua sebagai
tambahan pada jari-jari yaitu sebuah sudut. Apa yang digambarkan adalah hanya sebuah bagian
dari lingkaran, sebuah bagian yang berhubungan dengan sudut tertentu. Lihat lagi bahwa pertama
kita harus meloncat.

>>> t.penup()
>>> t.goto(x – 60.62, y + 65)
>>> t.pendown()
>>> t.setheading(-60)
>>> t.circle(70, 120)

Kita telah menyelesaikannya. Untuk menutup secara bersih jendela grafik kura-kura kita
memanggil metode bye() dari Screen.

>>> s.bye()

Metode ini dan beberapa metode Screen yang lain dapat dilihat dalam Tabel Gambar 6.10

Gambar 6.10 Daftar sejumlah metode Screen


Bab VII

Pemrograman Menurut Prosedur (procedural programming)

7.1 Modul dan program Python

Program Python yang melaksanakan sebuah terapan komputer (computer application) adalah
urutan dari berbagai pernyataan Python. Urutan dari pernyataan Python tersebut disimpan dalam
satu atau lebih warkah (file) atau modul yang diciptakan oleh pengembang dengan menggunakan
editor penulisan program.

Untuk membuat warkah baru melalui IDLE (Integrated DeveLopment Environment/ Lingkungan
pengembangan yang terpadu) Python, di dalam mana kita menulis kode, kita mengeklik banderol
(tab) File (warkah) di sebelah kiri atas jendela IDLE dan kemudian mengeklik pentol (bouton)
New Window (jendela baru). Tindakan tersebut akan membuka jendela baru, yang dapat
digunakan untuk menulis naskah program Python. Sekarang kita mulai:

1 baris1 = ‘Selamat datang pengembang Python’


2 baris2 = ‘Selamat datang di dunia Python’
3 print(baris1)
4 print(baris2)

Program ini terdiri dari empat pernyataan, satu di setiap baris. Baris 1 dan 2 merupakan
pernyataan penetapan (assignment), sedangkan baris 3 dan 4 merupakan panggilan terhadap
fungsi print(),untuk mencetak hasil di layar.

Perhatian! Nomor di awal baris cuma sebagai petunjuk, tidak ditulis di dalam program.

Begitu selesai mengetik, anda dapat menjalankan program tersebut. Anda dapat menekan tombol
F5 di papan kunci (keyboard) komputer, atau anda dapat mengeser tetikus (mouse) untuk
mengeklik di banderol Run (jalankan) lalu diikuti dengan pentol Run Module (jalankan modul).

Anda akan diminta untuk menyimpan program terlebih dahulu di dalam suatu warkah (file);
nama warkah harus berakhiran .py. Kalau anda bekerja dalam lingkungan Windows, anda perlu
menambah sendiri akhiran .py, karena Windows tidak memberikannya secara otomatis. Setelah
anda menyimpan warkah (misalnya, selamatDatang.py di dalam salah satu berkas (folder),
misalnya kode di dalam salah satu hala (directory)) program akan dilaksanakan dan hasilnya
dicetak di dalam cangkang interaktif (interactive shell):

==================== RESTART: C:/kode/selamatdatang.py ===================


Selamat datang pengembang Python
Selamat datang di dunia Python
Penerjemah Python telah melaksanakan semua pernyataan di dalam program secara beraturan
dari baris ke 1 hingga baris ke 4. Gambar 5.1 memperlihatkan bagan alir (flowchart) dari
program ini. Bagan alir adalah sebuah diagram yang menggambarkan aliran pelaksanaan dari
sebuah program. Dalam contoh ini, bagan alir menunjukkan bahwa ke empat pernyataan
tersesbut dilaksanakan secara berurutan dari atas ke bawah.

baris1 = ‘Selamat datang pengembang Python’

baris2 = ‘Selamat datang di dunia Python’

print(baris1)

print(baris2)

Gambar 7.1 Bagan alir program selamat datang.py

Perhatikan ketika kita melaksanakan program selamatDatang.py, penerjemah Python mencetak


garis ini sebelum menampilkan keluaran program

>>> =================== RESTART ======================

...

(Restart artinya memulai kembali)

Dengan memulai kembali, cangkang Python menghapus semua peubah yang telah ditentukan/
didefiniskan sejauh ini dalam cangkang. Hal ini dilakukan supaya program dapat dilaksanakan
dalam lingkungan cangkang yang dikembalikan ke keadaan prasetel (default) yang telah bersih
dari data sebelumnya.

Cangkang interaktif juga dapat dimulai kembali secara langsung dengan mengeklik banderol
Shell di bagian atas tengah, lalu kemudian mengeklik pentol Restart Shell (memulai kembali
cangkang).
Contoh, kita memeriksa dengan memulai lagi cangkang setelah peubah x ditetapkan pada nilai 7
atau ungkapan x mengambil nilai 7.

>>> x = 7
>>> x
7
>>>
============================== RESTART: Shell
=========================
>>> x
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
x
NameError: name 'x' is not defined
(GalatNama: nama “x” tidak didefinisikan)

Perhatikan bahwa, walaupun nilai 7 telah ditetapkan sebelumnya pada peubah x, namun setelah
cangkang dimulai lagi, x tidak lagi ditentukan/ didefinisikan.

Warkah selamatDatang.py yang kita buat dan simpan adalah contoh dari modul Python yang
ditentukan/ didefinisikan oleh pengguna (user-definedPython module). Dalam Bab 6 kita telah
menggunakan istilah modul untuk menjelaskan tentang komponen Perpustakaan Baku (Standard
Library) yang sudah terpasang (built-in) seperti math, fractions, dan turtle. Modul seperti itu
disebut modul Python yang terpasang. Apa kesamaan antara modul selamatDatang.py dengan
modul terpasang?

Modul adalah sebuah warkah yang mengandung kode Python. Setiap warkah yang mengandung
kode Python dan nama berakhir dengan .py adalah modul Python. Warkah selamatDatang.py
adalah sebuah modul. Demikian juga dengan warkah math.py, fractions.py dan turtle.py yang
tersembunyi dalam suatu berkas (folder) dalam komputer anda, dan memperkerjakan komponen
Perpustakaan Baku yang berkaitan.

Kode yang ada di dalam modul, ditujukan untuk dilaksanakan. Sebagai contoh, ketika kita
menjalankan selamatDatang.py dengan menekan tombol F5, kode yang ada dalam modul akan
dilaksanakan mulai awal hingga akhir. Ketika kita melaksanakan pernyataan impor seperti math
atau turtle, tindakan ini mirip seperti menekan tombol F5. Ketika kita melaksanakan:

>>> import math

kode yang ada dalam warkah math.py dilaksanakan. Kode Python itu menentukan serangkaian
fungsi matematika. Demikian juga dengan modul turtle.py yang menentukan berbagai fungsi
gambar, dan modul fraction.py yang menentukan fungsi pecahan.
7.2 Gubahan (composition) program/ aturcara

Salah satu tuturan (feature) yang sangat penting dari bahasa pemrograman adalah
kemampuannya untuk mengambil satu bongkah kecil program untuk menyusunnya ke dalam
keping yang lebih besar. Kita sudah tahu bagaimana meminta pengguna untuk mengetik
masukan; bagaimana mengubah untaian ke dalam bilangan riil; bagaimana menulis ungkapan
yang rumit; mencetak sebuah nilai; dlsb. Sekarang kita akan menggabungkan kemampuan itu
dalam sebuah program yang terdiri dari empat langkah yang meminta pengguna untuk
memasukkan nilai bagi jari-jari sebuah lingkaran, dan kemudian menghitung luas lingkaran
tersebut menurut rumus:

A = r2 ,  = 22/7

Penulisan kode dalam 4 langkah:

1 pertanyaan = input("Berapa panjang jari-jari?")


2 r = float(pertanyaan)
3 luas_lingkaran = 22/7 * r ** 2
4 print("Luas lingkaran adalah : ", luas_lingkaran, “m2”)
(catatan : fungsi float() adalah pembangun nilai bilangan riil)

Kalau program itu kita jalankan, tampilannya meminta kita memasukkan angka. Misalkan kita
masukkan angka 2 dan berdasarkan masukan itu dihitung luas lingkaran:

Berapa panjang jari-jari?2


Luas lingkaran adalah : 12.571428571428571 m2

Program empat langkah di atas dapat dipadatkan hanya menjadi dua langkah, dengan cara
memasukkan baris 1 ke dalam baris 2 dan baris 3 ke dalam baris 4:

1 r = float(input(“Berapa panjang jari-jari?”))


2 print(“Luas lingkaran adalah : “, 22/7 * r ** 2 , “m2”)

Sebenarnya, program itu dapat diperas lagi ke dalam satu pernyataan saja:

print(“Luas lingkaran adalah : “, 22/7 * float (input(“Berapa panjang jari-jari? ))**2, “m2”)

Program tersebut sulit untuk dibaca kembali oleh manusia (ketika kelak ingin dibetulkan atau
ketika fase pemeliharaan berlangsung), tetapi hanya menggambarkan sejauh mana kita bisa
menyusun sekeping program dengan menggabungkan bongkahan-bongkahan lebih kecil dari
program.

Pedoman terbaik dalam penyusunan kode program adalah sesederhana mungkin yang
memudahkan dibaca lagi dengan mudah oleh penulis kode sendiri, dan orang lain yang akan
membacanya kelak, ketika fase pemeliharaan atau pengembangan dilakukan. Dalam contoh di
atas, yang terbaik dalam hal mudah dibaca dan dimengerti, adalah program 4 langkah.

Beberapa filsafat dasar penulisan kode dalam bahasa Python yaitu:

 Keindahan lebih baik dari kejelekan


 Sederhana lebih baik dari rumit
 Rumit lebih baik dari pelik
 Mudah dibaca benar-benar sangat penting
 Ada satu cara – lebih disukai; hanya satu cara – yang paling sederhana untuk
menyelesaikan masalah.
 Sekarang lebih baik dari nanti. Jangan menghabiskan umur untuk mempelajari seluk
beluk bahasa pemrograman tanpa menghasilkan sebuah program. Lebih baik sekarang
langsung saja menulis sebuah program yang dapat diterapkan. Nanti program tersebut
akan dapat disempurnakan lagi ketika kita tahu cara-cara yang lebih baik.

7.3 Fungsi di dalam pemrograman /pengaturcaraan berazas prosedur

Fungsi adalah kumpulan dari perintah pemograman yang dapat digunakan berkali-kali, tanpa
perlu menyusun lagi perintah-perintah yang terkandung dalam program tersebut, untuk mengolah
data yang baru.

Fungsi terpasang print()

Fungsi print() sudah terpasang dalam menu utama penerjemah Python, sehingga tidak perlu
diimpor dari modul lain. Program selamatDatang.py menggunakan fungsi print() dalam dua
baris petunjuk (instruction). Fungsi ini mencetak apa saja hujjah (argument) atau parameter yang
diberikan, ke dalam cangkang interaktif. Sebagai contoh, jika diberikan hujjah angka, dia akan
mencetak angka:

>>> print(0)
0

Sama halnya, jika diberikan daftar, dia akan mencetaknya:

>>> print([0, 1, 9])


[0, 1, 9]

Hujjah berupa untaian (string) akan dicetak tanpa tanda kutip:

>>> print (‘dua’)


dua

Jika hujjah mengandung sebuah ungkapan, ungkapan tersebut akan dinilai terlebih dahulu dan
hasilnya akan dicetak:

>>> x = 9
>>> print(x)
9

Perhatikan bahwa dalam program selamatDatang.py, setiap pernyataan print() „mencetak‟


hujjah setiap ungkapan pada baris yang terpisah.

Masukan (input) interaktif denganinput()

Seringkali ketika program dijalankan, interaksi dengan pengguna dibutuhkan. Fungsi input()
digunakan untuk keperluan tersebut. Fungsi itu selalu digunakan di sebelah kanan pernyataan
penetapan, seperti berikut:

>>> x = input(‘Ketik nama depan anda :’)

Ketika Python melaksanakan fungsi print() ini, Python pertama kali akan mencetak hujjah
masukan (untaian ‘Masukkan nama depan anda:’) di dalam cangkang:

Ketik nama depan anda:

lalu Python akan menghentikan pelaksananaan dan menunggu pengguna untuk mengetik sesuatu
di papan kunci (keyboard). Untaian yang tercetak „Ketik nama depan anda:‟ pada hakekatnya
adalah sebuah jeraus (ajakan perintah /prompt). Ketika pengguna mengetik sesuatu dan menekan
tombol Enter di papan kunci, pelaksanaan akan dimulai lagi dan apa saja yang diketik oleh
pengguna akan ditetapkan pada peubah nama:

>>> nama = input(‘Ketik nama depan anda:’)


Ketik nama depan anda: Budiman
>>> nama
‘Budiman’

Perhatikan bahwa Python memperlakukannya sebagai untaian apa saja yang diketik oleh
pengguna (misalnya dalam hal ini ‘Budiman’).

Fungsi input() ditujukan untuk digunakan dalam program. Kita akan membuat program
sapaanPribadi.py dan meminta pengguna untuk memasukkan nama dan nama marga, lalu
mencetak sapaan pribadi di layar.

1 namaDepan = input(‘Ketik nama depan anda:’)


2 namaMarga = input(Ketik nama marga anda:’)
3 baris1 = ‘Assalamualaikum’ namaDepan ‘’ namaMarga ‘…’
4 print(baris1)
5 print(‘Selamat datang ke dunia Python!’)

Ketika kita menjalankan program ini, pernyataan baris pertama akan dilaksanakan pertama kali;
Python mencetak „Ketik nama depan anda:‟ dan menyela pelaksanaan program hingga
penggunan mengetik sesuatu dan menekan tombol Enter. Apa saja yang diketik oleh pengguna
akan ditetapkan pada peubah namaDepan. Pernyataan pada baris ke dua sama dengan baris
pertama. Pada baris ke tiga, penyambungan (concatenation) untaian digunakan untuk membuat
sapaan yang akan dicetak pada baris ke empat. Ini hasil dari program sapaanPribadi.py :

>>>
Ketik nama depan anda : Budiman
Ketik nama marga anda : Hasibuan
Assalamualaikum Budiman Hasibuan …
Selamat datang ke dunia Python!

Fungsi input() mengembalikan untaian

Kita baru saja melihat ketika fungsi input() dipanggil, apa saja yang diketik oleh pengguna akan
diperlakukan sebagai untaian (string). Mari kita lihat apa yang akan terjadi bila yang diketik
adalah angka:

>>> x = input(‘Masukkan nilai untuk x:’)


Masukkan nilai untuk x : 3
>>> x
‘3’

Penerjemah Python tetap saja memperlakukan nilai yang dimasukkan sebagai untaian „3‟, bukan
sebagai bilangan bulat 3. Kita dapat mengeceknya:

>>> x == 3
False
>>> x == ‘3’
True

Fungsi input() akan selalu memperlakukan apa saja yang diketik oleh pengguna sebagai untaian.

Fungsi eval()
Jika anda mengharapkan pengguna memasukkan nilai yang bukan untaian, anda harus meminta
Python secara eksplisit untuk menjadikannnya sebagai nilai. Untuk itu kita mengetik ungkapan
Python dengan menggunakan fungsi eval() , (dari kata evaluate = menilai)

Fungsi eval() mengambil untaian sebagai masukan dan menjadikan nilai untaian tersebut
sebagai ungkapan Python. Misal:

>>> eval(‘2’)
2
>>> eval(‘2 8’)
10
>>> eval (‘len([2, 9, 4, 2, 1]’)
5

Fungsi eval() dapat digunakan secara bersama-sama dengan fungsi input() ketika kita
mengharapkan pengguna mengetik ungkapan( angka, daftar, jumlah, dsb) ketika diminta.
Hasilnya yaitu apa saja yang diketik oleh pengguna akan diperlakukan sebagai sebuah ungkapan.
Sebagai contoh, bagaimana kita menjamin bahwa apa yang dimasukkan oleh penggunaa akan
diperlakukan sebagai angka:

>>> x = eval (input(‘Masukkan nilai x :’))


Masukkan nilai x : 7

Kita dapat mengecek bahwa yang dimasukkan benar-benar sebuah angka bukan untaian:

>>> x == 7
True
>>> x == ‘7’
False

Contoh: Perhitungan pajak penjualan barang

Menurut aturan perpajakan baru, toko harus mencantumkan secara jelas di atas faktur jumlah
pajak yang dibayar oleh pembeli. Karena itu toko tersebut meminta anda untuk membuat
program yang dapat menghitung nilai pajak secara otomatis. Misalnya tarif pajak 25% atau 0.25

1 jumlah_barang = eval(input("Berapa jumlah barang yang dibeli? "))


2 harga_per_barang = eval(input("Berapa harga barang? "))
3 nilai_penjualan = jumlah_barang * harga_per_barang
4 tarif_pajak = 0.25
5 pajak_penjualan = nilai_penjualan * tarif_pajak
6 harga_seluruhnya = nilai_penjualan + pajak_penjualan
7 print('Harga seluruhnya :', 'Rp', harga_seluruhnya)
8 print('Sudah termasuk pajak penjualan :', 'Rp', pajak_penjualan)

Misalkan anda membeli 3 buah barang dengan harga Rp 1.500 per buah maka hasil perhitungan
yaitu:

Berapa jumlah barang yang dibeli? 3


Berapa harga barang per buah? 400
Harga seluruhnya : Rp 1500.0
Sudah termasuk pajak penjualan : Rp 300.0

Contoh: Perhitungan cicilan pinjaman

1 # Perhitungan cicilan pinjaman


2
3 tingkatBungaTahunan = eval(input("Masukkan tingkat bunga tahunan,
misal 10.5 : "))
4 tingkatBungaBulanan = tingkatBungaTahunan / 1200
5
6 # Masukkan jangka waktu pinjaman
7 jumlahTahunPinjaman = eval(input("Masukkan berapa tahun pinjaman dalam
bilangan bulat, misal 3 : ") )
8
9# Masukkan jumlah pinjaman
10 jumlahPinjaman = eval(input("Masukkan jumlah pinjaman, misal 5000.5 : "))
11
12# Hitung pembayaran
13 cicilanBulanan = jumlahPinjaman * tingkatBungaBulanan / ( 1 - (1 /
( 1 + tingkatBungaBulanan) ** (jumlahTahunPinjaman * 12) ) )
14 pembayaranKeseluruhan = cicilanBulanan * jumlahTahunPinjaman * 12
15
16# Tampilkan hasil
17 print("Cicilan bulanan adalah :" , int(cicilanBulanan * 100) / 100 )
18 print("Jumlah pembayaran keseluruhan : ",
int(pembayaranKeseluruhan * 100) / 100 )

(Catatan : pada baris 4, tingkat bunga bunga bulanan adalah tingkat bunga tahunan dalam persen
dibagi 1200, atau tingkat bunga tahunan dalam bentuk desimal, misalnya 0.105 dibagi 12 bulan.
Baris 13 adalah rumus baku perhitungan cicilan pembayaran kredit dari ilmu keuangan. Pada
baris 17 dan 18, fungsi int (integer = bilangan bulat) digunakan dengan 100/100 untuk
menampilkan 2 angka setelah koma.)

Hasil : Misalkan Habib ingin mengambil kredit Rp 10 juta rupiah untuk membeli sepeda motor,
dengan tingkat bunga 15% per tahun dan jangka waktu pengembalian 4 tahun.

Masukkan tingkat bunga tahunan, misal 10.5 : 15


Masukkan berapa tahun pinjaman dalam bilangan bulat, misal 3 : 4
Masukkan jumlah pinjaman, misal 5000.5 : 10000000
Cicilan bulanan adalah : 278307.48
Jumlah pembayaran keseluruhan : 13358759.16

Habib harus menyicil sebesar Rp 278.307 setiap bulan dan keseluruhan kredit yang harus
dikembalikan adalah Rp 13.358.760,- dalam waktu 4 tahun.

7.4 Fungsi yang ditentukan /didefinisikan oleh pengguna

Kita telah melihat dan menggunakan beberapa fungsi terpasang yang ada dalam menu utama
penerjemah Python. Misal: print, type, input, eval, int, str, dll.

Fungsi len(), misalnya, mengambil sebuah urutan (katakanlah sebuah untaian atau daftar),
melalukan (passing) nilai yang diambil dari hujjah ke dalam fungsi dan mengembalikan nilai
baru (jumlah bilah/ benda yang ada dalam urutan):

>>> len(‘IPA’)
3
>>> len([‘matematika’, ‘biologi’, ‘IPA’, ‘IPS’])
4

Fungsi max() dapat mengambil dua angka atau lebih sebagai masukan (input), melalukannnya
ke dalam fungsi dan mengembalikan nilai maksimum dari angka-angka tersebut:

>>>max(2, -12)
2

Fungsi min(), berkebalikan dengan fungsi max():


>>>min(2, -12, 10)
-12

Fungsi sum() dapat mengambil sebuah daftar angka sebagai masukan dan mengembalikan
jumlah dari angka-angka tersebut:

>>> sum([2, 3, 1, -9])


-3

Bahkan, sejumlah fungsi dapat dipanggil tanpa hujjah (argument) atau parameter:

>>> print()
Secara umum, sebuah fungsi mengambil 0 atau lebih hujjah sebagai masukan, melalukannya ke
dalam fungsi, dan mengembalikan sebuah hasil. Suatu hal yang sangat berguna dari fungsi yaitu :
Fungsi dapat dipanggil, dengan menggunakan pernyataan satu baris, untuk menyelesaikan tugas
yang sebenarnya memerlukan sejumlah pernyataan Python.

Bahkan lebih jauh lagi, biasanya pengembang yang menggunakan fungsi tidak perlu tahu
pernyataan-pernyataan di dalam fungsi tersebut. Mengingat pengembang tidak perlu perduli
tentang bagaimana fungsi bekerja, fungsi menyederhanakan pekerjaan pengembangan program.
Karena alasan inilah, Python dan bahasa pemrograman lain memberikan kesempatan kepada
pengguna untuk menentukan/ mendefinisikan sendiri fungsi-fungsi yang mereka perlukan.

Contoh:

Kita ingin membuat sebuah fungsi yang menghitung luas sebuah lingkaran tanpa perlu terus
menerus menuliskan rumus luas lingkaran , A = 3.14 * r **2; r adalah panjang jari-jari, dan 3.14
adalah  = 22/7:

>>> def ling(r):


return 3.14 * r ** 2

Misalkan kita masukkan panjang jari-jari 2

>>> ling(2)
12.56

Sekarang kita coba r= 200:

>>>ling(200)
125600.0

Dalam bentuk yang umum, pernyataan definisi fungsi Python adalah:

def function name (0 or more variables)


indented body function
(def nama fungsi ( 0 atau lebih peubah))
(badan fungsi yang tertakuk)

Pernyataan definisi fungsi dimulai dengan kata kunci def (define = tentukan, definisikan ).
Berikutnya diikuti oleh nama fungsi; dalam contoh di atas adalah ling. Setelah nama dan di
dalam kurung adalah nama peubah yang juga berperan sebagai hujjah masukan atau parameter
masukan, jika ada. Dalam fungsi f(x), x di dalam def f(x): memiliki peran yang sama seperti x
dalam fungsi matematika f(x): yaitu melayani nama untuk nilai masukan.
Baris pertama dari definisi fungsi berakhir dengan titik dua. Di bawahnya dan baris yang
tertakuk adalah badan fungsi, yaitu satu himpunan pernyataan (bongkah kode) Python yang
mewujudkan tugas fungsi. Himpunan pernyataan tersebut dilaksanakan kapan saja fungsi
dipanggil. Jika fungsi ditujukan untuk mengembalikan nilai, pernyataan pengembalian
digunakan untuk menjelaskan nilai yang dikembalikan. Dalam contoh di atas, nilai r2
dikembalikan berdasarkan nilai x yang dimasukkan.

print() versus return

Contoh lain dari fungsi yang ditentukan oleh pengguna:

Kita membuat fungsi Apa kabar ? yang dipribadikan sesuai dengan nama. Fungsi ini mengambil
masukan nama (sebuah untaian) dan mencetak sapaan:

>>> sapa(‘Ibu’)
Apa kabar Ibu ?

Kita dapat mewujudkan fungsi ini dalam modul yang sama seperti f():

>>>def sapa(nama):
print('Apa kabar, ' + nama + ' ?')

Ketika fungsi sapa() dipanggil , ia akan mencetak gabungan dari untaian ‘Apa kabar ’, untaian
masukan, dan untaian ‘?’.

Perhatikan bahwa fungsi sapa() mencetak keluaran di layar, dia tidak mengembalikan sesuatu.
Apa beda antara panggilan fungsi print() dan fungsi return (mengembalikan) sebuah nilai?

Pernyataan return versus Fungsi print()

Kesalahan yang sering terjadi adalah menggunakan fungsi print() ketimbang pernyataan return
dalam sebuah fungsi. Misalkan kita mendefinisikan fungsi f()dengan cara ini:

def f(x) :
print (3.14 * x ** 2)

Kelihatannya perwujudan fungsi f() bekerja baik, misalnya ketika kita lalukan hujjah 2:

>>> f(2)
12.56

Namun, kalau kita menggunakan fungsi itu dalam ungkapan yang lain, fungsi f() tidak bekerja
seperti yang diharapkan. Misal:
>>> 3 * f(2) + 1
12.56
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
3 * f(2) + 1
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
(JenisGalat: jenis operan yang tidak mendukung untuk * : „int‟ dan „NoneType‟)

Ketika menilaikan f(2) dalam pernyataan 3 * f(2) + 1, penerjemah Python menilaikan (yaitu
melaksanakan) f(2), sehingga mencetak nilai 12.5. Anda dapat melihat angka 12.5 pada baris
sebelum pesan galat “Traceback …”. Padahal nilai yang kita harapkan adalah 38.68.

Jadi f() mencetak nilai yang dihitung, tetapi tidak mengembalikannya untuk dijumlahkan di
dalam pernyataan. Ini berarti bahwa f(2) mengembalikan tiada (none) dan karena itu menilaikan
pada tiada di dalam ungkapan. Sebenarnya , Python memiliki sebuah nama untuk jenis “tiada”
yaitu ‘NoneType‟ (JenisTiada) yang dirujuk pada pesan galat di atas. Galat di atas sendiri
disebabkan karena percobaan untuk mengalikan nilai „bilangan bulat‟ (int) dengan „JenisTiada‟
(NoneType).

Kita boleh saja memanggil print() di dalam sebuah fungsi, selama tujuannya untuk mencetak,
bukan untuk mengembalikan nilai.

Sekarang kita utak-atik lagi kode di atas dengan fungsi return() :

>>> def f(x):


return(3.14 * x ** 2)

>>> 3 * f(2) + 1
38.68

Menentukan fungsi main (utama)

Dalam sebuah naskah program yang meliputi penentuan sejumlah fungsi yang saling bekerja
sama, adalah suatu hal yang sangat bermanfaat bila kita mendefinisikan fungsi yang dinamakan
main yang berperan sebagai titik masuk bagi naskah. Fungsi main tidak mengharapkan hujjah
dan tidak mengembalikan nilai. Kegunaannnya hanya untuk mengambil input, mengolahnya
dengan cara memanggil fungsi lain, dan mencetak hasil. Penentuan fungsi main dan penentuan
fungsi lainnya dapat muncul diurutan mana saja di dalam naskah, asal main() dipanggil di baris
paling akhir dari naskah.

Contoh berikut menunjukkan bagaimana naskah yang lengkap disusun menurut tata cara yang
dijelaskan di atas untuk menghitung kecepatan benda yang bergerak:

1 # cara kerja fungsi main


2
3 def main():
4 # fungsi main untuk naskah ini
5
6 jarakTempuh = float(input("Masukkan jarak tempuh : "))
7 waktuTempuh = float(input("Masukkan waktu tempuh : "))
8 kecepatan = hasil(jarakTempuh, waktuTempuh)
9
10 print("Kecepatan yang ditempuh dengan jarak ", jarakTempuh,
"km dalam waktu", waktuTempuh, "jam, adalah", kecepatan, "km/jam")
11
12 def hasil(jarakTempuh, waktuTempuh):
13 return jarakTempuh/waktuTempuh
14
15 # titik masuk untuk pelaksanaan program
16 main()

Hasil yang diperoleh ketika program dijalankan berdasarkan data yang dimasukkan yaitu
masing-masing 50 dan 10 :

Masukkan jarak tempuh dalam kilometer : 50


Masukkan waktu tempuh dalam jam : 10
Kecepatan yang ditempuh dengan jarak 50.0 km dalam waktu 10.0 jam,
adalah 5.0 km/jam

Fungsi main dalam kode di atas mengajak pengguna untuk memasukkan angka, memanggil
fungsi kecepatan untuk menghitung nilai kecepatan dari angka yang dimasukkan dan mencetak
hasil tersebut. Kita dapat menentukan (mendefinisikan) fungsi main dan fungsi kecepatan
menurut urutan sembarang.

Ketika Python memuat program ini, kode yang ada dalam kedua penentuan fungsi tersebut di
muat dan dikepul (compiled), tetapi tidak dijalankan. Kemudian, pada baris yang paling akhir
dari naskah, fungsi main dipanggil. Hal ini menimbulkan dampak yang mengalihkan kendali
kepada perintah pertama di dalam penentuan fungsi main. Ketika kecepatan dipanggil dari
main, kendali dialihkan dari main, ke perintah pertama dalam kecepatan . Ketika sebuah
fungsi menyelesaikan pelaksanaan, kendali kembali ke perintah berikut di dalam kode
pemanggil.

Setelah program selesai dijalankan, kita dapat menyuruh Python untuk menjalankan lagi program
tersebut dengan hanya mengetik main () dalam cangkang interaktif. Misalkan kali ini kita
masuk angka yang berbeda :

main()
Masukkan jarak tempuh dalam kilometer : 100
Masukkan waktu tempuh dalam jam : 4
Kecepatan yang ditempuh dengan jarak 100.0 km dalam waktu 4.0 jam,
adalah 25.0 km/jam
Contoh lain: Membuat penghitung akar persamaan kuadrat.

Kalau kita mengetahui sebuah rumus, kita dapat dengan mudah membuat sendiri metode
penghitungan rumus tersebut. Misalkan kita mencari akar pesamaan kuadrat dari y = a + bx + cx2

1 def akar_kwadrat(a, b, c):


2 D = (b*b – 4 * a * c)**0.5
3 x_1 = (-b + D) / (2*a)
4 x_2 = (-b – D) / (2*a)
5
6 print(‘x1 = ‘ x_1)
7 print(‘x2 = ‘ x_2)
8
9 if __name__ == ‘__main__’:
10 a = input(‘Masukkan nilai a: ‘)
11 b = input(‘Masukkan nilai b : ‘)
12 c = input(‘Masukkan nilai c : ‘)
13 akar_kwadrat(float(a), float(b), float(c))
Catatan: Ungkapan if __name__ == ‘__main’: pada baris 9 artinya jika kode ini dilaksanakan
sebagai naskah utama, maka laksanakan fungsi ini. Ungkapan if__name__== ‘__main’: dapat
digantikan dengan def main():, tetapi harus ditutup dengan ungkapan main() di baris paling
akhir yakni:

1 def akar(a, b, c):


2 D = (b**b - 4*a*c)**0.5
3 x_1 = (-b + D)/(2*a)
4 x_2 = (-b - D)/(2*a)

6 print('x1 = ', x_1)


7 print('x2 = ', x_2)
8
9 def main():
10 a = input('Masukkan nilai a : ')
11 b = input('Masukkan nilai b : ')
12 c = input('Masukkan nilai c : ')
13 akar(float(a), float(b), float(c))
14
15 main()

Misalkan kita menghitung persamaan y= 2 + 3x + 4x2 ; hasilnya yaitu:

Masukkan nilai a : 2
Masukkan nilai b : 3
Masukkan nilai c : 4
x1 = (-0.75+0.5590169943749475j)
x2 = (-0.75-0.5590169943749475j)
(Akar persamaan tersebut adalah bilangan rumit)
Dapat dilihat bahwa asal rumusnya diketahui, komputer dapat diperintahkan dengan mudah
untuk menghitung segala macam persoalan matematika. Yang paling sukar adalah membuat
perumusan masalah (peniskalaan/abstraction) dari persoalan yang kita hadapi dalam kenyataan,
yaitu membuat rumus matematika yang dapat difahami oleh komputer, sehingga persoalan kita
dapat terpecahkan.

Misal: menghitung nilai sekarang (present value)

Kalau sebuah gejala tumbuh menurut deret hitung, misalnya pertumbuhan bakteri dalam satu
koloni, pertumbuhan simpanan berbunga di bank, dsb., kita dapat dapat menghitung nilainya di
masa mendatang (FV, future value) asal kita mengetahui tingkat pertumbuhan (r, rate of growth),
dan masa pertumbuhan (t, time).

Kita menggunakan rumus :

FP = PV(1 + r )t ,

dimana PV adalah nilai sekarang (present value).

Sebaliknya kita juga bisa menghitung PV dengan mengubah rumus di atas menjadi:

PV = FP/(1+ r)t .

Artinya bila kita ketahui nilai akhirnya sebesar FV, kita dapat mengetahui nilai awalnya sebesar
PV. Ini programnya:

1 def pv_f(fv, r, t):


2 pv = fv/(1 + r)**t
3
4 print('nilai sekarang = ', round(pv))
5
6 if __name__ == '__main__' :
7 fv = input('Masukkan nilai fv : ')
8 r = input('Masukkan nilai r : ')
9 t = input('Masukkan nilai t : ')
10 pv_f(float(fv), float(r), float(t))
(Catatan : round(pv) adalah fungsi untuk membulatkan nilai.)

Misalkan kita membutuhkan paling sedikit 2 milyar bakteri A untuk tercapainya kondisi yang
prima suatu proses fermentasi bahan obat, yang akan akan kita lakukan dalam dua hari
mendatang. Kita memiliki data bahwa bakteri A berkembang biak dengan membelah diri setiap
dua jam sekali dalam keadaan nutrisi yang optimal.

Berdasarkan informasi yang kita miliki, bakteri A membelah diri atau melipatgandakan
jumlahnya dalam dalam dua jam sekali. Jadi tingkat pertumbuhannya adalah (2 - 1) / 1 = 1 atau
100% per dua jam ( 0.5 atau 50% per jam). Sedangkan masa perkembang-biakan yang
berlangsung adalah 2 hari atau 48 jam.

Kita bisa menghitung jumlah bakteri yang harus dibiakkan dengan melaksanakan program di atas
dengan memasukkan input sesuai dengan yang dibutuhkan oleh program:

Masukkan nilai fv : 2000000000


Masukkan nilai r : 0.5
Masukkan nilai t : 48
Nilai sekarang = 7

Jadi saat ini kita hanya perlu membiakkan 7 ekor saja bakteri A dan menyediakan nutrisi yang
cukup untuk mendapatkan bakteri paling sedikit 2 milyar ekor dalam dua hari mendatang. Kalau
kita biakkan lebih dari 7 ekor, perkembangannya akan cepat sekali dan bila nutrisi dan keadaan
tidak optimal, banyak bakteri akan mati. Bisa-bisa tujuan untuk menyediakan 2 milyar ekor
bakteri tidak tercapai.

(Sebenarnya, pertumbuhan seperti ini adalah suatu keadaan ideal, sesuatu yang tidak mungkin
ada dalam kenyataan, karena tidak ada yang dapat tumbuh secara terus menerus tanpa batas.
Bakteri misalnya dapat saja mati, walaupun telah disediakan nutrisi yang cukup dan lingkungan
yang optimal, sehingga sasaran hasil 2 milyar bakteri seperti dalam contoh di atas bisa tidak
tercapai. Berdasarkan kenyataan itu, pembungaan uang diharamkan oleh Al Quran, karena dapat
menimbulkan eksploitasi oleh pemilik modal kepada peminjam. Bayangkan dasyhatnya sistem
bunga berbunga (bunga majemuk), kalau pinjam Rp 7 harus bayar Rp 2 milyar .)

7.5 Pelaksanaan tatanan kendali (control structure)

Sebuah program Python adalah sebuah urutan pernyataan yang dilaksanakan secara beruntun.
Dalam naskah program pendek yang kita lihat sejauh ini, urutan pernyataan dilaksanakan, dalam
urutan mulai dari pernyataan di baris pertama hingga baris terakhir dan tidak tergantung dari
nilai masukan yang diketik oleh pengguna.

Namun, dalam kenyataan kadang-kadang diperlukan pernyataan untuk mengendalikan aliran


program ke arah tertentu tergantung pada kenyataan yang berlangsung. Hal seperti itu lazim
terjadi ketika kita menggunakan terapan (application) komputer. Terapan komputer biasanya
melakukan hal yang berbeda tergantung dari nilai masukan yang diberikan. Misalnya di akhir
permainan video, kita diminta untuk mengeklik pentol Exit (keluar) atau Play Again (main lagi),
dan pelaksanaan terapan tersebut tergantung dari pilihan masukan yang anda klik. Untuk itu, kita
memerlukan perintah yang mampu menguji sejumlah keadaan yang terjadi dan merombak aliran
pemograman untuk tidak hanya bergerak dari baris pertama hingga terakhir.

Misalkan , kita menggunakan fungsi berikut yang memberikan pilihan kepada pengguna untuk
memilih bujur sangkar atau kubus. Tugas yang dilaksanakan tergantung dari kendali pengguna.
1 s = input(‘Masukkan bujur sangkar atau kubus; ’)
2 if s == ‘bujur sangkar’:
3 def f(x):
4 return x*x
5 else:
6 def f(x)
7 return x * x * x

Di dalam program di atas, fungsi f() ditentukan/ didefinisikan di dalam program Python, sama
halnya seperti pernyataan penetapan yang dapat berada di dalam sebuah program. Definisi
sebenarnya dari f() tergantung dari masukan yang diketik oleh pengguna pada saat pelaksanaan.
Dengan mengetik bujur sangkar setelah ajakan perintah, fungsi f() ditentukan sebagai kwadrat:

>>>
Masukkan bujur sangkar atau kubus: bujur sangkar
>>> f(3)
9

Tetapi kalau yang dimasukkan adalah kubus, fungsi f() ditentukan sebagai pangkat tiga:

>>>
Masukkan bujur sangkar atau kubus: kubus
>>> f(3)
27

Contoh lain adalah membuat kriteria kelulusan yang hasilnya tergantung dari nilai yang
dimasukkan:

1 nilai = eval(input('Masukkan angka : '))


2 if nilai > 70 :
3 print('Selamat anda lulus')
4 elif nilai < 60:
5 print('Gagal: anda perlu belajar lebih serius lagi di semester depan')
6 else:
7 print('Mohon ikut ujian susulan')
Catatan : if (jika) , elif (else if) (jika lain) , else (selain itu).

Misalkan kita masukkan nilai 56

masukkan angka : 56
Gagal: anda perlu belajar lebih serius lagi di semester depan

Kalau kita ketik angka 56 yang dilaksanakan adalah baris ke 5, kalau kita ketik angka 90 yang
dijalankan adalah baris ke 3, dsb. Jadi aliran instruksi yang berlangsung sesuai dengan input
yang dimasukkan . Dengan membuat tatanan seperti ini kita dapat mengendalikan aliran perintah
dari sebuah program.

Sekarang kita membahas pernyataan Python yang dapat mengendalikan pernyataan mana yang
akan dilaksanakan dan juga pernyataan mana yang akan dilaksanakan berulang kali.

7.6 Keputusan satu arah (one-way decision)

Sekarang kita mengembangkan program yang akan meminta pengguna memasukkan suhu yang
sedang berlangsung dan kemudian mencetak pesan hanya jika suhu berada di atas 35 derajat
Celsius. Jika pengguna memasukkan nilai 36, Python akan mencetak hasil pelaksanaan program
yaitu:

>>>
Masukkan suhu yang sedang berlangsung : 36
Aduh, panas sekali!
Jangan lupa minum yang cukup!

Hasil yang berbeda akan dicetak bila pengguna memasukkan nilai : 25

>>>
Masukkan suhu yang sedang berlangsung: 25

Tidak ada pesan yang dicetak di layar, jika suhu berada di bawah 35 derajat. Jika suhu di atas 35
derajat baru muncul pesan :

Aduh, panas sekali!


Jangan lupa minum yang cukup!

Untuk mendapatkan perilaku yang dijelaskan di atas (yaitu pelaksanaan bersyarat atau menurut
pengandaian (conditional execution) dari sekeping kode) diperlukan suatu cara untuk
mengendalikan apakah melaksanakan kepingan kode di atas berdasarkan suatu keadaan : Jika
keadaan benar, kepingan kode dilaksananakan , jika keadaan selain itu, tidak dilaksanakan.

Pernyataan if (jika) digunakan untuk mewujudkan pelaksanaan bersyarat. Berikut ini adalah
penggunaan pernyataan if untuk mewujudkan program yang diharapkan:

1 suhu = eval(input(‘Masukkan suhu yang sedang berlangsung :’))


2
3 if suhu > 35:
4 print(‘Aduh panas sekali’)
5 print(‘Jangan lupa minum yang cukup’)
(Perhatikan bahwa penggunaan baris kosong di baris kedua adalah untuk membuat program lebih
mudah dibaca).

Pernyataan if merangkum baris ke tiga hingga ke lima di dalam program. Di dalam baris ke tiga,
kata kunci if diikuti oleh perandaian keadaan suhu > 35 . Jika keadaan dinilaikan True (benar),
pernyataan-pernyataan di bawah garis ke tiga akan dilaksanakan. Jika persyaratan suhu 35
dinilaikan False (salah/keliru), pernyataan di baris ke empat dan ke lima tidak dilaksanakan.
Gambar 7.2 menggambarkan (dengan tanda panah) dua aliran pelaksanaan yang mungkin untuk
program tersebut.

suhu = input(‘Masukkan suhu yang sedang berlangsung : ‘)

True
Suhu>35

print(‘Aduh panas sekali!’)

False
print(‘Jangan lupa minum yang cukup!’)

Gambar 7.2 Bagan alir program keputusan satu arah

Sekarang, kita menambah suatu tuturan / kegunaan (feature) baru pada program tersebut,
misalnya „Selamat jalan‟, sebelum program berakhir, apapun suhu yang dimasukkan oleh
pengguna, baik tinggi maupun rendah. Program tersebut perlu berperilaku seperti berikut ini:

>>>
Masukkan suhu yang sedang berlangsung : 40
Aduh panas sekali!
Jangan lupa minum yang cukup!
Selamat jalan!

Atau seperti ini


>>>
Masukkan suhu yang sedang berlangsung : 25
Selamat jalan!

Pernyataan print(‘Selamat jalan!’) perlu dilaksanakan setelah pernyataan if. Ini berarti
pernyataan print(‘Selamat jalan’) harus diletakkan dalam program pada baris setelah kelompok
kode if dan sejajar dengan takukan (indentation) baris pertama dari pernyataan if :

1 suhu = eval(input(‘Masukkan suhu yang sedang berlangsung :’))


2
3 if suhu > 35:
4 print(‘Aduh panas sekali’)
5 print(‘Jangan lupa minum yang cukup’)
6
7 print(‘Selamat jalan!’)

Setelah baris ke tiga dari program dilaksanakan, apakah bongkah kode yang tertakuk di baris 4
dan 5 dilaksanakan atau tidak, pernyataan di baris ke 7 akan dilaksanakan. Lihat Gambar 7.3 :

suhu = input(‘Masukkan suhu yang sedang berlangsung : ‘)

True
Suhu>35

print(‘Aduh panas sekali!’)

False
print(‘Jangan lupa minum yang cukup!’)

print(‘Selamat jalan!’)

Gambar 7.3 Bagan alir penambahan pernyataan print(‘Selamat jalan!’) dalam program .
Secara umum, bentuk dari pernyataan if adalah:

if condition:
indented block code
non-indented statement
(Jika keadaan : )
(bongkah kode yang tertakuk)
(bongkah kode tak-tertakuk)

Baris pertama dari pernyataan terdiri dari kata kunci if, yang diikuti oleh ungkapan Boole
(Boolean expression) keadaan (yaitu ungkapan yang menilaikan True atau False), yang
selanjutnya diikuti oleh titik dua yang menandakan akhir dari keadaan. Di bawah baris pertama,
terdapat baris tertakuk (indented) dibandingkan dengan kedudukan kata kunci if adalah bongkah
kode yang akan dilaksanakan, jika keadaan menilaikan True.

Jika keadaan menilaikan False, bongkah kode yang tertakuk akan dilewatkan. Apakah kode
yang tertakuk telah dilaksanakan atau belum, pelaksanaan setelah pernyataan Python itu akan
menjalankan secara langsung pernyataan tak-tertakuk.

Takuk (indentation)

Dalam Python, takuk dari pernyataan Python sangat penting. Bandingkan:

if suhu > 35:


print(‘Aduh panas sekali!’)
print(‘Jangan lupa minum yang cukup!’)
print(‘Selamat jalan!’)

dengan,

if suhu > 35:


print(‘Aduh panas sekali!’)
print(‘Jangan lupa minum yang cukup!’)
print(‘Selamat jalan!’)

Dalam penggalan (fragment) kode pertama, pernyataan print(‘Selamat jalan!’) memiliki takuk
yang sama dengan baris pertama dengan pernyataan if. Itu merupakan sebuah pernyataan yang
akan dilaksanakan setelah pernyataan if, tidak tergantung apakah keadaan pernyataan if benar
atau salah.

Sedangkan dalam kepingan kode kedua, pernyataan print(‘Selamat jalan!’) ditakuk


dibandingkan dengan kedudukan baris pertama yang mengandung pernyataan if. Karena itu,
pernyataan print(‘Selamat jalan!’) tersebut hanya akan dilaksanakan bila keadaan pernyataan if
benar. Bila if salah, komputer tidak akan mencetak apapun.

7.7 Keputusan dua arah (two-way decision)

Kehidupan kita penuh dengan keputusan yang harus di ambil yang meliputi dua pilihan.
Misalnya kalau uang banyak, kuliah di Jakarta, tetapi kalau uang sedikit kuliah di Jember. Kalau
musim hujan tanam padi tetapi kalau kalau musim kemarau tanam cabe; dlsb. Keputusan yang
diambil tergantung dari keadaan yang akan berlangsung. Dalam kasus di atas, apakah keadaan
kaya atau miskin; hujan atau kemarau, dlsb., akan menentukan pengambilan keputusan.

Untuk keputusan satu arah di dalam program, sebuah tindakan akan dikerjakan hanya jika
keadaan pernyataan if benar. Tidak ada tindakan apapun yang akan dilakukan bila keadaan salah.

Kadang-kadang kita ingin melaksanakan suatu tindakan bila keadaan benar, dan suatu tindakan
yang lain bila keadaan salah. Dalam kasus suhu di atas, kita ingin menyampaikan pesan yang
lain bila suhu di bawah 35 derajat Celsius. Kita dapat melakukannya dengan menggunakan versi
baru pernyataan if yang menggunakan klausa else (selain itu).

1 suhu = eval(input(‘Masukkan suhu yang sedang berlangsung :’))


2
3 if suhu > 35:
4
5 print(‘Aduh panas sekali’)
6 print(‘Jangan lupa minum yang cukup’)
7
8 else:
9
10 print(‘Nyaman!’)
11 print(‘Bawa baju hangat’)
12
13 print(‘Selamat jalan!’)

Ketika baris ke tiga dilaksanakan, ada dua pilihan yang muncul. Bila nilai suhu lebih dari 35,
yang dilaksanakan adalah bongkah (block) kode yang tertakuk:

5 print(‘Aduh panas sekali’)


6 print(‘Jangan lupa minum yang cukup’)

Apabila suhu berada di bawah 35, yang dilaksanakan adalah bongkah kode yang tertakuk;

10 print(‘Nyaman!’)
11 print(‘Bawa baju hangat’)
Dalam kedua kasus tersebut, pelaksanaan berlanjut dengan pernyataan berikut dan yang
ditakukkan pada kedudukan yang sama dengan pernyataan if/else (yaitu pernyataan dalam baris
ke 13). Bagan alir program di atas dapat dilihat pada Gambar 7. 4

suhu = input(‘Masukkan suhu yang sedang berlangsung : ‘)

False True
Suhu>35

print(‘Nyaman’) print(‘Aduh panas sekali!’)

print(‘Bawa baju hangat’) print(‘Jangan lupa minum yang cukup!’)

print(‘Selamat jalan!’)

Gambar 7.4 Bagan air pengaturcaraan dengan keputusan dua arah

Versi yang lebih umum dari pernyataan if memiliki bentuk berikut:

if condition:
indented code block 1
else:
indented code block 2
non-indented statement

(jika keadaan
bongkah kode 1 yang tertakuk
selain itu/lainnya:
bongkah kode 2 yang tertakuk
pernyataan yang tidak tertakuk)
Bongkah kode 1 yang tertakuk ( indented code block 1 ) akan dilaksanakan jika condition
dinilai True. Jika condition dinilai False, bagian bongkah kode 2 yang tertakuk (indented
code block 2 ) akan dilaksanakan sebagai gantinya. Setelah melaksanakan salah satu bongkah
kode di atas, pelaksanaan dilanjutkan lagi dengan pernyataan non-indented statement yang
berada di baris terakhir.

Contoh:

Pengubahan mil ke kilometer dan sebaliknya:

1 def print_menu():
2 print('1 mil ke km')
3 print('2 km ke mil')
4
5 def mil_km():
6 mil = float(input('Masukkan jarak dalam mil'))
7 km = mil* 1.609
8
9 print('Jarak dalam km =', km, 'km')
10
11 def km_mil():
12 km = float(input('Masukkan jarak dalam km'))
13 mil = km/1.609
14
15 print('Jarak dalam mil = ', mil , 'mil')
16
17 if __name__ == '__main__' :
18 print_menu()
19 pilihan = input('Pengubahan mana yang anda inginkan?')
20
21 if pilihan == '1':
22 mil_km()
23
24 if pilihan == '2':
25 km_mil()

Ketika kita jalankan Python akan meminta kita memilih. Misalkan kita pilih 1 (dari mil ke km)
dan memasukkan 2 mil:

1 mil ke km
2 km ke mil

Pengubahan mana yang anda inginkan?1


Masukkan jarak dalam mil 2

Jarak dalam km = 3.218 km

Contoh:
Kode sumber dalam contoh di atas dapat dengan mudah diubah untuk membuat program apa saja
yang mirip misalnya untuk mengubah suhu dari derajat Celsius ke Fahrenheit atau sebaliknya:

1 def print_menu():
2 print('1 F ke C')
3 print('2 C ke F')
4
5 def Fahrenheit_ke Celsius():
6 F = float(input('Masukkan suhu dalam Fahrenheit'))
7 C = 5/9*(F – 32)
8
9 print('Suhu dalam skala celsius = ', C, ' derajat')
10
11 def Celsius_ke Fahrenheit():
12 C = float(input('Masukkan suhu dalam Celsius'))
13 F = (C*9/5) + 32
14
15 print('Suhu dalam skala fahrenheit = ', F , 'derajat')
16
17 if __name__ == '__main__' :
18 print_menu()
19 pilihan = input('Pengubahan mana yang anda inginkan?')
20
21 if pilihan == '1':
22 Fahrenheit_ke_Celsius()
23
24 if pilihan == '2':
25 Celsius_ke_Fahrenheit()

Kalau anda sudah mahir melakukan pemograman, anda tidak perlu menulis semuanya dari awal
karena sudah ada warkah program yang anda tulis yang dapat anda gunakan sebagai acuan
/patron (template) dan tersedia banyak modul atau perpustakaan yang dapat anda gunakan.

7.8 Pelaksanaan berulang melalui tatanan kitaran (iteration structure)

Banyak sekali tugas yang harus dilakukan berulang-ulang, seperti menyiram tanaman, menyapu
lantai, menyetir kereta bawah tanah, dsb., Tugas seperti itu dapat membosankan bagi manusia.
Karena itu manusia menciptakan robot untuk melakukan pekerjaan yang membosankan. Dalam
pemograman, tugas yang berulang-ulang dilakukan dengan membentuk sebuah gelung (loop)
yang mengendalikan sebanyak berapa kali sebuah tugas yang berurutan akan dilakukan.

Konsep gelung (loop) adalah satu hal yang penting dalam pengaturcaraan. Dengan menggunakan
gelung, kita dapat memerintah komputer untuk untuk mengulangi langkah yang sama sebanyak
yang kita inginkan.

Phyton menyediakan dua cara untuk pernyataan gelung : gelung while (sementara itu) dan
gelung for (untuk). Gelung while adalah gelung yang dikendalikan keadaan (condition
controlled loop). Gelung ini dikendalikan oleh keadaan Boole true atau false (benar atau
salah). Sedangkan gelung for adalah gelung yang dikendalikan cacah/ bilangan (count-
controlled loop) yang mengulangi sebanyak berapa kali menurut cacah/ bilangan tertentu.

Gelung while

Melalui cara perkitaran ini, kita tidak menentukan berapa kali komputer harus mengulang tugas
yang sama. Kita hanya menyatakan sebuah syarat. Selama syarat tersebut belum terpenuhi,
komputer harus melaksanakan tugasnya terus menerus, berkali-kali. Begitu syarat terpenuhi,
komputer akan berhenti.

Contoh berikut adalah denda yang diberikan kepada anak yang sering terlambat untuk menulis
kalimat “Saya tidak mau terlambat lagi” sebanyak 1000 kali.

>>> denda = 0
>>> while denda < 1000:
print("Saya tidak mau terlambat lagi !")
denda = denda +1
hasil:

1 Saya tidak mau terlambat lagi !


2 Saya tidak mau terlambat lagi !
...
1000 Saya tidak mau terlambat lagi !

Peubah denda pada awalnya adalah 0. Gelung lalu mengecek apakah persyaratan denda < 1000
adalah benar. Jika benar, gelung akan melaksanakan terus badan gelung – bagian gelung yang
mengandung pernyataan untuk diulang-ulang – yaitu untuk mencetak kalimat Saya tidak mau
terlambat lagi ! dan ber-anjak (increment ) dengan nilai 1. Gelung akan berhenti melaksanakan
badan gelung ketika keadaan denda < 1000 tidak benar lagi atau persyaratannya menjadi salah,
yaitu ketika penulisan denda sudah mencapai 1000 baris. Pada titik ini gelung berhenti dan
pernyataan berikut setelah gelung akan dilaksanakan.

Contoh: Komputer sebagai ahli matematika

Kita dapat mengandalkan Python sebagai narasumber matematika yang ulung, dengan membuat
program ini.

soal = input("Masukkan soal matematika, atau ketik 'k' untuk keluar : ")
while (soal != "k"):
print("Jawaban dari", soal , "adalah :", eval(soal))
soal = input("Masukkan soal yang lain, atau ketik 'k' untuk keluar : ")
(Catatan: while (soal != “k”): adalah selama peubah soal tidak sama dengan k, program itu
akan dijalankan secara berulang-ulang.)

Sekarang kita coba:


Masukkan soal matematika, or 'k' untuk keluar : 3**2
Jawaban dari 3**2 adalah : 9
Masukkan soal yang lain, atau ketik 'k' untuk keluar : 9//2
Jawaban dari 9//2 adalah : 4
Masukkan soal yang lain, atau ketik 'k' untuk keluar : 9 % 2
Jawaban dari 9 % 2 adalah : 1
Masukkan soal yang lain, atau ketik 'k' untuk keluar : 3 - 4 * 5 / 5
Jawaban dari 3 - 4 * 5 / 5 adalah : -1.0
Masukkan soal yang lain, atau ketik 'k' untuk keluar : 3 - (4*5)/5
Jawaban dari 3 - (4*5)/5 adalah : -1.0
Masukkan soal yang lain, atau ketik 'k' untuk keluar : k
>>>

Komputer tidak akan bosan-bosannya menjawab pertanyaan anda berkali-kali selama


persyaratan dalam pernyataan while yaitu soal ! == k terpenuhi (peubah soal tidak sama
dengan k). Kalau anda memasukkan huruf k , soal == k , persyaratan tersebut idak terpenuhi
lagi dan program akan berhenti.

Sayangnya, program di atas hanya bisa menjawab persoalan matematika sederhana. Untuk bisa
membuat program yang mampu menjawab pertanyaan matematika tingkat lanjut, anda perlu
memperdalam pemahaman tentang Python.

Hati-hati menulis kode yang mengandung gelung karena dapat menimbukan gelung tak berujung
pangkal (continuous loop) melalui mana komputer akan terus menerus melaksanakan perintah
berulang tanpa henti. Kalau terjadi hal seperti itu, untuk menghentikan pelaksanaan tersebut,
tekan tombol Ctrl + C dan penda (debug) kode yang telah ditulis.

Gelung for

Sebelumnya kita sudah membahas tentang untaian (string) dan daftar (list). Keduanya adalah
urutan dari objek. Sebuah untaian dapat dilihat sebagai urutan dari untaian yang terdiri satu-
huruf; sedangkan daftar merupakan urutan dari segala jenis objek (untaian, angka, bahkan daftar
yang lain). Suatu tugas yang berlaku bagi semua urutan adalah melakukan sebuah tindakan
terhadap setiap objek yang berada dalam urutan. Misalnya anda dapat memecah daftar kontak
anda dan mengirimkan undangan pesta hanya kepada orang yang tinggal berdekatan. Atau anda
dapat mengecek semua daftar belanja apakah semua barang yang diperlukan sudah terbeli. Atau
anda dapat meneliti huruf dari nama anda untuk mengeja setiap huruf.

Misalkan anda ingin mewujudkan sebuah program pendek untuk mengeja untaian yang
dimasukkan oleh pengguna:

>>>
Masukkan sebuah kata : Budi
Kata tersebut dieja:

B
u
d
i

Algoritma untuk menulis program tersebut kira-kira sebagai berikut: Program tersebut pertama-
tama meminta pengguna untuk memasukkan sebuah untaian; setelah mencetak baris kalimat
„Kata tersebut dieja‟, huruf dari untaian yang dimasukkan oleh pengguna akan dicetak satu
persatu di baris yang berbeda. Kita dapat mewujudkan penulisan itu dengan kode sbb:

nama = input(‘Masukkan sebuah kata: ‘)


print(‘Kata tersebut dieja:’)

Untuk dapat menyelesaikan program ini, kita memerlukan sebuah metode yang akan
memungkinkan kita melaksanakan sebuah pernyataan print() untuk setiap huruf dari untaian
nama. Pernyataan Python gelung for (for loop) (gelung untuk ) dapat digunakan untuk
melakukan tugas tersebut. Pernyataan for mengendalikan aliran program selama syarat dalam
penyataan for itu berlaku. Ini adalah perwujudan program tersebut untuk melakukan yang kita
inginkan:

1 nama = input(‘Masukkan sebuah kata:’)


2 print(‘Kata tersebut dieja:’)
3
4 for huruf in nama:
5 print(huruf)
(4 : untuk huruf dalam nama)

Pernyataan gelung for merangkumi baris 4 dan 5 dari program. Pada baris 4, huruf adalah
peubah nama. Pernyataan gelung for tersebut akan menetapkan secara berulang / berkitar
(iterate) huruf-huruf yang terdapat dalam peubah huruf ke peubah nama . Jika nama merujuk
pada untaian „Budi‟, pada kitaran pertama huruf akan memiliki nilai „B‟, kemudian pada kitaran
ke dua nilai huruf adalah‘u’, pada kitaran ke tiga nilai ‘d’, dan akhirnya ‘i’pada kitaran ke empat.
Pada setiap kitaran, untuk setiap nilai huruf, pernyataan cetak print(huruf) yang tertakuk akan
dilaksanakan secara runut. Ketika huruf adalah ‘B’, ‘B’ dicetak, ketika nilai huruf ‘u’, ‘u’ dicetak,
dst. Gelungfor ini akan mengitar (iterate) sebanyak jumlah huruf dalam kata Budi tersebut,
yaitu 4 kali. Jadi gelung for hanya melakukan kitaran (iteration) dalam jumlah yang terbatas,
dalam hal ini yaitu sebanyak jumlah huruf di dalam untaian Budi.
nama B d d i

Kitaran1 huruf B
Kitaran2 huruf u
Kitaran3 huruf d
Kitaran4 huruf i

Gambar 7.5 Kitaran melalui untaian nama = Budi

Pernyataan gelung for juga dapat digunakan untuk mengitar (iterate) terhadap bilah-bilah (items)
yang ada dalam suatu daftar. Berikut ini dalam cangkang interaktif kita menggunakan gelung for
untuk mengitar objek untaian yang mewakili mata pelajaran di sekolah:

>>> mataPelajaran = ['matematika', 'biologi', 'IPA', ‘IPS’]


>>> for pelajaran in mataPelajaran:
print(pelajaran)
matematika
biologi
IPA
IPS

Gelung for tersebut melaksanakan bagian kode print(pelajaran) yang tertakuk sebanyak empat
kali, sekali untuk setiap nilai pelajaran; nilai pelajaran pertama adalah „matematika‟, kedua
„biologi‟, dst. (lihat Gambar 7.6)

mataPelajaran matematika biologi IPA IPS

Kitaran 1 pelajaran matematika


Kitaran 2 pelajaran biologi
Kitaran 3 pelajaran IPA
Kitaran 4 pelajaran IPS

Gambar 7.6. Kitaran melalui daftar mataPelajaran

Secara umum, pernyataan gelung for memiliki bentuk berikut:

for variable in sequence


indented code block
non-indented code block
(untuk peubah dalam urutan
bongkah kode yang tertakuk
bongkah kode yang tak tertakuk)
Gelung for akan menetapkan secara runut objek dari sequence (urutan) ke variable (peubah),
ketika objek tersebut muncul dalam urutan dari kiri ke kanan. indented block code (bongkah
kode yang tertakuk), biasanya disebut badan dari gelung for (body of the for loop), akan
dilaksanakan sekali untuk setiap nilai variable. Dikatakan bahwa, gelung for memperulang/
mengitar melalui objek di dalam urutan. Setelah semua indented code block selesai
dilaksanakan, pelaksanaan mulai lagi dengan pernyataan setelah gelung for yang berada di
bawah dan dengan takukan yang sejajar dengan awal baris pernyataan gelung for.

Contoh : Ucapan terima kasih kepada pelanggan

1 pelangganSetia = [ 'Bpk Andi', 'Bpk Harun', 'Ibu Tuti']


2 for pelanggan in pelangganSetia:
3 print(pelanggan.title() + ", anda adalah pelanggan yang sangat
berharga bagi kami!")
4 print("Kami mengharapkan dapat bertemu lagi di kesempatan yang lain
dengan " + pelanggan.title() + ".\n")
5
6 print("Terima kasih atas dukungan Bapak dan Ibu sekalian selama ini.")
(Catatan : title = judul, gelar)

Hasil :

Bpk Andi, anda adalah pelanggan yang sangat berharga bagi kami!
Kami mengharapkan dapat bertemu lagi di kesempatan yang lain dengan Bpk Andi.

Bpk Harun, anda adalah pelanggan yang sangat berharga bagi kami!
Kami mengharapkan dapat bertemu lagi di kesempatan yang lain dengan Bpk Harun.

Ibu Tuti, anda adalah pelanggan yang sangat berharga bagi kami!
Kami mengharapkan dapat bertemu lagi di kesempatan yang lain dengan Ibu Tuti.

Terima kasih atas dukungan Bapak dan Ibu sekalian selama ini.

Peubah untuk gelung for

Peubah huruf dalam

for huruf in nama:


print(huruf)

dan peubah pelajaran di dalam:

for pelajaran in mataPelajaran:


print(pelajaran)
hanyalah sebuah nama peubah, yang dipilih untuk membuat program lebih dapat difahami. Kita
dapat menggunakan nama peubah yang sembarang, misalnya x atau y. Contoh:

for x in nama
print(x)
dan

for y in mataPelajaran
print(y)

Catatan: kalau kita menggantikan nama untuk peubah gelung for, kita juga perlu mengganti
setiap nama peubah yang muncul di dalam badan gelung for tersebut.

Contoh: gelung for untuk menggambar secara otomatis.

1 import turtle
2 t = turtle.Pen()
3 for x in range(50):
4 t.forward(x)
5 t.left(45)

Catatan: untuk menggambar kita mengimpor modul turtle (kura-kura). for x in range(50):
(untuk x dalam kisaran dari 0 hingga 49, ingat Python memulai hitungan dari 0), pena turtle
akan bergerak untuk menggambar dengan cara maju dan berbelok kiri 45o dan mengitarnya
selama 50 kali.

Hasilnya:

7.7 Hasil dari menggambar otomatis dengan gelung for


Komputer akan terus mengulangi menarik garis lurus seperti yang diperintahkan oleh program,
hingga mencapai jumlah yang dipersyaratkan oleh pernyataan for. Dengan memakai pernyataan
for, komputer melakukan kitaran secara terbatas. Misalnya, dalam contoh di atas menarik garis
hingga 50 kali.

7.9Tatanan pengendalian aliran bersarang (nesting control flow structure)

Sekarang kita akan menulis program yang menggabungkan pernyataan gelung for dengan
pernyataan if. Kita ingin menulis sebuah terapan (application) yang meminta pengguna untuk
memasukkan sebuah frasa (gabungan kata yang memiliki arti). Setelah pengguna melakukannya,
program kita akan mencetak semua huruf hidup yang ada dalam frasa tersebut. Hasilnya adalah:

>>>
Masukkan sebuah frasa : teknologi maklumat
e
o
o
i
a
u
a

Program ini akan terdiri dari beberapa bagian. Kita membutuhkan pernyataan input() untuk
membaca di dalam frasa, sebuah gelung for untuk melakukan beberapa kali kitaran terhadap
untaian masukan, dan di setiap kitaran dari gelung for, pernyataan if akan mengecek apakah
huruf yang muncul adalah huruf hidup. Jika hurup hidup yang muncul, akan dicetak di layar.
Program tersebut adalah sebagai berikut:

1 frasa = input ('Masukkan sebuah frasa : ')


2
3 for hh in frasa:
4 if hh in 'aeiouAEIOU':
5 print(hh)

Perhatikan bahwa kita menggabungkan sebuah pernyataan gelung for dengan sebuah pernyataan
if. Takukan digunakan untuk menentukan badan dari setiap pernyataan.

Badan pernyataan if hanya:

Print(hh)

sedangkan badan pernyataan gelung for adalah


if hh in 'aeiouAEIOU':
print(hh)

Catatan : istilah nesting (nest = sarang) digunakan untuk menggambarkan di dalam sebuah badan
terdapat badan lagi, seperti boneka Rusia.

Misal : Membuat terapan perhitungan pajak penghasilan

Brosur yang dikeluarkan oleh kantor pajak sering membuat orang bingung untuk menghitung
berapa jumlah pajak yang harus dikeluarkan setiap tahun.

Tabel yang dikeluarkan kantor pajak untuk pengenaan pajak penghasilan sulit dimengerti.

Jika anda lajang dan penghasilan per Pajak adalah Kelebihan di atasnya
tahun
Hingga Rp. 10.000.000,- 10 %
Lebih dari Rp. 10.000.000,- Rp 1 juta + 15% dari kelebihan di atas
Rp 10.000.000,-
Jika anda berkeluarga dan
penghasilan per tahun
Hingga Rp. 20.000.000,- 10%
Lebih dari Rp 20.000.000,- Rp 2 juta + 15 % dari kelebihan di atas
Rp. 20.000.000,-

Gambar 7 Tabel penentuan pajak berdasarkan penghasilan dan status keluarga

Untuk itu, anda membuat sebuat terapan untuk memudahkan wajib pajak menghitung kewajiban
pajaknya secara otomatis.

Dalam kasus ini kita harus menentukan dahulu tetapan / konstanta dan peubah. Tarif pajak dan
ambang penghasilan adalah tetapan, sedangkan peubah adalah penghasilan. Tetapan ditulis
dalam huruf besar dan peubah dalam huruf kecil. Aliran program ini akan memiliki dua cabang
yaitu apakah wajib pajak lajang atau kawin. Kemudian di setiap cabang juga ada dua cabang lain
yaitu apakah penghasilannya di atas atau di bawah ambang pengenaan tarif yang berbeda.

1 TARIF1 = 0.10
2 TARIF2 = 0.15
3
4 AMBANG_LAJANG_TARIF1 = 10000000
5 AMBANG_KAWIN_TARIF1 = 20000000
6
7 penghasilan = float(input("Silakan masukkan penghasilan per tahun : "))
8 status_kawin = input("Silakan ketik l untuk lajang, k untuk kawin : ")
9
10 pajak1 = 0.0
11 pajak2 = 0.0
12
13 if status_kawin == "l" :
14 if penghasilan <= AMBANG_LAJANG_TARIF1 :
15 pajak1 = TARIF1 * penghasilan
16 else :
17 pajak1 = TARIF1 * AMBANG_LAJANG_TARIF1
18 pajak2 = TARIF2 * (penghasilan - AMBANG_LAJANG_TARIF1 )
19
20 else :
21 if penghasilan <= AMBANG_KAWIN_TARIF1 :
22 pajak1 = TARIF1 * penghasilan
23 else :
24 pajak1 = TARIF1 * AMBANG_KAWIN_TARIF1
25 pajak2 = TARIF2 * (penghasilan - AMBANG_KAWIN_TARIF1)
26
27 PajakKeseluruhan = pajak1 + pajak2
28
29 print ("Pajak yang harus dibayar Rp. ", PajakKeseluruhan)

Misalkan ada seorang wajib pajak yang mempunyai penghasilan Rp. 50.000.000 per tahun dan
masih lajang, pajak yang harus dibayar adalah:

Silakan masukkan penghasilan per tahun : 50000000


Silakan ketik l untuk lajang, k untuk kawin : l
Pajak yang harus dibayar Rp. 7000000.0

Kalau seandainya dia kawin, pajaknya adalah:

Silakan masukkan penghasilan per tahun : 50000000


Silakan ketik l untuk lajang, k untuk kawin : k
Pajak yang harus dibayar Rp. 6500000.0

Jadi perkawinan dapat mengurangi pajak, karena itu anda dianjurkan untuk segera berumah
tangga.

7.10 Fungsi range() (kisaran)

Kita baru saja melihat bagaimana gelung for digunakan untuk mengitar (iterate) sejumlah bilah
dari daftar huruf dari sebuah untaian. Kadang-kadang kitaran hanya diperlukan untuk urutan
angka dalam kisaran tertentu, walaupun daftar angka tidak diberikan secara eksplisit. Sebagai
contoh, kita mencari sebuah pembagi dari sebuah angka atau kita dapat mengitar berdasarkan
indeks 0, 1, 2, … dari urutan objek. Fungsi terpasang (built-in) range() dapat digunakan
bersama-sama dengan gelung for untuk mengitar sebuah urutan dari angka di dalam kisaran
tertentu. Program berikut adalah kitaran (iteration) terhadap bilangan bulat 0, 1, 2:

>>> for i in range(3):


print(i)
0
1
2

Fungsi range(n) biasanya digunakan untuk mengitar urutan bilangan bulat 0, 1, 2, 3, …, n.


Dalam contoh di atas, peubah i disetel pada angka 0 dalam kitaran pertama; dalam kitaran
berikutnya, i mendapat penetapan nilai 1, dan 2 (sebagai n=3). Sebagaimana dalam contoh
gelung for sebelumnya, bagian kode yang tertekuk dari gelung for dilaksanakan di setiap setiap
kitaran, untuk setiap nilai dari i.

Fungsi range() dapat juga digunakan untuk memperulang terhadap urutan yang lebih rumit dari
angka-angka. Jika kita menginginkan urutan mulai dari angka bukan nol (start / awal) dan
berakhir sebelum angka (end/akhir), kita dapat membuat fungsi panggilan range(start, end).
Sebagai contoh untuk gelung for yang memperulangkan pada urutan 4, 5, 6, 7, 8:

>>> for i in range (4, 9):


print(i)
(kita menggunakan angka 9 karena gelung berakhir sebelum 9 yaitu 8)

4
5
6
7
8

Untuk membangkitkan urutan yang menggunakan anjakan (increment) selain 1, hujjah ke tiga
dapat digunakan dalam fungsi range(). Panggilann fungsi range(start, end, step) dapat
digunakan untuk mengitar urutan dari bilangan bulat yang bermula dari angka start, dengan
menggunakan loncatan step dan berakhir pada angka end. Sebagai contoh, gelung berikut akan
mengitar urutan 1, 6, 11, 16:

>>> for i in range(1, 17, 5):


print(i)

1
6
11
16

Urutan yang dicetak oleh gelung for mulai dari 1, menggunakan anjakan 5 langkah, dan berakhir
sebelum 16.
Misalkan kita ingin menjumlahkan bilangan bulat dari 5 hingga 10, dari 25 hingga 60, dan dari
50 hingga 80. Jika kita membuat program untuk menjumlahkan ketiga urutan angka-angka
tersebut, mungkin bentuknya adalah sbb:

1 sum = 0
2 for i in range (5, 10):
3 sum += i
5 print(“Jumlah dari 5 sampai 10 adalah”, sum)
6
7 sum = 0
8 for i in range(25, 60):
9 sum += i
10 print(“Jumlah dari 25 hingga 60 adalah”, sum)
11
12 sum = 0
13 for i in range(50, 80):
14 sum += i
15 print(“Jumlah dari 50 hingga 80 adalah”, sum)

(Catatan: += adalah tanda lonjakan (increment) untuk mengolah satu lagi tambahan data dalam
urutan gelung, ketika kitaran (iteration) dilaksanakan)

Kita dapat melihat bahwa ketiga kode tersebut serupa kecuali angka pada awal dan akhir urutan.
Alangkah baiknya kalau kita dapat membuat sebuah kode yang dapat digunakan bersama untuk
ketiga kumpulan urutan angka di atas. Kita dapat melakukannya dengan menentukan sebuah
fungsi yang memungkinkan kita menggunakan kode yang dapat digunakan berulang kali. Kode
itu dapat disederhanakan menjadi:

1 # Menghitung urutan angka


2
3 def jumlah(i1, i2):
4 hasil = 0
5 for i in range (i1, i2 + 1):
6 hasil += i
7
8 return hasil
9
10 def main():
11 print("Jumlah dari 5 hingga 10 adalah", jumlah(5, 10))
12 print("Jumlah dari 25 hingga 60 adalah", jumlah(25, 60))
13 print("Jumlah dari 50 hingga 80 adalah", jumlah(50, 80))
14
15 main() # panggil fungsi main

Baris 3 – 8 menentukan sebuah fungsi yang diberi nama jumlah dengan dua parameter yaitu i1
dan i2. Baris 10 – 15 menentukan fungsi main yang menghimbau jumlah(5, 10) untuk
menghitung angka dari 5 hingga 10. Selanjutnya, proses yang sama dilakukan terhadap urutan
angka-angka yang lain.
Hasil yang diperoleh:

Jumlah dari 5 hingga 10 adalah 45


Jumlah dari 25 hingga 60 adalah 1530
Jumlah dari 50 hingga 80 adalah 2015

7.11 Komentar

Program Python perlu diberikan komentar karena dua alasan:

1 Pengguna program harus tahu apa yang dilakukan oleh program

2 Pengembang yang membangun dan/ atau memelihara kode perlu mengetahui bagaimana
program bekerja.

Dokumentasi bagi pengembang dan calon pemelihara program penting karena kode yang tidak
terdokumentasi lebih sukar dipelihara, bahkan bagi pemrogram sendiri yang telas menulis kode
tersebut. Dokumentasi tersebut biasanya dilakukan dengan menulis komentar di sebelah kanan
program.

Sebuah komentar adalah sesuatu yang tertulis setelah tanda # di sebuah garis. Misal:

1 def f(x):
2 ‘mengembalikan x**5 1’
3 return x**5 + 1 # f(x) harus dinilaikan ke x*x + 1

Sebuah komentar atau apa saja yang berada setelah tanda # akan diabaikan oleh Python.
Walaupun penting, komentar jangan berlebihan, karena dapat menyulitkan kode dibaca.
Komentar hanya untuk kode yang sulit difahami saja.

Untaian dokumentasi (docstring (documentation string))

Fungsi perlu juga diberi komentar untuk pengguna fungsi. Fungsi yang terpasang seperti yang
kita lihat sejauh ini semuanya memiliki dokumentasi yang dapat dilihat dengan menggunakan
fungsi help(). Contoh :

>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
Return the number of items in a container.

Jika kita menggunakan help (tolong) untuk fungsi di atas, f(), kita juga mendapatkan dokumen:
>>> help(f)
Help on function f in module __main__:

f(x)

Untuk mendapatkan sesuatu yang berguna, pembangun fungsi perlu menambahkan komentar
khusus pada definisi fungsi, yaitu yang akan diambil oleh alat help(). Komentar seperti ini
disebut docstring (document string/ untaian dokumen) , yaitu sebuah untaian yang menjelaskan
apa yang dilakukan fungsi dan harus ditempatkan langsung di bawah garis pertama definisi
fungsi. Dalam hal ini kita menambahkan doscstring „returns x**5 + 1‟ ke fungsi f(). Ini adalah
kode yang harus ditulis :

1 def f(x)
2 ‘mengembalikan x**5 + 1’
3 return x**5 + 1 # menghitung X**5 + 1 dan mengembalikan nilai yang diperoleh.

Sekarang ketik:

>>> help(f)
Help on function f in module __main__:

f(x)
mengembalikan x**5 + 1
Bab VIII

Mekanisme Fungsi

Fungsi memegang peran penting dalam pemrograman. Peran fungsi dalam bahasa komputer
setara dengan peran paragraf dalam bahasa tulisan. Membuat paragraf yang baik dengan
menyusun alur kalimat yang logis akan memudahkan penyampaian pesan melalui tulisan dari
penulis ke pembaca. Membuat fungsi dan algoritma yang baik dalam sebuah program akan
menentukan efektifitas pelaksanaan program secara keseluruhan. Dalam bab ini kita akan
mendalami lebih jauh bagaimana tata kerja fungsi untuk dapat membuat program yang efektif.

8.1 Tatatan penetapan (assigment structure) terhadap peubah

Fungsi dapat dipanggil baik di dalam cangkang interaktif ataupun oleh program lain, yang
prosesnya disebut pemanggilan program (calling program). Untuk dapat merancang fungsi, kita
perlu memahami bagaimana nilai yang diciptakan dalam pemanggilan program – atau cangkang
interaktif – dilalukan/ dilewatkan sebagai hujjah masukan (input argument) ke dalamsebuah
fungsi. Untuk melakukan ini, kita pertama sekali perlu memahami secara tepat apa yang terjadi
di dalam pernyataan penetapan (assignment) nilai terhadap sebuah peubah (variable ) atau
disebut juga pengenal (identifier).

Misalkan kita ingin menetapkan nilai tiga pada a, yaitu a = 3. Sebelum penetapan dilakukan,
pengenal a tidak dikenal Python :

>>> a
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
a
NameError: name 'a' is not defined
(GalatNama: nama „a‟ tidak didefinisikan/ditentukan)

Ketika penetapan

>>> a = 1

dilaksanakan, objek int (bilangan bulat) dengan nilai 3 dan namanya yaitu a diciptakan.

>>>a
1

Python akan menyimpan nama tersebut dalam sebuah tabel dalam ingatan komputer yang
dikelola oleh Python (lihat Gambar 8.1 ) .
a b c d

1 1.5 ‘ayo’ [4, 1, 5, 5,7, 3]

Gambar 8.1 Tabel peubah Python

Gambar 8.1 menunjukkan beberapa peubah yang berada di dalam tabel. Peubah b merujuk pada
objek float 1.5, peubah c pada objek str „ayo‟ dan peubah d merujuk pada objek list [4, 1, 5, 5,
7, 3].

Cara penetapan peubah itu adalah:

>>> b = 1.5

>>> c = ‘ayo’

>>> d = [4, 1, 5, 5, 7, 3]

Secara umum, pernyataan penetapan nilai dalam Python memiliki susunan kalimat (syntax)
sebagai berikut

variable = expression
peubah = ungkapan

Ungkapan di sebelah kanan operator penetapan ( = ) dinilai, dan nilai hasilnya disimpan di
dalam sebuah objek yang berjenis sesuai. Kemudian objek tersebut ditetapkan pada peubah ,
yang merujuk pada objek atau terikat pada objek tersebut.

Jenis yang dapat berubah (mutable) atau tidak dapat berubah (immutable)

Penetapan nilai yang lain pada peuabah a, misalnya :

>>> a = 2

akan menggunakan kembali nama a yang sudah ada. Hasil dari penetapan ini yaitu peubah a
akan dirujuk pada objek yang lain, yaitu objek bilangan bulat 2 atau (int 2). Objek int 1 tidak
lagi dirujuk oleh peubah seperti terlihat dalam Gambar 5.
a b c d

2 1 1.5 ‘ayo’ [4, 1, 5, 5,7, 3]

Gambar 8.2 Penggantian penetapan terhadap peubahadari 1 menjadi 2

Hal yang penting untuk dicatat yaitu penetapan a = 2, tidak mengubah nilai objek bilangan bulat
1. Sebagai gantinya, sebuah objek bilangan bulat baru 2 diciptakan, dan peubah a sekarang
merujuk pada objek itu.

Tidak ada cara untuk mengubah nilai dari objek yang bernilai 1 melalui penetapan. Contoh di
atas menggambarkan satu tuturan (feature) yang penting dari Python yaitu: objek int Python
tidak dapat diubah. Jenis yang objeknya tidak dapat diubah disebut jenis tidak berubah
(immutable type). Semua jenis bilangan Python ( bool, int, float dan complex) adalah jenis tidak
dapat berubah.

Bagaimana dengan nasib objek bilangan bulat 1 yang tidak dirujuk lagi oleh peubah dalam
gambar 8.2. Python memiliki suatu metoda yang dinamakan pengumpulan sampah (garbage
collection) untuk memusnahkan objek yang tidak terpakai lagi guna membebaskan ruang ingatan
komputer.

Kita sudah melihat di Bab sebelumnya bahwa objek daftar (list) dapat diubah:

>>> d= [4, 1, 5, 5, 7, 3]
>>> d[3] = 9
>>> d
[4, 1, 5, 9, 7, 3]

Daftar d dirombak di dalam pernyataan kedua: yaitu masukan pada indeks 3 diganti menjadi 9,
seperti terlihat dalam gambar 8.3. Jenis objek yang dapat dirombak disebut jenis yang dapat
berubah (mutable).
d d

[4, 1, 5, 5, 7, 3] [4, 1, 5, 9,7, 3]

Gambar 8.3. Daftar d sebelum dan setelah dirombak

Daftar adalah jenis yang dapat berubah. Sedangkan bilangan adalah jenis yang tidak dapat
berubah. Demikian juga dengan untaian yang merupakan jenis yang tidak dapat berubah
(immutable). Sekarang kita coba:

>>> c = 'ayo'
>>> c[1] = 't'
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
c[1] = 't'
TypeError: 'str' object does not support item :assignment
(<JenisGalat : objek „str‟ tidak mendukung penetapan bilah)

Huruf yang berada dalam objek untaian tidak dapat dirombak.

Penetapan dan keterubahan (mutability)

Dalam keadaan tertentu, berbagai peubah dapat merujuk pada objek yang sama. (Hal ini
khususnya terjadi ketika sebuah nilai dilalukan/ dilewatkan (passed) sebagai sebuah masukan ke
suatu fungsi). Kita perlu mengerti apa yang terjadi ketika salah satu peubah ditetapkan pada
sebuah objek yang lain. Misalkan:

>>> a = 5
>>> b = a

Penetapan pertama menciptakan objek bilangan bulat dengan nilai 5 dan diberi nama a. Dalam
penetapan kedua, ungkapan a yang dinilai kepada objek bilangan bulat 5, kemudian mendapat
nama lain yaitu b (lihat Gambar 8.4 )
a b

Gambar 8.4 Dua peubah yakni a dan b merujuk pada objek yang sama

Kita bisa melihat hal ini dengan mengecek tanda pengenal peubah (identitas):

>>> id(a)
1633961680
>>> id(b)
1633961680

Peubah a dan b masing-masing memiliki nomor pengenal yang sama. Sebenarnyanya peubah
tidak memiliki nomor pengenal. Nomor yang muncul itu adalah nomor pengenal objek int 5.
Karena peubah a dan b merujuk pada objek itu, nomor pengenal yang dimunculkan adalah sama
yaitu nomor pengenal objek, (lihat bagian 6.1.). Mari kita cek:

>>> id(5)
1633961680

Bagaimana kalau ditetapkan nilai yang lain kepada a misalnya 4

>>> a = 4

Penetapan a = 4 tidak merubah nilai objek dari 5 ke 4 karena jenis int tidak dapat berubah
(immutable). Peubah a sekarang merujuk pada objek dengan nilai 4. Sedangkan peubah b :

>>>a
4
>>> b
5

Peubah b masih merujuk pada objek dengan nilai 5 (lihat Gambar 8.4 )
a b

4 5

Gambar 8.5 Penetapan berganda dan keterubahan

Sekarang kita cek nomor pengenal masing-masing peubah:

>>> id(a)
1633961664
>>> id(b)
1633961680

Tanda pengenal a telah berubah (itu adalah nomor pengenal int 4), sementara b tetap (yaitu
nomor pengenal int 5).

Kesimpulannya adalah: jika dua peubah merujuk pada objek tak berubah yang sama,
perombakan (modification) satu peubah, tidak mempengaruhi peubah yang lain.

Bagaimana dengan daftar. Kita mulai dengan menetapkan sebuah daftar kepada a dan kemudian
menetapkan a kepada b.

>>> a = [2, 4, 3]
>>> b = a

Seperti terlihat dalam Gambar 8.5. peubah a dan b merujuk pada daftar yang sama.

Apa yang terjadi bila kita menetapkan objek baru pada bilah b[1]:

>>> b[1] = 9
>>> b
[2, 9, 3]
>>> a
[2, 9, 3]
a b

2, 4, 3

Gambar 8.6

Seperti yang kita lihat dalam bab sebelumnya, daftar dapat dirombak. Daftar b dirombak oleh
penetapan b[1] = 9. Namun, karena peubah a terikat pada daftar yang sama, a juga turut
berubah. Demikian pula, perubahan pada daftar a akan merombak daftar b. Misalkan penetapan
a[-1] = 7 , akan membuat objek baru 7 sebagai objek terakhir dalam daftar a dan b.

>>> a[-1] = 7
>>> a
[2, 9, 7]
>>> b
[2, 9, 7]

Pengurupan (penukaran/ swapping)

Misalkan peubah a dan b merujuk pada dua nilai bilangan bulat yang berbeda:

>>> a = 5
>>> b = 1

Sekarang kita perlu mengurup (swap) nilai dari a ke b dan sebaliknya dari b ke a. Setelah
pengurupan (swapping), a akan merujuk pada nilai 1 dan b akan merujuk pada nilai 5, seperti
ditunjukkan dalam gambar 8.7.

Sekarang, kalau kita menetapkan nilai b ke a :

a=b

maka peubah a akan merujuk pada objek yang sama yang dirujuk oleh b yaitu 5. Mengingat a
dan b merujuk pada 5, kita dapat kehilangan objek bilangan 1. Karena itu, sebelum
melaksanakan a = b kita harus menyimpan dahulu satu rujukan sementara ke objek 1 dan
kemudian menetapkan rujukan itu ke b:
a b a b

5 1 5 1

Gambar 8.7 Pengurupan penetapan nilai antara dua peubah.

>>> sem = a # peubah sem merujuk pada 1 (sem= sementara)


>>> a = b # a dan b merujuk pada 5
>>> b = sem # b merujuk pada 1

Agak rumit, bukan? Dalam Python, pengurupan dapat dilakukan dengan cara yang sangat
sederhana, karena Python mendukung pernyataan aneka penetapan yang serentak.

>>> a = 5
>>> b = 1
>>> a, b = b, a

Kita cek:
>>> a
1
>>> b
5

Dalam pernyataan aneka penetapan a, b = b, a, dua ungkapan yang berada sebelah kanan tanda
= dinilaikan pada dua objek dan kemudian kedua objek tersebut ditetapkan pada peubah yang
bersangkutan di sebelah kiri tanda = .

Salah satu tuturan (feature) Python yang sangat menarik adalah sebuah nilai dapat ditetapkan
pada beberapa peubah secara serentak:

>>> i = j = k = 0

Ketiga peubah i, j, dan k, semuanya disetel pada objek 0.


8.2 Tatanan fungsi
Seperti yang sudah kita lihat sebelumnya, sintaksis untuk penentuan sebuah fungsi adalah
sebagai berikut:
def namaFungsi(daftar parameter):
Badan Fungsi

Sebagai contoh kita menentukan sebuah fungsi untuk menentukan bilangan mana yang lebih
besar di antara dua bilangan. Misalkan nama fungsi adalah mak dengan dua parameter ang1
dan ang2 ; angka yang lebih besar akan dikembalikan oleh fungsi tersebut. Gambar 8.8
menggambarkan komponen dari fungsi mak tersebut.

Penentuan fungsi Pemanggilan fungsi

Nama fungsi Parameter resmi

Judul
fungsi def mak(ang1, ang2):

if ang1 > ang2: z = mak(x, y)


Badan hasil = ang1
fungsi
else :
hasil = ang2
return hasil

Nilai kembalian Parameter kiwari (hujjah)

Gambar 8.8 Penentuan fungsi dan pemanggilannya dengan hujjah (parameter kiwari)

Fungsi memiliki judul/ kepala (header) dan badan (body). Judul dimulai dengan kata kunci def ,
lalu diikuti oleh nama fungsi dan diakhiri dengan titik dua (:).
Peubah di dalam judul fungsi disebut sebagai parameter resmi (formal parameter) atau hanya
parameter saja. Sama halnya dengan peubah, parameter mirip seperti wadah penyimpanan.
Ketika fungsi dipanggil, kita melalukan/ melewatkan (pass) sebuah nilai ke dalam parameter
tersebut. Nilai ini dirujuk sebagai parameter kiwari (actual parameter) atau hujjah (argument).
Parameter adalah pilihan untuk sebuah fungsi. Ada fungsi yang tidak memiliki parameter
misalnya fungsi random.random().
Sejumlah fungsi mengembalikan nilai, sementara fungsi yang lain melaksanakan operasi yang
diinginkan tanpa mengembalikan sebuah nilai. Jika sebuah fungsi mengembalikan nilai. Fungsi
tersebut dinamakan fungsi yang mengembalikan nilai (value-returning function).
Badan fungsi mengandung serangkaian ungkapan yang menentukan apa yang dilakukan oleh
fungsi. Misal, badan fungsi dari fungsi mak menggunakan pernyataan perandaian if untuk
menentukan angka mana yang lebih besar dan mengembalikan nilai angka tersebut. Sebuah
pernyataan pengembalian yang menggunakan kata kunci return diperlukan bagi sebuah fungsi
yang mengembalikan nilai untuk mengembalikan sebuah hasil. Fungsi berakhir ketika
pernyataan return dilaksanakan.

8.3 Fungsi tanpa parameter


Kita sekarang menggunakan cangkang interaktif. Misalkan kita membuat tabel perkalian 5:
>>> def table_Kali_5():
n=1
while n < 11:
print(n * 5, end = " ")
n=n+1

Lalu, fungsi kita jalankan dengan mengetik:


>>> table_Kali_5()
5 10 15 20 25 30 35 40 45 50

Fungsi tersebut menampilkan sederetan tabel hasil perkalian bilangan dari 1 hingga 10 dengan
angka 5.
Fungsi itu dapat kita gunakan berkali-kali sekehendak kita, bahkan dapat kita gunakan dengan
memasukkakan dalam fungsi yang lain:
>>> def tabel_Kali_5_ganda():
print("Tabel hasil perkalian dengan 5 rangkap ganda:" )
tabel_Kali_5()
tabel_Kali_5()

>>> tabel_Kali_5_ganda()
Tabel hasil perkalian dengan 5 rangkap ganda:
5 10 15 20 25 30 35 40 45 50 5 10 15 20 25 30 35 40 45 50
>>>
Kode di atas menunjukan fungsi pertama dapat memanggil fungsi yang kedua; dan yang kedua
dapat memanggil yang ketiga (bila ada); dst. Dengan cara ini kita dapat mewujudkan penulisan
program dengan cara memecahkannya dalam bagian yang lebih kecil, dan yang lebih kecil lagi;
dst, sehingga mudah dikerjakan dan dimengerti (lihat Gambar 8.9). Ini adalah hakekat dari
pemrograman berazaskan prosedur (fungsi).
Fungsi 1 Fungsi 2 Fungsi 3 Fungsi g Fungsi n

def f2(p2): def f3(p3): def fn(n):


deff1(p1): f3(p3) fg(pg) print(z)
f2(p2) .... .... ....
....

Gambar 8.9 Pemanggilan fungsi ke dalam fungsi secara beruntun

Dengan menciptakan fungsi baru, kita dapat memberikan nama untuk keseluruhan perintah dari
fungsi-fungsi yang menjadi bagian dari fungsi baru. Melalui cara ini kita juga dapat
menyederhanakan penulisan kode utama program, dengan menyembunyikan kerumitan tulisan
kode dalam dalam sebuah nama fungsi baru.
Dengan menciptakan fungsi baru kita dapat memperpendek penulisan algoritma program dengan
cara menghilangkan bagian kode yang berulang-ulang. Misalnya kalau kita menulis tabel_Kali_5
di atas berulang-ulang dalam suatu program, resiko penulisan akan lebih besar. Oleh karena itu,
kita tidak perlu menulis algoritma yang sama setiap kali kita melaksanakan pekerjaan tersebut.

(Catatan: kita dapat membuat gelung tak berujung pangkal dengan merombak kode di atas:
>>> def table_Kali_5():
n=1
while n < 11:
print(n * 5, end = " ")
n = + 1 # n = n + 1 diubah menjadi n = +1
Kalau dijalankan siap-siap menekan tombol Ctrl + C, untuk menghentikannya.)

8.4 Fungsi dengan parameter


Kita sudah membuat tabel perkalian dengan angka 5. Misalkan sekarang kita ingin membuat
tabel perkalian dengan angka 7. Kita akan menulis kode di atas dengan merombaknya. Hal ini
tentu melelahkan apalagi kalau kita ingin membuat tabel perkalian dengan berbagai angka.
Karena itu, akan lebih baik jika didefinisikan sebuah fungsi universal yang dapat menampilkan
tabel perkalian dengan angka mana saja, sesuai dengan yang diinginkan.
Untuk itu, kita perlu melalukan sebuah hujjah sebagai informasi kepada fungsi tersebut untuk
menampilkan tabel sesuai dengan hujjah tersebut. Dalam definisi fungsi yang dapat melakukan
tugas seperti itu, kita perlu merpersiapkan sebuah peubah khusus untuk menampung hujjah yang
dilalukan. Peubah khusus ini disebut parameter. Gubahan kode itu adalah sbb:
>>> def tabel_perkalian(angkaDasar):
n=1
while n<11:
print(n * angkaDasar, end = " ")
n=n+1

dengan kode ini kita dapat membuat tabel hasil perkalian bilangan dari 1 – 10 dengan bilangan
apa saja. Misalkan kita ingin membuat tabel perkalian dengan angka 100 dan 13. Kita hanya
perlu memanggil fungsi tabel_perkalian() dengan melalukan angka 100 dan 13 secara berturut-
turut:
>>> tabel(100)
100 200 300 400 500 600 700 800 900 1000
>>> tabel(13)
13 26 39 52 65 78 91 104 117 130 >>>

Dalam contoh di atas, nilai yang kita tuliskan dalam tanda kurung (hujjah) saat fungsi dipanggil
secara otomatis ditetapkan pada parameter angkaDasar. Dalam bagian badan fungsi,
angkaDasar berperan seperti peubah mana saja yang lain. Ketika kita masukkan perintah
tabel_perkalian (13), kita memberi tanda kepada mesin bahwa kita ingin melaksanakan fungsi
tabel_perkalian() dengan cara menetapkan nilai 13 pada peubah angkaDasar.

8.5 Pelaluan parameter (parameter passing)

Dengan memahami lebih baik bagaimana penetapan nilai terhadap peubah berlangsung di dalam
Python, kita dapat mengerti bagaimana hujjah masukan (input argument) dilalukan ke dalam
panggilan fungsi (function call). Fungsi dapat dipanggil dari dalam cangkang interaktif atau oleh
program lain. Tindakan ini disebut memanggil program (calling program). Hujjah masukan
dalam sebuah panggilan fungsi adalah nama-nama dari objek yang diciptakan dalam program
pemanggilan.

Ketika sebuah fungsi dipanggil, peubah diciptakan untuk menerima hujjah fungsi. Peubah ini
disebut peubah parameter (parameter variable atau biasa disebut parameter resmi (formal
parameter)). Nilai yang dipasok kepada fungsi pada saat dipanggil disebut sebagai hujjah
pemanggilan (argument of the call) atau juga biasa disebut parameter kiwari (actual
parameter). Tiap peubah parameter diprakarsai dengan hujjah yang berkaitan.

Misalkan kita membuat fungsi untuk menghitung luas dua buah lingkaran:

1 # Fungsi ini menghitung luas dua lingkaran


2
3 import math
4
5 def main():
6 hasilSatu = luasLingkaran(2)
7 hasilDua = luasLingkaran(4)
8 print("Luas lingkaran dengan jari_jari 2 adalah:", hasilSatu)
9 print("Luas lingkaran dengan jari_jari 4 adalah:", hasilDua )
10
11 def luasLingkaran(jari_jari):
12 luas = math.pi * (jari_jari ** 2)
13 return luas
14
15 main() # memulai program

Nilai yang dikembalikan oleh fungsi luasLingkaran() adalah:

Luas lingkaran dengan jari_jari 2 adalah: 12.566370614359172


Luas lingkaran dengan jari_jari 4 adalah: 50.26548245743669

Ketika program di atas dijalankan, terjadi pelaluan parameter melalui pemanggilan fungsi
hasilSatu = luasLingkaran(2), menurut tahap-tahap berikut, (lihat Gambar 8.10.) :

1 Peubah parameter jari_jari dari luasLingkaran diciptakan ketika fungsi di atas


dipanggil.
2 Peubah parameter diprakasai dengan nilai hujjah yang dilalukan dalam panggilan. Dalam
contoh di atas, jari_jari disetel pada nilai 2.
3 Fungsi tersebut lalu menghitung ungkapanmath.pi * jari_jari ** 2, yang menghasilkan
nilai 12,57 . Nilai itu disimpan dalam peubahluas.
4 Fungsi itu kemudian mengembalikan nilai tersebut. Semua peubah disisihkan. Nilai
pengembalian dikirim ke pemanggil (caller), yaitu fungsi yang memanggil fungsi
luasLingkaran. Pemanggil menaruh nilai pengembalian dalam peubah hasilSatu.

Proses yang sama berlangsung terhadap peubah hasilDua dengan nilai yang disetel 10.
Pemanggilan fungsi 1
hasilSatu = luasLingkaran(2)
2 Memprakarsai peubah parameter fungsi
hasilSatu =…… hasilSatu = luasLingkaran (2)
jari_jari = …….
hasilSatu = …….
jari_jari = 2

Menjelang kembali ke pemanggil 3

luas = math.pi * jari_jari ** 2


return luas

hasilSatu = ……..
jari_jari = 2
luas = 12.57 4 Setelah pemanggilan fungsi
hasilSatu = luasLingkaran(2)

hasilSatu = 12.57

Gambar 8.10 Tahap-tahap pelaluan/ pelewatan parameter

Kita akan melihat lebih lanjut bagaimana pelaluan parameter berlangsung dengan memahami
anatomi dan cara kerja sebuah fungsi.

8.6 Cakupan peubah (scope of variable)


Peubah yang diciptakan di dalam sebuah fungsi dirujuk sebagai peubah setempat (local
variable). Peubah setempat hanya dapat dicapai dalam sebuah fungsi. Cakupan dari sebuah
peubah setempat bermula dari penciptaannya dan berakhir pada ujung fungsi yang mengandung
peubah tersebut.
Dalam Python kita juga dapat menciptakan peubah keseluruhan (global variable) yang
diciptakan diluar semua fungsi dan dapat dicapai oleh semua fungsi yang berada dalam cakupan
peubah tersebut. Misal:

1 peubahKeseluruhan = 5
2
3 def f1():
4 peubahSetempat = 7
5 print(peubahKeseluruhan)
6 print(peubahSetempat)
7
8 f1()
9 print(peubahKeseluruhan)
10 print(peubahSetempat)

Keluaran:
5
7
5
Traceback (most recent call last):
File "C:/kode/peubah_global_setempat.py", line 13, in <module>
print(peubahSetempat)
NameError: name 'peubahSetempat' is not defined

Cakupan fungsi f1() adalah dari baris 3 hingga ke bari 6, ketika kita mencoba mencapai peubah
stempat denga f1() di luar cakupannya yaitu pada bari 10, galat terjadi.
Contoh :
1 a=1
2 def f2():
3 a=2
4 print(a)
5
6 f2()
7 print(a)

Hasil
2
1

Peubah a pertama dirujuk pada nilai 1, kemudian dalam cakupan fungsi f2() dirujuk pada 2.
Dalam cakupan fungsi f2(), yaitu dari baris 2 hingga 3, ketika perintah print dilaksanakan
peubah a merujuk pada 2. Tetapi ketika berada di luar cakupan, peubah a merujuk pada 1.
1 x = eval(input(“Masukkan sebuah angka: “))
2...if x > 0:
3 y=3
4 print(y)

Disini peubah y diciptakan jika x>0. Jika angka positif yang dimasukkan program akan berjalan
dengan baik. Tetapi jika yang dimasukkan angka negatif, program akan macet.
Contoh:
1 jumlah = 0
2 for i in range(5):
3 jumlah += i
4
5 print(i)

Disini peubah i diciptakan di dalam gelung (loop). Setelah gelung berakhir, i adalah 4,
sehingga yang ditampilkan pada baris 5 adalah 4. Sedangkan jumlah yang merupakan peubah
keseluruhan, sekarang merujuk pada 10:
>>> print(jumlah)
10

Kita dapat mengikat peubah setempat dalam cakupan menyeluruh (global scope). Kita juga dapat
menciptakan sebuah peubah di dalam suatu fungsi dan menggunakannya di luar fungsi tersebut.
Untuk melakukannya kita menggunakan pernyataan global, seperti contoh berikut:
1 p=1
2 def lonjak():
3 global p
4 p=p+1
5 print(p)
6
7 lonjak()
8 print(p)

Hasil
2
2

Walaupun kita mencapai peubah p di luar cakupan fungsi lonjak(), peubah p , baik di dalam
fungsi (baris 5) maupun di luar fungsi (baris 8), telah merujuk pada nilai 2. Peubah p yang
diciptakan pada baris 1 terikat pada pada fungsi (baris 3) dengan pernyataan global. Ini berarti
bahwa p di dalam fungsi dan p di luar fungsi merujuk pada nilai terakhir, yaitu 2 ( p = p + 1 ).

8.7 Pemanggilan fungsi (function calling)


Pemanggilan fungsi artinya melaksanakan kode yang ada dalam fungsi. Ketika kita
mendefinisikan sebuah fungsi artinya kita menentukan apa yang dilakukan oleh fungsi tersebut.
Untuk menggunakan sebuah fungsi kita harus memanggilnya. Program yang memanggil fungsi
disebut pemanggil (caller). Ada dua cara memanggil fungsi, tergantung apakah fungsi tersebut
mengembalikan atau tidak mengembalikan nilai.
Contoh: menghitung volume bola dengan memanggil fungsi kubus. Rumus volume kubus adalah
s (s adalah sisi), sedangkan volume bola adalah 4/3  r3 ( r adalah radius atau jari-jari).
1 def volumeKubus(s):
2 return s**3
3
4 def volumeBola(r):
5 return 4 * 3.14 * volumeKubus(r) / 3
6
7 r = input("Masukkan nilai jari-jari: ")
8 print("Volume bola ini adalah:" , volumeBola(float(r)))

Misalkan kita masukkan angka 7, hasilnya :

Masukkan nilai jari-jari: 7


Volume bola ini adalah: 1436.0266666666666
>>>

Program di atas terdiri dari 3 bagian; dua fungsi yaitu volumeKubus() dan volumeBola() ,
dan selanjutnya diikuti oleh badan program. Dalam badan program, dipanggil fungsi
volumeBola() dengan melalukan nilai r yang dimasukkan oleh pengguna, setelah sebelumnya
diubah menjadi bilangan riil oleh fungsi float().

Pada baris 5, di dalam fungsi volumeBola(), ada panggilan terhadap fungsi volumeKubus().

Jika sebuah fungsi mengembalikan nilai, pemanggilan pada fungsi tersebut ditangani sebagai
sebuah nilai.
Misal, pernyataan :
palingBesar = max(7, 2)

memanggil fungsi terpasang max(7, 2) dan menetapkan nilai panggilan (return value) dari
fungsi max tersebut ke peubah palingBesar.

Contoh lain panggilan yang ditangani sebagai nilai oleh fungsi print():
print(max(3, 6))

yang akan mencetak nilai panggilan dari panggilan fungsi max(3, 6).

Ada fungsi tidak mengembalikan nilai, misalnya, fungsi print() berikut yang hanya
menampilkan ke layar apa yang diperintahkan:
print(“Apa kabar semua orang?”)

Ketika sebuah program memanggil sebuah fungsi, kendali program dipindahkan ke fungsi yang
dipanggil (called function). Fungsi yang dipanggil mengembalikan kendali kepada pemanggil
ketika pernyataan pengembalian (return statement) dilaksanakan atau ketika fungsi tersebut
berakhir.

Contoh fungsi mak :


1 # Mengembalikan nilai maksimum dari dua angka
2 def mak(ang1, ang2):
3
4 if ang1 > ang2:
5 hasil = ang1
6
7 else:
8 hasil = ang2
9
10 return hasil
11
12 def main():
13
14 i = 7
15 j = 2
16 k = mak(i, j) # Memanggil fungsi mak
17 print("Angka yang paling besar dari", i , "dan", j, "adalah ", k)
18
19 main() # memanggil fungsi main()

Hasil :
Angka yang paling besar dari 7 dan 2 adalah 7

Program ini mengandung fungsi mak dan main. Naskah program memanggil fungsi main pada
baris 19. Menurut kesepakatan, program sering mendefinisikan sebuah fungsi yang dinamakan
main yang mengandung cara kerja utama untuk sebuah program.
Bagaimana program tersebut dilaksanakan? Penerjemah Python membaca naskah program baris
demi baris, mulai dari baris pertama. Mengingat baris pertama adalah komentar, baris pertama
diabaikan. Ketika penerjemah membaca judul fungsi mak di baris 2, ia menyimpan fungsi
tersebut bersama dengan dengan badan fungsi (baris 4 – 10) dalam ingatan komputer. Ingat
bahwa pendefinisian fungsi menentukan fungsi, tetapi tidak menyebabkan fungsi dilaksanakan.

Penerjemah kemudian membaca definisi fungsi main (baris 12 ) ke ingatan komputer. Akhirnya,
penerjemah membaca pernyataan pada baris ke 19 yang memanggil fungsi main dan
menyebabkan fungsi main dilaksanakan. Kendali sekarang berpindah ke fungsi main seperti
ditunjukkan dalam gambar 8. ..
melalukan int 7

melalukan int 2

def main () def mak (ang1, ang2):


main() i=7 if ang1 > ang2:
j=2 hasil = ang1
k = mak(i, j) else :
hasil = ang2
print (“Angka paling besar dari”, i ,
“dan”, j, “adalah” , k) return hasil

Gambar 8.11 Ketika fungsi dipanggil, kendali dipindahkan ke fungsi yang dipanggil tersebut.
Ketika fungsi selesai, kendali dikembalikan ke tempat dimana fungsi dipanggil. Tanda panah di
atas adalah pemanggilan fungsi dan pengalihan kendali, sedangkan tanda panah di bawah adalah
pengembalian kendali setelah fungsi selesai melaksanakan tugasnya.

Pelaksanaan fungsi main mulai pada baris 14, yaitu penetapan 7 pada i dan 2 pada j (baris 15)
dan kemudian memanggil mak (i, j) pada baris 16.

Ketika fungsi mak dipanggil (baris 16), nilai peubah i dilakukan ke ang1 dan nilai peubah j
dilalukan ke num2. Kendali dipindahkan ke fungsi mak, dan fungsi mak dilaksanakan. Ketika
pernyataan return dalam fungsi mak dilaksanakan, fungsi mak mengembalikan kendali ke
pemanggilnya ( dalam hal ini pemanggil adalah fungsi main).

Setelah fungsi mak selesai, nilai yang dikembalikan dari fungsi mak ditetapkan pada k (baris
16). Fungsi main mencetak hasil (baris 17). Fungsi main sekarang selesai dan mengembalikan
kendali ke pemanggilnya (baris 19). Setelah itu, program berakhir.

8.8 Tumpukan panggilan (call stack)

Setiap kali fungsi dipanggil, sistem komputer menciptakan rekam pengaktifan (activation
record) yang menyimpan hujjah dan peubah untuk fungsi. Rekam pengaktifan tersebut disimpan
dalam ingatan komputer yang diistilahkan sebagai tumpukan panggilan (call stack). Tumpukan
panggilan ini disebut juga tumpukan pelaksanaan (execution stack), tumpukan waktu jalan
(runtime stack), atau tumpukan mesin (machine stack) atau hanya disingkat tumpukan (stack)
saja.

Ketika sebuah fungsi memanggil fungsi yang lain, rekam pengaktifan pemanggil diperlihara
seutuhnya dan sebuah rekam pengaktifan baru diciptakan untuk panggilan fungsi baru. Ketika
sebuah fungsi mengakhir pekerjaannya dan mengembalikan kendali ke pemanggil, rekam
pengaktifan fungsi tersebut disingkirkan dari tumpukan panggilan.

Tumpukan panggilan menyimpan rekaman pengaktifan dengan gaya “masuk terakhir keluar
lebih dahulu” (last-in, first-out, LIFO). Rekam pengaktifan dari fungsi yang dipanggil terakhir
kali, disingkirkan lebih dahulu dari tumpukan. Misalkan, fungsi f1 memanggil fungsi f2 , dan
kemudia f3. Sistem waktu jalan mendorong rekam pengaktifan f1, lalu rekam pengaktifan f2,
dan akhirnya rekam pengaktifanf3 , ke dalam tumpukan. Setelah f3 selesai, rekam
pengaktifannya disingkirkan dari tumpukan. Kemudian, setelah f2 selesai, rekam pengaktifannya
disingkirkan dari tumpukan dan akhirnya setelah f3 selesai, rekam pengaktifannya juga
disingkirkan dari tumpukan.

Memahami tumpukan panggilan dapat membantu kita mengerti bagaimana proses pemanggilan
fungsi berlangsung. Ketika fungsi main dipanggil, sebuah rekam pengaktifan diciptakan untuk
menyimpan peubah i dan j (lihat gambar 8. 12). Ingat, bahwa semua data di dalam Python
disimpan sebagai objek. Python menciptakan objek dan menyimpannya dalam ingatan terpisah
yang disebut timbunan (heap). Peubah i dan j sekarang ini mengandung nilai rujukan ke objek
int 7 dan 2, seperti terlihat dalam gambar 8. 12. a.).

tumpukan timbunan

Ruang yang
dibutuhkan oleh
fungsi main
objek int 7
i:

j:
objek int 2

a.)

8.12 .a.) Fungsi main ketika dipanggil. Timbunan (heap) digunakan untuk menyimpan objek

Fungsi mak(i, j) yang terpanggil melalukan nilai i dan j ke parameter ang1 dan ang2 di dalam
fungsi mak. Karena itu, sekarang ang1 dan ang2 merujuk pada objek int 7 dan 2, (lihat Gambar
8.12.a). Fungsi mak menemukan angka paling besar dan menetapkannya pada peubah hasil,
sehingga sekarang hasil merujuk pada objek int 7 seperti terlihat dalam gambar 8.12.b.). hasil
tersebut kemudian dikembalikan ke fungsi main dan menetapkan nilai itu ke peubah k. Sekarang
k merujuk pada objek int 7 (lihat Gambar 8.12.c). Objek di dalam timbunan secara otomatis
akan dihancurkan oleh penerjemah Python ketika tidak diperlukan lagi.
tumpukan timbunan tumpukan

Ruang yang Ruang yang


diperlukan untuk dibutuhkan untuk
fungsi mak fungsi mak
ang1 : objek int 7 hasil :
ang2 : ang1 :
ang2 :

Ruang yang Ruang yang


dibutuhkan untuk dibutuhkan untuk
fungsi main fungsi main
objek int 2
i: i:
j: j:

b.) c.)

Gambar 8.12 b.) Fungsi mak dipanggil. 8.12. c.) Fungsi mak dilaksanakan

tumpukan timbunan tumpukan

Ruang yang diperlukan


objek int 7
untuk fungsi main

i : 7 Tumpukan
sekarang kosong
j : 2
objek int 2
k:7

d.) e.)

8.12 d.) Fungsi mak diselesaikan dan mengembalikan nilai ke peubah k. Sekarang k merujuk
pada objek int 7. 8.12 e.) Fungsi main berakhir. Timbunan masih digunakan untuk menyimpan
objek.

8.9 Fungsi yang mengembalikan nilai atau tidak mengembalikan nilai

Misalkan dalam sebuah program kita membuat pernyataan seperti berikut:

>>>Kecepatan = round(50.0075, 3)
Kita memanggil fungsi round (membulatkan) yang merupakan fungsi yang terpasang dalam
modul utama Python untuk membulatkan angka, hingga tiga desimal di belakang koma. Perintah
yang diberikan kepada fungsi round dilaksanakan, dan setelah itu fungsi round menyerahkan
nilai kembali ke tempat dimana fungsi dipanggil (lihat gambar 8.13). Nilai kembalian itu
akhirnya ditetapkan pada peubah kecepatan.

Ketika fungsi lain memanggil sebuah fungsi round, fungsi pemanggil tersebut melalukan
(melewatkan/ membawa) masukan nilai yang disebut hujjah. Dalam pernyataan di atas yaitu
:50.0075 dan 3. Dengan hujjah tersebut pemanggil menginginkan fungsi round melaksanakan
perhitungan dan mengembalikan keluaran yang disebut nilai kembali. Fungsi dapat menerima
beberapa hujjah tetapi hanya mengembalikan satu nilai. Mungkin juga fungsi tidak memerlukan
hujjah, seperti fungsi random untuk menghasilkan angka acak.

fungsi dipanggil : round( )


fungsi dilaksanakan:
hujjah dilalukan : 50.0075 dan 3 round(50.0075, 3)

nilai dikembalikan dan ditetapkan nilai kembalian :50.008


pada peubah kecepatan:

kecepatan = 50.008

Gambar 8.13 Pemanggilan dan pelaksanaan fungsi serta pengembalian nilai

Fungsi yang tidak mengembalikan nilai disebut fungsi nihil (void function), misalnya:

1 # Penilaian golongan kelulusan


2 def cetakKelulusan(nilai):
3 if nilai >= 85.0 :
4 print('A')
5 elif nilai >= 75.0 :
6 print('B')
7 elif nilai >= 65.0 :
8 print('C')
9 elif nilai >= 40.0 :
10 print('D')
11 else:
12 print ('E')
13
14 def main():
15 nilai = eval(input("Masukkan nilai: "))
16 print("Angka kelulusan adalah", end = " ")
17 cetakKelulusan(nilai)
18 main() # Memanggil fungsi main
(catatan: end= “ ” artinya membentuk spasi setelah untaian ditampilkan, ketimbang membentuk
baris baru)

Misalkan kita masukkan nilai 78 :

Masukkan nilai: 78
Angka kelulusan adalah B

Supaya dapat mengembalikan nilai, kode di atas dapat dirombak menggunakan return:

1 # Penilaian golongan kelulusan


2 def ambilKelulusan(nilai):
3 if nilai >= 85.0 :
4 return('A')
5 elif nilai >= 75.0 :
6 return('B')
7 elif nilai >= 65.0 :
8 return('C')
9 elif nilai >= 40.0 :
10 return('D')
11 else:
12 return('E')
13
14 def main():
15 nilai = eval(input("Masukkan nilai: "))
16 print("Huruf kelulusan adalah", ambilKelulusan(nilai))
17
18 main() # Memanggil fungsi main

Misalkan kita masukkan nilai 60, dan kita memperoleh hasil:

Masukkan nilai: 60
Huruf kelulusan adalah D

Dalam hal ini, kita memanggil fungsi print untuk menampilkan(mencetak) nilai dengan
melalukan nilai dari fungsi ambilKelulusan(nilai) sebagai hujjah ke dalam fungsi print.

Fungsi ambilKelulusan yang didefinisikan dalam baris 3 – 12 mengembalikan nilai dalam


bentuk huruf, berdasarkan nilai berbentuk angka. Hal ini berlangsung pada baris ke 16.
Mengingat fungsi ambilKelulusan mengembalikan huruf, fungsi ini dapat dipanggil dan
digunakan sebagai mana layaknya huruf. Sedangkan fungsi cetakKelulusan tidak
mengembalikan nilai dan dia harus dipanggil sebagai pernyataan (lihat bari 17 contoh
sebelumnya).
8.10 Hujjah prasetel (default argument)

Python memungkinkan kita mendefinisikan fungsi dengan nilai hujjah prasetel. Nilai prasetel ini
akan dilalukan ke parameter ketika fungsi dipanggil tanpa hujjah.

Misalkan kita membuat sebuah reka-ulah (simulation) untuk melihat berbagai kemungkinan
jumlah kebutuhan modal seorang pengusaha kecil, kalau harga dan jumlah barang yang dibeli
mengalami perubahan:

1 def pembelian(harga = 2350, barangDibeli = 500):


2
3 kebutuhanModal = harga * barangDibeli
4 print("harga :", harga, "\tbarangDibeli :", barangDibeli,
"\tkebutuhanModal:", kebutuhanModal)
5
6 pembelian() # Hujjah prasetel dengan harga 2350 dan barangDibeli 500
7 pembelian(harga = 2450) # Kenaikan harga tetapi jumlah barang yang dibeli
tetap dengan nilai prasetel
8 pembelian(barangDibeli = 600) # Kenaikan jumlah barang yang dibeli, harga
tidak berubah
9 pembelian(harga = 2300) # Penurunan harga, jumlah yang dibeli tetap nilai
prasetel
10 pembelian(harga = 3000, barangDibeli = 700) # Harga dan jumlah dibeli
berubah
(Catatan : “\t … untuk menampilkan hasil cetakan dengan jarak ruang kosong satu tanda tab)

Hasil

harga : 2350 barangDibeli : 500 kebutuhanModal: 1175000


harga : 2450 barangDibeli : 500 kebutuhanModal: 1225000
harga : 2350 barangDibeli : 600 kebutuhanModal: 1410000
harga : 2300 barangDibeli : 500 kebutuhanModal: 1150000
harga : 3000 barangDibeli : 700 kebutuhanModal: 2100000

Baris 1 menentukan fungsi pembelian dengan parameter harga dan barangDibeli. harga
memiliki nilai prasetel 2350 dan barangDibeli 500. Baris 6 memanggil fungsi tanpa melalukan
hujjah, sehingga program menggunakan nilai prasetel 2350 yang ditetapkan pada peubah harga
dan nilai prasetel 500 untuk ditetapkan pada barangDibeli. Kita dapat mengubah nilai yang
ditetapkan pada parameter dengan memasukkan angka berbeda yang ditetapkan pada parameter.

Ada juga cara lain untuk melihat kebutuhanModal dari hasil reka-ulah, adalah menggunakan
cangkang interaktif (setelah program dijalankan) dengan mengutak-atik nilai parameter sesuai
dengan yang kita inginkan. Misal:

>>> pembelian(2435, 650)


harga : 2435 barangDibeli : 650 kebutuhanModal: 1582750
>>> pembelian(harga = 3135)
harga : 3135 barangDibeli : 500 kebutuhanModal: 1567500
>>>
8.11 Pemodulan kode

Fungsi dapat juga digunakan untuk memodulkan kode dan meningkatkan mutu penulisan
program. Dalam Python kita dapat menempatkan definisi fungsi di dalam sebuah warkah (file)
dengan ujung nama .py . Kemudian modul tersebut dapat diimpor ke dalam sebuah program
yang lain untuk digunakan kembali. Warkah modul itu harus disimpan dalam hala/ bundel
(directory/folder) yang sama dengan program Python lainnya.

Sebuah modul dapat mengandung lebih dari satu fungsi dan setiap fungsi harus memiliki nama
yang berbeda. Kita sudah menggunakan beberapa modul yang terpasang dalam perpustakaan
Python seperti math, fraction, turtle, dll., dan menggunakan fungsi (metode ) yang terdapat di
dalam modul itu.

Secarang kita coba membuat fungsi yang menghitung faktor bersama terbesar dari dua bilangan
dan memasukkan fungsi itu ke dalam sebuah modul lain;

1 # Menghitung nilai pembagai bersama terbesar (PBB)


2 def pbb(n1, n2):
3 pbb = 1 # awalnya pbb adalah 1
4 k = 2 # kemungkinan pbb
5 while k <= n1 and k <= n2:
6 if n1%k == 0 and n2%k == 0:
7 pbb = k # penetapan nilai terakhir pada pbb
8 k += 1 # kitaran dengan lonjakan 1, sama dengan k = k + 1
9 return pbb

Sekarang kita jalankan fungi tersebut dan kita coba dalam cangkang interaktif dengan berbagai
bilangan yang berbeda:

>>> pbb(29,303)
1
>>> pbb(3, 4)
1
>>> pbb(24, 80)
8

Sekarang kita membuat sebuah modul yang disimpan dalam warkah hitungPBB.py dengan
menggunakan fungsi pbb() di atas:

1 from pembagi_bersama_paling_besar.py import pbb # fungsi yang ada dalam


warkah
2 # Ajak pengguna untuk memasukkan 2 angka
3 n1 = eval(input("Masukkan satu bilangan bulat : "))
4 n2 = eval(input("Masukkan satu lagi bilangan bulat lain : "))
5 print("Pembagi bersama terbesar dari bilangan,", n1, "dan", n2, "adalah",
pbb(n1,n2))

Misalkan kita coba masukkan 1001 dan 7:

Masukkan satu bilangan bulat : 1001


Masukkan satu lagi bilangan bulat lain : 7
Pembagi bersama terbesar dari bilangan, 1001 dan 7 adalah 7

Pada baris 1 program mengimpor fungsi dengan nama pbb dari warkah
pembagi_bersama_paling_besar.py , yang memungkinkan kita memanggil fungsi pbb(n1, n2)
dalam baris 5 (lihat Gambar 8.14). Kita juga dapat mengimpor fungsi tersebut dengan pernyataan
berikut:

import pembagi_bersama_paling_besar

Dengan menggunakan pernyataan ini kita memanggil pbb dengan mengunakan metode
pembagi_bersama_paling_besar.pbb

Modul pembagi bersama terbesar Fungsi pbb dalam warkah


pembagi_bersama_paling_besar.py
# modul hitung pbb
...
... # fungsi pbb
.... def pbb(n1, n2):
...
print(…., pbb(n1,n2))
...
...
return pbb(n1,n2)

Gambar 8.14 Penggabungan suatu fungsi ke dalam sebuah modul

Dengan cara penyalutan (encapsulation) kode seperti di atas untuk mendapatkan pbb di dalam
sebuah fungsi, program ini memiliki sejumlah keunggulan:

 Penyalutan memencilkan masalah perhitungan pbb dari bagian kode lainnya dalam suatu
program, sehingga logika menjadi lebih jelas dan tulisan program lebih mudah untuk
dibaca.
 Setiap kesalahan yang mungkin terjadi dalam perhitungan pbb terbatas hanya pada
fungsi pbb saja. Hal ini bermanfaat untuk menyempitkan cakupan pencarian dan
pemendaan / pembetulan galat kode (debugging).
 Fungsi pbb dapat digunakan kembali berkali-kali ketika kita membuat program yang lain
lagi.
Di dalam Python ada tiga tingkat pemodulan:

1. Fungsi, seperti yang baru saja kita bahas.


2. Modul adalah sebuah wakah dengan ujung .py dan mengandung fungsi, penentuan
peubah dan pernyataan Python.
3. Paket (package) adalah sebuah bundel (folder) yang mengandung berbagai modul
misalnya, numpy, IPython, pandas, matplotlib, dsb., yang berguna untuk melaksanakan
operasi yang lebih rumit.

8.12 Penghalusan berjenjang (stepwise refinement)

Bayangkan, kita membuat sebuah program untuk mengendalikan mobil mandiri (tanpa sopir).
Kode yang harus ditulis, mungkin terdiri dari ribuan baris, atau bahkan dapat terdiri dari jutaan
baris, seperti dalam program sistem operasi Linux atau Windows. Kesalahan mungkin saja
terjadi di sebagian baris-baris tersebut. Karena itu, untuk mencari kesalahan dan memendanya
(debug) akan sangat sukar.

Salah satu cara yang sangat handal untuk mengatasi masalah tersebut adalah memecahkan
penulisan kode dalam beberapa bagian yang lebih kecil sehingga mudah dikelola. Apabila suatu
bagian masih sukar dikelola, bagian itu dipecahkan lagi dalam satuan yang lebih rinci lagi,
hingga satuan itu benar-benar dapat difahami dan dikelola dengan baik. Cara seperti ini disebut
penghalusan berjenjang/ bertahap (stepwise refinement).

Gambar 8.15 menunjukkan langkah-langkah yang dilakukan untuk memecahkan kode yang
panjang menjadi fungsi-fungsi lebih kecil, yang selanjutnya juga dapat dipecahkan menjadi
fungsi-fungsi lain yang lebih kecil lagi.

Penulisan kode dengan metode penghalusan berjenjang memberikan sejumlah manfaat:

1 Kode menjadi lebih sederhana.

Kode program cenderung menjadi lebih sederhana dan lebih mudah difahami ketika kode
dipecah menjadi fungsi-fungsi yang lebih kecil. Beberapa fungsi kecil, lebih mudah dibaca
ketimbang satu deret pernyataan yang panjang.

2 Kode dapat digunakan kembali berkali-kali

Fungsi juga dapat mengurangi penulisan berganda kode yang sama di berbagai tempat di dalam
suatu program. Jika suatu operasi khas dilaksanakan di tempat-tempat yang berbeda dalam suatu
program, sebuah fungsi dapat ditulis untuk melakukan operasi khas tersebut dan kemudian
dilaksanakan di tempat-tempat yang diperlukan.
def fa(): def faa():
pernyataan pernyataan def aba():
pernyataan .... pernyataan
.... ....
.... def abba():
pernyataan def ab():
pernyataan
pernyataan pernyataan
pernyataan ....
def abb():
.... pernyataan
.... ....
pernyataan def faz(): def abbb():
pernyataan pernyataan pernyataan
.... ....

Gambar 8.15 Pemecahan penulisan kode ke dalam fungsi-fungsi yang lebih kecil

3 Pengujian dapat dilakukan secara lebih baik

Ketika sebuah tugas tertentu terkandung dalam satu fungsinya sendiri, pengujian dan pemendaan
(debugging) menjadi lebih sederhana. Pengatur cara dapat menguji setiap fungsi secara terpisah
dan menentukan apakah fungsi tersebut telah melaksanakan operasinya dengan benar. Ini akan
mudah memencilkan galat dan memendanya.

4 Pembangunan/ pengembangan program yang lebih cepat

Berkat penggunaan kembali kode, pemrogram/pengatur cara tidak perlu menulis kembali kode
yang sama berkali-kali, sehingga waktu dan tenaga dapat dihemat dengan cara menggabungkan
kode yang telah ditulis sebelumnya, dalam program yang sedang ditulis atau yang akan ditulis.

5 Lebih mudah bagi pemrogram/pengatur cara untuk bergotong royong

Ketika sebuah program/atur cara dibagi ke dalam fungsi-fungsi khas untuk melaksanakan tugas
tertentu. Pembagian tugas menjadi lebih mudah dengan menugaskan setiap pemrogram untuk
hanya menulis bagian-bagian kode yang tertentu saja.
Bab IX

Pengaturcaraan Mengarah ke Objek, PMO (Object Oriented Programming, OOP)

Dalam Python, PMO adalah pilihan. Kita dapat memecahkan berbagai persoalan dengan
mengunakan paradigma pengaturcaan prosedural seperti yang telah kita bahas sebelumnya.
Prosedur adalah fungsi yang melaksanakan tugas tertentu, seperti mengumpulkan masukan dari
pengguna, melaksanakan perhitungan, membaca atau menulis warkah (file), mencetak/
menampilkan keluaran, dlsb.

Biasanya, prosedur beroperasi terhadap potongan data yang terpisah dari prosedur. Di dalam
sebuah program prosedural, potongan data biasanya dilalukan dari satu prosedur ke prosedur
yang lain. Fokus dari pemrograman prosedural adalah menciptakan prosedur yang beroperasi
terhadap data program. Pemisahan data dengan kode yang beroperasi terhadap data dapat
menimbulkan masalah, terutama ketika program bertambah besar dan lebih rumit.

Walaupun tuturan seperti gelung, fungsi, pilihan, dsb., dapat digunakan untuk memecahkan
berbagai persoalan yang rumit, namun demikian, untuk membuat sistem perangkat lunak skala
besar secara efektif, kita membutuhkan pendekatan PMO.

9.1 Medan data (data field) atau peubah umpama (instance variabel)

Kalau pemrograman prosedural berpusat pada penciptaan prosedur (fungsi), PMO berpusat pada
penciptaan objek. Objek adalah satuan dari perangkat lunak yang mengandung data dan prosedur
(fungsi). Sebuah objek mewakili sebuah kesatuan di dalam dunia nyata yang dapat dikenali
secara beda dengan kesatuan yang lain. Sebagai contoh: rumah, santri, baju, mobil, dlsb., dapat
dianggap sebagai objek.

Sama seperti fungsi, objek adalah peniskalaan (abstraction). Sebuah fungsi membungkus
algoritma dalam sebuah operasi tunggal yang dapat dipanggil dengan nama. Sebuah objek
membungkus suatu himpunan nilai data – keadaan objek – dan sehimpunan operasi – metode
objek – ke dalam satu kesatuan yang dapat dipanggil dengan sebuah nama. Hal ini membuat
objek menjadi sebuah peniskalaan yang lebih rumit dari fungsi.

Setiap objek memiliki tanda pengenal, seperti NIK (Nomor Induk Kependudukan). Ketika
sebuah pernyataan dijalankan, Python segera menetapkan nomor identitas unik pada setiap objek
(lihat Bagian 6.1). Nomor ini tidak akan diubah selama pelaksanaan program. Namun, Python
dapat menetapkan nomor identitas yang berbeda pada pelaksaan program tersebut di lain waktu.

Keadaan objek (yang dikenal juga sebagai sebutan [attribrutes] atau sifat [properties])
diwakilkan oleh peubah, yang disebut medan data (data field) atau disebut juga peubah
umpama (instance variable). Sebuah objek lingkaran memiliki medan data jari-jari r (radius),
yang merupakan sebuah sebutan/ sifat yang mencirikan sebuah lingkaran. Sedangkan, sebuah
objek persegi panjang memiliki medan data panjang p dan lebar l, yang merupakan sebutan/ sifat
yang mencirikan persegi panjang (lihat Gambar 9.1).

r=2 p=2
l =3

medan data
r=1 p=1
l =2

Gambar 9.1. Objek dari golongan Lingkaran dan objek dari golongan Persegi_panjang dengan
sebutan atau sifat yang berbeda-beda yang diwakili oleh peubah umpama atau medan data

Prosedur yang dilaksanakan oleh objek disebut sebagai metode. Jadi, metode objek adalah fungsi
yang melaksanakan operasi terhadap data dari objek. Python menggunakan metode untuk
menentukan perilaku objek (juga disebut tindakan [action]). Kita meminta objek untuk
melakukan sebuah tindakan dengan cara memanggil metode pada objek tersebut.

Sebagai contoh kita dapat mendefinisikan/menentukan metode yang dinamakan hitungLuas()


dan hitungKeliling() untuk objek lingkaran. Kemudian, objek lingkaran dapat memanggil
metode hitungLuas() untuk mengembalikan nilai luas sebuah lingkaran; dan memanggil metode
hitungKeliling() untuk mengembalikan nilai keliling lingkaran.

Objek yang berjenis sama ditentukan dengan cara menggunakan golongan bersama (common
class). Golongan Python menggunakan peubah untuk menyimpan medan data dan menentukan
metode untuk melaksanakan tindakan. Sebuah golongan adalah acuan (template) – atau disebut
juga sebuah kontrak (contract) atau cetak biru (blueprint) – yang menentukan apa yang akan
menjadi medan data objek dan metodenya. Golongan menentukan sifat dan perilaku untuk objek-
objek yang dikandungnya.

Kalau untuk masuk ke dalam sebuah fungsi, kita harus mengenal kode yang terkandung dalam
penentuan/ definisinya. Demikian juga, kalau ingin melihat ke dalam objek, kita harus mengenal
kode yang terkandung dalam golongan dari objek. Penentuan/ definisi golongan adalah seperti
acuan atau cetak biru untuk setiap objek yang berada di dalam suatu golongan. Cetak biru ini
mengandung penentuan dari semua metode yang dikenali oleh objek dan gambaran dari tatanan
data (data structure) yang digunakan untuk memelihara keadaan objek (sebutan objek) dari sudut
pandang penulis kode (lihat Gambar 9.2).

Nama Golongan: Lingkaran


kontrak /cetak biru
/acuan Golongan
Medan data :
jari_jari yaitu ____

Metode:
hitungLuas
hitungKeliling
setelJari_Jari

Tiga objek dari Golongan Lingkaran

Objek Lingkaran 1 Objek Lingkaran 2 Objek Lingkaran 3

medan data: medan data: medan data:


jari_jari yaitu 1 jari_jari yaitu 5 jari_jari yaitu 25

Gambar 9.2 Golongan Lingkaran dengan tiga objek (umpama)

Sebuah objek adalah umpama (instance) dari sebuah golongan, dan kita dapat menciptakan
banyak objek (umpama) dari sebuah golongan. Karena itu, golongan dapat dibaratkan seperti
sebuah patron/ acuan yang digunakan penjahit atau cetak biru bagi tukang bangunan. Penjahit
dapat membuat beberapa pakaian dari sebuah patron dengan mengubah ukuran supaya sesuai
dengan tubuh pemakai pakaian. Demikian juga tukang bangunan yang dapat membuat beberapa
rumah dari satu cetak biru. Penciptaan sebuah umpama disebut pengumpamaan /
pengejawantahan (instantiation) sebuah umpama. Istilah objek dan umpama sering
dipertukarkan: umpama adalah objek dan objek adalah umpama.

Kita dapat menciptakan beberapa objek yang kita perlukan dalam sebuah golongan. Dalam
Gambar 9.2 diperlihatkan sebuah contoh golongan yang bernama Lingkaran dan memiliki tiga
objek (menurut kesepakatan nama golongan dimulai dengan huruf besar guna membedakannya
dengan nama peubah).
9.2 Menentukan / mendefinisikan golongan

Golongan menggunakan peubah untuk menyimpan medan data dan menentukan/ mendefinisikan
metode, yang merupakan fungsi yang melekat pada golongan.

Secara umum, hal-hal yang menyangkut dengan fungsi yang telah dibahas sebelumnya juga
diterapkan terhadap metode. Perbedaan metode dengan fungsi menyangkut pada dua hal:

 Metode ditentukan /didefinisikan sebagai bagian dari penentuan/ definisi golongan.


 Parameter peubah pertama dari metode disebut swa (self).

Golongan juga menyediakan metode khusus, __init__ sebagai pemrakarsa/ pemulai (initializer) ,
yang dipanggil untuk memprakarsai (memulai) keadaan objek baru, ketika objek tersebut
diciptakan. Pemrakarsa dapat melaksanakan sembarang tindakan, namun pemrakarsa dirancang
untuk melakukan tindakan awal, seperti menciptakan medan data objek, dengan nilai awal.
Metode __init__ memiliki dua garis bawah di depan dan dibelakang, yang sengaja diciptakan oleh
Python untuk membedakan nama metode prasetel Python, dengan nama metode yang diciptakan
oleh pengatur cara (programmer).

Python menggunakan sintaksis berikut untuk menentukan/ mendefinisikan sebuah golongan:

class NamaGolongan:
pemrakarsa
metode

Contoh program berikut menentukan golongan Lingkaran. Nama golongan didahului oleh kata
kunci class dan diakhiri dengan titik dua (:). Pemrakarsa selalu dinamakan __init__ , yang
merupakan sebuah metode khusus. Sebuah medan data jari_jari diciptakan di dalam pemrakarsa
(garis 6). Metode hitungLuas dan hitungKeliling ditentukan untuk mengembalikan nilai luas
dan keliling dari sebuah lingkaran (baris 8-12).

1 import math
2
3 class Lingkaran:
4 # Membangun objek lingkaran
5 def __init__(swa, jari_jari = 1):
6 swa.jari_jari = jari_jari
7
8 def hitungLuas(swa):
9 return swa.jari_jari * swa.jari_jari * math.pi
10
11 def hitungKeliling(swa):
12 return 2 * swa.jari_jari * math.pi
13
14 def setelJari_jari(swa, jari_jari):
15 swa.jari_jari = jari_jari
9.3 Membangun objek

Begitu golongan ditentukan/ didefinisikan, kita dapat menciptakan objek dari golongan dengan
pembangun (constructor). Pembangun melakukan dua hal:

 Pembangun menciptakan sebuah objek untuk golongan,dalam ingatan komputer.


 Pembangun memanggil metode __init__ golongan untuk memprakarsai (memulai) objek.

Semua objek, termasuk pemrakarsa, memiliki parameter pertama swa(self). Parameter ini
merujuk pada objek yang memanggil metode. Parameter swa dalam metode __init__secara
otomatis disetel untuk merujuk pada objek yang baru saja diciptakan.

Sintaksis untuk pembangun yaitu:

NamaGolongan(hujjah)

Gambar 9.3 menunjukkan bagaimana sebuah objek diciptakan dan diprakarsai (dimulakan).
Setelah objek tersebut diciptakan, swa digunakan untuk merujukkan objek.

Penciptaan objek untuk Medan Data


golongan dalam ingatan objek:
komputer.

Pemanggilan metode
__init__(swa,.. . )
__init__ golongan untuk
memprakarsai objek

Gambar 9.3 Peran pembangun dalam penciptaan objek dalam ingatan komputer dan memanggil
pemrakarsa.

Hujjah dari pembangun bersesuaian dengan dengan parameter dalam metode __init__ tanpa swa.
Sebagai contoh: mengingat metode __init__ (baris 5 dalam contoh di atas) ditentukan sebagai
__init__(swa, jari_jari = 1), maka untuk membangun sebuah objek Lingkaran dengan jari_jari
5, kita perlu menggunakan Lingkaran(5).

Gambar 9.4 Menunjukkan dampak dari pembangunan sebuah objek Lingkaran dengan
menggunakan Lingkaran(5). Pertama sebuah objek Lingkaran diciptakan di dalam ingatan, dan
kemudian pemrakarsa dipanggil untuk menyetel jari_jari ke angka 5.
1..Menciptakan sebuah objek Lingkaran
objek Lingkaran

2.. Memanggil objek Lingkaran


__int__(swa, jari_jari) dengan jari_jari 5

Gambar 9.4 Sebuah objek Lingkaran dibentuk dengan menggunakan Lingkaran(5)

Pemrakarsa dalam golongan Lingkaran memiliki nilai prasetel (default) jari_jari yaitu 1.
Pembangun, lalu menciptakan sebuah objek Lingkaran dengan jari_jari dengan nilai prasetel 1 :

Lingkaran() # golongan Lingkaran dengan nilai jari_jari 1

9.4 Mencapai anggota-anggota objek

Sebuah anggota objek merujuk pada medan data dan metodenya. Medan data juga disebut
peubah umpama (instance variable), karena setiap objek (umpama) memiliki nilai khas untuk
sebuah medan data. Metode juga disebut metode umpama (instance method), karena sebuah
metode dipanggil oleh sebuah objek (umpama) untuk melakukan tindakan terhadap objek:
misalnya menggantikan nilai di medan data untuk objek tersebut.

Dalam rangka mencapai sebuah medan data objek, dan memanggil sebuah metode objek, kita
perlu menetapkan objek tersebut ke sebuah peubah dengan menggunakan sintaksis berikut:

peubahRujukanObjek = NamaGolongan(hujjah)

Misal:

lingkaran1 = Lingkaran(5)
lingkaran2 = Lingkaran()

Kita dapat mencapai medan data objek dan memanggil metodenya dengan menggunakan
operator titik (.) (dot operator). Operator titik tersebut juga disebut operator pencapai anggota.
Sintaksis untuk menggunakan operator titik adalah:

peubahRujukanObjek.medandata
peubahRujukanObjek.metode(hujjah)

Misal: Kode berikut mencapai medan data jari_jari (baris 3), dan kemudian memanggil metode
hitungLuas (baris 5) dan metode hitungKeliling(baris 7). Perhatikan bahwa baris 1 yaitu
mengimpor golongan Lingkaran ditentukan dalam modul Lingkaran dari contoh sebelumnya
(disimpan dalam warkah objek_lingkaran.py).

1 >>> from objek_lingkaran import Lingkaran


2 >>> lingkaran1 = Lingkaran(5)
3 >>> lingkaran1.jari_jari
4 5
5 >>> lingkaran1.hitungLuas()
6 78.53981633974483
7 >>> lingkaran1.hitungKeliling()
8 31.41592653589793
9 >>>

9.5 Parameter swa(self)

Sebelumnya dapat dilihat bahwa parameter pertama untuk setiap metode yang ditentukan adalah
swa. Parameter ini digunakan dalam perwujudan metode, tetapi tidak digunakan ketika metode
dipanggil. Lalu untuk apa itu parameter swa dan mengapa Python membutuhkannya?

swa adalah parameter yang merujukkan dirinya sendiri. Dengan menggunakan swa, kita dapat
mencapai anggota objek dalam sebuah penentuan golongan. Misal, kita dapat menggunakan
sintaksis swa.x untuk mencapai peubah umpama x dan sintaksis swa.m1() untuk memanggil
metode m1 untuk objek swa di dalam sebuah golongan, seperti ditunjukkan oleh gambar 9.5.

Begitu golongan diciptakan, cakupan dari peubah umpama (instance variable) adalah
keseluruhan golongan. Dalam gambar 9.5 swa.x adalah peubah umpama yang diciptakan dalam
metode __init__. Peubah ini dapat dicapai dalam metode m2. Peubah umpama swa.y disetel pada
nilai 2 dalam metode m1 dan disetel pada nilai 3 dalam m2.
def NamaGolongan:

def __init__(swa, …):


swa.x = 1 # menciptakan/merombak x

def m1(swa, …):


swa.y = 2 # menciptakan/merombak y
Cakupan

z = 5 # menciptakan/merombak z swa.x dan
Cakupan z swa.y

def m2(swa, …):


swa.y = 3 # menciptakan/merombak y

u = swa.x+1 # menciptakan/merombak u
swa.m1(…) # memanggil m1

Gambar 9.5 Cakupan dari peubah umpama adalah keseluruhan golongan

Kita juga dapat menciptakan peubah setempat di dalam sebuah metode. Cakupan dari peubah
setempat adalah dalam metode tersebut. Peubah setempat z diciptakan di dalam metode m1 dan
cakupannya adalah dari penciptaannya hingga ke akhir metode m1. (lihat Gambar 9.5)

Contoh pemrograman yang menggunakan golongan

Program ini membangun tiga lingkaran dengan jari-jari masing-masing1, 5, dan 25, lalu
menampilkan jari-jari dan luas dari setiap lingkaran. Program tersebut kemudian mengganti jari-
jari objek kedua dengan nilai 50 (baris 1 hingga baris 15 merupakan contoh program pada bagian
9.2 ).

1 import math
2
3 class Lingkaran:
4 # Membangun objek lingkaran sebagai acuan atau cetak biru
5 def __init__(swa, jari_jari = 1):
6 swa.jari_jari = jari_jari
7
8 def hitungLuas(swa):
9 return swa.jari_jari * swa.jari_jari * math.pi
10
11 def hitungKeliling(swa):
12 return 2 * swa.jari_jari * math.pi
13
14 def setelJari_jari(swa, jari_jari):
15 swa.jari_jari = jari_jari
16
17 def main():
18 # menciptakan lingkaran1 dengan jari_jari 1
19 lingkaran1 = Lingkaran()
20 print("Luas lingkaran dengan jari-jari",
lingkaran1.jari_jari, "adalah", lingkaran1.hitungLuas())
21
22 # menciptakan lingkaran2 dengan jari_jari 5
23 lingkaran2 = Lingkaran(5)
24 print("Luas lingkaran dengan jari-jari",
lingkaran2.jari_jari, "adalah", lingkaran2.hitungLuas())
25
26 # menciptakan lingkaran3 dengan jari_jari 25
27 lingkaran3 = Lingkaran(25)
28 print("Luas lingkaran dengan jari-jari",
lingkaran3.jari_jari, "adalah", lingkaran3.hitungLuas())
29
30 # merombak jari_jari lingkaran
31 lingkaran2.jari_jari = 50 # atau lingkaran2.setelJari_jari(50)
32 print ("Luas lingkaran dengan jari_jari",
lingkaran2.jari_jari, "adalah", lingkaran2.hitungLuas())
33
34 main() #memanggil fungsi main

Program tersebut menggunakan golongan Lingkaran untuk menciptakan objek-objek


Lingkaran. Program yang menggunakan golongan (seperti Lingkaran di atas) sering disebut
sebagai pelanggan (client) dari golongan.

Golongan Lingkaran ditentukan dalam baris ke 3 hingga ke 15. Dari baris ke 17 hingga ke baris
31, program tersebut menciptakan sebuah objek Lingkaran dengan jari-jari prasetel 1 (baris 19),
dan dua objek Lingkaran dengan nilai jari-jari masing-masing 5 dan 25 (baris 23 dan 27).
Program kemudian mengambil sifat jari_jari dan memanggil metode hitungLuas() pada
objek-objek tersebut untuk memperoleh luas dari masing-masing lingkaran (baris 20, 24 dan 28).
Program akhirnya menyetel sifat jari_jari baru pada lingkaran2 menjadi 50 (baris 31). Hal ini
juga dapat dilakukan dengan kode lingkaran2.setelJari-jari(50).

9.6 Diagram golongan UML

Ilustrasi dari acuan golongan dapat dibakukan dengan menggunakan tatatanda UML (Unified
Modeling Language/ Bahasa Pemodelan Bersatu). Pencatatan,yang disebut diagram golongan
UML atau hanya diagram golongan saja adalah suatu gambaran mandiri, yang mana bahasa
pemrograman selain Python juga menggunakan pemodelan dan pencatatan yang sama. Dalam
diagram golongan UML, medan data dapat dicatat sbb:

namaMedanData: jenisMedanDana

Pembangun yaitu:

namaGolongan(namaParameter: jenisParameter)

Penulisan metode adalah:

namaMetode(namaParameter: jenisParameter): jenisKembali (returnType)

Contoh

Diagram Golongan UML Lingkaran Nama golongan

Jari_jari: float Medan data

Lingkaran(jari_jari = 1: float) Pembangun


hitungLuas(): float Metode
hitungKeliling(): float
setelJari_jari(jari_jari: float): None

lingkaran1: Lingkaran lingkaran2 : Lingkaran Lingkaran3: Lingkaran Tatatanda UML


untuk objek
jari_jari = 1 jari_jari = 5 jari_jari = 25

Gambar 9.6 Golongan dan objek dapat digambarkan dengan menggunakan UML

Penentuan metode di dalam golongan selalu memiliki parameter swa , tetapi tidak dimasukkan
dalam diagram UML, karena pelanggan (client) tidak perlu tahu parameter ini dan tidak
menggunakan parameter ini untuk memanggil metode.

Metode __init__ juga tidak perlu ditulis dalam diagram UML, karena metode ini dipanggil oleh
pembangun dan parameternya sama dengan parameter pembangun.

Diagram UML berguna sebagai kontrak (acuan) bagi pelanggan sehingga pelanggan tahu
bagaimana menggunakan golongan. Diagram UML juga menjelaskan kepada pelanggan
bagaimana menciptakan objek dan bagaimana memanggil metode terhadap objek tersebut.

9.7 Objek tak berubah (immutable object) dan objek berubah (mutable object)
Angka dan untaian adalah objek tak berubah bentuk di dalam Python, yakni isinya tidak dapat
berubah. Ketika sebuah objek tak berubah dilalukan ke sebuah fungsi, objek tersebut tidak akan
berubah. Namun, jika kita melalukan objek berubah ke dalam sebuah fungsi, isi dari objek dapat
berubah.

Untuk objek tak berubah, misalkan kita menentukan/mendefinisikan sebuah fungsi:

>>> def f(x):


>>> x = 3

Kemudian kita menetapkan nilai 7 pada pada peubah a :

>>> a = 7

Dalam pernyataan penetapan, objek bilangan bulat tercipta dan diberikan nama a seperti dalam
gambar berikut.

cangkang interaktif

a 7

Gambar 9.7 Penciptaan objek bilangan bulat 7. Objek bilangan bulat 7 ditetapkan nama a di
dalam program utama, yaitu dalam cangkang interaktif.

Sekarang kita panggil fungsi f(x)dengan nama a sebagai hujjah atau parameter masukan :

>>> f(a)

Ketika pemanggilan fungsi ini dilakukan, hujjah a dinilai sebagai objek bilangan bulat 7.
Padahal, fungsi f() ditentukan sebagai:

def f(x):
x=3

Nama x dalam def f(x) sekarang disetel untuk merujuk pada masukan objek bilangan bulat 7.
Seolah-olah fungsif(x) melaksanakan penetapan x = a
cangkang interaktif

7
fungsi f()

Gambar 9.8 Panggilan fungsi f(a) melalukan rujukan a sebagai masukan hujjah. Peubah x yang
ditentukan pada awal pelaksanaan f(), akan ditetapkan pada rujukan ini. Baik a maupun x
merujuk pada objek yang sama.

Pada saat permulaan pelaksanaan f(a), dua peubah merujuk pada objek 7 (lihat Gambar 9.8).
Ketika berlangsung pelaksanaan f(a), pada peubah x ditetapkan nilai 3. Mengingat objek
bilangan bulat tak berubah, x tidak lagi merujuk pada 7 tetapi pada objek bilangan bulat 3.
Namun demikian, peubah a tetap merujuk pada objek 7 (lihat Gambar 9.9)

cangkang interaktif

a 7

fungsi f()

3
x

Gambar 9.9. Ketika x = 3 dijalankan, x akan merujuk pada objek bilangan bulat baru dengan
nilai 3. Objek bilangan bulat dengan nilai 7 tidak berubah. Nama a di dalam program utama,
cangkang interaktif, masih merujuk pada 7.

Fungsi f() tidak dapat merombak nilai a dalam cangkang interaktif. Ketika pemanggilan dan
pelaksaaan sebuah fungsi, fungsi tidak dapat merombak nilai dari setiap peubah yang dilalukan
sebagai hujjah, jika peubah tersebut merujuk pada objek tak berubah.

Namun, kalau yang dilalukan adalah objek dapat berubah (mutable), fungsi dapat merombak
objek tersebut. Misalkan sebuah fungsi g() ditentukan/didefinisikan:
>>> def g(lst):

>>> lst[0] = 9

Apa yang terjadi ketika kita menjalankan pernyataan berikut:

>>> daftarSaya = [7, 2, 6, 10]

>>> g(daftar saya)

Dalam pernyataan penetapan, sebuah objek daftar diciptakan dan ditetapkan nama daftarSaya.
Kemudian, panggilan fungsi g(daftarSaya) dilakukan. Ketika fungsi g() memulai pelaksanaan,
daftar yang dirujukkan ke daftarSaya akan ditetapkan dengan nama peubah lst yang ditentukan
dalam penentuan fungsi g(). Keadaannya dapat dilihat pada Gambar (9.10).

cangkang interaktif
daftarSaya

[7, 2, 6, 10]
fungsi g()

lst

Gambar 9.10 Panggilan fungsi g() melalukan rujukan daftar sebagai hujjah. Sehingga nama
daftarSaya dalam cangkang interaktif dan lst di dalam h() merujuk pada daftar yang sama

Ketika melaksanakan fungsi h(), list[0] ditetapkan 9 , sehingga ungkapan lst[0] akan merujuk
pada objek baru yaitu 9. Karena objek bersifat dapat berubah (mutable), objek daftar dirujuk
oleh perubahan lst. Mengingat peubah daftarSaya di dalam cangkang interaktif merujuk pada
objek daftar yang sama, ini berarti bahwa objek daftar yang dirujukkan oleh objek daftarSaya
juga berubah (lihat Gambar 9.11) .
cangkang interaktif
daftarSaya

[9, 2, 6, 10]
fungsi g()

lst

Gambar 9.11. Fungsi dapat merombak hujjah yang dapat berubah. Mengingat daftar dapat
berubah, penetapan lst[0] = 9 menggantikan bilah daftar yang terdapat pada indeks 0 dari nilai
7 menjadi 9. Berhubung nama daftarSaya berada di program utama, yaitu dalam cangkang
interaktif, perubahan akan nampak di program utama.

Contoh di atas menunjukkan bahwa ketika sebuah objek yang dapat berubah, seperti daftar [7, 2,
6, 10] dilalukan sebagai hujjah dalam panggilan fungsi, objek tersebut dapat diubah oleh fungsi.

Contoh:

1 import math
2
3 class Lingkaran:
4 # Membangun objek lingkaran
5 def __init__(swa, jari_jari = 1):
6 swa.jari_jari = jari_jari
7
8 def hitungLuas(swa):
9 return swa.jari_jari * swa.jari_jari * math.pi
10
11 def hitungKeliling(swa):
12 return 2 * swa.jari_jari * math.pi
13
14 def setelJari_jari(swa, jari_jari):
15 swa.jari_jari = jari_jari
16
17 def main():
18 # ciptakan objek lingkaranSaya dengan jari_jari 1
19 lingkaranSaya = Lingkaran()
20
21 # cetak luas lingkaran dengan jari_jari 1, 2, 3, 4, dan 5
22 n = 5
23 cetakLuas(lingkaranSaya, n)
24
25 # tampilkan lingkaranSaya.jari_jari hingga n kali
26 print("n\Jari_jari adalah", lingkaranSaya.jari_jari)
27 print("n adalah", n)
28
29 # cetak tabel luas berdasarkan jari_jari
30 def cetakLuas(ling, kali):
31 print("jari_jari\k\luas_k")
32 while kali >= 1:
33 print(ling.jari_jari, "\k", ling.hitungLuas())
34 ling.jari_jari = ling.jari_jari + 1
35 kali = kali - 1
36
37 main() # memanggil fungsi main

Hasilnya:

jari_jari \k\luas_k
1k 3.141592653589793
2k 12.566370614359172
3k 28.274333882308138
4k 50.26548245743669
5k 78.53981633974483
n\Jari_jari adalah 6
n adalah 5

Ketika kita melalukan sebuah objek ke sebuah fungsi, rujukan objek dilalukan ke fungsi tersebut.
Namun, ada perbedaan penting antara pelaluan objek tak berubah dengan pelaluan objek
berubah.

 Untuk hujjah dari sebuah objek tak berubah seperti angka dan untaian, nilai asli dari
objek tersebut tidak berubah di luar fungsi tersebut.
 Untuk hujjah dari sebuah objek berubah seperti lingkaran, nilai asli dari objek tersebut
berubah jika isi dari objek diubah di dalam fungsi.

Pada baris 34, sebutan/ sifat jari_jari dari objek Lingkaran yakni ling dilonjakkan sebesar 1
untuk setiap kitaran (iteration). ling.jari_jari + 1 menciptakan objek baru int , yang ditetapkan
pada ling.jari_jari . lingkaranSaya dan ling keduanya menunjuk pada objek yang sama.
Ketika fungsi cetakLuas berakhir, ling.jari_jari adalah 6. Sehingga hasil yang ditampilkan
untuk lingkaranSaya.jari_jari adalah 6 (dari baris 26).

Pada baris 35 , kali – 1 menciptakan sebuah objek baru int , yang ditetapkan kepada kali. Di
luar fungsi cetakLuas , n tetap 5. Sehingga hasil tampilan untuk n adalah 5 (dari baris 27).

9.8 Menyembunyikan medan data

Tujuan menyembunyikan medan data adalah untuk melindungi data kebersendirian (data
privacy) dan membuat golongan mudah dirawat.
Kita dapat mencapai medan data melalui peubah umpama (instance variable) secara langsung
melalui sebuah objek, yang memperbolehkan kita mencapai jari-jari lingkaran dari ling.jari_jari.
Tindakan tersebut adalah sah. Misal:

>>> ling = Lingkaran(5)


>>> ling.jari_jari = 5.4 # Mencapai peubah umpama secara langsung
>>> print(ling.jari_jari) # Mencapai peubah umpama secara langsung
5.4
>>>

Namun demikian, pencapaian langsung ke medan data dalam sebuah objek bukan merupakan
tindakan yang baik, karena dua alasan:

 Data dapat diubah baik secara sengaja ataupun tidak.


 Golongan menjadi sukar untuk dipelihara dan rentan menimbulkan pepijat (bug/ galat
program). Bayangkan kita ingin merombak golongan Lingkaran untuk menjamin bahwa
jari_jari tidak negatif setelah program-program lain menggunakan golongan tersebut.
Kita bukan saja harus merubah golongan Lingkaran tersebut, tetapi juga harus mengubah
semua program-program lain yang telah menggunakan golongan itu, karena pelanggan
dapat merombak jari_jari secara langsung. Misal : lingkaranSaya = -5.

Untuk mencegah perombakan langsung medan data, kita tidak memperbolehkan pelanggan
untuk mencapai medan data secara langsung. Tindakan ini disebut penyembunyian data (data
hiding). Hal ini dapat dilakukan dengan menentukan ladang data pribadi (private data field).
Di dalam Python ladang data pribadi ditentukan dengan dua garis bawah mendulu (leading
underscore).

Ladang data pribadi dan metode pribadi dapat dicapai dari dalam golongan, tetapi tidak dapat
dicapai dari luar golongan. Untuk membuat medan data dapat dicapai oleh pelanggan, kita
menyediakan sebuah metode ambil (get/ peroleh) untuk mengembalikan nilainya. Untuk
memungkinkan sebuah medan data dirombak, kita menyediakan sebuah metode setel (set) untuk
menyetel sebuah nilai baru.

Sebuah metode ambil memilili judul berikut:

def ambilNamaSebutan(swa):
(def getAttributeName(self))

Jika jenis pengembalian adalah nilai Boole, metode get tersebut ditentukan sesuai dengan
kesepakatan berikut:

def apakahNamaSebutan(swa):
(def isAttributeName(self))

Sebuah metode set memiliki judul berikut:

def setelNamaSebutan(swa, nilaiSebutan):

Contoh berikut adalah perombakan golongan Lingkaran dari contoh sebelumnya dengan
menentukan sebutan/sifat jari_jari sebagai pribadi dengan cara menempatkan dua tanda garis
bawah di depan nama sifat (baris 6, 9 12, dan 15))

1 import math
2
3 class Lingkaran:
4 # Membangun objek lingkaran dengan menyembunyikan data
5 def __init__(swa, jari_jari = 1):
6 swa.__jari_jari = jari_jari
7
8 def ambilJari_jari(swa):
9 return swa.__jari_jari
10
11 def hitungLuas(swa):
12 return swa.__jari_jari * swa.__jari_jari * math.pi
13
14 def hitungKeliling(swa):
15 return 2 * swa.__jari_jari * math.pi

Sifat jari_jari tidak dapat dicapai secara langsung dalam golongan Lingkaranini. Namun, kita
dapat membacanya dengan menggunakan metode hitungJari_jari.

Misal:

1 >>> from sembunyi_data_lingkaran import Lingkaran


2 # dari warkah sembunyi_data_lingkaran
3 >>> ling = Lingkaran(25)
4 >>> ling.__jari_jari
5 Traceback (most recent call last):
6 File "<pyshell#14>", line 1, in <module>
7 ling.__jari_jari
8 AttributeError: 'Lingkaran' object has no attribute '__jari_jari'
9 >>> ling.ambilJari_jari()
10 25
11 >>>

Baris 1 mengimpor golongan Lingkaran dari modul sembunyi_data_lingkaran (nama warkah).


Baris 3 menciptakan sebuah objek Lingkaran. Baris 4 percobaan mencapai sifat __jari_jari.
Tindakan ini menyebabkan galat (baris 5 – 8), karena __jari_jari adalah pribadi. Namun
demikian, kita dapat menggunakan metode ambilJari_jari() dan mengembalikan jari_jari (baris
10)

9.9. Peniskalaan (abstraction) dan penyalutan (encapsulation) golongan

Peniskalaan golongan adalah konsep yang memisahkan perwujudan (implementation) golongan


dengan penggunaan golongan. Rincian perwujudan golongan tidak kelihatan dari pengguna.
Tindakan ini dikenal sebagai penyalutan golongan.

Pencipta sebuah golongan menjelaskan fungsi golongan dan memperbolehkan pelanggan


mengetahui bagaimana golongan digunakan. Kumpulan metode dari golongan, bersama dengan
pengenalan bagaimana metode-metode tersebut diharapkan berperilaku, berguna sebagai kontrak
sebuah golongan dengan pelanggan.

Pengguna golongan tidak perlu tahu bagaimana golongan diwujudkan. Rincian dari perwujudan
terbungkus dan tersembunyi dari pengguna, yang disebut sebagai penyalutan golongan.
Ringkasnya: penyalutan menyatukan data dan metode ke dalam objek tunggal, dan
menyembunyikan medan data dan perwujudan metode dari pengguna (lihat Gambar 9.12).

Perwujudan golongan
adalah seperti kotak
Golongan Kontrak Golongan Pelanggan menggunakan
hitam yang tersembunyi
(judul dari pemrakarsa golongan melalui kontrak
dari pelanggan
dan metode) golongan

Gambar 9.12. Peniskalaan golongan memisahkan perwujudan golongan dari penggunaan


golongan

Contoh: kita dapat menciptakan objek Lingkaran dan mendapatkan luas lingkaran tanpa
mengetahui secara rinci bagaimana luas dihitung. Karena alasan ini, golongan disebut juga
sebagai jenis data niskala (abstract data type/ ADT).

Peniskalaan golongan dan penyalutan golongan adalah dua sisi dari uang logam yang sama.
Banyak contoh dalam kehidupan nyata menggambarkan konsep peniskalaan. Katakanlah sebuah
mobil yang mengandung ratusan komponen seperti mesin, rem, ban, as, setir, tangki bensin,
kipas, dll. Tiap komponen dapat dilihat sebagai objek yang memiliki sifat dan metode. Supaya
semua komponen dapat bekerja sama, kita hanya perlu tahu bagaimana setiap komponen
digunakan dan bagaimana ia berantartindak (interact) antara satu dengan yang lain. Kita tidak
perlu tahu bagaiman bagian dalam komponen bekerja. Perwujudan bagian dalam mobil
dibungkus dari kita sebagai pengguna. Namun demikian, kita dapat membuat sebuah mobil tanpa
perlu tahu bagaimana sebuah komponen diwujudkan.
Analogi dari mobil merupakan cerminan yang sangat tepat dari pendekatan mengarah ke objek.
Setiap komponen dapat dilihat sebagai objek dari golongan untuk komponen tersebut. Sebagai
contoh: kita dapat memiliki sebuah golongan yang menentukan ban untuk digunakan dalam
sebuah mobil , dengan sifat seperti ukuran ban, lebar tapak, jenis kabel ban, dll., dan metode
seperti tekanan angin yang disi ke dalam ban, memperperbaiki ketika bocor, dsb. Ban yang
khusus merupakan umpama dari golongan ban dengan nilai sifat-sifat khusus.

Contoh: Perhitungan cicilan pinjaman dengan paradigma OOP

Suatu pinjaman tertentu dari lembaga keuangan ribawi dapat dilihat sebagai sebuah objek dari
golongan Pinjaman. Sifat-sifat Pinjaman adalah tingkat bunga, jumlah yang dipinjam, dan
jangka waktu peminjaman. Metode Pinjaman adalah perhitungan cicilan bulanan dan
pembayaran seluruhnya.

Ketika membeli rumah secara kredit, misalnya, sebuah objek pinjaman diciptakan dengan
mengumpamakan (instantiating) golongan Pinjaman dengan tingkat bunga yang dibebankan
kepada peminjam, jumlah kredit yang dikucurkan dan jangka waktu pinjaman yang diberikan.
Sebagai pengguna golongan Pinjaman , kita tidak perlu tahu bagaimana metode-metode
tersebut diwujudkan.

Contoh kode program peminjaman yang tertulis pada bagian 7.3 tidak dapat digunakan di dalam
program yang lain. Satu cara yang dapat digunakan untuk mengatasi masalah ini adalah dengan
menentukan fungsi untuk menghitung cicilan bulanan dan pembayaran seluruhnya. Namun, cara
ini memiliki keterbatasan, misalnya kita tidak dapat mengaitkan seorang peminjam dengan
pinjaman. Tanpa menggunakan objek tidak ada cara yang baik untuk mengikat peminjam dengan
pinjaman.

Paradigma pemrograman tradisional berdasarkan prosedur adalah didorong oleh tindakan : data
dipisahkan dari tindakan. Paradigma OOP berfokus pada objek, sehingga tindakan ditentukan
seiring dengan data di dalam objek. Untuk mengikat sorang peminjam dengan pinjaman, kita
dapat menentukan sebuah golongan pinjaman dengan peminjam bersama dengan sifat-sifat yang
lain dari pinjaman sebagai medan data. Sebuah objek pinjaman akan mengandung data dan
tindakan untuk mengutak-atik dan mengolah data, dengan data pinjaman dan tindakan yang
terpadu di dalam satu objek.

Gambar 9.13. memperlihatkan sebuah diagram golongan UML untuk golongan Pinjaman.
Perhatikan bahwa tanda – (tanda sambung) di dalam diagram golongan UML menunjukkan
medan data pribadi atau metode golongan.
Pinjaman

-tingkatBungaTahunan : float Tingkat bunga tahunan dari pinjaman (nilai prasetel 2.5)
-jumlahTahunPembayaran : int Jumlah tahun peminjaman (prasetel 1)
-jumlahPinjaman : float Jumlah pinjaman (prasetel 1000)
-peminjam : str Peminjam (prasetel “ “)

Pinjaman(tingkatBungaTahunan:float, Bangun sebuah objek Pinjaman dengan menjelaskan tingkat


jumlahTahunPembayaran: int, bunga tahunan, jumlah tahun pembayaran, jumlah pinjaman
jumlahPinjaman: float, peminjam: dan peminjam.
str)
dapatkanTingkatBungaTahunan():float Kembalikan tingkat bunga tahunan dari pinjaman ini
dapatkanJumlahTahunPembayaran():int Kembalikan jumlah tahun pinjaman ini
dapatkanJumlahPinjaman(): float
Kembalikan jumlah pinjaman ini
dapatkanPeminjam():str
Kembalikan peminjam ini
setelTingkatBungaTahunan(
Setel tingkat bunga baru untuk pinjaman ini
tingkatBungaTahunan:float): None
setelJumlahTahunPembayaran(
jumlahTahunPembayaran: int): None Setel jumlah tahun pembayaran untuk pinjaman ini
setelJumlahPinjaman(
jumlahPinjaman: float): None Setel jumlah pinjaman baru
setelPeminjam(peminjam:str): None
setelCicilanBulanan(): float Setel peminjam baru
dapatkanPembayaranKeseluruhan(): Kembalikan cicilan bulanan untuk pinjaman ini
float Kembalikan pembayaran keseluruhan untuk pinjaman ini

Gambar 9.13. Diagram UML untuk model golongan Pinjaman yang memperlihatkan sifat-sifat
dan perilaku pinjaman.

Untuk menulis program tersebut, pertama-tama kita buatkan dahulu acuan yaitu golongan
Pinjaman sebagai tempat penciptaan berbagai objek pinjaman yang akan kita buatkan sesuai
dengan pribadi dari masing-masing peminjam.

1 class Pinjaman:
2 def __init__(swa, tingkatBungaTahunan = 2.5,
jumlahTahunPembayaran = 1 , jumlahPinjaman = 1000 ,
peminjam = " "):
3 swa.__tingkatBungaTahunan = tingkatBungaTahunan
4 swa.__jumlahTahunPembayaran = jumlahTahunPembayaran
5 swa.__jumlahPinjaman = jumlahPinjaman
6 swa.__peminjam = peminjam
7
8 def dapatkanTingkatBungaTahunan(swa):
9 return swa.__tingkatBungaTahunan
10
11 def dapatkanJumlahTahunPembayaran(swa):
12 return swa.__jumlahTahunPembayaran
13
14 def dapatkanJumlahPinjaman(swa):
15 return swa.__jumlahPinjaman
16
17 def dapatkanPeminjam(swa):
18 return swa.__peminjam
19
20 def setelTingkatBungaTahunan(swa, tingkatBungaTahunan):
21 swa.__tingkatBungaTahunan = tingkatBungaTahunan
22
23 def setelJumlahTahunPembayaran(swa, jumlahTahunPembayaran):
24 swa.__jumlahTahunPembayaran = jumlahTahunPembayaran
25
26 def setelJumlahPinjaman(swa, jumlahPinjaman):
27 swa.__jumlahPinjaman = jumlahPinjaman
28
29 def setelPeminjam(swa, peminjam):
30 swa.__peminjam = peminjam
31
32 def dapatkanCicilanBulanan(swa):
33 tingkatBungaBulanan = swa.__tingkatBungaTahunan / 1200
34 cicilanBulanan = swa.__jumlahPinjaman * tingkatBungaBulanan /
(1 - (1 /(1 + tingkatBungaBulanan)**
(swa.__jumlahTahunPembayaran * 12)))
35 return cicilanBulanan
36
37 def dapatkanPembayaranKeseluruhan(swa):
38 pembayaranKeseluruhan = swa.dapatkanCicilanBulanan() *
swa.__jumlahTahunPembayaran * 12
39 return pembayaranKeseluruhan

Baris 33 adalah tingkat bunga tahunan yang diubah menjadi tingkat bunga bulanan dengan
membagi dengan 1200. Rumus yang digunakan untuk cicilan pembayaran (baris 34) adalah

Cicilan bulanan = ( jumlah pinjaman * tingkat bunga bulanan) /

( 1 – ( 1 / ( 1+ tingkat bunga bulanan) ** (jumlah tahun pembayaran * 12) ) )

Jumlah pembayaran keseluruhan = cicilan bulan * jumlah tahun pembayaran * 12

Berdasarkan acuan golongan Pinjaman di atas, kita membuat objek pinjaman:

1 from golongan_pinjaman import Pinjaman


2 # golongan Pinjaman berada dalam warkah golongan_pinjaman
3 def main():
4 # masukkan tingkat bunga tahunan
5 tingkatBungaTahunan = eval(input(
"Masukkan tingkat bunga tahunan, contoh 10.25 : "))
6
7 # masukkan jumlah tahun pinjaman
8 jumlahTahunPembayaran = eval(input(
"Masukkan jumlah tahun pembayaran dalam
bilangan bulat, contoh 2 : "))
9
10 # masukkan jumlah pinjaman
11 jumlahPinjaman = eval(input(
"Masukkan jumlah pinjaman, contoh 12500.5 : "))
12
13 # masukkan nama peminjam
14 peminjam = input("Masukkan nama peminjam : ")
15
16 # menciptakan objek pinjaman
17 pinjaman = Pinjaman(tingkatBungaTahunan, jumlahTahunPembayaran,
jumlahPinjaman, peminjam)
18
19 #tampilkan tanggal pinjaman, cicilan bulanan,
dan pembayaran keseluruhan
20 print("Pinjaman untuk : " , pinjaman.dapatkanPeminjam() )
21 print("Cicilan bulanan adalah : " ,
format(pinjaman.dapatkanCicilanBulanan(), ".2f" ))
22 print("Pembayaran Keseluruhan adalah : ",
format(pinjaman.dapatkanPembayaranKeseluruhan(),
".2f"))
23
24 main() # panggil fungsi main

Misalkan Farid mengambil kredit Rp. 100.000.000,- untuk membeli mobil dengan masa
peminjaman 10 tahun dan tingkat bunga 15% per tahun. Hasilnya:

Masukkan tingkat bunga tahunan, contoh 10.25 : 15.0


Masukkan jumlah tahun pembayaran dalam bilangan bulat, contoh 2 : 10
Masukkan jumlah pinjaman, contoh 12500.5 : 100000000
Masukkan nama peminjam : Farid
Pinjaman untuk : Farid
Cicilan bulanan adalah : 1613349.57
Pembayaran Keseluruhan adalah : 193601948.49
>>>

Cicilan bulanan adalah Rp 1.613.350,- per bulan dengan pembayaran keseluruhan sebesar Rp
193.601.949, dalam masa pembayaran 120 bulan (120 kali cicilan).

(Bab berikutnya sedang disusun)


Istilah informatika Inggris– Indonesia – Inggris

abstract = niskala, abstraction = keniskalaan

access = capaian, access denied = capaian disangkal; accessor = pencapai

action = tindakan; interactif = antartindak; interaction = antar tindakan

actual = kiwari

agile = tangkas, agility = ketangkasan, agile development = pengembangan yang tangkas

alas data = database

allocate = menjatah , allocator = penjatah

animate = upak, mengupak; animation = pengupakan; animated design/ film = rancangan/ filem
yang diupakkan

anjungan = platform

antar muka = interface

antar jaringan = internet (internetwork)

applet ( application light-weighted) = terapan mungil, lihat application

application = terapan, lihat applet

array = larik

assignment = penetapan

attribut = sebutan

bagan = chart; bagan alir = flowchart

tela = tuple

bar = palang, lihat menu bar = palang menu

berkas = folder, directory

besutan = release
big data = data besar

bilah = item

binary = dwiangka

bingkai = frame; bingkai data = data frame; bingkai kerja = framework;

block = bongkah

boot = ucis; booting (dari kata bootstrapping) = pengucisan

bootstrap = ucis, swahidup; booting/ bootstrapping = pengucisan/ swahidupan

bouton = pentol

bug = galat program, kutu, pepijat

buntel = folder, directory

break = istirahat, jeda, memecahkan

browser = peramban

bug = pepijat, galat program

cacah = count; pencacah = counter

cakram = disk, disc, cakram keras = hard disk

calculate = menghitung, calculator = penghitung

call = memanggil, caller = pemanggil

capai = access; pencapai = accessor

cast = tuang; casting = tuangan

celaga = console

celik = literate; kecelikan = literacy; kecelikan aturcara = programming literacy

certain = pasti , certainty = kepastian

character = abjad

characteritic = ciri, cirian

chip = serpihan; memory chips = serpihan ingatan


circuit = rangkaian

class = golongan, kelompok, kelas; classification = penggolongan

client = pelanggan, nasabah, client-server = pelanggan-pelayan

code = kode, coding = mengkode , menulis kode

compile = mengepul, compiler = pengepul, compiled = terkepul

complexe = rumit

complicated = pelik

composition = gubahan

compute = menghitung ; computer = penghitung,

computer = pendata, komputer; computing = kependataan; computer literate = celik pendata ;


computational thinking = pemikiran kependataan;computability = keterhitungan, kependataan,
kekomputeran

concatenate = meyambung; concatenation = penyambungan

condition = persyaratan/keadaan; conditional = bersyarat/tergantung keadaan

console = celaga

constant = tetapan, lawan peubah (berubah-ubah)

control = pengendalian

container = wadah

conversion = pengalihan

cookie = penganan

copy = menyalin, salinan

corak = pattern; pengenalan corak = pattern recognition

count = cacah

counter = pencacah

crawl = merayap

crawler = perayap
cursor = pejera

dashboard = papan pemuka

database = alas data

debug = penda, memenda; debugger = pemenda; debugging = pemendaan

declare = menyeru; declaration = seruan

decomposition = peruraian

decrement = anjlogan

default = prasetel

define = mendefinisikan, mentakrifkan, menentukan; definition = takrif, penentuan

desktop computer = pendata atas meja, lihat laptop = pendata riba (di atas keharibaan)

developper = pengembang

digit = angka, digital = angkawi, digitalisasi= pengangkaan

directory = hala, berkas, bundel, lihat folder

download = unduh, lawan upload = unggah

edit = menyunting, editing = penyuntingan

element = anasir

encapsulate = menyalut; encapsulation = penyalutan; capsule = salut

engineering = perekayasaan, software engineering = perekayasaan perangkat lunak

englobe = menyelingkup, selingkup

entry = pemasukan; data entry = pemasukan data

enumerate = membilang; enumeration = pembilangan

error= galat, kesalahan

event = acara, kejadian

evoke = mengingatkan , membangkitkan ingatan

execute = melaksanakan; execution = pelaksanaan


expression = ungkapan

extend = memanjangkan; extended = dipanjangkan; extension = pemanjangan;

feature = tuturan, kegunaan

feed = sulang, menyulang, mengumpan , feeder = penyulang, pengumpan

file = warkah, kartotik

floating = angka pecahan, angka mengambang, bilangan riil

flowchart = bagan alir

folder = bundel, berkas

form = bentuk; format = bentukan, membentukkan; formatted = terbentuk

fraction = pecahan

fragile = getas, rapuh

fragment = penggalan, kepingan

frame = bingkai; dataframe = bingkai data; framework = bingkai kerja, kerangka kerja.

gadget = gawai, lihat widget (window gadget= gawai tingkap)

galat = error

garba = port

garuk = scrap; penggaruk = scrapper; penggaruk jala = webscrapper

gawai = gadget

gelung = loop

general = lazim, umum; generalization = pelaziman

kitar = iterate; kitaran = iteration; pengitar = iterator

global = menyeluruh; mendunia; lawannya local = setempat

grid = jeruji

hacker = pengampak

hash = cincang; hash table = tabel cincang; hashing = pencincangan


heap = timbunan

identify = mengenali; identifier = pengenal; identification = pengenalan

illusion = imbak ; desillusion = waham

implement = mewujudkan, implementation = perwujudan

increment = anjakan

indent = takuk

inform = memaklumkan, membuat mengerti; information = maklumat, informasi

inherit = mewariskan; inheritance = pewarisan

ingatan = memory

input = masukan

install = memasang, merasukkan

installer = pemasang, perasuk

instance = umpama, contoh, misal

instantiate = mengumpamakan, mengejawantahkan

instantiation = penejawantahan

instruction = petunjuk, perintah

integer = bilangan bulat

interaction = antartindakan

interface = antar muka

internet (inter + network) = antar jaringan

interval = selang

invoke = memohon, meminta

item = bilah, potongan

iterate =kitar, mengitar, iteration =kitaran, iterator = pengitar

jeraus = prompt
jeruji = grid

kartu ingatan = memory card

keyboard = papan kunci

kiwari = actual

larik = array

link = tautan ; linker = penaut

lintasan = path

literal= keaksaraan

literate = celik, literacy = kecelikan, computer literacy = kecelikan komputer

load = memuat; loader = pemuat; upload = unggah, download = unduh

local = setempat

loop = gelung

main = utama; mainframe (kerangka utama) = komputer/pendata pusat

manipulate = mengutak-atik; manipulation = utak-atik

matching = padanan, pencocokan

memory = ingatan

memory management = pengelolaan ingatan

menu bar = palang menu

model = contoh, teladan

modify = mempermak, merombak; modified = dipermak; modification = permak; modifier =


pemermak, perombak

mouse = tetikus

mutate = merubah; mutable = dapat berubah; lawan dari immutable = tak dapat berubah;
mutability = keterubahan; mutation = perubahan, mutasi; mutator = perubah

namespace = ruang nama

notation = tatatanda
node = simpul; inter-node = wuku

numeral = keangkaan

network = jaringan

omission = silap

online = dalam talian/ jaringan

open source = sumber terbuka

output = keluaran

overload = tumpah; muat lebih; overloading = ketumpahan, muatan lebih

package = paket, pak

pane = tingkap

parameter passing = pelaluan/pelewatan parameter

parse = menilik, menguraikan; parsing = penilikan, penguraian

pass = melalukan, melalui, laluan, melewatkan, melewati; passing = pelaluan, pelewatan

password = sandi (“kata supaya boleh lewat”)

path = lintasan

pattern = corak; pattern recognition = pengenalan corak

pejera = cursor

pencacah = counter

penda = debug; memenda = to debug; pemendaan= debugging; pemenda = debugger

penetrate = pantak; penetration testing = uji pantakan

penganggar = allocator

pengguna = user

penjatah = allocator

pentol = bouton

penunjuk = pointer
penyalutan = encapsulation; menyalut = encapsulate

pepijat = bug

perayap = crawler; perayab jala (internet) = web crawler

pindai, memindai = scan; pemindai = scanner

platform = anjungan

pointer = penunjuk

polymorphism = keanekaan bentuk

port = garba; portal = regol

potongan = item

private = sendiri, pribadi, swasta

privacy = kebersendirian

processor = pengolah

program = aturcara

programmer = pengaturcara, pemrogram

programming = pengaturcaraan, pemrograman

programming literate = celik pengaturcaraan/ pemrograman

prompt = jeraus, ajakan perintah

properties = sifat, watak

pseudocode = kode tetiron/ tiruan/palsu

publik = umum

qualify = menentumutu

qualifier = penentumutu

quantify = menentujumlah

quantifier = penentujumlah

ramban = browse ; peramban = browser


ramin = raster

range = kisaran

raster = ramin

recursion = penggisaran, recursive = gisar

refer = merujuk, reference = rujukan

refrain = senggak

regol = portal

reka-ulah = simulation

render = upam

rigid = ganyut

robust = sembada

rubah = mutate; perubah = mutator; dapat berubah = mutable

run = menjalankan

safety = keselamatan

salut = capsule; menyalut = encapsulate; penyalutan = encapsulation

scan = pindai; scanner = pemindai

scope = cakupan

scrap = menggaruk; scrapper = penggaruk; webcrapper= penggarauk jala internet

screenshot = jepretan layar

script = naskah

scripting language = bahasa penaskahan

security = keamanan

server = pelayan

self = swa

sequence = urutan
series = deretan

set = himpunan

set = setel; setting = setelan

shell = cangkang

simulate = mereka-ulah, simulation = reka-ulah,

sign = tengara; signal = tengara

site = loka, website = lokajala

snippet = saripati

sort = memilah; sorting = pemilahan

specifier = penentukhas; specify = menentukhasan; specifying = penentukhasan

spreadsheet = hamparan

stack = tumpukan; call stack = tumpukan panggilan; execution stack= tumpukan pelaksanaan;
machine stack = tumpukan mesin; runtime stack = tumpukan waktu jalan

state = keadaan; menyatakan; statement = pernyataan

steril = gabuk

stream = arus

string = untaian

string literal = untaian keaksaraan

structure = tatanan, struktur; data structure = tatanan data

style = gaya

swap = urup, swapping = pengurupan

switch = mengalihkan, membelokkan

syntax = susunan kalimat, sintaksis

tab = banderol

takuk = indent; bertakuk= indented


tap = menggetil, menjawil;

tatanan = structure; tatanan data = data structure

tatar = upgrade; penataran = upgrading

tatatanda = notation; tatatanda ilmiah = scientific notation

tela = tuple

template = acuan, patron, pola

tengara = sign, signal

tetikus = mouse

tetiron = pseudo; kode tetiron = pseudocode

thread = jalinan

tingkap = pane

tool bar = palang alat

traceback = runut balik

tuple = tela

ucis = boot; pengucisan = booting

ulang-alik = recursive, pengulangalikan = recursion

unary = esa-angka

uncertain = cewang, uncertainty = kecewangan

untaian = string

upak = mengupak= animate; pengupakan= animation

upam = render; rendering = pengupaman

upgrade = tatar; upgrading = penataran

urup =swap; pengurupan = swapping

user = pengguna

validate = menentusahkan; validation = penentusahan


variable = peubah, lawan constant = tetapan

verify = mengecek; verification = pengecekan

void = nihil; void function = fungsi nihil

warkah = file

Web = jala internet

website = lokajala

widget (window gadget) = gajen (gawai jendela)


Lampiran 2

Ensiklopedia informatika

abstraction (peniskalaan) : Memberikan nama yang sederhana untuk mewakilkan suatu keadaan
yang rumit. Pengubahan sejumlah pernyataan aturcara (program) ke dalam sebuah fungsi,
sehingga mengurangi tingkat kerincian dan membuat aturcara mudah dibaca.

accessor (pencapai) : metode dalam pemrograman mengarah ke objek yang memungkinkan


pengguna untuk mengamati keadaan objek tetapi tidak memperbolehkan untuk mengubahnya.

accuracy (ketepatan) : tingkat kepastian yang disediakan oleh pengenalan atau teori. Ketepatan
biasanya merujuk pada sebuah mutu yang mutlak, sementara kepersisan (precision) biasanya
merujuk pada jumlah angka digit yang digunakan untuk mewakilkan angka.

address (alamat) : penunjukan keangkaan dari kedudukan di dalam ingatan. Sebuah pengenal
(idendifier), seperti cap (label), yang menunjukkan sebuah alamat di dalam ingatan atau sumber
data.

hujjah : lihat argumen

algorithm (algoritma) : prosedur langkah demi langkah untuk melaksanakan sejumlah tugas
dalam satuan waktu yang terbatas; sebuah himpunan aturan untuk memecahkan masalah langkah
demi langkah yang terbatas;.

allocate (menjatah, mencatu) : menetapkan sejumlah sumber daya untuk digunakan, biasanya
ingatan (memory).

alphanumeric (huruf angka): paduan dari huruf, angka, dan dan tanda khusus, seperti %, $, dan
/.

analog (analog): pemetaan dari besaran fisik yang dapat diubah ke dalam angka, misalnya
kecepatan mobil yang diubah menjadi angka dalam spedometer.

animation (pengupakan) : sebuah proses dimana gerakan direka-ulah (simulated) dengan


menggerakkan sedikit demi sedikit berbagai gambar (kerangka) secara beruntun.

append (menyertakan) : menambahkan, biasanya pada akhir objek atau kata.

application (terapan) : aturcara (program) yang mengandung tugas-tugas yang dapat


dilaksanakan oleh pendata (komputer), biasanya untuk keperluan praktis.

architecture (arsitektur) : keseluruhan rancangan pendata (komputer) dalam hal komponen


utama seperti pengolah, ingatan, I/O, dan komunikasi.
argument (hujjah) : nilai yang dimasukkan ke dalam suatu fungsi atau suatu prosedur, sehingga
memiliki data untuk dikerjakan. Sebuah paramenter yang berlalu dari satu bagian aturcara ke
bagian yang lain atau ke sebuah perintah. Sebuah nilai yang disediakan kepada fungsi ketika
fungsi tersebut dipanggil; nilai ini ditetapkan pada parameter yang terkait di dalam fungsi;
hujjahdapat merupakan hasil dari ungkapan yang melibatkan operator, operan dan panggilan
kepada fungsi yang menghasilkan lainnya.

arithmatic unit (satuan aritmatika): bagian dari satuan pengolah pusat (central processisng
unit/CPU) yang melakukan operasi aritmatika.

array (larik/ matriks) : Sekelompok angka disimpan bersama dalam baris dan kolom yang dapat
dirujukkan dengan satu atau lebih naskah bawahan (subscript). Sebuah angka dalam larik adalah
sebuah anasir larik.

assignment (penetapan) : tindakan menetapkan peubahatau lambang kepada sebuah nilai.

aturcara: lihat program

attribute (sebutan) : sejumlah keadaan atau nilai yang melekat pada suatu objek. Misalnya baju
memiliki ukuran, warna, bahan, dsb.

background (latar belakang) : teknik untuk menjalankan aturcara yang tidak diprioritaskan (“di
latar belakang”) sambil menjalankan aturcara prioritas tinggi “di latar depan”. Bagian dari
tampilan video yang tidak memiliki jendela.

backtracking (lacak balik) : proses mencari jalan lain dengan kembali lagi ke asal cabang
keputusan ketika suatu pemecahan masalah mengalami jalan buntu.

basic machine language (bahasa dasar mesin) : petuntuk yang memerintahkan mesin untuk
melalukan operasi dasar seperti menyimpan atau menambah dwiangka.

batch (runtai) : Sehimpunan data atau pekerjaan untuk diolah dalam satu aturcara yang
dijalankan. Berjalannya aturcara tanpa interaksi dari pengguna, biasanya di latar belakang.

baud (baud) : jumlah anasir sinyal per satuan waktu, biasanya 1 bit per detik.

binary (dwiangka) : berkaitan dengan sistem angka dengan basis 2.

bit (bit) : kependekan dari “binary digit” (dwiangka); angka 0 atau 1 dalam perlambangan
dwiangka.

Boolean algebra (aljabar Boole) : satu cabang dari ilmu logika perlambangan yang mengkaji
tentang hubungan logis menghadapi nilai keangkaan (numerical value).
branch (cabang) : mengambil satu lintasan dalam suatu aturcara yang didasarkan pada nilai
peubah.

bug (pepijat, kutu, kumbang) : galat dalam aturcara komputer atau sistem operasi; berfungsi
buruk.

bus (bus) : saluran komunikasi (seikat kawat) yang digunakan untuk memindahkan informasi
secara cepat di antara bagian-bagian komputer.

byte (byte) : Unit penyimpanan 8 bit.

byte code (kode byte) : kode terkepul (compiled) yang telah dibaca oleh semua komputer sistem
tetapi masih perlu diterjemahkan (atau dikepul lagi); terkandung di dalam warkah golongan
(class file).

cache (sembunyi) : ingatan kecil, sangat cepat, yang digunakan sebagai tempat penyimpanan
sementara antara pencatat CPU yang sangat cepat dengan ingatan utama atau antara cakram
dengan RAM.

calling procedure (prosedur pemanggilan) : sebongkah kode yang mengandung panggilan


fungsi (lihat function call)

calling sequence (urutan pemanggilan) : data dan pengaturan yang diperlukan untuk memanggil
sebuah metode atau aturcara bawahan (subprogram).

checkpoint (titik pengecekan) : pernyataan di dalam aturcara yang menghentikan pelaksanaan


normal dan menyediakan keluaran (output) untuk memendagalat.

child (anak) : objek yang diciptakan oleh objek orang tua.

class (golongan) : 1) Sebuah patron/acuan (template)/ cetak biru (blueprint) untuk menciptakan
sebuah jenis data, yang membundel beberapa potong data yang berkaitan dan mendefinisikan
setumpuk metode untuk mencapai dan mengutak-atik data tersebut. 2) Di dalam Python,
golongan juga digambarkan sebagai sehimpunan objek dengan perilaku yang sama. Sebuah
umpama (instance)/ contoh/ kasus /anasir dari golongan disebut objekyang merupakan
kumpulan dari jenis-jenis data dan metode yang terkait.

class variable (peubah golongan) : suatu tempat penyimpanan data dalam ingatan komputer
yang digunakan oleh semua metode umpama(objek) dari golongan. Lihat instance variable.

compile (mengepul):Menerjemahkan sebuah program (aturcara) yang ditulis dalam bahasa


tingkat tinggi ke dalam bahasa tingkat rendah, secara sekaligus, dalam rangka persiapan untuk
pelaksanaan kemudian. Proses pengubahan perintah dalam bahasa pemrograman
(pengaturcaraan) yang dimengerti oleh manusia ke dalam bahasa mesin, yang akan dapat
dilaksanakan secara langsung oleh pendata (komputer). Python melakukan pengepulan secara
otomatis di belakanglayar ketika naskah ditulis baris per baris. Dalam bahasa lain, seperti C,
proses ini dilakukan dalam langkah terpisah sebelum program dapat dilaksanakan. Bandingkan
dengan interpret.

compilation (pengepulan) : lihat compile

compiled (dikepul) : lihat compile

compiler (pengepul): sebuah aturcara (program) yang menerjemahkan kode sumber dari bahasa
tingkat tinggi ke dalam bahasa mesin yang lebih mendasar.

computer (pendata/ komputer) : sebuah alat, biasanya elektronik, yang mengolah data dengan
kecepatan tinggi berdasarkan sehimpunan perintah.

concurrent processing (pengolahan bersamaan) : sama artinya dengan pengolahan sejajar


(parallel processing); pelaksanaan serentak beberapa perintah yang berkaitan.

conditional statement (pernyataan bersyarat): pernyataan yang hanya dilaksanaan dalam


keadaan tertentu.

control statement (pernyataan kendali) : sebuah pernyataan dalam program yang memindahkan
pengendalian ke bagian lain dari aturcara.

cookie (penganan) : satu pak data yang dikirim oleh pelayan (server) Internet kepada sebuah
peramban (browser), yang akan dikembalikan oleh peramban tersebut kepada pelayan setiap kali
peramban mencapai pelayan yang sama. Penganan digunakan untuk mengenalipengguna atau
melacak capaian pengguna ke pelayan.

copy (salin) : memindahkan data tanpa menghilangkan yang asli.

CPU (central processing unit/ satuan pengolahan pusat) : bagian dari pendata yang menerima
dan bertindak terhadap petunjuk; dimana perhitungan dilakukan dan komunikasi dikendalikan.

crash (mogok) : berakhirnya secara tidak normal sebuah aturcara atau sepotong perangkat lunak.

data : fakta mentah dari kejadian yang belum diolah menjadi maklumat (informasi); maklumat
yang disimpan dalam bentuk keangkaan atau keaksaraan; jamak dari kata datum.

data dependence (ketergantungan pada data) : kejadian ketika dua pernyataan mengalamatkan
tempat penyimpanan yang serupa.

data structure (tatanan data) : cara sistematis untuk penyusunan dan pencapaian data.

dependence (ketergantungan) : hubungan antara berbagai pernyataan aturcara di dalam mana


hasilnya tergantung dari perintah dimana pernyataan dilaksanakan.
data type (jenis data) : sehimpunan nilai; penentuan (penakrifan/definisi) yang memungkinkan
penerjemahan yang pas dari untaian huruf atau angka; jenis data menentukan bagaimana data
tersebut dapat digunakan dalam sebuah ungkapan.

debug (memenda, penda) : mendeteksi, menemukan, dan menyisihkan galat dari perangkat lunak
atau perangkat keras.

debugger (pemenda) : suatu program untuk menemukan kesalahan dalam kode

decrement (anjlok) : proses penurunandalam kitaran (iteration)

default (prasetel) : anggapan (asumsi) yang dibuah ketika aturan yang khusus tidak diberikan.

delete (menghapuskan) : menyisihkan dan tidak meninggalkan rekaman.

digital (digital) : perwakilan dari kuantitas dalam bentuk diskrit (0 dan 1); lawan dari analog.

dimension of an array (dimensi sebuah larik) : jumlah anasir (element) yang dapat dirujuk oleh
indek larik (matrik) .

directory/folder (berkas): kumpulan dari warkah (file) yang diberikan namanya sendiri; sama
dengan folder.

discrete (diskrit) : berkaitan dengan anasir berbeda.

disk, disc (cakram) : media magnetis bulat yang digunakan untuk penyimpanan.

documentation string /docstring (untaian dokumen/undok) : Bongkah teks pada baris pertama
fungsi, modul, class atau metode. Untaian dokumen digunakan oleh alat terpasang Python untuk
pengujian secara otomatis dan menyediakan dokumen dalam fungsi bantuan (help).

double precision (dwi kepersisan) : penggunaan dua kata ingatan untuk menyimpan sebuah
angka.

download (unduh) : memindahkan data dari pendata (komputer) yang jauh ke pendata setempat.

DRAM (dynamic RAM/ RAM dinamis) : ingatan pendata yang sering memerlukan penyegaran
kembali.

driver (pengemudi) : Sehimpunan perintah yang diperlukan untuk memindahkan data dari atau
ke piranti luar (misalnya pencetak).

element (anasir) sepotong data dalam larik (array); sebuah komponen dari bahasa.

enable (memampukan) : membuat bagian komputer bisa beroperasi.

embedded (terbawa) :
ethernet (ethernet) : wilayah jaringan setempat (LAN, local area network) yang sangat cepat
yang terdiri dari teknologi kabel yang khusus dan protokol komunikasi.

evaluate (menilaikan) : menyederhanakan sebuah ungkapan dengan melakukan sebuah operasi


sehingga menghasilkan nilai tunggal.

evaluation (penilaian) : ungkapan matematis (mathematical expression), lihat expression.

expression (ungkapan) : suatu bagian kode yang dapat bekerja untuk menghasilkan sebuah nilai.
Gabungan dari satu atau lebih nilai eksplisit, tetapan, peubah, operator dan fungsi yang
diterjemahkan oleh bahasa program untuk menghasilkan nilai yang lain.

executable program (aturcara yang dapat dilaksanakan) : sehimpunan perintah yang dapat
dimuat ke dalam ingatan pendata dan dilaksanakan.

fetch (memungut) : mencari dan menarik kembali informasi dari penyimpanan.

flash memory (ingatan kilat) : ingatan yang tidak memerlukan arus listrik untuk
mempertahankan isinya.

floating point (titik mengambang) : penyimpanan terbatas dari angka dalam pencatatan ilmiah.

foreground (latar depan) : mendahulukan pelaksanaan aturcara yang sangat diprioritaskan


sebelum aturcara yang kurang diprioritaskan.

Fortran: nama bahasa pengaturcaraaan paling tua yang merupakan singkatan dari formula
translation (penerjemahan rumus); masih digunakan dalam bidang perhitungan ilmiah.

fragmentation (perserakan) : penyimpanan warkah dalam banyak tempat kecil yang


berhamburan.

fruitful function (fungsi yang menghasilkan) : sebuah fungsi yang mengembalikan sebuah nilai
ketika dipanggil.

function (fungsi) : sebongkah kode yang melakukan perhitungan, menerima nol atau lebih
hujjah (argumen), dan mengembalikan nilai kepada prosedur pemanggilan ketika selesai.
Kumpulan kode yang didefinisikan dengan menggunakan nama yang berisi pernyataan yang
melakukan sejumlah operasi yang berguna. Fungsi dipanggil dengan nama yang didefinisikan
itu.

function call (panggilan fungsi) : Sebuah pernyataan yang melaksanakan fungsi. Pernyataan
terdiri dari nama fungsi yang diikuti oleh sebuah daftar hujjah yang berada dalam tanda kurung.

function composition (gubahan/ penyusunan fungsi) : mengunakan keluaran dari satu panggilan
fungsi sebagai masukan dari fungsi yang lain.
function definition (penakrifan fungsi) : pernyataan yang menciptakan sebuah fungsi, dengan
menentukan namanya, parameter, dan pernyataan yang dilaksanakan fungsi.

fungsi : lihat function

garbage (tong sampah) : angka-angka yang tak bermakna, biasa hasil dari galat atau pentakrifan
(definisi ) yang tidak pas. Data usang dalam ingatan yang menunggu untuk disisihkan
(“dikumpulkan”).

GUI (Graphical User Interface/ Antarmuka grafis pengguna) = lingkungan jendela di layar
pendata melalui mana pengguna berinteraksi dengan pendata.

hardware (perangkat keras) : komponen fisik sistem pendata

hashing (mengadon) : pengubahan bentuk yang mengubah ketukan papan kunci ke nilai data.

heap (tumpukan) : biasanya sepotong besar ingatan yang disediakan oleh OS, sehingga terapan-
terapan (applications) dapat membaginya sesuai dengan keinginan mereka.

heurestic (heurestika) = pendekatan coba-coba untuk pemecahan masalah.

hexadecimal (heksadesimal) = angka berbasis 16 {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

hidden line surface (permukaan baris yang tersembunyi) : bagian dari objek grafik yang
tersembunyi dari penglihatan.

high-level language (bahasa tingkat tinggi) : bahasa pemrograman (pengaturcaraan) seperti


Python, Java, Fortran, dsb., yang dirancang supaya memudahkan manusia untuk menulis dan
membacanya. Lawan low-level language.

host computer (pendata tuan rumah) : pendata pusat atau jauh yang melayani pendata yang lain.

HPC (high performance computing/ kependataan berkinerja tinggi ) = sistem komputer yang
cepat dan tepat.

icon (ikon): lambang kecil di layar yang mengaktifkan terapan.

identifier (pengenal) : nama yang mengenalkan unsur-unsur seperti peubah dan fungsi di dalam
sebuah program. Nama pengenal didefinisikan oleh pengguna. Nama fungsi dan nama peubah
adalah pengenal. Pengenal tidak boleh menggunakan kata kunci (keyword).

import statement (pernyataan impor) : sebuah pernyataan yang mengizinkan fungsi dan peubah
yang ditakrifkan di dalam modul Python yang lain dibawakan ke dalam lingkungkan naskah lain
lagi. Untuk dapat menggunakan tuturan turtle, kita lebih dahulu harus mengimpor modul turtle.
increment (lonjakan) = jumlah yang ditambah pada sebuah peubah, khususnya sebuah indeks
larik (array).

index (indeks) : lambang yang digunakan untuk tempat dari sebuah peubah dalam larik
(matriks); tulisan bawah baris (subscript).

infinite loop (gelung tak berakhir) : pengulanga yang terus menerus dari sehimpunan perintah.

information (maklumat, informasi) : sekumpalan data yang telah diolah sehingga mudah
dimengerti oleh manusia.

input (masukan) : pengenalan dara dari piranti luar ke dalam penyimpanan utama.

instance variable (peubah umpama): adalah tempat penyimpanan data di dalam ingatan
komputer yang digunakan oleh satu metode umpama (objek) dari suatu golongan.

instruction (perintah/petunjuk) : komando kepada perangkat keras untuk melakukan hal-hal


yang mendasar.

instruction stack (susunan perintah) : sekelompok perintah teratur yang sedang digunakan
sekarang.

intepreter (penerjemah) : program (aturcara) yang mengubah urutan perintah dalam naskah
aturcara ke dalam kode yang dapat dilaksanakan oleh pendata secara bersamaan. Penerjemah
sebenarnya mengepul kode ketika program sedang berjalan ketimbang dalam langkah yang
terpisah.

iteration (kitaran; iterate = kitar, mengitar) : pelaksanaan berulang dari sehimpunan pernyataan
program; mengulangi deretan dari langkah-langkah program secara otomatis.

interpolation (interpolasi) : menemukan nilai di antara dua nilai yang diketahui.

interpret (menerjemahkan) : melaksanakan sebuah program (aturcara) dalam bahasa tingkat


tinggi ke dalam bahasa tingkat rendah, baris per baris ketika program ditulis dan segera
dilaksanakan.

interpreter (penerjemah): lihat interpret

interrupt (sela) : sebuah komando yang menghentikan pelaksanaan sebuah aturcara ketika
keadaan tidak normal terjadi.

invoke (memohon, meminta) : sebuah objek memiliki metode; ketika kita menggunakan kata
memohon artinya mengaktifkan metode tersebut. Memohon sebuah metode dilakukan dengan
cara meletakkan sebuah tanda kurung di depan metode, dengan sejumlah hujjah. Misal:
turtle.forward() adalah permohonan metode forward.
jump (loncat) : meninggalkan pengolahan linir dari kode; cabang atau pindah.

just-in-time compiler (pengepul tepat waktu) : sebuah program yang mengepul kembali warkah
golongan Java ke dalam kode mesin yang lebih efisien.

kernel (inti) : bagian paling dalamn atau pusat dari sebuah aturcara besar atau dari sistem operasi
yang tidak dipermak (banyak) ketika dijalankan di komputer yang berbeda-beda.

kill (bunuh) : menghapus atau menghentikan sebuah pengolahan.

language (bahasa) : aturan, lambang, dan kesepakatan yang digunakan untuk saling menukar
maklumat (informasi)

library (lib/ perpustakaan) : segepok aturcara atau metode terhadap topik yang terkait.

linking (menaut) : menghubungkan kepingan kode yang terpisah untuk membentuk aturcara
yang dapat dilaksanakan.

literal (keaksaraan): sismbol yang mentakrifkan (mendefinisikan diri sendiri), seperti huruf A.

load (memuat): membacakan maklumat (informasi) ke dalam ingatan pendata (komputer).

local variable (peubah setempat) : sebuah peubah yang ditakrifkan di dalam sebuah fungsi.
Sebuah peubah setempat hanya dapat digunakan di dalam fungsinya. Parameter sebuah fungsi
juga merupakan sejenis peubah setempat yang khusus.

logical dimension (dimensi logis) : nilai terbesar yang benar-benar digunakan oleh program.

loop (gelung) : Sehimpunan perintah yang dilaksanakan secara berulang sepanjang persyaratan
terpenuhi.

low-level language (bahasa tingkat rendah): bahasa pemrograman yang dirancang supaya
memudahkan komputer untuk melaksanakannya; disebut juga kode mesin (machine kode) atau
bahasa rakitan (assembly langguage).

machine language (bahasa mesin) : Perintah yang dimengerti oleh perangkat keras.

macro (makro): pernyataan tunggal di tingkat atas yang menghasilkan beberapa pernyataan
tingkat bawah

main method (metode utama) : bagian dari aturcara terapan dimana pelaksanaan dimulai.

main storage (penyimpanan utama): ingatan elektronik cepat; ingatan fisik.

mengepul : lihat compile


method (metode) : sebuah fungsi yang melekat pada sebuah objek; memanggil atau
mengaktifkan method menyebabkan objek menanggapinya, misalnya kita menyuruh objek
bergerak maju dengan menggunakan metode forward, kita mengetik turtle.forward(50);
sebuah rutin bawahan (subroutine) yang digunakan untuk menghitung sebuah fungsi atau
mengutakatik (memanipulasikan) data.

modular programming (pengaturcaraan modular) : teknik menulis program dengan berbagai


bagian mandiri yang dapat digunakan kembali.

module (modul) : program Python yang dapat diimpor oleh program yang lain. Modul sering
digunakan untuk mendefinisikan fungsi dan golongan tambahan.

modulo (mod) : Fungsi yang menghasilkan sisa angka setelah pembagian berlangsung.

multiprocessor (pengolah ganda) : Pendata yang memiliki lebih dari satu pengolah.

multitasking (penugasan ganda) : Suatu sistem dimana beberapa pekerjaan berada di dalam
ingatan komputer secara serentak; pekerjaan-pekerjaan itu dilaksanakan secara sejajar atau
runtun.

mutator (perubah) : metode dalam pemrograman mengarah ke objek yang memungkinkan


pengguna untuk merombak keadaan sebuah objek.

nesting (penyarangan) : Menempatkan sekelompok kode di dalam kelompok kode yang lain.

object (objek): konsep niskala yang menggambarkan gabungan dari sebutan (data) dan metode
(fungsi) yang dapat dilakukan terhadap data tersebut; sebundel sebutan (peubah) dan metode
yang terkait (fungsi) dengan sebutan tersebut. Objek adalah umpama (kasus) dari golongan
(class).

object-oriented programming (OOP/ pemrograman yang mengarah ke objek) = gaya


pemrograman (pengaturcaraan) dimana tugas-tugas diselesaikan dengan cara
memperkerjasamakan objek. Setiap objek memiliki himpunan datanya sendiri, bersama dengan
sehimpunan metode yang bertindak terhadap data.

object program (object code/ aturcara objek/kode objek) : Sebuah aturcara dalam bahasa dasar
mesin yang dihasilkan dari pengepulan aturcara yang ditulis dalam bahasa tingkat tinggi.

octal (basis 8) : sistem penulisan angka berbasis 8 angka (0,1,2,3,4,5,6,7), mudah dialihkan ke
atau dari basis dwiangka (2 angka, yaitu 0 dan 1).

operating system (OS/ sistem operasi : aturcara yang mengendalikan perangkat lunak,
menjalankan terapan, mengolah masukan/keluaran (I/O) dan cangkang.
optimization (optimisasi) : mempermak sebuah aturcara (program) sehingga dapat dijalankan
lebih cepat.

overflow (tumpah) : Hasil dari usaha untuk menyimpan terlalu banyak angka.

package (paket) : suatu bundelan dari aturcara atau golongan (class) yang berkaitan.

parallel processing / concurrent processing (pengolahan sejajar/ pengolahan bersamaan):


pengolahan serentak atau mandiri di dalam berbagai CPU (central processing unit).

parallelization (penjajaran) : menulis kembali aturcara yang ada untuk dijalankan secara sejajar.

parameter (parameter) = Anasir penting yang perlu dipertimbangkan dalam rangka menilai
suatu keadaan atau memahami suatu kejadian. Dalam bidang informatika: peubah yang nilainya,
namanya, dan alamatnya hanya dipastikan ketika program dilaksanakan. Sebuah nama yang
digunakan di dalam sebuah fungsi untuk merujuk pada nilai yang dilewatkan kepadanya sebagai
sebuah hujjah (argumen)

parse (menilik, mengurai) : mengamati sebuah aturcara dan menganalisa tatanan sintaksisnya.
Mengambil informasi dan menguraikannya ke dalam unsur-unsur yang lebih mudah untuk
diolah.

partition (penyekatan):pembagian ingatan untuk ditetapkan pada sebuah aturcara selama


pelaksanaan.

penerjemah : lihat intrepreter

physical memory (ingatan fisik) : ingatan utama; ingatan elekronik cepat dari sebuah pendata;
lawan dari virtual memory.

pipeline (segmented) arithmetic units (satuan aritmetika saluran baris (terbuku): sebuah
pendekatan baris perakitan (assembly line) ke pengolahan pusat; CPU mengumpulkan,
menyimpan, dan mengolah data secara serentak.

pixel (piksel) : sebuah anasir gambar; sebuah titik di layar. Lihal voxel.

precision (kepersisan) : tingkat kepastian dari ukuran kuantitas yang dipaparkan. Tingginya
angka kepersisan belum tentu tepat (accurate).

program (aturcara): sehimpunan perintah yang diterjemahkan dan dilaksanakan oleh pendata
(komputer). lihat script dan application

program implementation (perwujudan aturcara): tindakan menulis program yang


sesungguhnya, lawan dari program design (perancangan aturcara)

protocol (protokol) : sehimpunan aturan atau kesepakatan.


pseudocode (kode tiruan) : bahasa rancangan program yang ditujukan untuk dibaca oleh
manusia bukan dilaksanakan oleh pendata. Campuran bahasa normal dan bahasa kode yang
memberikan panduan lambang untuk menulis aturcara(program).

public interface (antarmuka umum): sekelompok metode melalui mana objek dari golongan
dapat dimanipulasi (diutak-atik).

queue (antrian) : stuktur niskala data atau tatanan liniir data dimana data yang masuk ditaruh di
ekor data yang sudah ada. Sekelompok hal yang teratur yang sedang digilir untuk diolah secara
beruntun dengan kaidah masuk dahulu keluar dahulu (FIFO = first in first out).

RAM (random-access memory / ingatan dengan capaian acak): ingatan pusat yang dapat dapat
dicapai secara langsung.

random-access (capaian secara acak): pembacaan atau penulisan ingatan tidak tergantung dari
urutan penyimpanan.

recursion (penggisaran) / recurrence/ (terjadi lagi) : 1.) Pengulangan yang menghasilkan nilai
baru dari nilai sebelumnya. 2.) Sebuah teknik pemrograman yang memungkinkan pemrogram
untuk mengungkapkan operasi dengan menggunakan operasi itu sendiri. Proses penentuan fungsi
atau perhitungan angka dengan cara mengulang-alik terapan dari algoritma.

refactor (merapikan): Mengorganisasikan kembali kode program, biasanya untuk membuatnya


menjadi lebih dimengerti.

register (pendaftar) : ingatan yang sangat cepat yang digunakan oleh CPU.

register allocator (penjatah pendaftar) : bagian dari pengepul (compiler) yang menetapkan
pendaftar CPU pada peubah setempat.

reserved word (kata terlindungi) : kata-kata yang tidak boleh digunakan dalam aturcara terapan.

return (mengembalikan/pengembalian) :1.)Fungsi di dalam Python mengembalikan atau


menyediakan informasi kembali kepada bagian program yang memanggil fungsi tersebut. Nilai
ini disebut nilai yang dikembalikan (return value). 2.)Proses pengiriman hasil pelaksanaan dari
sebuah fungsi, kembali ke tempat dimana fungsi dipanggil ke dalam program utama. Pernyataan
pengembalian dapat melewatkan nilai kembali ke program utama untuk dipergunakan dalam
perhitungan berikutnya.

reverse engineering (rekayasa terbalik): tindakan memahami bagaimana suatu hal bekerja,
seringkali dalam rangka mengembangkannya.

run (lari/menjalankan) : melaksanakan sebuah aturcara (program).


runtime error (galat saat dijalankan) : galat yang terjadi ketika program dijalankan dan
mencegah program untuk dilanjutkan.

scalar (skalar): sebuah nilai data atau angka, misalnya pi ()

script (naskah) dan application (terapan): Istilah „naskah‟, „terapan‟ dan „program‟ hampir-
hampir sama, tetapi ada perbedaan sedikit.

- Naskah: sebuah kode program pendek tapi lengkap yang ditujukan untuk dijalankan
dengan menggunakan penerjemah. Naskah tertulis dalam warkah teks yang dapat dibaca.
- Terapan : istilah ini merujuk pada penggunaan terapan dari bahasa pemrograman.
Biasanya terapan diartikan sebagai suatu perangkat lunak yang lengkap, dipaket dan
berguna untuk melaksanakan pekerjaan tertentu. Misalnya Microsoft Word, WhatApp,
Angry Bird, dll.
- Aturcara (program) : urutan perintah yang terdapat dalam naskah atau terapan. Aturcara
juga digunakan sebagai istilah umum untuk menjelakan warkah pendata yang dapat
dilaksanakan.

scripting language (bahasa penaskahan) ; bahasa seperti Python dimana kode aturcara
(program) diterjemahkan ke bahasa mesin seiring dengan penulisan kode. Bandingkan
denganprogramming language (bahasa pengaturcaraan), seperti bahasa C dimana setelah kode
selesai ditulis semuanya, baru dikepul (compiled) untuk diterjemahkan ke bahasa mesin.

scalability (skalabilitas) : kemampuan sebuah sistem untuk menyesuaikan diri terhadap


penambahan jumlah input dan muatan kerja.

scope of variable (cakupan peubah) : bagian program dimana sebuah peubah dapat dirujuk.

security cookie (penganan keamanan) : Nilai acak, berbeda pada setiap pelaksanaan.

semantics : arti dari program

semantic error(galat semantik)galat dalam program yang mengakibat hasil lain dari yang
diharapkan oleh pengatur cara (pemrogram)

sending a message (mengirim sebuah pesan) : mengirim pesan ke sebuah objek artinya meminta
objek untuk melaksanakan atau memanggil salah satu mtode yang dimilikinya.

serial/scalar processing (pengelohan secararunut) : perhitungan dimana angka diolah secara


berurutan. Lawan dari pengolahan vektor (vector processing) dan parallel processing.

shell (cangkang) : baris-komando penerjemah; bagian dari sistem operasi dimana pengguna
memasukkan komando.

simulation (perekaan): pemodelan sistem nyata oleh program komputer.


software (perangkat lunak) : aturcara (program) komputer atau perintah-perintah dari aturcara.

source code (kode sumber) : Sebuah program dalam bahasa tingkat tinggi yang memerlukan
pengepulan untuk dapat dijalankan di komputer.

SRAM (Static Random-Access Memory) : ingatan yang mempertahankan isianya sejauh masih
ada aliran listrik.

stack (susunan): sebuah wadah jenis niskala/abstrak dari objek ke dalam mana objek
dimasukkan dan diambil dengan kaedah masuk terakhir keluar lebih dahulu (LIFO = last in first
out).

stack diagram (diagram susunan) : perwakilan grafik dari susunan sebuah fungsi, peubah-
peubahnya, dan nilai yang dirujuknya.

stack pointer (penunjuk susunan) : sebuah pendaftar yang menunjuk ke sebuah tempat di dalam
susunan.

statement (pernyataan) : perintah untuk melakukan sesuatu di dalam bahasa pengaturcaraan


seperti memanipulasi data, melaksanakan perhitungan dan menghasilkan keluaran.

stepwise refinement (penghalusan berjenjang) : proses memecahkan tugas rumit ke dalam


tugas-tugas yang lebih sederhana.

stride (melangkahi) : jumlah dari anasir larik (array) yang dilangkahi ketika operasi diulang-
ulang.

string (untaian): sebaris teks atau huruf lain yang ditutujukan untuk ditampilkan atau diolah
dalam satu potong.

string literal (untaian keaksaraan) : urutan dari huruf yang membentuk kata; urutan dari huruf
yang diapit oleh dua tanda kutip, baik tanda kutip tunggal („ ‟) atauapun jamak (“ ”).

structure (tatanan) : organisasi atau pengaturan sebuah program dalam pendata (komputer)

subprogram (program bawahan) : bagian dari program yang dipanggil oleh kesatuan program
yang lain; disebut juga subroutine (rutin bawahan).

supercomputer (mahapendata) : Golongan dari pendata yang paling cepat dan paling sembada
yang tersedia.

syntax (sintaksis) : pengaturan tatanan sebuah bahasa.

syntax error(galat sintaksis):galat dalam program yang membuatnya tidak mungkin untuk
ditilik, diuraikan sehingga tidak mungkin diterjemahkan
token (gobang): bongkah dasar pembangun sebuah program yang meliputi kata kunci (keyword),
pengenal (identifier), bilangan, dan berbagai jenis lambang; salah satu dari anasir tatanan
sintaksis sebuah program, analog dengan sebuah kata dalam bahasa alami.

top-down programming (pengaturcaraan atas ke bawah) : merancang sebuah aturcara melalui


pandangan yang menyeluruh terhadap suatu masalah, lalu beranjak ke bawah, ke rutin bawahan
(subrutin) yang khusus.

traceback (jejak belakang) : daftar fungsi-fungsi yang dilaksanakan, dicetak ketika galatwaktu
berjalan (runtime error) berlangsung.

tree (pohon) : tatanan niskala data yang digunakan untuk mengatur data dalam bentukan pohon
sehingga data lebih cepat disisipkan atau dihapus.

unary (esa-angka) : operasi yang hanya menggunakan satu operan; disebut juga monadic

underflow (aliran sedikit) : hasil dari percobaan untu menyimpan angka yang terlalu sedikit.

ungkapan : lihat expression.

unit (unit, satuan) : suatu piranti yang memiliki fungsi khusus.

untaian : lihat string

upload (unggah) : pemindahan data dari pendata setempat ke pendata yang jauh; lawan dari
unduh (download).

utility program(aturcara kegunaan) : atur cara untuk meningkatkan kinerja program lain atau
melakukan tugas berulang-ulang.

untaian dokumen (undok) : lihat docstring

URL (universal resource locator / pencari tempat sumber daya universal): alamat jala (web)

value (nilai) = takaran kuantitatif atau kualitatif dari suatu data.

variable (peubah) : tempat penyimpanan dalam ingatan komputer yang mewakili data. Suatu
pengenal (identifier) yang digunakan untuk merujuk pada sepotong data tertentu yang ingin
ditemukan di dalam program. Peubah menunjuk pada lokasi ingatan (memory), yang dapat
mengantung angka, teks atau jenis data yang lebih rumit.

virtual memory (ingatan maya) : ingatan lambat yang berada di cakram keras, bukan di RAM
cepat.

visualization (visualisasi) : pengubahan angka ke gambar 2D atau 3D atau ke dalam grafik.


void function (fungsi kosomg/nihil): fungsi yang tidak menghasilkan nilai. Fungsi ini
dilaksanakan untuk pekerjaan yang dia lakukan, ketimbang untuk nilai yang dikembalikan.
Lawan dari fungsi menghasilkan (fruitful function).

word (kata) : satuan dari penyimpanan utama, biasanya 1, 2, 4, 6, atau 8 byte.

WWW (World Wide Web / jala mencakup dunia) : jaringan internet yang mencakup seluruh
dunia.

Anda mungkin juga menyukai