Python
Python
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
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
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
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
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].
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.
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.
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
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.
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.
# 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.
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
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".
My_name_is*Monty*Python.*
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:
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.
Kemudian untuk melihat isi variabel, kita dapat menggunakan fungsi print.
print variabel_ku
print variabel2
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 )
Contoh:
a = 9
b = 5
c = a < b
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)
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 )
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
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.
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:
Hasilnya:
Output 1:
Enter a number: 5
Positive number
Output 2:
Enter a number: -1
Negative number
Output 3:
Enter a number: 0
Zero
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
# 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)
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
Output:
No entry with that name found.
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.
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.
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.
Gambar 2.11 Flowchart dan mekanisme kerja perintah break dalam for dan while
Format penulisan dan contih penerapan instruksi continue adalah sebagai berikut:
Contoh:
for val in "string":
if val == "i":
continue
print(val)
print("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:
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))
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).
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]
Untuk menampilkan dan mengambil beberapa nilai dari list juga dapat dilakukan dengan menggunakan
strtuktur looping (while atau for)
List.append (nilai)
Metode insert () sedikit lebih cerdas – metode ini dapat menambahkan elemen baru di mana saja dalam
daftar, tidak hanya di akhir.
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
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)
Deklarasi dan inisialiasi list multidimensi 3 baris 3 kolom adlaah sebagai berikut:
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']]
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.
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
Ini adalah pesan yang akan diberikan Python kepada Anda di jendela konsol:
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.
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.
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.
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().
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}
Gambar Operasi pada set (a) union, (b) intersection, (c) Difference, (d) Symetric Difference
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)
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'}
Untuk menampilkan anggota dictionary juga dapat menggunakan struktur looping. Kode berikut dengan
aman mencari beberapa kata dalam bahasa Prancis:
Untuk mengurutkan data dapat menggunakan fungsi sorted () yang dipanggil melalui struktur loop for
seperti kode program berikut:
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.
3. method values
Ada juga metode bernama values (), yang berfungsi mirip dengan keys (), tetapi mengembalikan nilai
dari dictionary. Berikut ini contoh sederhananya:
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:
Outputnya adalah:
{'dog': 'chien', 'horse': 'cheval', 'cat': 'minou'}
Catatan: ini adalah perilaku yang sangat berbeda dibandingkan dengan daftar, yang tidak memungkinkan
Anda untuk menetapkan nilai ke indeks yang tidak ada.
Output contoh:
{'swan': 'cygne', 'horse': 'cheval', 'dog': 'chien', 'cat': 'chat'}
Anda juga dapat memasukkan item ke kamus dengan menggunakan metode update (), misalnya:
Catatan: menghapus kunci yang tidak ada menyebabkan kesalahan. Output contoh:
Untuk menghapus tertentu dapat menggunakan method pop(), sedangkan untuk item terakhir dalam
kamus dapat menggunakan metode popitem ():
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
def function_name(parameters):
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!")
>>> greet('Paul')
Hello, Paul. Good morning!
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.
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
def my_func():
x = 10
print("Value inside function:",x)
x = 20
my_func()
print("Value outside function:",x
Output:
Value inside function: 10
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.
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.
Hasilnya:
Hello Kate, Good morning!
Hello Bruce, How do you do?
Analisa Program
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.
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):
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.
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
Di sini, kami telah mendefinisikan fungsi add () di dalam modul bernama example.py. Fungsi tersebut
mengambil dua angka dan mengembalikan jumlahnya.
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,
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:
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.
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:
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.
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:
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).
Fungsi choice(sequence) akan memilih elemen "acak" dari urutan masukan yang telah ditentukan
dan mengembalikannya.
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]
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)
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)
Sedangkan nilai kembaliannya adalah iterable baru dengan beranggotakan elemen yang True saat
pengujian. Perhatikan contoh kode program dibawah ini:
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
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.
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.
Gambar Gambar 2.16 Struktur pakcage modul dan fungsi dan penyimpanannya
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
# 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:
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'
mainBidang.py
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."
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:
Untuk menginisialisasi variabel string dapat dilakukan dengan cara mengapit string atau teks menggunakan
tanda double petik (" ") atau singgle petik (' ')
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 :
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:
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:
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))
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 ()
‘{:^10}’.format(‘test’)
‘{:^6}’.format(‘zip’)
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)
Python menyertakan beberapa operasi built-in yang digunakan untuk memanipulasi string seperti yang
diperlihatkan dalam tabel dibawah ini.
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:
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.
7. Buat program yang dapat menjumlahakan sederatan angka yang dimasukkan dengan keyborad dan
dipisahkan dengan spasi
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.
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.
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'
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
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.")
Keluaran: Keluaran:
Zero division! Arithmetic problem!
THE END.. THE END..
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.")
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.
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):
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.
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.
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
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
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.
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. Buat file python openFile.py kemudian tulis kode berikut simpan di drive C:
4. Buka program IDLE Python tuliskan perintah dibawah ini dan amati hasilnya
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
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.
Namun, sepertinya akan memakan banyak memori, karen kita membuat banyak objek. Maka cara terbaik
yang digunakan adalah menggunakan mode "r+" membaca sekaligus menulis.
Sifat dari mode "r+" sama seperti "a", dia tidak menindih data yang sudah ada
try:
f = open("file.txt","r")
except IOError as err:
print "Terjadi kesalahan: {}".format(err)
Gambar berikut menjelaskan desain modular pada pendekatan pemrograman prosedur dan desain class
diagram pada pendekatan obyek untuk menghitung luas segi empat
myFirstObject = TheSimplestClassName()
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.
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.
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.
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.
del sepeda.gear
del sepeda
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())
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:
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
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.
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__
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.
Vehicle
LandVehicle
TrackedVehicle
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:
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:
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 '_'.
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())
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
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.
Keluaran Program:
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
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:
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. 2 Raspberry Pi 4
3.2.1. Tujuan:
1. Memahami sistem operasi dalam raspberry Pi
2. Membuat USB bootable
3. Merakit raspberry Pi dengan perangkat pendukung
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.
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.
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.
3.2.4. Tugas:
1. Amati dan catat pembuatan USB bootable sistem operasi Raspbian
2. Lakukan proses instalasi sistem operasi 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
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
pi @ raspberrypi ~ $ rm testfile.txt
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
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.
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
Raspberry Pi 4
Gambar 3. 12 Rangkaian Kerja Traffic Light
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.
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.
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).
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.
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.
...…………………………………………………………………………………………………………………………………………
………......………………………………....…………………………………………………………………………………………………………
………...…………………………………………………....…………………………………………………………………………………………
………...……………………………………………………....………………………………………………………………………………………
………...……………………………………………………………....………………………………………………………………………………
………...………………………………………………………....……………………………………………………………………………………
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.
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.
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.
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
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.
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:
4. Buatlah file dengan nama master. css kemudian ketik kode program dibawah ini dan simpan disub
folder static
5. Buatlah file dengan nama iot.py kemudian ketik kode program dibawah ini dan simpan folder
rpiWebserber.
File rpiWebserver/iot.py
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.
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
[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
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