0% menganggap dokumen ini bermanfaat (0 suara)
256 tayangan

Modul 2 Array, Pointer Dan ADT

Modul ini membahas tentang pengenalan bahasa C++ bagian kedua, meliputi penggunaan pointer dan alamat memory, array satu dimensi dan dua dimensi, serta hubungan antara pointer dan array.

Diunggah oleh

Devika Pakpahan
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
256 tayangan

Modul 2 Array, Pointer Dan ADT

Modul ini membahas tentang pengenalan bahasa C++ bagian kedua, meliputi penggunaan pointer dan alamat memory, array satu dimensi dan dua dimensi, serta hubungan antara pointer dan array.

Diunggah oleh

Devika Pakpahan
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Modul 2 : PENGENALAN BAHASA C++ (BAGIAN KEDUA)

2.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat:
1. Memahami penggunaan pointer dan alamat memory
2. Mengimplementasikan fungsi dan prosedur dalam program.

2.2 Array
Array merupakan kumpulan data dengan nama yang sama dan setiap elemen bertipe data sama.
Untuk mengakses setiap komponen / elemen array berdasarkan indeks dari setiap elemen.

2.2.1 Array Satu Dimensi


Adalah array yang hanya terdiri dari satu larik data saja. Cara pendeklarasian array satu dimensi:
tipe_data nama_var[ukuran]

Keterangan:
Tipe_data  menyatakan jenis elemen array (int, char, float, dll).
Ukuran  menyatakan jumlah maksimum array.
Contoh:
int nilai[10];

Menyatakan bahwa array nilai mengandung 10 elemen dan bertipe integer.


Dalam C data array disimpan dalam memori pada lokasi yang berurutan. Elemen pertama memiliki
indeks 0 dan selemen selanjutnya memiliki indeks 1 dan seterusnya. Jadi jika terdapat array dengan
5 elemen maka elemen pertama memiliki indeks 0 dan elemen terakhir memiliki indeks 4.
nama_var[indeks]

nilai[5]  elemen ke-5 dari array nilai. Contoh memasukkan data ke dalam array :
nilai[4] = 90; /*memasukkan 90 kedalam array nilai indeks ke-4*/
cin << nilai[4] /*membaca inputan dari keyboard*/

2.2.2 Array Dua Dimensi


Bentuk array dua dimensi ini mirip seperti tabel. Jadi array dua dimensi bisa digunakan untuk
menyimpan data dalam bentuk tabel. Terbagi menjadi dua bagian, dimensi pertama dan dimensi
kedua. Cara akses, deklarasi, inisialisasi, dan menampilkan data sama dengan array satu dimensi,
hanya saja indeks yang digunakan ada dua.
Contoh:
int data_nilai[4][3];
nilai[2][0] = 10;
0 1 2
0
1
2 10
3
Gambar 2.1 Ilustrasi Array Dua Dimensi

Modul Praktikum Algoritma Struktur Data 20


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

2.2.3 Array Berdimensi Banyak


Merupakan array yang mempunyai indeks banyak, lebih dari dua. Indeks inilah yang menyatakan
dimensi array. Array berdimensi banyak lebih susah dibayangkan, sejalan dengan jumlah dimensi
dalam array.
Cara deklarasi:
tipe_data nama_var[ukuran1][ukuran2]…[ukuran-N];

Contoh:
int data_rumit[4][6][6];

Array sebenarnya masih banyak pengembangannya untuk penyimpanan berbagai betuk data,
pengembangan array misalnya untuk array tak berukuran.

2.3 Pointer
2.3.1 Data dan Memory
Semua data yang ada digunakan oleh program komputer disimpan di dalam memory (RAM)
komputer. Memory dapat digambarkan sebagai sebuah array 1 dimensi yang berukuran sangat
besar. Seperti layaknya array, setiap cell memory memiliki “index” atau “alamat” unik yang berguna
untuk identitas yang biasa kita sebut sebagai “address”

Saat program berjalan, Sistem Operasi (OS) akan mengalokasikan space memory untuk setiap
variable, objek, atau array yang kita buat. Lokasi pengalokasian memori bisa sangat teracak sesuai
proses yang ada di dalam OS masing-masing. Perhatikan ilustrasi berikut
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 …

Gambar 2.2 Ilustrasi Memory

Digambarkan sebuah memory diasumsikan setiap cell menyimpan 1 byte data. Pada saat computer
pertama kali berjalan keadaan memory adalah kosong. Saat variable dideklarasikan, OS akan
mencarikan cell kosong untuk dialokasikan sebagai memori variable tersebut.
char a;
int j;
char arr[6];
arr[3] = ‘b’
a = ‘u’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 …

u b
Char a int j char arr[6]

Gambar 2.3 Ilustrasi Alokasi Memory

Pada contoh di atas variable a dialokasikan di memory alamat x6, variable j dialokasi kan di alamat
x10-13, dan variable arr dialokasiakan di alamat x17-22. Nilai variable yang ada di dalam memory
dapat dipanggil menggunakan alamat dari cell yang menyimpannya. Untuk mengetahui alamat
memori tempat di mana suatu variable dialokasikan, kita bisa menggunakan keyword & yang
ditemptakan di depan nama variable yang ingin kita cari alamatnya

Modul Praktikum Algoritma Struktur Data 21


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

C++ Output Keterangan


Cout << a << endl; „u‟ Nilai variable a
Cout << &a << endl; x6 Alamat variable a
Cout << j << endl; 0 Nilai variable j
Cout << &j << endl; X10 Alamat varibel j
Cout << &(arr[4]) << endl; X21 Alamat variable arr[4]

Program 20 Variabel dan alamat Memory

2.3.2 Pointer dan Alamat


Variabel pointer merupakan basic variable type yang berisi integer dalam format hexadesimal.
Pointer digunakan untuk menyimpan alamat memory variable lain sehingga pointer dapat
mengakses nilai dari variabel yang alamatnya ditunjuk. Cara pendeklarasian variable pointer adalah
sebagai berikut:
type *nama_variabel;

Contoh:
int *p_int;
/* p_int merupakan variable pointer yang menunjuk ke data bertipe int */

Agar suatu pointer menunjuk ke variable lain, mula-mula pointer harus diisi dengan alamat memory
yang ditunjuk.
p_int = &j;

Pernyataan di atas berarti bahwa p_int diberi nilai berupa alamat dari variable j. Setelah pernyataan
tersebut di eksekusi maka dapat dikatakan bahwa p_int menunjuk ke variable j. Jika suatu variable
sudah ditunjuk oleh pointer. Maka, variable yang ditunjuk oleh pointer dapat diakses melalui
variable itu sendiri ataupun melalui pointer.
Untuk mendapatkan nilai dari variabel yang ditunjuk pointer, gunakan tanda * di depan nama
variabel pointer
Pointer juga merupakan variable, karena itu pointer juga akan menggunakan space memory dan
memiliki alamat sendiri

int *p_int;
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 …

u b
int *p_int Char a int j char arr[6]

Gambar 2.4 Ilustrasi Alokasi Pointer

Modul Praktikum Algoritma Struktur Data 22


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

C++ Output Keterangan

10 Nilai variable j
X6 Alamat variable j
X6 Nilai variable p_int
X1 Alamat variable p_int

10 Nilai variable yang ditunjuk p_int

10 Nilai variable k

Program 21 Penggunaan Pointer

Berikut ini contoh program sederhana menggunakan pointer:

Program 22 Pointer

Gambar 2.5 Output Pointer

2.3.3 Pointer dan Array


Ada keterhubungan yang kuat antara array dan pointer. Banyak operasi yang bisa dilakukan dengan
array juga bisa dilakukan dengan pointer. Pendeklarasian array: int a[10];
Mendefinisikan array sebesar 10,kemudian blok dari objek array tersebut diberi nama
a*0+,a*1+,a*2+,…………a*9+.

Modul Praktikum Algoritma Struktur Data 23


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

Gambar 2.6 Array


Notasi a[i] akan merujuk elemen ke-i dari array .Jika pa merupakan pointer yang menunjuk variable
bertipe integer , yang di deklarasikan sebagai berikut :
int *pa;

maka pernyataan :
pa=&a[0];

akan membuat pa menunjuk ke alamat dari elemen ke-0 dari variable a. Sehingga, pa akan
mengandung alamat dari a[0].

pa

a:

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

Gambar 2.7 Pointer dan Array

Sekarang, pernyataan :
x=*pa;
Akan mengcopykan isi dari a[0] ke variable x.
Jika pa akan menunjuk ke elemen tertentu dari array , maka pendefinisian pa+1 akan menunjuk elem
berikutnya,pa+i akan menunjuk elemen ke i setelah pa, sedangkan pa-i akan menunjuk elemen ke i
sebelum pa. Sehingga jika pa menunjuk ke a[0] maka *(pa+1) akan mengandung isi elemen ke a[1].
pa+i merupakan alamat dari a[i] , dan *(pa+i) akan mengandung isi dari elemen a[i].

Modul Praktikum Algoritma Struktur Data 24


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Program 23 Pointer dan Array

2.3.4 Pointer dan String


A String
String merupakan bentuk data yang sering digunakan dalam bahasa pemrograman untuk mengolah
data teks atau kalimat. Dalam bahasa C pada dasarnya string merupakan kumpulan dari karakter
atau array dari karakter.
Deklarasi variabel string:
char nama[50];
50  menyatakan jumlah maksimal karakter dalam string.

Memasukkan data string dari keyboard:


gets(nama_array);
contoh: gets(nama);
jika menggunakan cin():
contoh: cin>>nama;
Inisialisasi string:
char nama*+= ,‘s’,’t’,’r’,’u’,’k’,’d’,’a’,’t’,’\0’-;
Merupakan variabel nama dengan isi data string “strukdat”.

Bentuk inisialisasi yang lebih singkat:


char nama*+=”strukdat”;

Menampilkan string bisa nggunakan puts() atau cout() :


puts(nama);
cout << nama;
Untuk mengakses data string sepertihalnya mengakses data pada array, pengaksesan dilakukan
perkarakter sesuai dengan indeks setiap karakter dalam string.
Contoh :
Cout<<nama[3]; /*menampilkan karakter ke-3 dari string*/
B Pointer dan String
Sesuai dengan penjelasan di atas , misalkan ada string :
"I am string"

Modul Praktikum Algoritma Struktur Data 25


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Merupakan array dari karakter. Dalam representasi internal, array diakhiri dengan karakter ‘\0’
sehingga program dapat menemukan akhir dari program.Panjang dari storage merupakan panjang
dari karakter yang ada dalam tanda petik dua ditambah satu.Ketika karakter string tampil dalam
sebuah program maka untuk mengaksesnya digunakan pointer karakter.standar input/output akan
menerima pointer dari awal karakter array.Sehingga, konstanta string akan diakses oleh pointer
mulai dari elemn pertama.
Jika pmessage di deklarasikan :
char *pmessage ;
Maka pernyataan berikut :
pmessage = "now is the time";
Akan membuat pmessage sebagai pointer pada karakter array. Ini bukan copy string, hanya pointer
yang terlibat. C tidak menyediakan operator untuk memproses karakter string sebagai sebuah unit.
Ada perbedaan yang sangat penting diantara pernyataan berikut :
char amessage[]="now is the time"; //merupakan array
char *pmessage= "now is the time"; //merupakan pointer
Variable amessage merupakan sebuah array, hanya cukup besar untuk menampung karakter-
karakter sequence tersebut dan karakter null ‘\0’ yang menginisialisasinya.Tiap-tiap karakter dalam
array bisa saja berubah tapi variable amessage akan selalu menunjuk apada storage yang sama.Di
sisi lain, pmessage merupakan pointer, diinisialisasikan menunjuk konstanta string,pointer bisa di
modifikasi untuk menunjuk kemanapun, tapi hasilnya tidak akan terdefinisi jika kamu mencoba
untuk mengubah isi string.
pmessage now is the time \0

amessage now is the time \0

Gambar 2.8 Pointer dan String

2.4 Fungsi
Fungsi merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus dengan tujuan:
1. Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan.
Program dibagi menjadi beberapa modul yang kecil.
2. Dapat mengurangi pengulangan kode (duplikasi kode) sehingga menghemat ukuran
program.
Pada umumnya fungsi memerlukan masukan yang dinamakan sebagai parameter. Masukan ini
selanjutnya diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai (nilai balik fungsi).
Bentuk umum sebuah fungsi:
tipe_keluaran nama_fungsi(daftar_parameter) {
blok pernyataan fungsi ;
}
Jika penentu_tipe fungsi merupakan tipe dari nilai balik fungsi, bila tidak disebutkan maka akan
dianggap (default) sebagai int.

Modul Praktikum Algoritma Struktur Data 26


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Algoritma C++
Program coba_fungsi

Kamus
x,y,z : integer

function max3(input:
a,b,c : integer) : integer

Algoritma
input(x,y,z)
output( max3(x,y,z) )

function max3(input:a,b,c : integer)


: integer
kamus
temp_max : integer
algoritma
temp_max  a
if (b>temp_max) then
temp_max  b
if (c>temp_max) then
temp_max  c
 temp_max

Program 24 contoh penggunaan Fungsi

2.5 Prosedur
Dalam C sebenarnya tidak ada prosedure, semua berupa fungsi, termasuk main() pun adalah sebuah
fungsi. Jadi prosedur dalam C merupakan fungsi yang tidak mengembalikan nilai, biasa diawali
dengan kata kunci void di depan nama prosedur.
Bentuk umum sebuah prosedur:
void nama_prosedur (daftar_parameter) {
blok pernyataan prosedur ;
}

Modul Praktikum Algoritma Struktur Data 27


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Algoritma C++

Program coba_procedur

Kamus
jum : integer

procedure tulis(input:
x: integer)

Algoritma
input(jum)
tulis(jum)

procedure tulis(input: x: integer)


kamus
i : integer
algoritma
i traversal [1..x]
output("baris ke-",i+1)

Program 25 Contoh Penggunaan Prosedur

2.6 Parameter Fungsi


2.6.1 Paramater Formal dan Parameter Aktual
Parameter formal adalah variabel yang ada pada daftar paramerter ketika mendefinisikan fungsi.
Pada fungsi maks3() contoh diatas, a, b dan merupakan parameter formal.
float perkalian (float x, float y) {
return (x*y);
}

Pada contoh di atas x dan y adalah parameter formal.


Adapun parameter aktual adalah parameter (tidak selamanya menyatakan variabel) yang dipakai
untuk memanggil fungsi.
X = perkalian(a, b);
Y = perkalian(10,30);

Dari pernyataan diatas a dan b merupakan parameter aktual, begitu pula 10 dan 30. parameter
aktual tidak harus berupa variabel, melainkan bisa berupa konstanta atau ungkapan.

2.6.2 Cara melewatkan Parameter


A Pemanggilan dengan Nilai (call by value)
Pada pemanggilan dengan nilai, nilai dari para meter actual akan disalin kedalam parameter formal,
jadi parameter aktual tidak akan berubah meskipun parameter formalnya berubah. Untuk lebih
jelasnya perhatikan contoh berikut:

Modul Praktikum Algoritma Struktur Data 28


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Algoritma C++
Program coba_parameter_by_value

Kamus
a,b : integer

procedure tukar(input:
x,y : integer)

Algoritma
a  4
b  6
output(a,b)

tukar(a,b)

output(a,b)

procedure tukar(input:x,y : integer)


kamus
temp : integer

algoritma
temp  x
x  y
y  temp
output(x,y)

Program 26 Pemanggilan dengan Nilai (call by value)


Hasil eksekusi :
Kondisi sebelum tukar
a = 4, b = 6
nilai akhir pada fungsi tukar
x = 6, y = 4
Kondisi setelah tukar
a = 4, b = 6

Jelas bahwa pada pemanggilan fungsi tukar, yang melewatkan variabel a dan b tidak merubah nilai
dari variabel tersebut. Hal ini dikarenakan ketika pemanggilan fungsi tersebut nilai dari a dan b
disalin ke variabel formal yaitu x dan y.

Modul Praktikum Algoritma Struktur Data 29


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

B Pemanggilan dengan Pointer (call by pointer)


Pemanggilan dengan pointer merupakan cara untuk melewatkan alamat suatu variabel kedalam
suatu fungsi. Dengan cara ini dapat merubah nilai dari variabel aktual yang dilewatkan ke dalam
fungsi. Jadi cara ini dapat merubah variabel yang ada diluar fungsi. Cara penulisan :
tukar(int *px, int *py) {
int temp;
temp = *px;
*px = *py;
*py = temp;
… …
}
Cara pemanggilan:
tukar(&a, &b);
Pada ilustrasi di atas *px merupakan suatu variabel pointer yang menunjuk ke suatu variabel
interger. Pada pemanggilan fungsi tukar(), &a dan &b menyatakan “alamat a” dan “alamat b”.
dengan cara diatas maka variabel yang diubah dalam fungsi tukar() adalah variabel yang dilewatkan
dalam fungsi itu juga, karena yang dilewatkan dalam fungsi adalah alamat dari variabel tersebut, jadi
bukan sekedar disalin.

C Pemanggilan dengan Referensi (Call by Reference)


Pemanggilan dengan referensi merupakan cara untuk melewatkan alamat suatu variabel kedalam
suatu fungsi. Dengan cara ini dapat merubah nilai dari variabel aktual yang dilewatkan ke dalam
fungsi. Jadi cara ini dapat merubah variabel yang ada diluar fungsi. Cara penulisan :
tukar(int &px, int &py) {
int temp;
temp = px;
px = py;
py = temp;
… …
}
Cara pemanggilan:
tukar(a, b);

untuk melewatkan nilai dengan referensi, argumen dilalui ke fungsi seperti nilai lain. Jadi pada
akhirnya, harus mendeklarasikan di parameter awal, serta untuk pemanggilan tidak perlu
menggunakan paramter tambahan seperti pada call by pointer.

Modul Praktikum Algoritma Struktur Data 30


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Algoritma C++
Program
coba_parameter_by_reference
Call By
Kamus Reference
a,b : integer

procedure tukar(input/output:
x,y : integer)

Algoritma
a  4
b  6
output(a,b)

tukar(a,b)

output(a,b)

procedure tukar(input/output
:x,y : integer)
kamus
temp : integer
algoritma
temp  x
x  y
y  temp
output(x,y)
Algoritma C++
Program coba_parameter_by_pointer

Kamus
a,b : integer Call by
Pointer
procedure tukar(input/output:
x,y : integer)

Algoritma
a  4
b  6
output(a,b)

tukar(a,b)

output(a,b)

procedure tukar(input/output
:x,y : integer)
kamus
temp : integer

algoritma
temp  x
x  y
y  temp
output(x,y)

Program 27 Pemanggilan dengan referensi (call by pointer) dan pointer (call by pointer)

Modul Praktikum Algoritma Struktur Data 31


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

2.7 Rekursif
Rekursif berarti suatu fungsi dapat memanggil fungsi yang merupakan dirinya sendiri.
Algoritma C++
Program coba_rekursif

Kamus
bil, bil_pkt : integer

function pangkat (input:


x,y: integer)

Algoritma
input(bil, bil_pkt)
output( pangkat(bil, bil_pkt) )

function pangkat (input:


x,y: integer)
kamus
algoritma
if (y = 1) then
 x
else
 x * pangkat(x,y-1)

Program 28 Rekursif

Modul Praktikum Algoritma Struktur Data 32


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

2.8 Abstract Data Type (ADT)


ADT adalah TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap TYPE tersebut.Selain itu, dalam
sebuah ADT yang lengkap, disertakan pula definisi invarian dari TYPE dan aksioma yang berlaku.ADT
merupakan definisi STATIK.
Definisi type dari sebuah ADT dapat mengandung sebuah definisi ADT lain. Misalnya :
1. ADT waktu yang terdiri dari ADT JAM dan ADT DATE
2. Garis terdiri dari duah buah ADT POINT
SEGI4 yang terdiri dari pasangan dua buah POINT (Top,Left) dan (Bottom,Right)
TYPE diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan. Jika dalam bahasa C
menggunakan struct PRIMITIF, dalam konteks procedural, diterjemahkan menjadi fungsi atau
prosedur. PRIMITIF dikelompokan menjadi:
1. Konstruktor/Kreator, pemebentuk nilai type.Semua objek (variabel) bertype tersebut harus
melalui konstruktor.Biasanya namanya diawali Make.
2. Selektor, untuk mengakses komponen type (biasanya namanya diawali Get).
3. Prosedur pengubah nilai komponen (biasanya namanya diawali Get).
4. Validator komponen type, yang dipakai untuk mentest apakah dapat membentuk type
sesuai dengan batasan.
5. Destruktor/Dealokator yaitu untuk “menghancurkan” nilai objek/variable (sekaligus memory
penyimpanannya).
6. Baca/Tulis, untuk interface dengan input/output device.
7. Operator relational, terhadap type tersebut untuk mendefinisikan lebih besar, lebih kecil,
sama dengan dan sebagainya.
8. Aritmatika terhadap type tersebut , karena biasanya aritmatika dalam bahasa C hanya
terdefinisi untuk bilangan numeric.
9. Konversi dari type tersebut ke type dasar dan sebaliknya.
ADT biasanya diimplementasikan menjadi dua buah modul utama dan 1 modul interface program
utama(driver). Dua modul tersebut adalah sebagai berikut:
1. Definisi/Spesifikasi Type dan Primitif / Header fungsi (.h)
- Spesifikasi type sesuai dengan kaidah bahasa yang dipakai
- Spesifikasi dari primitive sesuai dengan kaidah dalam konteks procedural,yaitu:
- Fungsi : nama, domain, range, dan prekondisi jika ada
- Prosedur : Initial state, Final state, dan proses yang dilakukan
2. Body/relisasi dari primitive (.c)
Berupa kode program dalam bahasa yang bersangkutan (dalam praktikum ini berarti dengan bahasa
C++). Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan selector dan konstruktor.

Modul Praktikum Algoritma Struktur Data 33


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Untuk memahami lebih jelas mengenai konsep ADT, perhatikan ilustrasi berikut
Algoritma C++
Program coba_ADT

Type
mahasiswa <
nim : char[10]
nilai1,nilai2 : integer

Kamus Definisi/
mhs : mahasiswa Spesifikasi Type
dan Primitif /
procedure inputMhs(input/output
m : mahasiswa ) Header fungsi
function rata2(input: (&.h)
m : mahasiswa) : real

Algoritma
inputMhs(mhs)
output( rata2(mhs) )

procedure inputMhs(input/output
m : mahasiswa )
kamus
algoritma
input(m.nim, m.nilai1, m.nilai2)
Body/ relisasi
function rata2(input:
m : mahasiswa) : real dari primitive
kamus (&.c)
algoritma
 (m.nilai1 + m.nilai1) / 2

Program 29 Contoh program tanpa ADT

Untuk menerapkan konsep ADT, kita harus memisah deklarasi tipe, variabel, dan fungsi dari program
ke dalam sebuah file .h dan memisah definisi fungsi dari program ke sebuah file .cpp. Sehingga jika
kita menerapkan konsep ADT berdasarkan contoh program di atas, bentuk code program akan
dipisah menjadi seperti berikut
Algoritma C++
mahasiswa.h
Program coba_ADT

Type
mahasiswa <
nim : char[10]
nilai1,nilai2 : integer

Kamus
mhs : mahasiswa

procedure inputMhs(i/o
m : mahasiswa )
function rata2(input:
m : mahasiswa) : real

Modul Praktikum Algoritma Struktur Data 34


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

Algoritma
inputMhs(mhs)
output( rata2(mhs) )

mahasiswa.cpp
procedure inputMhs(input/output
m : mahasiswa )
kamus
algoritma
input(m.nim, m.nilai1, m.nilai2)

function rata2(input:
m : mahasiswa) : real
kamus
algoritma
 (m.nilai1 + m.nilai1) / 2

main.cpp

Program 30 Contoh program menggunakan ADT

Modul Praktikum Algoritma Struktur Data 35


2 PENGENALAN BAHASA C (BAGIAN KEDUA)

2.9 Latihan
1. Buatlah FUNGSI atau PROSEDUR untuk menghitung faktorial dari suatu bilangan secara
rekursif.
Contoh:
input bilangan: 5 <inputan>
faktorial dari 5 adalah 120 <outputan>
2. Buat program yang dapat menyimpan data mahasiswa (max. 10) kedalam sebuah array
dengan field nama, nim, uts, uas, tugas, dan nilai akhir. Nilai akhir diperoleh dari FUNGSI
dengan rumus 0.3*uts+0.4*uas+0.3*tugas.

3. Studi Kasus
Buatlah sebuah program pemrosesan data mahasiswa sederhana yang
mengimplementasikan konsep ADT.
Ketentuannya :
- Tipe bentukan Mahasiswa berupa Nama, NIM, dan Nilai
- Terdiri dari 3 file, main.c, mahasiswa.c, mahasiswa.h
- Menu program terdiri dari Input Data Mahasiswa, View Data Mahasiswa, dan Cari Data
Mahasiswa
- View Data Mahasiswa termasuk menampilkan Nilai Rata-rata, Tertinggi, dan Terrendah
- Menu program tambahan terdiri dari Update Data Mahasiswa dan Delete Data
Mahasiswa (nilai bonus)
file mahasiswa.h harus berisi :

Program 31 mahasiswa.h

Modul Praktikum Algoritma Struktur Data 36

Anda mungkin juga menyukai