Fungsi (2) Dr. Anto Satriyo Nugroho, M.Eng Web:

Slides:



Advertisements
Presentasi serupa
Fungsi Konsep Pemrograman.
Advertisements

Algoritma dan Struktur Data
Jawaban PR-01 Dr. Anto Satriyo Nugroho, M.Eng Web:
Flowchart (1) Mata Kuliah: Dasar Pemrograman
Apakah Recursion itu ? Dr. Anto Satriyo Nugroho, M.Eng
Struktur Kendali Proses (Bab 4) Dr. Anto Satriyo Nugroho, M.Eng Web: Mata Kuliah: Dasar.
Dr. Anto Satriyo Nugroho, M.Eng
Dr. Anto Satriyo Nugroho, M.Eng
Dr. Anto Satriyo Nugroho, M.Eng
FUNGSI Deklarasi dan Definisi fungsi Void dan Non-void Fungsi main.
STRUKTUR DATA (5) Pointer dan Function
PERTEMUAN II ARRAY JURUSAN TELEKOMUNIKASI
Menciptakan Fungsi.
Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
Sorting Algorithms Dr. Anto Satriyo Nugroho, M.Eng
Pointer.
Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
Parameter formal adalah variabel yang ada pada daftar parameter dalam
Modul 11 – Hendi Hermawan - 1
ARRAY (Lanjutan).
Function: Lanjutan Pertemuan ke 9..
ARRAY Dr. Lily Wulandari.
ARRAY (LARIK)
PERTEMUAN VI POINTER LANJUT
Konsep Pemrograman Function.
Pemrograman Berbasis Obyek Oleh Tita Karlita
Perintah Perulangan Pertemuan ::
ARRAY.
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
FUNGSI.
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
Pointer Yuliana Setiowati.
STRUKTUR DATA Pointer dan Function
Algoritma dan Struktur Data
Pointer Pointer.
Function User Function.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Algoritma dan Pemrograman 2C
Bab 05 Tipe Data dan Mengisi Variabel
FUNGSI.
Array, POINTER dan FUNGSI
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.
PROCEDURE DAN FUNCTION
Tujuan Instruksional Mahasiswa memahami konsep fungsi
FUNCTION Fungsi (Function) merupakan sekumpulan instruksi yang membentuk satu unit serta memiliki nama. Fungsi digunakan.
FUNGSI.
FUNGSI.
Pengertian FUNGSI.
FUNGSI.
Prosedur dan fungsi By Serdiwansyah N. A..
Prosedur dalam C++.
PEMROGRAMAN SISTEM FUNGSI
Pointer TEE 2103 Algoritma dan Pemrograman Dosen: Abdillah, MIT
FUNGSI.
Algoritme dan Pemrograman
As’ad Djamalilleil Function (Fungsi) As’ad Djamalilleil
Fungsi, Parameter & Rekursi
FUNGSI.
QUIS Algoritma Pemrograman I
FUNGSI.
Variabel dan memori.
IT234 ALGORITMA DAN STRUKTUR DATA
FUNGSI II.
Algoritme dan Pemrograman
T0616 ALGORITMA DAN PEMROGRAMAN (11-12)
Transcript presentasi:

Fungsi (2) Dr. Anto Satriyo Nugroho, M.Eng Web:

Jenis Variable Variabel Lokal Variabel Eksternal/Global Variabel statis Variabel register

Variabel Lokal Dideklarasikan dalam suatu fungsi Dibentuk ketika fungsi itu dipanggil, dan hilang ketika fungsi selesai dieksekusi Hanya dikenal oleh fungsi tempat variabel itu dideklarasikan Tidak ada inisialisasi secara otomatis

Contoh 1 #include float konversikeUSD(float rupiah) { float c; c=0.0001; /* 1 USD = rupiah */ return (rupiah*c); } main() { float x; printf(“Masukkan nilai mata uang dalam rupiah: “); scanf(“%f”,&x); printf(“Nilai matauang dalam USD: %f\n",konversikeUSD(x)); } c adalah variabel lokal fungsi konversikeUSD

Variabel Eksternal Dideklarasikan di luar fungsi Dapat diakses semua fungsi Apabila tidak diberi nilai awal, maka akan diinisialisasi dengan nilai nol Contoh: lihat program 5.4 Resiko memakai variabel eksternal Semakin besar program, semakin besar resiko terjadinya error Sulit melacak kesalahan Data tidak terjaga dengan baik, karena setiap fungsi dapat mengubah isi variabel eksternal tanpa sepengetahuan fungsi yang lain Biasakan tidak menggunakan variabel eksternal, melainkan memakai parameter untuk melakukan pengiriman data dari satu fungsi ke fungsi yang lain

Contoh 2 (program 5.4) #include int gNilai=98; void inkremen(void) { gNilai= gNilai*1.05; } main() { printf("Nilai awal : %d\n",gNilai); gNilai = gNilai +2; printf("Nilai sekarang: %d\n",gNilai); inkremen(); printf("Nilai sekarang: %d\n",gNilai); } gNilai adalah variabel eksternal

Variabel Statis Bisa merupakan variabel lokal maupun global Jika variabel statis bersifat lokal, hanya dikenal oleh fungsi tempat variabel itu dideklarasikan. Jika variabel statis bersifat global, maka dapat diakses oleh seluruh fungsi Perbedaan dengan variabel lokal: nilai variabel statis tidak akan hilang setelah keluar dari fungsi. Inisialisasi hanya dilakukan sekali, pada saat fungsi itu dipanggil. Jika tidak ada inisialisasi, maka variabel statis itu akan diberi nilai nol

Contoh 3 (program 5.5) #include void naik(void) { static int statX; statX++; printf("Nilai statX dalam fungsi naik : %d\n",statX); } main() { int statX = 100; naik(); printf("Nilai statX dalam fungsi main : %d\n",statX); }

Variabel Register Variabel yang disimpan dalam register, bukan dalam RAM (Random Access Memory). Biasanya digunakan untuk variabel yang berfungsi sebagai pengendali loop. Variabel yang diletakkan di register akan mempunyai kecepatan jauh lebih tinggi daripada variabel yang diletakkan di RAM.

Cara pengiriman parameter/argumen Call by value Call by reference

Call by Value Yang dikirimkan ke fungsi lain adalah NILAI parameter Nilai parameter aktual akan disalin ke parameter formal. Sehingga kalau pun nilai parameter formal berubah, maka nilai parameter aktual tidak akan berubah.

Contoh 4 (Program 5.7) #include int jumlahganda(int n1,int n2) { int n3; n3= 2 * (n1+n2); return n3; } main() { int bil1, bil2, bil3; printf(“Bilangan ke-1: “);scanf(“%d”,&bil1); printf(“Bilangan ke-2: “);scanf(“%d”,&bil2); bil3=jumlahganda(bil1,bil2); printf(“Jumlah ganda= %d\n",bil3); } Isi parameter “bil1” disalin ke “n1”, Isi parameter “bil2” disalin ke “n2”. Walau di dalam fungsi jumlahganda, nilai n1 dan n2 diotak-atik sekalipun, nilai “bil1” dan “bil2” pada fungsi main tidak akan terpengaruh !

Contoh 5 SWAP 1020 bil1 bil bil1 bil2 SWAP

Contoh 5-A SWAP (cara yang salah) #include void dataswap(int n1,int n2) { int dummy; dummy=n1; n1=n2; n2=dummy; } main() { int bil1, bil2; printf(“Bilangan ke-1: “);scanf(“%d”,&bil1); printf(“Bilangan ke-2: “);scanf(“%d”,&bil2); dataswap(bil1,bil2); printf(“bil1= %d bil2=%d\n",bil1,bil2); } MENGAPA TIDAK BERHASIL ?

Mengapa GAGAL ? Call by value : –Isi bil1 disalin ke n1 –Isi bil2 disalin ke n2 –di fungsi dataswap, isi nilai n1 dan n2 ditukarkan, tetapi tidak akan berpengaruh pada isi bil1 dan bil2 –Karena itu, waktu isi bil1 dan bil2 diprint, tidak terlihat ada perubahan Harus memakai CALL BY REFERENCE

Call by Reference Yang diserahterimakan bukan nilai parameter, melainkan ADDRESS mereka Pakailah Call by Reference kalau anda ingin mengubah ISI dari parameter yang dikirimkan ke sebuah fungsi INGAT : OPERATOR & dan * int x; nilai dari parameter x dapat diakses dengan x, ditampilkan dengan caraprint(“%d”,x); ADDRESS dari x dapat diakses dengan &x int *y; nilai dari parameter dapat diakses dengan *y ADDRESS dari data tsb. dapat diakses dengan y

Contoh 5-B SWAP (cara yang benar) #include void dataswap(int *n1,int *n2) { int dummy; dummy=*n1; *n1=*n2; *n2=dummy; } main() { int bil1, bil2; printf(“Bilangan ke-1: “);scanf(“%d”,&bil1); printf(“Bilangan ke-2: “);scanf(“%d”,&bil2); dataswap(&bil1,&bil2); printf(“bil1= %d bil2=%d\n",bil1,bil2); } MENGAPA TIDAK BERHASIL ?

Contoh 6 #include void jumlahkali(int a,int b,int *c, int *d) { *c = a+b; *d = a*b; } main() { int x, y,jumlah,kali; printf("x: "); scanf("%d",&x); printf("y: "); scanf("%d",&y); jumlahkali(x,y,&jumlah,&kali); printf("%d+%d=%d %d*%d=%d\n",x,y,jumlah,x,y,kali); }

Call by Reference & mengirimkan array Mengirimkan array ke suatu fungsi untuk diolah, umumnya memakai teknik Call by Reference Yang diserahkan ke fungsi adalah address elemen pertama sebuah array Contohint x[5]; address yang dikirimkan adalah 1001 dengan cara x &x[0] x[0] 1001 x[1] 1002 x[2] 1003 x[3] 1004 x[4] 1005

Mengirimkan array 1 DIMENSI #include int arraysum(int y[],int m) { int i,jumlah; jumlah=0; for(i=0;i<m;i++) jumlah = jumlah + y[i]; return jumlah; } main() { int x[5]={1,2,3,4,5}; int sum; sum=arraysum(x,5); printf("sum : %d\n",sum); }

#include void matrix_jumlah(int x[2][3],int y[2][3],int row,int column) { int i,j; for (j=0;j<row;j++) { for(i=0;i<column;i++) { printf(“%d ”,x[j][i]+y[j][i]); } printf(“\n”); } main() { int ma[2][3]={ {1, 2, 3}, {4, 5, 6}}; int mb[2][3]={ {6, 3, 4}, {5, 1, 2}}; matrix_jumlah(ma,mb,2,3); } Mengirimkan array 2 DIMENSI