# Finally: ELEVEN Function Parameter by Value and by Reference

dokumen-dokumen yang mirip
# SEVEN PROCUDURE & FUNCTION

BAB 6 FUNGSI TUJUAN PRAKTIKUM

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

Fungsi, Parameter, Rekursi

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

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

FUNGSI DALAM BAHASA C

Algoritma Pemrograman 2B (Pemrograman C++)

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

FUNGSI DALAM BAHASA C

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Function nama dipisahkan

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

Algoritme dan Pemrograman

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

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

OPERASI PERNYATAAN KONDISI

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

a[0] a[1] a[2] a[3] a[4] a[5] x

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

MODUL 5 SUBPROGRAM / FUNGSI

FUNGSI & PROSEDUR. Pertemuan ke-12 dan 13

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

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Kurikulum Qt. { Basic OOP } Chapter 4. Function

IT234 - Algoritma dan Struktur Data. Ramos Somya

Algoritme dan Pemrograman

Algoritma & Pemrograman FUNGSI. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

IT234 - Algoritma dan Struktur Data. Ramos Somya

# FIVE ARRAY / LARIK. Soal-soal minggu lalu:

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

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

Array DASAR PEMROGRAMAN

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

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

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Algoritme dan Pemrograman

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

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

ARRAY DIMENSI SATU Setiap elemen array dapat diakses melalui indeks. Indeks array secara default dimulai dari 0.

Fungsi DASAR PEMROGRAMAN

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

Fungsi : Dasar Fungsi

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

ALGORITMA & PEMROGRAMAN II ARRAY

PRAKTIKUM 7 FUNGSI 1

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Kurikulum Qt. Chapter 4 Function. Fungsi

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

Algoritme dan Pemrograman

Larik/ Array int a1, a2, a3, a4, a5;

Fungsi DASAR PEMROGRAMAN

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

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

BAB VIII SUB PROGRAM : Fungsi Tanpa Pengembalian Nilai

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

# TEN Sorting PENDAHULUAN

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

Fungsi 1 DASAR PEMROGRAMAN

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

SL 1201 Materi tentang Fungsi

Array 1 A. TUJUAN PEMBELAJARAN

Pemrograman Dasar C. Minggu 6

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

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

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Makalah. STRUKTUR DATA ( Array )

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

PEMROGRAMAN BERORIENTASI OBJEK

Bab 9 Pointer. 9.1 Pendeklarasian pointer

Algoritma & Pemrograman #10

Mengenal Subroutine pada Pemrograman C Dian Wirdasari


Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

PROCEDURE DAN FUNCTION

Laporan Praktikum TMD02 Algoritma dan Struktur Data dengan C. Coding 1. NIM/ No. Reg. : : Mhd. Syarif : : Blog

P12 Fungsi. A. Sidiq Purnomo Program Studi Teknik Informatika Universitas Mercu Buana Yogyakarta

December 11 PROSEDUR AKHMAD BILYYASIF.

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

MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR MODUL 8 POINTER

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

Pointer. Yuliana Setiowati

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

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

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

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

BAB VI BAHASA C Pendahuluan

Fungsi. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

BAB 5. KONDISI DAN ARRAY

DIKTAT MATA KULIAH PEMROGRAMAN I BAB XI POINTER

Prosedur merupakan modul program yang mengerjakan instruksi spesifik dan menghasilkan efek netto. Efek netto diketahui dengan membandingkan keadan awa

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA

A R R A Y. Bentuk umum deklarasi array : type nama_array[ukuran] tipe : menyatakan tipe dasar array ukuran : menyatakan banyaknya elemen pada array

Fungsi. Fungsi. Dasar Komputer & Pemrograman 1. dipecah Sub Program. Program. Dasar Komputer & Pemrograman TC22052 Kartika Firdausy - UAD

ARRAY. Karakteristik

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

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Struktur Program. Rinta Kridalukmana

BAB I. LARIK (ARRAY) Array (larik) ialah penampung sejumlah data sejenis (homogen) yang menggunakan satu identifier (pengenal).

Transkripsi:

HANDOUT ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA 1 PRODI SISTEM INFORMASI UKDW # Finally: ELEVEN Function Parameter by Value and by Reference REFRESH! - Function yang telah kita pelajari adalah kumpulan instruksi yang digunakan untuk melaksanakan suatu maksud tertentu dan diberi nama yang unik. - Function ada yang mengembalikan nilai (non-void) dan ada yang tidak mengembalikan nilai (void) Contoh: int Kali(int a,int b){ return a*b; Atau seperti ini: void ShowError(){ printf( Error on line %d: %s,error.line,error.message); - Variabel-variabel yang ada di dalam function bersifat lokal untuk fungsi tersebut saja, sedangkan nilai kembalian fungsi akan dikenal pada fungsi yang memanggil fungsi tersebut. int d=3,e=1; void coba_lokal(int a,int b){ int c = 0; int d = 10; int e; e = (a+b) * (c+d); printf("lokal a = %d\n",a); printf("lokal b = %d\n",b); printf("lokal c = %d\n",c); printf("lokal d = %d\n",d); printf("lokal e = %d\n",e); int a=2; int b;

b = 4; int c=0; printf("main a = %d\n",a); printf("main b = %d\n",b); coba_lokal(a,b); printf("main c = %d\n",c); printf("global d = %d\n",d); printf("global e = %d\n",e); - Function boleh memiliki parameter ataupun tidak memiliki parameter satupun - Parameter dalam function terdiri dari 2 jenis: o Parameter Formal: yaitu parameter yang tertulis dalam definisi fungsi. o Parameter Aktual: yaitu parameter yang merupakan inputan langsung pada saat penggunakan fungsi tersebut. Dapat berupa variabel maupun langsung berupa value. Contoh: int JUMLAH(int X, int Y); X, Y disebut parameter formal int A,B,T; A=5; B=2; T = JUMLAH(A,B); printf( %d,t); int JUMLAH(int X, int Y){ int H; H = X + Y; return(h); Variabel A,B,C lokal dalam main A dan B disebut parameter aktual X, Y disebut parameter formal Variabel X,Y lokal dalam JUMLAH Pengiriman Parameter ke suatu Function secara nilai (By Value) - Yang dikirimkan ke fungsi adalah nilainya, bukan alamat memori letak dari datanya - Fungsi yang menerima kiriman nilai ini akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh program yang memanggil fungsi tersebut - Karena itulah pengubahan nilai di dalam fungsi tidak akan berpengaruh pada nilai asli di program yang memanggil fungsi walaupun keduanya menggunakan nama variabel yang sama Contoh

int a=4; void getaglobal(){ printf("a Global adalah %d alamatnya %p\n",a,&a); void fungsi_by_value(int a){ a = a * 3; printf("a by value adalah = %d alamatnya adalah %p\n",a,&a); int a = 5; getaglobal(); printf("a main adalah = %d alamatnya adalah %p\n",a,&a); fungsi_by_value(a); printf("a main setelah fungsi dipanggil adalah = %d alamatnya adalah %p\n",a,&a); Pengiriman satu arah Di dalam Memori: a di global nilai 4 alamat 252F:0076 a di main nilai 5 alamat 252F:2294 a di fungsi_by_value nilai 15 alamat 252F:2292 a di main after function nilai 5 alamat 252F:2294 - Pengiriman by value adalah pengiriman searah, dari program pemanggil fungsi ke fungsi yang dipanggilnya - Pengiriman by value dapat dilakukan untuk suatu statement, tidak hanya untuk suatu variabel, value, array atau konstanta saja.... void fungsi_by_value(int a){ a = a * 3; printf("a by value adalah = %d alamatnya adalah %p\n",a,&a);

int a = 5; getaglobal(); printf("a main adalah = %d alamatnya adalah %p\n",a); fungsi_by_value(5*a+1); Statement... - Secara default, C menggunakan parameter by value untuk pembuatan fungsifungsinya. Contoh lain: void Secara_Nilai(float a,float b,char c){ float *Alamat_A; Alamat_A = &a; a = 7; printf("lokal A = %f, alamat A = %p\n",a,alamat_a); printf("lokal B = %f\n",b); printf("lokal C = %c\n",c); float a=25,*alamat_a; char c = 'a'; Alamat_A = &a; Secara_Nilai(a,a/3,c); printf("main A = %f, alamat A = %p\n",a,alamat_a); printf("main A/3 = %f\n",(a/3)); printf("main C = %c\n",c);

Dapat disimpulkan sebagai berikut: 1. Parameter aktual yang dikirimkan adalah datanya, yaitu Secara_Nilai(a,a/3,c) 2. Alamat nilai a pada main dan a pada fungsi Secara_Nilai berbeda, yaitu 2447:2456 dan 2447:2466 3. Perubahan nilai a dalam fungsi Secara_Nilai menjadi 7 tidak mengubah nilai a pada main yaitu tetap 25 4. Pengirimannya satu arah Secara_Nilai(a,a/3,c) Secara_Nilai(float a,float b,char c) 5. Pengiriman parameter dapat berupa ungkapan (statement) yaitu a/3 Pengiriman Parameter secara Acuan (by Reference) 1. Yang dikirimkan adalah alamat memori letak dari nilai datanya, bukan nilai datanya 2. Fungsi yang menerima parameter ini akan menggunakan alamat yang sama dengan alamat nilai datanya 3. Karena itulah pengubahan nilai di fungsi akan mengubah juga nilai asli di program pemanggil fungsi tersebut 4. Pengiriman parameter by reference adalah pengiriman dua arah, yaitu dari program pemanggil fungsi ke fungsi dan sebaliknya dari fungsi ke program pemanggilnya 5. Pengiriman parameter by reference tidak dapat digunakan untuk suatu ungkapan, hanya bisa untuk variabel, konstanta atau elemen array saja Contoh1: int a=4; void getaglobal(){ printf("a Global adalah %d alamatnya %p\n",a,&a); Menggunakan void fungsi_by_ref(int *a){ *a = *a * 3; asteris/bintang (*) printf("a by ref adalah = %d alamatnya adalah %p\n",*a,a); int a = 5; getaglobal(); Menggunakan asteris/bintang (*) printf("a main adalah = %d alamatnya adalah %p\n",a,&a); fungsi_by_ref(&a);

printf("a main setelah fungsi dipanggil adalah = %d alamatnya adalah %p\n",a,&a); Hasil1: Di dalam Memori: a di global nilai 4 alamat 2487:0076 a di main nilai 5 alamat 2487:2292 a di fungsi_by_value nilai 15 alamat 2487:2292 a after fungsi_by_ref nilai 15 alamat 2487:2292 Contoh lain: Menggunakan asteris/bintang (*) void Secara_Acuan(float *a,float b,char *c){ float *Alamat_A; Alamat_A = a; Tanpa *a = 7; asteris/bintang (*) printf("lokal A = %f, alamat A = %p\n",*a,alamat_a); printf("lokal B = %f\n",b); printf("lokal C = %c\n",*c); float a=25,*alamat_a; char c = 'a'; Alamat_A = &a; Secara_Acuan(&a,a/3,&c); printf("main A = %f, alamat A = %p\n",a,alamat_a); printf("main A/3 = %f\n",(a/3)); printf("main C = %c\n",c);

Kesimpulan: 1. Operator pada pengiriman parameter by reference adalah menggunakan operator & yang berarti mengacu pada alamat memori dari variabel tersebut. 2. Parameter aktual yang dikirimkan adalah alamat memori, yaitu Secara_Acuan(&a,a/3,&c) 3. Alamat nilai a pada main dan a pada fungsi Secara_Acuan sama, yaitu 23C7:2466 4. Perubahan nilai a dalam fungsi Secara_Acuan menjadi 7 juga mengubah nilai a pada main yang semula 25 menjadi 7 5. Pengirimannya dua arah Secara_Acuan (&a,a/3,&c) Secara_Nilai(float *a,float b,char *c) 6. Pengiriman parameter tidak dapat berupa ungkapan (statement), sehingga untuk statement a/3 harus berupa parameter by value Pengiriman Parameter berupa Array berdimensi satu - Pengiriman ini adalah pengiriman by reference, karena yang dikirimkan sebenarnya adalah alamat dari elemen pertama array yang digunakan sebagai parameter, bukan seluruh nilai elemen-elemennya. - Alamat elemen pertama array dapat ditulis dengan menyebutkan nama array tanpa menuliskan indeksnya. Contoh1: void Cetak_Mundur(char S[]){ Tanpa parameter int n; //menghitung panjang string dimasukkan ke n for(n=0;s[n]!='\0';n++); for(int i=n-1;i>=0;i--) printf("%c",s[i]);

char S[] = "universitas kristen duta wacana"; printf("string mula-mula = %s\n",s); printf("string terbalik = "); Cetak_Mundur(S); Parameter aktual Contoh2: void Balik_Huruf(char S[]){ int n; //menghitung panjang string dimasukkan ke n for(n=0;s[n]!='\0';n++); for(int i=0;i<n;i++){ if(s[i]>='a' && S[i]<='z') S[i] = S[i] - 'a' + 'A'; //diubah menjadi huruf besar else if(s[i]>='a' && S[i]<='Z') S[i] = S[i] - 'A' + 'a'; //diubah menjadi huruf kecil char S[] = "UniVersiTas KriSteN DutA WaCanA"; printf("string mula-mula = %s\n",s); printf("string hasil = "); Balik_Huruf(S); printf("%s",s);

Contoh3: void Masukkan_Data(int data[],int jml){ for(int i=0;i<jml;i++){ printf("masukkan data ke-%d = ",i+1);scanf("%d",&data[i]); int Hitung_Total(int data[],int jml){ int t = 0; for(int i=0;i<jml;i++){ t += data[i]; return t; int n; int total; int data[10]; printf("jumlah data = ");scanf("%d",&n); Masukkan_Data(data,n); total = Hitung_Total(data,n); printf("total data = %d",total); Pengiriman Parameter berupa Array dua dimensi - Pengiriman parameter berupa array 2 dimensi hampir sama dengan pengiriman parameter array satu dimensi - Perbedaannya: menyebutkan baris dan kolom array dimensi dua tersebut - Mendeklarasikan MAX_ROWS dan MAX_COLS yang digunakan untuk pengiriman parameter array dua dimensi

- Pada saat pengiriman parameter formal array dua dimensi, kita harus menyebutkan banyaknya dimensi array untuk kolom, sehingga ukuran kolom dapat diketahui. Hal ini berkaitan dengan pemesanan variabel array di memori Contoh: #define MAX_COLS 10 #define MAX_ROWS 10 void Masukkan_Data(int data[][max_cols],int m,int n){ for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ printf("masukkan Matriks [%d,%d] = ",i+1,j+1);scanf("%d",&data[i][j]); int Hitung_Total(int data[][max_cols],int m,int n){ int t = 0; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ t += data[i][j]; return t; int m,n; int total; int data[max_rows][max_cols]; printf("jumlah baris = ");scanf("%d",&m); printf("jumlah kolom = ");scanf("%d",&n); Masukkan_Data(data,m,n); total = Hitung_Total(data,m,n); printf("total data = %d",total);

THE END Good Luck for The Final Test Thanks for being my great students! I m very sorry if I had mistakes to all of you!