{ "cells": [ { "cell_type": "markdown", "id": "64a161c0", "metadata": {}, "source": [ "# Fungsi (Function) di Pyhon\n", "Fungsi dalam bahasa pemrograman Python adalah blok kode terpisah yang digunakan untuk melakukan tugas tertentu. Fungsi memungkinkan Anda mengorganisir kode Anda menjadi unit yang lebih kecil dan terpisah, yang dapat digunakan kembali dalam berbagai bagian program. Ini mempromosikan modularitas, kerapihan, dan pemeliharaan yang lebih mudah." ] }, { "cell_type": "markdown", "id": "cfb6f74a", "metadata": {}, "source": [ "Mirip dengan bagaimana kehidupan sehari-hari kita dapat memecahkan masalah menjadi tindakan-tindakan terpisah, fungsi dalam Python memungkinkan kita memecah program menjadi bagian-bagian yang lebih kecil, yang menjadikan pengembangan dan pemeliharaan kode lebih mudah. Dalam Python, fungsi didefinisikan dengan kata kunci def, diikuti oleh nama fungsi, parameter (jika ada), dan blok kode yang akan dieksekusi ketika fungsi dipanggil." ] }, { "cell_type": "markdown", "id": "1ee3be52", "metadata": {}, "source": [ "### A. Function dalam Pemrograman\n", "Fungsi digunakan untuk mengelompokkan kode yang berhubungan menjadi unit yang terpisah dan dapat digunakan kembali. Contoh sederhana adalah fungsi penjumlahan dua angka:" ] }, { "cell_type": "code", "execution_count": null, "id": "c8f81bbc", "metadata": {}, "outputs": [], "source": [ "def penjumlahan(a, b):\n", " hasil = a + b\n", " return hasil\n", "\n", "hasil_penjumlahan = penjumlahan(5, 3)\n", "print(\"Hasil penjumlahan:\", hasil_penjumlahan)" ] }, { "cell_type": "markdown", "id": "7f9f0dd4", "metadata": {}, "source": [ "### B. Sintaksis, Nama, Blok Kode, dan Nilai Kembalian\n", "Fungsi didefinisikan dengan menggunakan kata kunci def, diikuti oleh nama fungsi dan blok kode yang akan dijalankan saat fungsi dipanggil:" ] }, { "cell_type": "code", "execution_count": 1, "id": "529807ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Halo, selamat datang!\n" ] } ], "source": [ "def sapa():\n", " print(\"Halo, selamat datang!\")\n", "\n", "sapa() # Memanggil fungsi sapa" ] }, { "cell_type": "code", "execution_count": 3, "id": "4a43b5ba", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data Mahasiswa\n", "Nama: John Doe\n", "NIM: 123456\n", "Jurusan: Teknik Informatika\n", "Nilai UTS: 85\n", "Nilai UAS: 90\n" ] } ], "source": [ "def cetak_nilai():\n", " print(\"Data Mahasiswa\")\n", " print(\"Nama: John Doe\")\n", " print(\"NIM: 123456\")\n", " print(\"Jurusan: Teknik Informatika\")\n", " print(\"Nilai UTS: 85\")\n", " print(\"Nilai UAS: 90\")\n", "\n", "cetak_nilai() # Memanggil fungsi cetak_nilai untuk mencetak data" ] }, { "cell_type": "code", "execution_count": 6, "id": "a1950d1c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Folder 'data' berhasil dibuat.\n" ] } ], "source": [ "import os\n", "\n", "def buat_folder(jalur_folder):\n", " if not os.path.exists(jalur_folder):\n", " os.makedirs(jalur_folder)\n", " print(f\"Folder '{jalur_folder}' berhasil dibuat.\")\n", " else:\n", " print(f\"Folder '{jalur_folder}' sudah ada.\")\n", "\n", "nama_folder = \"data\"\n", "buat_folder(nama_folder)\n" ] }, { "cell_type": "markdown", "id": "2f5d5fb2", "metadata": {}, "source": [ "Fungsi dapat mengembalikan nilai menggunakan pernyataan return:" ] }, { "cell_type": "code", "execution_count": 2, "id": "32ef99b9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hasil kuadrat: 16\n" ] } ], "source": [ "def kuadrat(x):\n", " return x ** 2\n", "\n", "hasil_kuadrat = kuadrat(4)\n", "print(\"Hasil kuadrat:\", hasil_kuadrat)" ] }, { "cell_type": "code", "execution_count": 5, "id": "1bcca711", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Luas lingkaran dengan jari-jari 5 adalah 78.54\n" ] } ], "source": [ "def hitung_luas_lingkaran(jari_jari):\n", " pi = 3.14159\n", " luas = pi * (jari_jari ** 2)\n", " return luas\n", "\n", "jari_jari_lingkaran = 5\n", "luas = hitung_luas_lingkaran(jari_jari_lingkaran)\n", "print(f\"Luas lingkaran dengan jari-jari {jari_jari_lingkaran} adalah {luas:.2f}\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "61e22fda", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25 derajat Celsius sama dengan 77.00 derajat Fahrenheit\n" ] } ], "source": [ "def celsius_ke_fahrenheit(celsius):\n", " fahrenheit = (celsius * 9/5) + 32\n", " return fahrenheit\n", "\n", "suhu_celsius = 25\n", "suhu_fahrenheit = celsius_ke_fahrenheit(suhu_celsius)\n", "print(f\"{suhu_celsius} derajat Celsius sama dengan {suhu_fahrenheit:.2f} derajat Fahrenheit\")" ] }, { "cell_type": "markdown", "id": "189ea4e2", "metadata": {}, "source": [ "### C. Function: Required dan Unrequired:\n", "Parameter adalah nilai yang diterima oleh fungsi saat dipanggil. Ada dua jenis parameter:\n", "* required (harus diberikan saat pemanggilan)\n", "* unrequired (opsional)." ] }, { "cell_type": "code", "execution_count": null, "id": "85ad6616", "metadata": {}, "outputs": [], "source": [ "def hitung_luas_persegi(sisi):\n", " luas = sisi * sisi\n", " return luas\n", "\n", "sisi_persegi = 5\n", "luas_persegi = hitung_luas_persegi(sisi_persegi)\n", "print(\"Luas persegi:\", luas_persegi)" ] }, { "cell_type": "code", "execution_count": null, "id": "0bde19b2", "metadata": {}, "outputs": [], "source": [ "def tampilkan_info(nama, usia=None):\n", " if usia:\n", " print(f\"{nama} berusia {usia} tahun.\")\n", " else:\n", " print(f\"Nama: {nama}\")\n", "\n", "tampilkan_info(\"Alice\", 25)\n", "tampilkan_info(\"Bob\")" ] }, { "cell_type": "code", "execution_count": null, "id": "8e63a5fd", "metadata": {}, "outputs": [], "source": [ "def hitung_total(daftar_angka):\n", " total = sum(daftar_angka)\n", " return total\n", "\n", "angka = [3, 7, 1, 9]\n", "hasil = hitung_total(angka)\n", "print(\"Total:\", hasil)\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "eef1ae0c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data Mahasiswa\n", "Nama: John Doe\n", "NIM: 123456\n", "Jurusan: Teknik Informatika\n", "Nilai UTS: 85\n", "Nilai UAS: 90\n", "Data Mahasiswa\n", "Nama: Jane Smith\n", "NIM: 789012\n", "Jurusan: Sistem Informasi\n", "Nilai UTS: 0\n", "Nilai UAS: 0\n" ] } ], "source": [ "def cetak_nilai(nama, nim, jurusan, nilai_uts=0, nilai_uas=0):\n", " print(\"Data Mahasiswa\")\n", " print(\"Nama:\", nama)\n", " print(\"NIM:\", nim)\n", " print(\"Jurusan:\", jurusan)\n", " print(\"Nilai UTS:\", nilai_uts)\n", " print(\"Nilai UAS:\", nilai_uas)\n", "\n", "cetak_nilai(\"John Doe\", \"123456\", \"Teknik Informatika\", 85, 90)\n", "cetak_nilai(\"Jane Smith\", \"789012\", \"Sistem Informasi\")" ] }, { "cell_type": "markdown", "id": "db6815e7", "metadata": {}, "source": [ "## D. Implementasi Function Secara Prosedural\n", "Dalam kode berikut ini, setiap langkah ditempatkan dalam fungsi-fungsi yang terpisah sesuai dengan langkah-langkah yang Anda sebutkan. main() adalah fungsi utama yang mengoordinasikan langkah-langkah tersebut. Kode ini akan meminta input URL, mendownload file PDF dari URL, meminta input nama file, menyimpan file di folder \"pdf_files\", dan menginformasikan pesan berhasil kepada pengguna." ] }, { "cell_type": "code", "execution_count": null, "id": "52ef1eff", "metadata": {}, "outputs": [], "source": [ "import os\n", "import requests\n", "\n", "\n", "# Fungsi untuk meminta input URL dari pengguna\n", "def input_url():\n", " return input(\"Masukkan URL file PDF: \")\n", "\n", "\n", "# Fungsi untuk mendownload file PDF dari URL\n", "def download_pdf(url):\n", " response = requests.get(url)\n", " if response.status_code == 200:\n", " return response.content\n", " else:\n", " return None\n", "\n", "\n", "# Fungsi untuk meminta input nama file\n", "def input_nama_file():\n", " return input(\"Masukkan nama file: \")\n", "\n", "\n", "# Fungsi untuk menyimpan file di folder tertentu\n", "def simpan_file(nama_file, isi_file):\n", " folder = \"pdf_files\"\n", " if not os.path.exists(folder):\n", " os.makedirs(folder)\n", " \n", " jalur_file = os.path.join(folder, nama_file)\n", " with open(jalur_file, \"wb\") as file:\n", " file.write(isi_file)\n", " \n", " return jalur_file\n", "\n", "\n", "# Fungsi untuk menampilkan pesan berhasil\n", "def pesan_berhasil(jalur_file):\n", " print(f\"File berhasil disimpan di: {jalur_file}\")\n", "\n", " \n", "# Langkah-langkah utama\n", "def main():\n", " url = input_url()\n", " isi_file = download_pdf(url)\n", " if isi_file:\n", " nama_file = input_nama_file()\n", " jalur_file = simpan_file(nama_file, isi_file)\n", " pesan_berhasil(jalur_file)\n", " else:\n", " print(\"Gagal mendownload file.\")\n", "\n", "if __name__ == \"__main__\":\n", " main()" ] }, { "cell_type": "markdown", "id": "a97b9b10", "metadata": {}, "source": [ "## E. Soal-Soal Latihan\n", "\n", "\n", "#### Soal 1: Fungsi Penjumlahan\n", "Buatlah sebuah fungsi penjumlahan yang menerima dua parameter angka dan mengembalikan hasil penjumlahan keduanya.\n", "\n", "\n", "#### Soal 2: Fungsi Cek Bilangan Prima\n", "Buatlah sebuah fungsi cek_prima yang menerima satu parameter angka dan mengembalikan True jika angka tersebut adalah bilangan prima, dan False jika bukan bilangan prima.\n", "\n", "\n", "#### Soal 3: Fungsi Kalkulator\n", "Buatlah sebuah kalkulator sederhana menggunakan fungsi-fungsi berikut:\n", "* tambah(a, b) untuk penambahan\n", "* kurang(a, b) untuk pengurangan\n", "* kali(a, b) untuk perkalian\n", "* bagi(a, b) untuk pembagian\n", "\n", "\n", "#### Soal 4: Fungsi Penentuan Ganjil/Genap\n", "Buatlah sebuah fungsi cek_ganjil_genap yang menerima satu parameter angka dan mengembalikan \"Ganjil\" jika angka tersebut ganjil, dan \"Genap\" jika angka tersebut genap.\n", "\n", "\n", "#### Soal 5: Fungsi Pembalik Kata\n", "Buatlah sebuah fungsi balik_kata yang menerima satu parameter berupa string dan mengembalikan string tersebut dalam keadaan terbalik. Misalnya, jika input adalah \"python\", maka output yang diharapkan adalah \"nohtyp\"." ] }, { "cell_type": "code", "execution_count": null, "id": "b2d33322", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.7" } }, "nbformat": 4, "nbformat_minor": 5 }