Latihan Soal Bab 4_Program Python
Nama : Asrika Said
NIM : 411423049
Prodi / Kelas : Pendidkan Matematika / B
Mata Kuliah : Komaputasi dan Pemrograman
Dosen Pengampu : Agusyarif Rezka Nuha, S.Pd. M.Si
1. Apa itu fungsi?
Dalam pemrograman, fungsi adalah sekumpulan instruksi yang dikelompokkan menjadi satu kesatuan untuk melakukan tugas tertentu. Fungsi memungkinkan Anda untuk mengorganisir kode, membuatnya lebih mudah dibaca, dan menghindari pengulangan kode. Dengan menggunakan fungsi, Anda dapat memanggilnya berulang kali di berbagai bagian program tanpa harus menulis ulang instruksi yang sama.
Ciri-ciri Fungsi
- Nama Fungsi: Setiap fungsi memiliki nama yang unik yang digunakan untuk memanggilnya.
- Parameter (Argumen): Fungsi dapat menerima masukan berupa parameter, yang memungkinkan pengguna untuk memberikan data yang berbeda saat memanggil fungsi.
- Nilai Kembali: Fungsi dapat mengembalikan nilai setelah menyelesaikan tugasnya. Namun, tidak semua fungsi harus mengembalikan nilai.
- Modularitas: Fungsi membantu memecah program besar menjadi bagian-bagian kecil yang lebih mudah dikelola.
2. Apa itu prosedur
Prosedur dalam pemrograman adalah sekumpulan instruksi yang dikelompokkan untuk melaksanakan tugas tertentu. Prosedur mirip dengan fungsi, tetapi biasanya tidak mengembalikan nilai setelah eksekusi. Tujuan utama dari prosedur adalah untuk menyederhanakan dan mengorganisir kode, sehingga membuatnya lebih terstruktur dan mudah dipahami.
Ketika prosedur dipanggil, semua instruksi di dalamnya dijalankan secara berurutan. Prosedur dapat menerima parameter, yang memungkinkan pengguna untuk memberikan input yang berbeda saat memanggilnya. Penggunaan prosedur meningkatkan keterbacaan kode, meminimalkan pengulangan, dan memudahkan pemeliharaan serta pengujian. Dengan cara ini, prosedur membantu dalam pengembangan perangkat lunak yang lebih efisien, terutama dalam proyek yang lebih besar dan kompleks.
3. Perbedaan Fungsi dengan Prosedur
Fungsi Mengembalikan Nilai, Prosedur Tidak:
- Fungsi: Dirancang untuk melakukan perhitungan atau pengolahan data dan mengembalikan hasil. Ini memungkinkan pengguna untuk mendapatkan nilai dari fungsi yang dapat digunakan dalam ekspresi lain, menjadikannya fleksibel untuk berbagai aplikasi.
- Prosedur: Fokus pada menjalankan serangkaian instruksi atau tugas tertentu tanpa mengembalikan nilai. Prosedur lebih banyak digunakan untuk menjalankan aksi, seperti mengubah status atau menampilkan informasi, tanpa perlu memberikan hasil kembali ke pemanggil.
Tujuan dan Penggunaan yang Berbeda:
- Fungsi: Tujuan utama fungsi adalah untuk menghasilkan output berdasarkan input. Oleh karena itu, fungsi sering digunakan dalam konteks perhitungan atau pengolahan data, di mana hasil dari fungsi diperlukan untuk langkah selanjutnya dalam program.
- Prosedur: Prosedur lebih berorientasi pada tindakan dan pengelolaan alur program. Misalnya, prosedur mungkin digunakan untuk mencetak laporan, menyimpan data, atau mengubah tampilan antarmuka pengguna, di mana hasilnya tidak perlu dikembalikan.
Struktur dan Sintaksis:
- Fungsi: Menggunakan kata kunci return untuk mengembalikan nilai. Ini adalah bagian penting dari definisi fungsi, karena menunjukkan bahwa fungsi memiliki hasil yang bisa digunakan.
- Prosedur: Tidak memerlukan pernyataan return, sehingga strukturnya lebih sederhana dalam hal ini. Prosedur lebih fokus pada eksekusi instruksi tanpa perlu memikirkan nilai yang dikembalikan.
Penggunaan Parameter:
- Fungsi: Parameter yang diterima oleh fungsi digunakan untuk menghasilkan nilai kembali. Ini menciptakan interaksi yang lebih dinamis, karena hasil dapat bervariasi berdasarkan input.
- Prosedur: Parameter yang diterima oleh prosedur biasanya digunakan untuk memodifikasi tindakan yang dilakukan oleh prosedur tanpa perlu mengembalikan nilai. Ini memungkinkan prosedur untuk berfungsi dalam konteks yang lebih luas tanpa terikat pada hasil spesifik.
Perbedaan antara fungsi dan prosedur muncul dari tujuan dan cara mereka dirancang untuk digunakan dalam pemrograman:
- Fungsi dirancang untuk memberikan hasil yang dapat diandalkan dan digunakan dalam berbagai konteks perhitungan atau pengolahan data. Dengan mengembalikan nilai, fungsi memfasilitasi pengembangan kode yang lebih modular dan dapat digunakan kembali, sedangkan
- Prosedur dirancang untuk melaksanakan tugas atau aksi tanpa fokus pada hasil. Ini membuat prosedur lebih sesuai untuk mengelola alur dan interaksi dalam program, terutama dalam konteks aplikasi yang lebih kompleks di mana efek samping dari suatu tindakan lebih penting daripada nilai yang dihasilkan.
4. Apa itu iteratif, rekursif, dan apa perbedaan keduanya
IteratifIteratif adalah pendekatan dalam pemrograman yang menggunakan loop (seperti for atau while) untuk mengulangi serangkaian instruksi hingga kondisi tertentu terpenuhi. Dalam metode ini, proses berulang dilakukan dengan memanfaatkan variabel kontrol yang diubah setiap iterasi. Pendekatan ini sering digunakan ketika jumlah pengulangan dapat ditentukan sebelumnya atau ketika proses yang berulang tidak terlalu kompleks. Contoh penggunaan iteratif adalah menghitung jumlah angka dalam sebuah daftar atau mencetak elemen dari sebuah array.
RekursifRekursif adalah pendekatan yang melibatkan fungsi yang memanggil dirinya sendiri untuk menyelesaikan suatu masalah. Rekursi biasanya digunakan untuk menyelesaikan masalah yang dapat dibagi menjadi sub-masalah yang lebih kecil dan serupa. Setiap panggilan fungsi rekursif biasanya memiliki kondisi dasar yang menghentikan proses rekursi. Contoh penggunaan rekursif adalah menghitung faktorial dari suatu angka atau mencari elemen dalam struktur data seperti pohon.
Berikut adalah penjelasan mengenai perbedaan antara iteratif dan rekursif:
- Metode Pengulangan:
Iteratif: Menggunakan loop (seperti for atau while) untuk mengulangi blok kode. Proses berulang ini dilakukan dengan mengubah variabel kontrol di setiap iterasi.
Rekursif: Menggunakan fungsi yang memanggil dirinya sendiri untuk menyelesaikan masalah. Rekursi membagi masalah menjadi sub-masalah yang lebih kecil.
- Kondisi Berhenti:
Iteratif: Memiliki kondisi yang ditetapkan dalam loop untuk menghentikan iterasi. Misalnya, loop akan berhenti ketika variabel kontrol mencapai nilai tertentu.
Rekursif: Memiliki kondisi dasar yang menghentikan panggilan fungsi rekursif. Tanpa kondisi ini, rekursi dapat menyebabkan stack overflow.
- Penggunaan Memori:
Iteratif: Umumnya lebih efisien dalam penggunaan memori, karena tidak menyimpan banyak panggilan fungsi dalam stack.
Rekursif: Dapat mengkonsumsi lebih banyak memori, karena setiap panggilan fungsi disimpan dalam stack hingga mencapai kondisi dasar.
- Keterbacaan Kode:
Iteratif: Kode dengan pendekatan iteratif bisa lebih panjang dan mungkin lebih sulit dibaca untuk masalah yang kompleks.
Rekursif: Kode rekursif seringkali lebih ringkas dan lebih mudah dipahami untuk masalah yang cocok, seperti struktur pohon atau algoritma tertentu.
- Contoh Penggunaan:
Iteratif: Banyak digunakan untuk menghitung total atau memproses elemen dalam daftar menggunakan loop.
Rekursif: Sering digunakan untuk algoritma seperti pencarian dalam pohon, menghitung faktorial, atau menyelesaikan masalah Fibonacci.
5. Membuat fungsi yang digunakan untuk mengecek suatu bilangan, apakah bilangan tersebut positif atau negatif
Penjelasan:
Definisi Fungsi cek_bilangan:
- Fungsi
cek_bilangan()
didefinisikan tanpa argumen, dan di dalamnya terdapatloop while True
: yang artinyaloop
ini akan berjalan terus-menerus sampai ada kondisi tertentu yang menghentikannya.
Menerima Input dari Pengguna:
Program meminta pengguna memasukkan sebuah angka melalui fungsi input()
. Nilai yang dimasukkan oleh pengguna kemudian dikonversi menjadi tipe float
, sehingga program bisa menerima bilangan desimal (seperti 2.5, -3.7) atau bilangan bulat.
Cek Positif, Negatif, atau Nol:
- Setelah input diterima, program melakukan pengecekan menggunakan struktur kontrol
if
,elif
, danelse
:
- Jika angka yang dimasukkan lebih besar dari nol, maka akan dicetak bahwa bilangan tersebut positif.
- Jika angka lebih kecil dari nol, dicetak bahwa bilangan tersebut negatif.
- Jika angka sama dengan nol, maka program akan mencetak "Bilangan tersebut adalah nol."
Tanya Apakah Ingin Melanjutkan:
- Setelah mencetak hasil, program akan menanyakan kepada pengguna apakah mereka ingin mengecek bilangan lain:
- Jawaban dari pengguna disimpan dalam variabel
lanjut
dan diubah menjadi huruf kecil(.lower())
agar jawaban seperti "YA", "ya", atau "Ya" bisa dibaca dengan benar.
Kondisi Penghentian Program:
- Program mengecek apakah pengguna tidak menjawab "ya":
- Jika pengguna menjawab selain "ya" (misalnya "tidak" atau "no"), program akan mencetak pesan "Terima kasih! Program selesai." dan
break
digunakan untuk keluar dariloop while
, sehingga program berhenti berjalan.
Memulai Program:
- Terakhir, di luar definisi fungsi, ada pemanggilan fungsi
cek_bilangan()
untuk memulai program:
Tahapan ini membuat program terus-menerus mengecek apakah bilangan yang dimasukkan positif, negatif, atau nol, lalu menanyakan apakah pengguna ingin melanjutkan atau tidak.
Berikut hasil jika program dijalankan:
6. Membuat fungsi yang digunakan untuk mengecek suatu bilangan. apakah bilangan bulat atau bilangan ganjil
Penjelasan Kode:
Definisi Fungsi
def cek_bulat_ganjil(angka):
mendefinisikan sebuah fungsi dengan namacek_bulat_ganjil
. Fungsi ini menerima satu parameter, yaituangka
. Fungsi ini bertujuan untuk mengecek apakah angka yang diberikan adalah bilangan bulat atau bilangan ganjil.if angka % 2 == 0:
Dalam fungsi, kita menggunakan operator modulo (%
) untuk memeriksa apakah angka habis dibagi 2. Jikaangka % 2 == 0
, maka bilangan tersebut dianggap genap. Dalam konteks ini, jika bilangan genap, fungsi mengembalikan string:"Bilangan tersebut adalah bilangan bulat."
return "Bilangan tersebut adalah bilangan ganjil." :
Jikaangka
tidak habis dibagi 2 (yaituangka % 2 != 0),
maka bilangan tersebut dianggap ganjil.
Fungsi akan mengembalikan string: "Bilangan tersebut adalah bilangan ganjil."
angka = int(input("Masukkan sebuah bilangan: ")):
Setelah mendefinisikan fungsi, program meminta pengguna untuk memasukkan bilangan melaluiinput().
Input ini kemudian diubah menjadi tipeint
(bilangan bulat) untuk memastikan bahwa operasi matematika dapat dilakukan.hasil = cek_bulat_ganjil(angka) :
Setelah pengguna memasukkan bilangan, program memanggil fungsicek_bulat_ganjil()
dengan argumenangka.
Hasil dari fungsi disimpan dalam variabelhasil.
print(hasil):
program mencetak hasil yang disimpan di variabelhasil,
yang memberikan informasi kepada pengguna apakah bilangan yang dimasukkan adalah bilangan bulat (genap) atau bilangan ganjil.
Contoh hasil saat program dijalankan:
7. Membuat fungsi yang digunakan untuk mengecek apakah suatu tahun adalah tahun kabisat atau bukan
Penjelasan Kode:
def cek_tahun_kabisat(tahun):
Fungsicek_tahun_kabisat
didefinisikan untuk mengecek apakah tahun yang diberikan adalah tahun kabisat.kabisat = tahun % 4 == 0 and (tahun % 100 != 0 or tahun % 400 == 0)
: Di dalam fungsi, kita menggunakan logika untuk menentukan apakah tahun tersebut kabisat, yaitu dapat dibagi 4 dan (tidak dapat dibagi 100 atau dapat dibagi 400).if kabisat:
return f"{tahun} adalah tahun kabisat."
: Jika kabisat bernilaiTrue
, fungsi mengembalikan string yang menyatakan tahun tersebut adalah tahun kabisat.else:
return f"{tahun} bukan tahun kabisat."
: Jikakabisat
bernilaiFalse
, fungsi mengembalikan string yang menyatakan tahun tersebut bukan tahun kabisat.tahun = int(input("Masukkan tahun: "))
: Program meminta pengguna untuk memasukkan tahun dan mengonversinya menjadi integer.hasil = cek_tahun_kabisat(tahun)
: Fungsi dipanggil dengan argumen tahun yang dimasukkan, dan hasilnya disimpan dalam variabelhasil
.print(hasil)
: Program mencetak hasil pengecekan apakah tahun tersebut adalah tahun kabisat atau bukan.
contoh hasil saat program dijalankan:
8. Membuat sebuah program yang menerapkan proses rekursif
Penjelasan Kode:
- Definisi Fungsi
def faktorial_recursive(n):
Di sini, fungsi faktorial_recursive
didefinisikan untuk menghitung faktorial dari bilangan bulat n
yang diberikan sebagai argumen.
- Kasus Dasar
if n <= 1:
return 1
Dalam rekursi, kita perlu menentukan kasus dasar untuk menghentikan proses. Dalam hal ini, jika n adalah 0 atau 1, fungsi akan mengembalikan 1. Ini sesuai dengan definisi faktorial, di mana 0! = 1
dan 1! = 1.
- Panggilan Rekursif
else:
return n * faktorial_recursive(n - 1)
Jika n lebih besar dari 1, fungsi akan memanggil dirinya sendiri dengan parameter n - 1. Proses ini akan terus berlanjut hingga mencapai kasus dasar. Hasil dari panggilan rekursif tersebut dikalikan dengan n saat ini, sehingga kita mendapatkan hasil faktorial.
- Input
angka = int(input("Masukkan sebuah bilangan bulat non-negatif: "))
: Program memeriksa apakah angka yang dimasukkan pengguna valid (non-negatif). Jika tidak, akan menampilkan pesan kesalahan.
- Menghitung dan Menampilkan Hasil
else:
hasil = faktorial_recursive(angka)
print(f"Faktorial dari {angka} adalah {hasil}.")
Jika input valid, program memanggil fungsi faktorial_recursive
dengan angka yang dimasukkan. Hasilnya kemudian dicetak ke layar.
Contoh hasil saat menjalankan program:
Kategori
- Masih Kosong
Blogroll
- Masih Kosong