1. Definisikanlah operasi PENJUMLAHAN dan PENGURANGAN bilangan bulat sebagai relasi rekurens dalam bentuk notasi fungsional (notasi matematis). 2. Buatlah program (C/C++/Python) yang mengimplementasikan kedua relasi rekurens tersebut dalam bentuk fungsi rekursif, dan lakukan test dengan beberapa kasus.
def tambah(a, b) -> int: if b == 0: return a if b < 0: return kurang(a, abs(b)) return tambah(a, b-1) + 1
def kurang(a, b) -> int: if b == 0: return a if b < 0: return tambah(a, abs(b)) return kurang(a, b-1) - 1
### Program Utama print('PENJUMLAHAN') for i in range(0, 10): a = random.randint(-99, 99) b = random.randint(-99, 99) print(f'⁍ {a:3d} + {b:3d} = {tambah(a, b)}') print('PENGURANGAN') for i in range(0, 10): a = random.randint(-99, 99) b = random.randint(-99, 99) print(f'⁍ {a:3d} - {b:3d} = {kurang(a, b)}') ______________
Sebelum mendefinisikan operasi aritmetika penjumlahan dan pengurangan bilangan bulat, terlebih dahulu kita ingat sifat identitas penjumlahan dan pengurangan, yaitu:
Sifat identitas tersebut menjadi "basis" dari relasi rekurens yang akan didefinisikan.
Maka, dalam bentuk notasi fungsional, operasi penjumlahan dan pengurangan bilangan bulat dan dapat didefinisikan secara simultan (bersama-sama) dengan:
Karena kita telah memiliki definisi relasi rekurens dalam bentuk notasi fungsional, fungsi rekursif yang perlu diimplementasikan dalam bentuk program merupakan "translasi langsung" dari notasi fungsionalnya, yaitu:
def tambah(a, b) -> int: if b == 0: return a if b < 0: return kurang(a, abs(b)) return tambah(a, b-1) + 1
def kurang(a, b) -> int: if b == 0: return a if b < 0: return tambah(a, abs(b)) return kurang(a, b-1) - 1
Pada program di atas, bilangan a dan b dihasilkan secara acak (random), dengan menggunakan method randint() dari package random pada Python.
4 votes Thanks 2
4dministraktor
waduh lagi2.. makasih bnyk kak. pythonnya sy mengerti. matematisnya yg msh agak bingung wk wk
(Jawaban soal nomor 1 ada di bagian Pembahasan.)
Kode Program (Python)
import random
def tambah(a, b) -> int:
if b == 0:
return a
if b < 0:
return kurang(a, abs(b))
return tambah(a, b-1) + 1
def kurang(a, b) -> int:
if b == 0:
return a
if b < 0:
return tambah(a, abs(b))
return kurang(a, b-1) - 1
### Program Utama
print('PENJUMLAHAN')
for i in range(0, 10):
a = random.randint(-99, 99)
b = random.randint(-99, 99)
print(f'⁍ {a:3d} + {b:3d} = {tambah(a, b)}')
print('PENGURANGAN')
for i in range(0, 10):
a = random.randint(-99, 99)
b = random.randint(-99, 99)
print(f'⁍ {a:3d} - {b:3d} = {kurang(a, b)}')
______________
Contoh Output Hasil Eksekusi
PENJUMLAHAN
⁍ 91 + 81 = 172
⁍ 99 + 84 = 183
⁍ 78 + -22 = 56
⁍ -96 + 63 = -33
⁍ -41 + 67 = 26
⁍ 56 + -71 = -15
⁍ -94 + -34 = -128
⁍ 37 + 81 = 118
⁍ -44 + 40 = -4
⁍ -91 + 38 = -53
PENGURANGAN
⁍ -43 - 47 = -90
⁍ 8 - 27 = -19
⁍ 31 - -95 = 126
⁍ 58 - -58 = 116
⁍ 88 - -49 = 137
⁍ 58 - -98 = 156
⁍ 40 - 76 = -36
⁍ 84 - -9 = 93
⁍ -66 - 88 = -154
⁍ 34 - 54 = -20
______________
Pembahasan
Sebelum mendefinisikan operasi aritmetika penjumlahan dan pengurangan bilangan bulat, terlebih dahulu kita ingat sifat identitas penjumlahan dan pengurangan, yaitu:
Sifat identitas tersebut menjadi "basis" dari relasi rekurens yang akan didefinisikan.
Maka, dalam bentuk notasi fungsional, operasi penjumlahan dan pengurangan bilangan bulat dan dapat didefinisikan secara simultan (bersama-sama) dengan:
Karena kita telah memiliki definisi relasi rekurens dalam bentuk notasi fungsional, fungsi rekursif yang perlu diimplementasikan dalam bentuk program merupakan "translasi langsung" dari notasi fungsionalnya, yaitu:
def tambah(a, b) -> int:
if b == 0:
return a
if b < 0:
return kurang(a, abs(b))
return tambah(a, b-1) + 1
def kurang(a, b) -> int:
if b == 0:
return a
if b < 0:
return tambah(a, abs(b))
return kurang(a, b-1) - 1
Pada program di atas, bilangan a dan b dihasilkan secara acak (random), dengan menggunakan method randint() dari package random pada Python.
pythonnya sy mengerti. matematisnya yg msh agak bingung wk wk