-
Notifications
You must be signed in to change notification settings - Fork 0
Modul 3 ‐ CPMK 0803 ‐ Function, OOP Fundamental, List Multi Dimention, Error Handling
Setelah menyelesaikan bab ini, peserta didik diharapkan dapat:
- Memahami konsep variabel lokal dalam pemrograman Python.
- Menguasai penggunaan pernyataan global untuk mengakses variabel di luar lingkup fungsi.
- Memahami konsep parameter wajib dan parameter opsional dalam fungsi.
- Menggunakan parameter tak berurut untuk memberikan nilai dengan urutan yang berbeda pada fungsi.
- Menguasai konsep dan implementasi fungsi rekursif dalam pemrograman Python.
- Menunjukkan pemahaman dalam membuat dan menggunakan fungsi dan metode melalui contoh program.
- Memahami dasar-dasar OOP dan menerapkan tipe data terstruktur.
- Mengerti perbedaan dan penggunaan list dan array.
- Memahami tuple, dictionary, dan cara implementasinya.
- Melakukan operasi aritmatika pada list/array.
- Mengaplikasikan perulangan pada list/array.
- Memahami konsep dan implementasi array multidimensi.
- Mengerti konsep dan penanganan exception.
- Paham hirarki exception dan menangani multiple exception.
- Menguasai penggunaan try-except untuk mengatasi error pada program.
Perintah fungsi adalah salah satu perintah dasar dalam bahasa pemrograman Python. Fungsi digunakan untuk mengelompokkan blok kode yang dapat digunakan kembali. Dengan menggunakan fungsi, kita dapat menulis kode yang lebih ringkas dan efisien.
Fungsi didefinisikan dengan menggunakan kata kunci def
. Berikut adalah sintaks untuk mendefinisikan fungsi:
def nama_fungsi(parameter):
blok kode
-
nama_fungsi
adalah nama fungsi. -
parameter
adalah daftar parameter yang diterima oleh fungsi. -
blok kode
adalah blok kode yang akan dijalankan saat fungsi dipanggil.
Berikut adalah contoh fungsi sederhana yang mendefinisikan fungsi hello()
:
def hello():
print("Hello, world!")
Untuk memanggil fungsi hello(), kita dapat menggunakan sintaks berikut:
hello()
Output:
Hello, world!
Fungsi dapat memiliki tipe data yang berbeda, termasuk tipe data void. Fungsi dengan tipe void tidak mengembalikan nilai apa pun.
Berikut adalah contoh fungsi dengan tipe void yang mendefinisikan fungsi print_hello():
def print_hello():
print("Hello, world!")
print_hello()
Output:
Hello, world!
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi rekursif dapat digunakan untuk menyelesaikan masalah yang dapat dipecah menjadi masalah yang lebih kecil.
Berikut adalah contoh fungsi rekursif yang mendefinisikan fungsi factorial()
:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
Output:
120
Latihan soal diberikan untuk menguji pemahaman peserta tentang materi perintah percabangan. Berikut adalah beberapa contoh soal yang mudah:
- Definisikan fungsi
sum()
yang menerima dua bilangan dan mengembalikan jumlah kedua bilangan tersebut. - Definisikan fungsi
average()
yang menerima tiga bilangan dan mengembalikan rata-rata ketiga bilangan tersebut. - Definisikan fungsi
fibo()
yang menerima bilangan positif N dan mengembalikan deret Fibonacci ke-N.
Pemrograman Berbasis Objek (PBO) adalah paradigma pemrograman yang menganggap bahwa perangkat lunak terdiri dari objek-objek yang saling berinteraksi. Objek-objek ini memiliki data dan perilakunya masing-masing.
Kelebihan PBO antara lain:
- Lebih mudah dipahami dan dikembangkan
- Lebih mudah diuji
- Lebih mudah dirawat
Kekurangan PBO antara lain:
- Lebih kompleks
- Memerlukan waktu lebih lama untuk dipelajari
Konsep dasar PBO antara lain:
- Objek: Suatu entitas yang memiliki data dan perilakunya masing-masing.
- Class: Suatu template yang digunakan untuk membuat objek.
- Atribut: Data yang dimiliki oleh objek.
- Method: Perilaku yang dimiliki oleh objek.
Class adalah suatu template yang digunakan untuk membuat objek. Class memiliki atribut dan method.
Class didefinisikan dengan menggunakan kata kunci class
. Berikut adalah contoh definisi class:
class Person:
# Atribut
name = ""
age = 0
# Method
def say_hello(self):
print("Hello, my name is", self.name)
Berikut adalah contoh class Sapi
:
class Sapi:
# Atribut
nama = ""
jumlahKaki = 0
umur = 0
# Method
def Makan(self):
print(self.name, "sedang makan.")
def Jalan(self):
print(self.name, "sedang jalan.")
def Bobo(self):
print(self.name, "sedang bobo.")
# Membuat objek
sapiSaya = Sapi()
# Mengisi atribut
sapiSaya.nama = "Unyil"
sapiSaya.umur = 10
sapiSaya.jumlahKaki = 4
# Memanggil method
sapiSaya.Jalan()
sapiSaya.Makan()
sapiSaya.Bobo()
Object adalah suatu instance dari class. Object memiliki data dan perilaku yang sesuai dengan class-nya.
Object dibuat dengan menggunakan kata kunci ()
. Berikut adalah contoh pembuatan object:
class Person:
# Atribut
name = ""
age = 0
# Method
def say_hello(self):
print("Hello, my name is", self.name)
# Membuat objek
person1 = Person()
person2 = Person()
Berikut adalah contoh object Person:
class Person:
# Atribut
name = ""
age = 0
# Method
def say_hello(self):
print("Hello, my name is", self.name)
# Membuat objek
person1 = Person()
person2 = Person()
# Mengisi atribut
person1.name = "John Doe"
person1.age = 20
# Memanggil method
person1.say_hello()
Access identifiers adalah kata kunci yang digunakan untuk menentukan visibilitas atribut dan method. Access identifiers terdiri dari tiga jenis, yaitu:
- Public: Atribut atau method dapat diakses dari mana saja.
- Private: Atribut atau method hanya dapat diakses dari dalam class.
- Protected: Atribut atau method hanya dapat diakses dari dalam class dan subclass.
Method getter/setter adalah method yang digunakan untuk membaca atau menulis nilai atribut. Method getter disebut juga dengan property getter, sedangkan method setter disebut juga dengan property setter.
Method getter adalah method yang digunakan untuk membaca nilai atribut. Method getter memiliki nama yang sama dengan atribut yang diaksesnya.
Berikut adalah contoh method getter:
class Person:
# Atribut
name = ""
age = 0
# Method getter
def get_name(self):
return self.name
# Membuat objek
person1 = Person()
person1.name = "John Doe"
# Membaca nilai atribut
print(person1.get_name())
Method getter/setter memiliki beberapa manfaat, antara lain:
- Menjaga integritas data: Method getter/setter dapat digunakan untuk memastikan bahwa nilai atribut hanya dapat diubah dengan cara yang benar.
- Meningkatkan kejelasan kode: Penggunaan method getter/setter dapat membuat kode lebih mudah dibaca dan dipahami.
- Meningkatkan fleksibilitas: Penggunaan method getter/setter dapat membuat kode lebih fleksibel untuk diperluas.
Encapsulation adalah teknik pemrograman yang digunakan untuk menyembunyikan data dan perilaku dari objek. Encapsulation dilakukan dengan menggunakan method getter/setter.
Manfaat Encapsulation
Encapsulation memiliki beberapa manfaat, antara lain:
- Meningkatkan keamanan: Encapsulation dapat membantu melindungi data dan perilaku objek dari akses yang tidak sah.
- Meningkatkan kejelasan kode: Encapsulation dapat membuat kode lebih mudah dibaca dan dipahami.
- Meningkatkan fleksibilitas: Encapsulation dapat membuat kode lebih fleksibel untuk diperluas.
Berikut adalah beberapa latihan soal untuk bab 5 Pemrograman Berbasis Objek:
- Buatlah class
Book
dengan atributtitle
,author
, danpages
. - Tambahkan method
get_title()
,get_author()
,get_pages()
,set_title()
,set_author()
, danset_pages()
ke dalam classBook
. - Buatlah objek
book1
dari classBook
dan isi nilai atributnya. - Membaca nilai atribut
title
,author
, danpages
dari objekbook1
. - Ubah nilai atribut
title
danpages
dari objekbook1
. - Membaca nilai atribut
title
danpages
dari objekbook1
.
List adalah suatu jenis atau tipe data yang digunakan untuk menghimpun kumpulan data, atau data yang berjumlah lebih dari satu.
Pada Python, terdapat 4 tipe data koleksi, yaitu:
- List adalah tipe data urutan yang dapat menyimpan berbagai tipe data.
- Tuple adalah tipe data urutan yang tidak dapat diubah.
- Set adalah tipe data kumpulan yang tidak memiliki elemen duplikat.
- Dictionary adalah tipe data kumpulan yang memiliki pasangan kunci-nilai.
List dapat dideklarasikan dengan menggunakan kurung siku []
. Elemen-elemen dalam list dipisahkan dengan tanda koma ,
.
# Deklarasi list dengan tipe data integer
angka = [1, 2, 3, 4, 5]
# Deklarasi list dengan tipe data string
nama = ["Andi", "Budi", "Cici"]
# Deklarasi list dengan tipe data campuran
campuran = [1, "Andi", True, [1, 2, 3]]
List dapat ditampilkan dengan menggunakan fungsi print()
.
print(angka)
Output:
[1, 2, 3, 4, 5]
Slicing digunakan untuk mengambil sebagian elemen dari list. Slicing menggunakan notasi [start:end]
, di mana:
- start adalah indeks awal elemen yang akan diambil.
- end adalah indeks akhir elemen yang akan diambil.
Jika end
tidak ditentukan, maka slicing akan mengambil elemen hingga elemen terakhir.
angka = [1, 2, 3, 4, 5]
# Mengambil elemen pertama dan kedua
print(angka[:2])
# Mengambil elemen ketiga dan keempat
print(angka[2:4])
# Mengambil semua elemen
print(angka[:])
Output:
[1, 2]
[3, 4]
[1, 2, 3, 4, 5]
Data di dalam list dapat diubah dengan menggunakan operator assignment =
.
angka = [1, 2, 3, 4, 5]
# Mengubah elemen pertama menjadi 10
angka[0] = 10
# Mengubah elemen kedua menjadi "Andi"
angka[1] = "Andi"
print(angka)
Output:
[10, "Andi", 3, 4, 5]
Item dapat ditambahkan ke dalam list dengan menggunakan metode append()
.
angka = [1, 2, 3, 4, 5]
# Menambahkan elemen 6
angka.append(6)
print(angka)
Output:
[1, 2, 3, 4, 5, 6]
Item juga dapat ditambahkan ke dalam list dengan menggunakan metode insert()
. Metode insert()
mengambil dua parameter, yaitu indeks dan elemen yang akan ditambahkan.
angka = [1, 2, 3, 4, 5]
# Menambahkan elemen 6 di indeks ke-2
angka.insert(2, 6)
print(angka)
Output:
[1, 2, 6, 3, 4, 5]
Item dapat dihapus dari list dengan menggunakan metode pop()
. Metode pop()
mengembalikan elemen yang dihapus.
angka = [1, 2, 3, 4, 5]
# Menghapus elemen terakhir
angka.pop()
print(angka)
# Menghapus elemen di indeks ke-2
angka.pop(2)
print(angka)
Output:
[1, 2, 3, 4]
[1, 2, 4]
Item juga dapat dihapus dari list dengan menggunakan metode remove()
. Metode remove()
mengambil satu parameter, yaitu elemen yang akan dihapus.
angka = [1, 2, 3, 4, 5]
# Menghapus elemen 3
angka.remove(3)
print(angka)
Output:
[1, 2, 4, 5]
List dapat digabungkan dengan menggunakan operator +
.
angka1 = [1, 2, 3]
angka2 = [4, 5, 6]
# Menggabungkan dua list
angka = angka1 + angka2
print(angka)
Output:
[1, 2, 3, 4, 5, 6]
List dapat diurutkan dengan menggunakan metode sort()
. Metode sort()
mengurutkan list secara ascending (dari kecil ke besar).
angka = [5, 2, 1, 3, 4]
# Mengurutkan list
angka.sort()
print(angka)
Output:
[1, 2, 3, 4, 5]
List juga dapat diurutkan secara descending (dari besar ke kecil) dengan menggunakan metode sort()
dan parameter reverse=True
.
angka = [5, 2, 1, 3, 4]
# Mengurutkan list secara descending
angka.sort(reverse=True)
print(angka)
Output:
[5, 4, 3, 2, 1]
Python menyediakan beberapa fungsi yang dapat digunakan untuk bekerja dengan list, antara lain:
len()
: Mengembalikan panjang list
min()
: Mengembalikan elemen terkecil dari list
max()
: Mengembalikan elemen terbesar dari list
sum()
: Mengembalikan jumlah semua elemen dari list
in
: Memeriksa apakah elemen tertentu ada di dalam list
not in
: Memeriksa apakah elemen tertentu tidak ada di dalam list
- Buatlah program untuk membuat list yang berisi nama-nama buah.
- Tambahkan elemen "anggur" ke dalam list tersebut.
- Hapus elemen "apel" dari list tersebut.
- Urutkan list tersebut secara ascending.
- Tampilkan list tersebut.
Error adalah kesalahan yang terjadi pada program yang menyebabkan program tidak dapat berjalan dengan semestinya. Error biasanya disebabkan oleh kesalahan sintaks atau logika program.
# Ini adalah kode yang menyebabkan error
1 / 0
Kode ini akan menghasilkan error ZeroDivisionError
. Error ini terjadi karena kita mencoba membagi dengan 0.
Exception adalah jenis error yang lebih khusus. Exception biasanya disebabkan oleh kondisi yang tidak terduga, seperti kesalahan input dari pengguna atau kegagalan akses ke sumber daya.
# Ini adalah kode yang menghasilkan exception
angka = input("Masukkan bilangan bulat: ")
angka = int(angka)
Kode ini akan menghasilkan exception ValueError
. Error ini terjadi karena input pengguna bukan bilangan bulat.
Untuk mengatasi error pada program, kita dapat menggunakan exception handling. Exception handling memungkinkan kita untuk menangkap dan menangani error yang terjadi pada program.
Untuk menangkap exception, kita dapat menggunakan blok try
dan except
. Blok try
akan menjalankan kode yang kemungkinan dapat menyebabkan error. Jika terjadi error, maka kode dalam blok except
akan dijalankan.
try:
# Ini adalah kode yang kemungkinan dapat menyebabkan error
angka = input("Masukkan bilangan bulat: ")
angka = int(angka)
except ValueError:
# Ini adalah kode yang akan dijalankan jika terjadi error
print("Input harus berupa bilangan bulat")
# Output
Masukkan bilangan bulat: "abc"
Input harus berupa bilangan bulat
Kode ini akan menampilkan pesan kesalahan jika input pengguna bukan bilangan bulat.
Kita juga dapat membuat exception sendiri dengan menggunakan keyword raise
. Keyword raise
digunakan untuk melempar exception ke program.
def hitung(angka):
if angka < 0:
# Lempar exception
raise ValueError("Angka tidak boleh negatif")
try:
hitung(-1)
except ValueError as e:
print(e)
# Output
Angka tidak boleh negatif
Kode ini akan melempar exception ValueError
jika input pengguna kurang dari 0.
Berikut adalah beberapa latihan soal untuk menguji pemahaman Anda tentang materi error handling di Python:
- Buatlah program yang menerima input dari pengguna berupa bilangan bulat. Jika input pengguna bukan bilangan bulat, maka program harus menampilkan pesan kesalahan.
- Buatlah program yang membaca file teks. Jika file teks tidak ada, maka program harus menampilkan pesan kesalahan.
- Buatlah program yang mencoba mengakses database. Jika database tidak ada, maka program harus menampilkan pesan kesalahan.