dasar pemrograman komputer modul 8 pointer
DESCRIPTION
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTURS1 PTI – TE UMMODUL 8 POINTERA. Tujuan Setelah mempelajari bab ini diharapkan mahasiswa akan mampu : 1. Mengenal dan memahami penggunaan pointer dalam listing program. 2. Membuat program sederhana dengan menerapkan konsep pointerB. Petunjuk 1. Awali setiap aktivitas anda dengan doa, agar anda lancar dalam belajar 2. Pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik 3. Kerjakan tugas-tugas praktikum dengan baik, jujur, dan sTRANSCRIPT
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
1 | P a g e
MODUL 8
POINTER
A. Tujuan
Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :
1. Mengenal dan memahami penggunaan pointer dalam listing program.
2. Membuat program sederhana dengan menerapkan konsep pointer
B. Petunjuk
1. Awali setiap aktivitas anda dengan doa, agar anda lancar dalam belajar
2. Pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik
3. Kerjakan tugas-tugas praktikum dengan baik, jujur, dan sabar
4. Tanyakan kepada instruktur apabila ada hal-hal yang kurang jelas
C. Alat dan Bahan
1. PC/ laptop yang memenuhi kapasitas untuk pemrograman bahasa C++
2. Software C++
3. Modul/handout materi yang akan di praktekkan
D. POINTER
Keunggulan menggunakan Pointer:
1. Penanganan terhadap array dan string akan lebih singkat, dan efisien. 2. Memungkinkan suatu fungsi untuk menghasulkan lebih dari satu nilai. 3. Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang
lain. 4. Kemampuan berkerja dengan memori yang telah dialokasikan secara
dinamik. 5. Memungkinkan untuk berhubungan langsung ke hardware. 6. Untuk menciptakan data structure yang kompleks. 7. Memungkinkan untuk berhubungan langsung dengan parameter command
line.
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
2 | P a g e
Dengan menggunakan pointer yang benar, anda dapat menyusun sebuah program
yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan
pointer akan mengakibatkan kesalahan fatal pada program anda. Karena pointer
dapat langsung menunjukan pada lokasi memori, jika lokasi yang ditunjuk salah, berarti
data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah
juga.
Operator deference (&) ampersand sign
Operator ini biasa disebut dengan address of atau operator alamat. Dengan
menggunakan operator deference variable akan menghasilkan alamat lokasi memori
Operator reference (*)
Operator ini biasa disebut value pointed by. Dengan menggunakan operator ini
akan dihasilkan nilai yang berada pada suatu alamat memori
Deklarasi Variabel Pointer
Variabel pointer juga harus didelarasikan terlebih dahulu sebelum mulai
digunakan bentuk umum cara mendeklarasikan variabel pointer adalah:
Tipe *nama_var_pointer
Tipe variabel sama dengan tipe yang dikenal oleh variabel biasa, misalnya int, float, char dan
sebagainya. Nama variabel pointer juga mengikuti ketentuan nama variabel biasa. Yang
membedakan variabel pointer dengan variabel biasa dengan menggunakan tanda asterisk (*)
didepan nama varibel pada waktu deklarasi.
Contoh :
Int *ptr_x;
Ptr merupakan variabel pointer, karena pada deklarasi digunakan tanda (*) didepan nama
variabelya.
Pengertian dalam deklarasi variabel pointer memiliki perbedaan dengan variabel biasa, jika
dalam deklarasi variabel biasa:
Float x;
Dalam deklarasi pointer:
Float *ptr_x;
Artinya variabel pointer ptr_x akan menunjukkan pada variabel yang bertipe float. Jadi disini
bukan ptr_x-nya yang bertipe float, melainkan variabel lain yang ditunjuk yang bertipe float.
Contoh: dalam pendeklarasian yang salah :
float y;
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
3 | P a g e
Int *ptr_y;
Benar :
Float y;
Float *ptr_y;
Dan untuk mendeklarasikan sebuah variable y yang bertipe integer dengan variabel pointernya
yy adalah:
Int y;
Int *yy; dapat disederhanakan int y,*yy;
Ex : Mencetak Nama Alamat Dengan pointer
#include<stdio.h>
#include<conio.h>
void main()
{
int x; int *ptr_x;
x=10.2;
ptr_x=&x;
printf("\n\nMenggunakan variabel biasa :");
printf("\nnilai dari x = %d ",x);
printf("\nAlamat dari x = %u ",&x);
printf("\n\nDengan menggunakan pointer : );
printf("\nnilai dari x =%d ",*ptr_x);
printf("\nnlai dari x =%u ",ptr_x);
}
Input data Melalui Pointer
Anda dapat juga mengimputkan suatu data kedalam variabel dengan dengan menggunankan pointernya, sebagai contoh tinjaulah program dibawah ini:
Int x;
Int *ptr_x;
Ptr_x=&x;
Printf(”inputkan nilai x : ”);
Scanf(”%d”,ptr_x);
Ingat! Menginputkan data dengan scanf() membutuhkan alamat dari variabel yang
bersangkutan. Karena ptr_x merupakan alamat dari variabel x, maka ptr_x dapat digunakan
dalam scanf(). Jadi pernyataan:
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
4 | P a g e
Scanf(”%d”,ptr_x);
Sama dengan:
Scanf(”%d”,&x);
Dimana &x juga menunjukkan alamat dari variabel x.
Memberikan suatu nilai pada suatu variabel lewat pointer
Nilai suatu variabel dapat juga diberikan lewat pointernya, nilai yang diberikan ini dapat
berbentuk kostanta ataupun ekspresi aritmatika
Contoh:
Int x;
Int *ptr_x;
Ptr_x=&x;
*ptr_x=5; /*pemberian nilai kostanta*/
Sedangkan untuk pemberian nilai yang berupa ekpresi adalah:
Int x,y=5,z=4;
Int *p_x;
P_x=&x;
*p_x=5*y+z-2; /*pemberian nilai ekspresi*/
Contoh : Memberikan suatu variabel melalui pointer
#include<stdio.h>
#include<conio.h>
void main()
{
float a1,a2,a3;
float *p_a3;
clrscr();
printf("input bilangan pertama : ");
scanf(%f",&a1);
printf("input bilangan kedua : ");
scanf(%f",&a2);
p_a3=&a3;
*p_a3=a1+a2;
printf("\nNilai a3 (dari variabelnya) = &.3f",a3);
printf("\nNilai a3 (dari pointernya) = &.3f",*p_a3);
}
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
5 | P a g e
Pointer dan fungsi
Pengiriman data dari sebuah fungsi kefungsi lain dapat juga dilakukan dengan bantuan
pointer, bila pointer digunakan, maka data yang dikirim harus berupa alamat variabel, bukan
lagi nama variabel.
Contoh_1: Mengirimkan data kesuatu fungsi dengan menggunakan pointer.
#include<stdio.h>
#include<conio.h>
void main()
{
float a,b,c;
float *p_c=&c;
clrscr();
printf("input bilangan pertama :");
scanf("%f",&a);
printf("input bilangan kedua :");
scanf("%f",&b);
jumlah(&a,&b,p_c) ;
printf("hasilkali kedua bilangan = %.3f",*p_c);
getch();
}
jumlah(alm_a,alm_b,alm_c)
float *alm_a,*alm_b,*alm_c;
{
*alm_c=*alm_a**alm_b;
}
Ket: *alm_c=*alm_a**alm_b;
disini turbo c langsung mengetahui bahwa tanda (*) mana yang berarti pointer dan mana yang
berarti tanda kali.
Contoh_2: Kombinasi antara pengguna variabel biasa dan pointer
#include<stdio.h>
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
6 | P a g e
#include<conio.h>
void main()
{
float a,b,c;
float *p_c=&c;
clrscr;
printf("input bilangan pertama :");
scanf("%f",&a);
printf("input bilangan kedua :");
scanf("%f",&b);
jumlah(a,b,p_c);
printf("/njumlah kedua bilangan = %.3f",p_c);
getch();
}
jumlah(x,y,alm_c);
float x,y,*alm_c;
{
*alm_c=x+y;
}
)
Contoh: dua dimensi (pointer)
Main
{
Float a[7][7];
Float n;
Int brs,kol;
Int i,j;
Clrscr();
Printf(“input jumlah elemen (max – 7) : “);
Scanf(“%f”,&n);
For (i=0;j<n;++i)
{
Printf(“A[%d][%d]=”,i+1,j+1);
Scanf(“%f”,*(a+i)+j);
}
}
Clrscr();
Printf(“\n\nelemen-elemen yang telah anda inputkan :”);
For (i=0;i<n;++i)
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
7 | P a g e
{
Printf(”\n”);
For (j=0;j<n;++j)
Printf(”%10.2f”,*(*(a+i)+j));
}
Getch()
}
Contoh 1:
Hasil Kompilasi:
Contoh 2:
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
8 | P a g e
Mula mula variabel tglahir di isi dengan tanggal , bulan , tahun melalui pengaksessan
Variable pointer yang menunjuk alamat array tglahir . Untuk menampilkan tglahir [ ]
Melalui variable pointer digunakan cara * (tgl +i) atau bisa juga dengan *tgl++.
Setelah itu dijalankan maka hasil eksekusi akan ditampilkan :
Latihan:
1. Berikut ini adalah program yang menggunakan suatu pointer output dari fungsi.
Jalankan program ini dan analisis alur programnya.
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
9 | P a g e
2. program menghitung banyak karakter
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
10 | P a g e
3.buatlah program untuk menjawab pertanyaan di bawah ini:
aziz = 57082
defa = aziz
dewi = defa +1
a. berapa nilai defa?
b. berapa nilai dewi?
aziz = 57082
defa = &aziz
dewi = *defa+1
c. berapa nilai defa?
d. berapa nilai dewi?
MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM
11 | P a g e
TUGAS
1. Buatlah program yang menampilkan kalimat terbalik dari suatu kalimat yang
diinputkan
Misal:
Masukkan sebuah kalimat: kasur
Kebalikannya: rusak
2. Buatlah program terdiri 3 variable a, b, c yang di inputkan dari fungsi main
kemudian dilewatkan ke fungsi yang tanpa memerlukan nilai balikan. Outputnya
adalah ketiga variable tersebut yang nilainya dua kali sebelumnya