Modul 3 ‐ CPMK 0803 ‐ Function, OOP Fundamental, List Multi Dimention, Error Handling - regitapermata30/Modul-Algoritma-Pemrograman GitHub Wiki

Tujuan

Setelah menyelesaikan bab ini, peserta didik diharapkan dapat:

  1. Memahami konsep variabel lokal dalam pemrograman Python.
  2. Menguasai penggunaan pernyataan global untuk mengakses variabel di luar lingkup fungsi.
  3. Memahami konsep parameter wajib dan parameter opsional dalam fungsi.
  4. Menggunakan parameter tak berurut untuk memberikan nilai dengan urutan yang berbeda pada fungsi.
  5. Menguasai konsep dan implementasi fungsi rekursif dalam pemrograman Python.
  6. Menunjukkan pemahaman dalam membuat dan menggunakan fungsi dan metode melalui contoh program.
  7. Memahami dasar-dasar OOP dan menerapkan tipe data terstruktur.
  8. Mengerti perbedaan dan penggunaan list dan array.
  9. Memahami tuple, dictionary, dan cara implementasinya.
  10. Melakukan operasi aritmatika pada list/array.
  11. Mengaplikasikan perulangan pada list/array.
  12. Memahami konsep dan implementasi array multidimensi.
  13. Mengerti konsep dan penanganan exception.
  14. Paham hirarki exception dan menangani multiple exception.
  15. Menguasai penggunaan try-except untuk mengatasi error pada program.

Materi

Perintah Fungsi

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.

Definisi fungsi

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.

Contoh fungsi

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!

Tipe Void

Fungsi dapat memiliki tipe data yang berbeda, termasuk tipe data void. Fungsi dengan tipe void tidak mengembalikan nilai apa pun.

Contoh fungsi dengan tipe void

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

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi rekursif dapat digunakan untuk menyelesaikan masalah yang dapat dipecah menjadi masalah yang lebih kecil.

Contoh Fungsi Rekursif

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

Latihan soal diberikan untuk menguji pemahaman peserta tentang materi perintah percabangan. Berikut adalah beberapa contoh soal yang mudah:

  1. Definisikan fungsi sum() yang menerima dua bilangan dan mengembalikan jumlah kedua bilangan tersebut.
  2. Definisikan fungsi average() yang menerima tiga bilangan dan mengembalikan rata-rata ketiga bilangan tersebut.
  3. Definisikan fungsi fibo() yang menerima bilangan positif N dan mengembalikan deret Fibonacci ke-N.

Konsep PBO

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 dan kekurangan PBO

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

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

Class adalah suatu template yang digunakan untuk membuat objek. Class memiliki atribut dan method.

Definisi Class

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)

Contoh Class

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

Object adalah suatu instance dari class. Object memiliki data dan perilaku yang sesuai dengan class-nya.

Pembuatan Object

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()

Contoh Object

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

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

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.

Pengertian Method Getter

Method getter adalah method yang digunakan untuk membaca nilai atribut. Method getter memiliki nama yang sama dengan atribut yang diaksesnya.

Contoh Method Getter

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())

Manfaat Method Getter/Setter

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

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.

Latihan Soal

Berikut adalah beberapa latihan soal untuk bab 5 Pemrograman Berbasis Objek:

  1. Buatlah class Book dengan atribut title, author, dan pages.
  2. Tambahkan method get_title(), get_author(), get_pages(), set_title(), set_author(), dan set_pages() ke dalam class Book.
  3. Buatlah objek book1 dari class Book dan isi nilai atributnya.
  4. Membaca nilai atribut title, author, dan pages dari objek book1.
  5. Ubah nilai atribut title dan pages dari objek book1.
  6. Membaca nilai atribut title dan pages dari objek book1.

Tipe Data List

List adalah suatu jenis atau tipe data yang digunakan untuk menghimpun kumpulan data, atau data yang berjumlah lebih dari satu.

4 Tipe Data Koleksi pada Python

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.

Deklarasi List

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]]

Menampilkan List

List dapat ditampilkan dengan menggunakan fungsi print().

print(angka)

Output:

[1, 2, 3, 4, 5]

Slicing List

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]

Mengubah Data di Dalam List

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]

Menambah Item ke Dalam List

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]

Menghapus Item dari List

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]

Menyatukan List

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]

Mengurutkan Data

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]

Fungsi dalam List

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

Latihan Soal

  1. Buatlah program untuk membuat list yang berisi nama-nama buah.
  2. Tambahkan elemen "anggur" ke dalam list tersebut.
  3. Hapus elemen "apel" dari list tersebut.
  4. Urutkan list tersebut secara ascending.
  5. Tampilkan list tersebut.

Pengertian Error

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.

Pengertian Exception

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.

Menerapkan Exception untuk Mengatasi Error pada Program

Untuk mengatasi error pada program, kita dapat menggunakan exception handling. Exception handling memungkinkan kita untuk menangkap dan menangani error yang terjadi pada program.

Catching Exception

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.

Raising Exception

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.

Latihan Soal

Berikut adalah beberapa latihan soal untuk menguji pemahaman Anda tentang materi error handling di Python:

  1. Buatlah program yang menerima input dari pengguna berupa bilangan bulat. Jika input pengguna bukan bilangan bulat, maka program harus menampilkan pesan kesalahan.
  2. Buatlah program yang membaca file teks. Jika file teks tidak ada, maka program harus menampilkan pesan kesalahan.
  3. Buatlah program yang mencoba mengakses database. Jika database tidak ada, maka program harus menampilkan pesan kesalahan.