Pemgrograman Modular. Keuntungan:

dokumen-dokumen yang mirip
Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Pemrograman Dasar L A T I H A N M E T H O D / F U N G S I M E T H O D R E K U R S I F

Pemrograman Dasar M E T H O D / F U N G S I

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

Algoritma Pemrograman 2B (Pemrograman C++)

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Function nama dipisahkan

BAB 6 FUNGSI TUJUAN PRAKTIKUM

Algoritma & Pemrograman #7. by antonius rachmat c, s.kom, m.cs

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

Kisi- kisi UTS- P. Kisi- kisi UTS- T

Alpro & Strukdat 1 C++ (Sub Program) Dwiny Meidelfi, S.Kom., M.Cs.

Algoritme dan Pemrograman

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Fungsi Rekursif. Bentuk umum fungsi rekursif.

# SEVEN PROCUDURE & FUNCTION

Fungsi, Parameter, Rekursi

PEMROGRAMAN BERORIENTASI OBJEK

BAB 6. FUNGSI. Tujuan penggunaan fungsi : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode program.

Mengenal Subroutine pada Pemrograman C Dian Wirdasari

Kurikulum Qt. { Basic OOP } Chapter 4. Function

Apakah Anda sering kesulitan untuk

FUNCTIONS. Function adalah satu blok instruksi yang akan dieksekusi ketika dipanggil dari bagian lain dalam suatu program.

FUNGSI II. Variabel Statis. Sifat variabel statis: Sintaks: static tipe_data nama_variabel; Contoh: static int angka;

Pertemuan 4 Fungsi Rekursif

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

MODUL 5 SUBPROGRAM / FUNGSI

SUB PROGRAM (FUNGSI)

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

MODULAR (FUNGSI)

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

Kurikulum Qt. Chapter 4 Function. Fungsi

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

Function. Contoh function 1 : // function example #include <stdio.h> int addition (int a, int b){ int r; r=a+b; return (r); }

Pemrograman Dasar C. Minggu 6

FUNGSI DALAM BAHASA C

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

BAB V FUNGSI Tujuan : 5.1 Dasar Fungsi

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA April 1, 2010 BAB 8 REKURSIF

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Fungsi DASAR PEMROGRAMAN

Fungsi : Dasar Fungsi

PROSEDUR DAN FUNGSI (PROCEDURE & FUNCTION)

Algoritme dan Pemrograman

A. TUJUAN 1. Memecah program dalam fungsi fungsi yang sederhana. 2. Menjelaskan tentang pemrograman terstruktur.

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi : Passing Parameter by Value & Semester 3

Pemrograman Dasar C. Minggu 8

2. Uraian Materi. a. Pengertian Fungsi

Scope Variable. Sebuah variabel di dalam sebuah fungsi memiliki jangkauan tertentu. Skop variabel terdiri dari:

FUNGSI DALAM BAHASA C

REKURSIF. Arkham Zahri Rakhman, S.Kom., M.Eng. Rev.: Dr. Fazat Nur Azizah

Algoritma & Pemrograman #8. by antonius rachmat c, s.kom, m.cs

IT234 - Algoritma dan Struktur Data. Ramos Somya

PRAKTIKUM 7 FUNGSI 1

Array LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

Dasar Pemrograman TIP FTP UB

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

Minggu ke-11 Fungsi (Function)

Algoritme dan Pemrograman

Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu.

December 11 PROSEDUR AKHMAD BILYYASIF.

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

Function. Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Format dari function :

PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024

PRAKTIKUM 18 : ARRAY 1

2 BEBERAPA FUNGSI PUSTAKA DALAM BAHASA C

MODUL ALGORITMA DAN PEMROGRAMAN. STMIK AMIKOM Yogyakarta. Rajif Agung Yunmar, S.Kom., M.Cs.

Pertemuan Function. Obyektif Praktikum : 1. Mengerti konsep dasar penggunaan Function

Fungsi (II) Parameter pada fungsi Jenis variabel pada fungsi

OPERASI PERNYATAAN KONDISI

Fungsi 2 DASAR PEMROGRAMAN

FUNGSI PADA PYTHON. def <nama_fungsi>(arg1, arg2, arg3,,argn) : <statemen-statemen>

Fungsi DASAR PEMROGRAMAN

Tipe Data, Variabel, Input/Output

5. Fungsi. S. Indrianii L, M.T

PROSEDUR/SUB RUTIN. Algoritma & Pemrograman. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM

Komentar, Identifier, Konstanta dan Variabel

REKURSIF. Dari bahan Dasar Pemrograman oleh: Arkham Zahri Rakhman Rev.: Fazat Nur Azizah

1. Mempelajari konsep dasar array, array ganda, pengiriman array ke fungsi dan string 2. Membuat program menggunakan array, array ganda

ARRAY. Karakteristik

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR MODUL 8 POINTER

Fungsi 1 DASAR PEMROGRAMAN

PROCEDURE DAN FUNCTION

8.1 FUNGSI, DEKLARASI DAN DEFINISI NYA

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

Transkripsi:

Fungsi Pemrograman modular Library functions vs user-defined functions Konstruksi fungsi& prototipe fungsi Lingkup identifier Pengiriman parameter Array sebagai parameter Fungsi rekursif 1

Pemgrograman Modular Program dibagi menjadi modul-modul Modul dalam bahasa C diimplementasikan dengan Fungsi Fungsi dibentuk dengan mengelompokkan sejumlah perintah untuk menyelesaikan tugas tertentu. Modul diperlukan jika kelompok perintah tersebut kerap kali digunakan di tempat lain dalam program Modul sering disebut juga dengan Sub-Program 2

Pemgrograman Modular Keuntungan: Rancangantop-downdenganteknik sub-goal: Masalah besar/kompleks dapat dijadikan masalah-masalah lebih kecil/sederhana Program besar/kompleksdapatdibagimenjadimodul-modulyang lebih kecil/sederhana. Dapatdikerjakanolehlebihdarisatuorangdengankoordinasiyang relatif mudah Mencarikesalahanrelatiflebihmudahkarenaalurlogikalebihjelas; kesalahan juga dapat dilokalisasi dalam satu modul. Modifikasi dapat dilakukan tanpa menggangu program secara keseluruhan Mempermudah dokumentasi 3

Pemrograman Modular Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap subprogram. Contoh pembagian program menjadi beberapa subprogram. Program Utama SubProgram SubProgram SubProgram SubProgram SubProgram 4

Pemrograman Modular Sifat-sifat modul yang baik adalah : Kohesi(cohesion) yang tinggi Indikasi kualitatif yang menggambarkan sejauh mana sebuah modul memfokuskan pada satu macam pekerjaan Semakin tinggi kohesi, semakin spesifik tugas yang dikerjakan oleh modul tersebut. Kopling (coupling) yang rendah Indikasi kualitatif yang menggambarkan tingkat keterkaitan sebuah modul dengan modul-modul lain dan dengan dunia luar Konektivitas sederhana -> memudahkan pemahaman dan menghindari ripple effect Self-contained, memenuhi kebutuhannya sendiri. 5

Library vs User-defined Functions Fungsi dalam bahasa C: Library functions fungsi-fungsi standar yang sudah disediakan oleh library bahasa C. dideklarasikan dan didefinisikan dalam header file (.h): printf() dan scanf() dalam stdio.h clrscr() dalam conio.h sqrt() dalam math.h User-defined functions fungsi-fungsi yang didefinisikan sendiri oleh pemrogram 6

Library vs User-defined Functions #include <stdio.h> #include <math.h> int main() { int i; for(i=0; i<6; i++) printf( %d %f,i,sqrt(i)); return 0; Contohprogram yang menggunakanstandard Library Functions: printf dan sqrt 7

Konstruksi Fungsi Format return-value-type function-name( parameter-list ) { statements; return-value-type: tipe data yang dikembalikan oleh fungsi Jika return-value-type diganti void maka fungsi tidak mengembalikan nilai parameter-list: daftar nilai yang dikirimkan dari fungsi pemanggil sebagai parameter fungsi yang dipanggil ini 8

Konstruksi Fungsi Contoh : formal parameter Fungsi int maksimum (int x, int y){ int maks = x; if (y > maks) maks = y; return maks; Pemanggil void main () { int a,b; printf("input 2 bilangan bulat : "); scanf("%d %d", &a, &b); printf("bilangan yg lebih besar : %d\n",maksimum(a,b)); Actual parameter 9

Prototipe Fungsi Fungsi pada bahasa C pada dasarnya didefinisikan diatas blok ataufungsipemanggilnya(main()ataufungsilainnya). Namun adakalanya definisi fungsi diletakkan setelah blok pemanggil. Pada kondisi tersebut perlu digunakan prototipe fungsi yang dideklarasikan sebelum fungsi pemanggilnya. Tujuan dari prototipe fungsi: Membuat sebuah fungsi dikenal oleh pemanggilnya sebelum fungsi itu didefinisikan Compiler akan memvalidasi parameter fungsi tsb Sintaksis return-value-type function-name( parameter-list); 10

Prototipe Fungsi Contoh : #include<stdio.h> int maksimum (int x, int y) { int maks = x; if (y > maks) maks = y; return maks Karena fungsi maksimum diletakkan di ataspemanggilnya(main program), maka tidak perlu prototipe fungsi void main () { int a,b; printf("input 2 bilangan bulat: "); scanf("%d %d", &a, &b); printf("bilangan yg lebih besar: %d\n",maksimum(a,b)); 11

Prototipe Fungsi Contoh : #include<stdio.h> int maksimum(int, int); void main () { int a,b; printf("input 2 bilangan bulat: "); scanf("%d %d", &a, &b); printf("bilangan yg lebih besar: %d\n", maksimum(a,b)); int maksimum (int x, int y){ int maks = x; if ( y > maks) maks = y; return maks; Prototipe Fungsi Karena fungsi maksimum diletakkan di bawah pemanggilnya (main), maka perlu diletakkan prototipe fungsi diatas,supaya dikenal oleh pemanggilnya 12

Prototipe Fungsi Penulisan prototipe fungsi diatas bisa ditambah nama parameternya: int maksimum(int a, int b); Yang dipentingkan dalam prototipe fungsi: tipe parameter jumlah parameter urutan parameter 13

Lingkup Identifier (scope) Lingkup identifiermeliputi bagian-bagian program dimana sebuah identifier masih bisa diakses. Lingkup identifier meliputi : Local Global Local identifier Dideklarasikan di dalam fungsi, termasuk daftar parameter. Lingkupnya terbatas pada fungsi tempat dideklarasikan. 14

Lingkup Identifier Global identifier Dideklarasikan di luar fungsi Ruang lingkupnya meliputi seluruh program Dapat diakses dari fungsi-fungsi dalam program Disarankan tidak banyak menggunakan identifier global karena: Jika program semakin besar, kecenderungan errorsemakin besar. Sulit melacak bila terjadi kesalahan. Data tidak terjaga dengan baik, setiap fungsi dapat mengubah nilai variabel tanpa sepengetahuan fungsi lainnya. 15

Lingkup Identifier Contoh : int x; fungsi1(){ - - int y; fungsi2(){ int z; - main(){ int z, y; - lingkup dari variabel x lingkup dari variabel y z dan y hanya dikenal oleh main() z di main() berbeda dgn yang di fungsi2() y di main() berbeda dgn yang di fungsi2() 16

Parameter Fungsi Pengiriman nilai data antar fungsi dapat dilakukan melalui penggunaan parameter fungsi. Pengiriman nilai data melalui parameter: By value Yang dikirim ke fungsi lain adalah nilai datanya By reference/by location Yang ditransfer ke fungsi lain adalah alamat memorinya 17

Pengiriman Parameter Contoh pengiriman parameter by value #include <stdio.h> void Garis (char x ) { // x sbg Parameter Formal int i; // i, x adalah Local Variabel for (i = 1; i<=10; i++) printf( %c,x); /*Program Utama*/ void main(){ char A = - ; Garis(A); // A disebut Parameter Aktual 18

Pengiriman Parameter Contoh pengiriman parameter by reference #include <stdio.h> void Hitung (int X, int Y, int *P, int *Q) { *P = X + Y; *Q = X * Y; void main() { int X, Y, P, Q; // local variables printf( X= ); scanf( %d,&x); printf( Y= ); scanf( %d,&y); Hitung(X,Y,&P,&Q); printf( X + Y = %d\n, P); printf( X * Y = %d\n, Q); 19

Array sebagai Parameter Jika array digunakan sebagai parameter dalam suatu fungsi, maka passing parameter harus by reference. Contoh: #include <stdio.h> void cetak_array(int index, int *A) { printf( A[%d]=%d\n,index, A[index]); void main() { int A[ ]={1,6,2,8,12; cetak_array(2, A); 20

Array sebagai Parameter Array 2 Dimensi Deklarasi fungsinya dapat berupa: void isimatriks(int a[10][10], int b, int k) atau void isimatriks(int a[][10], int b, int k) tetapi TIDAK bisa berupa: void isimatriks(int a[10][], int b, int k) atau void isimatriks(int a[][], int b, int k) 21

Array 2 Dimensi Contoh: Array sebagai Parameter #include <stdio.h> void cetak(int A[3][4]){ int row,col; for(row=0; row<3; row++){ for(col=0; col<4; col++){ printf("x[%d][%d]=%d", row,col,a[row][col]); printf("\n"); int main(){ int x[3][4] = {{1,2,3,4,{8,7,6,5,{9,10,11,12; cetak(x); return(0); 22

Pengiriman Parameter int main() { char ss[20]="kasur"; balik(ss); printf("%s\n",ss); getch(); return(0); Untukstring padaformal parameter bisa: char[ ] atauchar * void balik( char ss[ ] ) { int c,i,j; for(i=0, j=strlen(ss)-1; i<j; i++, j--){ c=ss[i]; ss[i]=ss[j]; ss[j]=c; void balik( char *ss ) { int c,i,j; for(i=0, j=strlen(ss)-1; i<j; i++, j--){ c=ss[i]; ss[i]=ss[j]; ss[j]=c; 23

Fungsi Rekursif Fungsi rekursif: Di dalamnya terdapat pernyataan yang memanggil dirinya sendiri. Berguna untuk memecahkan masalah yang dapat didefinisikan secara rekursif pula. Contoh: Faktorial(n) atau n! didefinisikan sebagai berikut: jikan = 0, n! = 1 jikan > 0, n! = n *(n-1)! Contoh: 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1* 0! 0! = 1 Jadi: 4! = 4*3*2*1= 24 24

Fungsi Iteratif 4! = 4*3! = 4*3*2! = 4*3*2*1! = 4*3*2*1 = 24 // iteratif dekremental long faktorialiteratifdec(long n){ long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial; 4! = 1*2*3*4 = 24 // iteratif inkremental long faktorialiteratifinc(long n){ long i, faktorial = 1; for(i=1; i<=n; i++) faktorial *= i; return faktorial; 25

Fungsi Rekursif Contoh perhitungan 5 faktorial 5! (5 * 4!) (5 * (4 *3!)) (5 * (4 * (3 * 2!))) (5 * (4 * (3 * (2 * 1!)))) (5 * (4 * (3 * (2 * (1 * 0!))))) (5 * (4 * (3 * (2 * (1 * 1))))) (5 * (4 * (3 * (2 * 1)))) (5 * (4 * (3 * 2))) (5 * (4 * 6 )) (5 * 24) 120 26

Fungsi Rekursif Fungsi rekursif mempunyai dua komponen yaitu: Base case: Mengembalikan nilai tanpa melakukan pemanggilan rekursi berikutnya. Rekursi berakhir jika base case dijumpai/dipenuhi Recursion call/ Reduction step: Memanggil fungsi rekursif di dalam fungsi rekursif di atas Menghubungkan sebuah fungsi rekursif dengan fungsi rekursif di dalamnya Biasanya memiliki keyword return untuk mengembalikan nilai ke fungsi yang memanggilnya 27

Fungsi Rekursif Fungsi faktorial Base case: n = 0 Reduction step: f(n) = n * f(n-1) // rekursif long faktorialrekursif(long n){ if(n==0) return (1); else return(n * faktorialrekursif(n-1)); 28

Rekursif vs Iteratif Contoh: Faktorial - Rekursif long faktorial(long n){ if(n==0) return (1); else return(n*faktorial(n-1)); Faktorial - Iteratif // dekremental long faktorial(long n){ long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial; 29

Rekursif vs Iteratif Rekursif Pengulangan dengan struktur seleksi(ifelse) dan pemanggilan fungsi(dirinya sendiri) -> rekursi Pengulanganberhentisaatbase case dijumpai/dipenuhi(konvergen terhadap base case) Pengulangantanpahentijikabase case tidak pernah dijumpai/dipenuhi (tidak konvergen terhadap base case) Biaya proses lebih tinggi dengan pemanggilan banyak fungsi(butuh memori lebih besar& kerja prosesor lebihtinggi) Terbaca lebih jelas, model lebih dekat denganmasalah (contoh: faktorial, fibonacci) Iteratif Pengulangan dengan struktur repetisi (for/while) Pengulangan berhenti saat kondisi pengulangan bernilai salah(false) Pengulangan tanpa henti jika kondisi pengulangan selalu benar Biaya proses lebih rendah(kebutuhan memori lebih kecil& kerja prosesor lebih rendah) karena proses pengulangan berada dalam satu fungsi Terbaca kurang jelas, model kurang dekat denganmasalah(contoh: faktorial, fibonacci) 30

Kekurangan Rekursi Meskipun penulisan program dengan cara rekursif bisa lebih jelas dan pendek, namun fungsi rekursif memerlukan : Memori yang lebih banyak untuk mengaktifkan stack (memori yang digunakan untuk pemanggilan fungsi). Waktu lebih lama untuk menjejaki setiap rekursi melalui stack. Apakah stack? 31

Kapan Rekursi? Secara umum, hanya jika : Penyelesaian sulit dilaksanakan secara iteratif Efisiensi dengan cara rekursif masih memadai Efisiensi bukan masalah dibandingkan dengan kejelasan logika program Tidak mempertimbangkan faktor penghematan memori dan kecepatan eksekusi program Kecepatan kerja dan penghematan memori (iteratif) VS Perancangan logika yang baik (rekursif) 32

Bilangan Fibonacci Urutan bilangan 0, 1, 1, 2, 3, 5, 8, 13 disebut bilangan Fibonacci. Hubungan antara satu angka dengan angka berikutnya didefinisikan secara rekursif sebagai berikut : Fib(N) = N, jika N = 0 atau 1 Fib(N) = Fib(N-2) + Fib(N-1), jika N >= 2 33

Bilangan Fibonacci int Fib(int n) { int f; if(n==0) f = 0; else if(n==1) f = 1; else f = Fib(n-2) + Fib(n-1); return f; Fungsi fib() di atas ditulis secara rekursif dan disebut sebagai slow_fib() Tulislah fast_fib() jika menggunakan iterasi. 34

Bilangan Fibonacci Contoh : Skema fibonacci jika N=4 FIB (4) FIB (3) FIB (2) FIB (2) FIB (1) FIB (1) FIB (0) FIB (1) FIB (0) 35