prosedur dan fungsi · 2018. 1. 18. · program segitiga {menghitung luas n buah segitiga}...

37
Prosedur dan Fungsi ALGORITMA DAN PEMROGRAMAN [IS6110102] Dosen: Yudha Saintika, S.T., M.T.I

Upload: others

Post on 03-Feb-2021

17 views

Category:

Documents


0 download

TRANSCRIPT

  • Prosedur dan Fungsi

    ALGORITMA DAN PEMROGRAMAN [IS6110102]

    Dosen: Yudha Saintika, S.T., M.T.I

  • Sub-Capaian Pembelajaran MK

    “Mahasiswa mampu menerapkan konsep prosedur danfungsi dalam program.”

  • Peta Capaian Pembelajaran MK

    We Are Here !!!

    Mid Test

  • Agenda

    •Pendahuluan

    •Mendefinisikan Prosedur

    •Pemanggilan Prosedur

    •Deklarasi Nama Global, Nama Lokal, danLingkupnya

    •Parameter Formal dan Aktual

    •Definisi Fungsi

    •Pemanggilan Fungsi

    •Prosedur atau Fungsi?

  • Pendahuluan

    • Kata “Prosedur” sering kita dengar dalam kehidupan sehari-hari.Seora mahasiswa misalnya, setiap awal semester selalu melakukanpendaftaran ulang (registrasi). Pihak kampus telah mengumumkanlangkah-langkah pendaftaran ulang yang dinyatakan sebagai prosedurdaftar ulang.

    • Ketika sebuah prosedur dijalankan, maka instruksi-instruksi didalamnya dikerjakan satu per satu. Pada kasus registrasi mahasiswa,mahasiswalah yang menjalankan prosedur daftar ulang.

  • Mendefinisikan Prosedur

    • Pada dasarnya struktur prosedur sama dengan struktur program biasa yaitu ada bagian judul (header) yang terdiri atas namaprosedur, bagian deklarasi untuk mendefinisikan nama peubah, namatipe dan konstanta dan bagian algoritma yang merupakan badan(body) prosedur.

    • Setiap prosedur mempunyai nama yang unik. Nama prosedursebaiknya diawali dengan kata kerja aktif karena prosedur berisiaktivitas melakukan sesuatu, misalkan HitungLuas, Tukar, CariMaks, Inisialisasi, dll.

  • Mendefinisikan Prosedur

    Pendeklarasian parameter di dalam prosedur bukanlah keharusan. Dengan kata lain, parameter boleh ada atau tidak ada. Kelak Andaakan memahami kapan diperlukan pendefinisian prosedur denganparameter.

  • Mendefinisikan Prosedur

  • Pemanggilan Prosedur

    • Prosedur bukan program yang berdiri sendiri, jadi ia tidak dapatdieksekusi secara langsung. Ini berarti, instruksi-instruksi di dalamprosedur dapat dilaksanakan hanya bila prosedur tersebut diakses.Prosedur diakses dengan cara memanggil namanya dari programpemanggil (misalnya dari program utama atau dari modul programlainnya)

  • Nama Global, Nama Lokal, dan Lingkup

    • Nama-nama (konstanta, peubah, tipe, dan lain-lain) yangdideklarasikan di dalam prosedur (termasuk parameter, jika ada)hanya “dikenal” di dalam badan prosedur yang bersangkutan. Nama-nama yang dideklarasikan di dalam prosedur tersebut dikatakanlingkupnya “lokal”. Nama-nama lokal hanya berlaku di dalamprosedur yang melingkupinya saja.

    • Sebaliknya nama-nama yang dideklarasikan di dalam program utamadikatakan lingkupnya “global”. Nama-nama global dapat digunakan dibagian manapun di dalam program baik di dalam program utamamaupun di dalam prosedur yang dipanggil. Lihat kembali contohprogram segitiga!

    • Keputusan apakah suatu peubah akan dideklarasikan secara globalatau lokal berggantung pada penggunaan nama tersebut. Bila suatupeubah digunakan di seluruh bagian program, maka peubah tersebutharus dideklarasikan secara global.

  • Parameter

    Parameter

    Formal

    Aktual

    Masukan

    Keluaran

    Masukan/Keluaran

  • Parameter Aktual & Formal

    • Parameter aktual yaitu parameter yang disertakan pada waktupemanggilan.

    • Parameter formal yaitu parameter yang dideklarasikan pada bagianheader prosedur.

    • Tiap-tiap parameter aktual berpasangan dengan parameter formalyang bersesuaian.

    • Aturan yang harus diperhatikan dalam korespondensi satu-satuantara parameter actual dan parameter formal adalah:

    1. Jumlah parameter aktual pada pemanggilan prosedur harussama dengan jumlah parameter formal pada deklarasiprosedurnya.

    2. Tiap parameter aktual harus bertipe sama dengan tipeparameter formal yang bersesuaian.

  • Parameter masukan & keluaran

    Parameter masukan adalah parameter yang nilainya berlaku sebagaimasukan untuk prosedur. Pada bahasa pemrograman, istilahparameter masukan ini sering dinamakan parameter nilai (valueparameter atau parameter by value).

    Parameter keluaran adalah parameter yang menampung keluaranyang dihasilkan oleh prosedur, Sedangkan parametermasukan/keluaran adalah parameter yang berfungsi sebagai masukansekaligus keluaran bagi prosedur tersebut.

    procedure HitungLuasSegitiga (input alas, tinggi: real)

    {Menghitung luas segitiga dengan rumus Luas = (alas xtinggi)/2}

    DEKLARASI

    luas : integer

    ALGORITMA

    luas (alas * tinggi) /2

    write(luas)

  • Contoh Pemanggilan (1)

    PROGRAM Segitiga

    {Menghitung luas N buah segitiga}

    DEKLARASI

    I, N: integer

    alas, tinggi: real

    procedure HitungLuasSegitiga(input alas, tinggi: real)

    ALGORITMA

    read(N)

    for i 1 to N do

    read(alas, tinggi)

    HitungLuasSegitiga(alas,tinggi)

    end for

  • Mekanisme korespondensi satu-satu

    Misalkan nilai a yang dibaca adalah 10 dan nilai t yang dibaca adalah 5,maka parameter alas akan menerima nilai 10 dari a dan parametertinggi akan menerima 5 dari t. Selanjutnya nilai alas dan tinggidigunakan untuk menghitung luas segitiga di dalam prosedurHitungLuasSegitiga.

  • Parameter Keluaran

    procedure HitungLuasSegitiga (input alas, tinggi: real,

    output luas: real)

    {Menghitung luas segitiga dengan rumus Luas = (alas xtinggi)/2}

    DEKLARASI

    {tidak ada}

    ALGORITMA

    luas (alas * tinggi) /2

  • Contoh Pemanggilan (2)

    PROGRAM Segitiga

    {Menghitung luas N buah segitiga}

    DEKLARASI

    I, N: integer

    a,t,L: real

    procedure HitungLuasSegitiga(input alas, tinggi: real,

    output luas: real)

    ALGORITMA

    read(N)

    for i 1 to N do

    read(a,t)

    HitungLuasSegitiga(a,t,L)

    write(L)

    end for

  • Parameter Masukan/Luaran

    • Parameter masukan/keluaran dideklarasikan di dalam header prosedur dengan kata kunci input/output. Parameter masukan/luaranharus berupa peubah, tidak boleh berupa konstanta/ekspresi.

    procedure Tukar(input/output A,B: integer)

    {Mempertukarkan nilai A dan B}

    DEKLARASI

    C: integer

    ALGORITMA

    C A

    A B

    B C

  • Contoh Pemanggilan (3)

    PROGRAM PertukaranNilai

    {Menghitung luas N buah segitiga}

    DEKLARASI

    m,n: integer

    procedure Tukar(input/output A,B: integer)

    ALGORITMA

    m 8

    n 5

    write(m,n) {cetak nilai m dan n sebelum pertukaran}

    Tukar(m,n)

    write(m,n)

  • FUNGSI

  • Definisi Fungsi

    • Fungsi adalah bagian program yang menerima data masukan danmemberikan/mengembalikan (return) sebuah nilai dari tipe tertentu. Didalam matematika kita mengenal cara penulisan fungsi sepertipada contoh berikut ini:

    • Pada kedua contoh di atas, f dan H adalah nama fungsi, sedangkan x dan y adalah parameter fungsi yang bersangkutan. Nilai yang diberikan fungsi bergantung pada masukan parameter. Misalkan:

  • Pendefinisian Fungsi

    • Sebagaimana halnya pada prosedur, struktur fungsi sama denganstruktur algoritma yang sudah anda kenal: ada bagian header yang berisi nama fungsi (beserta parameter masukan, jika ada) danspesifikasi tentang fungsi tersebut, bagian deklarasi, dan badanfungsi.

  • Pendefinisian Fungsi

    • Tipe menspesifikasikan tipe nilai yang diberikan oleh fungsi. Nilaiyang diberikan oleh fungsi dapat bertipe dasar maupun bertipebentukan. Parameter formal selalu berjenis parameter masukansehingga deklarasi nama parameter selalu diawali dengan kata input.

    • Pernyataan return ekspresi bertujuan untuk mengembalikan nilaiyang dihasilkan oleh fungsi tersebut. Ekspresi dapat berupakonstanta, atau sebuah peubah, atau sebuah rumus. Di bawah inidiberikan beberapa contoh pendefinisian fungsi.

    • Contoh: Tulislah fungsi untuk menghasilkan nilai F(x)=2x2+5x +8, x€R

  • Contoh Penyelesaian

    function F(input x: real) real

    {mengembalikan nilai F(x)=2x2+5x+8, x€R}

    DEKLARASI

    {tidak ada}

    ALGORITMA

    return 2*x*x+5*x+8

    Di dalam algoritma tersebut, F adalah nama fungsi dengan tipe Real sedangkan x adalah parameter (by value) formal.

  • Contoh Persoalan

    • Buatlah fungsi untuk menentukan apakah sebuah bilangan bulatmerupakan bilangan ganjil. Bilangan bulat disebut ganjil jika ia tidakhabis dibagi dengan dua!

    function Ganjil(input n: integer) boolean

    {true jika n adalah bilangan ganjil}

    DEKLARASI

    {tidak ada}

    ALGORITMA

    return (n mod 2 ≠ 0)

  • Contoh Persoalan

    function Ganjil(input n: integer) boolean

    {true jika n adalah bilangan ganjil}

    DEKLARASI

    {tidak ada}

    ALGORITMA

    return (n mod 2 ≠ 0)

    Didalam fungsi ganjil di atas ekspresi n mod 2 ≠0 adalah ekspresi Boolean (nilaiekspresi mungkin true atau false). Pernyataan tersebut ekivalen dengan:

  • Contoh Persoalan

    • Buatlah fungsi untuk menentukan nama-nama bulan berdasarkannomor bulannya (1 sampai 12)!

  • Pemanggilan Fungsi

    • Fungsi diakses dengan cara memanggil namanya dari programpemanggil, diikuti dengan daftar parameter actual (bila ada). Karenafungsi menghasilkan nilai, maka nilai tersebut dapat diperlakukandengan dua cara.

    • Pertama, nilai yang dikembalikan oleh fungsi ditampung di dalamsebuah peubah yang bertipe sama dengan tipe fungsi.

    Contoh pemanggilan:

    Y F(5)

    B Ganjil(m)

  • Pemanggilan Fungsi

    • Kedua, nilai yang dikembalikan oleh fungsi dapat langsungdimanipulasi seperti pada contoh berikut:

    write(F(5))

    if Ganjil(m) then …

    Contoh Persoalan:

    Buatlah program menggunakan fungsi yang menentukan sebuah tahun itu adalahtahun kabisat. Tahun kabisat yaitu tahun yang habis dibagi 4 atau habis dibagi 400jika tahun tersbut kelipatan 100!

    function Kabisat(input th: integer) boolean

    {true jika th adalah tahun kabisat}

    DEKLARASI

    {tidak ada}

    ALGORITMA

    if (th mod 4 = 0 and th mod 100 ≠ 0) or (th mod 400 = 0 and th mod 100 = 0) then

    return true

    else

    return false

    end if

  • Contoh Penyelesaian

    PROGRAM TahunKabisat

    {Program utama menentukan apakah suatu tahun merupakan

    tahun kabisat}

    DEKLARASI

    tahun: integer

    function Kabisat(input th: integer) boolean

    ALGORITMA

    read(tahun)

    if Kabisat(tahun) then

    write(‘tahun kabisat’)

    else

    write(‘bukan tahun kabisat’)

    end if

  • Prosedur atau Fungsi?

    • Fungsi digunakan apabila modul program mengembalikan sebuahnilai, sementara prosedur digunakan apabila modul menghasilkanefek netto dari (satu atau) sekumpulan aksi. Namun dalam praktik,sering perbedaan antara keduanya samar-samar karena sebuahprosedur dapat juga ditulis sebagai fungsi demikian pula sebaliknya.Pada akhirnya pemilihan apakah sebuah modul direalisasikansebagai fungsi atau prosedur bergantung pada kebutuhan dan senimemprogram.

  • Mengubah fungsi menjadi prosedur

    function Maks(input a,b: integer) integer

    DEKLARASI

    {tidak ada}

    ALGORITMA

    if a ≥ b then

    return a

    else

    return b

    end if

  • Mengubah fungsi menjadi prosedur

    procedure TentukanMaks(input a,b: integer,

    output maks: integer)

    DEKLARASI

    {tidak ada}

    ALGORITMA

    if a ≥ b then

    maks a

    else

    maks b

    end if

  • Tugas 3_ALPRO

    Petunjuk pengerjaan:

    • Tentukan kelompok kalian sendiri dan kerjakan beberapa latihan soal dibawah ini, diketik dalam format PDF dan dikumpulkan via email [email protected] paling lambat hari Rabu, tanggal 20 Desember 2017pukul 23:59 WIB. Format file dan subjek email: [ALPRO]KELAS_Tugas3_NIM1_Nama1_NIM2_Nama2_NIM3_Nama3

    1. [poin 10] Tulislah prosedur untuk menghitung jumlah N buah bilangangenap pertama (bilangan genap dimulai dari 0). Prosedur menerima(parameter) masukan N dan memberikan (parameter) luaran jumlah Nbuah bilangan genap pertama!

    2. [poin 10] Tulislah prosedur yang menghasilkan nilai rata-rata sekumpulandata bilangan ganjil yang dibaca secara berulang-ulang dari papan ketik(akhir pembacaan adalah 9999). Prosedur memiliki parameter luaranyaitu nilai rata-rata yang dihasilkan. Dan program tersebut dapatmemberikan peringatan apabila yang diinputkan user bukan bilanganganjil, maka program akan memberitahu bahwa “Inputan harusbilanmgan ganjil”

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]

  • Tugas 3_ALPRO

    3. [poin 15] Tuliskan prosedur yang menerima sebuah tanggal dalambentuk dd-mm-yyyy (contoh: 12-8-1996) dan memberikan luarantanggal sebelumnya. Catatan: parameter tanggal berjenismasukan/keluaran.

    4. [poin 10] Tuliskan prosedur yang menerima nama hari sekarang danmenentukan nama hari besok. Misalkan hari sekarang “Rabu” makahari besok adalah “kamis”.

    5. [poin 15] Realisasikan fungsi-fungsi berikut ini:

    function abs(x:real) real

    {mengembalikan harga mutlak x. Contoh: jika x =-10 maka nilai mutlaknya10, jika x = 10 maka nilai mutlaknya 10}

    Function double(x:real) real

    {menembalikan 2 kali nilai x. Contoh jika x = 5 maka nilai double-nyaadalah 10

    function odd(x:integer) Boolean

    {mengembalikan true jika x bilangan kelipatan 5 dan false jika x bukanbilangan kelipatan 5

  • Tugas 3_ALPRO

    6. [poin 10] Buatlah fungsi jarak yang menerima masukan dua buahtitik P1(x,y) dan P2(x,y) dan menghitung jarak kedua titik tersebut. Gunakan rumus Euclidean untuk menghitung jarak d.

    7. [poin 10] Buatlah fungsi lower yang mengubah huruf kecil menjadihuruf besar!

    8. [poin 20] Buatlah fungsi phytagoras yang menerima tiga buahbilangan bulat a,b,c dan menentukan apakah ketiga bilangantersebut merupakan tripel phytagoras!

    --------------------------------Selamat Mengerjakan---------------------------------