Anda di halaman 1dari 19

Laporan Praktikum

Algoritma dan Pemrograman


Fungsi dan Rekursif dan Penanganan
Kesalahan

Asisten :
Archie Dylan Ramadhan 11211015

Adha Karamina Achmad 16211001

Disusun Oleh :
Tri Wahyuni 10221032

Andini Callista Hendriani 10221020

Ghina Alyaa Farraas 10221056

Teresa Novinda Putri Valentine 12221082

Haur Nahdah Syakirah 22221013

28 Oktober 2022 dan 6 November 2022


Dasar Teori Fungsi Dan Rekursif
Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif
sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa rekursif
bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil
prosedur atau fungsi. Rekursif merupakan teknik pemrograman yang penting, dan beberapa
bahasa pemrograman modern mendukung keberadaan proses rekursif ini Pemanggilan
prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa
diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik
pemrograman yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan
mengeksperisikannya ke dalam suku-suku dari program lain dengan menambahkan
langkahlangkah sejenis. Contoh paling sederhana dari proses rekursif adalah menghitung nilai
faktorial dari bilangan bulat. Nilai faktorial, secara rekursif dapat ditulis sebagai :

0! = 1

N! = N x (N-1)!, Untuk N > 0

yang secara notasi pemrograman bisa ditulis sebagai:

FAKTORIAL (0) = 1 .................................. 1

FAKTORIAL (N) = N * FAKTORIAL (N-1) .................2

Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation), yang berarti
bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan
argumen yang lebih kecil. Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal. Setiap
fungsi rekursi paling sedikit mempuyai 1 (satu) nilai awal; jika tidak, fungsi tersebut tidak bisa
dihitung secara eksplisit. Proses rekursi akan selesai , ini terletak pada kondisi pernyataan if-
nya. Jika pernyataan if menjadi FALSE maka akan menghentikan proses rekursi Prinsif dan
proses rekursi:
1. Memiliki kasus non rekursi(sederhana)
2. Kasus awal diarahkan menuju kasus sederhana
3. Mendefinisikan proses rekursi

Dalam bentuk pernyataan , biasanya menggunakan pernyataan if( atau if……else). Contoh
program rekursi sederhana dengan DEV C++
#include <iostream>
using namespace std;
void cetak(int n)
{
if(n<=4)
cetak(n+1);

1
cout<<n<<endl;
}
int main(int argc, char *argv[])
{
cout<<“Hasil dengan cara menggunakan rekursif: “;
cetak(1);
system(“PAUSE”);
return EXIT_SUCCESS;
}

Langkah-langkah untuk mendefinisikan fungsi dengan domain bilangan cacah:

1. Langkah basis: Definisikan nilai fungsi pada saat nol.


2. Langkah rekursif: Berikan aturan untuk mencari nilai fungs iuntuk setiap bilangan bulat
berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil.

Definisi seperti itu disebut rekursif atau definisi induktif.

Bentuk rekursif :

a. Suatu subrutin/fungsi/ prosedur yang memanggil dirinya sendiri.


b. Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin.
c. Dengan rekursi, program akan lebih mudah dilihat.

Bentuk rekursi bertujuan untuk menyederhanakan penulisan program, menggantikan


bentuk iterasi. Syarat bentuk rekursif adalah ada kondisi terminal (basis), ada subroutine call
yang melibatkan parameter yang nilainya menuju kondisi terminal (recurrence).

Proses Rekursif

Untuk memahami proses rekursif yang terjadi dalam sebuah fungsi rekursif, perhatikan
contoh sederhana di bawah ini. Contoh di bawah ini menyajikan satu fungsi untuk menghitung
harga pangkat suatu nilai bilangan bulat misalnya 35. berdasarkan hubungan rekurens seperti
dijelaskan diatas, maka proses rekursif akan tampak pada gambar berikut ini:

Dari definisi tersebut, statemen pertama menunjukkan nilai yang utama dari fungsi, dan
statemen kedua menunjukan perulangan penurunan dari n yaitu n-1.

2
Selain fungsi, prosedur juga dapat dilakukan operasi rekursif. Sebagai contoh
penggunaan proses rekursif pada prosedur adalah prosedur pencarian biner (binary search).
Dalam beberapa hal rekursif kurang efisien dibandng proses iterasi. Dalam artian pemecahan
secara rekursif dan secara iterasi mempunyai keuntungan dan kekurangan yang bisa saling
diperbandingkan. Adalah cukup sulit untuk menentukan mana yang paling sederhana, paling
jelas, paling efisien dan paling mudah dibanding yang lain. Bisa ditambahkan, pemilihan secara
iteratif maupun rekursif boleh dikatakan merupakan kesenangan seorang programmer sesuai
dengan keinginannya.

Kelebihan perulangan rekursif adalah sangat mudah untuk melakukan perulangan


dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar Dapat
melakukan perulangan dengan batasan fungsi.

Kekurangan perulangan rekursif adalah Tidak bisa melakukan nested loop atau looping
bersarang. Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan
tertentu saja. Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel
lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack
tak cukup lagi (Stack Overum). Proses agak berbelit-belit karena terdapat pemangilan fungsi
yang berulang-ulang dan pemanggilan data yang ditumpuk.

Dasar Teori Penanganan Kesalahan


Menangani Eksepsi Dengan Try,Except

Terjadinya eksepsi pada program dapat menyebabkan program terhenti,Untuk


mencegah hal tersebut,kita harus mengantisipasi hal tersebut Python menyediakan method
penanganan eksepsi dengan menggunakan pernyataan try dan except. Di dalam blok try kita
meletakkan baris program yang kemungkinan akan terjadi error.Bila terjadi error,maka
penanganannya diserahkan kepada blok except.

Menangani Eksepsi Tertentu

Sebuah pernyataan try, bisa memiliki sejumlah pernyataan except untuk menangani
jenis–jenis eksepsi secara lebih spesifik. Kita juga bisa mendefinisikan beberapa error
sekaligus menggunakan tuple.

Memunculkan Eksepsi

Eksepsi muncul bila terjadi error pada saat runtime atau saat program berjalan. Akan
tetapi, kita juga bisa memunculkan eksepsi dengan sengaja untuk maksud tertentudengan
menggunakan kata kunciraise.Pernyataan try bisa memiliki pasangan pernyataan finally.
Pernyataan di dalam blokfinally akan tetap dieksekusi bagaimanapun kasusnya. Finally biasa

3
digunakan untuk melepaskan koneksi dengan resource eksternal.Seperti misalnya saat kita
sedang mengedit suatu file di internet dan tiba–tibainternet terputus. Atau saat kita login ke
pusat data dan koneksi terputus.Pada kasus tersebut, kita harus membersihkan resource yang
digunakan, terlepas iasukses atau tidak. Aksi tersebut (menutup file, atau memutus koneksi ke
jaringan) dilakukan dengan menggunakan pernyataan finally untuk menjamin suatu perintah
tetap dieksekusi.

4
Source Code
Fungsi dan Rekursif nomor 1, 2, 3, dan 5.

No. Program_Mencari_Nilai_Faktorial.py

1 #fungsi untuk mencari nilai faktorial dari suatu angka.


2
3 print(".:: Mencari Nilai Faktorial ::.")
4
5 def faktorial(nilai):
6 hasil = 1
7 for i in range(nilai):
8 print(f"{nilai-i}", end = " ")
9 hasil += hasil*(nilai-i)
10 if i == nilai-1:
11 print(f"={hasil}")
12 else:
13 print(end =" x ")
14 faktorial(int(input("\nMasukkan angka: ")))

No. Program_Merepresentasikan_Fungsi_Matematika.py

1 #fungsi yang merepresentasikan fungsi matematika.


2
3 print(".:: Merepresentasikan Fungsi Matematika ::.")
4
5 def fungsi(x):
6 if (x<=-10 or x>=10):
7 print("\nMaaf nilai x tidak memenuhi syarat, silahkan
8 masukan nilai x antara -10 sampai 10 ")
9 fungsi(int(input("Masukan nilai x | -10 > x > 10 :")))
10 else:
11 y = 6*(x*x)+3*x+2
12 print(f"\ny = 6x\u00b2 + 3x + 2")
13 print(f"\nx = {x}")
14 print(f"y = 6({x})\u00b2 + 3({x}) + 2 = {y}")
15 fungsi(int(input("Masukan nilai x | -10 > x > 10 :"))

No. Program_Menghasilkan_List_Elemen.py

1 #fungsi yang menghasilkan list dengan elemen suatu string.


2
3 print(".:: Menghasilkan List Elemen ::.")
4
5 angka="0123456789"
6 alp="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
7 sym="+-@$()*/':#,=!?[]{}<>&_%√|¦\¤~¥°`...€$¥£¢₹₦¤ΦπΠ™©®^Δβα;«»¡¿"
8 def elemen(a):
9 b=[];c=[];d=[];e=[]
10 for i in range(len(a)):
11 if a[i] in angka:
12 b.append(a[i])

5
13 elif a[i] in alp:
14 c.append(a[i])
15 elif a[i] in sym:
16 d.append(a[i])
17 e.append("".join(c))
18 e.append("".join(b))
19 e.append("".join(d))
20 print(e)
21 elemen(input("masukan elemen : "))

No. Program_Mencetak_Jumlah_Bilangan_Genap.py

1 #mencetak jumlah bilangan genap dari rentang a sampai b


2
3 print(".:: Mencetak Jumlah Bilangan Genap ::.")
4
5 def rekrusif(a,b,c,d):
6 if a>b:
7 print("\nNilai tidak memenuhi syarat\n")
8 berapa(int(input("Masukan nilai batas bawah :
9 ")),int(input("Masukan nilai batas atas : ")),0,[])
10 else:
11 if a%2!=0:
12 a=a+1
13 d.append(str(a))
14 c+=a
15 if a<b-1:
16 a+=2
17 rekrusif(a,b,c,d)
18 else:
19 print("Jumlah bilangan genap :", c, "didapat dari",
20 "+".join(d))
21 rekrusif(int(input("Masukan nilai batas bawah :
22 ")),int(input("Masukan nilai batas atas : ")),0,[])

Penanganan Kesalahan
No. Penanganan_Kesalahan_Program_Mencari_Nilai_Faktorial.py

1 print('.:: Program Mencari Nilai Faktorial ::.')


2 def hitung_faktorial (n):
3 if n >1:
4 return n * hitung_faktorial(n - 1)
5 return 1
6 while True:
7 try:
8 n = input("Masukkan Angka: ")
9 faktorial = hitung_faktorial(int(n))
10 print (f'{n}! = {faktorial}')
11 break
12 except ValueError:
13
14 print ("Silahkan ulangi!")

6
No. Penanganan_Kesalahan_ Program_Merepresentasikan_Fungsi_Matematika.py

1 print('.:: Fungsi Matematika ::.\n')


2
3 def fungsi_matematika(x):
4 y = 6 * x**2 + 3 * x + 2
5 return f'\ny = 6 * {x}² + 3 * {x} + 2 = {y}'
6
7 try:
8 bilangan = int(input('Masukkan nilai x = '))
9
10 if bilangan > -10 or bilangan < 10:
11 raise AssertionError()
12 else:
13 print(fungsi_matematika(bilangan))
14 except ValueError:
15 print('\nInput harus berupa angka!')
16 except AssertionError:
17 print('\nRentang nilai x adalah -10 sampai 10')

7
Screenshot Fungsi dan Rekursif
1. Program Mencari Nilai Faktorial

Tampilan awal program, pengguna diminta untuk memasukkan nilai yang diinginkan.

Setelah memasukkan nilai atau angka, akan menampilkan hasil dari nilai atau angka yang
dimasukan dalam program ini.

2. Program Merepresentasikan Fungsi Matematika

8
Tampilan awal program, pengguna diminta untuk memasukan pilihan angka sesuai aturan yang
ada.

Setelah memasukkan nilai atau angka yang di inginkan pengguna, akan menampilkan hasil dari
program.

9
3. Program Menghasilkan List Elemen

Tampilan awal program, pengguna diminta untuk memasukan elemen bebas.

Setelah memasukkan nilai atau angka yang di inginkan pengguna, akan menampilkan hasil
elemen yang tersusun sesuai fungsi program.

5. Program Mencetak Jumlah Bilangan Genap

10
Tampilan awal program, pengguna diminta untuk memasukan nilai batas bawah dan nilai batas
atasnya.

Setelah memasukkan nilai atau angka yang di inginkan pengguna, akan menampilkan hasiil
jumlah bilangan genap dari batas atas dab batas bawah yang dipilih.

Screenshot Penanganan Kesalahan


1. Program Penanganan Kesalahan Mencari Nilai Faktorial

Tampilan awal program, pengguna diminta untuk memasukan angka yang diinginkan.

11
Setelah memasukkan nilai atau angka, akan menampilkan hasil dari nilai atau angka yang
dimasukan dalam program ini.

2. Program Penanganan Kesalahan Mempresentasikan Fungsi Matematika

Tampilan awal program, pengguna diminta untuk memasukan nilai x.

Setelah memasukkan nilai atau angka, akan menampilkan hasil dari program ini.

12
13
Pembahasan Fungsi dan Rekursif
Program_Mencari_Nilai_Faktorial.py
No. Penjelasan

1 - 3 Menampilkan judul program, yaitu mencari nilai faktorial.

5 - 6 Menggunakan fungsi def untuk variabel nilai, lalu menyatakan bahwa hasil = 1.

7 - 13 Menggunakan fungsi for i in range untuk mencakup agar data yang masuk sesuai dengan
perintah awal, setelah itu membuat variabel rumus untuk mencari niali faktorial. Jika i
yang dimasukkan sesuai dengan syarat yang ada dan telah ditetapkan yaitu i == nilai-1,
maka tambpilkan hasilnya, sesuai dengan data yang dimasukan oleh pengguna.

14 Setelah dibentuk fungsi untuk mencari nilai faktorial dari suatu bilangan, masukan angka
yang ingin diketahui nilai faktorialnya oleh pengguna.

Program_Merepresentasikan_Fungsi_Matematika.py
No. Penjelasan

1 - 3 Menampilakan judul program, yaitu mempresentasikan fungsi matematika.

5 Menggunakan fungsi def untuk fungsi (x)

6 - 14 Menggunakan fungsi if dimana x yang dimasukan nilainya antara -10 hingga 10, apabila
nilai yang dimasukan tidak memenuhi syarat maka akan menampilkan perintah untuk
memberi tahu kepada pengguna bahwa nilai yang dimasukan salah sehingga diminta
kembali memasukkan nilai yang benar. Setelah itu, membuat rumus matematika dan
menampilkan rumus dengan memasukan x kedalam rumus sesuai yang dimasukan oleh
pengguna.

15 Memasukan nilai x yang mana nilainya harus antara -10 hingga 10.

Program_Menghasilkan_List_Elemen.py
No. Penjelasan

1 - 3 Menampilakan judul program, yaitu menghasilkan list elemen.

5 - 7 Membuat variabel untuk memberi batasan komponen atau elemen mana yang termasuk
dalam bagian variabel masing-masing, diantara angka, alphabet, dan symbol.

8 - 9 Menggunakan fungsi def untuk elemen(a), setelah itu membagi elemen b,c,d serta e.

10 - 20 Menggunakan fungsi for j in range untuk elemen a yang dimana jika a[i] dalam angka
maka termasuk kedalam elemen b, jika a[i] dalam alphabet maka termasuk elemen c, dan
jika a[i] dalam symbol maka termasuk elemen d, pada hal ini menggunakan fungsi
.append. Menggunakan fungsi .append menggabungkan elemen c, elemen b dan elemen d
kedalam elemen e. Lalu setelah itu, print elemen e.

21 Memasukan elemen oleh pengguna yang terdiri dari angka, alphabet dan symbol sesuai
keinginan, tetapi harus memenuhi syarat yang ada pada program

14
Program_ Mencetak_Jumlah_Bilangan_Genap.py
No. Penjelasan

1 - 3 Menampilakan judul program, yaitu mencetak jumlah bilangan genap.

5 Menggunakan fungsi def untuk rekrusif(a,b,c,d).

6 - 9 Menggunakan if jika nilai a lebih besar daripada b maka tidak memenuhi syarat sehingga
diminta memasukan nilai a dan b atau batas bawah dan batas atas sesuai dengan syarat
yang berlaku

10 - 21 Menggunakan else untuk pilihan yang lain, yaitu jika a%2!=0 maka a=a+1 dan a masuk
kedalam bagian elemen atau komponen d dan c merupakan penjumlahan a. Setelah itu
apabila a lebih kecil dari b dikurang 1 maka a+=2 sehingga memenuhi bagian rekrusif.
Atau menggunakan pilihan lain, dimana akan menampilkan jumlah dari bilangan genap
yang didapat dari komponen d.

22 Memasukan batas bawah dan batas atas sesuai dengan syarat yang berlaku pada program.

Pembahasan Penanganan Kesalahan


Program_Penanganan_Kesalahan_Mencari_Nilai_Faktorial.py
No. Penjelasan

1 Menampilakan judul program, yaitu program mencari nilai faktorial.

2 Menggunakan fungsi def untuk menghitung faktorial (n).

3 Menggunakan fungsi if dimana n > 1.

4 Membuat return n * hitung_faktorial(n - 1).

5 - 6 Buat while True dan cetak try.

7 Buat Variabel n untuk input angka.

8 Buat faktorial = hitung_faktorial(int(n))

9 - 10 Cetak (f'{n}! = {faktorial}') dan break

11 Buat untuk ValueError agar program memberitahu jika salah menginput

12 - 13 Baris kosong dan Buat Cetak (“Silahkan ulangi!")

Penanganan_Kesalahan_ Program_Merepresentasikan_Fungsi_Matematika.py
No. Penjelasan

1 Menampilakan judul program, yaitu Fungsi Matematika.

3 - 5 Menggunakan fungsi def untuk fungsi matematika dan memasukan rumus serta
menambahkan return.

15
7 - 8 Tambahkan try dengan input untuk memasukan nilai x.

10 - 11 Buat if bilangan antara -10 hingga 10, kemudian tambahkan AssertionError.

12 – 13 Tambahkan else yang mengeprint fungsi matematika(bilangan).

14 - 15 Tambahkan ValueError dimana jika salah menginput akan terjadi kesalahan.

16 - 17 Tambahkan AssertionError dimana akan mengeprint rentang nilai x.

16
Kesimpulan
Dari praktikum ini, dapat disimpulkan bahwa dalam rekursif sebenarnya terkandung pengertian
prosedur atau fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi
prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi. Pemanggilan prosedur atau
fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa diketahui kapan akan
berakhir. Contoh paling sederhana dari proses rekursi adalah menghitung nilai faktorial dari bilangan
bulat.

Kesimpulan pada modul penanganan kesalahan ini yaitu bahwa mahasiswa sering melakukan
kesalahan dalam penulisan program pyhton. Ada dua jenis kesalahan yang sering dilakukan yaitu
kesalahan logika algoritma dan kesalahan penulisan sintaks. Kesalahan dalam Sintaks (syntax error);
yaitu diantaranya adalah berupa pemakaian Variabel Kurung kurawal{}, Operator + untuk tanda
sambung, Error dalam mengakhiri baris program,dan Lupa dalam mengimport package-nya, Dan dalam
Kesalahan Logika (logical error); diantaranya ada dalam kesalahan pemahaman antar operator postfix
dan prefix dan kesalahandalam penginputan data-data yang seharusnya.

Saran
Saran saya untuk saat ini belum ada, menurut saya apa yang sudah asisten dosen lakukan sampai saat
ini sudah bagus, baik dalam penyampaian materi dan ketegasannya. Terima kasih.

17
Daftar Pustaka
https://kelasprogrammer.com/fungsi-rekursif-python/

https://ichi.pro/id/fungsi-rekursif-python-147294995942692

https://www.advernesia.com/blog/python/errors-and-exceptions-penanganan-error-pada-python/

18

Anda mungkin juga menyukai