Assalamualaikum Wr. Wb.

Salam sejahtera bagi kita semua. Apakabar kawan – kawan sudah lama tidak berjumpa dengan saya Rafli. Pada post saya kali ini, kita akan membahas lebih lanjut seputar materi Algoritma dan Pemrograman Bahasa C. Apa ya kira – kira ??

Yaaa… Benar, kita akan belajar mengenai bab POINTER kawan – kawan. Maka, dalam pembahasan kali ini, saya akan memaparkan variabel pointer dan bagaimana menggunakannya dalam sebuah fungsi. Kita akan mempelajari penggunaan dari variabel pointer yang akan dipadukan dengan berbagai tipe variabel (integer, array dan string), menggunakannya dalam sebuah fungsi (sebagai penunjuk fungsi maupun argument dalam fungsi) dan menggunakan sebuah pointer untuk menunjukan pointer lainnya. Setelah itu, kalian dapat mempraktikannya dalam program di code block seperti biasanya. Heheheheh… praktikum lagi horeee !! hati ku gembiraaaa !!

 

Baik langsung aja ya kawan – kawan kita tinjau teorinya. Meskipun sedikit formal dan kaku tapi setidaknya dapat berguna serta membantu kita saat praktikum nanti.

 

TEORI

Apa itu PointerPointer adalah  penunjuk suatu variabel yang menyimpan alamat dari suatu variabel yang ditunjuk oleh pointer yang bersagkutan. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain. Pointer sangat erat kaitannya dengan array, sehingga variabel pointer dapat menggantika fungsi dari variabel array.

 

  • Bagaimana cara mendeklarasikan sebuah pointer? Berikut bentuk umumnya :

 

tipe_data  *nama_pointer;

atau

tipe_data*  nama_pointer;

 

contoh :

long *P;

 

  • Bagaimana jika kita menggunakan pointer untuk menunjuk sebuah variabel? Berikut contohnya :

long X;

(Deklarasi variabel x dengan tipe long)

 

long *P:

(Deklarasi pointer P)

 

P = &X;

(Pointer P menunjuk variabel X)

P adalah pointer (berisi alamat) dan &X juga berisi alamat (alamat variabel X), maka kita dapat menyimpan alamat dari variabel X tersebut ke dalam pointer P.

 

  • Adakah bentuk program yang salah? Ada dong, seperti ini :

P = X;

Dalam program, x dinyatakan sebagai nilai (bukan alamat). Apabila kita memang ingin mengisikan nilai kedalam alamat yang disimpan oleh pointer P, maka seharusnya kita menggunakan tanda asterisk (*) di depan nama pointer tersebut, yaitu dengan mengubah kode diatas menjadi seperti dibawah ini:

*P = X;

 

PROGRAM PERCOBAAN

  1. Mengakses isi suatu variable melalui pointer.

/* Nama File : POINTER1.C */

 

void main()

{

int y, x = 2002;      /* x & y bertipe int */

int *px;              /* var pointer menunjuk data tipe int */

 

 

 

px = &x;              /* px diisi alamat dari variabel x */

y = *px;              /* y diisi nilai yang ditunjuk oleh px */

 

printf(“Alamat x               = %p\n”, &x);

printf(“Isi px                       = %p\n”, px);

printf(“Isi x                         = %d\n”, x);

printf(“Nilai *px                = %d\n”, *px);

printf(“Nilai y                     = %d\n”, y);

 

getch();

}

 

  1. Mengamati persamaan penggunaan variable index pada array dan variable index pada pointer, untuk menunjuk suatu nilai data didalam suatu variabel array

 

/* Nama File : STRING2.C */

 

void main()

{

int nilai[10]={86,75,98,66,56,76,80,95,70,60};

int index, *ip;

 

printf(“Mencetak menggunakan array\n”);

printf(“Daftar nilai siswa\n\n”);

for(index=0; index<10; index++)

printf(“%3d”,nilai[index]);

 

puts(“\n”);

printf(“Mencetak menggunakan pointer dan index\n”);

printf(“Daftar nilai siswa\n\n”);

for(index=0; index<10; index++)

printf(“%3d”,*(nilai+index));

 

puts(“\n”);

printf(“Mencetak menggunakan pointer\n”);

printf(“Daftar nilai siswa\n\n”);

ip=&nilai;

for(index=0; index<10; index++)

printf(“%3d”,*ip++);

 

getch();

}

 

  1. Pointer yang menunjuk ke pointer lain

 

/* Program : POINTER3.C */

 

void main()

{

int a, *b, **c;

 

a = 1975;

b = &a;

c = &b;

 

printf(“Nilai a = %d atau %d atau %d\n”, a, *b, **c);

printf(“b = %p = alamat a di memori\n”, b);

printf(“c = %p = alamat b di memori\n”, c);

printf(“alamat c di memori = %p\n”, &c);

 

getch();

}

 

  1. Fungsi dengan argumen berupa pointer

 

/* Nama File : POINTER4.C */

 

void naikkan_nilai(int *x, int *y);

 

main()

{

int a = 3, b = 7;

 

printf(“SEMULA      : a = %d  b = %d\n”, a, b);

naikkan_nilai(&a, &b);

printf(“SEKARANG : a = %d  b = %d\n”, a, b);

getch();

}

 

void naikkan_nilai(int *x, int *y)

{

*x = *x + 2;

*y = *y + 3;

}

 

  1. Fungsi mempunyai nilai balik bertipe pointer, sehingga dapat digunakan untuk mengembalikan nilai yang panjang seperti nilai suatu string

 

/* Nama File : POINTER5.C */

 

#include <stdio.h>

 

char *nama_bulan(int n)

{

static char *bulan[] = {

“Kode bulan salah”,

“Januari”,”Februari”,”Maret”,”April”,”Mei”,”Juni”,

“Juli”,”Agustus”,”September”,”Oktober”,”November”,

“Desember”

};

 

return ((n<1||n>12) ? bulan[0] : bulan[n]);

}

 

void main()

{

int bl;

 

printf(“Masukkan kode Bulan [1..12] : “);

scanf(“%d”, &bl);

printf(“Bulan ke-%d adalah %s\n”, bl, nama_bulan(bl));

 

getch();

}

 

  1. Menggunakan fungsi *strlwr(str)

 

/* Nama File : POINTER6.C */

 

#include <stdlib.h>

#include<string.h>

 

void main()

{

char str1[80], str2[80], *ptrx;

 

strcpy(str1,”INI ADALAH HURUF BESAR SEMUA!!!”);

strcpy(str2,”ini adalah huruf kecil semua!!!”);

ptrx = NULL;

 

cputs(“Isi str1 = “); puts(str1);

cputs(“Isi str2 = “); puts(str2);

cputs(“Isi ptrx = “); puts(ptrx);

 

ptrx = (char *) calloc(80, sizeof(char));

ptrx = strlwr(str1);

puts(“\nSeletelah ‘str1’ diproses dengan strlwr()\n”);

cputs(“Isi str1 = “); puts(str1);

cputs(“Isi ptrx = “); puts(ptrx);

 

ptrx = strupr(str2);

puts(“\nSeletelah ‘str2’ diproses dengan strupr()\n”);

cputs(“Isi str2 = “); puts(str2);

cputs(“Isi ptrx = “); puts(ptrx);

 

getch();

}

 

setelah kita mencoba bebrbagai percobaan diatas, maka selanjutnya adalah mengerjakan tugas.

  1. membuat program untuk menyimpan bilangan pecahan acak sebanyak 12 bilangan yang disimpan dalam suatu array. urutkan bilangan tersebut dan tampilkan sebelum dan sesudah diurutkan.

  • Facebook
  • Twitter
  • Google+
  • Pinterest

hasilnya

  • Facebook
  • Twitter
  • Google+
  • Pinterest

 

 

=====================================================

Rafli Herdiansyah

1 – D4 ELKA B

1110191040