Assalamualaikum, kembali lagi bersama saya shella maharani dari 1 d4eb. Udah lama kan ya? Kita tidak berjumpa, Nah kali ini kita akan kembali lagi belajar pemrograman C yakni  percobaan kali ini akan membahas tentang pointer.

Apasih pointer? Yuk

Tujuan
Mempelajari penggunaan variable pointer yang dipadukan dengan variable bertipe integer, array, dan string serta penggunaan pointer dalam suatu fungsi, baik sebagai penunjuk fungsi atau sebagai argument fungsi. Dipelajari juga pada praktikum ini pointer yang menunjuk pointer lainnya.

Teori
Pointer adalah suatu variabel yang berisi alamat memori dari suatu variabel lainnya. Alamat ini merupakan lokasi dari objek lain di dalam memori. Untuk mendeklarasikan sebuah variabel pointer, kita harus menggunakan tanda asterik/bintang ( * ) di depan variabel yang akan dideklarasikan.

Format Penulisan :
tipe_data *nama_variabel;

Untuk mendapatkan alamat dari variabel pointer yang telah dideklarasikan sebelumnya, kita harus menggunakan tanda ampersand (&) didepan variabel pointer tersebut.

Format Penulisan :
&nama_variabel;

Sedangkan untuk mendapatkan nilai dari variabel pointer yang telah dideklarasikan, kita harus menggunakan tanda asterik ( * ) didepan variabel pointer tersebut.

Format Penulisan :
*nama_variabel;

Contoh Penulisan :
#include <stdio.h>

int main () {

int nilai = 10;
int *nilai2;

nilai2 = &nilai;

printf(“Alamat variabel nilai: %x\n”, &nilai );
printf(“Isi variabel nilai2: %d\n”, *nilai2 );

getch();

return 0;

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

}

2. Mengamati persamaan penggunaan variable index pada array dan variable index pada pointer

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

}

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

}

4. 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;

}

5. fungsi mempunyai nilai balik bertipe pointer

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

}

6. Penggunaan 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 belajar dengan percobaan 1-5, saatnya kita mengerjakan tugasnya, yuk semangat pasti bisa.

TUGAS 9.5.1 Membuat program menyimpan bilangan sebanyak 12 dalam array dan diurutkan, kemudian ditampilkan sebelum dan sesudah diurutkan dengan array dan pointer

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
static int x,y[16],c,d;
char e[16],*f;
menu:
printf(“\n Angka sebelum diurutkan…\n”);
for(x=1;x<13;x++)
{
printf(“Angka ke %d = “,x);
scanf(“%d”,&y[x]);
}
printf(“\n Angka setelah diurutkan…\n”);
for(x=1;x<13;x++)
{
for(d=x+1;d<13;d++)
{
if(*(y+x)>*(y+d))
{
c=*(y+d);
*(y+d)=*(y+x);
*(y+x)=c;
}
}
printf(“Angka ke %d = %d\n”,x,*(y+x));
}
printf(“\n Ketik ‘exit’ untuk keluar…\n”);
gets(e);
printf(” “);
gets(e);
f=strlwr(e);
if(strcmp(f,”exit”)==0);
else
{
system(“cls”);
goto menu;
}
}

  • Facebook
  • Twitter
  • Google+
  • Pinterest

Tugas 9.5.2 Membuat program yang menyimpan ‘X’ karakter pada suatu array berdimensi 12×12, kemudian ditampilkan dengan index pointer

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
static int a[12][12],b,c,*d,e,f,g;
char h[8],*i;
menu1:
g=1;
for(e=0;e<12;e++)
{
for(f=0;f<12;f++)
a[e][f]=48;
}
menu2:
system(“cls”);
d=&a;
printf(“\n\r”);
for(e=1;e<13;e++)
{
for(f=1;f<13;f++)
printf(“%2c”,*d++);
puts(” “);
}
if(g>1)
{
printf(“\n Ketik ‘lanjut’ untuk melanjutkan.”);
printf(“\n Ketik ‘ulang’ untuk mengulang dari awal.”);
printf(“\n Ketik ‘exit’ untuk keluar.\n”);
gets(h);
gets(h);
i=strlwr(h);
if(strcmp(i,”lanjut”)==0)
{
g=1;
goto menu2;
}
else if(strcmp(i,”ulang”)==0)
goto menu1;
else if(strcmp(i,”exit”)==0);
else goto menu2;
}
else
{
g++;
printf(“\n Masukkan koordinat matrix dengan jarak 1 – 12…\n”);
scanf(“%d%d”,&c,&b);
-b;
-c;
a[b][c]=120;
goto menu2;
}
}

  • Facebook
  • Twitter
  • Google+
  • Pinterest

Sekian terimakasih. Semangattt kita pasti bisa.