Assalamualaikum Wr. Wb.

Selamat pagi, siang, sore, dan malam. Kembali lagi dengan saya zukruf kurnia firmansyah dari PENS 2019 Jurusan D4 Teknik Elektronika B. pada post saya kali ini, kita akan membahas lebih lanjut seputar materi Algoritma dan Pemrograman pada percobaan ke 9.

 

TEORI

Apa itu Pointer? Pointer 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.

#include <stdio.h>

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();

}

Berikut adalah hasilnya:

  • Facebook
  • Twitter
  • Google+
  • Pinterest

 

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

#include<stdio.h>

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();

}

Berikut adalah hasilnya:

  • Facebook
  • Twitter
  • Google+
  • Pinterest

 

  1. Pointer yang menunjuk ke pointer lain

 

#include <stdio.h>

 

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();

}

Berikut adalah hasilnya:

  • Facebook
  • Twitter
  • Google+
  • Pinterest

 

  1. Fungsi dengan argumen berupa pointer

 

#include<stdio.h>

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;

}

Berikut adalah hasilnya:

  • Facebook
  • Twitter
  • Google+
  • Pinterest

 

TUGAS

1. Membuat program untuk menyimpan bilangan pecahan acak sebanyak 12 bilangan.

#include<stdio.h>

main()
{
int a,b[15],c,d;

printf(“\n Angka sebelum diurutkan …\n”);
for(a=1;a<13;a++)
{
printf(” Angka ke %d = “,a);
scanf(“%d”,&b[a]);
}
printf(“\n Angka setelah diurutkan …\n”);
for(a=1;a<13;a++)
{
for(d=a+1;d<13;d++)
{
if(*(b+a)>*(b+d))
{
c=*(b+d);
*(b+d)=*(b+a);
*(b+a)=c;
}
}
printf(” Angka ke %d = %d\n”,a,*(b+a));
}
}

Berikut adalah hasilnya:

  • Facebook
  • Twitter
  • Google+
  • Pinterest

Dari tugas no 1, kami diperintah membuat suatu program untuk mengurutkan angka  yang telah diinputkan secara acak dan kemudian hasil angka yang diinputkan akan urut dan dicetak diprogram

semoga dapat dipahami teman-teman

Sekian dari saya kurang lebihnya mohon maaf

wassalamualikum wr wb