SlideShare a Scribd company logo
BAB VIII PEMROGRAMAN POINTER
Pertemuan Minggu XI dan XII
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang menggunakan struktur Pointer

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer

:

Mahasiswa dapat membuat program dengan melibatkan Pointer

pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya
variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama
dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan
dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan
bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal
seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain
ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut
berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang
memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer.
Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke
variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah
keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda
mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi,
misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi
ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki
Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak
memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat
Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan
isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah:

Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer
terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer
Tipe *nama_variabel

ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang
akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer.

1
Contoh 8.1
#include <stdio.h>
#include <conio.h>
main()
{
int x = 99;
int *p1, *p2;
p1 = &x;
p2 = p1;
/* print the value of x twice */
printf("Values at p1 and p2: %d % dn", *p1, *p2);
/* print the address of x twice */
printf("Addresses pointed to by p1 and p2: %p %p", p1, p2);
getch();
}

Contoh 8.2
#include <stdio.h>
#include <conio.h>
main()
{
int U = 3;
int v;
int *pu; /* pointer t o an integer */
int *pv; /* pointer t o an integer */
pu = &U; /* assign address of U t o pu */
v = *pu; /* assign value of U t o v */
pv = &v; /* assign address of v t o pv */
printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu);
printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv);
getch();
}

Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk
array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan
mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan
memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa
sederet char (string).
Contoh 8.3
2
#include <stdio.h>
#include <conio.h>
void tukar(int *a, int *b);
main()
{
int x,y;
printf("Masukan nilai ke 1: ");
scanf("%d",&x);
printf("Masukan nilai ke 2: ");
scanf("%d",&y);
tukar(&x,&y);
printf ("Setelah ditukarkan Nilai ke 1 %dn",x);
printf ("Setelah ditukarkan Nilai ke 2 %d",y);
getch();
}
void tukar(int *a, int *b)
{
int smt;
smt = *a;
*a = *b;
*b = smt;
}

Contoh 8.4
#include <stdio.h>
#include <conio.h>
main()
{
int number = 0; /* A variable of type int initialized to 0 */
int *pointer = NULL; /* A pointer that can point to type int */
number = 10;
printf("nnumber's address: %p", &number); /* Output the address */
printf("nnumber's value: %dnn", number); /* Output the value */
pointer = &number; /* Store the address of number in pointer */
printf("pointer's address: %p", &pointer); /* Output the address */
printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */
printf("npointer's value: %p", pointer); /* Output the value (an address) */
printf("nvalue pointed to: %dn", *pointer); /* Value at the address */
getch();
}

Contoh 8.5
#include <stdio.h>

3
#include <conio.h>
void funct1 (int U, int v); /* function prototype */
void funct2 (int *pu, int *pv); /* function prototype */
main ()
{
int u = 1;
int v = 3;
printf ( "n Before calling functl : u=%d v=%d", u, v);
funct1 (u, v);
printf ( "n After calling functl : u=%d v=%d", u, v);
printf ("nn Before calling funct2: u=%d v=%d", u, v) ;
funct2(&u, &v);
printf ("n After calling funct2: u=%d v=%d", u, v);
getch();
}
void funct1 (int U, int v)
{
U = 0;
v = 0;
printf ( " n Within functl : u=%d v=%d", U, v);
return;
}
void funct2 (int *pu, int *pv)
{
*pu = 0;
*pv = 0;
printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ;
return;
}

Pengayaan
Latihan 8.1
#include <stdio.h>
#include <conio.h>
int hitung(char *s);
main()
{
char kata[80];
printf("Masukan Sebuah Kata : n");
scanf("%s",&kata);
printf("%d",hitung(kata));
getch();
}
int hitung(char *s)

4
{
int i=0;
for (;*s!='0'; *s++)
i++;
return(i);
}
Latihan 8.2
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define size 10
void push(int i);
int pop(void);
int *tos, *p1, stack[size];
main()
{
int value;
p1 = stack;
tos = stack;
do {
printf("Enter value: ");
scanf("%d", &value);
if(value != 0) push(value);
else {printf("value on top is %dn", pop());
printf("Alamat Memori %pn",(p1+1));}
} while(value != -1);
getch();
}
void push(int i)
{
p1++;
if(p1 == (tos+size))
{
printf("Stack Overflow.n");
exit(1);
}
*p1 = i;
}
int pop(void)
{
if(p1 == tos) {
printf("Stack Underflow. n");
exit(1);
}
p1--;
return *(p1+1);
}

5

More Related Content

PPT
Pointer
PDF
Pointer c++
PPT
PPTX
Materi kuliah 03 pointer part 1
PPTX
Structure and pointer
PPT
Spt3102 fungsi(0910)
PDF
Pemrograman C++ - Pointer
Pointer
Pointer c++
Materi kuliah 03 pointer part 1
Structure and pointer
Spt3102 fungsi(0910)
Pemrograman C++ - Pointer

What's hot (14)

PPT
Materi kuliah 23 pointer part 3
PDF
Pertemuan 6 Fungsi String
PDF
Pertemuan 10 Pointer dan Macro
DOCX
Fungsi dan Array Pada C++
PDF
Ix struktur pointer
PDF
Tugas modul fungsi
PPTX
Materi kuliah 03 pointer part 1
PDF
Tipe Data pada Bahasa Java
PPTX
Materi kuliah 19 fungsi part 2
PDF
Pertemuan 12 Structure
PDF
Chendra (pemrograman)
DOTX
PDF
MATERI POINTER TKJ K13
PPTX
Materi kuliah 19 fungsi part 2
Materi kuliah 23 pointer part 3
Pertemuan 6 Fungsi String
Pertemuan 10 Pointer dan Macro
Fungsi dan Array Pada C++
Ix struktur pointer
Tugas modul fungsi
Materi kuliah 03 pointer part 1
Tipe Data pada Bahasa Java
Materi kuliah 19 fungsi part 2
Pertemuan 12 Structure
Chendra (pemrograman)
MATERI POINTER TKJ K13
Materi kuliah 19 fungsi part 2
Ad

Viewers also liked (12)

PDF
Open GL 09 scan conversion
PDF
Open GL T0074 56 sm1
PPTX
Pertemuan 1
PDF
Pertemuan10 spywareadwaredanspam
PDF
7. pemrograman struktur
PDF
Tarby magazine salafiyah kajen
PDF
PDF
PDF
PPT
Matlab
PDF
Techarea company profile
PDF
Pengolahan Citra 2 - Pembentukan Citra Digital
Open GL 09 scan conversion
Open GL T0074 56 sm1
Pertemuan 1
Pertemuan10 spywareadwaredanspam
7. pemrograman struktur
Tarby magazine salafiyah kajen
Matlab
Techarea company profile
Pengolahan Citra 2 - Pembentukan Citra Digital
Ad

Similar to 6. pemrograman pointer (20)

DOCX
MAKALAH DATA STRUKTURE (Diki Candra).docx
PPTX
Pengenalan POINTER dalam bahasa pemrograman C
DOCX
MAKALAH POINTER (DIKI CANDRA) (1).docx
PPT
Pertemuan5.ppt
PPTX
ppt array di kirim.pptx ppt array........
PPT
Pointer
PDF
7 Pointer
PDF
Resume praktikum 3__pointer
PPT
Pertemuan6.ppt
PPT
PDF
Modul 2 strukdat
PDF
Modul 2 strukdat
PPTX
Algoritma&Pemrograman C++ Pertemuan 11
PDF
8 algoprog-pointer
PPT
Materi kuliah 21 pointer part 1
PPT
Materi kuliah 21 pointer part 1
 
DOCX
Makalah Alprog
PPTX
7 pointer - copy
PPTX
Materi kuliah 05 pointer part 3
DOCX
Tipe data
MAKALAH DATA STRUKTURE (Diki Candra).docx
Pengenalan POINTER dalam bahasa pemrograman C
MAKALAH POINTER (DIKI CANDRA) (1).docx
Pertemuan5.ppt
ppt array di kirim.pptx ppt array........
Pointer
7 Pointer
Resume praktikum 3__pointer
Pertemuan6.ppt
Modul 2 strukdat
Modul 2 strukdat
Algoritma&Pemrograman C++ Pertemuan 11
8 algoprog-pointer
Materi kuliah 21 pointer part 1
Materi kuliah 21 pointer part 1
 
Makalah Alprog
7 pointer - copy
Materi kuliah 05 pointer part 3
Tipe data

More from Roziq Bahtiar (20)

PDF
static and dynamic routing
PPTX
Perintah perintah dasar linux Operating Sistem
PPTX
Pengantar algoritma pemrograman
PDF
Flowchart progrm linear bilangan bulat
PDF
5. pemrograman array dan_string
PDF
4. pemrograman fungsi
PDF
3. teknik looping dalam_pemrograman
PDF
2. teknik pemilihan dalam_pemrograman
PDF
1. variable identifier dan_tipe_data
PDF
Alpro tutor
PDF
PDF
PDF
PPTX
3 piksel_dan_histogram
PDF
PPTX
2 pengolahan_citra
PDF
Open GL T0074 56 sm3
PDF
Open GL T0074 56 sm2
PDF
Open GL 04 linealgos
PDF
Open GL T0074 56 sm4
static and dynamic routing
Perintah perintah dasar linux Operating Sistem
Pengantar algoritma pemrograman
Flowchart progrm linear bilangan bulat
5. pemrograman array dan_string
4. pemrograman fungsi
3. teknik looping dalam_pemrograman
2. teknik pemilihan dalam_pemrograman
1. variable identifier dan_tipe_data
Alpro tutor
3 piksel_dan_histogram
2 pengolahan_citra
Open GL T0074 56 sm3
Open GL T0074 56 sm2
Open GL 04 linealgos
Open GL T0074 56 sm4

6. pemrograman pointer

  • 1. BAB VIII PEMROGRAMAN POINTER Pertemuan Minggu XI dan XII Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Pointer Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer : Mahasiswa dapat membuat program dengan melibatkan Pointer pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer. Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi, misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah: Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer Tipe *nama_variabel ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer. 1
  • 2. Contoh 8.1 #include <stdio.h> #include <conio.h> main() { int x = 99; int *p1, *p2; p1 = &x; p2 = p1; /* print the value of x twice */ printf("Values at p1 and p2: %d % dn", *p1, *p2); /* print the address of x twice */ printf("Addresses pointed to by p1 and p2: %p %p", p1, p2); getch(); } Contoh 8.2 #include <stdio.h> #include <conio.h> main() { int U = 3; int v; int *pu; /* pointer t o an integer */ int *pv; /* pointer t o an integer */ pu = &U; /* assign address of U t o pu */ v = *pu; /* assign value of U t o v */ pv = &v; /* assign address of v t o pv */ printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu); printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv); getch(); } Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa sederet char (string). Contoh 8.3 2
  • 3. #include <stdio.h> #include <conio.h> void tukar(int *a, int *b); main() { int x,y; printf("Masukan nilai ke 1: "); scanf("%d",&x); printf("Masukan nilai ke 2: "); scanf("%d",&y); tukar(&x,&y); printf ("Setelah ditukarkan Nilai ke 1 %dn",x); printf ("Setelah ditukarkan Nilai ke 2 %d",y); getch(); } void tukar(int *a, int *b) { int smt; smt = *a; *a = *b; *b = smt; } Contoh 8.4 #include <stdio.h> #include <conio.h> main() { int number = 0; /* A variable of type int initialized to 0 */ int *pointer = NULL; /* A pointer that can point to type int */ number = 10; printf("nnumber's address: %p", &number); /* Output the address */ printf("nnumber's value: %dnn", number); /* Output the value */ pointer = &number; /* Store the address of number in pointer */ printf("pointer's address: %p", &pointer); /* Output the address */ printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */ printf("npointer's value: %p", pointer); /* Output the value (an address) */ printf("nvalue pointed to: %dn", *pointer); /* Value at the address */ getch(); } Contoh 8.5 #include <stdio.h> 3
  • 4. #include <conio.h> void funct1 (int U, int v); /* function prototype */ void funct2 (int *pu, int *pv); /* function prototype */ main () { int u = 1; int v = 3; printf ( "n Before calling functl : u=%d v=%d", u, v); funct1 (u, v); printf ( "n After calling functl : u=%d v=%d", u, v); printf ("nn Before calling funct2: u=%d v=%d", u, v) ; funct2(&u, &v); printf ("n After calling funct2: u=%d v=%d", u, v); getch(); } void funct1 (int U, int v) { U = 0; v = 0; printf ( " n Within functl : u=%d v=%d", U, v); return; } void funct2 (int *pu, int *pv) { *pu = 0; *pv = 0; printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ; return; } Pengayaan Latihan 8.1 #include <stdio.h> #include <conio.h> int hitung(char *s); main() { char kata[80]; printf("Masukan Sebuah Kata : n"); scanf("%s",&kata); printf("%d",hitung(kata)); getch(); } int hitung(char *s) 4
  • 5. { int i=0; for (;*s!='0'; *s++) i++; return(i); } Latihan 8.2 #include <conio.h> #include <stdio.h> #include <stdlib.h> #define size 10 void push(int i); int pop(void); int *tos, *p1, stack[size]; main() { int value; p1 = stack; tos = stack; do { printf("Enter value: "); scanf("%d", &value); if(value != 0) push(value); else {printf("value on top is %dn", pop()); printf("Alamat Memori %pn",(p1+1));} } while(value != -1); getch(); } void push(int i) { p1++; if(p1 == (tos+size)) { printf("Stack Overflow.n"); exit(1); } *p1 = i; } int pop(void) { if(p1 == tos) { printf("Stack Underflow. n"); exit(1); } p1--; return *(p1+1); } 5