• Tidak ada hasil yang ditemukan

PENYELEKSIAN KONDISI

2. Teori dasar

a. Deklarasi Struct (Record)

Turbo C tidak selalu menyediakan tipe data yang sesuai dengan tipe data yang diinginkan. Contoh kasus yaitu ketika kita ingin membuat suatu program mengolah data mahasiswa dimana data mahasiswa terdiri dari NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz, NilaiAkhir dan Index Prestasinya. Turbo C tidak menyediakan tipe data untuk data tersebut. Oleh karena itu maka kita harus membuat suatu tipe data baru yang cocok dengan keperluan kita. Caranya adalah dengan menggunakan perintah struct[1].

Deklarasi tipe data baru (struct) untuk data mahasiswa dapat dilihat sebagai berikut :

{ char NIM[11]; char Nama[21]; int NilaiUTS,NilaiUAS,NilaiQuiz; float NilaiAkhir; char index; };

Deklarasi diatas berarti kita telah membuat suatu tipe data yang bernama TMhs dimana setiap data bertipe TMhs mempunyai field NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz, NilaiAkhir dan index. Untuk mendeklarasikan sebuah variable yang bertipe TMhs caranya adalah seperti berikut :

TMhs Mhs1,Mhs2;

Deklarasi tersebut berarti bahwa kita membuat suatu variable bernama Mhs1 dan Mhs2 dimana tiap variable tersebut mempunyai field sesuai dengan TMhs.

Contoh program [2]: #include <stdio.h> #include <conio.h> #include <string.h> struct TMhs { char NIM[11]; char Nama[21]; int NilaiUTS,NilaiUAS,NilaiQuiz; float NilaiAkhir; char index; }; main() {

TMhs mhs1,mhs2;

printf(“Pengisian Data”);

printf(“NIM : “);gets(mhs1.NIM); printf(“NAMA : “);gets(mhs1.Nama);

printf(“Nilai QUIZ : “);scanf(“%d”,&mhs1.NilaiQuiz); printf(“Nilai UTS : “);scanf(“%d”,&mhs1.NilaiUTS); printf(“Nilai UTAS : “);scanf(“%d”,&mhs1.NilaiUAS);

mhs1.NilaiAkhir=0.2*mhs1.NilaiQuiz+0.3*mhs1.NilaiUTS+0.5*mhs1.Ni laiUAS; if(mhs1.NilaiAkhir>=80) mhs1.index=‟A‟;else if(mhs1.NilaiAkhir>=60) mhs1.index=‟B‟;else if(mhs1.NilaiAkhir>=40) mhs1.index=‟C‟;else if(mhs1.NilaiAkhir>=20) mhs1.index=‟D‟;else if(mhs1.NilaiAkhir>=00) mhs1.index=‟E‟;

mhs2=mhs1; // mengisikan semua data di mhs1 ke mhs2

printf(“Data yang telah dimasukan :”); printf(“NIM : %s\n“,mhs2.NIM);

printf(“NAMA : %s\n“,mhs2.Nama);

printf(“Nilai QUIZ : %i\n“,mhs2.NilaiQuiz); printf(“Nilai UTS : %d\n”,mhs2.NilaiUTS); printf(“Nilai UTAS : %d\n”,mhs2.NilaiUAS);

printf(“Nilai Akhir: %.2f\n”,mhs2.NilaiAkhir); printf(“Index : %c\n”,mhs2.index);

getch(); }

b. Struct pada Array

Setiap tipe data dapat dibuat dalam bentuk array. Begitu juga dengan tipe data yang dibuat dengan perintah struct.

Contoh program [3]: #include <stdio.h> #include <conio.h> #include <string.h> #define maks 3 struct TMhs { char NIM[9]; char Nama[21]; int NilaiUTS,NilaiUAS,NilaiQuis; float NilaiAkhir; char index; }; main() {

TMhs mhs[maks]; // array struct int i;

for(i=0;i<maks;i++) {

printf("Pengisian Data Mahasiswa Ke-%i\n",i+1); printf("NIM : ");fflush(stdin);gets(mhs[i].NIM); printf("NAMA : ");fflush(stdin);gets(mhs[i].Nama); printf("Nilai QUIZ : ");scanf("%d",&mhs[i].NilaiQuis); printf("Nilai UTS : ");scanf("%d",&mhs[i].NilaiUTS); printf("Nilai UTAS : ");scanf("%d",&mhs[i].NilaiUAS);

mhs[i].NilaiAkhir=0.2*mhs[i].NilaiQuis+0.3*mhs[i].NilaiUTS+0.5*mhs[i]. NilaiUAS; if(mhs[i].NilaiAkhir>=80) mhs[i].index='A';else if(mhs[i].NilaiAkhir>=60) mhs[i].index='B';else if(mhs[i].NilaiAkhir>=40) mhs[i].index='C';else if(mhs[i].NilaiAkhir>=20) mhs[i].index='D';else if(mhs[i].NilaiAkhir>=0) mhs[i].index='E'; }; clrscr();

printf("Data yang telah dimasukan adalah : \n");

printf("---\n");

printf("---\n");

for(i=0;i<maks;i++) {

printf("| %-8s | %-20s | %3i | %3i | %3i | %6.2f | %c |\n", mhs[i].NIM,mhs[i].Nama,mhs[i].NilaiQuis,mhs[i].NilaiUTS, mhs[i].NilaiUAS,mhs[i].NilaiAkhir,mhs[i].index); } printf("---\n"); getch(); return 0; }

3. Latihan

1) Buatlah sebuah program untuk Menginput data pegawai dan

besar gaji serta tunjangan dengan menggunakan record!

2) Buatlah program pada nomor 1 dengan menggunakan struct

Daftar Pustaka

[1] Frieyadie. 2005. “Panduan Pemrograman C++”. Penerbit Andi. Yogyakarta

[2] Kurniawan Khannedy Eko. 2007. “Pemrograman C”. Teknik Informatika. UNICOM.

[3] Sjukani Moh. 2009. “Algoritma (Algoritma & Struktur Data 1) dengan C, C++, dan Java, Teknik – Teknik Dasar Pemrograman Komputer”. Edisis 5. Mitra Wacana Media. Jakarta

BAB IX

POINTER

1. Pendahuluan a. Deskripsi

Bab ini menyajikan tentang penggunaan pointer. Lebih lanjut akan dijelaskan tentang operator pointer, operasi dalam pointer, pointer pada pointer, pointer pada array dan pointer pada string. Dan pada akhir bab diberikan soal latihan untuk meningkatkan pemahaman tentang penggunaan pointer.

b. Tujuan pembelajaran

Setelah mengikuti perkuliahan ini mahasiswa diharapkan

mampu memahami dan mengaplikasikan pointer dalam

menyelesaikan sebuah masalah pada bahasa pemrograman.

2. Teori Dasar

Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer digunakan untuk menunjuk ke suatu alamat memori sehingga alamat dari suatu variabel atau suatu fungsi dapat diketahui dengan mudah. Dengan adanya pointer maka kita dapat memanipulasi data yang berada pada alamat tertentu dalam memory. Terdapat dua jenis operator yang dapat digunakan dalam pointer yaitu :

a. Operator pointer

1. Operator dereference (&)

Operator dereference & merupakan operator alamat. Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis

oleh kompiler dan operating system pada saat run-time. Dengan menggunakan operator & ini, variabel akan menghasilkan alamat lokasi memori sehingga operator ini biasa disebut dengan address of. Sebagai contoh, Ani ditempatkan pada memori dengan alamat 0x00112ff55 dan dideklarasikan sbb[1]:

Ani = a;

Anna = Ani; // Anna sama dengan Ani (a)

Rani = &Ani; // Rani sama dengan alamat Ani (0x00112ff55)

Contoh program : #include <stdio.h> #include <conio.h> void main () { int x = 50, y, *z; y = x; z = &x;

printf ("Nilai x adalah %i",x); // Nilai x = 50 printf ("\nNilai y adalah %i", y); // Nilai y = x

printf ("\nNilai z adalah %i", z); // Nilai z = berisi alamat x getch ();

}

Tampilan program diatas adalah :

2. Operator reference (*)

Dengan menggunakan operator reference (*) user dapat mengakses secara langsung nilai yang terdapat didalam variabel yang berpointer. Hal ini dapat dilakukan dengan menambahkan identifier

asterisk (*), agar dapat menerjemahkan nilai sebenarnya dari suatu variabel. Operator ini biasa disebut value pointed by. Dengan menggunakan operator reference (*) ini akan dihasilkan nilai yang berada pada suatu alamat memori[1].

Sebagai contoh : Ani = a

Anna = &Ani// Anna sama dengan Alamat Ilham (0x00112ff55) Rani = *Ani // Rani sama dengan nilai Ani (a)

Contoh program : #include <stdio.h> #include <conio.h> void main () { int x = 50, y, *z; z = &x; y = *z;

printf ("Nilai x adalah %i",x); printf ("\nNilai y adalah %i", y); printf ("\nNilai z adalah %i", z); getch ();}

b. Operasi Pointer

1) Operasi penugasan[4]

Nilai suatu variabel pointer dapat disalin ke variabel pointer lainnya. Contoh program : #include "stdio.h" #include "conio.h" void main() { float *x1, *x2, y; clrscr(); y = 13.45;

x1 = &y; /* Alamat dari y disalin ke variabel x1 */ x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */

printf("Nilai variabel y = %.2f ada di alamat %p\n", y, x1); printf("Nilai variabel y = %.2f ada di alamat %p\n", y, x2); getch();

}

Tampilan program diatas adalah :

2) Operasi aritmatika [4]

Operasi aritmatika yang bisa dilakukan oleh pointer adalah hanya operasi penjumlahan dan pengurangan dan hanya data integer yang dapat digunakan. Operasi penjumlahan dan pengurangan akan menunjukkan alamat data berikutnya.

#include “stdio.h” #include “conio.h”

clrscr();

nilai[0] = 125; nilai[1] = 345; nilai[2] = 750;

penunjuk = &nilai[0];

printf(“Nilai %i ada di alamat memori %p\n”, *penunjuk, penunjuk);

printf(“Nilai %i ada di alamat memori %p\n”, *(penunjuk+1),

penunjuk+1);

printf(“Nilai %i ada di alamat memori %p\n”, *(penunjuk+2),

penunjuk+2); getch(); }

Tampilan program diatas adalah :

3) Operasi logika [4]

Operasi logika juga dapat digunakan dalam sebuah pointer. Contoh program: #include “stdio.h” #include “conio.h” void main() { int a = 100, b = 200, *pa, *pb; clrscr(); pa = &a; pb = &b; if(pa < pb)

printf(“pa menunjuk ke memori lebih rendah dari pb\n”);

if(pa == pb)

printf(“pa menunjuk ke memori yang sama dengan pb\n”);

if(pa > pb)

printf(“pa menunjuk ke memori lebih tinggi dari pb\n”);

getch(); }

Tampilan program diatas adalah :

c. Pointer pada Pointer

Pointer tidak hanya bisa menunjuk ke alamat suatu variabel tapi juga dapat digunakan untuk menunjuk ke alamat suatu pointer lainnya. Cara mendeklarasikannya adalah dengan menambahkan pointer reference (*) pada variabel yang akan ditunjuk [3].

char ani;

char *Anna; // pointer ke variabel char **Rani // pointer pada pointer ani „a‟ Anna = &ani Rani = &Anna Contoh program : #include "stdio.h" #include "conio.h" void main() { int x, *y, **z; x = 40;

printf ("Nilai x = %i", x); y = &x;

z = &y;

printf ("\nNilai y = %p",y); printf ("\nNilai z = %p", z); getch();

Tampilan program diatas adalah :

d. Pointer pada Array

Berikut ini adalah contoh penggunaan pointer pada array : Contoh program :

#include “stdio.h” #include “conio.h”

void main()

{ static int tgl_lahir[] = { 13,9,1982 }; int *ptgl;

ptgl = tgl_lahir; /* ptgl berisi alamat array */

printf(“Diakses dengan pointer”); printf(“Tanggal = %i\n”, *ptgl); printf(“Bulan = %i\n”, *(ptgl + 1)); printf(“Tahun = %i\n”, *(ptgl + 2)); printf(“\nDiakses dengan array biasa\n”); printf(“Tanggal = %i\n”, tgl_lahir[0]); printf(“Bulan = %i\n”, tgl_lahir[1]);

printf(“Tahun = %i\n”, tgl_lahir[2]);

getch(); }

e. Pointer pada String

Berikut adalah contoh penggunaan pointer pada string[1]. Contoh program :

#include "stdio.h" #include "conio.h"

char *nama1 = "SPIDERMAN"; char *nama2 = "GATOTKACA"; void main()

{ char namax; clrscr();

puts("SEMULA :");

printf("Saya suka >> %s\n", nama1);

printf("Tapi saya juga suka >> %s\n", nama2);

/* Penukaran string yang ditunjuk oleh pointer nama1 dan nama2 */ printf("SEKARANG :");

printf("Saya suka >> %s\n", nama1);

printf("Dan saya juga masih suka >> %s\n", nama2); getch();

}

Tampilan program diatas adalah :

Contoh Aplikasi Pointer [2] :

Salah satu penggunaan pointer adalah untuk membuat suatu array yang dinamis (banyaknya data yang bisa ditampung sesuai keperluan).

Sebagaimana kita ketahui jika kita membuat suatu program yang dapat menampung data nilai sebanyak 5 buah maka kita akan membuat suatu variabel array yang bertipe int dengan perintah int data[5]. Dengan cara begitu maka program hanya akan berjalan dengan baik jika data yang diinputkan banyaknya di kurang atau sama dengan 5 buah. Apa yang terjadi ketika data yang akan diinputkan ternyata 10 buah, maka langkah yang dilakukan adalah

harus mengubah programnya dan mengganti int data[5] menjadi int

data[10].

Cara lain untuk membuat program tersebut adalah dengan menggunakan suatu variabel array yang dinamis dimana pemesanan tempat yang diperlukan untuk menyimpan data tidak dideklarasikan dalam program tapi dilakukan secara runtime (ketika program berjalan). #include <conio.h> #include <stdlib.h> main() { int *data; int i,banyakdata;

printf("Banyak data yang akan diinputkan : ");scanf("%i",&banyakdata); data=(int *)malloc(sizeof(int)*banyakdata);

for(i=0;i<banyakdata;i++) {

printf("Pemasukan data ke-%i :",i+1);scanf("%i",(data+i)); }

printf("Data yang telah diinputkan adalah : \n"); for(i=0;i<banyakdata;i++)

printf("Data ke-%i : %i\n",i+1,*(data+i)); getch();

return 0; }

Tampilan program diatas adalah :

3. Latihan

1) Buatlah contoh penggunaan pointer pada pointer dan pointer pada array!

2) Buatlah sebuah program dimana setiap nilai dari suatu

Daftar Pustaka

[1] Frieyadie. 2005. “Panduan Pemrograman C++”. Penerbit Andi. Yogyakarta

[2] Kurniawan Khannedy Eko. 2007. “Pemrograman C”. Teknik Informatika. UNICOM.

[3] Sjukani Moh. 2009. “Algoritma (Algoritma & Struktur Data 1) dengan C, C++, dan Java, Teknik – Teknik Dasar Pemrograman Komputer”. Edisis 5. Mitra Wacana Media. Jakarta

[4] Solichin Achmad. “Pemrograman Bahasa C dengan Turbo C”.

www.ilmukomputer.com

[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta

BAB X

Dalam dokumen 210798067 Pemrograman Terstruktur Bahasa C (Halaman 94-112)

Dokumen terkait