PEMOGRAMAN 2
Disusun Oleh :
Muhammad Karim Abdul Jabbar
NIM : 202212031
1
KATA PENGANTAR
Alhamduillah dengan mengucapkan puji syukur kepada kehadirat
Allah SWT yang telah karena atas limpahan nikmat, rahmat dan hidayah-
nya sehingga penulis dan menyelesaikan makalah ini.makalah ini di susun
guna memenuhi salah satu tugas mata kuliah algoritma dan pemograman 2.
Dalam penulisan laporan ini, saya menyadari bahwa dalam penulisan
masih jauh dari kesempurnaan dikarenakan terbatasnya pengetahuan dalam
menulis laporan. oleh karena itu, saya mengharapkan segala bentuk
masukkan dan saran serta kritikan yang bersifat membangun demi kebaikan
nantinya. saya berharap semoga kedepannya laporan ini.
2
DAFTAR ISI
KATA PENGANTAR.....................................................................................................................2
DAFTAR ISI...................................................................................................................................3
LEMBAR ASISTENSI...................................................................................................................5
Modul 1 Array Dua Dimensi dan Multidimensi..............................................................................6
A. Tujuan................................................................................................................................6
B. Alat dan Bahan..................................................................................................................6
C. Kegiatan Praktikum...........................................................................................................7
D. Tugas...............................................................................................................................16
Modul 2 Record/Struct..................................................................................................................17
A. Tujuan..............................................................................................................................17
B. Alat dan Bahan................................................................................................................17
C. Kegiatan Praktikum.........................................................................................................17
D. Tugas...............................................................................................................................27
Modul 3 Fungsi Rekrusif...............................................................................................................28
A. Tujuan..............................................................................................................................28
B. Alat dan Bahan................................................................................................................28
C. Kegiatan Praktikum.........................................................................................................29
D. Tugas...............................................................................................................................35
Modul 4 Pencarian Data (Searching).............................................................................................36
A. Tujuan..............................................................................................................................36
B. Alat dan Bahan................................................................................................................36
C. Kegiatan Praktikum.........................................................................................................37
D. Tugas...............................................................................................................................47
Modul 5 Pengurutan Data (Shorting)............................................................................................48
A. Tujuan..............................................................................................................................48
B. Alat dan Bahan................................................................................................................48
C. Kegiatan Praktikum.........................................................................................................49
D. Tugas...............................................................................................................................65
3
Modul 6. Pointer............................................................................................................................66
A. Tujuan Praktikum............................................................................................................66
B. Alat dan Bahan................................................................................................................66
C. Langkah Praktikum.........................................................................................................67
D. Tugas...............................................................................................................................83
4
LEMBAR ASISTENSI
5
Modul 1. Array Dua Dimensi dan Multidimensi
A. Tujuan
a. Memahami dan membuat array dua dimensi dan multimensi menggunakan
Bahasa pemograman.
b. Mendefenisikan dan membuat matriks dengan menggunakan tipe data array
6
C. Kegiatan Praktikum
Pada kegiatan pratikum kali ini kita akan membuat input, output d a n analisis
pada program algoritma dan pemograman 2.
1. Input
2. Output
7
3. Analisis
a. Pada program yang diatas diketahui bahwa #include <iostream> berfungsi
sebagai library pada dev C++ sehingga terdapat perintah pada cin dan cout yang
nantinya akan dapat di kenadlikan oleh perintah.
b. Pada baris ke dua puluh sampai ke dua puluh empat itu menggunakan
perulangan for dalam for atau di sebut looping.
c. Void printArray bergungsi sebagai mencetak variabel array dengan bilangan
sedangan printArray itu berfungsi sebagai menampilkan semua isi nilai array
sekaligus dalam satu perintah.
d. Int i, j; berfungsi sebagai mengkonversi bilangan maupun string angka.
e. Cout<< sebagai untuk manampilkan output ke layer dan pada saat menulis teks
yang akan di tampilkan ke layar.
f. Endl; berfungsi untuk memudahkan pengaturan posisi pada pointer ,posisi
teks,cin/cout dan input/output.
2. Modul 1.2
1. Input
8
2. Ouput
3. Analisis
a. Pada int baris kolom matriks [3] [4]; berfungsi sebagai mengkoversi bilangan
atau string angka menjadi bilangan bulat dan memasukkan baris,kolom matriks
[3] [4] pada program tersebut
b. // input elemen array secara row major order tersebut adalah sebuah tampilan
atau komentar berguna untuk mengingatkan pada saat menginput elemen array
secara roy major
c. Cout << “input elemen Array:\n” berfunngsi sebagai menampilkan layer ouput
dengan cara menginput elemen array pada program
d. Pada baris ke Sembilan itu untuk menampilkan nilai jumlah baris dan kolom
sedangkan baris ke tiga belas menggunakan perulangan for sebagai menampilkan
nilai jumlah baris. pada baris ke lima belas menggunakan perulangan for untuk
menampilkan jumlah kolom kedua duanya atau sebut for dalam for.
9
3. Modul 1.3
1. Input
10
2. Output
11
3. Analisis
a. Pada program yang di kasih garis miring dua itu merupakan penjumlahan
matriks dua dimensi sebagai komtentar atau mengingatkan untuk
menampilkan input program
b. Dengan menggunakan perintah "#include <stdio.h>", program dapat
menggunakan fungsi-fungsi tersebut tanpa perlu mendefinisikannya
secara manual. Perintah ini umumnya ditempatkan di awal program C
untuk memastikan bahwa fungsi-fungsi standar tersebut dapat digunakan
sepanjang program
c. fflush(stdin);adalah perintah untuk membersihkan buffer bersifat standar
(stdin) pada C++. Namun, perintah ini tidak dianjurkan untuk digunakan
pada stdin karena tidak ditentukan oleh standar C++ dan dapat
menghasilkan program yang tidak diinginkan.
d. cin >> A[i][j];" adalah perintah yang digunakan untuk membaca input
dari pengguna dan menyimpannya ke elemen matriks A pada indeks [i]
[j]. Operator ">>" digunakan untuk memasukkan nilai dari input
pengguna ke variabel atau elemen matriks yang ditentukan.
4. Modul 1.4
1. Input
12
2. Output
3. Analisis
a. Pada static int data_huruf [2] [8]= merupakan contoh dari penulisan dari
deklarasi static member variabel didalam public akces.
b. Pada for(i=0; i<2; i++) suatu program dari penyelesian yang
memungkinkan kita agar memanipulasi alur jalan pada program
c. Cout << '/xDB'; merupakan pernyataan dalam bahasa C++ yang
digunakan untuk mencetak karakter khusus '/xDB' ke output standar
(biasanya konsol atau terminal)
d. }, berfungsi sebagai akhir program pada funsi main()
13
5. Modul 1.5
1.Input
14
2.Output
15
D. Tugas
16
Modul 2. Record/Struct
A. Tujuan
a. Mendefenisikan dan menggunakan tipe data record / structur
17
C. Kegiatan Praktikum
Pada kegiatan pratikum kali ini kita akan membuat input,output, dan analisis
pada program algoritma dan pemograman 2.
1. Modul 2.1
1. Input
2. Output
18
3. Analisis
2. Modul 2.2
1. Input
19
2. Output
3. Modul 2.3
1. Input
20
2. Output
4. Modul 2.4
1. Input
21
2. Output
5. Modul 2.5
1. Input
2. Output
22
6. Modul 2.6
a. Buat program record yang dapat merekam data pegawai dan menghitung total gaji
sesuai hari kerjanya.
1. Input
2. Output
23
b. Buatlah program menu yang berisi data-data penduduk (nama, alamat, umur,
agama, gol darah, status..dll) yang disimpan dalam array dan dapat dilakukan
penambahan data, pencarian data, penampilan data dan penghapusan data.
1. Input
24
25
26
27
2. Output
D. Tugas
28
Modul 3. Fungsi Rekrusif
A. Tujuan
1. Mempraktekkan fungsi rekrusif menggunakan bahasa pemograman.
29
C. Kegiatan Praktikum
Pada kegiatan pratikum kali ini kita akan membuat input,output, dan analisis
pada program algoritma dan pemograman 2.
1. Modul 3.1
1. Input
2. Output
3. Analisis
Pada source code di atas menggunakan file header #include <stdlib.h> yang
dimana berfungsi untuk operasi pembanding dan operasi konversi. Dan
#include<math.h> untuk fungsi matematika. Pada fungsi diatas dicek apakah nilai
y sama dengan 0 jika ya maka hasil sama dengan x. Jika tidak, maka hasilnya adalah
factor persekutuan terbesar dari bil1 dan bil2 atau x%y.
30
3. Modul 3.2
1. Input
2. Output
3. Analisis
Pada fungsi diatas dicek apakah nilai a kurang dari sama dengan 1, jika ya maka
hasil sama dengan 1. Apabila tidak makan hasilnya adalah a dikalikan dengan
factorial dari a tersebut (a-1).
31
3. Modul 3.2
a. Buatlah program Fibonacci
1. Input
2. Output
3. Analisis
Pada source code di atas menggunakan program fibonacci yang dimana program
yang menghasilkan deret Fibonacci dengan menggunakan iterasi atau perulangan.
Program tersebut biasanya akan meminta input dari pengguna berupa jumlah
angka Fibonacci yang ingin ditampilkan, kemudian program akan menghasilkan
deret tersebut.
32
b. Berikut program menghitung deret menggunakan perulangan. Buatlah program
untuk menghitung deret tersebut menggunakan fungction Rekursi.(deret S = 1+
2+3+4=…n)
1. Input
2. Output
33
3. Analisis
Pada source code di atas saya menambahkan program menghitung deret sebagai
untuk menghitung deret dengan mudah menggunakan formula yang diberikan.
Namun, perlu diperhatikan bahwa penggunaan rekursi dalam program ini
mungkin memiliki batasan pada jumlah elemen deret yang dapat dihitung karena
keterbatasan pada kedalaman rekursi dan ukuran tumpukan (stack) yang tersedia.
2. Output
3. Analisis
34
Pada source code di atas menggunakan fungsi rekursi berfungsi sebagai
pemrograman di mana suatu fungsi dapat memanggil dirinya sendiri. Pada
program rekursif, fungsi akan memecah permasalahan menjadi sub-permasalahan
yang lebih kecil, dan setiap sub-permasalahan tersebut akan dipecahkan
menggunakan pemanggilan rekursif fungsi itu sendiri.
35
D. Tugas
36
A. Tujuan
1. Mempraktekkan dan membandingkan metode searching menggunakan tipe
data array
C. Kegiatan Praktikum
Pada kegiatan pratikum kali ini kita akan membuat input,output,dan analisis
37
pada program algoritma dan pemograman 2.
1. Modul 4.1
1. input
2. output
3. Analisis
Pada program di atas menggunakan bool found sebagai yang dimana digunakan
untuk mencari elemen target dalam array dengan ukuran size. Fungsi tersebut
menggunakan perulangan for untuk memeriksa setiap elemen dalam array. Jika
elemen yang dicari ditemukan, fungsi akan mengembalikan true, dan jika tidak
ditemukan, fungsi akan mengembalikan false.
38
2. Modul 4.2
1. Input
2. Output
3. Analisis
Pada program di atas tersebut mencari nilai tertentu dalam array X dengan
menggunakan perulangan while dan mengecek apakah nilai tersebut ditemukan.
Program memberikan output yang sesuai tergantung pada apakah nilai tersebut
ditemukan atau tidak dalam array.
39
3. Modul 4.3
1. Input
2. Output
3. Analisis
Pada program di atas tersebut menunjukkan bahwa program tersebut juga mencari
nilai tertentu dalam array X dengan menggunakan perulangan while dan variabel
boolean found untuk menandai apakah nilai ditemukan atau tidak. Program
memberikan output yang sesuai tergantung pada apakah nilai tersebut ditemukan
atau tidak dalam array.
40
4. Modul 4.4
1. Input
2. Output
3. Analisis
Pada program di atas tersebut menunjukkan bahwa program tersebut mencari nilai
tertentu dalam array terurut secara menaik. Program menggunakan perulangan
while dan variabel boolean found untuk mencari nilai dan menandai apakah nilai
ditemukan. Program memberikan output yang sesuai tergantung pada apakah nilai
tersebut ditemukan atau tidak dalam array.
41
5. Modul 4.5
1. Input
2. Output
3. Analisis
Pada program di atas tersebut menunjukkan bahwa program tersebut mencari nilai
tertentu dalam array terurut secara menaik. Program menggunakan perulangan
while untuk mencari nilai dan memeriksa hasil pencarian dengan membandingkan
nilai pada indeks i dengan nilaiCari. Program memberikan output yang sesuai
tergantung pada apakah nilai tersebut ditemukan atau tidak dalam array.
42
6. Modul 4.6
1. Input
2. Output
43
3. Analisis
a. Pada program di atas tersebut dengan Baris 1-2: Mendefinisikan library
iostream dan menggunakan namespace std.
b. Baris 4-7: Mendefinisikan array X dengan ukuran 11 dan menginisialisasikan
nilainya dengan 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Juga mendefinisikan
variabel i untuk iterasi, nilaiCari untuk nilai yang akan dicari, dan found untuk
menyimpan status pencarian.
c. Baris 9: Meminta pengguna memasukkan nilai yang akan dicari dan
menyimpannya dalam variabel nilaiCari.
d. Baris 11: Menyimpan nilaiCari di dalam elemen terakhir array X (X[10]).
e. Baris 12: Menginisialisasi found dengan false untuk menandakan bahwa nilai
belum ditemukan.
f. Baris 13: Menginisialisasi i dengan 0 sebagai indeks awal.
g. Baris 14-19: Melakukan loop while untuk mencari nilaiCari dalam array X.
Loop akan berjalan selama found masih false dan nilai X[i] masih kurang dari
atau sama dengan nilaiCari. Dalam loop, program memeriksa apakah X[i] sama
dengan nilaiCari. Jika sama, found diubah menjadi true dan loop berhenti. Jika
tidak sama, i ditambah 1 untuk melanjutkan pencarian di indeks berikutnya.
h. Baris 20-30: Setelah loop selesai, program melakukan pemeriksaan terhadap
nilai i. Jika i sama dengan 10, berarti nilaiCari tidak ditemukan dalam array dan
pesan "tidak ada nilaiCari dalam Array" dicetak. Jika tidak, program memeriksa
apakah found bernilai true. Jika iya, berarti nilaiCari ditemukan dalam array pada
indeks ke-i dan pesan "nilaiCari ditemukan dalam Array pada index ke-i" dicetak.
Jika found bernilai false, berarti nilaiCari tidak ditemukan dalam array dan pesan
"tidak ada nilaiCari dalam Array" dicetak.
44
7. Modul 4.7
8. Output
45
9. Analisis
Pada program di atas tersebut menggunakan metode pencarian biner untuk
mencari nilaiCari dalam array yang sudah diurutkan. Dalam setiap iterasi loop,
program membagi wilayah pencarian menjadi setengahnya untuk mencari
nilaiCari dengan efisien. Jika nilaiCari ditemukan, program memberikan pesan
yang sesuai. Jika tidak ditemukan, program juga memberikan pesan yang sesuai.
8. Modul 4.8
a. Modifikasi contoh program di atas dengan : jumlah data diinput,elemen
datanya diinput dan ditampilkan (minimal satu contoh prgram).
1. Input
46
2. Output
47
2. Output
D. Tugas
48
Modul 5. Pengurutan Data (Shorting)
A. Tujuan
1. Mempraktekkan dan membandingkan metode searching menggunakan tipe
data array
49
C. Kegiatan Praktikum
Pada kegiatan pratikum kali ini kita akan membuat input,output, dan analisis
pada program algoritma dan pemograman 2.
1. Modul 5.1
1. Input
2. Output
50
3. Analisis
b. Baris 6-17: Membuat fungsi bubble_sort yang menerima sebuah larik (array)
dan ukuran (size) dari larik tersebut. Fungsi ini akan mengurutkan larik
menggunakan algoritma Bubble Sort. Algoritma ini menggunakan dua loop
bersarang untuk membandingkan dan menukar elemen-elemen larik sesuai
kebutuhan. Variabel temp digunakan untuk menukar elemen-elemen larik.
1) Loop pertama (i) akan berjalan dari 0 hingga (size-1). Loop ini
menunjukkan berapa kali proses pengurutan harus dilakukan.
2) Loop kedua (j) akan berjalan dari 0 hingga (size-1-i). Loop ini
membandingkan elemen-elemen larik berdekatan dan menukar mereka jika
urutan mereka salah.
c. Baris 20-35: Fungsi main merupakan fungsi utama dari program. Di dalam
fungsi ini, langkah-langkah berikut dilakukan:
3) Loop for digunakan untuk mengisi larik dengan angka acak antara 0 hingga
99 menggunakan fungsi rand() % 100.
51
2. Modul 5.2
1. Input
2. Output
52
3. Analisis
2) Loop pertama (i) akan berjalan dari 1 hingga (size-1). Loop ini
menunjukkan posisi elemen yang akan dimasukkan ke dalam bagian terurut.
6) Setelah loop while selesai, Temp dimasukkan ke posisi yang tepat dalam
53
bagian terurut.
c. Baris 18-32: Fungsi main merupakan fungsi utama dari program. Di dalam
fungsi ini, langkah-langkah berikut dilakukan:
3. Modul 5.3
1. Input
54
2. Output
3. Analisis
b. Baris 6-17: Membuat fungsi selection_sort yang menerima sebuah larik (array)
55
dan ukuran (size) dari larik tersebut. Fungsi ini akan mengurutkan larik
menggunakan algoritma Selection Sort. Algoritma ini menggunakan dua loop
bersarang untuk memilih elemen terkecil dari bagian tidak terurut dan
menukarnya dengan elemen pertama dari bagian terurut.
2) Loop pertama (current) akan berjalan dari 0 hingga (size-1). Loop ini
menunjukkan posisi elemen yang akan dimasukkan ke dalam bagian terurut.
3) Loop kedua (j) akan berjalan dari (current+1) hingga (size-1). Loop ini
mencari elemen terkecil dari bagian tidak terurut.
4) Jika ditemukan elemen yang lebih kecil, elemen tersebut ditukar dengan
elemen pada posisi current.
5) Setelah loop kedua selesai, elemen terkecil dari bagian tidak terurut telah
ditukar ke posisi current.
c. Baris 19-34: Fungsi main merupakan fungsi utama dari program. Di dalam
fungsi ini, langkah-langkah berikut dilakukan:
1) Variabel data_size dideklarasikan dan diatur nilainya menjadi 30.
2) Larik values dengan ukuran data_size dideklarasikan.
3) Menggunakan loop for untuk mengisi larik dengan angka acak antara 0
hingga 99 menggunakan fungsi rand() % 100.
4) Data yang belum diurutkan dicetak di layar.
5) Fungsi selection_sort dipanggil dengan mengirimkan larik values dan
ukuran data_size sebagai argumen.
6) Data yang sudah diurutkan dicetak di layar.
4. Modul 5.4
1. Input
56
2. Output
57
3. Analisis
2) Loop pertama (k) digunakan untuk menentukan ukuran gap awal dengan
membagi ukuran larik (size) menjadi dua dan membaginya secara iteratif.
3) Loop kedua (j) digunakan untuk mengiterasi melalui larik dari gap hingga
ukuran larik.
58
c. Baris 16-29: Fungsi main merupakan fungsi utama dari program. Di dalam
fungsi ini, langkah-langkah berikut dilakukan:
59
5. Modul 5.5
1. Input
2. Output
60
3. Analisis
a. Baris 1-4: Mendefinisikan direktif preprosesor dan menggunakan pernyataan
namespace untuk mengimpor ruang lingkup standar.
b. Baris 6-25: Membuat fungsi quick_sort yang menerima sebuah larik (array),
indeks pertama (first), dan indeks terakhir (last) dari larik tersebut. Fungsi ini akan
mengurutkan larik menggunakan algoritma Quick Sort.
1) Variabel temp, low, high, dan list_separator dideklarasikan.
2) Variabel low diatur dengan nilai first, dan variabel high diatur dengan nilai
last.
3) Variabel list_separator diatur dengan nilai elemen tengah dari larik, yaitu
array[(first + last) / 2].
4) Loop do-while digunakan untuk membagi larik menjadi dua bagian:
elemen-elemen yang lebih kecil dari list_separator berada di sebelah kiri,
dan elemen-elemen yang lebih besar berada di sebelah kanan.
5) Loop while di dalam loop do-while digunakan untuk memindahkan indeks
low ke kanan hingga menemukan elemen yang lebih besar atau sama
dengan list_separator.
6) Loop while kedua di dalam loop do-while digunakan untuk memindahkan
indeks high ke kiri hingga menemukan elemen yang lebih kecil atau sama
dengan list_separator.
7) Jika indeks low masih kurang dari atau sama dengan indeks high, dilakukan
pertukaran elemen array[low] dengan array[high], lalu indeks low
ditingkatkan dan indeks high diturunkan.
8) Loop do-while berlanjut selama indeks low masih kurang dari atau sama
dengan indeks high.
9) Setelah loop do-while selesai, larik telah dibagi menjadi dua bagian dan
indeks high menunjukkan batas terakhir dari bagian dengan elemen yang
lebih kecil dari list_separator.
10) Melalui pemanggilan rekursif, quick_sort diterapkan pada bagian kiri larik
(indeks first hingga high) dan bagian kanan larik (indeks low hingga last).
61
c. Baris 27-47: Fungsi main merupakan fungsi utama dari program. Di dalam
fungsi ini, langkah-langkah berikut dilakukan:
6) Fungsi quick_sort dipanggil dengan mengirimkan larik values, first, dan last
sebagai argumen untuk mengurutkan larik tersebut.
62
6. Modul 5.6
a. Buatlah program menu untuk memilih metode sorting yang digunakan. Contoh
tampilan output program : (mengurutkan 50 data acak/random)
1. Input
63
64
65
2. Output
66
D. Tugas
67
Modul 6. Pointer
A. Tujuan Praktikum
1. Memperkenalkan dan mempelajari konsep Pointer yang akan digunakan pada variabel
dinamis untuk memakai memori bebas selama eksekusi program.
a. Personal Computer/Laptop
b. Dev++
c. Compiler mingw
d. Microsoft Word
68
C. Kegiatan Praktikum
Pada kegiatan pratikum kali ini kita akan membuat input, output dan analisis pada
program algoritma dan pemograman 2.
1. Program 6.1
1. Input
69
2. Ouput
3. Analisis
Program tersebut merupakan contoh dari penggunaan pointer dalam c++.
Pada fungsi utama, terdapat pendeklarasian pointer yaitu pointer *p, *q, *r dengan
tipe data integer. Lalu dideklarasikan juga variabel n dengan tipe data integer yang
bernilai 10. Pointer *p dan *q dilakukan alokasi memori dinamis menggunakan
fungsi malloc ( ), dan sizeof(int) digunakan untuk mengalokasikan ukuran memori
yang sesuai untuk tipe data integer. Kemudian nilai variabel n ditugaskan ke
pointer p (p = &n) yang artinya pointer p menunjuk ke alamat variabel n.
Selanjutnya, nilai 120 ditugaskan ke alamat yang ditunjuk oleh pointer q dengan
*q = 120;. Ini berarti nilai 120 disimpan di alamat memori yang ditunjuk oleh
pointer q.
Selanjutnya, pointer r ditugaskan dengan nilai dari pointer p dengan r = p;.
Artinya, pointer r menunjuk ke alamat yang sama dengan pointer p, yaitu alamat
variabel n.
Selanjutnya, beberapa pesan dan nilai dari variabel-variabel pointer dicetak
menggunakan cout. Pesan-pesan tersebut mencetak nilai yang disimpan di alamat
yang ditunjuk oleh pointer p, q, dan r, serta alamat dari pointer itu sendiri.
Kemudian, nilai dari variabel n diubah menjadi nilai yang disimpan di alamat
yang ditunjuk oleh pointer q dengan n = *q;. Artinya, nilai dari pointer q
ditugaskan ke variabel n.
70
Selanjutnya, pointer p ditugaskan dengan nilai pointer q dengan p = q;.
Artinya, pointer p sekarang menunjuk ke alamat yang sama dengan pointer q.
Terakhir, beberapa pesan dan nilai dari variabel-variabel pointer dicetak lagi
menggunakan cout. Pesan-pesan tersebut mencetak nilai yang disimpan di alamat
yang ditunjuk oleh pointer p, q, dan r, serta alamat dari pointer itu sendiri.
2. Program 6.2
1. Input
2. Analisis
Program di atas merupakan contoh dari penggunaan pointer yang salah.
Pertama-tama dideklarasikan pointer *pu dengan tipe data float. Lalu
dideklarasikan juga variabel nu dengan tipe data yang sama dengan pointer *pu.
Dideklarasikan juga variabel u dan di inisialisasikan nilai yaitu 1234. Nah pada
baris ke 8 inilah terdapat kesalahannya, pointer pu menunjuk ke variabel u. Ini
salah dikarenakan berbeda tipe data, pointer pu bertipe data float sedangkan
variabel u bertipe data integer. Jadi jika program di jalankan maka akan error.
3. Program 6.3
71
1. Input
2. Output
3. Analisis
Program di atas merupakan contoh dari cara pointer menunjuk ke array. Di
dalam fungsi utama dideklarasikan sebuah array statis tgl_lahir yang bertipe data
integer, dan diinisialisasikan dengan nilai {27, 8, 1977}.
Selanjutnya, dideklarasikan pointer *ptgl dengan tipe data integer. Pada
baris berikutnya, pointer *ptgl menunjuk ke alamat dari array tgl_lahir. Pada baris
ke-10 nilai yang ditunjuk oleh pointer *ptgl di cetak dengan menggunakan cout
dengan pernyataan cout << "nilai yang ditunjuk oleh ptgl = " << *ptgl << endl;.
72
akan mencetak nilai dari elemen pertama dalam array tgl_lahir. Hasil cetakan dari
kedua cout tersebut akan sama, yaitu nilai dari elemen pertama dalam array
tgl_lahir.
4. Program 6.4
1. Input
2. Output
3. Analisis
Pada program di atas dideklarasikan dua variabel x dan y dengan tipe data
integer. Variabel px dengan tipe data integer dideklarasikan sebagai pointer.
Variabel x diinisialisasikan nilainya dengan 87. Selanjutnya alamat dari variabel x
ditugaskan ke pointer px (px = &x). Maka pointer *px akan menunjuk ke alamat
dari variabel x. Lalu, nilai yang telah ditunjuk oleh pointer *px ditugaskan ke
variabel y(y = *px). Ini berarti nilai yang ditunjuk oleh pointer *px ditugaskan ke
variabel y.
Selanjutnya, nilai dari alamat variabel x, nilai dari pointer px, dan nilai dari
variabel y dicetak menggunakan cout. Pernyataan cout << "alamat x = " << &x <<
73
endl; akan mencetak alamat dari variabel x. Pernyataan cout << "isi px x = " <<
px << endl; akan mencetak nilai dari pointer px, yaitu alamat dari variabel x.
Pernyataan cout << "nilai yang ditunjuk oleh px = " << px << endl; akan
mencetak nilai dari pointer px, yaitu alamat dari variabel x. Pernyataan cout <<
"nilai y = " << y << endl; akan mencetak nilai dari variabel y, yang merupakan
nilai yang ditunjuk oleh pointer px. Hasil cetakan dari cout tersebut akan
mencakup alamat dari variabel x, alamat yang ditunjuk oleh pointer px, dan nilai
dari variabel y.
5. Program 6.5
1. Input
2. Output
3. Analisis
Pada program di atas dideklarasikan array static tgl_lahir[] dengan tipe data
integer dan diinisialisasikan nilai nya dengan {27, 8, 1977}. Lalu variabel i
dideklarasikan tipe data integer. Selanjut nya pointer *ptgl dideklarasikan dengan
tipe data integer juga. Pada baris ke 9, pointer *ptgl menunjuk ke alamat array
dari tgl_lahir.
Selanjutnya terdapat perulangan For yang berfungsi untuk mencetak semua
nilainya. Perulangan tersebut memiliki kondisi i < 3, dan i diinisialisasikan
sebagai 0. Jika benar, maka program akan mencetak nilai yang ditunjuk oleh
74
pointer *ptgl yang digeser sebesar i.
Hasil cetakan dari cout tersebut akan mencetak semua nilai dalam array tgl_lahir
secara berurutan, yaitu 27 8 1977.
6. Program 6.6
1. Input
2. Output
3. Analisis
Program di atas contoh penggunaan pointer yang menunjuk konstanta string.
Pada fungsi utama terdapaat variabel pointer pkota dengan tipe data integer. Lalu
pernyataan char *pkota = "YOGYAKARTA"; digunakan untuk menginisialisasi
pointer pkota dengan alamat dari konstanta string "YOGYAKARTA". Dalam C+
+, ketika sebuah string diapit oleh tanda kutip ganda seperti ini, itu secara
otomatis dianggap sebagai array karakter dengan karakter nul diakhirinya.
Selanjutnya, pernyataan cout << pkota << endl; digunakan untuk mencetak
nilai yang ditunjuk oleh pointer pkota menggunakan cout. Dalam konteks ini, nilai
yang ditunjuk oleh pkota adalah konstanta string "YOGYAKARTA".
Hasil cetakan dari cout tersebut akan mencetak konstanta string
75
"YOGYAKARTA".
7. Program 6.7
1. Input
2. Output
3. Analisis
Pada program di atas terdapat variabel global yang dideklarasikan diluar
dari fungsi, yang pertama ada variabel panjang dengan inisialisasi nilai 20. Dan
juga terdapat variabel global yaitu array nama1 dan nama2 yang sama-sama
memiliki indeks variabel panjang dengan tipe data char. Array nama1 dinisialisasi
dengan nilai “hanif”, sedangkan array nama2 diinisialisasi dengan “fathimah”.
Pada fungsi utama, sebuah array karakter namax dengan panjang panjang
dideklarasikan untuk digunakan sebagai variabel sementara dalam pertukaran
string.
76
Pernyataan cout << "semula : " << endl; digunakan untuk mencetak pesan
"semula :" diikuti dengan karakter newline. Pernyataan cout << "nama1 -> " <<
nama1 << endl; digunakan untuk mencetak nilai dari array nama1 menggunakan
cout. Pernyataan cout << "nama2 -> " << nama2 << endl; digunakan untuk
mencetak nilai dari array nama2 menggunakan cout.
Selanjutnya, terdapat proses pertukaran string menggunakan fungsi strcpy
dari <string.h>. Pernyataan strcpy(namax, nama1); menyalin isi dari array nama1
ke array namax. Pernyataan strcpy(nama1, nama2); menyalin isi dari array nama2
ke array nama1. Pernyataan strcpy(nama2, namax); menyalin isi dari array namax
ke array nama2. Dengan demikian, isi dari nama1 dan nama2 akan bertukar.
Pernyataan cout << "kini : " << endl; digunakan untuk mencetak pesan "kini
:" diikuti dengan karakter newline. Pernyataan cout << "nama1 -> " << nama1 <<
endl; digunakan untuk mencetak nilai dari array nama1 setelah pertukaran
menggunakan cout. Pernyataan cout << "nama2 -> " << nama2 << endl;
digunakan untuk mencetak nilai dari array nama2 setelah pertukaran
menggunakan cout.
Hasil cetakan dari cout tersebut akan mencetak nilai array nama1 dan nama2
sebelum dan setelah pertukaran string, menampilkan perubahan yang terjadi
setelah proses pertukaran.
8. Program 6.8
1. Input
77
2. Output
3. Analisis
Program di atas hampir sama dengan program 6.7, yang membedakannya
ialah, program ini meggunakan pointer. Jadi untuk cara menukar nilainya berbeda
dibandingkan hanya menggunakan variabel biasa.
Jika program 6.7 fungsi strcpy untuk menukar nilainya, program menukar
nilai nya dengan cara pernyataan namax = nama1; menugaskan alamat yang
ditunjuk oleh nama1 ke pointer namax. Pernyataan nama1 = nama2; menugaskan
alamat yang ditunjuk oleh nama2 ke pointer nama1. Pernyataan nama2 = namax;
menugaskan alamat yang ditunjuk oleh namax ke pointer nama2.
78
Dengan demikian, pointer nama1 dan nama2 akan bertukar alamat yang
ditunjuknya. Setelah itu program akan diperintah untuk mencetak hasil yangg
sudah ditukar.
9. Program 6.9
1. Input
2. Output
3. Analisis
Di dalam fungsi main(), sebuah variabel var_x dengan tipe data int
dideklarasikan dan diinisialisasi dengan nilai 273. Selanjutnya, dua pointer
dideklarasikan: ptr1 dengan tipe data int*, dan ptr2 dengan tipe data int**. ptr1
akan digunakan untuk menunjuk alamat dari variabel var_x, sedangkan ptr2 akan
digunakan untuk menunjuk alamat dari pointer ptr1.
Pernyataan ptr1 = &var_x; menginisialisasi pointer ptr1 dengan alamat dari
variabel var_x. Dalam hal ini, ptr1 akan menunjuk ke variabel var_x. Pernyataan
ptr2 = &ptr1; menginisialisasi pointer ptr2 dengan alamat dari pointer ptr1. Dalam
hal ini, ptr2 akan menunjuk ke pointer ptr1.
79
Pernyataan cout << "nilai var_x = " << *ptr1 << endl; digunakan untuk
mencetak nilai dari variabel var_x melalui dereferensi pointer ptr1. Dalam hal ini,
*ptr1 akan mengambil nilai yang ada di alamat yang ditunjuk oleh ptr1, yaitu nilai
var_x. Hasil cetakan akan mencetak nilai var_x. Pernyataan cout << "nilai var_x =
" << **ptr2 << endl; digunakan untuk mencetak nilai dari variabel var_x melalui
dereferensi pointer ptr2 dua kali. Dalam hal ini, **ptr2 akan mengambil nilai yang
ada di alamat yang ditunjuk oleh pointer yang ditunjuk oleh ptr2, yaitu nilai var_x.
Hasil cetakan juga akan mencetak nilai var_x. Hasil cetakan dari cout
tersebut akan mencetak nilai var_x yang diperoleh melalui dereferensi pointer ptr1
dan ptr2, sehingga kita mendapatkan nilai var_x yang sama dalam kedua kasus.
2. Output
3. Analisis
80
81
11. Program 6.11
a. Buatlah suatu program dengan menggunakan pointer untuk menampilkan
tulisan atau output :
1. Input
2. Output
82
b. Buatlah program untuk menukar isi tiga string tanpa pointer dan yang ditunjuk
pointer (modifikasi contoh program 6.7 dan 6.8). Misal: Program menukar isi
dua string tanpa memakai pointer dan Program menukar isi dua string yang
ditunjuk pointer
1. Input
2. Output
83
c. Buatlah suatu program dengan menggunakan pointer untuk menampilkan
tulisan atau output
1. Input
2. Output
84
D. Tugas
85