Function: Lanjutan Pertemuan ke 9..

Slides:



Advertisements
Presentasi serupa
Fungsi Konsep Pemrograman.
Advertisements

Pemrogramman Terstruktur
Fungsi (2) Dr. Anto Satriyo Nugroho, M.Eng Web:
KONSEP BAHASA PEMROGRAMAN
FUNGSI Deklarasi dan Definisi fungsi Void dan Non-void Fungsi main.
STRUKTUR DATA (5) Pointer dan Function
Algoritma dan Pemrograman Modular Programming (Bagian 1)
Algoritma dan Struktur Data
Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
Modular Programming Slamet Kurniawan, S.Kom.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
Parameter formal adalah variabel yang ada pada daftar parameter dalam
Subprogram Minggu V – VI
INSTRUKSI MASUKAN DAN KELUARAN
PERTEMUAN VI POINTER LANJUT
Perintah Input-OutPut
STRUKTUR DATA recursive function.
FUNCTION / FUNGSI.
Review-Dasar Pemrograman Komputer
Fungsi Lecture 7. Motivation Complexity of programming problem  more difficult to consider the solution as a whole  clue: dividing the problem into.
Struktur data selain array : Structure, Union, Enumeration
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
FUNGSI Teknik Informatika Universitas Muhammadiyah Malang 2011 Pemrogramman Terstruktur.
STRUKTUR DATA Pointer dan Function
Fungsi Fungsi.
Statement Input – Output
Function User Function.
Fungsi Fungsi (Sub Program) :
1 Pertemuan 2 Function & Pointer Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Teknik Pemrog. Terstruktur 2
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
1. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :  Mendemonstrasikan penggunaan fungsi serta pengiriman parameter 2.
Fungsi dan Prosedur.
Tujuan Instruksional Mahasiswa memahami konsep fungsi
1 Pertemuan Fungsi Matakuliah: T0616 / Algoritma dan Pemrograman Tahun: 2007 Versi: 1/0.
FUNCTION Fungsi (Function) merupakan sekumpulan instruksi yang membentuk satu unit serta memiliki nama. Fungsi digunakan.
FUNGSI.
FUNGSI.
Pengertian FUNGSI.
FUNGSI.
PROCEDURE & FUNCTION.
Prosedur dan fungsi By Serdiwansyah N. A..
Prosedur dalam C++.
Struktur Program TEE 2103 Algoritma dan Pemrograman
Algoritme dan Pemrograman
Pertemuan 4 PROGRAMMING LANGUAGE.
Fungsi.
Apa itu Fungsi? Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu,
MODULAR (FUNGSI)
Fungsi TEE 2103 Algoritma & Pemrograman Dosen: Abdillah, MIT
MATERI 1 Review dan Pengantar C (Struktur Bahasa C, Variabel, Konstanta, Tipe Data, Operator)
Castaka agus sugiato, M.Kom., M.CS
Struktur Data Khoiriya Latifa, M.Kom.
As’ad Djamalilleil Function (Fungsi) As’ad Djamalilleil
Algoritme dan Pemrograman
Fungsi, Parameter & Rekursi
Algoritma dan Pemrograman I Teknik Informatika UNIKOM
FUNGSI.
Algoritma dan Pemrograman
IT234 ALGORITMA DAN STRUKTUR DATA
TEL 2112 Dasar Komputer & Pemograman Fungsi
MODULAR (FUNGSI)
FUNGSI II.
MATERI 1 Review dan Pengantar C (Struktur Bahasa C, Variabel, Konstanta, Tipe Data, Operator)
PROCEDURE DAN FUNGSI.
Pengantar Pemrograman Bahasa C
Pemrograman Terstruktur
PERTEMUAN V F U N G S I Tujuan membuat suatu fungsi
T0616 ALGORITMA DAN PEMROGRAMAN (11-12)
Transcript presentasi:

Function: Lanjutan Pertemuan ke 9.

Modular Programming Sebuah program yang besar dibagi menjadi sejumlah modul kecil (function). Setiap function mengerjakan tugas tertentu. Keuntungan: Rancangan Top down dengan pendekatan divide dan conquer. Dapat dikerjakan dalam tim Lebih mudah mengalokasikan kesalahan. modul bisa digunakan lagi untuk program yang lain, dan modifikasi dapat dilakukan tanpa mengganggu program secara keseluruhan Mempermudah dokumentasi dan alur logika program

Function Standard library function, adalah fungsi-fungsi standard yang sudah disediakan oleh C. Untuk menggunakannya harus dicantumkan header file dari fungsi tersebut. (dengan perintah #include) Programmer / User Defined Function, adalah fungsi yang dibuat oleh programmer untuk digunakan dalam program yang dibuat.

Standard Library Function(1) Definisi: fungsi-fungsi standard yang sudah disediakan oleh compiler bahasa c. Pemakaian: diletakkan di awal program dengan menggunakan pre-processor redirective #include #include <header_file> Atau #include “header_file”

Standard Library Function(2) Contoh #include <stdio.h> int main() { int number; printf("Type in a number \n"); scanf("%d", &number); printf("The number you typed was %d\n", number); } Function printf(), scanf() diatas sudah didefinisikan didalam standard library function stdio.h yang sudah kita definisikan di atas program dengan menggunakan directive #include. Kita tinggal pakai saja. Didalam header file stdio.h terdapat fungsi-fungsi yang lain yang kita bisa pakai antara lain: getc(), putc(), gets(), puts(), getchar(), putchar(). Banyak standard library function yang sudah disediakan. Silakan melihat di C user guide

Membuat function(1) Notasi Function 1. Deklarasi function prototype: kepala / judul fungsi untuk memberitahukan kepada compiler “jumlah parameter, tipe data parameter” dan “tipe data keluaran dari fungsi (return type)”. return_type function_name([type1][,type2,…]); return_tipe : mendefinisikan keluaran dari function dan jenis tipe datanya. type1…typen : mendefinisikan jumlah parameter yang masuk ke dalam function dan jenis tipe datanya.

Membuat function(2) 2. Function definition: pendefinisian fungsi secara lengkap return_type function_name(parameter_list) { deklarasi_variable lokal; instruksi_1; instruksi_2; …. instruksi_n; return(value); } function_name: nama function harus mengikuti aturan penulisan nama identifier parameter_list : adalah data yg dikirim ke function untuk diproses - boleh kosong(tidak ada parameter). return : untuk mengembalikan hasil proses kepada pemanggil.

Membuat function(3) a) Function tanpa parameter int judul(){ int a; return a; } atau int judul(void){

Membuat function(4) b) Function tanpa return value void cetaksebarisbintang(int len) { for(int i=0; i< len; i++) printf(“*”); } c) Function lengkap float lebihbesar(float f1, float f2) { if(f1>f2) return f1; return f2;

Membuat function(5) Cara memanggil function: Prototype function Cara Pemanggilan function float lebihbesar (float,float); float bill1,bill2, besar; besar = lebihbesar(bill1,bill2); char marktograde(int); int nilai; char grade; grade = marktograde(nilai); int gradetoweight(char) int bobot; bobot = gradetoweight(grade); char* nameofday(int); int harike; char *namahari; namahari = nameofday(harike);

Membuat function(7) Jangkauan Identifier dan jenis variable Identifier (nama variable adalah identifier) Global: Identifier yang diletakkan diatas semua function dalam satu program. Jangkauannya meliputi seluruh program Bisa diredeclare lagi di dalam function. Local Identifier yang dideklarasikan didalam function (termasuk daftar parameter) Jangkuannya terbatas didalam function itu sendiri. Analytical question: apa keuntungan/kerugian memakai global identifier?.

Membuat function(8) Jenis Variable Variable Lokal: Variabel Eksternal dideklarasikan didalam function, akan dibentuk saat function dipanggil akan hilang nilainya jika function berakhir. Hanya dikenal di function tersebut. Tidak ada inisialisasi secara otomatis. Variabel Eksternal Dideklarasikan diluar function dan dikenal dan dapat diakses oleh semua function. Akan diinisialisasi secara otomatis. Nol untuk angka atau “” untuk karakter. ! Jika variable global diletakkan ditengah-tengah antara dua function, maka variable tersebut akan dikenal oleh function yang ada di bawahnya TAPI tidak oleh function yang ada diatasnya.

Membuat function(9) Variabel statis Variabel register Variable pointer Variabel ini bisa berupa variabel lokal maupun global Jika dia dipakai sebagai variable lokal maka nilai variabel statis ini tidak akan hilang sesudah function berakhir. Inisialisasi dilakukan pertama kali pada saat function dipanggil. Jika tidak diinisialisasi maka isinya 0 atau “”. Dideklarasikan dengan reserved word static (ie static int y). Variabel register Hanya bisa digunakan pada variable bersifat lokal saja. Hanya dipakai untuk tipe data char atau int. Kecepatan pengaksesan variabel jenis ini jauh lebih cepat dari variable yang ada di RAM. Dideklarasikan dengan reserved word register (ie register int i) Variable pointer Variabel yang berisi alamat dari variabel lain Akan dibahas lebih lanjut dalam pertemuan berikutnya.

Sifat Function yang baik(1) High Cohesion: fungsi self-content, yaitu yang bisa memenuhi kebutuhan sendiri. Low Coupling: Fungsi yang memiliki ketergantungan yang rendah dengan fungsi yang lain High Fan-in: Frekuensi pemanggilan fungsi ini oleh pemakai. Semakin tinggi semakin baik. (contoh : pada program pembuat laporan berupa tabel, maka function garis(n) dimana n=jumlah karakter ‘-’, akan sering dipanggil) Low Fan-out: Fungsi yang memiliki fungsi yang spesifik (tugas yang sedikit) adalah lebih baik. Dikatakan memiliki fan-out yang rendah. (contoh: function garis(n), tugasnya hanya satu, yaitu cetak garis sebanyak n buah karakter ‘-’ )

Sifat Function yang baik(2) Contoh yang kurang baik (Low Cohesion & High Coupling) #include <stdio.h> #include <string.h> #include <conio2.h> float isiangka () { float angka=0; printf("isi Angka: "); scanf("%f", &angka); return angka; } float hitungsegitiga(){ float alas,tinggi; alas=isiangka(); tinggi=isiangka(); return alas*0.5*tinggi; int main() { printf("Luas segitiga %f \n", hitungsegitiga() ); getch(); return 0; Contoh yang baik (HighCohesion & Low Coupling) #include <stdio.h> #include <string.h> #include <conio2.h> float isiangka () { float angka=0; printf("isi Angka: "); scanf("%f", &angka); return angka; } float hitungsegitiga(float a,float t){ return a*0.5*t; int main() { float alas,tinggi; alas=isiangka(); tinggi=isiangka(); printf("Luas segitiga %f \n", hitungsegitiga(alas,tinggi)); getch(); return 0;

Sifat Function yang baik(3) Sample of High Fan Out: #include <stdio.h> #include <string.h> #include <conio2.h> void hitungbangun(int p, int l, int a, int t) { int segi4; float segi3; segi4 = p * l; segi3 = a * 0.5 * t; printf(“luas segiempat = %d m2\n”,segi4); printf(“luas segitiga = %.2f m2\n”,segi3); } int main() { hitungbangun(10,10,10,10); return 0; Sample of Low Fan Out: #include <stdio.h> #include <string.h> #include <conio2.h> int hitungsegi4(int p, int l) { return p * l; } float hitungsegi3(int a, int t) { return a * 0.5 * t; int main() { int segi4; float segi3; segi4 = hitungsegi4(10,10); segi3 = hitungsegi3(10,10); printf("luas segiempat = %d m2\n",segi4); printf("luas segitiga = %.2f m2\n",segi3); getch(); return 0;

Membuat function(6) Latihan. Buat function dengan menggunakan prinsip-prinsip pembuatan function yang baik: Menghitung luas segitiga dan bujur sangkar. Menentukan grade dari hasil ujian berdasarkan nilai akhir. Jika nilai diatas 85 maka grade ‘A’ dst.

Fungsi Rekursif(1) Definisi: suatu proses yang memanggil dirinya sendiri. Dalam C diimplementasikan dengan function yang disebut recursive function. Definisi umum: return_type Func_Name(Parameter_List) { … Funct_Name(…); // rekursi terjadi disini. }

Fungsi Rekursif(2) Kapan Rekursif dipakai: Jika masalah dapat diuraikan menjadi masalah sejenis yang lebih sederhana Contoh penyelesaian masalah dengan menggunakan rekursif Faktorial 6! = 6 * 5 * 4 * 3 * 2 * 1 5! = 5 * 4 * 3 * 2 * 1 6! = 6 * 5! Contoh sederhana C untuk recursive void recurse() { recurse(); //Function calls itself } int main() { recurse(); //Sets off the recursion

Fungsi Rekursif(3) Faktorial dengan C: long faktor(int n) { if (n==1||n==0) return 1; else return n * faktor(n-1); } faktor(6) rekursif ke n n-1 return n*faktorial(n-1) urutan return 1 6 5 6 * 5! 720 2 4 5 * 4! 120 3 4 * 3! 24 3 * 2! 2 * 1! -

Fungsi Rekursif(4) Contoh lain: fibonaci 1 1 2 3 5 8 13 21 34 55 89 …… F1 = 1 ; F2 = 1; Fn = Fn-1 + Fn-2 untuk n > 2 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F1 + F2 F2 + F3 F3 + F4 F4 + F5 F5 + F6 F6 + F7 F7 + F8 F8 + F9 1 2 3 5 8 13 21 34 55 Penyelesaian secara iteratif int ifibo(int n){ int fn1=1, fn2=1, fn, i; if(n==1 || n==2 ) return 1; for(i=3; i<=n; i++) { fn = fn1 + fn2; fn1 = fn2; fn2 = fn; } return fn; Penyelesaian secara rekursif int fib(int n) { if (n==1 || n==2) return 1; else return fib(n-1)+fib(n-2); }

Fungsi Rekursif(5) Iterative VS Rekursif: Pemilihan cara penyelesaian masalah diusahakan dengan menggunakan iteratif dahulu. Tetapi, jika penyelesaian dengan cara iteratif memerlukan algoritma yang lebih rumit, maka lakukan pendekatan rekursif. Rekursif dihindari karena memiliki kekurangan: Memerlukan memory yang lebih banyak untuk menyimpan variabel lokal dan activation record. Memerlukan waktu yang lebih banyak untuk handling activation record. Penyelesaian rekursif dipakai hanya jika: Penyelesaian sulit dilaksanakan secara iteratif. Efisiensi dengan cara rekursif sudah memadai, akan tetapi Efisiensi tidak lebih penting dari kejelasan logika.

References : Thompson SN, 2009, Algoritma dan Struktur Data dengan C. Deitel, PJ, HM.Deitel, 2007, C How to Program, 5th Edition.