dasar pemrograman komputer modul 8 pointer

11

Click here to load reader

Upload: amadeuz-ezrafel

Post on 06-Aug-2015

67 views

Category:

Documents


5 download

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 s

TRANSCRIPT

Page 1: Dasar Pemrograman Komputer Modul 8 Pointer

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.

Page 2: Dasar Pemrograman Komputer Modul 8 Pointer

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;

Page 3: Dasar Pemrograman Komputer Modul 8 Pointer

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:

Page 4: Dasar Pemrograman Komputer Modul 8 Pointer

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

}

Page 5: Dasar Pemrograman Komputer Modul 8 Pointer

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>

Page 6: Dasar Pemrograman Komputer Modul 8 Pointer

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)

Page 7: Dasar Pemrograman Komputer Modul 8 Pointer

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:

Page 8: Dasar Pemrograman Komputer Modul 8 Pointer

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.

Page 9: Dasar Pemrograman Komputer Modul 8 Pointer

MODUL PRAKTIKUM BAHASA PEMROGRAMAN TESTRUKTUR S1 PTI – TE UM

9 | P a g e

2. program menghitung banyak karakter

Page 10: Dasar Pemrograman Komputer Modul 8 Pointer

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?

Page 11: Dasar Pemrograman Komputer Modul 8 Pointer

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