0% menganggap dokumen ini bermanfaat (0 suara)
384 tayangan133 halaman

Python

SMK

Diunggah oleh

iim
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
384 tayangan133 halaman

Python

SMK

Diunggah oleh

iim
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 133

DAFTAR ISI

DAFTAR ISI....................................................................................................................................................... 2
KATA PENGANTAR........................................................................................................................................... 5
1. BAB I PENDAHULUAN ................................................................................................................................ 7
1.1 Pengantar ...................................................................................................................................... 7
1.2 Tujuan ........................................................................................................................................... 8
1.3 Manfaat......................................................................................................................................... 8
1.4 Sistematika Penulisan ................................................................................................................... 9
2. BAB II BAHASA PEMROGRAMAN PYTHON.............................................................................................. 10
2.1. Lab 1. Instalasi Bahasa Pemrograman Python ............................................................................ 10
2.1.1. Tujuan: .......................................................................................................................... 10
2.1.2. Memahami Bahasa Pemrograman Python ................................................................... 10
2.1.3. Instalasi Python 3 .......................................................................................................... 10
2.1.4. IDE Python ..................................................................................................................... 11
2.1.5. Alur Pembuatan Program ............................................................................................. 12
2.1.6. Aturan Penulisan Sintak Python .................................................................................... 12
2.1.7. Tugas ............................................................................................................................. 13
2.2. Lab 2. Dasar Pemrograman Python ............................................................................................ 13
2.1.1. Tujuan: .......................................................................................................................... 13
2.1.2. Input dan output ........................................................................................................... 13
2.1.3. Tipe data dan Variabel .................................................................................................. 15
2.1.4. Operator ........................................................................................................................ 17
2.1.5. Tugas ............................................................................................................................. 19
2.3. Lab 3 Menerapkan Struktur Kontrol pada Python ...................................................................... 21
2.3.1. Tujuan ........................................................................................................................... 21
2.3.2. Struktur Percabangan ................................................................................................... 21
2.3.3. Struktur perulangan ...................................................................................................... 24
2.3.4. Tugas ............................................................................................................................. 30
2.4. Lab 5 Menerapkan List, Tupple, Set dan Dictionary ................................................................... 32
2.4.1. List ................................................................................................................................. 32
2.4.2. Tuple.............................................................................................................................. 36
2.4.3. Set ................................................................................................................................. 38
2.4.4. Dictionary ...................................................................................................................... 42
2.5. Lab 5 Menggunakan Fungsi, Module dan Package ..................................................................... 47
2.5.1. Menerapkan Fungsi....................................................................................................... 47
2.5.2. Menerapkan Module .................................................................................................... 53
abs(x) 55
2.5.3. Menerapkan Fungsi lambda.......................................................................................... 57
2.5.4. Menerapkan Package .................................................................................................... 61
2.5.5. Tugas ............................................................................................................................. 65
2.6. Lab 6 Mengunakan Variabel String ............................................................................................. 66
2.6.1. Data string sebagai argumen fungsi print() .................................................................. 66
2.6.2. Deklarasi inisialisasi variabel string ............................................................................... 67
2.6.3. Operasi-Operasi Khusus String...................................................................................... 67
2.6.4. Pemrosesan dan pengformatan data String menggunakan operator % ...................... 68
2.6.5. Fungsi Built-in Operasi String ........................................................................................ 70
2.6.6. Tugas ............................................................................................................................. 71
2.7. Lab 7. Penanganan Eksepsi ......................................................................................................... 73
2.7.1. Mengamati Pesan kesalahan (eksepsi) ......................................................................... 73
BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 2 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.7.2. Mengatasi Kesalahan .................................................................................................... 74
2.7.3. Anatomi dan Hirarki eksepsi dalam python .................................................................. 75
2.7.4. Dua eksespsi dengan cara yang sama ........................................................................... 75
2.7.5. Penggunaan Instruksi raise ........................................................................................... 76
2.7.6. Penggunaan instruksi assert ......................................................................................... 77
2.7.7. Menangkap Kesalahan AssertionError.......................................................................... 78
2.8. Lab 8 Operasi Penanganan File ................................................................................................... 79
2.8.1. Pengenalan File dalam Python ...................................................................................... 79
2.8.2. Fungsi-fungsi yang digunakan untuk operasi file .......................................................... 79
2.8.3. Membuka dan membaca isi file: ................................................................................... 80
2.8.4. Menambahkan isi file .................................................................................................... 81
2.8.5. Menulis Isi file ............................................................................................................... 82
2.8.6. Membaca dan menulis file menggunakan mode ‘r+’ ................................................... 82
2.8.7. Menggunakan Exception untuk menangani operasi file............................................... 83
2.8.8. Mengoperasikan file CSV .............................................................................................. 83
2.8.9. Tugas. ............................................................................................................................ 85
2.9. Lab 9 Pemrograman Obyek......................................................................................................... 85
Tujuan: 85
2.9.1. Pendekatan Pemrograman Prosedural ......................................................................... 85
2.9.2. Pendekatan Pemrograman Berorientasi Obyek ........................................................... 85
2.9.3. Menerapkan Enkapsulasi class dalam Python .............................................................. 85
2.9.4. Pewarisan (inheritance) dalam Python ......................................................................... 93
Tugas 101
3. BAB III SINGGLE BOARD COMPUTER (SBC) RASPBERRY PI4 .................................................................. 103
5.1. Lab 10 Identifikasi SBC Raspberry Pi4 ....................................................................................... 103
5.1.1. Tujuan: ........................................................................................................................ 103
5.1.2. Pendahuluan: .............................................................................................................. 103
5.1.3. Alat dan Bahan: ........................................................................................................... 103
5.1.4. Rangkaian Kerja ........................................................................................................... 104
3.2. Lab 11 Instalasi Sistem Operasi................................................................................................. 104
3.2.1. Tujuan: ........................................................................................................................ 104
3.2.2. Sistem Operasi Raspbian ............................................................................................. 104
3.2.3. Langkah kerja: ............................................................................................................. 106
3.2.4. Tugas: .......................................................................................................................... 107
3.3. Lab 12 Administrasi Sistem Operasi Raspbian .......................................................................... 107
3.3.1. Tujuan: ........................................................................................................................ 107
3.3.2. Alat dan Bahan: ........................................................................................................... 107
3.3.3. Sistem File ................................................................................................................... 107
3.3.4. Langkah kerja: ............................................................................................................. 108
3.3.5. Tugas: .......................................................................................................................... 110
3.4. Lab 13 Digital Input-Output ...................................................................................................... 110
3.4.1. Tujuan: ........................................................................................................................ 110
2.4.1. Alat dan Bahan: ........................................................................................................... 110
5.4.1. Pendahuluan ............................................................................................................... 110
5.4.2. Rangkaian Kerja ........................................................................................................... 111
5.4.3. Menuliskan Kode Program .......................................................................................... 111
5.4.4. Tugas Proyek: .............................................................................................................. 112
3.5. Lab 14 Digital-Analog Sensor .................................................................................................... 113
3.5.1. Tujuan: ........................................................................................................................ 113
3.5.2. Alat dan Bahan: ........................................................................................................... 113
3.5.3. Menggunakan Pushbutton.......................................................................................... 114

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 3 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
3.5.4. Menggunakan LDR ...................................................................................................... 117
3.6. Lab 15 Menerapkan IoT Webserver.......................................................................................... 120
3.6.1. Tujuan: ........................................................................................................................ 120
3.6.2. Alat dan Bahan: ........................................................................................................... 120
3.6.3. Menerapkan Flash Web Server ................................................................................... 121
3.6.4. Sistem Kontrol Lampu Led dan Buzzer melalui Web .................................................. 124
4. BAB IV PENUTUP .................................................................................................................................... 128
4.1 Kesimpulan................................................................................................................................ 128
4.2 Saran ......................................................................................................................................... 128
5. DAFTAR PUSTAKA .................................................................................................................................. 129
6. LAMPIRAN .............................................................................................................................................. 130
7. PENULIS.................................................................................................................................................. 131

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 4 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
KATA PENGANTAR

Balai Besar Pengembangan Penjaminan Mutu Pendidikan Vokasi Bidang Otomotif Dan
Elektronika (BBPPMPV BOE) sebagai salah satu unit pelaksana teknis pada Direktorat Jenderal
Pendidikan Vokasi, Kementerian Pendidikan dan Kebudayaan memiliki tugas dan fungsi untuk
melaksanakan pengembangan dan pemberdayaan Pendidik dan Tenaga Kependidikan (PTK) di
Indonesia. Dalam program Revitalisasi SMK, BBPPMPV BOE menempati peran strategis khususnya
dalam meningkatkan jumlah dan kompetensi bagi pendidik dan tenaga kependidikan SMK.
Disamping kompetensi professional kejuruan guru juga dituntut untuk memiliki Kompetensi
Pedogogik. Kompetensi Pedagogik adalah kemampuan mengelola pembelajaran peserta didik
meliputi pemahaman terhadap peserta didik, perancangan dan pelaksanaan pembelajaran,
evaluasi hasil belajar, dan pengembangan peserta didik untuk mengaktualisasi ragam potensi yang
dimilikinya. Dalam mengelola pembelajaran guru dituntut untuk menguasai berbagai metode
pembelajaran dan menciptakan alat bantu pengajaran (teaching aids) untuk memudahkan siswa
memahami konsep kejuruan.

Salah satu metode pembelajaran yang cocok untuk pendidikan kejuruan adalah Project
Based Learning (PjBL). Pendidikan vokasi diminta untuk mengimplementasikan model
pembelajaran PjBL. Hal ini diterapkan guna menjawab persoalan terkait kebutuhan tenaga kerja
saat ini. Dengan metode ini pembelajaran di pendidikan vokasi menggunakan proyek sebagai
media. Sehingga, tidak hanya hard skill yang terbentuk, namun soft skill juga diperkuat melalui
metode tersebut. Oleh karena itu, Diklat Pembuatan Alat Bantu Pengajaran (Teaching Aids) ini
menggunakan pendekatan Project Based Training.

Universal IoT System (UnIoTsys) merupakan teaching aids yang dapat digunakan dalam proses
transfer pengetahuan dan teknologi terdiri dari dua bagian utama, yaitu hardware merupakan
module-module yang saling terintergrasi dan fleksibel dalam penggunaanya (plug and play) yang
terdiri dari SBC Raspberry Pi 4, LCD hdmi, mikrotik, module sensor, module relay, terminal AC
output 220, projectboard, dan komponen-komponen elektronika. Software merupakan perangkat
lunak open-source GNU General Public License (GPL) yang terdiri dari sistem operasi raspbian, sd
card formatter, python up to version 3, flask webserver, dan library-library lain.

Sekolah dapat memanfaatkan UnIotSys untuk membuat projek-projek IoT yang dibutuhkan
sekolah dalam mewujudkan transforrmasi digital berbagai peralatan sekolah. Selain itu, lembaga

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 5 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
pelatihan dapat memanfaatkan UnIotSys untuk melatih masyarakat dalam penerapan teknologi
IoT untuk keperluan smart home dan aplikasi lainnya. BBPPMPV BOE dapat memanfaatkan
UnIotSys untuk melatih Guru-Guru SMK dengan sain dan teknologi terbaru yang sesuai dengan
revolusi indutri 4.0.

Ucapan terima kasih tak lupa disampaikan kepada pihak-pihak yang terlibat baik secara
langsung maupun tidak dalam memberikan bimbingan dan bantuan kepada penulis, diantaranya:

1. Bapak Dr. Abdul Rochim, MM selaku plt. Kepala BBPPMPV BOE-VEDC Malang atas dukungan
dan bantuanya.
2. Bapak Drs. Supriyanto, M.T selaku Koordinator Program Keahlian Teknologi Informasi. Terima
kasih atas kesempatan yang telah diberikan kepada penyusun.
3. Rekan-rekan Widyaiswara Departemen Teknologi Informasi yang telah memberikan dukungan
dan semangat.
4. Pihak-pihak yang tak bisa penulis sebutkan satu persatu, terima kasih atas segala
dukungannya. Jazakumullah Khairan Katsiran.

Demikian pengantar dari penulis, semoga modul teaching aids Universal Iot System dapat
memberi manfaat pada Dosen, Guru Vokasi Program Keahlian Teknik Komputer dan Informatika
pada khususnya, dan Guru-Guru SMK pada umumnya.
Malang, 08 Juni 2020

Penulis

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 6 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
1. BAB I PENDAHULUAN

1.1 . Pengantar
Internet of Things atau IoT pertama kali dikeluarkan oleh Kevin Ashton pada tahun 1999 di salah satu
presentasinya. Caragas mendefinisikan, bahwa Internet Of Things (IoT) adalah sebuah infrastruktur jaringan
global, yang dapat mengubungkan perangkat keras dan virtual melalui eksploitasi data capture serta
kemampuan komunikasi. Dalam Infrastruktur terdiri dari jaringan yang sudah ada dan internet beserta
pengembangan jaringannya. IoT dapat diterapkan di hampir semua benda-benda yang ada disekitar kita,
bahkan anggota tubuh kita. Saat kita menggunakan jam tangan yang menghitung berapa langkah kita
berjalan dalam satu hari, maka data perjalanan tersebut dapat disimpan di internet untuk dipergunakan di
kemudian hari. Atau mungkin kita pernah mendengar tentang konsep rumah cerdas (smart home), dimana
lampu kamar dapat dihidupmatikan dengan perintah suara kita dan/atau dari smartphone di kejauhan. Jika
semua benda-benda dapat terhubung ke internet, maka berbagai bidang pekerjaan, mulai dari kesehatan,
pendidikan, manufaktur, ekonomi, dan lain sebagainya dapat dikembangkan dengan bantuan IoT. Secara
garis besar, konsep IoT dapat dilihat Gambar 1.1

Gambar 1.1 Arsitektur Internet of Things

Dewasa ini banyak perusahaan besar mulai mendalami Internet of Things sebut saja Intel, Microsoft,
Oracle, dan banyak lagi lainnya. Banyak yang memprediksikan bahwa IoT adalah “The Next Big Thing” di
dunia teknologi informasi, hal ini karena IoT menawarkan banyak potensi yang bisa dikembangkan kembali.
Contohnya adalah implementasi dari internet of Things (IoT) misalnya adalah kulkas yang dapat
memberitahukan kepada pemiliknya via SMS atau email tentang makanan dan minuman apa saja yang
sudah habis dan harus distok lagi. Salah satu cara untuk mengimplementasikan projek-projek IoT dengan
menggunakan raspberry pi dengan pemrograman python.
Raspberry Pi adalah komputer kecil dengan dimensi 85,60 mm x 53,98 mm x 17 mm, dan beratnya
hanya 45 g. Ukurannya yang kecil sangat cocok untuk otomasi rumahan, karena perangkat kecil
dapat dengan mudah diletakkan dalam kotak dan dipasang di dalam kotak listrik, atau pengganti perangkat
termostat yang ada di dinding [1]. Raspberry Pi merupakan komputer mikro single board yang
dikembangkan dengan tujuan mengajarkan dasar-dasar ilmu komputer dan pemrograman. Raspberry Pi
sangat berbeda dari mikrokontroler jenis lainnya, seperti Arduino, yang lebih populer untuk proyek-
proyek prototyping, karena sesungguhnya Raspberry Pi adalah komputer. Raspberry Pi dapat
digunakan untuk banyak hal seperti halnya komputer, misalnya: spreadsheet, word processing,
pemrograman, dan lain-lain [2].

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 7 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Python diciptakan oleh Guido van Rossum yang diperkenalkan sebagai bahasa pemrograman
untukkomputasi. Pada tahun 1999 beliau memperkenalkan bahasa pemrograman ini pada anak Sekolah
Dasar dan Menengah, hingga sekian dekade, python muncul pada raspberry Pi. Python merupakan bahasa
pemrograman yang berorientasi obyek dinamis paling mudah untuk dipelajari sehingga dapat digunakan
untuk bermacam-macam pengembangan perangkat lunak.
Python menyediakan dukungan yang kuat untuk integrasi dengan bahasa pemrograman lain dan
alat-alat bantu lainnya. Python hadir dengan pustaka-pustaka standar yang dapat diperluas [3]. Python
merupakan interpreted language atau scripting language artinya anda tinggal menuliskan program
kemudian langsung bisa menjalankannya tanpa harus mengkompilasinya terlebih dahulu. Sebagai
interpreter Python memiliki keuntungan misalnya tidak perlu secara eksplisit mendeklarasikan jenis
variabel apakah String atau integer, layaknya bahasa pemrograman compiler seperti C/C++ dan Java.
Karena Python sebagai bahasa pemrograman interpreter ia tidak memiliki file binary seperti halnya pada
C/C++ dimana source code bisa dirahasiakan, dan cukup mendistribusikan file binary untuk bisa dijalankan.
Di Python, source code adalah program itu sendiri yang bisa langsung dijalankan.

Gambar 1.2 Integrasi Raspberry Pi dengan Pemrograman Python

Universal IoT System (UnIoTsys) meruapakan teaching aids yang mengintegrasi hardware dan
software dalam satu modulebox yang fleksibel dan kompatibel dan mudah digunakan dalam proses
pembelajaran di sekolah ataupun lembaga pelatihan. UnIoTsys terdiri dari dua bagian utama, yaitu
hardware merupakan module-module yang saling terintergrasi dan fleksibel dalam penggunaanya (plug
and play) yang terdiri dari SBC Raspberry Pi 4, LCD hdmi, mikrotik, module sensor, module relay, terminal
AC output 220, projectboard, dan komponen-komponen elektronika. Software merupakan perangkat lunak
open source GNU General Public License (GPL) yang terdiri dari sistem operasi raspbian, sd card
formatter, python up to version 3, flask webserver, dan library-library lain.

1.2 Tujuan
Tujuan pembuatan teaching aids UnIoTsys adalah:
1. Menerapkan teknologi IoT melalui teknologi rapsberry pi dan pemrograma python dalam saatu
teaching aids yaitu Universal IoT Sytems.
2. Membangun interkoneksi hardware dalam pengembangan IoT di sekolah atau lembaga pelatihan.
3. Menciptakan software aplikasi IoT yang dibutuhkan oleh lingkungan sekolah dan masyarakat sekitar.

1.3 Manfaat
Manfaat pembuatan teaching aids Universal IoT System adalah:
1. Sekolah.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 8 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
1.1 Mempermudah penerapan metode Project Base Learning dalam suatu mata pelajaran.
1.2 Membuat projek-projek IoT yang dibutuhkan sekolah dalam mewujudkan transforrmasi digital
berbagai peralatan sekolah.
2. Lembaga Pelatihan
2.1 Melatih masyarakat dalam penerapan teknologi IoT untuk keperluan smart home dan aplikasi
lainnya.
3. BBPPMPV BOE Malang
3.1 Melatih Guru-Guru SMK dengan sain dan teknologi terbaru yang sesuai dengan revolusi indutri
4.0.
3.2 Menciptkan inovasi-inovasi yang bersesuaian dengan education top project yang sedang
berkembang saat ini.

1.4 Sistematika Penulisan


Sistematika penulisan modul teaching aids UnIoTsys ini tersusun atas empat bab, penjelasan
untuk setiap bab adalah sebagai berikut:

1. Bab I. Pendahuluan, membahas mengenai latar belakang pembuatan teaching aids,


tujuan, manfaat pembuatan teaching aids, dan sistematika penulisan modul .
2. Bab II. Spesifikasi Teaching Aids, berisi tinjauan hardware dan software yang diperlukan
dalam teaching aids UnIoTsys.
3. Bab III. Lembar Kerja, berisi projek-projek lab untuk melatih keterampilan merakit
hardware dan membuat coding pemrogramn python.
4. Bab VII. Kesimpulan, berisi tentang kesimpulan dan saran pembuatan teaching aids
UnIoTsys.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 9 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2. BAB II BAHASA PEMROGRAMAN PYTHON

2.1. Lab 1. Instalasi Bahasa Pemrograman Python


2.1.1. Tujuan:
1. Memahami bahasa pemrograman python
2. Melakukan instalasi bahasa pemrograman python
3. Melakukan instalasi IDE untuk pemrograman python

2.1.2. Memahami Bahasa Pemrograman Python


Python adalah bahasa pemograman tingkat tinggi yang dapat digunakan secara luas di berbagai
bidang. Python diciptakan pertama kali oleh Guido van Rossum pada tahun 1991. Sintaks dan fungsi pada
Python dipengaruhi oleh beberapa bahasa seperti C, C++, Lisp, Perl dan Java. Oleh karena itu, kita dapat
menemui konsep pemograman prosedural, fungsional dan object-oriented di Python. Python relatif mudah
dipelajari bila dibandingkan dengan C++, Java dan PHP karena sintaks Python lebih singkat, lebih jelas dan
mudah dipahami oleh programmer pemula. PyPy merupakan implementasi dari bahasa pemrograman
Python yang ditulis dengan Python. Interpreter ditulis dalam RPython (bagian dari Python) seperti dalam
Gambar 3.9

Gambar 2.1 Alur interpreter dan compiler source code python

Konsep sederhana PyPy adalah menggunakan JIT (just-in-time compilation) dalam mengkompilasi
untuk membuat sistem interpreter lebih efisien dan cepat. Jadi pada dasarnya JIT memungkinkan untuk
mengkompilasi kode sumber menjadi kode mesin asli yang membuatnya sangat cepat.
Source code .py pertama kali dikompilasi menjadi kode byte sebagai .pyc. Byte code ini dapat
diterjemahkan oleh JIT compiler. Python banyak digunakan untuk membuat berbagai macam program,
seperti: program CLI, Program GUI (desktop), Aplikasi Mobile, Web, IoT, Game, Program untuk Hacking.

2.1.3. Instalasi Python 3

Python: Interpreter yang menerjemahkan bahasa python ke bahasa mesin, sehingga program bisa
dijalankan pada operating sistem Linux, tidak perlu diinstal. Karena Sebagian besar distro Linux sudah
menyediakannya secara default.Untuk mengeceknya, silahkan ketik perintah python --version di terminal.

$ python –version

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 10 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Instalasi python di Windows dengan mendownload file python.msi, pada alamat situs resminya yaitu
https://www.python.org/downloads/windows/

Gambar 2.2 Versi python untuk windows

Setelah download selesai, kita akan mendapatkan file python-3.9.0.msi. File python-3.9.0.msi adalah file
instalator python. File ini akan melakukan instalasi ke sistem windows.

2.1.4. IDE Python


PyCharm adalah salah satu IDE open source terbaik untuk bahasa Python. Jika kamu
adalah pengembang individu atau pemula, IDE ini sangat cocok untukmu. Muncul
dalam beberapa opsi lisensi dari open source ke versi berbayar. Kamu bisa memilih
lisensi apa pun sesuai kebutuhan. PyCharm adalah paket fitur IDE yang mendukung
bahasa Python dari setiap aspek. Muncul dengan fitur seperti penyelesaian kode
berkualitas tinggi, debugger canggih, inspeksi kode, dll. PyCharm juga mendukung
pemrograman web dan kode yang ditulis dalam SQL dan bahasa terkait database
lainnya. PyCharm bahkan memungkinkanmu untuk memperluas fungsinya
menggunakan plugin eksternal. Jika kamu sedang mengerjakan proyek besar atau hanya ingin tetap aman,
kamu bisa menggunakan Integrasi Sistem Kontrol Versi kapan saja.
https://www.jetbrains.com/pycharm/download/

Jupyter adalah IDE open source yang hadir dengan banyak fitur canggih. Ini
sebenarnya aplikasi berbasis web yang mendukung lebih dari 40 bahasa
pemrograman. Jupyter memungkinkanmu untuk menambahkan komponen HTML
dari gambar ke video. jika kamu ingin berkarier di bidang data science, Jupyter dapat
banyak membantu. Kamu bisa melakukan pembersihan data, transformasi data,
simulasi numerik, pemodelan statistik, visualisasi data, banyak fungsi lainnya dengan
Jupyter. Kamu bahkan dapat menggunakan Jupyter IDE untuk membuat dan berbagi
dokumen dengan kode langsung, persamaan, teks, dan visual. Meskipun instalasinya
sedikit rumit, ini memberikan output interaktif dan membuat seluruh pengembangan lebih lancar.
https://jupyter.org/

Thonny adalah IDE baru (lingkungan pengembangan terintegrasi) yang dibundel dengan versi
terbaru dari Raspbian dengan sistem operasi PIXEL. Menggunakan Thonny, sekarang lebih
mudah untuk belajar membuat kode. Thonny hadir dengan Python 3.6 bawaan, jadi Anda
tidak perlu menginstal apa pun. Buka saja programnya, yang akan Anda temukan di Menu>
Pemrograman. Ini menawarkan banyak fitur canggih yang saat ini tidak tersedia di program
Python 3 (IDLE), yang masih disertakan dengan Raspbian.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 11 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.1.5. Alur Pembuatan Program
Langkah-langkah yang dilakukan dalam membuat program adalah sebagai berikut:
1. Membuat skrip python dengan teks editor.
2. Skrip python diterjemahkan ke dalam kode biner oleh (intepreter) python, sehingga komputer
dapat mengerti arti perintah tersebut.
3. Komputer mengerjakan perintah tersebut.

Gambar 2.3 Alur pembuatan kode program python

2.1.6. Aturan Penulisan Sintak Python


a. Penulisan Statement Python
Statement adalah sebuah intruksi atau kalimat perintah yang akan dieksekusi oleh komputer.
print("Hello Guru-Guru TKJ!")
print("Belajar Python dari Nol")
nama = "Eljava Mifzal Herbiyan"

Penulisan satu statement tidak diakhiri dengan tanda titik-koma.

b. Penulisan String pada Python


String adalah teks atau kumpulan dari karakter.String dalam pemrograman biasanya ditulis dengan
dibungkus menggunakan tanda petik. Bisa menggunakan tanda petik tunggal maupun ganda.
nama = "Eljava Mifzal Herbiyan"
kelas = "TKJ - 01"
c. Penuilsan Case pada Python
Menurut rekomendasi style guide Google, berikut ini contoh penulisan case yang disarankan:
## Snake Case digunakan pada:
module_name, package_name, method_name, function_name, global_var_name,
instance_var_name, function_parameter_name, local_var_name.
## CamelCase digunakan Pada:
ClassName, ExceptionName
## ALL CAPS digunakan Pada:
GLOBAL_CONSTANT_NAME

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 12 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
d. Penulisan Blok Program
Blok program adalah kumpulan dari beberpaa statement yang digabungkan dalam satu blok.Penulisan
blok program harus ditambahkan indentasi (tab atau spasi 2x/4x)

# blok percabangan if
if username == 'eljava':
print("Selamat Datang Admin")
print("Silahkan ambil tempat duduk")
# blok percabangan for
for i in range(10):
print i

e. Penulisan Komentar
Komentar merupakan baris kode yang tidak akan dieksekusi.Komentar digunakan untuk memberikan
informasi tambahan dan untuk menonaktifkan kode.

Ada beberapa cara menulis komentar pada pemrograman Python:


 Menggunakan Tanda Pagar (#)
# ini adalah komentar
# Ini juga komentar

 Menggunakan Tanda Petik


Selain untuk mengapit teks (string), tanda petik juga dapat digunakan untuk membuat komentar.
"Ini adalah komentar dengan tanda petik ganda"
'Ini juga komentar, tapi dengan tanda petik tunggal'

Penulisan komentar dengan tanda petik jarang digunakan, kebanyakan orang lebih memilih untuk
menggunakan tanda pagar, jadi tidak direkomendasikan

2.1.7. Tugas
1. Melakukan instalasi bahasa pemrograman python
2. Melakukan instalasi IDE untuk pemrograman python
2.2. Lab 2. Dasar Pemrograman Python
2.1.1. Tujuan:
1. Menerapkan fungsi input dan output
2. Menerapkan tipe data dan variabel dalam bahasa pemrograman python
3. Menerepkan operator dalam bahasa pemrograman python

2.1.2. Input dan output


a. Struktur Input Proses dan Output
Input adalah masukan yang kita berikan ke program. Program akan memprosesnya dan menampilkan hasil
outputnya. Input, proses, dan output adalah inti dari semua program komputer.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 13 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
input(“Teks”) print(“Teks”, isi_varabel)

Gambar 2.4 Fungsi input dan output

b. Menampilkan Output dengan fungsi print()


Untuk menampilkan output teks menggunakan fungsi print(). Begitu pula Variabel. Pada contoh di atas kita
menggunakan tanda koma (,) untuk menggabungkan teks dan variabel yang akan ditampilkan.
print "Hello World!"
print nama_variabel
print ("Gabung dengan" + nama_variabel)

c. Fungsi print() dengan lebih dari satu argumen dan kata kunci end
Fungsi print () dapat memiliki lebih dari satu argumen dan diakhiri dengan kata kunci end.

Argumen kata kunci end menentukan karakter yang dikirim oleh fungsi print () ke output setelah mencapai
akhir argumen posisionalnya. Perilaku default mencerminkan situasi di mana argumen kata kunci akhir
secara implisit menggunakan end = "\ n".

d. Fungsi print() dan Kata kunci sep


Fungsi print () memisahkan argumen yang dikeluarkan dengan mengunakan spasi. Perilaku ini juga bisa
diubah. Kata kunci Argumen yang bisa digunakan adalah sep (separator/ pemisah). Lihat kode di editor,
dan jalankan.
print("My", "name", "is", "Monty", "Python.", sep="-")

Argumen sep memberikan hasil sebagai berikut:

Kerjakan tugas dibawah ini:


Buatlah program untuk menampilkan keluaran sebagai berikut menggunakan keyword sep dan end:

My_name_is*Monty*Python.*

Pemrograman *** Essentials *** di ... Python

e. Input dari Keyboard


Python sudah menyediakan fungsi input() dan raw_input() untuk mengambil inputan dari keyboard.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 14 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Cara pakainya:
nama_varabel = input("Sebuah Teks")

Artinya, teks yang kita inputkan dari keyboard akan disimpan ke dalam nama_variabel.
# Mengambil input
nama = input("Siapa nama kamu ? ")
umur = input("Berapa umur kamu ? ")
# Menampilkan output
print ("Hello",nama,"umur kamu adalah",umur,"tahun")

Hasilnya:

2.1.3. Tipe data dan Variabel


a. Tipe Data
Secara umum, tipe data primitif dalam python dibagi menjadi tiga jenis:
1. Tipe data angka
Tipe data angka dibagi menjadi beberapa jenis lagi:
 int (Integer): bilangan bulat, contoh 32, 22, 12, 10, dsb.
 float: bilangan pecahan, contoh 1.3, 4.2, 22.3, dsb.

harga = 12000 #tipe int


berat = 23.12 #float
jarak = 3e3 #float 3000.0, huruf e artinya eksponen 10

2. Tipe data teks


Tipe data teks dibagi menjadi dua jenis lagi:
 Char: Karakter, contoh 'E'.
 String: Kumpulan karakter, contoh "SMK Bisa Hebat".
Penulisan tipe data teks harus diapit dengan tanda petik. Bisa menggunakan petik tunggal ('...'), ganda
("..."), dan tiga ('''...''' atau """...""").
nama = "Hisyam Herbiyan"
jenis_kelamin = 'L'
alamat = """
Graha Gardenia,D9. RT/RW 02/14,
Saptorenggo, Malang
"""
agama = 'Islam'

3. Tipe data boolean


Tipe data boolean adalah tipe data yang hanya memiliki dua nilai yaitu True dan False atau 0 dan 1.
Penulisan True dan False, huruf pertamnya harus kapital dan tanpa tanda petik.
nyala = True
nyala = 1 #Nilai 1 tipe int, tapi bisa menjadi bool

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 15 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
b. Konversi Tipe Data
Meskipun Python telah otomatis mendeteksi tipe data yang tersimpan dalam variabel, tapi ada kalanya kita
perlu melakukan konversi tipe data.
Misalkan, pada contoh berikut ini:
a = 10
b = 3
c = a / b
print c #output: 3
Pembagian nilai a dan b menghasilkan 3 (integer). Mengapa demikian?
Karena nilai a dan b bertipe integer, maka hasilnya pun berupa integer.

c. Bagaimana agar hasilnya ada komanya?


Untuk menghasilkan nilai dibelakang koma harus merubah tipe variabel a dan b menjadi bilangan pecahan
(float) kemudian melakukan operasi pembagiani.
a = 10
b = 3
c = float(a) / float(b) #output: 3.3333333333333335
print c

Fungsi float() akan mengubah nilai a menjadi 10.0 dan b menjadi 3.0.
Fungsi-fungsi untuk mengubah tipe data:
 int() untuk mengubah menjadi integer;
 long() untuk mengubah menjadi integer panjang;
 float() untuk mengubah menjadi float;
 bool() untuk mengubah menjadi boolean;
 chr() untuk mengubah menjadi karakter;
 str() untuk mengubah menjadi string.
 bin() untuk mengubah menjadi bilangan Biner.
 hex() untuk mengubah menjadi bilangan Heksadesimal.
 oct() untuk mengubah menjadi bilangan okta.
Untuk melakukan pengaturan jumlah angka dibelakang koma dapat digunakan perintah “{:.2f}”.format()

C= 3.3333333333333335
print("{:.2f}".format(c)) #akan menghasilkan keluaran 3.33

d. Variabel
Variabel merupakan tempat menyimpan data, sedangkan tipe data adalah jenis data yang terseimpan
dalam variabel.

Gambar 2.5 Ilustrasi variabel dengan tipe data

Variabel bersifat mutable, artinya nilainya bisa berubah-ubah.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 16 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Variabel di python dapat dibuat dengan format:
nama_variabel = <nilai>
Contoh:
variabel_ku = "ini isi variabel"
variabel2 = 20

Kemudian untuk melihat isi variabel, kita dapat menggunakan fungsi print.
print variabel_ku
print variabel2

e. Aturan Penulisan Variabel


1. Nama variabel boleh diawali menggunakan huruf atau garis bawah (_), contoh: nama, _nama,
namaKu, nama_variabel.
2. Karakter selanjutnya dapat berupa huruf, garis bawah (_) atau angka, contoh: __nama, n2, nilai1.
3. Karakter pada nama variabel bersifat sensitif (case-sensitif). Artinya huruf besar dan kecil
dibedakan. Misalnya, variabel_Ku dan variabel_ku, keduanya adalah variabel yang berbeda.
4. Nama variabel tidak boleh menggunakan kata kunci yang sudah ada seperti if, while, for, dsb.
2.1.4. Operator
Operator merupakan simbol-simbol yang digunakan untuk melakukan operasi tertentu. Terapat kurang
lebih enam jenis operator dalam pemrograman yang wajib diketahui:
1. Operator Aritmatika
2. Operator Pembanding/Relasi
3. Operator Penugasan
4. Opeartor Logika
5. Operator Bitwise
6. Operator Ternary

a. Operator Aritmatika
Opeartor aritmatika terdiri dari:
Tabel 2-1 Operator Aritmatika
Operator Simbol
Penjumlahan +
Pengurangan -
Perkalian *
Pembagian /
Pembagian(hasil integer) //
Sisa Bagi %
Pemangkatan **
Contoh:
a = int(input("Inputkan nilai a: "))
b = int(input("Inputkan nilai b: "))
# Menggunakan operator penjumlahan
c = a + b
print ("Hasil ", a, "+" , b,"=", c )

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 17 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
b. Operator Relasi
Operator ini digunakan untuk membandingkan dua buah nilai. Operator ini juga dikenal dengan operator
relasi dan sering digunakan untuk membuat sebuah logika atau kondisi.
Tabel 2-2 Operator Relasi
Operator Simbol
Lebih Besar >
Lebih Kecil <
Sama Dengan ==
Tidak Sama dengan !=
Lebih Besar Sama dengan >=
Lebih Kecil Sama dengan <=

Contoh:
a = 9
b = 5
c = a < b

Apakah isi dari variabel c?


Isinya adalah False, karena nilai 9 lebih kecil dari 5 (9 < 5) adalah salah (False).

c. Operator Logika
Operator logika digunakan untuk membuat operasi logika, seperti logika AND, OR, dan NOT.Operator
logika terdiri dari:
Tabel 2-3 Operator Logika
Operator Simbol
Logika AND and
Logika OR or
Negasi/kebalikan not

Contoh:
a = True
b = False

# Logika AND
c = a and b
print (a, "and", b, "adalah", c)

d. Prioritas Eksekusi Operator di Python


Dari semua operator diatas, masing-masing mempunyai urutan prioritas.Prioritas pertama akan dilakukan
paling pertama, begitu seterusnya sampai dengan prioritas terakhir.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 18 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Tabel 2-4 Prioritas Eksekusi Operator
Prioritas Operator Keterangan
1 ** Aritmatika
2 ~, +, - Bitwise
3 *, /, %, // Aritmatika
4 +, - Aritmatika
5 >>, << Bitwise
6 & Bitwise
7 ^, | Bitwise
8 <=, <, >, >= Perbandingan
9 <> , ==, != Perbandingan
10 =, %=, /=, //=, -=, +=, *=, **= Penugasan
11 is, is not Identitas
12 in, not in Membership (Keanggotaan)
13 not, or, and Logika

Contoh: Buktikan secara hitungan manual, operasi berikut:


2**3*4/2//2%5 hasilnya adalah 3.0
4-2+10%2*3 hasilnya adalah 2
10/2+3**2-6//2 hasilnya adalah 11.0
5<3>2 or 4>=4<=6 hasilnya adalah True
0==3<5 and 4>=4==1 hasilnya adalah False

2.1.5. Tugas
1. Jalankan dan analisa kode program :
# Ambil input untuk mengisi nilai
a = int(input("Inputkan nilai a: "))
b = int(input("Inputkan nilai b: "))
# Menggunakan operator penjumlahan
c = a + b
print ("Hasil ", a, "+" , b,"=", c )
# Menggunakan operator pengurangan
c = a - b
print ("Hasil ", a, "-" , b,"=", c )
# Menggunakan operator perkalaian
c = a * b
print ("Hasil ", a, "X" , b,"=", c )
# Menggunakan operator pembagian
c = a / b
print ("Hasil ", a, "/" , b,"=", c )
# Menggunakan operator sisa bagi
c = a % b
print ("Hasil ", a, "%" , b,"=", c )
# Menggunakan operator pangkat
c = a ** b
print ("Hasil ", a, "^" , b,"=", c )

2. Jalankan dan analisa kode program :

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 19 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
a = int(input("Inputkan nilai a: "))
b = int(input("Inputkan nilai b: "))
# apakah a sama dengan b?
c = a == b
print ("Apakah" ,a, "==" ,b, ":",c)
# apakah a < b?
c = a < b
print ("Apakah" ,a, "<" ,b, ":",c)
# apakah a > b?
c = a > b
print ("Apakah" ,a, ">" ,b, ":",c)
# apakah a <= b?
c = a <= b
print ("Apakah" ,a, "<=" ,b, ":",c)
# apakah a >= b?
c = a >= b
print ("Apakah" ,a, ">=" ,b, ":",c)
# apakah a != b?
c = a != b
print ("Apakah" ,a, "!=" ,b, ":",c)

3. Jalankan dan analisa kode program :


a = True
b = False
# Logika AND
c = a and b
print (a, "and", b, "adalah", c)
# Logika OR
c = a or b
print (a, "or", b, "adalah", c)
# Logika NOT
c = not a
print ("not", a, "adalah", c)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 20 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.3. Lab 3 Menerapkan Struktur Kontrol pada Python
2.3.1. Tujuan
1. Menerapkan struktur kontrol percabangan
2. Menerapkan struktur kontrol perulangan
2.3.2. Struktur Percabangan
Pengambilan keputusan merupakan antisipasi terhadap kondisi yang terjadi saat pelaksanaan program dan
menentukan tindakan yang diambil sesuai dengan kondisi tersebut. Struktur keputusan mengevaluasi
beberapa ekspresi yang menghasilkan TRUE atau FALSE sebagai hasil. Anda perlu menentukan tindakan
mana yang harus diambil dan pernyataan mana yang akan dieksekusi jika hasilnya TRUE atau FALSE
sebaliknya. Berikut ini adalah bentuk umum dari struktur pengambilan keputusan yang ditemukan di
sebagian besar bahasa pemrograman.
Tabel 2-5 Perintah-Perintah Python if
No Perintah Diskripsi
1 if Pernyataan if terdiri dari ekspresi boolean yang diikuti oleh satu atau
beberapa pernyataan.
2 if … else Pernyataan if dapat diikuti oleh pernyataan lain opsional, yang
dieksekusi ketika ekspresi boolean adalah FALSE.
3 If … else if… else Pernyataan untuk multi kondisi, if dapat diikuti oleh pernyataan if yang
lain, yang dieksekusi ketika ekspresi boolean adalah FALSE.

a. Sintak Perintah Python if


Struktur alur instruksi if adalah sebagai berikut:

Gambar 2.6 Flowchart perintah if

Format penulisan instruksi percabangan is adalah sebagai berikut:


if test expression:
statement(s)

Program mengevaluasi ekspresi test dan akan mengeksekusi pernyataan hanya jika ekspresi test adalah
True. Dalam Python, isi pernyataan if ditunjukkan oleh indentasi. Isi perintah if dimulai dengan indentasi
baris pertama dan yang tidak diberi indentasi menandai akhir. Contoh:

num = 3
if num > 0:
print(num, "adalah angka positif.")
print("Ini selalu dicetak.")
num = -1

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 21 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
if num > 0:
print(num, " adalah angka negatif.")
print("Ini juga selalu dicetak.")

Saat Anda menjalankan program, hasilnya adalah:

Analisa Program
Dalam contoh di atas, num> 0 adalah ekspresi uji. Isi if dijalankan hanya jika bernilai True. Ketika
variabel num sama dengan 3, ekspresi uji adalah True dan pernyataan di dalam tubuh if dijalankan. Jika
variabel num sama dengan -1, ekspresi uji salah dan pernyataan di dalam tubuh if dilewati. Pernyataan
print () berada di luar blok if (tidak diberi jarak). Karenanya, ini dijalankan terlepas dari ekspresi
pengujian.

b. Sintak Perintah Python if…else


Struktur alur program (flowchart) instruksi if – else adalah sebagai berikut:

Gambar 2.7 Flowchart perintah if…else

Format penulisan instruksi percabangan if – else adalah sebagai berikut:

if test expression:
Body of if
else:
Body of else

Pernyataan if..else mengevaluasi ekspresi pengujian dan akan mengeksekusi isi if hanya jika kondisi
pengujian adalah True. Jika kondisinya False, maka tubuh dari else dieksekusi. Indentasi digunakan
untuk memisahkan blok. Contoh:

num = -1
if num >= 0:
print("Positive or Zero")
else:
print("Negative number")

Hasilnya:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 22 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Analisa Program
Dalam contoh di atas, ketika num sama dengan 7, ekspresi uji adalah True dan isi if dijalankan dan isi
else dilewati. Jika num sama dengan -5, ekspresi tesnya False maka isi if dilewati dan isi else
dijalankan.

c. Sintak Perintah Python if…elif… else


Struktur alur program (flowchart) instruksi if – elif - else adalah sebagai berikut:

Gambar 2.8 Flowchart perintah if…elif…else

Format penulisan instruksi percabangan if – elif - else adalah sebagai berikut:


if test expression:
Body of if
elif test expression:
Body of elif
else:
Body of else
Elif adalah kependekan dari else if. Ini memungkinkan kita untuk memeriksa beberapa ekspresi. Jika
kondisi jika False, ia memeriksa kondisi blok elif berikutnya dan seterusnya. Jika semua kondisinya
False, body dari else dieksekusi. Hanya satu blok di antara beberapa blok if ... elif ... else
dijalankan sesuai dengan kondisi. Blok if hanya dapat memiliki satu blok lagi. Tapi itu bisa memiliki
beberapa blok elif. Contoh:
num = 3.4
if num > 0:
print("Positive number")
elif num == 0:
print("Zero")
else:
print("Negative number")

Hasilnya:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 23 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Analisa Program
Ketika variabel num bernilai positif, maka Positive number dicetak. Jika num bernilai 0, maka Zero
dicetak. Jika num bernilai negatif, maka Negative number dicetak.

d. Perintah Python nested if


Kita dapat memiliki pernyataan if ... elif ... else di dalam pernyataan if ... elif ...
else. Ini disebut nested dalam pemrograman komputer. Sejumlah pernyataan ini bisa bertumpuk di dalam
satu sama lain. Indentasi adalah satu-satunya cara untuk mengetahui tingkat bersarang. Mereka bisa
membingungkan, jadi harus dihindari kecuali jika perlu. Contoh:
num = int(input("Enter a number: "))
if num >= 0:
if num == 0:
print("Zero")
else:
print("Positive number")
else:
print("Negative number")

Output 1:
Enter a number: 5
Positive number

Output 2:
Enter a number: -1
Negative number

Output 3:
Enter a number: 0
Zero

2.3.3. Struktur perulangan


Secara umum, pernyataan dieksekusi secara berurutan: Pernyataan pertama dalam suatu fungsi dijalankan
pertama, diikuti oleh yang kedua, dan seterusnya. Mungkin ada situasi ketika Anda perlu mengeksekusi
blok kode beberapa kali. Bahasa pemrograman menyediakan berbagai struktur kontrol yang
memungkinkan jalur eksekusi yang lebih rumit. Pernyataan loop memungkinkan kita untuk mengeksekusi
pernyataan atau sekelompok pernyataan beberapa kali
Tabel 2-6 Tabel 3. 5 Perintah-Perintah Python Loop
No Perintah Diskripsi
1 for Menjalankan urutan pernyataan beberapa kali dan
menyingkat kode yang mengelola variabel loop.
2 while Mengulangi pernyataan atau sekelompok pernyataan saat
kondisi yang diberikan True. Ini menguji kondisi sebelum
menjalankan badan perulangan.
3 Nested loop Anda dapat menggunakan satu atau lebih loop di dalam
while lainnya, for atau do.. while loop.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 24 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
a. Perintah Kontrol Loop
Pernyataan kontrol loop mengubah eksekusi dari urutan normalnya. Saat eksekusi meninggalkan ruang
lingkup, semua objek otomatis yang dibuat dalam lingkup itu dimusnahkan. Python mendukung pernyataan
kontrol berikut.
Tabel 2-7 Perintah-Perintah Kontrol Loop
No Perintah Diskripsi
1 break Menghentikan pernyataan loop dan mentransfer eksekusi ke
pernyataan segera setelah loop.
2 continue Menyebabkan loop melewati sisa tubuhnya dan segera
menguji ulang kondisinya sebelum mengulang.
3 pass Pernyataan pass dalam Python digunakan ketika pernyataan
diperlukan secara sintaksis tetapi Anda tidak ingin perintah
atau kode apa pun dieksekusi.

b. Sintak Perintah Python for


Perulangan for di Python digunakan untuk mengulangi urutan (list, tuple, string) atau objek iterable lainnya.
Iterasi pada suatu urutan disebut traversal.

For val in sequence:


Body of for

Di sini, val adalah variabel yang mengambil nilai item di dalam urutan pada setiap iterasi. Pengulangan
berlanjut hingga kita mencapai item terakhir dalam urutan. Badan loop for dipisahkan dari kode lainnya
menggunakan indentasi. Flowchart perintah for ditunjukkan dalam Gambar 3.16

Gambar 2.9 Flowchart perintah for

# List of numbers
numbers = [6, 5, 3, 8, 4, 2, 5, 4, 11]
# variable to store the sum
sum = 0
# iterate over the list
for val in numbers:
sum = sum + val
print(numbers)
print(“The sum is”, sum)

Saat Anda menjalankan program, hasilnya adalah:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 25 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
c. Fungsi range()
Kita bisa menghasilkan urutan angka menggunakan fungsi range(). range (10) akan menghasilkan angka
dari 0 sampai 9 (10 angka).Kita juga bisa mendefinisikan ukuran start, stop dan step sebagai
range(start, stop, step_size). step_size default ke 1 jika tidak disediakan. Untuk memaksa
fungsi ini mengeluarkan semua item, kita dapat menggunakan function list().

print(range(10))
print(list(range(10)))
print(list(range(2, 8)))

Output:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7]

Fungsi range () di for loop dapat digunakan untuk mengulang melalui urutan angka, kombinasi
dengan fungsi len () untuk mengulang melalui urutan menggunakan pengindeksan.
genre = ['pop', 'rock', 'jazz']
# iterate over the list using index
for i in range(len(genre)):
print("I like", genre[i])

Output:
I like pop
I like rock
I like jazz

d. for loop dengan else


Sebuah for loop dapat memiliki blok else opsional juga. Bagian lain dijalankan jika item dalam urutan yang
digunakan dalam for loop habis. Kata kunci break dapat digunakan untuk menghentikan pengulangan for.
Dalam kasus seperti itu, bagian lain akan diabaikan. Oleh karena itu, bagian lain dari perulangan for berjalan
jika tidak ada pemutusan hubungan kerja. Berikut adalah contoh untuk menggambarkan hal ini.
digits = [0, 1, 5]
for i in digits:
print(i)
else:
print("No items left.")

Saat Anda menjalankan program, hasilnya adalah:


0
1
5
No items left.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 26 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Di sini, loop for mencetak item dari daftar hingga loop habis. Ketika loop for habis, ia mengeksekusi blok
kode di else dan mencetak no items left. Pernyataan for...else dapat digunakan dengan kata
kunci break untuk menjalankan blok else hanya jika kata kunci break tidak dieksekusi. contoh:

# program to display student's marks from record


student_name = 'Soyuj'
marks = {'James': 90, 'Jules': 55, 'Arthur': 77}
for student in marks:
if student == student_name:
print(marks[student])
break
else:
print('No entry with that name found.')

Output:
No entry with that name found.

e. Sintak Perintah Python while


Perulangan while dalam Python digunakan untuk mengulang satu blok kode selama ekspresi uji (kondisi)
benar. Kami biasanya menggunakan perulangan ini ketika kami tidak mengetahui berapa kali untuk
mengulang sebelumnya.
Perulangan for di Python digunakan untuk mengulangi urutan (list, tuple, string) atau objek iterable
lainnya. Iterasi pada suatu urutan disebut traversal.

while test_expression:
Body of while

Dalam while loop, ekspresi tes diperiksa terlebih dahulu. Isi loop hanya dimasukkan jika
test_expression bernilai True. Setelah satu iterasi, ekspresi tes diperiksa lagi. Proses ini berlanjut
hingga test_expression bernilai False. Di Python, body loop while ditentukan melalui lekukan. Body
dimulai dengan lekukan dan baris pertama yang tidak menjorok menandai akhir. Python mengartikan nilai
bukan nol sebagai True. None dan 0 diartikan sebagai False. Flowchart perintah while ditunjukkan
dalam Gambar berikut.

Gambar 2.10 Flowchart perintah while

Perhatikan contoh berikut:


# Program to add natural

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 27 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
# numbers up to
# sum = 1+2+3+...+n
# To take input from the user,
n = int(input("Enter n: "))
# initialize sum and counter
sum = 0
i = 1
while i <= n:
sum = sum + i
i = i+1 # update counter
# print the sum
print("The sum is", sum)

Saat Anda menjalankan program, hasilnya adalah:

Analisa Program
Dalam program di atas, ekspresi tes akan menjadi True selama variabel penghitung kita i kurang dari atau
sama dengan n (10 dalam program kita). Kita perlu meningkatkan nilai variabel counter di badan loop. Ini
sangat penting (dan kebanyakan dilupakan). Kegagalan untuk melakukannya akan menghasilkan loop tak
terbatas (loop tanpa akhir).

f. while…else
Sama seperti for loop, loop juga dapat memiliki blok else opsional. Bagian lain dijalankan jika kondisi di loop
sementara bernilai False. Perulangan while dapat diakhiri dengan pernyataan break. Dalam kasus seperti
itu, bagian lain akan diabaikan. Oleh karena itu, bagian lain loop sementara berjalan jika tidak ada
pemutusan yang terjadi dan kondisinya salah. Berikut adalah contoh untuk menggambarkan hal ini.

counter = 0
while counter < 3:
print("Inside loop")
counter = counter + 1
else:
print("Inside else")

Output:
Inside loop
Inside loop
Inside loop
Inside else

Di sini, kami menggunakan variabel counter untuk mencetak string Inside loop tiga kali. Pada iterasi
keempat, kondisi sementara menjadi False. Karenanya, bagian lain dijalankan.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 28 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
g. Sintak Perintah Python break
Pernyataan break menghentikan loop yang berisi itu. Kontrol program mengalir ke pernyataan segera
setelah badan loop.Jika pernyataan break berada di dalam loop bersarang (loop di dalam loop lain),
pernyataan break akan menghentikan loop terdalam. Format penulisan perintah break sebagai berikut:

Intruksi loop (while atau for)


break

for val in "string":


if val == "i":
break
print(val)
print("The end")
Saat Anda menjalankan program, hasilnya adalah:
s
t
r
The end

Analisa Program
Dalam program ini, kami melakukan iterasi melalui urutan "string". Kami memeriksa apakah hurufnya
adalah i, di mana kami memutuskan dari loop. Oleh karena itu, kami melihat dalam output kami bahwa
semua huruf sampai i dicetak. Setelah itu, loop berakhir.

Flowchart dan mekanisme kerja perintah break ditunjukkan berikut

Gambar 2.11 Flowchart dan mekanisme kerja perintah break dalam for dan while

h. Sintak Perintah Python continue


Pernyataan continue digunakan untuk melewati sisa kode di dalam loop hanya untuk iterasi saat ini.
Loop tidak berhenti tetapi berlanjut dengan iterasi berikutnya. Flowchart dan mekanisme kerja perintah
continue ditunjukkan dalam Gambar berikut.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 29 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Gambar 2.12 Flowchart perintah continue dalam for dan while

Format penulisan dan contih penerapan instruksi continue adalah sebagai berikut:

Intruksi loop (while atau for)


continue

Contoh:
for val in "string":
if val == "i":
continue
print(val)
print("The end")

Saat Anda menjalankan program, hasilnya adalah:


s
t
r
n
g
The end

Analisa Program
Program ini sama dengan contoh di atas kecuali pernyataan break diganti dengan continue. Kami
melanjutkan dengan loop, jika string adalah i, tidak mengeksekusi sisa blok. Oleh karena itu, kami
melihat dalam output kami bahwa semua huruf kecuali i dicetak

2.3.4. Tugas
1. Jalankan dan analisa kode program:

total_belanja = int(input("Total belanja: Rp "))


bayar = total_belanja
if total_belanja > 100000:
print("Kamu mendapatkan bonus minuman dingin")
print("dan diskon 5%")
diskon = total_belanja * 5/100
bayar = total_belanja - diskon
print("Total yang harus dibayar: Rp ", bayar)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 30 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
print("Terima kasih sudah berbelanja")
print("Datang lagi yaa...")

2. Jalankan dan analisa kode program:

jawab = 'ya'
hitung = 0
while(True):
hitung += 1
jawab = input("Apakah Anda mau ulang lagi(ya/tidak)? ")
if jawab == 'tidak':
break
print("Total perulagan: " + str(hitung))

3. Jalankan dan analisa kode program:

Pada baris ke-8 ubahlah perintah break dengan continue

4. Buat program untuk menghitung BMI, menentukan status berat badan, mnghitung berat badan idial
minimum dan berat badan idial maksimum, menghitung berat minimal dan maksimal yang harus
diturunkan untuk memenuhi berat idial jika kelebihan berat atau obisitas dan berat maksimum dan
minimum yang harus dinaikkan untuk memenuhi berat ideal jika kekurangan berat.

Contoh :
Budi memiliki berat badan 80 kg dan tingginya 170 cm. Maka BMI Budi = (80)/(1,7 x 1,7) = 80/2,89
= 27,68. Berdasarkan kriteria status berat badan maka BMI Budi berada diantara 25,0 dan 29,9 yang
atinya Budi memiliki kelebihan berat badan. Untuk mendapatkan berat badan ideal maka BMI Budi
minimal 18,5 dan maksimal 24,9. Dari rumus berat badan ideal berdasarkan BMI ideal maka dapat
dihitung berat ideal Budi adalah sebagai berikut.
 Berat ideal minimal = 18,5 x (1,7 x 1,7) = 53,46 kg
 Berat ideal maksimal = 24,9 x (1,7 x 1,7) = 71,96 kg
 Jadi untuk mendapatkan berat badan Ideal Budi harus menurunkan berat badannya
minimal 8,04 kg (80 dikurangi 71,96).

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 31 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
5. Suatu Tangga dibutuhkan sebagai jalur wisudawan untuk naik dan turun ke panggung. Tangga dibuat
dengan meyusun sejumlah balok kayu. Tentukan/hitunglah jumlah balok yang dibutuhkan dengan
tinggi tangga yang dimasukkan dari perangkat masukan dan tampilkan hasil dan visualisasikan tangga
tersebut di perangkat keluaran.

2.4. Lab 5 Menerapkan List, Tupple, Set dan Dictionary


2.4.1. List
a. Memahami List
List adalah kumpulan dari beberapa data yang diberi suatu nama. List merupakan Jenis urutan (type
sequence). Dalam python merupakan jenis data yang mampu menyimpan lebih dari satu nilai (atau kurang
dari satu, karena urutan mungkin kosong). Nilai-nilai ini dapat dijelajahi secara berurutan, elemen demi
elemen. Untuk membuat list dapat menggunakan tanda kurung [ ] dan menyertakan setiap item dalam
daftar dengan tanda kutip.

Perintah type (nama variabel list) untuk memverifikasi tipe data list. Perintah len () dapat mengembalikan
jumlah item dalam daftar. Untuk menampilkan isi list dapat dilakukan dengan cara memanggil nama
variabelnya atau menggunakan indeks yang merujuk ke item. Item pertama dalam daftar diindeks sebagai
nol, yang kedua diindeks satu, dan seterusnya. Item terakhir dapat direferensikan dengan indeks [-1]. Untuk
menggganti item dengan cara menetapkan nilai baru ke indeks. Perintah del nama Variabel [no indeks)
digunakan Untuk menghapus item dalam daftar.

Slicing list adalah teknik untuk memotong nilai pada list. Hal ini dapat dilakukan melalui mengambil
beberapa nilai dari anggota list dengan mendefinisikan indeks kiri dan indeks kanan.
>>> number=[10,5,7,2,1] #deklarasi dan inisialisasi variabel list
>>> print(number) #deklarasi dan inisialisasi variabel list
[10, 5, 7, 2, 1]
>>> print(number[1:3]) #mengambil data mulai ineks ke 1 sampai 3
[5, 7]
>>> print(number[:2]) #mengambil data mulai ineks ke 0 sampai 2
[10, 5]
>>> print(number[2:]) #mengambil data mulai ineks ke 2 sampai terakhir
[7, 2, 1]

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 32 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
>>> print(number[1:-1]) #mengambil data mulai ineks ke 1 sampai terakhir-1
[5, 7, 2]
>>> print(number[-3:-1])
[7, 2]

Untuk menampilkan dan mengambil beberapa nilai dari list juga dapat dilakukan dengan menggunakan
strtuktur looping (while atau for)

>>> for i in number: #menampilkan seluruh data dengan looping


print(i)
>>> for j in range(2,4):
print(number[j])
7
2
>>>

b. Menerapkan fungsi standar pada list


Method append () mengambil nilai argumennya dan meletakkannya di akhir daftar yang memiliki metode
tersebut. Panjang daftar kemudian bertambah satu.

List.append (nilai)

Metode insert () sedikit lebih cerdas – metode ini dapat menambahkan elemen baru di mana saja dalam
daftar, tidak hanya di akhir.

List.insert (lokasi, nilai)

Method del() dapat digunakan untuk menghapus data pada elemen tertentu dengan format penulisan:

del namaVariabel[No-indeks)
Fungsi sort() atau sorted() dapat digunakan untuk mengurutkan elemen-elemen list yang sejenis dengan
cara membandingkan nilai ASCII dari tiap elemen. Sedangkan Fungsi reverse() dapat digunakan untuk
membalik urutan elemen elemen-elemen list yang sejenis

Penggunaan method len(), append(), insert dan del()


1 numbers = [111, 7, 2, 1]
2 print(len(numbers))
3 print(numbers)
4
numbers.append(4)
5
print(len(numbers))
6
7 print(numbers)
8 numbers.insert(0, 222)
9 print(len(numbers))
10 print(numbers)
11
12 del numbers[2]
13 print(len(numbers))
14 print(numbers)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 33 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Penggunaan Looping untuk menambahkan item.
1 #creating an empty myList
2 myList = []
3 for i in range(5):
4 myList.append(i + 1)
5 print(myList)
6 # creating an empty myList2
7 myList2 =[]
8 #first value 5 endValue 0,
9 #step decrement 1
10 for j in range(5,0,-1):
11 myList2.append(j)
12 print(myList2))

Penggunaan Looping untuk menjumlahkan nilai item.


1 myList = [10, 1, 8, 3, 5]
2 total = 0
3 for i in range(len(myList)):
4 total += myList[i]
5 print(myList)
6 print(“Jumlah :”, total)

Untuk melakukan penukaran data dapat digunakan satu variabel bantu.


Variabel1 = 1
variabel2 = 2
bantu = variabel1
variabel1 = variabel2
variabel2 = pembantu
Python menawarkan cara yang lebih nyaman untuk melakukan pertukaran.
Variabel1 = 1
variabel2 = 2
variabel1, variabel2 = variabel2, variabel1

Untuk variabel dalam bentuk list penukaran dapat dilakukan dengan merujuk ke elemen indeks
myList = [10, 1, 8, 3, 5]
myList [0], myList [4] = myList [4], myList [0]
myList [1], myList [3] = myList [3], myList [1]
print(myList)

Keluaran Program adalah:


[5, 3, 8, 1, 10]

Program berikut menukar data list menggunakn looping.


1 myList = [10, 1, 8, 3, 5]
2 length = len(myList)
3 print(myList)
4 for i in range(length // 2):
5 myList[i], myList[length – i – 1] = myList[length
6 – i – 1], myList[i]
7 print(myList)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 34 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
c. Multi List
List adalah struktur data yang sangat banyak digunakan di python. List dapat berisi List di dalamnya. Hal Ini
disebut List bersarang atau List multidimensi. Pernyataan berikut menjelaskan cara membuat dan
mengakses elemen dalam List multidimensi. List multi dimensi 3 baris 3 kolom diperlihatkan dalam tabel
berikut:
Kolom 1 Kolom 1 Kolom 1
Baris 0 [0][0] [0][1] [0][2]
Baris 1 [1][0] [1][1] [1][2]
Baris 2 [2][0] [2][1] [2][2]

Deklarasi dan inisialiasi list multidimensi 3 baris 3 kolom adlaah sebagai berikut:

multlist = [[0 for columns in range(4)] for rows in range(3)]


print(multlist)

Keluaran program:
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

List dapat mempunyai anggota/elemen dengan type dan jumlah data yang berbeda.
multlist = [["Mon","Tue","Wed"], [2, 4, 9,], [1,1.5, 2]]
multlist.append(["Phy","Chem","Math"])
print(multlist)
multlist[0].extend(["Thu","Fri"])
print(multlist)

Keluaran Program:
[['Mon', 'Tue', 'Wed'], [2, 4, 9], [1, 1.5, 2], ['Phy', 'Chem', 'Math']]
[['Mon', 'Tue', 'Wed', 'Thu', 'Fri'], [2, 4, 9], [1, 1.5, 2], ['Phy', 'Chem', 'Math']]

Menampilkan multilist dengan struktur looping:


multlist = [[1,5,9], [2, 4, 9,], [1,1, 2]]
for i in range(len(multlist)) :
for j in range(len(multlist[i])) :
print(multlist[i][j], end=" ")
print()

Keluaran Program:
1 5 9
2 4 9
1 1 2

d. Tugas
1. Program The beatles. The Beatles adalah salah satu grup musik paling populer di tahun 1960-an, dan
band terlaris dalam sejarah. Beberapa orang menganggap mereka sebagai kelompok yang paling
berpengaruh di era rock. Menurut majalah Time termasuk dari 100 orang paling berpengaruh abad ke-
20. Band ini mengalami banyak perubahan line-up. Puncak ketenarannya tahun 1962 dengan lineup:
John Lennon, Paul McCartney, George Harrison, dan Richard Starkey (lebih dikenal sebagai Ringo Starr).
BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 35 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Tulis program yang mencerminkan perubahan ini dan memungkinkan Anda berlatih dengan konsep
LIST. Tugas Anda adalah:
 langkah 1: buat daftar kosong bernama beatles;
 langkah 2: gunakan metode append () untuk menambahkan anggota band berikut ke dalam daftar:
John Lennon, Paul McCartney, dan George Harrison;
 langkah 3: gunakan loop for dan metode append () untuk meminta pengguna menambahkan
anggota band berikut ke daftar: Stu Sutcliffe, dan Pete Best;
 langkah 4: gunakan instruksi del untuk menghapus Stu Sutcliffe dan Pete Best dari daftar;
 langkah 5: gunakan metode insert () untuk menambahkan Ringo Starr ke awal daftar.

Soal Jawaban
1 # step 1 # step 1
2 …… beatles=[]
3 print(“Step 1:”, beatles) print(“Step 1:”, beatles)
4 # step 2 # step 2
5 ……………. beatles.append(“John Lennon”)
6 ……….. beatles.append(“Paul McCartney”)
7 …………… beatles.append(“George Harrison”)
8 print(“Step 2:”, beatles) print(“Step 2:”, beatles)
9 # step 3 # step 3
10 ………….. bantu=[‘Stu Sutcliffe’, ‘Pete
11 …………… Best’]
12 ……………….. for i in range(len(bantu)):
13 print(“Step 3:”, beatles) beatles.append(bantu[i])
14 # step 4 print(“Step 3:”, beatles)
15 ………….. # step 4
16 …………….. del(beatles[len(beatles)-1])
17 print(“Step 4:”, beatles) del(beatles[len(beatles)-1])
18 # step 5 print(“Step 4:”, beatles)
19 …………….. # step 5
20 print(“Step 5:”, beatles) beatles.insert(0, “Ringo Starr”)
21 # testing list legth print(“Step 5:”, beatles)
22 print(“The Fab”, # testing list legth
23 len(beatles)) print(“The Fab”, len(beatles))

2. Buatlah program untuk menampung data beberapa siswa (NIS, Nama, Umur, Asal kota) dan
mengurutkan data secara ascending dan descending.

2.4.2. Tuple
a. Memahami Tuple
Type data mutabilitas menjelaskan type data yang dapat diubah secara bebas selama eksekusi program.
Data yang dapat berubah dapat diperbarui secara bebas kapan saja (operasi ditempat), dapat diubah
menggunakan method append(). Dalam python dikenal dua jenis data yaitu data yang dapat berubah dan
tidak bisa diubah. Tupel adalah tipe urutan yang tidak dapat diubah (immutable) setelah dideklarasikan.
Tuple dapat berperilaku seperti List, tetapi tidak boleh dimodifikasi melalui operasi ditempat (method
append).
Perbedaan utama dan paling jelas antara list dan tupel adalah sintaks yang digunakan untuk membuatnya
– tupel menggunakan tanda kurung, sedangkan daftar menggunakan kurung siku, meskipun juga
memungkinkan untuk membuat tupel hanya dari sekumpulan nilai yang dipisahkan dengan koma.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 36 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
b. Deklarasi dan Inisialisasi Tuple
Membuat tuple kosong:
emptyTuple = ()

Membuat tuple satu elemen dengan diakhiri dengan tanda koma:


oneElementTuple1 = (1,)
oneElementTuple2 = 1.,

Tuple dengan empat elemen:


tuple1 = (1, 2, 4, 8)
tuple2 = 1., .5, .25, .125
print tuple1)
print(tuple2)

Tampilan keluaran:
(1, 2, 4, 8)
(1,0, 0,5, 0,25, 0,125)

Untuk mendapatkan elemen tuple dapat dilakukan dengan cara yang sama seperti list:
myTuple = (1, 10, 100, 1000)
print(myTuple[0])
print(myTuple[-1])
print(myTuple[1:])
print(myTuple[:-2])
for elem in myTuple:
print(elem)

Tampilan Keluaran:
1
1000
(10, 100, 1000)
(1, 10)
1
10
100
1000

Method append() tidak dapat dioperasikan pada tuple:

myTuple = (1, 10, 100, 1000)


myTuple.append (10000)
del myTuple [0]
myTuple [1] = -10

Ini adalah pesan yang akan diberikan Python kepada Anda di jendela konsol:

AttributeError: objek ‘tuple’ tidak memiliki atribut ‘append’

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 37 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
c. Penggunaan Operator pada Tuple
Beberapa operator dan method yang dapat dioperasikan untuk tupel yaitu:
 fungsi len () menerima tupel, dan mengembalikan jumlah elemen yang terkandung di dalamnya;
 operator + dapat menggabungkan tupel bersama (kami telah menunjukkan ini kepada Anda)
 operator * dapat mengalikan tupel, seperti halnya daftar;
 operator dalam dan tidak bekerja dengan cara yang sama seperti dalam daftar.

myTuple = (1, 10, 100)


t1 = myTuple + (1000, 10000)
t2 = myTuple * 3
print(len(t2))
print(t1)
print(t2)
print(10 in myTuple)
print(-10 not in myTuple)
Tampilan keluarannya sebagai berikut:
9
(1, 10, 100, 1000, 10000)
(1, 10, 100, 1, 10, 100, 1, 10, 100)
True
True

Salah satu properti tupel yang paling berguna adalah kemampuannya untuk muncul di sisi kiri operator
penugasan. Fenomena ini muncul ketika perlu menemukan alat yang elegan untuk menukar nilai dua
variabel.

Lihat cuplikan di bawah ini:


var = 123
t1 = (1,)
t2 = (2,)
t3 = (3, var)
t1, t2, t3 = t2, t3, t1
print (t1, t2, t3)

Tampilan keluaran:
(2,) (3, 123) (1,)

Ini menunjukkan tiga tupel berinteraksi – pada dasarnya, nilai yang disimpan di dalamnya “bersirkulasi” –
t1 menjadi t2, t2 menjadi t3, dan t3 menjadi t1.

Catatan: contoh ini menyajikan satu fakta penting lagi: elemen tupel dapat berupa variabel, tidak hanya
literal. Selain itu, mereka bisa menjadi ekspresi jika berada di sisi kanan operator penugasan.

2.4.3. Set
Set adalah salah satu tipe data di Python yang tidak berurut (unordered). Set memiliki anggota yang unik
(tidak ada duplikasi). Jadi misalnya kalau kita meletakkan dua anggota yang sama di dalam set, maka
otomatis set akan menghilangkan yang salah satunya.
Set bisa digunakan untuk melakukan operasi himpunan matematika seperti gabungan, irisan, selisih, dan
lain – lain. Sama seperti set di matematika, set dalam python merupakan sebuah himpunan dengan tanpa
BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 38 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
ada index. Struktur data ini dapat dioperasikan menggunakan fungsi irisan dan gabungan sebagaimana
variabel string.

a. Membuat Set
Set dibuat dengan meletakkan anggota – anggotanya di dalam tanda kurung kurawal { }, dipisahkan
menggunakan tanda koma. Kita juga bisa membuat set dari list dengan memasukkan list ke dalam fungsi
set(). Set bisa berisi data campuran, baik integer, float, string, dan lain sebagainya. Akan tetapi set tidak
bisa berisi list, set, dan dictionary.

1 # set integer KeluaranProgram:


2 my_set = {1,2,3} {1, 2, 3}
3 print(my_set) {1, 2, 3}
4 # set dengan menggunakan fungsi set() {1, 2.0, (3, 4, 5), 'Python'}
5 my_set = set([1,2,3]) {1, 2, 3}
6 print(my_set) Traceback (most recent call last):
7 # set data campuran File "F:/Dokumen 2021/Diklat 2021/
8 my_set = {1, 2.0, "Python", (3,4,5)} FundamentalPython
9 print(my_set) /project/set/membuatSet.py", line 18,
10 #jika isi duplikasi,akan dihilangkan in <module>
11 #salah satunya. output: {1,2,3} my_set = {1,2,[3,4,5]}
12 my_set = {1,2,2,3,3,3} TypeError: unhashable type: 'list'
13 print(my_set)
14 # set tidak bisa berisi anggota list
15 # contoh berikut akan muncul error
16 TypeError
17 my_set = {1,2,[3,4,5]}
Untuk membuat set kosong, kita tidak bisa menggunakan { }, karena itu akan dianggap sebagai dictionary.
Kita harus menggunakan fungsi set() tanpa argumen untuk membuat set kosong.

>>> # membuat variabel a dengan {}


>>> a = {}
>>> print(type(a))
<class 'dict'>
>>> # harus menggunakan fungsi set()
>>> a = set()
>>> print(type(a))
<class 'set'>

b. Mengubah Anggota Set


Set bersifat mutable. Tapi, karena set adalah tipe data tidak berurut (unordered), maka kita tidak bisa
menggunakan indeks. Set tidak mendukung indeks ataupun slicing. Untuk menambah satu anggota ke
dalam set, kita bisa menggunakan fungsi add(), dan untuk menambahkan beberapa anggota sekaligus kita
bisa menggunakan fungsi update(). List, tuple, maupun string bisa digunakan sebagai masukan dari fungsi
update().
1 # membuat set baru KeluaranProgram:
2 my_set = {1,2,3} {1, 2, 3}
3 print(my_set) {1, 2, 3, 4}
4 # menambah satu anggota dengan 4 {1, 2, 3, 4, 5, 6}
5 my_set.add(4)
6 print(my_set)
7 # menambah beberapa anggota

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 39 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
8 # set akan menghilangkan duplikasi
9 my_set.update([3,4,5,6])
10 print(my_set)

c. Menghapus Anggota Set

Kita bisa menghapus anggota set dengan menggunakan fungsi discard() dan remove(). Perbedaannya,
fungsi discard() tidak akan memunculkan error bila anggota yang ingin dihapus ternyata tidak ada di dalam
set, sedangkan remove() sebaliknya.

1 #Demo menghapus Anggota Set KeluaranProgram:


2 # membuat set baru {1, 2, 3, 4, 5}
3 my_set = {1, 2, 3, 4, 5} {1, 2, 3, 5}
4 print(my_set) {1, 2, 3}
5 # menghapus 4 dengan discard
6 my_set.discard(4)
7 print(my_set)
8 # menghapus 5 dengan remove
9 my_set.remove(5)
10 print(my_set)
11 # anggota yang dihapus tidak ada di set
12 # discard tidak akan memunculkan error
13 my_set.discard(6)

Selain discard() dan remove(), kita bisa menghapus anggota set dengan menggunakan fungsi pop(). Dengan
menggunakan fungsi pop(), kita menghapus salah satu anggota secara acak (random). Untuk
mengosongkan atau menghapus seluruh anggota set, kita bisa menggunakan fungsi clear().

1 #demo menghapus set dgn fungsi discard(), remove() KeluaranProgram:


2 # membuat set baru output set berisi anggota yg unik {'n', 'y', 't', 'l',
3 my_set = set("HelloPython") 'o', 'h', 'e', 'P',
4 print(my_set) 'H'}
5 # pop anggota- output: anggota acak n
6 print(my_set.pop()) y
7 # pop anggota lainnya - output: anggota acak set()
8 print(my_set.pop())
9 # mengosongkan set - output: set()
10 my_set.clear()
11 print(my_set)

d. Operasi Set di Python

Set dapat digunakan untuk melakukan operasi himpunan matematika seperti gabungan (unioin),
irisan(intersection), selisih(defference), dan komplemen(Symmetric Difference) .Mari kita ambil dua
contoh set berikut:

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 40 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
(a) (b) © (d)

Gambar Operasi pada set (a) union, (b) intersection, (c) Difference, (d) Symetric Difference

1. Operasi Gabungan (Union)


Gabungan (union) dari A dan B adalah himpunan atau set anggota yang ada di A dan B. Gabungan
dapat dibuat dengan menggunakan operator palang (|). Selain itu juga bisa dilakukan dengan
menggunakan fungsi union().

1 #Demo Operasi himpunan UNION pada set KeluaranProgram:


2 # Membuat set A and B {1, 2, 3, 4, 5, 6, 7, 8}
3 A = {1, 2, 3, 4, 5} {1, 2, 3, 4, 5, 6, 7, 8}
4 B = {4, 5, 6, 7, 8} {1, 2, 3, 4, 5, 6, 7, 8}
5 print(A | B) #Gabungan menggunakan operator |
6 print(A.union(B)) #Menggunakan fungsi union()
7 print(B.union(A)) #Menggunakan fungsi union()

2. Operasi Irisan (intersection)


Irisandari A dan B adalah himpunan atau set anggota yang sama di A dan B. Irisan dilakukan dengan
menggunakan operator jangkar (&). Irisan juga bisa dilakukan dengan menggunakan fungsi
intersection().

1 #Demo Operasi himpunan INTERSECTION pada set KeluaranProgram:


2 # Membuat set A and B {4,5}
3 A = {1, 2, 3, 4, 5} {4,5}
4 B = {4, 5, 6, 7, 8} {4,5}
5 print(A & B) # Irisan menggunakan operator &
6 #Menggunakan fungsi intersection()
7 Print(A.intersection(B))
8 Print(B.intersection(A))

3. Operasi Selisih (Difference)


Selisih dari A dan B adalah himpunan atau set anggota yang hanya ada di A dan tidak ada di B. Begitu
juga sebaliknya, ada di B tapi tidak ada di A. Selisih dilakukan dengan menggunakan operator kurang
(-). Bisa juga dengan menggunakan fungsi difference().

1 #Demo Operasi himpunan DIFFERENCE pada set KeluaranProgram:


2 # Membuat set A and B {1, 2, 3}
3 A = {1, 2, 3, 4, 5} {1, 2, 3}
4 B = {4, 5, 6, 7, 8} {8, 6, 7}
5 # Menggunakan operator - pada A {8, 6, 7}
6 print(A - B)
7 print(A.difference(B))
8 # Menggunakan operator - pada B
9 print(B - A)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 41 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
10 print(B.difference(A))

4. Operasi komplemen (symmetric difference)


Operasi komplemen dari A dan B adalah himpunan atau set anggota yang ada di A dan di B, tapi tidak
di keduanya. Komplemen dilakukan dengan menggunakan operator ^. Bisa juga dengan menggunakan
fungsi symmetric_difference().

1 #Demo Operasi himpunan SYMMETRIC DIFFERENCE KeluaranProgram:


2 # membuat A and B {1, 2, 3, 6, 7, 8}
3 A = {1, 2, 3, 4, 5} {1, 2, 3, 6, 7, 8}
4 B = {4, 5, 6, 7, 8} {1, 2, 3, 6, 7, 8}
5 # Menggunakan operator ^ pada A {1, 2, 3, 6, 7, 8}
6 print(A ^ B)
7 print(A.symmetric_difference(B))
8 # Menggunakan operator ^ pada B
9 print(B ^ A)
10 print(B.symmetric_difference(A)

2.4.4. Dictionary
a. Membuat dan mengakses dictionary
Kamus (dictionary) adalah merupakan tipe data Python yang tidak terurut (Unordered) tetapi dapat dengan
mudah disesuaikan dengan pemrosesan urutan dan dapat berubah. Dictionary memiliki anggota yang
terdiri dari pasangan kunci: nilai (key:value) sehingga tidak memiliki indeks. Kamus Python bekerja dengan
cara yang sama seperti kamus dwibahasa seperti Inggris dan Prancis: (Misal cat(kucing-bahasa Inggris)
diterjemahkan menjadi chat (kucing- bahasa Prancis)

1 #Demo Membuat dan mengakses tipe data dictionary


2 empty_dictionary = {} # Membuat dictionary kosong
3 #Dictionary dengan kunci bahasa inggris dan nilai bahasa prancis
4 dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}
5 #Dictionary untuk menyimpan nama(key) dan nomor telpon(nilai)
6 phone_numbers = {'boss' : 5551234567, 'Suzy' : 22657854310}
7 my_dict = {1: 'sepatu', 2: 'tas'} # dictionary dengan kunci integer
8 my_dict1 = {'warna': 'merah', 1: [2,3,5]} #dictionary dengan kunci campuran
9 # membuat dictionary menggunakan fungsi dict()
10 my_dict2 = dict({1: 'sepatu', 2: 'bola'})
11 print("isi empty_dictionary: ", empty_dictionary)
12 print("isi dictionary: ", dictionary)
13 print("isi phone_numbers: ", phone_numbers)
14 print("isi my_dict : ", my_dict)
15 print("isi my_dict1 : ",my_dict1)
16 print("isi my_dict2 : ",my_dict2)
17 #mengakses anggota dictionary dengan nama kuncinya
18 print("isi dictionary['cat']: ", dictionary['cat'])
19 print("isi phone_numbers['Suzy']: ",phone_numbers['Suzy'])

Keluaran program:
isi empty_dictionary: {}
isi dictionary: {'cat': 'chat', 'dog': 'chien', 'horse': 'cheval'}
isi phone_numbers: {'boss': 5551234567, 'Suzy': 22657854310}
isi my_dict : {1: 'sepatu', 2: 'tas'}

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 42 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
isi my_dict1 : {'warna': 'merah', 1: [2, 3, 5]}
isi my_dict2 : {1: 'sepatu', 2: 'bola'}
isi dictionary['cat']: chat
isi phone_numbers['Suzy']: 22657854310

Dictionary digunakan untuk merecord kumpulan data router dan IP adrressnya.


>>> ipAddress = {"R1":"10.1.1.1","R2":"10.2.2.1","R3":"10.3.3.1"}
>>> type(ipAddress)
<class 'dict'>
>>> ipAddress
{'R1': '10.1.1.1', 'R2': '10.2.2.1', 'R3': '10.3.3.1'}
>>> ipAddress['R1']
'10.1.1.1’
>>> ipAddress["S1"]="10.1.1.10"
>>> ipAddress
{'R1': '10.1.1.1', 'R2': '10.2.2.1', 'R3': '10.3.3.1', 'S1': '10.1.1.10'}
>>> "R3" in ipAddress
True

b. Mengakses dictionary dengan get dan struktur looping


Anggota dictionary, selain dapat diakses menggunakan kuncinya juga dapat memanfaatkan fungsi get().
Dengan menggunakan fungsi get(), bila kunci tidak ada di dalam dictionary, maka akan dikembalikan None.
Bila tidak menggunakan fungsi get(), maka akan terjadi error KeyError bila kunci yang hendak diakses tidak
ada di dalam dictionary.

1 #Access Dictionary dengan fungsi get() KeluaranProgram:


2 my_dict = {'nama':'Budi', 'usia':27} Budi
3 print(my_dict['nama']) 27
4 print(my_dict.get('usia')) None
5 # Akses kunci dengan get yang tidak ada Traceback (most recent call last):
6 # outputnya : none File "F:/Dokumen 2021/Diklat
7 print(my_dict.get('alamat')) 2021/FundamentalPython/project/
8 # Mengakses kunci yang tidak tersedia Dictionary/
9 # menyebabkan KeyError accessAnggotaDict.py", line 10, in
10 print(my_dict['alamat']) <module>
print(my_dict['alamat'])
KeyError: 'alamat'

Untuk menampilkan anggota dictionary juga dapat menggunakan struktur looping. Kode berikut dengan
aman mencari beberapa kata dalam bahasa Prancis:

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


words = ['cat', 'lion', 'horse']
for word in words:
if word in dictionary:
print(word, "->", dictionary[word])
else:
print(word, "is not in dictionary")
Keluaran kode terlihat sebagai berikut:
cat -> chat
lion is not in dictionary
horse -> cheval

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 43 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
c. Fungsi keys(), dan items() ppada Dictionary
1. Method keys()
Method ini dimiliki oleh setiap kamus. Metode ini mengembalikan objek yang dapat diulang yang
terdiri dari semua kunci yang dikumpulkan dalam kamus. Memiliki sekelompok kunci memungkinkan
pengguna mengakses seluruh kamus dengan cara yang mudah dan praktis. Seperti kode berikut:

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


for key in dictionary.keys():
print(key, "->", dictionary[key]

Output kode terlihat sebagai berikut:

horse -> cheval


dog -> chien
cat -> chat

Untuk mengurutkan data dapat menggunakan fungsi sorted () yang dipanggil melalui struktur loop for
seperti kode program berikut:

for key in sorted(dictionary.keys()):

Fungsi sort () akan melakukan yang terbaik - hasilnya akan terlihat seperti ini:
cat -> chat
dog -> chien
horse -> cheval

2. Method items()
Method ini dapat digunakan juga untuk mengakses data tuple. Metode ini mengembalikan tupel (ini
contoh pertama di mana tupel adalah sesuatu yang lebih dari sekadar contoh dari dirinya sendiri) di
mana setiap tupel adalah pasangan nilai kunci.

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


for english, french in dictionary.items():
print(english, "->", french)

Perhatikan kode diatas: cara tupel digunakan se


bagai variabel perulangan for. Tampilan keluaran adalah:
cat -> chat
dog -> chien
horse -> cheval

3. method values
Ada juga metode bernama values (), yang berfungsi mirip dengan keys (), tetapi mengembalikan nilai
dari dictionary. Berikut ini contoh sederhananya:

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


for french in dictionary.values():
print(french)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 44 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Karena kamus tidak dapat secara otomatis menemukan kunci untuk nilai tertentu, peran metode ini
agak terbatas.
Berikut adalah keluaran yang diharapkan:

cheval
chien

d. Memodifikasi Dictionary
Menetapkan nilai baru ke kunci yang ada itu sederhana - karena kamus sepenuhnya dapat diubah, tidak
ada kendala untuk memodifikasinya. Untuk mengganti nilai "chat" dengan "minou", dapat dilakkan seprti
contoh berikut:

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


dictionary['cat'] = 'minou'
print(dictionary)

Outputnya adalah:
{'dog': 'chien', 'horse': 'cheval', 'cat': 'minou'}

e. Menambahkan kunci baru pada Dictionary


Menambahkan pasangan kunci-nilai baru ke kamus semudah mengubah nilai dengan menetapkan nilai ke
kunci baru yang sebelumnya tidak ada.

Catatan: ini adalah perilaku yang sangat berbeda dibandingkan dengan daftar, yang tidak memungkinkan
Anda untuk menetapkan nilai ke indeks yang tidak ada.

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


dictionary['swan'] = 'cygne'
print(dictionary)

Output contoh:
{'swan': 'cygne', 'horse': 'cheval', 'dog': 'chien', 'cat': 'chat'}

Anda juga dapat memasukkan item ke kamus dengan menggunakan metode update (), misalnya:

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


dictionary.update({"duck" : "canard"})
print(dictionary)

f. Menghapus dengan method del(), popitem() dan clear()


Menghapus kunci akan selalu menyebabkan penghapusan nilai terkait. Nilai tidak bisa ada tanpa kuncinya.
Hal Ini dapat dilakukan dengan instruksi del. Berikut contohnya:

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


del dictionary['dog']
print(dictionary)

Catatan: menghapus kunci yang tidak ada menyebabkan kesalahan. Output contoh:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 45 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
{'cat': 'chat', 'horse': 'cheval'}

Untuk menghapus tertentu dapat menggunakan method pop(), sedangkan untuk item terakhir dalam
kamus dapat menggunakan metode popitem ():

dictionary = {"cat" : "chat", "dog" : "chien", "horse" : "cheval"}


dictionary.pop("cat")
print(dictionary) #output {"dog" : "chien", "horse" : "cheval"}
dictionary[‘cat'] = 'chat'
dictionary.popitem()
print(dictionary)
# outputs: {'cat' : 'chat', 'dog' : 'chien'}

Untuk menghapus semua anggota dictionary, bisa menggunakan fungsi clear().

Di versi Python yang lebih lama, yaitu, sebelum 3.6.7, metode popitem () menghapus item acak dari kamus.

g. Tugas

1. Buatlah program yang dapat menampung dan menampilkan data nama negara dan ibu kotanya dengan
ketentuan sebagai berikut:
 variabel List untuk menampung data nama negara yang terdiri dari Brazil, Russia, India, China,
South Africa
 variabel dictionary untuk menampung data nama negara beserta nama ibu kotanya: Brazil 
Brasilia, Russia  Moscow, India  New Delhi, China  Beijing, South Africa  Pretoria, Cape-
Town dan Bloemfontein
 Tampilkan data nama negara, nama negara beserta ibukotanya, ibu kota Cape-Town dan kota-kota
di south afrika
 Hapus ibukota Cape-Town
 Tambahkan negara indonesa ke dalam List
 Tambahkan pula tiga kota jakarta, surabaya dan bandung ke dalam data ibu kota

2. Program Tic Tac Toe


Buatlah program Tic Tac Toe sederhana dengan ketentuan sebagai berikut:
 komputer (program Anda) harus memainkan permainan menggunakan 'X's;
 pengguna (misal: Anda) harus memainkan game menggunakan 'O's;
 langkah pertama milik komputer - selalu menempatkan 'X' pertama di tengah papan;
 semua kotak diberi nomor baris demi baris dimulai dengan 1 (lihat contoh sesi di bawah ini untuk
referensi)
 pengguna memasukkan langkah mereka dengan memasukkan jumlah kotak yang mereka pilih -
nomor tersebut harus valid, yaitu harus berupa bilangan bulat, harus lebih besar dari 0 dan kurang
dari 10, dan tidak dapat menunjuk ke bidang yang sudah ada tau ditempati;
 program memeriksa apakah permainan telah berakhir - ada empat kemungkinan putusan:
permainan harus dilanjutkan, atau permainan berakhir dengan seri, kemenangan Anda, atau
kemenangan komputer;
 komputer merespons dengan gerakannya dan pemeriksaan diulangi;
 jangan menerapkan kecerdasan buatan dalam bentuk apa pun - pilihan bidang acak yang dibuat
oleh komputer sudah cukup baik untuk game.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 46 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.5. Lab 5 Menggunakan Fungsi, Module dan Package
2.5.1. Menerapkan Fungsi
a. Membuat Fungsi
Di Python, fungsi adalah sekelompok pernyataan terkait yang melakukan tugas tertentu. Fungsi membantu
memecah program kita menjadi bagian yang lebih kecil dan modular. Seiring program kami tumbuh
semakin besar, fungsi membuatnya lebih terorganisir dan mudah dikelola. Selain itu, ini menghindari
pengulangan dan membuat kode dapat digunakan kembali disajikan dalam Gambar 3.22

Gambar 2.13 Cara kerja fungsi dalam Python

def function_name(parameters):

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 47 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
"""docstring"""
statement(s)

Di atas ditunjukkan adalah definisi fungsi yang terdiri dari komponen-komponen berikut.
1. Kata kunci def yang menandai dimulainya header fungsi.
2. Nama fungsi untuk mengidentifikasi fungsi secara unik. Penamaan fungsi mengikuti aturan yang sama
dalam menulis pengenal dengan Python.
3. Parameter (argumen) yang digunakan untuk meneruskan nilai ke suatu fungsi.
4. Titik dua (:) untuk menandai akhir dari header fungsi.
5. String dokumentasi opsional (docstring) untuk mendeskripsikan fungsi.
6. Satu atau lebih pernyataan python valid yang menyusun badan fungsi. Perintah harus memiliki tingkat
indentasi yang sama (biasanya 4 spasi).
7. Perintah return opsional untuk mengembalikan nilai dari fungsi.

Contoh :
def greet(name):
print("Hello, " + name + ". Good morning!")

b. Memanggil fungsi di python


Setelah kita mendefinisikan sebuah fungsi, kita dapat memanggilnya dari fungsi lain, program atau bahkan
prompt Python. Untuk memanggil suatu fungsi, kita cukup mengetikkan nama fungsi dengan parameter
yang sesuai.

>>> greet('Paul')
Hello, Paul. Good morning!

Selanjutnya lengkapi program berikut,


def greet(name):
"""
This function greets to
the person passed in as
a parameter
"""
print("Hello, " + name + ". Good morning!")
greet('Paul')

c. Docstrings
String pertama setelah header fungsi disebut docstring dan merupakan kependekan dari string
dokumentasi. Ini secara singkat digunakan untuk menjelaskan apa yang dilakukan suatu fungsi. Meskipun
opsional, dokumentasi adalah praktik pemrograman yang baik. Kecuali Anda dapat mengingat apa yang
Anda makan untuk makan malam minggu lalu, selalu dokumentasikan kode Anda. Dalam contoh di atas,
kami memiliki docstring tepat di bawah header fungsi. Kami biasanya menggunakan tanda kutip tiga
sehingga docstring dapat diperpanjang hingga beberapa baris. String ini tersedia bagi kita sebagai atribut
__doc__ dari fungsi tersebut.

Coba jalankan perintah berikut ke shell Python untuk melihat hasilnya


>>> print(greet.__doc__)
This function greets to
the person passed in as
a parameter

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 48 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
d. Perintah return
Pernyataan return digunakan untuk keluar dari fungsi dan kembali ke tempat pemanggilannya.

return [expression_list]

Pernyataan ini dapat berisi ekspresi yang dievaluasi dan nilainya dikembalikan. Jika tidak ada ekspresi dalam
pernyataan return itu sendiri tidak ada di dalam fungsi, maka fungsi tersebut akan mengembalikan objek
None.

>>> print(greet("May"))
Hello, May. Good morning!
None

Di sini, None adalah nilai yang dikembalikan karena greet () langsung mencetak nama dan tidak ada
pernyataan return yang digunakan.

Contoh:
def absolute_value(num):
"""This function returns the absolute
value of the entered number"""
if num >= 0:
return num
else:
return -num
print(absolute_value(2))
print(absolute_value(-4))

Output:
2
4

e. Scope dan Lifetime Variabel


Cakupan variabel adalah porsi program tempat variabel dikenali. Parameter dan variabel yang ditentukan
di dalam fungsi tidak terlihat dari luar fungsi. Karenanya, mereka memiliki cakupan lokal.Umur variabel
adalah periode selama variabel keluar dalam memori. Masa pakai variabel di dalam suatu fungsi selama
fungsi tersebut dijalankan.Mereka dikosongkan begitu kita kembali dari fungsinya. Karenanya, suatu fungsi
tidak mengingat nilai variabel dari pemanggilan sebelumnya.
Berikut adalah contoh untuk mengilustrasikan ruang lingkup variabel di dalam fungsi.

def my_func():
x = 10
print("Value inside function:",x)
x = 20
my_func()
print("Value outside function:",x

Output:
Value inside function: 10

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 49 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Value outside function: 20

Analisa Program
Di sini, kita dapat melihat bahwa nilai x awalnya adalah 20. Meskipun fungsi my_func() mengubah nilai
x menjadi 10, itu tidak mempengaruhi nilai di luar fungsi. Ini karena variabel x di dalam fungsi lokal.
Meskipun memiliki nama yang sama, keduanya adalah variabel berbeda dengan cakupan berbeda. Di sisi
lain, variabel di luar fungsi terlihat dari dalam. Mereka memiliki cakupan global.Kita dapat membaca nilai-
nilai ini dari dalam fungsi tetapi tidak dapat mengubah (menulis). Untuk mengubah nilai variabel di luar
fungsi, mereka harus dideklarasikan sebagai variabel global menggunakan kata kunci global.

f. Argumen Fungsi
Dalam topik fungsi yang ditentukan pengguna, kita belajar tentang mendefinisikan fungsi dan
memanggilnya. Jika tidak, pemanggilan fungsi akan menghasilkan kesalahan. Berikut ini contohnya.

def greet(name, msg):


"""This function greets to
the person with the provided message"""
print("Hello", name + ', ' + msg)
greet("Monica", "Good morning!")

Output:
Hello Monica, Good morning!

Analisa Program
Di sini, fungsi greet() memiliki dua parameter. Karena kami telah memanggil fungsi ini dengan dua
argumen, ini berjalan dengan lancar dan kami tidak mendapatkan kesalahan apa pun. Jika kita
menyebutnya dengan jumlah argumen yang berbeda, interpreter akan menampilkan pesan error.
4. Argumen Fungsi Variabel
Hingga saat ini, fungsi memiliki sejumlah argumen tetap. Di Python, ada cara lain untuk mendefinisikan
fungsi yang dapat menggunakan sejumlah variabel argumen.
Tiga bentuk berbeda dari jenis ini dijelaskan di bawah.

5. Argumen Default Python


Argumen fungsi dapat memiliki nilai default dengan Python.
Kita bisa memberikan nilai default ke argumen dengan menggunakan operator penugasan (=). Berikut
ini contohnya.

def greet(name, msg="Good morning!"):


print("Hello", name + ', ' + msg)
greet("Kate")
greet("Bruce", "How do you do?")

Hasilnya:
Hello Kate, Good morning!
Hello Bruce, How do you do?

Analisa Program

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 50 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Dalam fungsi ini, parameter name tidak memiliki nilai default dan diperlukan (wajib) selama panggilan.
Di sisi lain, parameter msg memiliki nilai default "Good morning!". Jadi, ini opsional selama
panggilan. Jika nilai diberikan, nilai tersebut akan menimpa nilai default. Sejumlah argumen dalam suatu
fungsi dapat memiliki nilai default. Tapi begitu kita memiliki argumen default, semua argumen di sebelah
kanannya juga harus memiliki nilai default.

6. Argumen Python *
Terkadang, kita tidak mengetahui sebelumnya jumlah argumen yang akan diteruskan ke suatu fungsi.
Python memungkinkan kita menangani situasi semacam ini melalui pemanggilan fungsi dengan
sejumlah argumen yang berubah-ubah. Dalam definisi fungsi, kami menggunakan tanda bintang (*)
sebelum nama parameter untuk menunjukkan jenis argumen ini.

def greet(*names):
"""This function greets all
the person in the names tuple."""
# names is a tuple with arguments
for name in names:
print("Hello", name)
greet("Monica", "Luke", "Steve", "John")

Output:
Hello Monica
Hello Luke
Hello Steve
Hello John
Analisa Program
Di sini, kami telah memanggil fungsi dengan banyak argumen. Argumen ini dibungkus menjadi tupel
sebelum diteruskan ke fungsi. Di dalam fungsi, kami menggunakan perulangan for untuk mengambil
semua argumen kembali.

g. Fungsi Rekursif
Rekursi adalah proses mendefinisikan sesuatu dalam istilah itu sendiri. Contoh dunia fisik adalah
menempatkan dua cermin paralel saling berhadapan. Objek apa pun di antara mereka akan dipantulkan
secara rekursif. Dengan Python, kita tahu bahwa suatu fungsi dapat memanggil fungsi lain. Bahkan
dimungkinkan bagi fungsi untuk memanggil dirinya sendiri. Jenis konstruksi ini disebut fungsi rekursif.
Gambar 3.23 menunjukkan kerja fungsi rekursif yang disebut rekursi.

Gambar 2.14 Fungsi Rekursif

Berikut adalah contoh fungsi rekursif untuk mencari faktorial dari sebuah bilangan bulat. Faktorial suatu
angka adalah hasil kali semua bilangan bulat dari 1 sampai angka itu. Misalnya, faktorial dari 6
(dilambangkan sebagai 6!) Adalah 1 * 2 * 3 * 4 * 5 * 6 = 720. Contoh:
def factorial(x):

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 51 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
"""This is a recursive function
to find the factorial of an integer"""
if x == 1:
return 1
else:
return (x * factorial(x-1))
num = 3
print("The factorial of", num, "is", factorial(num))

Output:
The factorial of 3 is 6

Analisa Program
Dalam contoh di atas, faktorial () adalah fungsi rekursif saat memanggil dirinya sendiri. Saat kita memanggil
fungsi ini dengan bilangan bulat positif, fungsi ini akan secara rekursif memanggil dirinya sendiri dengan
mengurangi angkanya. Setiap fungsi mengalikan bilangan dengan faktorial dari bilangan di bawahnya
hingga sama dengan satu. Panggilan rekursif ini dapat dijelaskan dalam langkah-langkah berikut.

factorial(3) # 1st call with 3


3 * factorial(2) # 2nd call with 2
3 * 2 * factorial(1) # 3rd call with 1
3 * 2 * 1 # return from 3rd call as number=1
3 * 2 # return from 2nd call
6 # return from 1st call
Gambar berikut menunjukkan proses langkah demi langkah dari apa yang sedang terjadi:

Gambar 2.15 Fungsi Rekursif

Rekursi berakhir ketika angka tersebut berkurang menjadi 1. Ini disebut kondisi dasar. Setiap fungsi rekursif
harus memiliki kondisi dasar yang menghentikan rekursi atau fungsi memanggil dirinya sendiri tanpa batas.
Intepreter Python membatasi kedalaman rekursi untuk membantu menghindari rekursi tak terbatas, yang
mengakibatkan tumpukan berlebih. Secara default, kedalaman rekursi maksimum adalah 1000

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 52 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.5.2. Menerapkan Module
a. Membuat Module
Modul merujuk ke file yang berisi pernyataan dan definisi Python. File yang berisi kode Python, misalnya:
example.py, disebut modul, dan nama modulnya akan menjadi contoh. Kami menggunakan modul untuk
memecah program besar menjadi file kecil yang dapat dikelola dan diatur. Selain itu, modul menyediakan
kode yang dapat digunakan kembali. Kita dapat mendefinisikan fungsi yang paling sering digunakan dalam
sebuah modul dan mengimpornya. Ketik kode program berikut ini dan simpan sebagai example.py.

# Python Module example


def add(a, b):
"""This program adds two
numbers and return the result"""
result = a + b
return result

Di sini, kami telah mendefinisikan fungsi add () di dalam modul bernama example.py. Fungsi tersebut
mengambil dua angka dan mengembalikan jumlahnya.

b. Mengimport modul dengan Python


1. Import Module dengan Opertor titik (.)
Kita dapat mengimpor definisi di dalam modul ke modul lain atau interpreter interaktif dengan Python.
Kami menggunakan kata kunci import untuk melakukan ini. Untuk mengimpor example.py modul
yang didefinisikan sebelumnya:
>>> import example.add(4,5.5)

Ini tidak mengimpor nama fungsi yang ditentukan dalam contoh secara langsung di tabel simbol saat
ini. Itu hanya mengimpor contoh nama modul di sana. Menggunakan nama modul kita dapat
mengakses fungsi menggunakan titik. operator. Sebagai contoh:

>>> example.add(4,5.5)
9.5

Python memiliki banyak modul standar. Anda dapat melihat daftar lengkap modul standar Python dan
kasus penggunaannya. File-file ini ada di direktori Lib di dalam lokasi tempat Anda menginstal Python.
Modul standar dapat diimpor dengan cara yang sama seperti kita mengimpor modul yang ditentukan
pengguna. Ada berbagai cara untuk mengimpor modul. Kita dapat mengimpor modul menggunakan
pernyataan import dan mengakses definisi di dalamnya menggunakan operator titik seperti dijelaskan
di atas. Berikut ini contohnya,

# import statement example


# to import standard module math
import math
print("The value of pi is", math.pi)

Saat Anda menjalankan program, hasilnya adalah:

The value of pi is 3.141592653589793

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 53 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2. Import dengan Penggantian Nama
Untuk mengimport modul dapat juga menggunakan nama alias seperti contoh berikut:
# import module by renaming it
import math as m
print("The value of pi is", m.pi)
Kami telah mengganti nama modul math menjadi m. Ini dapat menghemat waktu mengetik dalam
beberapa kasus. Perhatikan bahwa nama math tidak dikenali dalam lingkup kami. Karenanya, math.pi
tidak valid, dan m.pi adalah implementasi yang benar.

3. Perintah Python from...import.


Kita dapat mengimpor nama tertentu dari modul tanpa mengimpor modul secara keseluruhan. Berikut
ini contohnya.

# import only pi from math module


from math import pi
print("The value of pi is", pi)

Di sini, kami hanya mengimpor atribut pi dari modul math. Dalam kasus seperti itu, kami tidak
menggunakan operator titik. Kami juga dapat mengimpor beberapa atribut sebagai berikut:

>>> from math import pi, e


>>> pi
3.141592653589793
>>> e
2.718281828459045

4. Import all Name


Kita dapat mengimpor semua nama (definisi) dari modul menggunakan konstruksi berikut:

# import all names from the standard module math


from math import *
print("The value of pi is", pi)

Di sini, kami telah mengimpor semua definisi dari modul math. Ini mencakup semua nama yang
terlihat dalam cakupan kami, kecuali yang diawali dengan garis bawah. Meng-import segala sesuatu
dengan simbol asterisk (*) bukanlah praktik pemrograman yang baik. Ini dapat menyebabkan definisi
duplikat untuk pengenal. Itu juga menghambat pembacaan kode kita.

c. Fungsi Fungsi pada Module standar


1. Fungsi dir () dan fungsi-fungsi pada module Math
Fungsi dir() mengembalikan daftar yang diurutkan menurut abjad, berisi semua nama entitas yang
tersedia dalam modul, diidentifikasi dengan nama yang diteruskan ke fungsi sebagai argumen:

dir (modul)

Catatan: jika nama modul telah dialias, Anda harus menggunakan alias, bukan nama aslinya.Program
berikut akan mencetak nama semua entitas dalam modul matematika:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 54 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
import math
for name in dir(math):
print(name, end="\t")

Kode program diatas akan menghasilkan keluaran sebagai berikut

__doc__ __loader__ __name__ __package__ __spec__ acos acosh asin


asinh atan atan2 atanh ceil copysign cos cosh degrees e
erf erfc exp expm1 fabs factorial floor fmod frexp fsum gamma
hypot isfinite isinf isnan ldexp lgamma log log10 log1p log2 modf
pi pow radians sin sinh sqrt tan tanh trunc

Tabel 8 contoh penggunaan fungsi pada modul Math


No Fungsi Math Kegunaan Contoh
1 abs(x) menampilkan nilai absolute dari sebuah bilangan x. abs(-50) = 50
2 ceil(x) membulatkan ke atas dari sebuah bilangan x. math.ceil(-50.25)=-50
3 floor(x) membulatkan ke bawah dari sebuah bilangan x. math.floor(-50.25)=-51
4 Sin(x), cos(x), menghitung sin(x), cos(x), tan(x), x dalam radian Math.sin(90*(math.pi/180)
tan(x) dimana 1 derajat = phi/180. = 1.0
5 sqrt() Menghitung akar pangkat dua dari x math.sqrt(16)=4.0

2. Fungsi-fungsi pada Modul Random


Algoritme tidak acak adalah algoritme bersifat deterministik dan dapat diprediksi. Hanya proses fisik
yang benar-benar di luar kendali pengguna (seperti intensitas radiasi kosmik) yang dapat digunakan
sebagai sumber data acak aktual. Data yang dihasilkan oleh komputer deterministik tidak bisa acak
dengan cara apapun.

Generator Number acak mengambil nilai yang disebut benih (seed), memperlakukannya sebagai nilai
masukan, menghitung nomor "acak" berdasarkan itu (metode bergantung pada algoritma yang dipilih)
dan menghasilkan nilai benih baru (new seed value). Nilai benih awal, ditetapkan selama program
dimulai, menentukan urutan kemunculan nilai yang dihasilkan.
Faktor acak dari proses dapat ditambah dengan mengatur benih dengan nomor yang diambil dari
waktu saat ini - ini dapat memastikan bahwa setiap peluncuran program akan dimulai dari nilai benih
yang berbeda

Fungsi random() adalah fungsi paling umum (jangan disamakan dengan nama modul) menghasilkan
angka float x yang berasal dari kisaran (0,0, 1,0) atau (0,0 <= x <1,0).

Fungsi seed () dapat mengatur seed generator secara langsung dengan dua variannya yaitu:
seed () - mengatur benih dengan waktu saat ini;
seed (int_value) - mengatur seed dengan nilai integer int_value.

from random import random, seed


seed(0)
for i in range(5):
print(random())

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 55 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Karena seed selalu diatur dengan nilai yang sama, urutan nilai yang dihasilkan selalu terlihat sama.
Jalankan programnya. Inilah yang kami punya:

0.844421851525
0.75795440294
0.420571580831
0.258916750293
0,511274721369

Fungsi random Bilangan bulat. Jika menginginkan nilai acak bilangan bulat, salah satu fungsi berikut
akan lebih cocok digunakan:

randrange(end); randrange (beg, end);


randrange (beg, end, step); randint (left, right)
Tiga pemanggilan pertama akan menghasilkan bilangan bulat yang diambil (secara acak) dari rentang
(masing-masing):

range(end); range(beg, end); range(beg, end, step)

Fungsi terakhir adalah ekuivalen dari randrange (kiri, kanan + 1) - ini menghasilkan nilai integer i, yang
termasuk dalam kisaran [kiri, kanan] (tidak ada pengecualian di sisi kanan).

from random import randrange, randint


print(randrange(1), end=' ')
print(randrange(0, 1), end=' ')
print(randrange(0, 1, 1), end=' ')
print(randint(0, 1))

Fungsi choice(sequence) akan memilih elemen "acak" dari urutan masukan yang telah ditentukan
dan mengembalikannya.

Fungsi sample(sequence, elements_to_choose=1) akanmembuat daftar (contoh) yang terdiri dari


elemen elements_to_choose yang defaultnya 1 yang akan diambil dari urutan masukan yang
ditentukan

from random import choice, sample


lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(choice(lst))
print(sample(lst, 5))
print(sample(lst, 10)

Keluaran program tidak dapat diprediksi. Salah satu contoh hasil keluarannya adalah sebagai berikut:

4
[3, 1, 8, 9, 10]
[10, 8, 5, 1, 6, 4, 3, 9, 7, 2]

d. Indeks Modul Python


Modul Python membentuk alam semesta sendiri, di mana Python hanyalah sebuah galaksi. Komunitas
Python di seluruh dunia membuat dan memelihara ratusan modul tambahan yang digunakan dalam
aplikasi khusus seperti genetika, psikologi, atau bahkan astrologi. Modul-modul tersebut tidak

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 56 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
didistribusikan bersama dengan Python, atau melalui saluran resmi. Hal ini membuat dunia Python
lebih luas - hampir tidak terbatas. Pengguna dapat membaca tentang semua modul Python standar di
sini: https://docs.python.org/3/py-modindex.html.

2.5.3. Menerapkan Fungsi Map dan Filter


a. Fungsi Map ()
Map adalah suatu fungsi yeng memiliki tugas khusus. Fungsi map() digunakan untuk mengaplikasikan satu
fungsi ke semua anggota dari iterable (list, tuple, dan lain – lain) dan mengembalikan hasilnya berupa objek
map. Objek map ini bisa dengan mudah diubah menjadi list baru yang anggotanya berupa hasil pemrosesan
dari fungsi dengan menggunakan fungsi list(), tuple(), maupun set().
Sintaks penulisan fungsi map adalah sebagai berikut

Fungsi map () mengambil dua buah parameter, yaitu:


 function – fungsi yang akan memproses setiap item dari iterable
 iterable – iterable yang akan diproses (dimapping) menggunakan function.

Penguna dapat melewatkan lebih dari satu iterable ke dalam fungsi map (). Fungsi map () akan
mengembalikan objek map yang bisa dikonversi menjadi list atau iterable baru yang anggotanya adalah
hasil dari pengolahan fungsi. Contoh penggunaan fungsi map () adalah seperti berikut:

Keluaran program:
List Bilangan1: [2, 4, 6]
List hasil kali 10: [20, 40, 60]
Tipe variabel hasil1: <class 'list'>
Tuple Bilangan2: (3, 5, 7)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 57 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Tuple hasil kuadrat: (9, 25, 49)
Tipe variabel hasil2: <class 'tuple'>

Keterangan:
 Baris 5 - 6 mendefinisikan fungsi fung_kali10
 Baris 8 - 9 mendefinisikan fungsi fung_kuadrat
 Baris 10 deklarasi variabel list_Bilangan1 bertipe list dan inisialisasi dengan 2,4,6
 Baris 11 deklarasi variabel tuple_Bilangan2 bertipe tuple dan inisialisasi dengan 3,5,7
 Baris 14 memanggil fungsi map, untuk menghitung nilai perkalian melalui fungsi fung_kali10
dengan data dari variabel list_Bilangan1. Hasil disimpan dalam variabel hasil1
 Baris 15 memanggil fungsi map, untuk menghitung nilai kuadrat melalui fungsi fung_kuadrat
dengan data dari variabel tuple_Bilangan2. Hasil disimpan dalam variabel hasil2
 Baris 7 – 22 menampilkan variabel list_Bilangan1, hasil1, tepi data variabel hasil 1,
tuple_Bilangan2, hasil2 dan tipe data variabel hasil 2

b. Fungsi filter()
Filter () adalah fungsi yang digunakan untuk menyaring dan menguji anggota – anggota dari suatu iterable
(list, tuple, dan lain – lain). Hasilnya adalah iterable baru dengan anggotanya berasal dari iterable lama yang
bernilai True saat pengujian. Sintaks dari fungsi filter() adalah sebagai berikut:

filter(function, iterable)

Fungsi filter () menerima dua parameter yaitu:


 function – fungsi untuk menguji elemen-elemen dari iterable apakah True atau False
 iterable – iterable yang akan difilter, bisa string, list, tuple, dan lain sebagainya.

Sedangkan nilai kembaliannya adalah iterable baru dengan beranggotakan elemen yang True saat
pengujian. Perhatikan contoh kode program dibawah ini:

Keluaran programnya adalah:


Daftar Huruf Alphabet: ['a', 'b', 'c', 'e', 'i', 'k', 'o', 'z']

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 58 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Daftar Huruf vocal:
a - e - i - o -
Bilangan: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Hasil Filter (bilangan genap): [2, 4, 6, 8, 10]

2.5.4. Menerapkan Lambda Expression


a. Memahami lamda Expression
Lamba expression seperti fungsi dengan penulisan kode program yang lebih effisian. Fungsi lambda
diambil dari konsep matematika, yaitu bagian dari kalkulus Lambda, tetapi kedua fenomena ini tidak
sama. Ahli Matematika menggunakan kalkulus Lambda dalam banyak sistem formal yang
berhubungan dengan logika, rekursi, atau pembuktian teorema. Pemrogram menggunakan fungsi
lambda untuk menyederhanakan kode, membuatnya lebih jelas dan lebih mudah dipahami. Fungsi
lambda adalah fungsi tanpa nama (Anda juga dapat menyebutnya fungsi anonim). Deklarasi fungsi
lambda sama sekali tidak menyerupai deklarasi fungsi normal.

lambda parameters : expression

Klausa tersebut mengembalikan nilai ekspresi ketika memperhitungkan nilai dari argumen dan lambda
saat ini. Perhatikan kode program dan hasil keluarannya:
1. #demo fungsi lamda Keluaran Program:
2. two = lambda : 2 4 4
3. sqr = lambda x : x * x 1 1
4. pwr = lambda x, y : x ** y 0 0
5. 1 1
6. for a in range(-2, 3): 4 4
7. print(sqr(a), end=" ")
8. print(pwr(a, two()))

Analisa/keterangan:
 Fungsi lambda pertama adalah fungsi tanpa parameter anonim yang selalu mengembalikan 2.
Fungsi tersebut tidak anonim lagi, dan kami dapat menggunakan nama tersebut untuk
menjalankannya.
 Fungsi lamda kedua adalah fungsi anonim satu parameter yang mengembalikan nilai argumen
kuadratnya.
 Fungsi lambda ketiga mengambil dua parameter dan mengembalikan nilai yang pertama
dinaikkan ke pangkat yang kedua. Kami tidak menggunakan pow untuk menghindari kebingungan
dengan fungsi bawaan dengan nama yang sama dan tujuan yang sama.
 Contoh diatas menunjukkan bagaimana lambda dideklarasikan dan berperilaku, tetapi tidak
mengatakan apa pun tentang mengapa mereka diperlukan, dan untuk apa mereka digunakan,
karena semuanya dapat diganti dengan fungsi di Python

b. Fungsi Lamda Untuk menghitung persamaan matematika


Fungsi lamda ini akan digunakan untuk mengevaluasi hasil. Bayangkan kita membutuhkan sebuah
fungsi (printfunction), mencetak nilai dari fungsi yang diberikan untuk satu set argumen terpilih. Fungsi
akan mencetak bersifat universal - ia harus menerima serangkaian argumen yang dimasukkan ke
dalam daftar dan fungsi untuk dievaluasi, keduanya sebagai argumen. Perhatikan kode program
berikut:
1. def printfunction(args, fun): Keluaran Program:
2. for x in args: f(-2)=18
3. print('f(', x,')=', fun(x), sep='') f(-1)=8
4. f(0)=2
5. def poly(x): f(1)=0

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 59 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
6. return 2 * x**2 - 4 * x + 2 f(2)=2
7.
8. printfunction([x for x in range(-2, 3)], poly)
Analisa/keterangan:
 Fungsi printfunction() mengambil dua parameter:
o yang pertama, daftar argumen yang hasilnya ingin kita cetak;
o yang kedua, fungsi yang harus dipanggil sebanyak jumlah nilai yang dikumpulkan di dalam
parameter pertama.
 Mendefinisikan sebuah fungsi bernama poly () - ini adalah fungsi yang nilainya akan kita cetak.
 Perhitungan yang dilakukan fungsi tidak terlalu rumit - ini adalah polinomial dari suatu bentuk:
f(x) = 2x2 - 4x + 2
 Nama fungsi kemudian diteruskan ke printfunction() bersama dengan satu set lima argumen yang
berbeda - set dibangun dengan klausa pemahaman daftar.

c. Lambda dan fungsi map()


Fungsi map(argumen1, argumen2) menerapkan fungsi yang diteruskan oleh argumen pertamanya ke
semua elemen argumen kedua, dan mengembalikan iterator yang mengirimkan semua hasil fungsi
berikutnya. Anda dapat menggunakan iterator yang dihasilkan dalam satu lingkaran, atau mengubahnya
menjadi daftar menggunakan fungsi list(). Dalam kasus yang paling sederhana, fungsi map() membutuhkan
dua argumen: sebuah fungsi dan sebuah daftar.

map(function, list)

Uraian di atas sangat disederhanakan, seperti: argumen map() kedua dapat berupa entitas apa pun yang
dapat diulang (misalnya: Tuple, atau hanya generator). Map() dapat menerima lebih dari dua argumen.

1. list1 = [x for x in range(5)] Keluaran Program:


2. list2 = list(map(lambda x: 2 ** x, list1)) [0, 1, 2, 3, 4]
3. print(list1) [1, 2, 4, 8, 16]
4. print(list2)
1 4 16 64 256
5. for x in map(lambda x: x * x, list2):
6. print(x, end=' ')
7. print()

Analisa/Keterangan:
 Baris 1 membuat variabel list1 bertipe list dengan nilai dari 0 hingga 4;
 Membuat variabel list2 bertipe List dan menggunakan peta bersama dengan lambda pertama
untuk membuat daftar baru di mana semua elemen telah dievaluasi sebagai 2 pangkat x yang
diambil dari elemen yang sesuai dari list1;
 Baris 3 – 4 mencetak list 1 dan list2 dicetak
 Baris 5- 7 menggunakan fungsi map() lagi untuk membangkitkan nilai (genertor) yang
dikembalikannya dan langsung mencetak semua nilai yang diberikannya. Kami telah menggunakan
lambda kedua yang hanya mengkuadratkan setiap elemen dari list2.

d. Lambdas dan fungsi filter()


Fungsi Python lain yang dapat dipercantik secara signifikan oleh aplikasi lambda adalah filter(). Fungsi ini
mempunyai jenis argumen yang sama seperti map(), tetapi melakukan sesuatu yang berbeda. Fungsi ini
memfilter argumen kedua sambil dipandu oleh arah yang mengalir dari fungsi dan ditentukan sebagai
argumen pertama (fungsi dipanggil untuk setiap elemen daftar, seperti di map (). Elemen mengembalikan
True dari fungsi melewati filter, sedangkan elemen lainnya ditolak.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 60 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
1. from random import seed, randint
2. seed()
3. data = [ randint(-10,10) for x in range(5) ]
4. filtered = list(filter(lambda x: x > 0 and x % 2 == 0, data))
5. print(data)
6. print(filtered)
Keluaran Program:
[0, 1, 2, 3, 4]
[1, 2, 4, 8, 16]
1 4 16 64 256

Analisa dan keterangan:


 Baris 2 memanggil fungsi seed dari modul random
 Baris 3 deklarasi variabel data bertipe list dan menginisialisasi dengan lima bilangan yang
dibangkitkan secara random dengan interval nilai -10 sampai 10
 Baris 4 deklarasi variabel filtered dan menginisialisasi dengan isi variable bertipe list, diambil dan
difilter dari isi variabel list data dimana hanya angka angka genap dan lebih besar dari nol yang dipilih
 Baris 5 dan 6 mencetak ini variabel data dan filtered

2.5.5. Menerapkan Package


a. Memahami package dalam python
Modul adalah sejenis wadah yang berisi fungsi. Fungsi berisi kode program yang digunakan untuk tujuan
menyelesaikan tugas tertentu. Pengguna dapat dapat mengemas beberapa fungsi ke dalam satu modul.
Package adalah kumpulan dari beberapa modul yang mirip dengan folder / direktori dalam menejemen file.
Developer, programmer atau pengguna dapat mendistribusikannya ke seluruh dunia. Gambar berikut
menyajikan contoh struktur pohon dari suatu package modul dan fungsi.

Gambar Gambar 2.16 Struktur pakcage modul dan fungsi dan penyimpanannya

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 61 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Diasumsikan bahwa extra adalah nama dari paket yang baru dibuat (root paket). Hal ini akan
memberlakukan aturan penamaan yang memungkinkan menamai dengan jelas setiap entitas dari pohon.
Lokasi fungsi bernama funT () dari paket tau adalah:

extra.good.best.tau.funT()
Fungsi yang ditandai berikut berasal dari modul psi yang disimpan dalam subpaket ugly dari paket
tambahan.

extra.ugly.psi.funP()

? Bagaimana caranya mengubah subpohon tersebut menjadi paket Python nyata. Bagaimana caranya
meyakinkan Python bahwa pohon tersebut bukan sekumpulan file sampah, tetapi satu set modul dan di
mana meletakkan subtree tersebut agar dapat diakses oleh Python?

√ o Python mengharapkan bahwa ada file dengan nama yang sangat unik di dalam folder paket, yaitu:
__init__.py. (Dapat pula diletakkan dalam subpaket manapun jika subpaket teserbut diperlakukan
individual dan jenis inisialisasi khusus).
o Isi file akan dieksekusi ketika salah satu modul paket diimpor. Jika tidak menginginkan inisialisasi khusus,
dapat membiarkan file kosong, tetapi tidak boleh menghilangkannya.
o Menempatkan paket beserta seluruh modulnya di C:\Users\user\Py\packages

b. Membuat modul fungsi dan package:


1. Buat folder misal: LatihanPaket. Buat file dengan nama module.py Simpan di folder tersebut. Ketik kode
berikut dan jalankan:

# module.py
print("I like to be a module.")
print(__name__)

Tampilan Keluaran:
I like to be a module
__main__

Buat file dengan nama main.py. disimpan dalam folder LatihanPaket. Ketik kode berikut dan jalankan.

#main.py
Import module

Tampilan Keluaran :
I like to be a module
Module

Keterangan:
Ketika menjalankan file secara langsung (module.py), variabel __name__-nya disetel ke __main__,
ketika file diimpor sebagai modul, variabel __name__-nya diatur ke nama file (tidak termasuk .py) Hal
ini menandakan pengguna dapat menggunakan variabel __main__ untuk mendeteksi konteks di mana
kode telah diaktifkan:

2. Modifikasi file modul.py dengan kode berikut:


BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Dibuat oleh:
Rev.Tanggal:
Hal
M A L A N G Pemrograman IoT 62 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
# module.py
print(__name__)
if __name__ == "__main__":
print("I prefer to be a module")
else:
print("I like to be a module")

Keluaran ketika menjalankan file modul.py


__main__
I prefer to be modul

Keluaran ketika menjalankan file main.py


module
I like to be modul

3. Tambahkan variabel counter pada file modul.py


# module.py
counter = 0
if __name__ == "__main__":
print("I prefer to be a module")
else:
print("I like to be a module")

Tambahkan kode print(module.counter) pada file main.py


# main.py
import module
print(module.counter)

Keluaran ketika menjalankan file modul.py


__main__
I prefer to be modul

Keluaran ketika menjalankan file main.py


module
I like to be modul
0

4. Modifikasi file modul.py dengan kode berikut:


1. # module.py
2. #!/usr/bin/env python3
3. """ module.py - an example of Python module """
4. __counter = 0
5. def suml(list):
6. global __counter
7. __counter += 1
8. sum = 0
9. for el in list:
10. sum += el
11. return sum
12. def prodl(list):
13. global __counter
14. __counter += 1

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 63 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
15. prod = 1
16. for el in list:
17. prod *= el
18. return prod
19. if __name__ == "__main__":
20. print("I prefer to be a module, but I can do some tests for you")
21. l = [i+1 for i in range(5)]
22. print(suml(l) == 15)
23. print(prodl(l) == 120)

Modifikasi pula file main.py


# main.py
from module import suml, prodl
zeroes = [0 for i in range(5)]
ones = [1 for i in range(5)]
print(suml(zeroes))
print(prodl(ones))

Tampilan keluaran:

Analisa/Keterangan:

Baris yang dimulai dengan #! memiliki banyak nama yaitu shabang, shebang, hashbang, poundbang atau
hashpling. Nama begitu berarti tetapi perannya lebih penting. Dari sudut pandang Python, ini hanya
komentar yang dimulai dengan #. Untuk Unix dan OS mirip Unix (termasuk MacOS), baris seperti itu
menginstruksikan OS bagaimana mengeksekusi konten file Dengan kata lain, program apa yang perlu
diluncurkan untuk menafsirkan teks. Di beberapa lingkungan (terutama yang terhubung dengan server
web tidak adanya jalur tersebut akan menyebabkan masalah;

5. Pada folder latihanPaket buat subfolder modules dan progs. Pindahkan file module.py ke subfolder
modules dan file main.py ke subfolder prog. Jalankan program maka akan muncul kesalahan sebagai
berikut:
Traceback (most recent call last):
File "C:\Users\user\Py\progs\main.py", line 2, in <module>
from module import suml, prodl
ModuleNotFoundError: No module named 'module'

Modifikasi program main sebagai berikut:


#main.py
from sys import path
path.append('..\\modules')

from module import suml, prodl


zeroes = [0 for i in range(5)]
ones = [1 for i in range(5)]
print(suml(zeroes))
print(prodl(ones))

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 64 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.5.6. Tugas
1. Jalankan dan analisa kode program:

2. Jalankan dan analisa kode program rumusBidang.py dan main.py

mainBidang.py

3. Jalankan dan analisa kode program:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 65 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
4. Implementasikan fungsi map, filter dan lambda untuk mengecek sederatan data dari list apakah
bilangan genap atau ganjil dan menyaring data list tersebut ke dalam kelompok bilangan genap dan
ganjil.
5. Rancanglah struktur paket yang meliputi paket utama (root) dan sub-sub paket (sub-sub root), modul-
modul, fungsi-fungsi dan program utamanya. Fungsi-fungsi dalam modul dan paket tersebut akan
digunakan untuk menghitung luas bangun datar (persegi, lingkaran dan segitiga dan menghitung
volume bangun ruang (Kubik, bola, trapisium). Program utama berisi kode-kode program yang akan
memanggil semua fungsi tersebut. Program utama diletakkan dalam paket(root). Modul dimasukkan
dalam sub paket sesuai dengan kelompok/kategorinya/tugasnya. Fungsi dimasukkan dalam modul
yang mempunyai tugas spesifik..

2.6. Lab 6 Mengunakan Variabel String


2.6.1. Data string sebagai argumen fungsi print()

String digunakan saat pengguna akan memproses teks (seperti semua jenis nama, alamat, novel, dll.),
Bukan angka. String membutuhkan tanda kutip sebagaimana float membutuhkan poin. Ini adalah string
yang sangat umum: "Saya adalah string."

print ('Saya Monty Python.')


print ("Saya Monty Python.")

Python mempunyai cara tersendiri untuk menuliskan string yang diikuti tanda petik dua atau kutipan
misalnya untuk menuliskan judul, atau istilah bagaimana menyandikan kutipan di dalam string yang sudah
dibatasi oleh tanda kutip. Misal untuk menuliskan teks seperti berikut:

Saya suka "Monty Python"

Ada dua cara yang bisa dilakukan yaitu:


 Pertama menggunakan garis miring terbalik. Garis miring terbalik juga dapat menghindari tanda
kutip. Kutipan yang diawali dengan garis miring terbalik mengubah artinya - ini bukan pemisah,
tetapi hanya kutipan.
print ("Saya suka \" Monty Python \ "")
Catatan: ada dua tanda kutip lolos di dalam string - dapatkah Anda melihat keduanya?
 Solusi kedua menggunakan apostrof sebagai pengganti kutipan. Salah satu dari karakter ini dapat
membatasi string, tetapi penggunaannya harus konsisten.
print ('Saya suka "Monty Python"')

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 66 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.6.2. Deklarasi inisialisasi variabel string

Untuk menginisialisasi variabel string dapat dilakukan dengan cara mengapit string atau teks menggunakan
tanda double petik (" ") atau singgle petik (' ')

string=" " #isi string kosong


string1="string satu" #isi string1 = string satu
string2='string dua' #isi string1 = string satu
print("isi String: ",string)
print("isi String1: ",string1)
print("isi String2: ",string2)

Python triple quotes digunakan dengan membiarkan string untuk ditulis dalam beberapa baris, termasuk
kata kerja NEWLINEs, TABs, dan karakter khusus lainnya. Sintaks untuk triple quotes terdiri dari tiga tanda
kutip tunggal atau ganda ditulis berturut-turut: Berikut adalah contohnya :

kutipantiga = """this is a long string that is made up of


several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print (kutipantiga)

2.6.3. Operasi-Operasi Khusus String


Python menyediakan beberapa operator yang dapat digunakan untuk melakukan operasi pada variabel
string. Beberapa operator yang dapat diperasikan untuk variabel string antara lain adalah: *, +, [], [:], in,
not in, r/R, dan %.

Tanda * (asterisk), ketika diterapkan ke string dan angka (karena tetap komutatif dalam posisi ini) menjadi
operator replikasi:
string * nomor
nomor * string
Ini mereplikasi string dengan jumlah yang sama yang ditentukan oleh nomor tersebut. Sebagai contoh:
“James” * 3 menghasilkan “JamesJamesJames”
5 * “an” memberi “ananan”
5 * “2” (atau “2” * 5) menghasilkan “22222” (bukan 10!)

INGAT: Angka yang kurang dari atau sama dengan nol menghasilkan string kosong. Program sederhana ini
“menggambar” sebuah persegi panjang, memanfaatkan operator lama (+) dalam peran baru:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 67 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Kode program: Keluaran program:

Tabel berikut menjelaskan penggunaan operator pada operasi string. Dua buah variabel diasumsikan
sebagai string a = “Belajar” b = “Python”. Lakukan operasi operasi pada tabel berikut kemudian tampilkan
hasilnya:

Tabel 9 Operator khusus pada String


Operator Fungsi dan kegunaan
+ a+b Operasi penggabungan/concatenated/joined: menambahkan nilai pada kedua sisi operator.
Dengan isi variabel diatas akan menghasilkan keluaran BelajarPython Concatenation -
* a *2 Operasi direplikasi(replicated) akan menghasilkan pengulangan BelajarBelajar, membuat string
baru, menggabungkan beberapa salinan dari string yang sama
[] a[1] akan menghasilkan satu elemen irisan (Slice) - Memberikan karakter dari indeks yang diberikan
akan menghasilkan beberapa eleman Range Slice - Memberikan karakter dari kisaran yang
[:] a[1:4]
diberikan
akan menghasilkan satu Keanggotaan - Mengembalikan nilai true jika ada karakter dalam string
in B in a
yang diberikan
Z not akan menghasilkan satu keanggotaan - Mengembalikan nilai true jika karakter tidak ada dalam
not in
in a string yang diberikan
r/R Menekan arti aktual karakter Escape. “R” bisa berupa huruf kecil (r) atau huruf besar (R) dan harus
print (r’\n’) ditempatkan tepat sebelum tanda kutip pertama. Dengan kode disamping akan menghasilkan
print (R’\t’) keluaran: \n dan \t
% Format - Melakukan format String

Instruksi str(angka) digunakan untuk mengubah data dari float, integer atau lainnya menjadi data string.
Sedangkan untuk mengubah dari data integer atau float ke string menggunakan int() atau float().
angka=3
angka1=5.5
string= '6'
string1=str (angka)
string2=str(angka1)
angka2=int(string)
leg_a = float (input(“Input panjang sisi pertama:”))
leg_b = float (input (“Input panjang sisi kedua:”))
print(“Panjang sisi miring adalah” + str ((leg_a ** 2 + leg_b ** 2) ** .5))

2.6.4. Pemrosesan dan pengformatan data String menggunakan operator %

Untuk melakukan pengformatan data string atau data lain yang terkait dapat menggunakan operator %.
Operator ini bersifat unik untuk string. Biasanya dikompinasikan dengan fungsi print yang dimabil dari
fungsi printf dalam bahasa pemrograman C. Operator % diikuti suatu karakter yang akan mengformat data
tertentu. %s akan menerima data string. Untuk melakukan konversi string menggunakan fungsi str ()

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 68 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
sebelum pengformatan. %c digunakan untuk data bertipe karakter, %d untuk bilangan bulat desimal, %u
untuk bilangan Unsigned decimal integer, %o untuk bilangan octal, %x untuk bilangan bulat
heksadesimal/huruf kecil, %X untuk bilangan bulat heksadesimal/huruf besar), %e untuk Notasi
eksponensial (dengan huruf kecil ‘e’), %E untuk Notasi eksponensial (dengan huruf besar ‘E’), %f untuk
bilangan real floating point, %g untuk bilangan y ang lebih pendek dari % f dan% e dan %G untuk bilangan
Lebih pendek dari% f dan% E.

print (“My name is %s and weight is %d kg!” % (‘Zara’, 21))


print (‘My name is {} and weight is {} kg!’.format(‘Clara’, 20))

Tampilan keluarannya adalah:


My name is Zara and weight is 21 kg!
My name is Clara and weight is 20 kg!

Tabel 10 Penulisan instruksi Formating String

Kategori Penulisan Instruksi Tampilan Keluaran


Pengformatan ‘%s %s’ % (‘one’, ‘two’)
dasar
‘{} {}’.format(‘one’, ‘two’)
‘%d %d’ % (1, 2)
‘{} {}’.format(1, 2)
‘{1} {0}’.format(‘one’, ‘two’)

Padding dan ‘%10s’ % (‘test’,)


string
‘{:>10}’.format(‘test’)
perataan
‘%-10s’ % (‘test’,)
‘{:10}’.format(‘test’)
‘{:_<10}’.format(‘test’)

‘{:^10}’.format(‘test’)

‘{:^6}’.format(‘zip’)

'RP {:,.2f}'.format(15000) Rp 15,000.00


x, y = 3, 5 3+5=8
print(f'{x} + {y} = {x+y}')
Memotong ‘%.5s’ % (‘xylophone’,)
string panjang
‘{:.5}’.format(‘xylophone’)
pemotongan dan ‘%-10.5s’ % (‘xylophone’,)
padding
‘{:10.5}’.format(‘xylophone’)
Format '%04d' % (42,)
numbering
'{:04d}'.format(42)
‘%f’ % (3.141592653589793,)
‘{:f}’.format(3.141592653589793)
‘%06.2f’ % (3.141592653589793,)
‘{:06.2f}’.format(3.141592653589793)
Tanggal from datetime import datetime
'{:%Y-%m-%d %H:%M}'
.format(datetime(2001, 2, 3, 4, 5))

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 69 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Format from datetime import datetime
parametrisasi dt = datetime(2001, 2, 3, 4, 5)
(tanggal)
'{:{dfmt} {tfmt}}'.format(dt,
dfmt='%Y-%m-%d', tfmt='%H:%M')
Tempat data={'first': 'Hodor', 'last':
penampung 'Hodor!'}
bernama '%(first)s %(last)s' % data
'{first} {last}'.format(**data)
'{first} {last}'
.format(first='Hodor', last='Hodor!')

Program memanggil fungsi localtime() dam asctime() untuk mengambil data tanggal dan waktu sekarang.
import time;
localtime = time.localtime(time.time())
print ("Waktu lokal saat ini:", localtime)
localtime1 = time.asctime( time.localtime(time.time()) )
print("Waktu lokal saat ini:", localtime1)

Hasil keluaran Program:


Waktu lokal saat ini: time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27,
tm_hour=6, tm_min=52, tm_sec=0, tm_wday=6, tm_yday=178, tm_isdst=0)
Waktu lokal saat ini: Sun Jun 27 06:52:00 2021

2.6.5. Fungsi Built-in Operasi String

Python menyertakan beberapa operasi built-in yang digunakan untuk memanipulasi string seperti yang
diperlihatkan dalam tabel dibawah ini.

Tabel 11 Cuplikan fungsi-fungsi built-in operasi string


Operasi / Method Fungsi dan Kegunaan
capitalize() Mengubah huruf pertama string menjadi huruf besar
len(string) Mengembalikan panjang string
lower() Mengonversi semua huruf besar dalam bentuk string menjadi huruf kecil.
swapcase() Kasus invers untuk semua huruf dalam string.
title() Mengembalikan versi string “titlecased”, yaitu, semua kata diawali dengan huruf besar
dan sisanya huruf kecil.
upper() Mengonversi huruf kecil dalam bentuk string ke huruf besar.
ord () mengetahui nilai poin kode ASCII / UNICODE karakter tertentu
chr () Mengambil titik kode dan mengembalikan karakternya. Memanggilnya dengan argumen
yang tidak valid (misai: titik kode negatif atau tidak valid) menyebabkan eksepsi
ValueError atau TypeError.
Isalpha() Fungsi menggambalikan nilai true jika data/variabel adalah huruf/abjad
Isdigit() Fungsi akan mengembalikan nilai true jika data/variabel adalah angka/digit

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 70 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Perhatikan kode program berikut:
1. # Demonstrasi fungsi capitalize(), title() Keluaran Program:
2. string='seLAmat paGI' 'seLAmat paGI'
3. print(string) 'Selamat pagi'
4. print(string.capitalize()) 'Selamat Pagi'
5. print(string.title())

1. # Demonstrasi fungsiord() Keluaran Program:


2. ch1 = 'a' 97
3. ch2 = ' ' # space 32
4. print(ord(ch1))
5. print(ord(ch2))

1. # Demonstrating the chr() function Keluaran Program:


2. print(chr(97)) a
3. print(chr(945)) α

1. #Demonstrating isdigit() dan isalpha() Keluaran Program:


2. print('a'.isalpha()) True
3. print('1'.isdigit()) True
4 print('B'.isdigit()) False
5. print('10'.isalpha()) False

2.6.6. Tugas
1. Buatlah program dengan menggunakan perintah print() sehingga tampilan seperti dibawah ini:

2. Duplikat panah, tempatkan kedua panah berdampingan; catatan: sebuah string dapat dikalikan
dengan menggunakan trik berikut: "string" * 2 akan menghasilkan "stringstring"

3. Buatlah program untuk menampilkan simulasi data jam digital yang diambil dari local time jam
komputer saat ini
Hari tanggal waktu sekarang = Sun Jun 27 08:45:02 2021
Jam sekarang = 08:45:02
Simulasi Jam Digital:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 71 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
4. Buat program untuk menampilkan teks multiline yang disimpan dalam sebuah variabel string,
lakukan operasi pengformatan terhadap variabel tersebut sehingga menampilkan berikut:
guRiNdaM 12
genDang genDut Tali keCapi
kenYang Perut suKalah Hati
Gurindam 12
gendang gendut tali kecapi
kenyang perut sukalah hati
Gurindam 12
Gendang Gendut Tali Kecapi
Kenyang Perut Sukalah Hati
GURINDAM 12
GENDANG GENDUT TALI KECAPI
KENYANG PERUT SUKALAH HATI
GUrInDAm 12
GENdANG GENdUT tALI KEcAPI
KENyANG pERUT SUkALAH hATI
gurindam 12
gendang gendut tali kecapi
kenyang perut sukalah hati
jumlah Karakter: 72

5. Buatlah program untuk melalukan formating data seperti gambar samping kiri sehingga
menampikan data seperti gambar samping kanan berikut ini:

6. Buatlah program yang dapat digunakan untuk menyandikan (enkrispsi) suatu pesan menggunakan dan
menerjemahkan suatu sandi (dekripsi) menggunakan metode caesar Cipher. Prinsip kerja cukup
sederhana dimana setiap huruf dari pesan dirubah menjadi huruf kapital kemudian diganti dengan
karakter berikutnya (A dikodekan menjadi B, B menjadi C, dan seterusnya) sedangkan untuk karakter
Z menjadi A. untuk selain huruf atau abjad (seperti: sepasi, angka dll) diabaikan.

Masukkan pesan: Selamat Pagi Masukkan kode enkripsi: Selamat Pagi


Pesan: Selamat Pagi Kode: TFMBNBUQBHJ
Pesan: SelamatPagi
Sandi: TFMBNBUQBHJ

7. Buat program yang dapat menjumlahakan sederatan angka yang dimasukkan dengan keyborad dan
dipisahkan dengan spasi

Masukkan sederatan angka dipisahkan dengan spasi: 1 2 3 4 5


Jumlah ke 5 angka tersebut adalah: 15.0

8. Buat program yang dapat digunakan untuk mengvalidasi nomor rekening (IBAN VALIDATOR). IBAN
Validator adalah validasi Nomor Rekening Bank Internasional yang menyediakan metode sederhana
dan cukup andal untuk memvalidasi nomor rekening terhadap kesalahan ketik yang dapat terjadi
selama penulisan ulang nomor misalnya, dari dokumen kertas, seperti faktur atau tagihan, ke dalam
komputer. Nomor akun yang sesuai dengan IBAN terdiri dari:
BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 72 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
• kode negara dua huruf yang diambil dari standar ISO 3166-1 (mis., FR untuk Prancis, GB untuk
Inggris Raya, DE untuk Jerman, dan seterusnya)
• dua digit cek yang digunakan untuk melakukan pemeriksaan validitas - tes yang cepat dan
sederhana, tetapi tidak sepenuhnya dapat diandalkan, yang menunjukkan apakah suatu nomor
tidak valid (terdistorsi oleh kesalahan ketik) atau tampaknya baik;
• nomor rekening hingga 30 karakter alfanumerik bergantung pada negara yang menggunakan.

Standar mengatakan bahwa validasi memerlukan langkah-langkah berikut (menurut Wikipedia):


• Langkah 1 memeriksa apakah total panjang IBAN sudah benar sesuai dengan negara (kriteria ini
bisa diabaikan tetapi dapat dilakukan dengan mengubah kode untuk memenuhinya
• Langkah 2 memindahkan empat karakter awal ke akhir string (mis., kode negara dan digit cek)
• Langkah 3 mengganti setiap huruf dalam string dengan dua digit, sehingga memperluas string,
di mana A = 10, B = 11 ... Z = 35;
• langkah 4 menafsirkan string sebagai bilangan bulat desimal dan hitung sisa angka tersebut pada
pembagian dengan 97; Jika sisanya adalah 1, tes digit pengecek lulus dan IBAN mungkin valid.

9. Buatlah program untuk menguji suatu string atau deretan string apakah string tersebut Palindromes
atau bukan.
Ten animals I slam in a net
Ini palindrom
Kasur Rusak
Ini adalah Polindrom

10. Buatlah program untuk menguji suatu string atau sederatan string apakah string tersebut Anagram
atau tidak. Anagram adalah kata baru yang dibentuk dengan mengatur ulang huruf-huruf dari sebuah
kata, menggunakan semua huruf asli tepat satu kali. Misalnya, frasa “rail safety" and "fairy tales"
muka dan kamu dalah anagram, sedangkan "Aku" dan "Kamu" bukan.

2.7. Lab 7. Penanganan Eksepsi


2.7.1. Mengamati Pesan kesalahan (eksepsi)
Ketika menjalankan kode program yang salah, Python melakukan dua hal yaitu: menghentikan program
atau membuat jenis data khusus, yang disebut eksepsi. Kedua aktivitas tersebut akan memunculkan
eksepsi. Hal ini mengindikasikan bahwa:
 eksepsi yang diajukan mengharapkan seseorang atau sesuatu untuk memperhatikan dan
menjaganya;
 jika tidak ada yang terjadi untuk menangani eksepsi, program akan dihentikan secara paksa, dan
terlihat pesan kesalahan yang dikirim ke konsol.
 sebaliknya, jika eksekusi diurus dan ditangani dengan benar, program yang ditangguhkan dapat
dilanjutkan dan eksekusinya dapat dilanjutkan.

Contoh1:
import math
x = float(input("Enter x: "))
y = math.sqrt(x)
print("The square root of", x, "equals to", y)

Enter x: Abracadabra
Traceback (most recent call last):
File "sqrt.py", line 3, in
x = float(input("Enter x: "))
ValueError: could not convert string to float: 'Abracadabra'

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 73 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Enter x: -4
Traceback (most recent call last):
File "sqrt.py", line 4, in
y = math.sqrt(x)
ValueError: math domain error

Contoh2:
>>> value=1
>>> value /=0
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module> value /=0
ZeroDivisionError: division by zero

Contoh 3
>>> list = []
>>> x = list[0]
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
x = list[0]
IndexError: list index out of range
>>>

Tiga contoh diatas memunculkan tiga jenis pesan kesalahan (eksepsi) yaitu:
 value error: kesalahan karena format/type data yang dimasukkan tidak sesuai
 zeroDivision error, kesalahan memasukkan bilangan pembagi adalah 0 (nol)
 IndexError: kesalahan mengakses indeks elemen list

2.7.2. Mengatasi Kesalahan


Python menyediakan alat efektif yang memungkinkan pengguna mengamati eksepsi mengidentifikasi, dan
menanganinya secara efisien. Hal ini dimungkinkan karena fakta bahwa semua potensi eksepsi memiliki
nama yang tidak ambigu, sehingga pengguna dapat mengkategorikannya dan bereaksi dengan tepat.

try:
:
except exc1:
:
except exc2:
:
except:
:
finaly:
:

1. try:
2. x = int(input("Masukkan bilangan : "))
3. y = 1 / x
4. print(y)
5. except ZeroDivisionError:
6. print("Anda tidak bisa melakukan pembagian dengan Nol,
7. maaf")
8. except ValueError:
9. print("Anda harus memasukkan blangan Integer.")
10. except:
11. print("Oh sayang, ada sesuatu yang salah")
12. finally:
print("THE END.")

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 74 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Analisa/Keterangan:
 Baris 5 akan menangkap kesalahan jika x yang dimasukkan bilangan 0
 Baris 7 akan menangkap kesalahan jika yang dimasukkan selain data integer
 Baris 9 akan menangkap jenis kesalahan lain misalnya dengan memasukkan ctr+C akan menghasilkan
jenis kesalahan keyboardInterupt
 Baris 11 akan tetap dijalankan meskipun terjadi atau menangkap kesalahan.

2.7.3. Anatomi dan Hirarki eksepsi dalam python


Python 3 mendefinisikan 63 jenis eksepsi bawaan, dan semuanya membentuk hierarki berbentuk pohon,
meskipun pohon itu agak aneh karena akarnya terletak di atas. Beberapa eksepsin bawaan lebih umum
(termasuk eksepsilain) sementara yang lain benar-benar konkret (hanya mewakili diri mereka sendiri). Hal
ini dapat dikatakan bahwa semakin dekat ke akar sebuah eksepsi berada, semakin bersifat umum (abstrak)
itu. Eksepsi yang terletak di ujung cabang bisa dikatakan bersifat konkret. Gambar berikut menunjukkan
bagian kecil dari pohon eksepsi lengkap.

Gambar 2.17 Hirarki eksepsi dalam Python


catatan:
 ZeroDivisionError adalah kasus khusus dari kelas eksepsi yang lebih umum bernama ArithmeticError;
 ArithmeticError adalah kasus khusus dari kelas eksepsi yang lebih umum bernama Exception;
 Exception adalah kasus khusus dari kelas yang lebih umum bernama BaseException;

Perhatikan dua kode program berikut:


#Kode program 1 #kode program2
try: try:
y = 1 / 0 y = 1 / 0
except ZeroDivisionError: except ArithmeticError:
print("Zero Division!") print("Arithmetic problem!")
except ArithmeticError: except ZeroDivisionError:
print("Arithmeticproblem!") print("Zero Division!")
print("THE END.") print("THE END.")

Keluaran: Keluaran:
Zero division! Arithmetic problem!
THE END.. THE END..

2.7.4. Dua eksespsi dengan cara yang sama


Jika ingin menangani dua atau lebih pengecualian dengan cara yang sama, dapat menggunakan sintaks
berikut:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 75 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
try:
:
except (exc1, exc2):
:

Dibutuhkan memasukkan semua nama pengecualian yang terlibat ke dalam daftar yang dipisahkan koma
dan jangan lupa tanda kurung. ika pengecualian dimunculkan di dalam suatu fungsi, itu dapat ditangani 1)
fungsi di dalam; dan 2) fungsi luar;

Eksepsi ZeroDivisionError menjadi suatu kasus konkret dari kelas eksepsi ArithmeticError yang
dimunculkan di dalam fungsi badfun (), dan tidak membiarkan fungsi itu sendiri mengurusnya.

def badFun(n):
try:
return 1 / n
except ArithmeticError:
print("Arithmetic Problem!")
return None
badFun(0)
print("THE END.")

Keluaran program:
Arithmetic problem!
THE END..

Hal Ini juga memungkinkan untuk membiarkan eksepsi menyebar di luar fungsi. Lihat kode di bawah ini:
def badFun(n):
return 1 / n
try:
badFun(0)
except ArithmeticError:
print("What happened? An exception was raised!")
print("THE END.")

Masalahnya harus diselesaikan oleh invoker. Keluaran program:

What happened? An exception was raised!


THE END..

Catatan Penting:
eksepsi yang dimunculkan dapat melintasi batas fungsi dan modul, dan berjalan melalui rantai panggilan
untuk mencari klausa kecuali ada yang cocok untuk menanganinya. Jika tidak ada klausul seperti itu, eksepsi
tetap tidak tertangani, dan Python menyelesaikan masalah dengan cara standarnya - dengan menghentikan
kode mengeluarkan pesan diagnostik.

2.7.5. Penggunaan Instruksi raise

Instruksi raise merupakan salah satu kata kunci dalam python, menaikkan eksepsi yang ditentukan
bernama exc seolah-olah dinaikkan dengan cara normal (alami). Instruksi tersebut memungkinkan untuk:
 mensimulasikan peningkatan eksepsi aktual (mis., untuk menguji strategi penanganan pengguna)
 menangani sebagian eksepsi dan membuat bagian lain dari kode bertanggung jawab untuk
menyelesaikan penanganan (pemisahan masalah).
Lihat kode di editor. Beginilah cara Anda menggunakannya dalam praktik.
def badFun(n):

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 76 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
raise ZeroDivisionError
try:
badFun(0)
except ArithmeticError:
print("What happened? An error?")
print("THE END.")

Output program tetap tidak berubah.


What happened? An error?!
THE END..

Dengan cara ini, Anda dapat menguji rutinitas penanganan eksepsi tanpa memaksa kode
melakukan/menaikkan eksepsi. Hal ini juga dapat digunakan dengan cara berikut (perhatikan tidak adanya
nama except)

raise

Ada satu batasan instruksi semacam ini dapat digunakan di dalam cabang except saja; menggunakannya
dalam konteks lain menyebabkan kesalahan. Instruksi akan segera memunculkan kembali eksepsi yang
sama seperti yang saat ini ditangani. Hal ini Anda dapat mendistribusikan penanganan eksepsi di antara
berbagai bagian kode.

Lihat kode di editor.


def badFun(n):
try:
return n / 0
except:
print("I did it again!")
raise
try:
badFun(0)
except ArithmeticError:
print("I see!")
print("THE END.")

Kleuaran Program:
I did it again!
I see!
THE END

ZeroDivisionError dimunculkan dua kali: pertama, di dalam bagian try hal ini disebabkan oleh pembagian
nol aktual dan kedua, di dalam bagian except dengan instruksi kenaikan.

2.7.6. Penggunaan instruksi assert


Assert akan mengevaluasi ekspresi. jika ekspresi dievaluasi ke True, atau nilai numerik bukan nol, atau string
tidak kosong, atau nilai lain yang berbeda dari None, ekspresi tidak akan melakukan apa pun. Jika tidak,
secara otomatis dan segera memunculkan eksepsi bernama AssertionError (dalam kasus ini, kami
mengatakan bahwa pernyataan gagal) Kegunaan atau manfaat penggunaan Assert expression antara lain
adalah:
 Memastikan bahwa kode program yang dibuat benar-benar aman dari data yang terbukti salah,
tidak benar-benar yakin bahwa data tersebut telah diperiksa dengan cermat sebelumnya (misal: di
dalam fungsi yang digunakan orang lain.
 memunculkan eksepsi AssertionError akan mengamankan kode dari hasil yang tidak valid, dan
dengan jelas menunjukkan sifat kegagalan.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 77 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 pernyataan tidak menggantikan eksepsi atau memvalidasi data adalah pelengkap.
 eksepsi dan validasi data dapat diibaratkan: mengemudi dengan hati-hati, assert expression
bagaikan airbag pada mobil.
Penulisan sintak assert adalah sebagai berikut

assert Expression, [Arguments]

EXpression menjelaskan suatu operasi perbandingan/bolean True atau False, jika True maka program akana
berjalan normal jika False maka akan terjadi kesalahan. Argumen dapat berupa data string dapat diisi
dengan prasyarat, atau penjelasan seperlunya.
1. >>> assert True Program berjalan normal
2. >>> assert 2 == 2 Program berjalan normal
3. >>> assert 'a' < 'c' Program berjalan normal
4. >>> assert 3 > 5 Terjadi kesalahan
5. >>>assert 3 > 5 , "Seharusnya 3 < 5" Terjadi kesalahan
Ketika baris ke 4 dijalankan akan muncul di jendela console
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
assert 3 > 5, "Seharusnya 3 < 5"
AssertionError: Seharusnya 3 < 5

Perhatikan kode program berikut:

import math
x = float(input("Enter a number: "))
assert x >= 0.0
x = math.sqrt(x)
print(x)

Program berjalan dengan sempurna jika pengguna memasukkan nilai numerik yang valid lebih dari atau
sama dengan nol; jika tidak akan menampilkan pesan kesalahan berikut:

Enter a number: 4
2.0
Enter a number: -4
Traceback (most recent call last):
File "main.py", line 4, in <module>
assert x >= 0.0
AssertionError

2.7.7. Menangkap Kesalahan AssertionError


Kesalahan AssertionError pada pogram sebelumnya dapat ditangkap dengan menambahkan blok try –
except. kemudian menampilkan beberapa pesan kesalahan sesuai dengan yang diinginkan oleh
programmer.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 78 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.8. Lab 8 Operasi Penanganan File
2.8.1. Pengenalan File dalam Python
Penanganan file adalah bagian penting dari suatu aplikasi. File adalah data yang ada pada komputer, baik
teks, gambar, angka, suara, video, dan lainny. File disimpan secara permanen di dalam media penyimpanan
seperti hardisk dan lainnya. Karena memori (RAM) komputer bersifat volatile yang data akan hilang saat
komputer dimatikan, maka dibutuhkan suatu file agar dapat dibuka, diperbaiki kembali..

Python memiliki beberapa fungsi untuk mengelola file antara lain membuat, membaca, memperbarui, dan
menghapus file. Pada Python, file dikelompokkan menjadi dua tipe:
 File Teks: File yang berisi teks. Setiap baris teks memiliki EOL (End of Line). Contoh: TXT, MD, CSV,
JSON, dsb.
 File Binary: File yang bukan teks, hanya bisa diproses oleh program tertentu yang memahami
strukturnya. Contoh: EXE, JPG, MKV, M4A, 3GP, dsb.

2.8.2. Fungsi-fungsi yang digunakan untuk operasi file


Fungsi open() digunakan untuk membuat file baru atau membuka file yang sudah ada, sesuai dengan
parameter yang telah kita tulis. Fungsi ini mengambil dua parameter yaitu nama berkas, dan mode.open()

file = open ("fileName.txt", "mode")

Terdapat beberapa mode yang bisa digunakan:


 "r" – Baca (read): Nilai default. Membuka file untuk dibaca, akan terjadi kesalahan jika file tidak
ada. "r+" digunakan untuk membaca sekaligus menulis data ke file
 "a" – Tambahkan(append) - Membuka file untuk ditambahkan, akan membuat file jika tidak ada
 "w" - Tulis - Membuka file untuk menulis, membuat file jika tidak ada
 "x" - Buat - Membuat file yang ditentukan, mengembalikan kesalahan jika file tidak ada

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 79 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 "t" – membuka file dalam mode Teks - Nilai default.
 "b" – membuka file dalam mode Binary (misalnya gambar)
Pada Windows, kadang ditambahkan "b" dibelakangnya, seperti: "rb", "wb", "ab", "r+b". Artinya untuk
membuka file dalam mode binary. Antara EOL Unix dan Windows berbeda, kadang file binary seperti JPG
dan EXE bisa rusak pada Windows kalau tidak ditambahkan akhiran "b". Tetapi di Unix/Linux tidak masalah,
tanpa harus menggunakan akhiran "b".

Fungsi read() digunakan untuk membaca semua konten isi file dan menjadikannya sebagai satu string.
Fungsi ini mengembalikan seluruh teks.

Fungsi read(size) digunakan untuk membaca hanya sebagian dari file, dengan memberikan argumen size
data integer. Jika parameter ukuran tidak ditentukan, itu membaca dan mengembalikan sampai akhir file.

Fungsi readline() digunakan untuk membaca file baris demi baris. Untuk melakukan ini bisa digunakan
struktur looping.

Fungsi readlines() akan mengembalikan daftar dengan semua baris file sebagai elemen individu (string).

Fungsi seek() digunakan untuk membaca ulang file dengan meletakkan kursor string terlebih dahulu. Jika
pada saat itu berapa byte file yang ingin kita baca dapat menggunakan fungsi tell().

Fungsi write() digunakan untuk menulis file. Metode ini mengambalikan jumlah karakter yang dituliskan ke
dalam file. Untuk menulis ke dalam file dibutuhkan mode 'w' pada saat membuka file atau mode 'a' untuk
menambah isi file dari akhir file, tanpa menghapus atau menimpa isinya terlebih dahulu.

Fungsi close() digunakan untuk menutup file. Hal ini akan menghindari hilangnya data setelah ada
perubahan dokumen. Fungsi ini juga berfungsi untuk membebaskan memori yang terpakai.

2.8.3. Membuka dan membaca isi file:


1. Buat file dengan nama file1.txt dan simpan file di drive C:

2. Buat file python openFile.py kemudian tulis kode berikut simpan di drive C:

3. Jalankan program python yang telah dibuat:

4. Buka program IDLE Python tuliskan perintah dibawah ini dan amati hasilnya

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 80 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
>> f=open("C:\\file1.txt",'r') #membuka file1.txt mode membaca
>>> f.read(13) #membaca string 13 indeks pertama
'Hello python\n'
>>> f.read()#memabaca isi file selanjutnya sampai terakhir
'selamat belajar operasi file. Belajar bahasa python memang menyenangkan \nSemoga
sukses.. Aamiin'
>>> f.seek(15) #meindahkan kursor ke posisi indeks ke 15
15
>>> f.read(15) #membaca 15 indeks data tring dari posisi indeks 15
'elamat belajar '
>>> f.tell() #mendapatkan posisi kursor pada indeks sekarang
30
>>> f.seek(0) # meindahkan kursor ke posisi indeks awal
0
>>> f.readline() #membaca satu baris pertama
'Hello python\n'
>>> f.readline() #membaca baris berikutnya
'selamat belajar operasi file. Belajar bahasa python memang menyenangkan \n'
>>> f.readlines() #membaca baris terakhir
['Semoga sukses.. Aamiin']
>>> f.readlines()#membaca baris berikutnya
[]
>>> f.close() # menutup file
>>> f.read() #membaca kembali file
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
f.read()
ValueError: I/O operation on closed file.
>>>

2.8.4. Menambahkan isi file


Buka program IDLE Python 3.8 sebagai administrator dan tulis perintah berikut:

1. >>> with open("C:\\file1.txt", 'a') as f:


2. f.write("Ini tambahan baris pertama\n")
3. f.write("Ini tambahan baris ke dua\n")
4. f.write("Ini tambahan baris ke tiga\n")
5. 27
6. 26
7. 27
8. >>> f=open('C:\\file1.txt','r')
9. >>> f.read()
10. 'Hello python\nselamat belajar operasi file. Belajar bahasa
11. python memang menyenangkan \nSemoga sukses.. Aamiin\nIni
12. tambahan baris pertama\nIni tambahan baris ke dua\nIni
13. tambahan baris ke tiga\n'
14. >>>

Analisa/Ketarangan:
 Baris 1 membuka file 1.txt di drive C dengan mode append untuk ditambahkan
 Baris 2- 3 menambahkan 3 baris string
 Baris 5 menjelaskan jumlah string yang ditambahkan pada baris pertama
 Baris 6 menjelaskan jumlah string yang ditambahkan pada baris ke dua
 Baris 7 menjelaskan jumlah string yang ditambahkan pada baris ke tiga
 Baris 8 membuka file1.txt di drive C dengan mode read untuk dibaca
 Baris 9 menampilkan seluruh isi file
 Baris 10 -13 Isi file1.txt

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 81 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.8.5. Menulis Isi file
Terdapat tiga mode yang digunakan bila ingin menulis file, yaitu: "w", "a", dan "r+". Buat program baru
bernama tulis_bio.py, kemudian ikuti kodenya seperti ini.
1. print "Selamat datang di Program Biodata"
2. print "================================="
3.
4. # Ambil input dari user
5. nama = raw_input("Nama: ")
6. umur = input("Umur: ")
7. alamat = raw_input("Alamat: ")
8.
9. # format teks
10. teks = "Nama: {}\nUmur: {}\nAlamat: {}".format(nama, umur,
11. alamat)
12.
13. # buka file untuk ditulis
14. file_bio = open("biodata.txt", "w")
15.
16. # tulis teks ke file
17. file_bio.write(teks)
18.
19. # tutup file
file_bio.close()

Apa bila file itu sudah ada, maka akan ditimpa atau ditulis ulang dengan yang baru. Ada dua method yang
bisa kita gunakan untuk menulis file
write(): parameternya teks (string),akan menulis semua teks
writelines(): parameternya teks dalam bentuk list, akan menulis per baris.

teks = "ini sebuah teks"


teks_list ["apel", "mangga", "anggur"]
f = open("file.txt", "w")
f.write(teks)
f.writelines(teks_list)
f.close()

2.8.6. Membaca dan menulis file menggunakan mode ‘r+’


Saat kita ingin membaca dan menulis file bersamaan, kita bisa saja membuat dua objek file seperti ini:

file_baca = open("nama_file.txt", "r")


file_tulis = open("nama_file.txt", "w")

Namun, sepertinya akan memakan banyak memori, karen kita membuat banyak objek. Maka cara terbaik
yang digunakan adalah menggunakan mode "r+" membaca sekaligus menulis.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 82 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
1. print "Selamat datang di Program Biodata"
2. print "================================="
3.
4. # buka file untuk dibaca dan ditulis
5. file_bio = open("biodata.txt", "r+")
6.
7. teks = file_bio.read()
8.
9. # cetak isi file
10. print teks
11.
12. # Ambil input dari user
13. nama = raw_input("Nama: ")
14. umur = input("Umur: ")
15. alamat = raw_input("Alamat: ")
16.
17. # format teks
18. teks = "\nNama: {}\nUmur: {}\nAlamat: {}\n---".format(nama,
19. umur, alamat)
20.
21. # tulis teks ke file
22. file_bio.write(teks)
23.
24. # tutup file
file_bio.close()

Sifat dari mode "r+" sama seperti "a", dia tidak menindih data yang sudah ada

2.8.7. Menggunakan Exception untuk menangani operasi file


Ada kalanya saat membaca file, filenyatidak ditemukan maka biasanya akan terjadi IOerror.

IOError: [Errno 2] No such file or directory: 'file.txt'

Hal ini, bisa diatasi dengan menggunakan exception.

try:
f = open("file.txt","r")
except IOError as err:
print "Terjadi kesalahan: {}".format(err)

Maka, bila error…akan menghasilkan output:

Terjadi kesalahan: [Errno 2] No such file or directory: 'file.txt'

2.8.8. Mengoperasikan file CSV


a. Fungsi-fungsi operasi File CSV
Format data CSV (Comma Separated Values) adalah format impor dan ekspor yang paling umum untuk
spreadsheet dan database. Tidak ada “standar CSV”, jadi formatnya secara operasional ditentukan oleh
banyak aplikasi yang membaca dan menulisnya. Python menyediakan suatu modul csv yang
mengimplementasikan kelas untuk membaca dan menulis data tabular dalam format CSV. Fungsi yang
dapat digunakan adalah:
 csv.reader(csvfile, dialect='excel', **fmtparams)
 csv.writer(csvfile, dialect='excel', **fmtparams)
 class csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 83 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 class csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
Dokumentasi operasi file CSV bisa diakses melalui: https://docs.python.org/2/library/csv.html

b. Menulis file CSV menggunakan csv.DictWriter()


Buat file CSV menggunakan spreed sheet dan simpan dengan nama coba.csv

Tuliskan program berikut:


import csv
with open('coba.csv', 'w') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
csvfile.close()

Buka file CSV, maka akan ditampilkan isi file.

c. Membaca File CSV Mneggunakan fungsi csv.DictReader()


Tulislah kode program seperti dibawah ini:
import csv
with open(‘coba.csv’) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(‘{:12}{:6}’.format(row[‘first_name’], row[‘last_name’]))

Tampilan Keluaran porgam:


Baked Beans
Lovely Spam
Wonderful Spam

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 84 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2.8.9. Tugas.
Buatlah program yang dapat menuliskan string ke dalam file, membaca isi file yang telah ditulis dan menambahkan isi
file, menuliskan baris list ke file. Gunakan penanganan kesalahan terhadap kemungkinan kesalahan yang dapat
ditimbulkan seperti ketika file tidak ditemukan, atau kesalahan file sudah terbuka, hak akses file hanya untuk
administrator (PermissionError) dan lain-lain. Mengvalidasi bahwa file dapat dibaca, dapat ditulis.

2.9. Lab 9 Pemrograman Obyek


Tujuan:
1. Memahami perbedaan pendekatan prosedural dan obyek
2. Menerapkan enkapsulasi class pada python
3. Menerapkan pewarisan class pada python
4. Menerapkan relasi class pada python

2.9.1. Pendekatan Pemrograman Prosedural


Dalam pendekatan prosedural, dimungkinkan membedakan dua dimensi yang berbeda dan benar-benar
terpisah, Yaitu dimensi data, dan dimensi proses/Operasi/kode. Dimensi data diisi dengan variabel-variabel
yang berbeda jenisnya. Sedangkan dimensi Proses/Operasi/kode dikelompokkan dalam modul dan fungsi.
Fungsi dapat menggunakan data, tetapi tidak sebaliknya. Selain itu, fungsi dapat menyalahgunakan data,
yaitu menggunakan nilai dengan cara yang tidak sah (misalnya, ketika fungsi sinus mendapatkan saldo
rekening bank sebagai parameternya).
2.9.2. Pendekatan Pemrograman Berorientasi Obyek
Pendekatan objek menyarankan cara berpikir yang sama sekali berbeda. Dimensi Data dan Operasi diapit
atau dikemas secara bersama dalam dimensi sama dan dibagi menjadi beberapa kelas. Beberapa istilah
yang digunakan dalam pemrograman obyek yaitu:
 Class: Prototipe yang ditentukan pengguna untuk objek yang mendefinisikan seperangkat atribut yang
menjadi ciri objek kelas apa pun. Atribut adalah data anggota (variabel kelas dan variabel instance) dan
metode, diakses melalui notasi titik.
 Class variable: Variabel kelas didefinisikan dalam kelas tapi di luar metode kelas. Variabel kelas tidak
digunakan sesering variabel contoh.
 Data member: Variabel kelas atau variabel contoh yang menyimpan data yang terkait dengan kelas dan
objeknya.
 Function overloading: Penugasan lebih dari satu perilaku ke fungsi tertentu. Operasi yang dilakukan
bervariasi menurut jenis objek atau argumen yang terlibat.
 Instance variable: Variabel yang didefinisikan di dalam sebuah metode dan hanya dimiliki oleh instance
kelas saat ini.
 Inheritance: Pengalihan karakteristik kelas ke kelas lain yang berasal darinya.
 Instantiation: Penciptaan sebuah instance dari sebuah kelas.
 Method: Jenis fungsi khusus yang didefinisikan dalam definisi kelas.
 Object: Contoh unik dari struktur data yang didefinisikan oleh kelasnya. Objek terdiri dari kedua anggota
data (variabel kelas dan variabel instance) dan metode.
 Operator overloading: Penugasan lebih dari satu fungsi ke operator tertentu.

2.9.3. Mengamati Implementasi Program Pendekatan Prosedur dan Obyek

Gambar berikut menjelaskan desain modular pada pendekatan pemrograman prosedur dan desain class
diagram pada pendekatan obyek untuk menghitung luas segi empat

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 85 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
(a) (b)
Gambar Desain modular dan class diagram

Kode program Implementasi Pendekatan pemrograman prosedural


1 def inputData(judul):
2 print(judul)
3 p=float(input("masukkan panjang: "))
4 l=float(input("masukkan lebar: "))
5 prosesData(p,l)
6
7 def prosesData(p1,l1):
8 L=p1*l1
9 outputData(L,p1,l1)
10
11 def outputData(L1,p2,l2):
12 print('Luas segiempat dengan p= {} dan l= {} adalah:{} '.format(p2, l2, L1))
13
14 inputData("Menghitung luas persegi panjang dengan pemrograman prosedural")
Kode program Implementasi Pendekatan pemrograman obyek
1 class SegiEmpat():
2 def inputData(self):
3 self.p=float(input("masukkan panjang: "))
4 self.l=float(input("masukkan lebar: "))
5
6 def prosesData(self):
7 self.L = self.p * self.l
8
9 def outputData(self):
10 print("Menghitung luas persegi panjang dengan pemrograman obyek")
11 print('Luas segiempat dengan p={} dan l={} adalah: {} '.format(self.p,
12 self.l, self.L))
13
14 s4=SegiEmpat()
15 s4.inputData()
16 s4.prosesData()
17 s4.outputData()

2.9.4. Menerapkan Enkapsulasi class dalam Python

a. Membuat class dan Object


Statement class digunakan untuk membuat definisi kelas baru. Nama kelas ditulis setelah kata kunci class
kemudian diikuti oleh titik dua.

class TheSimplestClassName:'Optional class documentation string' class_suite


untuk membuat object dapat dilakukan dengan format sebagai berikut:

myFirstObject = TheSimplestClassName()

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 86 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Perhatikan Contoh kode program dibawah ini:
1. #Demonstrasi membuat class Sepada dan object sepeda
2. class Sepeda:
3. gear = 5
4. sepeda = Sepeda()
5. print(sepeda.gear)

Analisa/Keterangan:
 Baris 2: instruksi untuk membuat class Sepeda
 Baris 3: instruksi untuk membuat Atribut/variabel gear dan memberikan nilai dengan 5
 Baris 4: membuat obyek: sepeda, dengan mendefinisikan variabel sepeda kepada class Sepeda(),
pengguna dapat mengakses atribut atau method yang ada di dalam class Sepeda().
 Baris 6 mencetak isi atribut/variabel gear, menggunakan operator (.) untuk mengakses atribut.

b. Menambahkan construktur dengan fungsi __init__()


Setiap kali suatu class dipanggil, maka program akan mengeksekusi method/fungsi __init__() pertama kali.
Fungsi ini berperan sebagai constructor. Tujuan umum pengggunaan konstruktor adalah untuk
membangun objek baru. Konstruktor harus mengetahui segalanya tentang struktur objek, dan harus
melakukan semua inisialisasi yang diperlukan. Pengguna dapat memanfaatkan __init__() untuk
memberikan nilai suatu atribut ketika class dipanggil atau operasi lain.
1. #Demonstrasi Menambahkan fungsi __init__()
2. Class Sepeda:
3. def __init__(self, gear, speed):
4. self.gear = gear
5. self.speed = speed
6.
7. sepeda = Sepeda(2, 50)
8. print(sepeda.gear)
9. print(sepeda.speed)

Hasil Keluaran setelah program dijalankan:


Gear: 2
Kecepatan: 50

Analisa Keterangan:
Baris 3-5: membuat fungsi __init__() sebagai constructor dengan parameter self, gear dan speed.
Constructor harus memiliki setidaknya satu parameter. Parameter digunakan untuk mewakili objek yang
baru dibuat, memanipulasi objek, dan memperkayanya dengan properti yang diperlukan. Parameter self
merupakan parameter pertama yang ada di dalam method dan digunakan untuk mengakses variabel yang
ada di dalam class, dalam penamaan tidak selalu harus self dan bisa diubah dengan nama yang lain.

c. Memanggil Method di dalam Object dan Class Pada Python


Pada contoh sebelumnya, hanya memanggil dan mengassign atribut pada class. Pengguna juga bisa
memanggil method di dalam object.
1. #Demonstrasi Memanggil Method di dalam Object dan Class
2. class Sepeda:
3. def __init__(self, gear, speed):
4. self.gear = gear
5. self.speed = speed
6. def melaju(self):
7. print("Sepeda sedang melaju dengan Kecepatan saat ini: ",
8. str(self.speed))
9. sepeda = Sepeda(2, 50)

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 87 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
10. print(sepeda.gear)
11. sepeda.melaju()

Hasil Keluaran setelah program dijalankan:


2
Sepeda sedang melaju dengan Kecepatan saat ini: 50

Analisa/Keterangan:
Baris 6-8: membuat fungsi baru melaju, di mana parameternya di-assign dengan self.
Baris ke 11: membuat pemanggilan method menggunakan object sepeda.

d. Mengubah Properti di dalam Class dan Object Python


Pengguna dapat mengubah dan menghapus properti di dalam object. Misalnya sebelumnya isi dari variabel
gear= 5. Hal ini dapat dilakukan dengan mengubah valuenya selama variabel gear bukan konstanta.

1. #Demonstrasi Mengubah Properti di dalam Class dan Object Python


2. class Sepeda:
3. def __init__(self, speed):
4. self.gear = 5
5. self.speed = speed
6. def melaju(self):
7. print("Sepeda sedang melaju dengan Kecepatan saat ini: ",
8. str(self.speed))
9. sepeda = Sepeda(50)
10. sepeda.gear=10
11. print(sepeda.gear)
12. sepeda.melaju()

Analisa/Keterangan:
Pada baris ke-9 terdapat kode yang mengassign atribut gear menjadi angka 10, dengan demikian atribut
gear yang sebelumnya bernilai 5, akan menjadi 10.

e. Cara Menghapus Properti Object


Untuk menghapus sebuah properti di dalam Object, dapat digunakan keyword del.

del sepeda.gear
del sepeda

f. Memberikan Nilai Kosong pada Class


Secara default, class tidak boleh kosong. ika terpaksa harus mengkosongkan sebuah class, dapat digunakan
instruksi/keyword pass.
Contoh:
class Sepeda:
pass

g. Penggunaan variabe yang diawali tanda garis bawah (__)


Perhatikan kode program dibawah ini:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 88 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Keluaran program adalah:
[1, 2, 3]

Variabel stackList berjenis List disi dengan data [1,2,3] dan ditampilkan melalui akses object
stackObject.stackList. Program dibawah ini menggunakan variabel __stackList[ ] yang hanya dapat diakses
didalam kelas.

Keluaran program :
Atribute error:'Stack' object tidak mempunyai atribut '__stackList'

Keterangan:
Ketika setiap komponen kelas memiliki nama yang dimulai dengan dua garis bawah (__), ini menjadi
bersifat pribadi (lokal). Hal ini berarti bahwa komponen itu hanya dapat diakses dari dalam kelas. Pengguna
tidak dapat mengaksesnya dari luar. Beginilah cara Python mengimplementasikan konsep enkapsulasi.

Untuk dapat menampilkan isi variabel list __stackList dapat digunakan fungsi seperti contoh berikut:

Keluaran Program:
Isi variabel List: [1, 2, 3]
None

Keterangan:
Untuk menampilkan isi list seperti diatas dapat pula dilakukan dengan memodifikasi program diatas dengan
menghilangkan baris enam dan menggantinya dengan perintah return self.__stackList dan baris
sembilan dengan perintah print("Isi variabel List: ",stackObject.tampilList())

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 89 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
h. Menerapkan variabel instance
Secara umum, sebuah kelas dapat dilengkapi dengan dua jenis data untuk membentuk properti kelas, yaitu
variabel kelas dan variabel instance. Properti kelas semacam ini ada jika dan hanya jika secara eksplisit
dibuat dan ditambahkan ke suatu objek. Hal itu dapat dilakukan selama inisialisasi objek, yang dilakukan
oleh konstruktor. Variabel instance menunjukkan bahwa mereka terkait erat dengan objek (yang
merupakan instance kelas), bukan ke kelas itu sendiri.

1 class ExampleClass:
2 def __init__(self, val = 1):
3 self.first = val
4 def setSecond(self, val):
5 self.second = val
6 exampleObject1 = ExampleClass()
7 exampleObject2 = ExampleClass(2)
8 exampleObject2.setSecond(3)
9 exampleObject3 = ExampleClass(4)
10 exampleObject3.third = 5
11 print(exampleObject1.__dict__)
12 print(exampleObject2.__dict__)
13 print(exampleObject3.__dict__)

Keluaran program:
{'first': 1}
{'first': 2, 'second': 3}
{'first': 4, 'third': 5}

Analisa/Keterangan:
 ExampleClass memiliki konstruktor, tanpa syarat membuat variabel instan first, dan menetapkannya
dengan nilai yang diteruskan melalui argumen pertama (dari perspektif pengguna kelas) atau argumen
kedua (dari perspektif konstruktor)
 nilai default dari parameter =1. Trik apa pun dapat dilakukan untuk parameter, fungsi reguler dan
metode juga.
 Kelas juga memiliki metode yang membuat variabel instan lain, bernama second;
 Terdapat tiga objek dari satu kelas ExampleClass yang sama tetapi memiliki data berbeda:
exampleObject1 hanya memiliki properti bernama first;
exampleObject2 memiliki dua properti: first dan second;
exampleObject3 diperkaya dengan properti thirddi luar kode class. Hal ini
dimungkinkan dan sepenuhnya diizinkan
 Saat obyek Python dibuat, diberikan sekumpulan kecil properti dan metode yang telah ditentukan
sebelumnya. Setiap objek memilikinya, apakah Anda menginginkannya atau tidak. Salah satunya
adalah variabel bernama __dict__ (variabel jenis kamus).

Melalui program diatas, dengan merubah baris ke-3 dengan self.__first=val, baris ke-5 dengan
self.__second = val, baris ke-10 dengan exampleObject3.__third = 5 dan baris ke 14 dengan
kode program berikut:

Keluaran program adalah sebagai berikut:


BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 90 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
i. Penggunaan Variabel kelas
Variabel kelas adalah properti yang hanya ada dalam satu salinan dan disimpan di luar objek. Tidak ada
variabel instan jika tidak ada objek di kelas. Variabel kelas ada dalam satu salinan meskipun tidak ada
objek di kelas.

Perhatikan kode di dbawah ini:

Keluaran program adalah:

Analisa/keterangan:
 Baris tiga Menetapkan variabel bernama counter ke 0; menginisialisasi variabel di dalam kelas
tetapi di luar salah satu metodenya, membuatnya menjadi variabel kelas;
 mengakses variabel kelas sama dengan mengakses atribut instance, terlihat di badan konstruktor.
 Konstruktor menambah variabel satu per satu dan variabel menghitung semua objek yang dibuat.
 variabel kelas tidak ditampilkan dalam __dict__ objek (karena variabel kelas bukan bagian dari
objek) tetapi Anda selalu dapat mencoba melihat ke variabel dengan nama yang sama, tetapi di
tingkat kelas.
 variabel kelas selalu menyajikan nilai yang sama di semua contoh kelas (objek) dan mengubah
nama variabel kelas memiliki efek yang sama

j. Inner life kelas dan obyek


Setiap kelas dan objek Python dilengkapi dengan seperangkat atribut yang dapat digunakan untuk
memeriksa kemampuannya. Properti atau atribut itu antara lain adalah __dict__, __name__,
__module__ dan __base__. Program berikut menggunakan properti __dict__:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 91 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Keluaran Program:
{'var': 2}
{'__module__': '__main__', 'varia': 1, '__init__': <function Classy.__init__ at
0x7fda52e64320>, 'method': <function Classy.method at 0x7fda52e643b0>,
'_Classy__hidden': <function Classy.__hidden at 0x7fda52e64440>, '__dict__':
<attribute '__dict__' of 'Classy' objects>, '__weakref__': <attribute
'__weakref__' of 'Classy' objects>, '__doc__': None}

Perhatikan kode program berikut yang menggunakan atribute __name__ yang berisi nama kelas.

Keluaran program:
Classy
Classy

Perhatikan kode program berikut yang menggunakan atribute __module_ yang menjelaskan file
tersebut sedang dijalankan.

Keluaran program:
__main__
__main__

Modul __main__ sebenarnya bukan modul, tetapi file tersebut sedang dijalankan. Perhatikan kode
program berikut yang menggunakan atribute __bases__. __bases__ adalah tupel yang berisi kelas
(bukan nama kelas) yang merupakan superclass langsung untuk kelas tersebut. Urutannya sama dengan
yang digunakan di dalam definisi kelas.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 92 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Keluaran Program:
(objek)
(objek)
(SuperOne SuperTwo)

Analisa/keterangan:
 Baris 2 – 5 mendekalrasikan dua buah class yaitu SuperOne dan SuperTwo masing-masing
diinisialisasi dengan kosong menggunakan instruksi pass
 Baris 6 -7 mendekalrasikan class sub yang merupakan turunan dari class SuperOne dan SuperTwo
 Baris 8- 12 mendefinisikan fungsi printbases() yang mengakses atribute __bases__ dan __name__

2.9.5. Pewarisan (inheritance) dalam Python

a. Method setter getter dalam python


Ketika Python membutuhkan kelas atau objek untuk disajikan sebagai string (dengan meletakkan objek
sebagai argumen dalam pemanggilan fungsi print () sesuai dengan kondisi ini), ia mencoba untuk
memanggil metode bernama __str __ () dari objek dan menggunakan string itu kembali.
Perhatikan kode program berikut:

Keluaran program:
Sun in Milky Way

Analisa/Keterangan:
 method __init__(self, name, galaxy) adalah konstruktor, dijalankan saat obyek dibuat.
 Konstruktur juga berfungsi sebagai method setter yang memberikan nilai variabel instance name dan
galaxy dengan string parameter yang diterimanya, saat obyek dibuat.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 93 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 Method default __str __ () ini akan mengembalikan string name dan galaxy. __str __ () berfungsi
sebagai method getter. Pengguna dapat mengubahnya dengan menentukan nama method sendiri,
seperti tampil data() untuk mengambil dan menampilkan variabel instance.
 Untuk memberikan nilai variabel instance melalui variabel masukan dari keyboard dapat
menenetapkan fungsi sebagai berikut
def setData(self):
self.name=input("masukkan nama bintang: ")
self.galaxy=input("masukkan nama galaksi: ")

b. Menerapkan pewarisan pada python


Pewarisan adalah praktik umum (dalam pemrograman objek) untuk meneruskan atribut dan metode dari
superclass (ditentukan dan sudah ada) ke kelas yang baru dibuat, yang disebut subclass. Pewarisan adalah
cara membangun kelas baru, bukan dari awal, tetapi dengan menggunakan ciri-ciri yang sudah ditentukan.
Perhatikan Kode program dan struktur class dibawah ini

Vehicle

LandVehicle

TrackedVehicle

Keluaran program adalah:


True False False
True True False
True True True

Analisa keterangan:
 Class Vehicle adalah super class yang memiliki turunan sub class LandVehicle. Class LandVehicle
mempunyai turunan subclass TrackedVehicle
 issubclass (ClassOne, ClassTwo) adalah Fungsi yang akan mengembalikan True jika
ClassOne adalah subkelas dari ClassTwo atau ClassTwo = ClassOne dan sebaliknya False
 Terdapat dua loop bersarang untuk memeriksa semua kemungkinan pasangan kelas terurut,
mencetak hasil pemeriksaan untuk menentukan apakah pasangan cocok dengan hubungan subclass-
superclass.

Objek adalah inkarnasi dari sebuah kelas. Objek dan class memiliki karakteristik prilaku tertentu. Python
menyediakan fungsi isinstance() yang dapat digunakan untuk mengecek apakah suatu obyek itu instansiasi
dari kelas tertentu atau tidak. Perhatikan kode program berikut:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 94 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Keluaran program adalah:
True False False
True True False
True True True

Keterangan:
 isinstance (objectName, ClassName), Fungsi yang mengembalikan nilai True jika suatu
objekName adalah instansiasi dari dari ClassName kelas, dan False jika sebaliknya.
 Menjadi instance kelas berarti bahwa objek (kue) telah disiapkan menggunakan resep yang terdapat
di kelas atau salah satu superclass-nya.
 Python Juga menyediakan operator ‘is’, misal: objectOne is objectTwo. Operator is memeriksa
apakah dua variabel (objectOne dan objectTwo) merujuk ke objek yang sama.
 Jangan lupa bahwa variabel tidak menyimpan objek itu sendiri, tetapi hanya pegangan yang
menunjuk ke memori internal Python.
 Hasil keluaran program dapat dipetakan berdasarkan nama obyek dan classnya berikut:

c. Modifier properties pada Python


Berbagai bahasa berorientasi objek seperti C++, Java, Python mengontrol modifikasi akses yang digunakan
untuk membatasi akses ke variabel dan metode kelas. Python menggunakan simbol '_' untuk menentukan
kontrol akses untuk anggota data tertentu atau fungsi anggota kelas. Penentu akses di Python memiliki
peran penting dalam mengamankan data dari akses yang tidak sah dan mencegahnya dieksploitasi. Kelas
di Python juga memiliki tiga jenis pengubah akses:
 Pengubah Akses Publik: Anggota kelas yang dideklarasikan publik mudah diakses dari seluruh bagian
program. Semua data dan fungsi anggota kelas bersifat publik secara default.

 Pengubah Akses Terproteksi: Anggota kelas yang dideklarasikan hanya dapat diakses oleh kelas
turunannya. Nama properti (variabel dan fungsi) kelas diawali dengan manmbahkan simbol garis
bawah tunggal '_'.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 95 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 Pengubah Akses Pribadi: Anggota kelas hanya dapat diakses di dalam kelas, merupakan pengubah
akses yang paling aman. Nama properti (variabel dan fungsi) kelas diawali dengan manmbahkan
simbol garis bawah ganda '__'.

Perhatikan rancangan struktur class berikut:

Perhatikan kode program berikut:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 96 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Keluaran pogram adalah:
Public Data Member: public
Protected Data Member: protected
Private Data Member: private
Object is accessing protected member: protected
Traceback (most recent call last):
File "F:/Dokumen 2021/Diklat
2021/FundamentalPython/project/ModifierAccess/Main.py", line 20, in <module>
print(obj.__var3)
AttributeError: 'Sub' object has no attribute '__var3'

d. Polimorphism
polimorfisme merupakan salah satu konsep dalam OOP yang memungkinkan pengguna membuat banyak
bentuk dari satu object. Polymorphism diwujudkan dengan penggunaan lebih dari satu method yang
memiliki nama sama dan tujuan yang berbeda. Berikut contoh implementasinya:

class Car:
def fuel(self):
return 'gas'
class Honda(Car):
pass
class Tesla(Car):
def fuel(self):
return 'electricity'
def get_fuel(car):
print(car.fuel())
get_fuel(Tesla())
get_fuel(Honda())

Keluaran Program adalah:


>>> 'electricity'
>>> 'gas

Keterangan:
Fungsi fuel(self) pada class Car mengembalikan string gas sedangkan pada class Tesla mengembalikan
string 'electricity'. Satu fungsi yang sama digunakan pada class dan berbeda dan meiliki tujuan yang
berbeda

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 97 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
e. Studi kasus Luas bangun datar
Kasus ini akan menyelesaikan perhitungan luas bangun datar segi tiga dan segi empat dengan
menggunakan konsep class dan obyek. Dalam kasus ini untuk obyek segitiga diinisialisasi secara langsung
menggunakan kode program dan obyek segiEmpat bentuk list yang diinisialisasi menggunakan variabel
masukan dari keyboard. Diagram class, modifier properties, tampilan keluaran program diperlihatkan
dalam gambar.

Kode program super class bangunDatar

Kode program sub class SegiTiga

Kode program Subclass SegiEmpat

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 98 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Kode program utama:

f. Hubungan antar class


Object berkomunikasi dengan object lainnya menggunakan fungsi dan services yang disediakannya.
Terdapat tiga bentuk hubungan antar obyek/class yaitu: asosiasi, agregasi dan kompoisisi.

Asosiasi adalah hubungan antara dua class terpisah yang terbentuk melalui object-nya. Asosiasi bisa berupa
one-to-one, one-to-many, many-to-one, many-to-many. Komposisi dan agregasi adalah dua bentuk dari
asosiasi

Agregasi adalah bentuk khusus dari asosiasi yang merepresentasikan relasi Has-A. Agregasi adalah
unidirectional asosiasi atau relasi satu arah. Misal program keahlian dapat memiliki siswa tetapi tidak
sebaliknya. Pada agregasi, kedua entries dapat berdiri sendiri, yang artinya mengakhiri/perubahan satu
entitas tidak akan memengaruhi entitas lainnya.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 99 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Komposisi membatasi bentuk dari agregasi dimana dua entitas berdiri sendiri terhadap entitas lainnya.
Komposisi merepresentasikan part-of relasi. Kedua entitas/class bersifat dependent terhadap entitas
lainnya. Ketika terdapat komposisi antara dua entitas, maka komposisi object tidak bisa exist tanpa entitas
lainnya.

Perhatikan contoh relasi asosiasi berikut:

Keluaran Program:

Perhatikan contoh kode program relasi agregasi berikut:

Keluaran Program adalah:

Total Gaji: 190000

Keterangan:
Relasi di agregasi didefinisikan sebagai has a. obyek Employee direlasikan dengan obyek salary dengan
relasi Has-a (agregasi). Hal ini dilakukan dengan passing obyek salary saat pembuatan obyek Employee
(melalui pemangilan fungsi __init__(konstruktor). Obyek salary dan obyek employee adalah bersifat

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 100 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
invidually independent. Obyek salary tidak tergantung dari employee. Relasi obyek salary dan emp
adalah uni direction satu arah dan tidak berlaku sebaliknya

Keluaran Program adalah:


190000

Keterangan:
Relasi di komposisi didefinisikan sebagai relasi part of. obyek_salary adalah adalah part of dari emplayee.
Jika obyek emp dihapus maka obyek salary terhapus otomatis. salary obyek tergantung dari class empleyee
begitu sebaliknya (interdependent)

Tugas
1. Buatlah program untuk menyelesaikan perhitungan Volume bangun ruang (Kerucut, Bola, Limas)
dengan struktur class seperti gambar berikut:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 101 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2. Buatlah program dengan pendekatan obyek yang mengimplementasikan enkasulasi, inheritance,
polimorfism dan relasi class. Misal: untuk mengelola data Guru dan Siswa dengan ketentuan sebagai
berikut: (atau topik yang lain)
 Buatlah tiga buah class: Orang (Nama) Guru(NIP, Gaji), Siswa (NIS, Nil1,Nil2) tentukan modifier
atribut-atributnya.
 Buatlah fungsi yang dapat menampilkan jumlah pegawai, yang dideteksi dari jumlah objek yang
dibuat.
 Buatlah fungsi yang dapat menampilkan informasi data Orang(nama, alamat) Guru(NIP, Gaji)
Siswa(NIS,Nil1,Nil2)
 Program juga dapat Menampilkan Informasi rata-rata gaji Guru, rata-rata nilai setiap siswa. Jumlah
orang, jumlah guru dan jumlah siswa.
 Relasikan class guru dan siswa dan tampilkan data semua guru beserta nilai peserta didiknya.
jumlah data guru minimal dan dengan jumlah peserta didiknya minimal dua.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 102 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
3. BAB III SINGGLE BOARD COMPUTER (SBC) RASPBERRY PI4

SINGGLE BOARD COMPUTER (SBC) RASPBERRY PI4

3.1. Lab 10 Identifikasi SBC Raspberry Pi4

3.1.1. Tujuan:
1. Memahami fungsi-fungsi dalam raspberry Pi
2. Menganalisis komponen-komponen utama dalam raspberry Pi
3. Mengevaluasi perbedaan raspberry Pi dengan motherboard

3.1.2. Pendahuluan:
Raspberry Pi, sering disingkat dengan nama Raspi, adalah komputer papan tunggal (single-board circuit;
SBC) yang seukuran dengan kartu kredit yang dapat digunakan untuk menjalankan program perkantoran,
permainan komputer, dan sebagai pemutar media hingga video beresousi tinggi. Raspberry Pi
dikembangkan oleh yayasan nirlaba, Rasberry Pi Foundation, yang digawangi sejumlah pengembang dan
ahli komputer dari Universitas Cambridge, Inggris.

Raspberry Pi memiliki website di www.raspberrypi.org yang memiliki cukup banyak informasi tentang
produk, aksesoris sampai dengan contoh proyek pembelajaran yang dapat dikerjakan dengan Raspberry Pi.
Berikut ini adalah tampilan website Raspberry Pi.

Produk dan aksesoris Raspberry Pi dapat dilihat di website ini juga, ada banyak jenis Raspberry Pi yang
dapat dipilih sesuai dengan kebutuhan. Aksesoris tambahan seperti Sense Hat, I/O Board Computer
Module, Touch Display sampai dengan Case tersedia untuk melengkapi Raspberry Pi dalam memenuhi
keiinginan pengguna untuk merealisasikan ide kreatif dengan komputer mini ini.

Gambar 3. 1 Jenis Raspsberry Pi

3.1.3. Alat dan Bahan:


SBC Raspberry Pi 4 Model B

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 103 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
3.1.4. Rangkaian Kerja

Gambar 3. 2 Raspberry Pi 4

Gambar 3. 3 Peralatan Pendukung Raspberry Pi


3.1.5. Tugas
1. Amati SBC Raspbery Pi4 yang ada dalam teaching Aid Universal IOT System
2. Indentifikasi komponen-komponen dan perangkat-perangkat yang terhubung.

3.2. Lab 11 Instalasi Sistem Operasi

3.2.1. Tujuan:
1. Memahami sistem operasi dalam raspberry Pi
2. Membuat USB bootable
3. Merakit raspberry Pi dengan perangkat pendukung

3.2.2. Sistem Operasi Raspbian


Raspbian adalah sistem operasi "resmi" dari Raspberry Pi dan oleh karena itu kebanyakan orang ingin
memulai dari Raspbian. Raspbian adalah versi Linux yang dibangun khusus untuk Raspberry Pi, berbasis
Debian yang dioptimalkan untuk perangkat keras Raspberry Pi. Raspbian tidak berafiliasi dengan Raspberry
Pi Foundation. Raspbian diciptakan oleh tim pengembang kecil yang merupakan penggemar perangkat
keras Raspberry Pi, yang berdedikasi untuk tujuan pendidikan Raspberry Pi Foundation dan Proyek Debian.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 104 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Raspbian dilengkapi dengan semua perangkat lunak yang Anda perlukan untuk setiap tugas dasar dengan
komputer. Anda akan mendapatkan LibreOffice sebagai perangkat perkantoran (office suite), browser web,
program email, dan beberapa alat untuk mengajarkan pemrograman kepada anak-anak (scratch) dan orang
dewasa (python, java, c/c++). Bahkan didalamnya terdapat permainan Minecraft.

Raspbian adalah tulang punggung bagi hampir semua proyek do-it-yourself (DIY) yang ada di luar sana, jadi
jika Anda ingin membuat sesuatu, sebaiknya Anda mulai dari Raspbian. Karena sistem operasi ini sangat
banyak yang menggunakan, juga mudah menemukan panduan dan tips pemecahan masalah. Namun, jika
Anda baru mengenal Linux, Raspbian akan sedikit membingungkan bagi Anda. “Rpi Beginners wiki” atau
“Raspberry Pi Tutorials Channel” merupakan titik awal belajar yang disarankan, begitu juga berbagai
sumber resmi di website Raspberry Pi. Referensi tersebut akan memandu Anda melalui semua hal yang
Anda perlukan untuk menggunakan Raspbian.

Gambar 3. 4 Sistem Operasi Raspberry Pi

New Out Of the Box Software (NOOBS) adalah perangkat lunak ini akan membantu Anda memulai
beroperasi dengan Raspberry Pi dengan mudah. Di dalamnya mencakup banyak sistem operasi yang
beraneka ragam. Yang harus Anda pilih tentu saja bergantung pada keperluan Anda. Inilah cara membuat
pilihan yang tepat. NOOBS adalah cara yang bagus untuk menguji sistem operasi baru dan mengenal
Raspberry Pi Anda, jadi bermanfaat untuk sedikit bereksperimen dengan mereka semua. Jika Anda mencari
pilihan lain, ada satu ton proyek siap pakai lainnya yang tidak termasuk dalam NOOBS yang layak untuk
dilihat.

Gambar 3. 5 Sistem Operasi Raspberry Pi

NOOBS adalah installer sistem operasi yang mudah yang berisi Raspbian. Ini juga menyediakan pilihan
sistem operasi alternatif yang kemudian dapat diunduh dari internet dan kemudian dipasang. NOOBS Lite
berisi installer sistem operasi yang sama tanpa pre-loaded Raspbian. Ini menyediakan menu pilihan sistem
operasi yang sama yang memungkinkan Raspbian dan gambar lainnya untuk didownload dan diinstal.

Sistem operasi yang direkomendasikan untuk digunakan pada Raspberry Pi disebut Raspbian. Raspbian
adalah versi GNU / Linux yang dirancang khusus untuk bekerja dengan baik di hardware Raspberry Pi. Anda
memiliki beberapa pilihan ketika datang untuk mendapatkan memegang salinan Raspbian.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 105 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Gambar 3. 5 Jenis Sistem Operasi Raspberry Pi

3.2.3. Langkah kerja:


a. Format Kartu micro-SD.
1. Kunjungi website SD Association dan download SD Formatter 4.0 (untuk Windows atau Mac) pada
link berikut: https://www.sdcard.org/downloads/
2. Ikuti petunjuk untuk menginstal perangkat lunak.
3. Masukkan kartu micro-SD Anda ke komputer kemudian perhatikan huruf drive dimana kartu micro-
SD dialokasikan untuk itu, misalnya F:/.
4. Pada SD Formatter, pilih huruf drive untuk kartu micro-SD dan lakukan
format.
b. Instalasi Raspbian dengan NOOBS
1. NOOBS singkatan New Out of Box Software, dan jika Anda belum pernah bermainmain dengan
GNU/Linux sebelumnya, maka disarankan Anda memulai dengan NOOBS.
2. Kunjungi halaman resmi Raspberry Pi Downloads. https://www.raspberrypi.org/downloads/
3. Klik pada NOOBS.
4. Klik pada tombol Download ZIP di bawah ‘NOOBS (offline dan install via jaringan)’, dan pilih folder
untuk menyimpannya.
5. Ekstrak file dari ZIP.
6. Setelah kartu SD Anda telah diformat, copy semua file dalam folder NOOBS yang telah diekstrak ke
drive kartu micro-SD.
7. File yang diperlukan kemudian akan ditransfer ke kartu SD Anda.
8. Ketika proses ini selesai, keluarkan kartu SD dengan aman (safely remove) dan masukkan ke
Raspberry Pi.
c. Hubungkan Raspberry Pi 4 dengan Perangkat Penghubung
1. Hubungkan perangkat pendukung dengan Raspberry Pi 4 seperti Gambar 2.2

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 106 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Gambar 3. 6 Hubungan Raspberry Pi 4 dengan Perangkat Pendukung

3.2.4. Tugas:
1. Amati dan catat pembuatan USB bootable sistem operasi Raspbian
2. Lakukan proses instalasi sistem operasi raspbian

3.3. Lab 12 Administrasi Sistem Operasi Raspbian


3.3.1. Tujuan:
1. Mengoperasikan menu-menu dasar
2. Menerapkan perintah-perintah dasar sistem operasi Raspbian
3.3.2. Alat dan Bahan:
1. Raspberry Pi 4 Model B
2. Monitor atau TV
3. Kabel HDMI
4. Keyboard dan mouse
5. Micro USB power supply Micro SD card

3.3.3. Sistem File


Layaknya sistem Operasi keluarga Linux, Raspbian memiliki file sistem yang dijelaskan dengan Gambar 3.7

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 107 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Gambar 3. 7 Sistem File Raspbian

Bagi anda yang masih baru mengenal linux, ada baiknya anda membiasakan dengan struktur file sistem
tersebut, dengan bernavigasi ke direktori – direktori yang ada. Berikut sintaks dasar dalam Gambar 3.8

Gambar 3. 8 Operasi Dasar Sistem Operasi Raspbian

Operasi-operasi dasar sistem operasi raspbian antara lain:


 cd: change directory untuk mengubah posisi direktori kerja yang sedang dirambah.
 ls : Akronim dari List, untuk melihat isi file pada direktori kerja yang sedang dirambah. Identik dengan
dir pada windows
 tree : Menampilkan pohon (tree) dari struktur file sistem dari direktori yang sedang dirambah
 mv : akronim dari move digunakan untuk memindahkan file atau direktori. Bisa juga digunakan untuk
merename file atau direktori
 rm : menghapus (remove) file ataupun direktori

3.3.4. Langkah kerja:


A. Membuka Jendela Terminal
1. Anda akan melihat prompt berikut ini:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 108 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
pi @ raspberrypi ~ $

2. Ketik “pwd” pada direktori kerja sekarang, diikuti dengan tombol Enter.

pi @ raspberrypi ~ $pwd

3. Ketik “ls-l” pada direktori kerja sekarang, diikuti dengan tombol Enter.

pi @ raspberrypi ~ $ls-l

B. Operasi file dan Folder


1. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $mkdir baru

2. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $cp /home/pi/new/file.txt

3. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $mv /home/pi/new/file.txt

4. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $mv oldproject.txt newproject.txt

5. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $ rm testfile.txt

C. Informasi perangkat keras Raspberry Pi


2. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $cat / proc / cpuinfo

3. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $ cat / proc / meminfo


4. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $cat / proc / cpuinfo

5. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $ cat / proc / partisi

6. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $ cat / proc / versi

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 109 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
7. Ketik perintah berikut, diikuti dengan tombol Enter

pi @ raspberrypi ~ $ vcgencmd measure_temp

3.3.5. Tugas:
1. Lakukan instalasi dengan OS Raspbian
2. Amati dan catat semua hasil perintah-perintah pada langkah kerja A, B, dan C

3.4. Lab 13 Digital Input-Output


3.4.1. Tujuan:
1. Memanfaatkan GPIO Raspberry sebagai Output
2. Menulis program untuk mengendalikan lampu LED (Blinked Led)
2.4.1. Alat dan Bahan:
1. 1 Buah LED 5mm atau LED 3mm
2. 1 Buah Resistor 100Ω - 220 Ω
3. 2 Buah Kabel Jumper
4. 1 Buah Project board
5. 1 Buah Raspberry Pi 4

5.4.1. Pendahuluan
Salah satu alasan Raspberry Pi sangat populer adalah karena memiliki 40-pin GPIO yang memungkinkan
pengguna menghubungkan komponen elektronik dan mengendalikan mereka dengan sebuah program.

Gambar 3. 9 GPIO Raspberry Pi 4


Kode program untuk proyek komputasi fisik biasanya ditulis dengan Python, akan menjadi jauh lebih
mudah jika kita menggunakan library yang sudah disediakan oleh GPIO Raspberry Pi. Sebelum adanya
library, untuk menghubungkan dan mengatur perangkat elektronik diperlukan banyak baris kode program.
GPIO akan menjalankan semua kode ini untuk Anda, sehingga Anda dapat fokus pada pengendalian
perangkat fisik. Hal ini akan membantu Anda untuk mengembangkan perangkat elektronika dengan sedikit
kode program. Hal ini membuat programmer pemula lebih mudah untuk memahami

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 110 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
5.4.2. Rangkaian Kerja

Gambar 3. 10 Rangkaian Kerja LED Blink


Keterangan :
 PIN 8 (GPIO14) sebagai output dihubungkan ke resistor
 Sisi lain dari Resistor di hubungkan ke positif LED
 PIN 6 ke GND dihubungkan ke LED negatif

5.4.3. Menuliskan Kode Program


a. Kode Program pertama

Analisa Program:
 Kode program diatas akan menghasilkan keluran dengan nyala lampu led yang berkedip dengan
durasi wakti satu detik secara terus menerus.
 Baris ke-1 module RPi.GPIO yang diperlukan untuk mengenali PIN IO dari raspberry Pi
 Baris ke-2 module time untuk fungsi tunda waktu
 Baris ke-4 fungsi setmode() untuk memilih GPIO14 mengunakan mode BCM (Broadcom)
 Baris ke-5 fungsi setup() untuk mengatur GPIO14 sebagai output
 Baris ke-7 while(True) mengulang perintah baris ke 8 sampai ke 11 selama kondisinya
True.
 Baris ke-8 fungsi output() untuk mengeset GPIO14 dalam logika True sehingga LED
menyala
 Baris ke-9 fungsi sleep(1) untuk mengatur tunda waktu dalam satu detik
 Baris ke-10 fungsi output() untuk mengeset GPIO14 dalam logika False sehingga LED mati

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 111 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 Baris ke-11 fungsi sleep(1) untuk mengatur tunda waktu dalam satu detik, selanjutnya
program akan mengulang proses mulai dari baris ke-7 sampai baris ke-11 terus menerus selama
kondisinya True.

b. Kode Program kedua


Berbeda dengan mode BCM pada program pertama yang menggunakan kode nomor GPIO. Program ke dua
menggunakan mode Board dengan nomor pin sebagai referensi output GPIO. Keluaran program
menghasilkan lampu berkedip untuk durasi waktu 1 detik secara terus menerus.

5.4.4. Tugas Proyek:


1. Jalankan dan analisalah program berikut ini:

2. Rangkaian lampu berjalan


Rakit komponen dan buat program Lampu LED Berjalan Kekiri dan Kekanan! Gunakan 4 GPIO pada
Raspberry Pi 4 untuk Membuat Lampu LED Berjalan Kekiri dan Kekanan. Alat dan bahan yang
digunakan,
 5 Buah LED 5mm atau LED 3mm (Warna Bebas)
 5 Buah Resistor 100Ω Ohm
 6 Buah Kabel Jumper
 1 Buah Protoboard
 1 Buah Raspberry PI

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 112 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Gambar 3. 11 Rangkaian Kerja Lampu Berjalan

3. Pembuatan Traffic Light


Rakit dan buatlah program simulasi lampu lalu lintas di perempatan jalan, dimana hanya satu jalur
saja yang diperolehkan lewat dalam satu waktu.

GPIO2 GPIO5 GPIO8 GPIO11


GPIO3 GPIO6 GPIO9 GPIO12
GPIO4 GPIO7 GPIO10 GPIO13

Raspberry Pi 4
Gambar 3. 12 Rangkaian Kerja Traffic Light

3.5. Lab 14 Digital-Analog Sensor


3.5.1. Tujuan:
1. Menggunakan sensor pushbutton (tactile switch) untuk mengendalikan lampu
2. Menggunakan sensor cahaya LDR untuk mengendalikan lampu
3. Menggunakan sensor DHT11 untuk membaca suhu dan kelembaban ruang

3.5.2. Alat dan Bahan:


1. 1 Buah push button (tactile switch)
2. 1 buah sensor LDR
3. 1 Buah sensor DHT11

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 113 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
4. 3 Buah LED 5mm atau LED 3mm
5. 5 Buah Resistor 100Ω - 220 Ω (3 buah), 330 Ω(1 buah), 470 Ω(1buah)
6. 1 Buah kapasitor 20 µF
7. Kabel Jumper seperlunya
8. 1 Buah Project board
9. 1 Buah Raspberry Pi 4

3.5.3. Menggunakan Pushbutton


a. Memahami Pushbutton
Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk
menghubungkan atau memutuskan aliran arus listrik dengan sistem kerja tekan unlock (tidak mengunci).
Sistem kerja unlock disini berarti saklar akan bekerja sebagai device penghubung atau pemutus aliran arus
listrik saat tombol ditekan, dan saat tombol tidak ditekan (dilepas), maka saklar akan kembali pada kondisi
normal.

Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off
(1 dan 0). Istilah On dan Off ini menjadi sangat penting karena semua perangkat listrik yang memerlukan
sumber energi listrik pasti membutuhkan kondisi On dan Off.

Gambar 3. 13 Bentuk Push Button

Karena sistem kerjanya yang unlock dan langsung berhubungan dengan operator, push button switch
menjadi device paling utama yang biasa digunakan untuk memulai dan mengakhiri kerja mesin di industri.
Secanggih apapun sebuah mesin bisa dipastikan sistem kerjanya tidak terlepas dari keberadaan sebuah
saklar seperti push button switch atau perangkat lain yang sejenis yang bekerja mengatur pengkondisian
On dan Off.

Gambar 3. 14 Cara Kerja Push Button

Berdasarkan fungsi kerjanya yang menghubungkan dan memutuskan, push button switch mempunyai 2
tipe kontak yaitu NC (Normally Close) dan NO (Normally Open).
 NO (Normally Open), merupakan kontak terminal dimana kondisi normalnya terbuka (aliran arus
listrik tidak mengalir). Dan ketika tombol saklar ditekan, kontak yang NO ini akan menjadi menutup
(Close) dan mengalirkan atau menghubungkan arus listrik. Kontak NO digunakan sebagai
penghubung atau menyalakan sistem circuit (Push Button ON).

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 114 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 NC (Normally Close), merupakan kontak terminal dimana kondisi normalnya tertutup (mengalirkan
arus litrik). Dan ketika tombol saklar push button ditekan, kontak NC ini akan menjadi membuka
(Open), sehingga memutus aliran arus listrik. Kontak NC digunakan sebagai pemutus atau
mematikan sistem circuit (Push Button Off).

b. Memahami Tactile Switch


Push button ini disebut dengan tactile switch normaly open . Tombol tekan memungkinkan kita untuk
menyalakan sirkuit atau membuat koneksi tertentu hanya ketika kita menekan tombol. Sederhananya, itu
membuat sirkuit terhubung saat ditekan dan putus saat dilepas. Tombol tekan juga digunakan untuk
memicu SCR dengan terminal gerbang. Ini adalah tombol paling umum yang kita lihat di peralatan
elektronik kehidupan sehari-hari kita.

Tambahkan tombol tekan (push button) pada breadboard bagian tengah, sehingga antara kakinya tidak
ada yang berhubungan. Lalu hubungkan kabel jumper malefemale dari kolom satu pin pada GPIO Raspberry
Pi. Kemudian hubungkan kawat jumper male dari pin yang lain (pada sisi yang sama dari alur) ke GND (-).
Akhirnya, hubungkan kawat jumper male-female dari yang terakhir ke pin GND pada Pi.

Gambar 3. 15Bentuk dan Simbol Tactile Switch

c. Rangkaian Kerja Sensor PushButton


Rangkaian ini terdiri dari satu buah pushbutton, resistor dan lampu Led. Pushbutton yang akan memutus
dan menyambungkan arus dalam rangkaian. Pushbutton dihubungkan ke raspberry melalui pin GPIO dan
difungsikan sebagai input. Raspberry akan membaca status input kemudian akan mengaktifkan /
menonaktifkan Led (GPIO Raspbery sebagai output).

Gambar 3. 16 Rangkaian Kerja Kontrol LED dengan Push Button


Keterangan :
 PIN 16 (GPIO23) sebagai input dihubungkan ke salah satu kaki tactile switch
 PIN 18 (GPIO24) sebagai output dihubungkan ke positif LED

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 115 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
d. Menulis kode Program Sensor Pushbutton
Realisasi program Python untuk mengontrol LED melalaui saklar push button menggunakan raspberry
Pi 4 dapat dilakukan dengan beberapa cara antara lain adalah:
1. Program Pushbutton pertama

Analisa Program:
 Keluaran Program adalah ketika pushbuttton ditekan makan maka lampu akan menyala dan
ketika dilepas maka lampu akan mati.
 Baris ke-1 module RPi.GPIO yang diperlukan untuk mengenali PIN IO dari raspberry Pi
 Baris ke-2 module time untuk fungsi tunda waktu
 Baris ke-3 fungsi setwarning() bernilai False untuk menonaktifkan warning
 Baris ke-5 membuat variabel untuk inptBtn untuk menampung nomor pin GPIO
 Baris ke-6 fungsi setmode() untuk memilih GPIO14 mode BCM (Broadcom)
 Baris ke-7 fungsi setup() untuk mengatur GPIO15 sebagai output
 Baris ke-8 fungsi setup() untuk mengatur GPIO14 sebagai input dengan mengatur pull down
sama dengan pull up.
 Baris ke-10 while(True) mengulang perintah baris ke 11 sampai ke 16 selama kondisinya
True.
 Baris ke-11 fungsi output() untuk mengeset GPIO15 dalam logika False
 Baris ke-12 variabel ab untuk menampung hasil fungsi input(inpBtn) dari GPIO14
 Baris ke-13 adalah pengujian kondisi perintah if ab==False jika logika True maka
mengerjakan perintah baris ke-14 sampai baris 16.
 Baris ke-14 fungsi output() untuk mengeset GPIO15 dalam logika True sehingga LED
menyala
 Baris ke-15 fungsi print() untuk mencetak data ke monitor
 Baris ke-16 fungsi sleep(0.2) untuk mengatur tunda waktu dalam 0,2 detik, selanjutnya
program akan mengulang proses mulai dari baris ke-11 sampai baris ke-16 terus menerus
selama kondisinya True.

2. Program Pushbutton kedua


1. Tulislah kode program dibawah ini dengan cermat dan teliti

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 116 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2. Jalankan program, amati apa yang terjadi jika Led ditekan satu kali. Kemudian tekan sekali lagi
perubahan apa yang terjadi.
3. Amati hasilnya dan analisislah apa perbedaannya dengan kode program ke dua. Tulislah
hasilnya:

...…………………………………………………………………………………………………………………………………………
………......………………………………....…………………………………………………………………………………………………………
………...…………………………………………………....…………………………………………………………………………………………
………...……………………………………………………....………………………………………………………………………………………
………...……………………………………………………………....………………………………………………………………………………
………...………………………………………………………....……………………………………………………………………………………

3.5.4. Menggunakan LDR


a. Memahami LDR
Light Dependent Resistor(LDR) adalah jenis Resistor yang nilai hambatan atau nilai resistansinya tergantung
pada intensitas cahaya yang diterimanya. Nilai Hambatan LDR akan menurun pada saat cahaya terang dan
nilai Hambatannya akan menjadi tinggi jika dalam kondisi gelap. Dengan kata lain, fungsi LDR (Light
Dependent Resistor) adalah untuk menghantarkan arus listrik jika menerima sejumlah intensitas cahaya
(Kondisi Terang) dan menghambat arus listrik dalam kondisi gelap.

Naik turunnya nilai Hambatan akan sebanding dengan jumlah cahaya yang diterimanya. Pada umumnya,
Nilai Hambatan LDR akan mencapai 200 Kilo Ohm (kΩ) pada kondisi gelap dan menurun menjadi 500 Ohm
(Ω) pada Kondisi Cahaya Terang. LDR (Light Dependent Resistor) yang merupakan Komponen Elektronika
peka cahaya ini sering digunakan atau diaplikasikan dalam Rangkaian Elektronika sebagai sensor pada
Lampu Penerang Jalan, Lampu Kamar Tidur, Rangkaian Anti Maling, Shutter Kamera, dan Alarm.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 117 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Gambar 3. 17 Simbol dan Bentuk LDR

b. Mengukur LDR dengan Multimeter


Alat Ukur yang digunakan untuk mengukur nilai hambatan LDR adalah Multimeter dengan fungsi
pengukuran Ohm (Ω). Agar Pengukuran LDR akurat, kita perlu membuat 2 kondisi pencahayaan yaitu
pengukuran pada saat kondisi gelap dan kondisi terang. Dengan demikian kita dapat mengetahui apakah
Komponen LDR tersebut masih dapat berfungsi dengan baik atau tidak. Cara mengukur LDR pada Kondisi
Terang adalah:
1. Atur posisi skala selektor Multimeter pada posisi Ohm
2. Hubungkan Probe Merah dan Probe Hitam Multimeter pada kedua kaki LDR (tidak ada polaritas)
3. Berikan cahaya terang pada LDR
4. Baca nilai resistansi pada Display. Nilai Resistansi LDR pada kondisi terang sekitar 500 Ohm.

Gambar 3. 18 Cara Mengukur LDR Pada Kondisi Terang


Sementara itu untuk mengukur LDR pada Kondisi Gelapadalah sebagai berikut:
1. Atur posisi skala selektor Multimeter pada posisi Ohm
2. Hubungkan Probe Merah dan Probe Hitam Multimeter pada kedua kaki LDR (tidak ada polaritas)
3. Tutup bagian permukaan LDR atau pastikan LDR tidak mendapatkan cahaya
4. Baca nilai resistansi pada Display. Nilai Resistansi LDR di kondisi gelap akan berkisar sekitar 200 KOhm.

Gambar 3. 19 Cara Mengukur LDR Pada Kondisi Gelap

c. Rangkaian kerja Sensor LDR

Gambar 3. 20 Rangkaian Kerja Sensor LDR

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 118 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
d. Menulis Kode Program Sensor LDR
1. Tulislah kode program dibawah ini:

2. Amati apa yang terjadi jika LDR mendapat cahaya dan jika tidak mendapat cahaya.
3. Analisa Program:
 Baris ke-1 module RPi.GPIO yang diperlukan untuk mengenali PIN IO dari raspberry Pi
 Baris ke-2 module time untuk fungsi tunda waktu
 Baris ke-3 fungsi setmode() untuk memilih GPIO mode BOARD
 Baris ke-4 variabel ldr diset untuk GPIO PIN 7
 Baris ke-5 vaiabel tunda diset 0.1 untuk fungsi sleep() sebesar 100 ms
 Baris ke-6 membuat fungsi rc_time(ldr)untuk menghitung nilai LDR
 Baris ke-7 inisialisasi variabel count=0
 Baris ke-8 fungsi setup() untuk mengatur LDR pada PIN 3 sebagai output.
 Baris ke-9 fungsi output() untuk LDR dalam logika LOW
 Baris ke-10 fungsi sleep(0.1) untuk mengatur tunda waktu dalam 100 ms
 Baris ke-10 fungsi setup() untuk mengatur LDR pada PIN 3 sebagai input.
 Baris ke-11 while(True) mengulang perintah baris ke 14 - 15 selama kondisinya True.
 Baris ke-14 menghitung count = count + 1
 Baris ke-15 mengembalikan nilai count
 Baris ke-17 perintah Try: untuk memulai exception
 Baris ke-18 while(True) mengulang perintah baris ke 19 sampai selama kondisinya True.
 Baris ke-19 memanggil fungsi rc_time(ldr)dan menampilkan hasilnya
 Baris ke-21 perintah except KeyboardInterrupt: untuk penanganan error dengan
melewatkan kesalahan melalui perintah pass baris ke-22
 Baris ke-24 perintah finally: menunjukkan bahwa perintah baris 25 harus dijalankan.

e. Tugas Proyek:
1. Rencanakan rangkaian elektronik dengan menghubunkan GPIO pada Raspberry Pi 4 agar kode
program di bawah ini berfungsi.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 119 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
2. Membuat penerangan lampu otomatis di rumah menggunakan sensor cahaya LDR untuk
penerangan 2 lampu (2 LED) di taman, dan tombol push button (tactile switch) mengontrol 1 lampu
(1 LED) untuk penerangan ruang tamu.

3.6. Lab 15 Menerapkan IoT Webserver


3.6.1. Tujuan:
1. Memanfaatkan aplikasi Flash sebagai web server di Raspberry
2. Menerapkan IOT system untuk memonitor dan mengontrol sesnsor dan aktuator

3.6.2. Alat dan Bahan:


1. 1 Buah Buzzer
2. 1 Buah LED 5mm atau LED 3mm
3. 1 Buah Resistor 100Ω - 220 Ω

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 120 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
4. 2 Buah Kabel Jumper
5. 1 Buah Project board
6. 1 Buah Raspberry Pi 4

3.6.3. Menerapkan Flash Web Server


a. Memahami Flash
Flask adalah salah satu framework micro website yang ditulis menggunakan bahasa pemrograman Python.
Flask disebut dengan micro website karena tidak memerlukan beberapa tools/ library tambahan. Flask
tidak memiliki lapisan abstraksi database, form validasi atau beberapa komponen pihak ketiga lainnya.
Flask dibuat oleh Armin Ronacher yang berasal dari Pocoo sejak tahun 2010. Beberapa website seperti
Pinterest dan LinkedIn merupakan contoh website berbasisi Flask. Adapun beberapa keunggulan Flask
yaitu,
 Lisensi BSD
 Memiliki server development dan debugger
 RESTful request dispatching
 Menggunakan template Jinja2
 Support secure cookies
 100% WSGI 1.0 compliant
 Dokumentasi lengkap
 Kompatibel dengan Google App Engine

Flask adalah sebuah web framework yang ditulis dengan bahasa Python dan tergolong sebagai jenis
microframework. Flask berfungsi sebagai kerangka kerja aplikasi dan tampilan dari suatu web. Dengan
menggunakan Flask dan bahasa Python, pengembang dapat membuat sebuah web yang terstruktur dan
dapat mengatur behaviour suatu web dengan lebih mudah.
Flask termasuk pada jenis microframework karena tidak memerlukan suatu alat atau pustaka tertentu
dalam penggunaannya. Sebagian besar fungsi dan komponen umum seperti validasi form, database, dan
sebagainya tidak terpasang secara default di Flask. Hal ini dikarenakan fungsi dan komponenkomponen
tersebut sudah disediakan oleh pihak ketiga dan Flask dapat menggunakan ekstensi yang membuat fitur
dan komponenkomponen tersebut seakan diimplementasikan oleh Flask sendiri.
Selain itu, meskipun Flask disebut sebagai microframework, bukan berarti Flask mempunyai kekurangan
dalam hal fungsionalitas. Microframework disini berarti bahwa Flask bermaksud untuk membuat core dari
aplikasi ini sesederhana mungkin tapi tetap dapat dengan mudah ditambahkan. Dengan begitu, fleksibilitas
serta skalabilitas dari Flask dapat dikatakan cukup tinggi dibandingkan dengan framework lainnya.

Gambar 3. 21 Cara Kerja Webserver Flask


b. Instalasi Flask dan membuat folder poject
Langkah-langkah yang dilakukan untuk menginstal Flask di Raspberry Pi 4 adalah sebagai berikut:
1. buka CLI terminal dan jalankan perintah:

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 121 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
sudo apt-get install python3-flask

2. Buat folder baru untuk menyimpan file-file Projek yang akan digunakan::
mkdir rpiWebServer

Perintah di atas akan membuat folder bernama "rpiWebServer", dan tersimpan dalam sistem file
python: /home/pi/rpiWebServer

3. Buat dua buah sub-folder dengan nama statis dan template. Sub folder statis digunakan untuk file-
file CSS dan java script sedangkan template untuk menyimpan file HTML.
a. Rubah direktori aktif kefolder rpiWebServer yang sudah dibuat:
cd rpiWebServer

b. Tambahkan buat 2 sub-folder baru:


mkdir static
dan,
mkdir templates

Struktur tree folder akan terlihat seperti ini:


/rpiWebServer
/static
/templates

c. Menulis kode python untuk akses web server


Lakukan langkah-langkah berikut dengan cermat dan teliti:
1. Buka aplikasi python editor IDE Python3 atau Thonny,
2. Tuliskan kode program berikut simpan dengan nama file helloWord.py dan simpan di sub folder
template
1 from flask import Flask
2
3 app = Flask(__name__)
4
5 @app.route('/')
6 def index():
7 return “Hello world <h1> ELJAVA MIFZAL HERBIYAN</h1>”
8
9 if __name__ == '__main__':
10 app.run()

Analisa Program:
 Baris ke-1 memanggil module ke dalam program python
 Baris ke-3 membuat objek Flask dengan nama app. Maksud dari baris ini membuat sebuah objek
application sebagai sebuah instance dari kelas Flask yang diimpor dari package flask. Variabel
__name__ yang diberikan kepada kelas Flask adalah variabel yagn sudah dibuatkan oleh Python
yang isinya merupakan nama module dimana ia digunakan. Flask menggunakna lokasi module
yang dikirimkan sebagai titik awal dimana ia harus memuat file-file yang diperlukan misalnya file
template. Memberikan __name__ setiap kali membuat konfigurasi Flask biasanya akan menjadi
langkah terbaik.
 Baris ke-5 @app.route akan membuat sebuah hubungan antara URL yang diberikan sebagai
argumen dengan fungsi di bawahnya. Artinya setiap kali sebuah web browser mengakses salah
satu dari URL ini, Flask akan membanggil fungsi di bawahnya dan mengirimkan nilai balikan
(perintah return) yang sudah dibuat sebagai sebuah response.

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 122 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
 Baris ke-6 menjalankan fungsi index () ketika seseorang mengakses URL root ('/') dari
server. Dalam hal ini, hanya kirimkan teksnya "Helo Word!" ke browser web klien dengan
perintah return.
 Baris 6-7 Perintah untuk menjalankan kode program yang diatasnya, server mulai
"mendengarkan" pada port default 5000 dan melaporkan kesalahan apa pun.
3. Jalankan program aplikasi di atas dan klik link yang ada pada jendela console.

d. Membuat Halaman Web Server


Dokumen web (HTML, php dll) dibutuhkan agar dapat berjalan di web server dan diakses oleh web browser.
File tersebut disimpan di sub-folder "template". Pengguna dapat menggunakan file yang terpisah dengan
placeholder sebagai tempat untuk memasukkan data dinamis. Halaman yang pertama kali akan diakses
oleh web browser adalah file bernama index.html. Untuk membuat file HTML dapat menggunakan editor
Teks apa pun, seperti "nano" di Terminal atau Editor Teks RPi (LeafPad). Program GEANY dapat digunakan
untuk membuat semua format file proyek pada waktu yang sama (.py; .html dan .css). Hal ini merupakan
salah satu pilihan yang dapat dimanfaatkan untuk proyek yang lebih besar dan lebih kompleks. Adapun
langkah-langkah yang dilakukan adalah sebagi berikut:
1. Buat file index.html tempatkan pada /templates/index.html:

Perhatikan bahwa apapun dalam tanda kurung kurawal ganda di dalam template HTML
diinterpretasikan sebagai variabel yang akan melakukannya dan diteruskan ke sana dari skrip Python
melalui fungsi render_template.
2. Buat file style.css. tempatkan pada /static/style.css:

3. Buat skrip Python baru dengan nama web1.py

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 123 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
4. Jalankan aplikasi dan hasilnya adalahsebagai berikut:

3.6.4. Sistem Kontrol Lampu Led dan Buzzer melalui Web


a. Mekanisme Kerja Sistem kontrol Lampu dan Buzzer
Sistem kontrol peralatan ini terdiri dari beberapa komponen atau bagian antara lain adalah sebagi berikut:
 Sensor adalah perangkat yang mengubah besaran fisik menjadi besaran listrik (pushbutton, LDR).
 Aktuator adalah perangakat keluaran yang akan dikontrol (lampu, buzzer dll)
 Web server adalah perangkat yang menyediakan layanan kontent web (raspberry, Flash)
 Jaringan internet/intranet menyediakan infrastruktur untuk mengkases data melalui inter/intranet
 Perngkat pengguna adalah perangkat untuk memonitoring atau mengontrol peralatan (mobile
device, Komputer)

Gambar 3. 22 Komunikasi Webserver dengan Raspberry Pi 4

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 124 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
b. Diagram Rangkaian kerja.

Gambar 3. 23 Rangkaian Kerja IoT Webserver


Keterangan :
 PIN 8 (GPIO14) sebagai ouput dihubungkan ke LED
 PIN 10 (GPIO15) sebagai output dihubungkan ke Buzzer

c. Menuliskan Kode Program


Langkah-langkah yang dilakukan untuk mengimplementasikan sistem kontrol peralatan yang dapat diakses
melalui web ini adalah sebagai berikut:
1. Rakitlah rangkaian raspberry beserta komponennya seperti terlihat dalam gambar rangkain kerja
2. Pastikan bahwa raspberry sudah terhubung dengan jaringan inter/internet melalui WIFI atau kabel
dan mendapatkan nomor IP.
3. Buatlah file dengan nama index. html kemudian ketik kode program dibawah ini dan simpan disub
folder template.
File templates/index.html

4. Buatlah file dengan nama master. css kemudian ketik kode program dibawah ini dan simpan disub
folder static

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 125 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
File static/master.css

5. Buatlah file dengan nama iot.py kemudian ketik kode program dibawah ini dan simpan folder
rpiWebserber.

File rpiWebserver/iot.py

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 126 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Keterangan:
Alamat IP host disesuaikan dengan alamat IP di Raspberry yang telah terkonseksi dengan jaringan
inter/internet

d. Tugas Proyek
Rancanglah sistem IoT yang melibatkan beberapa sensor dan aktuator. Peralatan aktuator tersebut dapat
kontrol atau dimonitoring melalui jaringan intranet. Aplikasi juga dapat memonitoring status dari sensor.

Gambar 3. 24 Rangkaian kerja Projek IoT

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 127 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
4. BAB IV PENUTUP

PENUTUP

4.1 Kesimpulan
1. UnIoTsys merupakan teaching aids yang dapat digunakan dalam proses transfer
pengetahuan dan teknologi terdiri dari dua bagian utama, yaitu hardware merupakan
module-module yang saling terintergrasi dan fleksibel dalam penggunaanya (plug and
play) yang terdiri dari SBC Raspberry Pi 4, LCD hdmi, mikrotik, module sensor, module
relay, terminal AC output 220, projectboard, dan komponen-komponen elektronika.
Software merupakan perangkat lunak open-source GNU General Public License (GPL)
yang terdiri dari sistem operasi raspbian, sd card formatter, python up to version 3, flask
webserver, dan library-library lain.
2. Sekolah dapat memanfaatkan UnIotSys untuk membuat projek-projek IoT yang
dibutuhkan sekolah dalam mewujudkan transforrmasi digital berbagai peralatan sekolah.
3. Lembaga pelatihan dapat memanfaatkan UnIotSys untuk melatih masyarakat dalam
penerapan teknologi IoT untuk keperluan smart home dan aplikasi lainnya.
4. BBPPMPV BOE dapat memanfaatkan UnIotSys untuk melatih Guru-Guru SMK dengan sain
dan teknologi terbaru yang sesuai dengan revolusi indutri 4.0.
4.2 Saran
1. Taaching aids UnIoTsys dapat dikembangkan dengan melengkapi fitur-fitur yang lebih
komplek yaitu dengan sensor-sensor dan peralatan yang sesuai dengan kebutuhan
revolusi industri 4.0.
2. Menciptkan teaching aids baru melalui inovasi-inovasi yang bersesuaian dengan
education top project yang sedang berkembang saat ini

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 128 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
5. DAFTAR PUSTAKA

[1] Vujovic, V., Maksimovic, M. (2015) Raspberry Pi as a Sensor Web node for home automation.
Computers and Electrical Engineers, Vol. 44.

[2] Alee, R. (2013) Reading Data From a Digital Multimeter Using a Raspberry Pi, Tesis, Turku
University of Applied Science, Istambul.

[3] Richard Blum (2014), Python Programming for Raspberry Pi in 24 Hours, Sams Teach Yourself.

[4] Santoso, B.I. (2010) Bahasa Pemrograman Python Di Platform GNU/LINUX, Universitas Multimedia
Nusantara, Tangerang.

[5] https://www.raspberrypi.org/documentation/usage/python/

[6] https://www.programiz.com/python-programming

[7] https://www.w3schools.com/python

[8] https://www.petanikode.com/tutorial/python/

[9] https://www.guru99.com/python-tutorials.html

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 129 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
6. LAMPIRAN

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 130 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
7. PENULIS

Eko Subiyantoro adalah widyaiswara di BBPPMPV BOE-VEDC Malang di Departemen Teknologi


Informasi. Lahir di Banyuwangi pada tahun 1975. Pendidikan SD, SMP, dan
STM (sekarang SMK) diselesaikan di kota kelahirannya. Selanjutnya ia
menyelesaikan S1 di Program Studi Pendidikan Teknik Elektronika FPTK
IKIP Yogyakarta (sekarang UNY) pada tahun 1998. Sarjana Sains Terapan
(SST) diperolehnya melalui program beasiswa Dikmenjur (sekarang
Direktorat Pembinaan Sekolah Menengah Kejuruan) di PENS ITS Surabaya
pada tahun 2002 pada Prodi Teknologi Informasi dengan predikat cum
laude. Magister Teknik diperolehnya melalui program beasiswa unggulan
BPKLN di ITS Surabaya Program Studi Teknik Elektro konsentrasi
Jaringan Cerdas Multimedia pada tahun 2009 juga dengan predikat cum
laude. Doktor diperolehnya juga melalui beasiswa unggulan bagi pegawai Kemdikbud di Prodi S3 Ilmu
Komputer FMIPA Universitas Gadjah Mada.
Pengalaman luar negeri diperolehnya melalui program Inwent dari pemerintah Jerman pada tahun 2003
dalam program Advance Automation Training. Selain itu, pada tahun 2006 mengikuti Expert Program
Maintenance and Repair di Abha College Kingdom of Saudi Arabia (KSA). Selanjutnya pada tahun
2013 melalui IGI kerja sama Indonesia–Jerman diikutkan dalam program Modern Management School
di Kassel Jerman.

Penulis memiliki pengalaman kerja di PPPPTK BOE/VEDC Malang sebagai Kepala Departemen
Teknologi Informasi selama 2 periode 2010–2013 dan 2013–2015. Selain itu juga sebagai tim
pengembang Java Education Network Indonesia (JENI), sebuah sistem yang diinisiasi BPKLN
Kemdikbud dalam kurun waktu tahun 2007–2009. Sertifikasi yang diperoleh dalam bidang
pemrograman adalah Sun Certified Java Programmer (SCJP) pada tahun 2008.
Eko Subiyantoro dapat dihubungi melalui alamat e-mail ekovedc@gmail.com

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 131 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
Abdul Munif, M.Kom lahir di Magelang 18 Juni 1973. Ia menyelesaikan pendidikan dasar dan
menengah dari TK, SD, hingga Sekolah Menengah Umum di kota kelahirannya. Sarjana
pendidikan pada jurusan Teknik Elektronika diraihnya di IKIP Negeri Yogyakarta. Pendidikan
Diploma IV ditempuhnya di Politeknik Elektronika Negeri
Surabaya pada jurusan Teknik Telekomunikasi konsentrasi
Teknik Komputer dan Jaringan. Magister Komputer diraihnya di
Fakultas Teknologi & Informatika ITS Surabaya.
Ia pernah mengikuti pendidikan dalam bentuk on the job
trainning (OJT) di Multimedia Center di Bonn Jerman untuk
topik pendidikan daring (online) dalam program E-learning
Development and Implementation (ELDI). Pelatihan
kompetensi bidang pengembangan sumber daya manusia dan
Information Technology-Network ditempuh penulis dalam paket
program International Leadership Trainning (ILT) yang dilaksanakan di beberapa kota di
Jerman, seperti Magdeburg, Sarbrucken, Grossgerau, dan Mainheim.
Saat ini penulis bekerja sebagai tenaga pendidik (Widyaiswara) pada Pusat Pengembangan
Pemberdayaan Pendidik dan Tenaga Kependidikan (PPPPTK) BOE/VEDC Malang, sejak
tahun 2002. Di samping sebagai pengajar, ia juga menjadi penulis dan penyusun modul diklat
kompetensi pada Kementerian Pendidikan dan Kebudayaan. Modul yang pernah ditulis antara
lain Sistem Operasi Komputer, Algoritma dan Pemrograman, Desain Basis Data, dan
Pemrograman Web. Modul diklat berbasis SKKNI yang pernah ditulis adalah Implementasi
Alur Logika Pemrograman Menggunakan Spesifikasi Program. Artikel yang pernah dimuat di
majalah dan jurnal ilmiah, baik cetak maupun elektronik pada PPPPTK BOE Malang antara
lain Enterprise Architektur Planning(EAP), Studi Komparasi Ragam Jenis Online Storage, dan
Enterprise Content Managemen System(ECMS).
Abdul Munif dapat dihubungi melalui alamat e-mail abdmunif@gmail.com

BBPPMPV Program Diklat: Level: Tanggal:


70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 132 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S
BBPPMPV Program Diklat: Level: Tanggal:
70 01 01 VT
Upskilling dan Reskilling Juni’ 2021
BOE Judul Diklat: Progli: Rev.Tanggal: Dibuat oleh:
Hal
M A L A N G Pemrograman IoT 133 - 133
Teknologi Informasi 30/09/2021 Abd Munif, Eko. S

Anda mungkin juga menyukai