Algoritme dan Pemrograman

dokumen-dokumen yang mirip
12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

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

Algoritme dan Pemrograman

Algoritme dan Pemrograman

Bab 9 Pointer. 9.1 Pendeklarasian pointer

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

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

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

Pointer dan Array Dinamik. IF2121 / Algoritma dan Struktur Data Sem /2018

POINTER. Tim Alpro Teknik Informatika

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

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

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

Algoritma dan Struktur Data. Ramos Somya

Minggu ke-10 Pointer. Pendahuluan. Objektif. Bahan Bacaan

POINTER II. Oleh : Mike Yuliana PENS-ITS

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Pointer. Yuliana Setiowati

Pointer. Objektif. Bahan Bacaan

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Pemrograman Dasar C. Minggu 10

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

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

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

A. TUJUAN PEMBELAJARAN

POINTER. Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN Overview. Definisi Pointer Operasi Pointer Pointer dan Argumen Fungsi

Pendahuluan Pemrograman Mikrokontroler

Bahasa C Array. Slide diambil dari MK Dasar-Dasar Pemrograman Fasilkom UI Dimodifikasi dan disesuaikan dngn kebutuhan pengajaran di PTI-Undiksha

Algoritme dan Pemrograman

04. Single Linked List

Pengumuman Pekan ke- 5

BAB 6 FUNGSI TUJUAN PRAKTIKUM

POINTER. Tim Alpro Teknik Informatika

MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR MODUL 8 POINTER

Algoritma dan Struktur Data. Pertemuan 5 Pointer

/* File program : tukar1.c Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */

Struktur Kontrol Perulangan (Loop) Algoritme dan Pemrograman. Struktur Kontrol Perulangan: while. Struktur Kontrol Perulangan: while

Seluruh elemen di dalam struktur array mempunyai tipe data yang sama. Random Access

Fungsi 2 DASAR PEMROGRAMAN

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

BAB V FUNGSI Tujuan : 5.1 Dasar Fungsi

Algoritme dan Pemrograman

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

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

Pointer. ted = &andy;

ARRAY & POINTER. Listing 8.1. EXPENSES.C demonstrates the use of an array. AP3: Array & Pointer

Minggu ke-11 Fungsi (Function)

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

Algoritma Pemrograman 2B (Pemrograman C++)

Mengenal Subroutine pada Pemrograman C Dian Wirdasari

ALGORITMA & PEMROGRAMAN II ARRAY

Algoritma dan Pemrograman. Loop control structures: WHILE. Loop control structures: WHILE Perhatikan potongan program berikut: 12/29/2011

Achmad Solichin.

MAKALAH POINTER PADA BAHASA C

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

BAB III POINTER. Type *variabel-name

pada program di atas, akan ditampilkan alamat memori dari variabel x, bukan nilai x.

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

Algoritme dan Pemrograman

Bab 10 Fungsi & Prosedur

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


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

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

01. Review Array, Pointer dan Struktur

12/29/2011. Algoritme dan Pemrograman. Bit. Bitwise operator

Algoritme dan Pemrograman

Pointer. Pointer adalah variabel yang menyimpan alamat dari variabel yang lainnya. Deklarasi pointer : datatype *ptr_name; Contoh:

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

MODUL V POINTER DAN STRING

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

ARRAY. Karakteristik

Pencarian (Searching)

POINTER DASAR PEMROGRAMAN

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

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

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

By : Agus Priyanto, M.Kom ST3 Telkom Purwokerto Structure and Pointer

Pointer, File Header & Makro

Algoritme dan Pemrograman

ASD. Alokasi Memori Dinamis

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

BAB VIII POINTER. Tujuan :

Algoritma dan Struktur Data. Linked List

FUNGSI & PROSEDUR. Pertemuan ke-12 dan 13

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

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

Algoritma dan Struktur Data. Pertemuan 6 Alokasi Memori Dinamis

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Review Latihan Slide 10. Review Latihan Slide 10

ALGORITMA DAN STRUKTUR DATA

1 MODUL 8 POINTER MODUL 8 POINTER

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

PRAKTIKUM 7 FUNGSI 1

2 BEBERAPA FUNGSI PUSTAKA DALAM BAHASA C

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-11 Pointer 2

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

Pemrograman Dasar C. Minggu 9

Transkripsi:

Algoritme dan Pemrograman Kuliah #9 Pointer Alamat dan Pointer Address (alamat) Tiap variabel memiliki dua atribut: alamat (address) dan nilai (value). Alamat adalah lokasi dalam memori komputer. Lokasi tersebut digunakan untuk menyimpan nilai. Operator untuk mendapatkan alamat adalah ampersand (&). Format string untuk menuliskan alamat adalah %p. Pointers Pointer adalah variabel yang nilainya berupa alamat. Pointer ke integer adalah variabel yang dapat menyimpan alamat dari suatu bilangan integer. Operator untuk mendeklarasikan pointer adalah asterisk (*) ILKOM IPB 1

Pointer Pointer dapat digunakan untuk memanipulasi memori komputer. Pointer dideklarasikan menggunakan asterisk (*). Contoh: int *a; berarti variabel a berisi suatu alamat memori, yang berisi bilangan integer. Operator * digunakan untuk mendapatkan nilai yang ada di alamat yang tersimpan dalam pointer a=&x; x 7 a &x int *a; int x=7; Contoh penggunaan operator * dan & int x; /* x adalah integer */ int *a; /* a adalah pointer ke integer */ x = 7; a = &x; /* a = alamat dari x */ Perhatikan bahwa nilai &x, &a, dan a akan tergantung pada alamat memori yang dialokasikan. Tetapi, a akan sama dengan &x, dan *a akan sama dengan x. printf( "Alamat x adalah %p" "\nnilai x adalah %d" "\nalamat a adalah %p "\nnilai a adalah %p" "\nnilai *a adalah %d\n", &x, x, &a, a, *a); ILKOM IPB 2

Pointer ke NULL Mendefinisikan pointer tidak menginisialisasi alamat yang ditunjuk. Agar jelas bahwa pointer tidak menunjuk ke alamat manapun, gunakan NULL. Akses ke isi alamat yang ditunjuk pointer NULL akan menimbulkan runtime-error (berguna untuk debugging). int n = 0; int *p = NULL; n = 10; printf("\nalamat n = %p", &n);/*keluaran berupa alamat*/ printf("\nnilai n = %d", n); /*Keluaran berupa nilai*/ printf("\nalamat p = %p", &p);/*keluaran berupa alamat*/ printf("\nnilai p = %p", p); /*Keluaran berupa nilai*/ Apa yang terjadi jika dilakukan pencetakan *p? Mengubah nilai suatu variabel melalui pointer Apa keluaran program berikut? long int num1 = 0, num2 = 0; long int *p = NULL; p = &num1; *p = 2; ++num2; num2 += *p; p = &num2; ++*p; printf ("%ld %ld ", num1, num2); printf ("%ld %ld\n", *p, *p+num2); ILKOM IPB 3

Pointer dan array Array dapat diperlakukan seperti pointer ke elemen pertama (indeks 0). Pointer juga dapat digunakan untuk membuat array (terutama yang dinamis) Deklarasi array dapat menggunakan pointer seperti contoh berikut: int *x; // 1D int *(*y); // 2D Contoh pointer dan array Apa keluaran program berikut? #define N 3 int main(){ int i, a[n]; int *b; for(i=0; i<n; i++) a[i]=i; b=a; /* pointer ke elemen pertama dari a */ for(i=0; i<n; i++) { printf("%d ",*b); b++; /* pointer ke elemen berikutnya */ ILKOM IPB 4

Manipulasi Pointer Perhatikan perbedaan selisih antara pi dan pi++ serta pj dan pj++ long int i[2] = {0, 1, *pi = &i; long long j[2] = {0, 1, *pj = &j; printf ("%p %ld\n", pi, *pi); printf ("%p %lld\n", pj, *pj); pi++, pj++; printf ("%p %ld\n", pi, *pi); printf ("%p %lld\n", pj, *pj); Pemanggilan fungsi Pemanggilan fungsi: Call by value Call by reference Call by value: nilai argumen yang dikirimkan disalin ke variabel di fungsi. Contoh: int a=5, b=10, c1, c2, c3; c1=jumlah(5,20); c2=jumlah(a,b); c3=jumlah(3, b); Perubahan variabel lokai tidak berpengaruh pada nilai variabel yang dikirim ke fungsi. ILKOM IPB 5

Call by Value dan Variabel Lokal int tukar(int a, int b) { int t=a; a=b; b=t; return (a+b); int a=5, b=10; printf("%d %d %d", a, b, tukar(a, b)); APA KELUARAN PROGRAM TERSEBUT? 5 10 15 Call by value dan Variabel Global int a=5, b=10; int tukar() { int t=a; a=b; b=t; return (a+b); printf("%d %d %d", a, b, tukar()); APA KELUARAN PROGRAM TERSEBUT? 10 5 15 ILKOM IPB 6

Variabel Lokal vs Global int a=5, b=10; int tukar(int a, int b) { int t=a; a=b; b=t; return (a+b); printf( %d %d %d, a, b, tukar(a,b)); APA KELUARAN PROGRAM TERSEBUT? 10 5 15 Pemanggilan fungsi: call by reference Call by reference: argumen dikirimkan berupa alamat. Oleh karena itu, parameter yang menerima di dalam fungsi haruslah berupa pointer. ILKOM IPB 7

Contoh pemanggilan fungsi: call by reference Apa keluaran program berikut? void misteri(int x, int *y) { int t = x; x = *y; *y = t; int a=5, b=10; misteri(a, &b); /* call by reference */ printf("%d %d\n", a, b); Apa keluaran program berikut? int misteri(int, int *); int a=5, b=10, c=15; a += misteri(b, &c); printf("%d %d %d", a, b, c); int misteri(int a, int *b) { int c=3; *b = a + c; return c; 8 10 13 ILKOM IPB 8

Latihan 1: Keluaran? #define SIZE 4 int a[][size] = {{0,1,2,3, {4,5,6, {7,8,9,10 ; int *p = &a[0][0]; int *q = a[0]; int *r = a[1]; int *s = a[2]; printf("%d ", *(p + SIZE + 1) ); printf("%d ", p[size + 1] ); printf("%d ", p[2 * SIZE + 1] ); printf("%d ", *(q + 2 * SIZE + 2) ); printf("%d ", *r ); printf("%d ", *(r - 2) ); printf("%d\n", s[3] ); Latihan 2: Keluaran? int x = 2, y; void misteri(int a, int *b) { a = 2*x; *b = y; y = a; x = 5; y = 7; misteri(y, &x); printf("%d %d\n", x, y); ILKOM IPB 9

Latihan 3: Keluaran? #define N 10 void what(int *b, int n) { if (n) { printf("%d ", *b++); what(&b[0], n-1); int x[n]={10, 20, 30, 40, 50; what(x, 5); Array Dinamis Deklarasi array adalah pemesanan ruang di memori Bagaimana jika ukuran yang dibutuhkan belum diketahui? Ukuran berdasarkan masukan pengguna Ukuran berdasarkan hasil perhitungan Array dinamis pesan memori sesuai kebutuhan ILKOM IPB 10

Alokasi Memori Alokasi memori dapat dilakukan dengan fungsi: void *malloc (size_t size) tsize = ukuran yang diinginkan; bisa memanfaatkan fungsi sizeof misalnya sizeof(int) akan mengembalikan ukuran yang dibutuhkan oleh sebuah integer Manipulasi dapat dilakukan dengan notasi array Setelah tidak diperlukan, perlu dibebaskan dengan fungsi: void free(void *ptr) Contoh #include <stdlib.h> int n, i; int *a, *b; scanf("%d", &n); a = (int*) malloc (n * sizeof(int)); b = (int*) malloc (n * sizeof(int)); for (i = 0; i<n; i++) {a[i] = rand()%10; b[n-i-1] = a[i]; for (i = 0; i<n; i++) printf("%d ", a[i]); printf("\n"); for (i = 0; i<n; i++) printf("%d ", b[i]); printf("\n"); free(a); ILKOM IPB 11