Anda di halaman 1dari 72

LAPORAN PRAKTIKUM

ALGORITMA & PEMROGRAMAN 2

Disusun Oleh :
Dela Amanda Putri
NIM : 2022 12 034

PROGRAM STUDI TEKNIK INFORMATIKA


SEKOLAH TINGGI TEKNOLOGI BONTANG
TAHUN 2023

1
KATA PENGANTAR
Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa (YME). Di
mana Tuhan YME telah memberikan rahmat dan karunia-Nya. Sehingga dapat
menyelesaikan tugas laporan praktikum mata kuliah Pemograman Web ini tepat
pada waktunya

Adapun tujuan dari penulisan laporan praktikum ini adalah untuk memenuhi
tugas pada mata kuliah Algoritma & Pemrograman 2 di program studi Teknik
Informatika. Selanjutnya penulis mengucapkan terimakasih kepada semua pihak
yang terlibat dalam penyusunan laporan praktikum ini. Khususnya kepada :
1. Bapak Abadi Nugroho, M.Kom selaku Ketua Program Studi Teknik
Informatika di STITEK Bontang
2. Kepada Kak Yoel Makalew, selaku Asisten Laboratorium mata kuliah
Pemograman Web Teknik Informatika di STITEK Bontang yang senantiasa
mengajari dan membimbing dalam membuat laporan.
3. Orang tua saya selaku pendukung dalam mengerjakan tugas laporan ini dan
mendoakan dalam kelancaran kuliah ini.
4. Seluruh teman-teman yang berkenan saling membantu dan berdiskusi dalam
menyelesaikan laporan praktikum Pemograman Web ini.

Penulis menyadari, tugas laporan mata kuliah Algoritma & Pemrograman 2


yang ditulis ini masih jauh dari kata sempurna. Oleh karena itu, kritik dan saran
yang membangun penulis butuhkan demi kesempurnaan laporan praktikum ini.

Bontang, 10 Juli 2023

Dela Amanda Putri

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 ................................................................................6
D. Langkah Praktikum...............................................................................13
Modul 2. Record/Struct. ........................................................................................ 16
A. Tujuan .....................................................................................................16
B. Alat dan Bahan.......................................................................................16
C. Kegiatan Praktikum ..............................................................................16
D. Langkah Praktikum...............................................................................24
E. Tugas Praktikum ...................................................................................25
Modul 3. Fungsi Rekursif ..................................................................................... 28
A. Tujuan .....................................................................................................28
B. Alat dan Bahan.......................................................................................28
C. Kegiatan Praktikum ..............................................................................28
D. Tugas Praktikum ...................................................................................31
Modul 4. Pencarian Data (Searching) ................................................................... 33
A. Tujuan .....................................................................................................33
B. Alat dan Bahan.......................................................................................33
C. Kegiatan Praktikum ..............................................................................33
D. Tugas Praktikum ...................................................................................43
Modul 5. Pengurutan Data (Sorting) ..................................................................... 45
A. Tujuan .....................................................................................................45
B. Alat dan Bahan.......................................................................................45
C. Kegiatan Praktikum ..............................................................................45
D. Tugas Praktikum ...................................................................................54
Modul 6. Pointer. .................................................................................................. 56
A. Tujuan .....................................................................................................56

3
B. Alat dan Bahan.......................................................................................56
C. Kegiatan Praktikum ..............................................................................56
D. Tugas Praktikum ...................................................................................71

4
LEMBAR ASISTENSI

5
Modul 1. Array Dua Dimensi dan Multidimensi

A. Tujuan
Setelah mengikuti praktikum, Mahasiswa diharapkan mampu:
1. Untuk memahami dan membuat array dua dimensi dan multidimensi
menggunakan bahasa pemograman.
2. Untuk mendefinisikan dan membuat matriks dengan menggunakan tipe
data array.
B. Alat dan Bahan
Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut :
1. Modul
2. PC
3. Aplikasi C++
C. Kegiatan Praktikum
Kegiatan praktikum Modul Algoritma & Pemograman 2 pada mata kuliah
Algoritma & Pemograman 2 dilaksanakan pada Kamis, 11 Mei 2023 di
laboratorium Stitek .

Adapun Langkah-langkah pengerjaannya sebagai berikut:

1. Program Modul 1.1


a. Source Code

6
b. Output

c. Analisis
a. Baris 1 merupakan comment // Program menampilkan isi matriks
yang digunakan untuk mempermudahkan kita dalam mengingat
kembali dan menjelaskan kode / deskripsi program pada program
yang di buat.
b. Baris 2 merupakan Prepocessor #include <iostream> yang
digunakan sebagai intruksi untuk CPU memerintahkan untuk
memproses suatu arahan atau informasi sebelum memulai
melakukan kompilasi pada program yang telah kita tulis.
c. Baris 3 merupakan penggunakan using namespace std; yang
digunakan sebagai ruang lingkup dengan nama digunakan untuk
pengelompokan entitas
seperti Class, Variable, Object dan Function.
d. Baris 4 merupakan penggunaan void , Pengertian Kata “Void” dalam
Pemrograman C++ Kata “void” dalam bahasa pemrograman C++
memiliki arti sebagai tipe data kosong atau tidak memiliki nilai
kembalian. Dalam pemrograman, fungsi dengan tipe data “void”
digunakan untuk menjalankan tugas tertentu tanpa harus
mengembalikan nilai apapun.
e. Baris 5 merupakan Int main() adalah fungsi utama dari sebuah kode
bahasa C. Fungsi ini memberikan nilai balik menurut type datanya,
dan karena memiliki nilai balik maka diberikan perintah return nilai.

7
f. Baris 6 pada program menampilkan {} dinamakan block statement
yang digunakan untuk mengurung beberapa statement menjadi 1
statement.
g. Pada baris 7 sampai 13 adalah fungsi utama program. Didalamnya
terdapat tiga deklarasi variabel matriks, matrik 1, matrik 2 dan
matrik 3 yang masing-masing diisi dengan elemen-elemennya.
Kemudian fungsi printArray dipanggil tiga kali, masing-masing
dengan matriks parameter yang berbeda. Akhirnya, program
mengembalikan nilai 0.
h. Pada baris 15 sampai 25 adalah definisi dari fungsi printArray yang
telah dideklarasikan sebelumnya. Fungsi ini menggunakan nested
loop untuk mencetak elemen-elemen matriks yang diberikan pada
parameter. Nilai i dan j digunakan sebagai indeks untuk mengakses
elemen matriks yang sesuai, dan cout digunakan untuk
menampilkan nilai elemen ke layar.
i. Diakhir cout<<endl; digunakan untuk menambahkan baris kosong
dibawah matriks.

2. Program 1.2
a. Source code

8
b. Output

c. Analisis
Program ini adalah program untuk menginput nilai bilangan ke
dalam array dua dimensi dan menampilkannya secara coulum major
order Baris 1-3adalah header file yang digunakan dan deklarasi
namespace std,baris 5-7 mendeklarasikan variabelrows dan cols untuk
menyimpan jumlah baris dan kolom matriks serta vaiabel matriks
[3][4]untuk menyimpan elemen matrix,bagian 10-16 adalah bagian
input elemen array secara coulum major order.looping
pertramamengecek setiap kolom,kemudian looping kedua mengecek
setiap baris pada kolom tersebut,setiap elemen array diminta untuk
diinputkan dengan
cout<<matriks[“<<rows+1<<”]”<<cols+1<<”]=”;dan di smbil
inputnya dengan cin>>matrik[rows][cols}.baris 18-24 adalah bagian
menampilkan elemen array secara coulum major orde,looping pertama
mengecek setiap kolom,kemudian looping kedua mengecek setiap
baris pada kolom tersebut.setiap elemen array ditampilkan dengan
cout<<”<<matrix[rows][cols];dan di akhiri dengan cout<<endl;untuk
pindah baris\

9
Bagian 26-28 mengembalikan nilai 0 dan menandakan akhirn program

3. Program 1.3
a. Source code

10
b. Output

c. Analisis
a. Program tersebut merupakan program untuk menjumlahkan dua buah
matriks A dan B dengan ukuran 3x4. Dalam program tersebut, terdapat
array A, B, X, Y, dan C dengan ukuran yang sama yaitu 3x4 untuk
menyimpan nilai matriks.
b. Pada bagian awal program, terdapat perintah untuk memasukkan nilai
matriks A dan B menggunakan perulangan untuk dan masukan dari
pengguna. Setelah itu, terdapat perulangan untuk lagi untuk
menjumlahkan nilai matriks A dan B serta menyimpan hasilnya ke
dalam matriks X.
c. Selanjutnya, program mencetak isi dari matriks A dan B menggunakan
perulangan untuk dan menampilkan hasil penjumlahan matriks A dan
B pada matriks X.
d. Secara keseluruhan, program tersebut berfungsi dengan baik dan
sesuai dengan tujuannya yaitu untuk menjumlahkan dua buah matriks.
Namun, terdapat beberapa hal yang perlu diperhatikan dalam

11
penggunaan program tersebut seperti menghindari penggunaan
fflush(stdin) yang tidak disarankan dan membatasi input dari
pengguna untuk ukuran matriks yang telah ditentukan.

4. Program 1.4
a. Source code

b. Output

c. Penjelasan/Analisis
Dibaris pertama ada #include <iostream> yang di mana ini digunkan
untuk memasukkan file untuk mengakses fitur tambahan dalam bahasa
c++. Kemudian menggunakan int main () merupakan fungsi utama dari
suatu program, pada baris 27 di situ menampilakn huruf, di baris 35 bisa
dibilang adlah karaklter kotak.

12
D. Langkah Praktikum
1. Kerjakan semua contoh program sehingga dapat menampilkan output.

2. Modifikasi Contoh Program 1.2 menjadi program untuk menginput nilai


(bilangan) ke dalam array dimensi dua dan menampilkannya secara Column
Major Order.

a. Source Code

b. Output

13
3. Modifikasi Contoh Program 1.2, sehingga user dapat bebas membuat
matriks dengan ordo yang diinginkan (jumlah baris dan kolom ditentukan
user) dan user dapat memasukkan isi dari matriks.
a. Input

b. Output

4. Modifikasi Contoh Program 1.3,menjadi program perkalian dua buah


matriks.
a. Input

14
b. Output

15
Modul 2. Record/Struct.

A. Tujuan
Setelah mengikuti praktikum, Mahasiswa diharapkan mampu:
Mendefinisikan dan menggunakan tipe data record/struktur.
B. Alat dan Bahan
Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut :
1. Modul
2. PC
3. Aplikasi C++
C. Kegiatan Praktikum
1. Program 2.1
a. Source Code

b. Output

16
c. Analisis
Program di atas adalah contoh program yang mengakses elemen-
elemen struktur dalam bahasa pemrograman C++. Program ini
menggunakan dua struktur, yaitu `data_tanggal` dan `data_rekan`. Struktur
`data_tanggal` memiliki tiga variabel angka bulat untuk menyimpan
tanggal, bulan, dan tahun. Struktur `data_rekan` memiliki sebuah array
karakter `nama` dengan panjang maksimal 30 karakter, dan juga memiliki
variabel `tgl_lahir` dengan tipe `data_tanggal` untuk menyimpan tanggal
lahir. Pada baris berikutnya, ada deklarasi variabel `info_rekan` dengan tipe
`data_rekan`, yang digunakan untuk menyimpan informasi seorang rekan.
Selanjutnya, program mengisi nilai-nilai variabel dalam struktur
`info_rekan`. Menggunakan fungsi `strcpy`, nama rekan disalin ke dalam
`info_rekan.nama`. Selanjutnya, tanggal, bulan, dan tahun lahir diatur
melalui atribut `tgl_lahir` menggunakan operator dot (`.`). Program
kemudian mencetak informasi rekan tersebut menggunakan perintah `cout`,
yaitu nama dan tanggal lahir. Terakhir, perintah `getchar()` digunakan untuk
menunggu pengguna menekan tombol sebelum program berakhir. Program
ini menggabungkan konsep struktur dan manipulasi data dalam C++.
Dengan menggunakan struktur, kita dapat mengelompokkan data terkait
menjadi satu kesatuan, sehingga memudahkan akses dan pengelolaan
datanya.

2. Program 2.2
a. Source Code

17
b. Output

c. Analisis
Program di atas merupakan contoh program dalam bahasa
pemrograman C++ yang menggunakan struktur dan tipe data terdefinisi
sendiri (`typedef`) untuk menyimpan data pasien. Pada awal program,
terdapat definisi struktur `data_pasien` yang memiliki tiga anggota:
`no_pendaftaran` (array karakter dengan panjang 9), `nama_pasien` (array
karakter dengan panjang 16), dan `biaya` (bilangan pecahan). Kemudian,
program mendeklarasikan variabel `pasien` dengan tipe `data_pasien` yang
akan digunakan untuk menyimpan informasi pasien. Selanjutnya, program
meminta pengguna untuk memasukkan data pasien melalui perintah `cin`.
Pengguna diminta untuk memasukkan nomor pendaftaran, nama, dan biaya
pasien secara berurutan. Setelah data pasien dimasukkan, program
mencetak kembali data pasien yang telah diinput menggunakan perintah
`cout`. Informasi nomor pendaftaran, nama, dan biaya pasien ditampilkan.
Terakhir, perintah `getchar()` digunakan untuk menunggu pengguna
menekan tombol sebelum program berakhir. Program ini menggabungkan
konsep struktur, tipe data terdefinisi sendiri, dan input/output dalam bahasa
pemrograman C++. Dengan menggunakan struktur dan tipe data terdefinisi
sendiri, program dapat mengorganisir dan menyimpan informasi pasien
dalam satu objek `pasien`. Input/output digunakan untuk berinteraksi
dengan pengguna, meminta masukan data pasien, dan menampilkan
kembali data pasien yang telah dimasukkan.

18
3. Program 2.3
a. Source Code

b. Output

19
c. Analisis
Program di atas adalah contoh program dalam bahasa pemrograman
C++ yang menggunakan struktur dan array untuk menyimpan informasi
nilai mahasiswa. Pada awal program, terdapat definisi struktur `data_nilai`
yang memiliki tiga anggota: `nomhs` (array karakter dengan panjang 12),
`nama` (array karakter dengan panjang 20), dan `nilai` (bilangan pecahan).
Kemudian, program mendeklarasikan array `nilaimhs` dengan tipe
`data_nilai` yang memiliki ukuran 10. Array ini akan digunakan untuk
menyimpan informasi nilai mahasiswa. Selanjutnya, terdapat variabel `i`
yang akan digunakan sebagai penghitung dalam perulangan. Program
kemudian memiliki perulangan `for` yang berjalan dua kali (i=1 hingga
i=2). Di dalam perulangan ini, program meminta pengguna untuk
memasukkan informasi nilai mahasiswa, yaitu nama, nomhs, dan nilai. Data
tersebut disimpan di elemen-elemen array `nilaimhs` sesuai dengan indeks
`i`. Setelah perulangan selesai, program melakukan perulangan kedua untuk
mencetak kembali informasi nilai mahasiswa yang telah dimasukkan. Data
tersebut diambil dari elemen-elemen array `nilaimhs` sesuai dengan indeks
`i`. Data nama, nomhs, dan nilai mahasiswa dicetak menggunakan perintah
`cout`. Program ini menggunakan struktur, array, dan perulangan dalam
bahasa pemrograman C++. Struktur digunakan untuk mengelompokkan
data nilai mahasiswa dalam satu objek. Array digunakan untuk menyimpan
data nilai mahasiswa dalam elemen-elemen yang dapat diakses
menggunakan indeks. Perulangan digunakan untuk meminta input
pengguna dan mencetak kembali informasi nilai mahasiswa.

20
4. Program 2.4
a. Source Code

b. Output

c. Analisis
Program di atas adalah contoh program dalam bahasa pemrograman
C++ yang menggunakan struktur dan fungsi untuk mencetak informasi
tanggal. Pada awal program, terdapat definisi struktur `data_tgl` yang
memiliki tiga anggota: `tanggal`, `bulan`, dan `tahun` (keduanya bertipe
int). Kemudian, terdapat deklarasi fungsi `cetak_info_tgl` yang menerima
parameter berupa objek `data_tgl` dengan nama `unit_tgl` dan tidak
mengembalikan nilai. Di dalam fungsi `cetak_info_tgl`, terdapat array
`nama_bln` yang berisi nama-nama bulan dalam bentuk string. Array ini
digunakan untuk mengonversi angka bulan pada objek `unit_tgl` menjadi
nama bulan yang sesuai. Pada fungsi `main`, terdapat deklarasi variabel
`saat_proses` dengan tipe `data_tgl` yang diinisialisasi dengan tanggal,
bulan, dan tahun tertentu. Kemudian, fungsi `cetak_info_tgl` dipanggil

21
dengan mengirimkan objek `saat_proses` sebagai argumen. Fungsi ini akan
mencetak informasi tanggal yang diterima dari objek `unit_tgl`
menggunakan perintah `cout` dan array `nama_bln`. Program ini
menggunakan struktur dan fungsi dalam bahasa pemrograman C++.
Struktur `data_tgl` digunakan untuk mengelompokkan data tanggal dalam
satu objek. Fungsi `cetak_info_tgl` digunakan untuk mencetak informasi
tanggal dengan menerima objek `data_tgl` sebagai argumen. Array
`nama_bln` digunakan untuk mengonversi angka bulan menjadi nama bulan
yang sesuai saat mencetak informasi tanggal. Pada fungsi `main`, program
membuat objek `saat_proses` dengan tipe `data_tgl` dan
menginisialisasinya dengan tanggal, bulan, dan tahun tertentu. Objek
tersebut kemudian dikirim sebagai argumen ke fungsi `cetak_info_tgl`
untuk mencetak informasi tanggalnya.

5. Program 2.5
a. Source Code

b. Output

22
c. Analisis
Program di atas adalah contoh program dalam bahasa
pemrograman C++ yang menggunakan struktur dan fungsi untuk
mencetak informasi tanggal. Pada awal program, terdapat definisi
struktur `data_tgl` yang memiliki tiga anggota: `tanggal`, `bulan`,
dan `tahun` (semuanya bertipe int). Kemudian, terdapat deklarasi
fungsi `cetak_info_tgl` yang menerima parameter berupa objek
`data_tgl` dengan nama `unit_tgl` dan tidak mengembalikan nilai.
Di dalam fungsi `cetak_info_tgl`, terdapat array `nama_bln` yang
berisi nama-nama bulan dalam bentuk string. Array ini digunakan
untuk mengonversi angka bulan pada objek `unit_tgl` menjadi nama
bulan yang sesuai. Pada fungsi `main`, terdapat deklarasi variabel
`saat_proses` dengan tipe `data_tgl` yang diinisialisasi dengan
tanggal, bulan, dan tahun tertentu. Selanjutnya, fungsi
`cetak_info_tgl` dipanggil dengan mengirimkan objek `saat_proses`
sebagai argumen. Fungsi ini akan mencetak informasi tanggal yang
diterima dari objek `unit_tgl` menggunakan perintah `cout` dan
array `nama_bln`. Program ini menggabungkan konsep struktur,
fungsi, dan array dalam bahasa pemrograman C++. Struktur
digunakan untuk mengelompokkan data tanggal dalam satu objek.
Fungsi `cetak_info_tgl` digunakan untuk mencetak informasi
tanggal dengan menerima objek `data_tgl` sebagai argumen. Array
`nama_bln` digunakan untuk mengonversi angka bulan menjadi
nama bulan yang sesuai saat mencetak informasi tanggal.

23
D. Langkah Praktikum
1. Kerjakan semua Contoh Program yang ada sehingga dapat menampilkan
output.
2. Modifikasi Contoh Program 2.2 dan Contoh Program 2.3 sehingga dapat
menginputkan nama yang terdiri lebih dari satu kata (contoh : Bagus
Pramono Perkasa)
a. Source Code

b. Output

24
E. Tugas Praktikum
1. Buat program record yang dapat merekam data pegawai dan menghitung
total gaji sesuai hari kerjanya. Contoh output:

a. Source Code

b. Output

25
2. Program menu yang berisi data data penduduk (nama, alamat, umur, agama,
golongan darah, status,dll).
a. Input

26
b. Output

27
Modul 3. Fungsi Rekursif

A. Tujuan
Setelah mengikuti praktikum, Mahasiswa diharapkan mampu:
Mempraktekkan fungsi rekursif menggunakan bahasa pemrograman

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut :
1. Modul
2. PC
3. Aplikasi C++
C. Kegiatan Praktikum
1. Program 3.1
a. Source Code

b. Output

28
c. Analisis
Program yang diberikan adalah sebuah program dalam bahasa C++
yang menghitung Faktor Persekutuan Terbesar (FPB) dari dua bilangan
yang dimasukkan oleh pengguna. Library yang digunakan:
a. Program ini menggunakan tiga library yaitu `<iostream>` untuk
input/output standar, `<stdlib.h>` untuk fungsi-fungsi umum
seperti `exit()`, dan `<math.h>` untuk fungsi matematika seperti
`pow()`.
b. Fungsi FPB: Program ini mendefinisikan sebuah fungsi `FPB()`
yang menerima dua parameter bilangan bulat `x` dan `y` serta
mengembalikan nilai FPB dari kedua bilangan tersebut.
c. Fungsi ini menggunakan pendekatan rekursif untuk mencari
FPB. Jika `y` sama dengan 0, maka `x` merupakan FPB dan
dikembalikan sebagai hasil. Jika tidak, maka fungsi akan
memanggil dirinya sendiri dengan argumen `(y, (x % y))`, di
mana `(x % y)` adalah sisa pembagian `x` dengan `y`.
d. Fungsi `main()`: Fungsi `main()` merupakan fungsi utama yang
akan dieksekusi saat program dijalankan.
e. Variabel `bil1` dan `bil2` dideklarasikan untuk menyimpan
bilangan yang dimasukkan oleh pengguna.
f. Melalui `cout`, program akan meminta pengguna untuk
memasukkan bilangan pertama dan kedua.
g. Dengan menggunakan `cin`, program akan membaca input
bilangan yang dimasukkan oleh pengguna dan menyimpannya
di `bil1` dan `bil2`.
h. Program kemudian mencetak hasil dari pemanggilan fungsi
`FPB(bil1, bil2)` menggunakan `cout`.

29
2. Program 3.2
a. Source Code

b. Output

c. Analisis
Program yang diberikan adalah sebuah program dalam bahasa C++
yang menghitung faktorial dari sebuah bilangan yang dimasukkan oleh
pengguna. Berikut adalah analisis programnya:
a. Library yang digunakan: Program ini menggunakan library
`<iostream>` untuk input/output standar.
b. Fungsi faktorial: Program ini mendefinisikan sebuah fungsi
`faktorial()` yang menerima satu parameter bilangan bulat `a`
dan mengembalikan nilai faktorial dari bilangan tersebut.
c. Fungsi ini menggunakan pendekatan rekursif untuk menghitung
faktorial. Jika `a` kurang dari atau sama dengan 1, maka hasilnya
adalah 1. Jika tidak, fungsi akan memanggil dirinya sendiri
dengan argumen `(a - 1)` dan mengalikan `a` dengan hasil
faktorial dari `(a - 1)`.
d. Fungsi `main()`: Fungsi `main()` merupakan fungsi utama yang
akan dieksekusi saat program dijalankan.

30
e. Variabel `n` dideklarasikan untuk menyimpan bilangan yang
dimasukkan oleh pengguna.
f. Melalui `cout`, program akan meminta pengguna untuk
memasukkan bilangan.
g. Dengan menggunakan `cin`, program akan membaca input
bilangan yang dimasukkan oleh pengguna dan menyimpannya
di `n`.
h. Program kemudian mencetak hasil dari pemanggilan fungsi
`faktorial(n)` menggunakan `cout`.

D. Tugas Praktikum
1. Program Fibbonacci
a. Input

b. Output

31
2. Program menghitung deret menggunakan function rekursif.
a. Input

b. Output

3. Program menghitung deret function rekursi.


a. Input

b. Output

32
Modul 4. Pencarian Data (Searching)

A. Tujuan
Setelah mengikuti praktikum, Mahasiswa diharapkan mampu:
Mempraktekkan dan membandingkan metode searching menggunakan
tipe data array.

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut :
1. Modul
2. PC
3. Aplikasi C++
C. Kegiatan Praktikum
1. Program 4.1
a. Source Code

b. Output

33
c. Analisis
Program menggunakan array X yang berisi data yang belum terurut.
Dalam contoh ini, array tersebut memiliki 10 elemen. Pengguna diminta untuk
memasukkan nilai yang ingin dicari melalui input cin >> nilaiCari. Variabel
found digunakan untuk menandai apakah nilai yang dicari ditemukan atau
tidak. Awalnya, variabel tersebut diatur sebagai false. Variabel i digunakan
sebagai iterator untuk iterasi melalui array X. Awalnya, variabel tersebut
diatur sebagai 0. Program menggunakan perulangan while untuk mencari nilai
yang dicari dalam array X. Perulangan akan berjalan selama i kurang dari 10
(jumlah elemen array) dan nilai belum ditemukan (!found).Di dalam
perulangan, program memeriksa apakah nilai pada X[i] sama dengan nilai
yang dicari. Jika iya, variabel found diatur sebagai true untuk menandai
bahwa nilai ditemukan. Jika nilai ditemukan, program mencetak pesan yang
menyatakan bahwa nilai tersebut ditemukan pada index array ke-i. Jika nilai
tidak ditemukan setelah iterasi seluruh elemen array, program mencetak pesan
yang menyatakan bahwa nilai tersebut tidak ada dalam array. Secara
keseluruhan, program ini melakukan pencarian sekuensial untuk menemukan
nilai yang dicari dalam array yang belum terurut.

2. Program 4.2
a. Source Code

34
b. Output

c. Analis
Program menggunakan array X yang berisi data yang belum
terurut. Dalam contoh ini, array tersebut memiliki 11 elemen,
dengan elemen terakhir (X[10]) digunakan sebagai tempat untuk
menyimpan nilai yang dicari. Pengguna diminta untuk memasukkan
nilai yang ingin dicari melalui input cin >> nilaiCari. Nilai yang
dicari (nilaiCari) disimpan pada elemen terakhir array X (yaitu
X[10]). Variabel i digunakan sebagai iterator untuk iterasi melalui
array X. Awalnya, variabel tersebut diatur sebagai 0. Program
menggunakan perulangan while untuk mencari nilai yang dicari
dalam array X. Perulangan akan berjalan selama nilai pada X[i] tidak
sama dengan nilai yang dicari. Di dalam perulangan, program secara
bertahap meningkatkan nilai i untuk memeriksa setiap elemen array
X sampai nilai yang dicari ditemukan. Jika nilai ditemukan, program
mencetak pesan yang menyatakan bahwa nilai tersebut ditemukan
pada index array ke-i. Jika nilai tidak ditemukan setelah iterasi
seluruh elemen array (yaitu jika i > 9), program mencetak pesan
yang menyatakan bahwa nilai tersebut tidak ada dalam array. Dalam
program ini, penambahan elemen terakhir pada array X yang
digunakan sebagai tempat untuk menyimpan nilai yang dicari
(sebagai sentinel) memungkinkan penghentian perulangan saat nilai
ditemukan atau setelah iterasi seluruh elemen array. Pendekatan ini
dapat meningkatkan efisiensi dibandingkan dengan mencari nilai
tanpa menggunakan sentinel.

35
3. Program 4.3
a. Source Code

b. Output

c. Analis
Program menggunakan array X yang berisi data. Dalam
contoh ini, array tersebut memiliki 11 elemen. Variabel i digunakan
sebagai iterator untuk iterasi melalui array X. Awalnya, variabel
tersebut diatur sebagai 0. Variabel nilaiCari digunakan untuk
menyimpan nilai yang ingin dicari, yang dimasukkan oleh pengguna
melalui input cin >> nilaiCari. Variabel found digunakan untuk
menandai apakah nilai yang dicari ditemukan atau tidak. Awalnya,
variabel tersebut diatur sebagai false. Nilai yang dicari (nilaiCari)
disimpan pada elemen terakhir array X (yaitu X[10]). Program
menggunakan perulangan while untuk mencari nilai yang dicari
dalam array X. Perulangan akan berjalan selama found bernilai false.
Di dalam perulangan, program memeriksa apakah nilai pada X[i]
sama dengan nilai yang dicari. Jika iya, variabel found diatur sebagai
true untuk menandai bahwa nilai ditemukan. Jika nilai ditemukan,

36
program mencetak pesan yang menyatakan bahwa nilai tersebut
ditemukan pada index array ke-i. Jika nilai tidak ditemukan setelah
iterasi seluruh elemen array (yaitu jika i sama dengan 10), program
mencetak pesan yang menyatakan bahwa nilai tersebut tidak ada
dalam array. Program ini menggunakan variabel found untuk
mengendalikan perulangan, sementara variabel i digunakan untuk
menyimpan index elemen yang sedang diperiksa. Pendekatan ini
menghilangkan perluasan perulangan dan langsung menghentikan
perulangan saat nilai ditemukan.

4. Program 4.4
a. Source Code

b. Output

c. Analisis
Program mendefinisikan array X yang berisi data terurut
secara menaik. Dalam contoh ini, array X memiliki 10 elemen.
Program mendeklarasikan variabel i untuk menyimpan indeks saat
melakukan iterasi melalui array X. Program mendeklarasikan
variabel nilaiCari untuk menyimpan nilai yang ingin dicari. Nilai
ini dimasukkan oleh pengguna melalui input menggunakan perintah

37
cin >> nilaiCari. Program menggunakan variabel found dengan tipe
data bool untuk menandai apakah nilai yang dicari ditemukan atau
tidak. Awalnya, variabel found diatur sebagai false. Program
melakukan perulangan menggunakan while untuk mencari nilai
yang dicari dalam array X. Perulangan akan berlanjut selama i
kurang dari 10 (jumlah elemen array), nilai belum ditemukan
(!found), dan nilai yang dicari lebih besar atau sama dengan X[i].
Di dalam perulangan, program memeriksa apakah nilai pada X[i]
sama dengan nilai yang dicari. Jika nilai ditemukan, variabel found
diatur sebagai true untuk menandai bahwa nilai ditemukan. Jika
nilai ditemukan, program mencetak pesan yang menyatakan bahwa
nilai tersebut ditemukan pada index array ke-i. Jika nilai tidak
ditemukan setelah iterasi seluruh elemen array atau jika nilai yang
dicari lebih kecil daripada X[i], program mencetak pesan yang
menyatakan bahwa nilai tersebut tidak ada dalam array.
Program ini menggunakan perulangan dan beberapa kondisi (i < 10,
!found, dan nilaiCari >= X[i]) untuk mengendalikan aliran program
dan mencari nilai yang dicari dalam array X yang sudah terurut
secara menaik.

5. Program 4.5
a. Source Code

38
b. Output

c. Analisis
Program ini juga merupakan implementasi dari Sequential
Search (Pencarian Sekuensial) pada array yang sudah terurut secara
menaik. Program mendefinisikan array `X` yang berisi data terurut
secara menaik. Dalam contoh ini, array `X` memiliki 11 elemen.
Program mendeklarasikan variabel `i` untuk menyimpan indeks saat
melakukan iterasi melalui array `X`. Program mendeklarasikan
variabel `nilaiCari` untuk menyimpan nilai yang ingin dicari. Nilai
ini dimasukkan oleh pengguna melalui input menggunakan perintah
`cin >> nilaiCari`. Program menggunakan variabel `found` dengan
tipe data `bool` untuk menandai apakah nilai yang dicari ditemukan
atau tidak. Awalnya, variabel `found` diatur sebagai `false`.
Program menyimpan nilai yang dicari (`nilaiCari`) pada elemen
terakhir array `X` (yaitu `X[10]`). Program menggunakan
perulangan `while` untuk mencari posisi yang tepat untuk nilai yang
dicari dalam array `X`. Perulangan akan berlanjut selama `found`
masih `false` dan nilai pada `X[i]` kurang dari nilai yang dicari. Di
dalam perulangan, variabel `i` ditingkatkan secara bertahap untuk
mencari posisi yang tepat untuk nilai yang dicari dalam array `X`.
Setelah keluar dari perulangan, program melakukan pengecekan jika
nilai `i` lebih besar dari 9 (jumlah elemen array). Jika iya, itu berarti
nilai yang dicari tidak ditemukan dalam array. Jika nilai ditemukan,
program mencetak pesan yang menyatakan bahwa nilai tersebut
ditemukan pada index array ke-`i`. Program ini menggunakan
perulangan dan kondisi `X[i] < nilaiCari` untuk mencari posisi yang
tepat untuk nilai yang dicari dalam array `X` yang sudah terurut

39
secara menaik. Tidak ada pengecekan nilai yang ditemukan dalam
array, namun pesan yang sesuai dicetak jika nilai ditemukan atau
tidak ditemukan.

6. Program 4.6
a. Source Code

b. Output

c. Analisis
Program mendefinisikan array X yang berisi data terurut
secara menaik. Dalam contoh ini, array X memiliki 11
elemen.Program mendeklarasikan variabel i untuk menyimpan
indeks saat melakukan iterasi melalui array X. Program
mendeklarasikan variabel nilaiCari untuk menyimpan nilai yang
ingin dicari. Nilai ini dimasukkan oleh pengguna melalui input
menggunakan perintah cin >> nilaiCari. Program menggunakan
variabel found dengan tipe data bool untuk menandai apakah nilai
yang dicari ditemukan atau tidak. Awalnya, variabel found diatur
sebagai false. Program menyimpan nilai yang dicari (nilaiCari) pada

40
elemen terakhir array X (yaitu X[10]). Program menggunakan
perulangan while untuk mencari nilai yang dicari dalam array X.
Perulangan akan berlanjut selama found masih false dan nilai pada
X[i] kurang dari atau sama dengan nilai yang dicari. Di dalam
perulangan, program memeriksa apakah nilai pada X[i] sama
dengan nilai yang dicari. Jika nilai ditemukan, variabel found diatur
sebagai true untuk menandai bahwa nilai ditemukan. Setelah keluar
dari perulangan, program melakukan pengecekan jika nilai i sama
dengan 10 (indeks elemen terakhir). Jika iya, itu berarti nilai yang
dicari tidak ditemukan dalam array. Jika nilai ditemukan, program
mencetak pesan yang menyatakan bahwa nilai tersebut ditemukan
pada index array ke-i. Jika nilai tidak ditemukan, program mencetak
pesan yang menyatakan bahwa nilai tersebut tidak ada dalam array.
Program ini menggunakan perulangan dan beberapa kondisi (X[i]
<= nilaiCari dan X[i] == nilaiCari) untuk mencari nilai yang dicari
dalam array X yang sudah terurut secara menaik. Pesan yang sesuai
dicetak tergantung pada apakah nilai ditemukan dalam array atau
tidak.

7. Program 4.7
a. Source Code

41
b. Output

c. Analisis
Program mendefinisikan array X yang berisi data terurut
secara menaik. Dalam contoh ini, array X memiliki 10 elemen.
Program mendeklarasikan variabel i, nilaiCari, j, dan k untuk
digunakan dalam algoritma Binary Search. Program menggunakan
variabel found dengan tipe data bool untuk menandai apakah nilai
yang dicari ditemukan atau tidak. Awalnya, variabel found diatur
sebagai false. Program meminta pengguna memasukkan nilai yang
dicari melalui input menggunakan perintah cin >> nilaiCari.
Program melakukan inisialisasi variabel i dengan nilai 0 dan
variabel j dengan nilai 10, yang merepresentasikan indeks awal dan
akhir dalam pencarian biner. Program menggunakan perulangan
while untuk melakukan pencarian biner. Perulangan akan berlanjut
selama found masih false dan i masih kurang dari atau sama dengan
j. Di dalam perulangan, program menghitung nilai tengah (k) dari
rentang pencarian saat ini dengan menggunakan rumus (i + j) / 2.
Program memeriksa apakah nilai yang dicari sama dengan nilai
pada indeks tengah (X[k]). Jika nilai ditemukan, variabel found
diatur sebagai true untuk menandai bahwa nilai ditemukan.
Jika nilai yang dicari lebih kecil daripada nilai pada indeks tengah,
rentang pencarian dikurangi menjadi setengah bagian bawah
(indeks j diubah menjadi k - 1). Jika nilai yang dicari lebih besar
daripada nilai pada indeks tengah, rentang pencarian dikurangi
menjadi setengah bagian atas (indeks i diubah menjadi k + 1).
Setelah keluar dari perulangan, program melakukan pengecekan
apakah nilai ditemukan (found). Jika iya, itu berarti nilai yang

42
dicari ditemukan dalam array dan program mencetak pesan yang
menyatakan nilai tersebut ditemukan pada index array ke-k. Jika
nilai tidak ditemukan, program mencetak pesan yang menyatakan
bahwa nilai tersebut tidak ada dalam array. Program ini
menggunakan algoritma Binary Search untuk mencari nilai yang
dicari dalam array X yang sudah terurut secara menaik. Dengan
membagi rentang pencarian menjadi setengah pada setiap iterasi,
pencarian biner dapat menemukan nilai dengan efisien dalam
logaritma basis 2 dari jumlah elemen array.

D. Tugas Praktikum
1. Modifikasi contoh program di atas dengan : jumlah data diinput, elemen
datanya diinput dan ditampilkan (minimal satu contoh program).
a. Input

b. Output

43
2. Buatlah program untuk memodifikasi salah satu contoh program untuk
menyisipkan elemen yang dicari ke dalam data array jika elemen yang dicari
tersebut tidak ada (asumsi datanya sudah terurut).
a. Input

b. Output

44
Modul 5. Pengurutan Data (Sorting)

A. Tujuan
Setelah mengikuti praktikum, Mahasiswa diharapkan mampu:
Mempraktekkan dan membandingkan metode sorting menggunakan
tipe data array dan algoritma rekursif

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut :
1. Modul
2. PC
3. Aplikasi C++
C. Kegiatan Praktikum
1. Program 5.1
a. Source Code

45
b. Output

c. Analisis
Program ini merupakan implementasi algoritma Bubble Sort
dalam bahasa C++. Bubble Sort adalah salah satu metode
pengurutan sederhana yang bekerja dengan membandingkan dua
elemen adjacent dalam array dan menukar posisinya jika urutannya
salah. Proses ini berlanjut hingga seluruh array terurut. Pada
program ini, terdapat fungsi `bubble_sort` yang menerima array
integer dan ukuran array sebagai argumen. Fungsi ini melakukan
pengurutan array menggunakan algoritma Bubble Sort. Variabel
`temp` digunakan untuk menyimpan nilai sementara saat pertukaran
nilai. Di dalam fungsi `main`, terdapat inisialisasi variabel
`data_size` dengan nilai 30. Kemudian, array `values` dengan
ukuran `data_size` diinisialisasi dengan nilai acak antara 0 hingga
99 menggunakan fungsi `rand() % 100`. Selanjutnya, elemen-
elemen array yang belum diurutkan dicetak. Setelah itu, fungsi
`bubble_sort` dipanggil dengan argumen array `values` dan
`data_size` untuk mengurutkan array tersebut. Setelah proses
pengurutan selesai, elemen-elemen array yang sudah diurutkan
dicetak. Program ini kemudian menunggu input dari pengguna
sebelum berakhir dengan memanggil fungsi `getchar()`. Secara
keseluruhan, program ini menghasilkan data acak yang belum
diurutkan dan kemudian mengurutkannya menggunakan algoritma
Bubble Sort sebelum mencetak data yang sudah terurut.

46
2. Program 5.2
a. Source Code

b. Output

47
c. Analisis
Program ini merupakan implementasi algoritma Straight
Insertion Sort dalam bahasa C++. Straight Insertion Sort adalah
metode pengurutan sederhana yang bekerja dengan membagi array
menjadi dua bagian: bagian terurut dan bagian belum terurut. Pada
setiap iterasi, satu elemen dari bagian belum terurut dipilih dan
disisipkan ke posisi yang tepat dalam bagian terurut. Pada program
ini, terdapat fungsi `straight_inst_sort` yang menerima array integer
dan ukuran array sebagai argumen. Fungsi ini melakukan
pengurutan array menggunakan algoritma Straight Insertion Sort.
Variabel `Temp` digunakan untuk menyimpan nilai sementara saat
proses penggeseran elemen. Di dalam fungsi `main`, terdapat
inisialisasi variabel `k` dan `data_size`. Kemudian, array `values`
dengan ukuran 20 diinisialisasi. Pengguna diminta untuk
memasukkan banyaknya data dengan memasukkan nilai ke dalam
`data_size`, dan kemudian memasukkan nilai-nilai data ke dalam
array `values`. Setelah itu, elemen-elemen array yang belum
diurutkan dicetak. Fungsi `straight_inst_sort` dipanggil dengan
argumen array `values` dan `data_size` untuk mengurutkan array
tersebut. Setelah proses pengurutan selesai, elemen-elemen array
yang sudah diurutkan dicetak. Program ini kemudian menunggu
input dari pengguna sebelum berakhir dengan memanggil fungsi
`getchar()`. Secara keseluruhan, program ini meminta pengguna
untuk memasukkan sejumlah data, kemudian mengurutkan data
tersebut menggunakan algoritma Straight Insertion Sort, dan
mencetak data yang sudah terurut.

48
3. Program 5.3
a. Source Code

b. Output

c. Analisis
Program ini merupakan implementasi algoritma Selection
Sort dalam bahasa C++. Selection Sort adalah metode pengurutan
sederhana yang bekerja dengan membagi array menjadi dua
bagian: bagian terurut dan bagian belum terurut. Pada setiap iterasi,
elemen terkecil dari bagian belum terurut dipilih dan ditukar
dengan elemen pertama dari bagian terurut. Pada program ini,
terdapat fungsi `selection_sort` yang menerima array integer dan

49
ukuran array sebagai argumen. Fungsi ini melakukan pengurutan
array menggunakan algoritma Selection Sort. Variabel `temp`
digunakan untuk menyimpan nilai sementara saat pertukaran
nilai.Di dalam fungsi `main`, terdapat inisialisasi variabel
`data_size` dengan nilai 30. Kemudian, array `values` dengan
ukuran `data_size` diinisialisasi dengan nilai acak antara 0 hingga
99 menggunakan fungsi `rand() % 100`. Selanjutnya, elemen-
elemen array yang belum diurutkan dicetak. Setelah itu, fungsi
`selection_sort` dipanggil dengan argumen array `values` dan
`data_size` untuk mengurutkan array tersebut. Setelah proses
pengurutan selesai, elemen-elemen array yang sudah diurutkan
dicetak. Program ini kemudian menunggu input dari pengguna
sebelum berakhir dengan memanggil fungsi `getchar()`. Secara
keseluruhan, program ini menghasilkan data acak yang belum
diurutkan dan kemudian mengurutkannya menggunakan algoritma
Selection Sort sebelum mencetak data yang sudah terurut

4. Program 5.4
A. Source Code

50
B. Output

C. Analisis
Program ini merupakan implementasi algoritma Shell Sort
dalam bahasa C++. Shell Sort adalah metode pengurutan yang
merupakan variasi dari Insertion Sort. Metode ini menggunakan
konsep pembagian array menjadi beberapa bagian yang lebih kecil
untuk dilakukan pengurutan, kemudian dilanjutkan dengan
pengurutan secara bertahap dengan jarak yang semakin kecil. Pada
program ini, terdapat fungsi `shell_sort` yang menerima array integer
sebagai argumen. Fungsi ini melakukan pengurutan array
menggunakan algoritma Shell Sort. Variabel `i`, `j`, `k`, dan `mid`
digunakan sebagai variabel bantu dalam proses pengurutan. Di dalam
fungsi `main`, terdapat inisialisasi array `arr` dengan ukuran `size`
(didefinisikan sebagai 9). Pengguna diminta untuk memasukkan
elemen-elemen array yang akan diurutkan. Setelah itu, fungsi
`shell_sort` dipanggil dengan argumen array `arr` untuk mengurutkan
array tersebut. Setelah proses pengurutan selesai, elemen-elemen
array yang sudah diurutkan dicetak. Secara keseluruhan, program ini
meminta pengguna untuk memasukkan elemen-elemen array,
kemudian mengurutkan array tersebut menggunakan algoritma Shell
Sort, dan mencetak array yang sudah terurut.

51
5. Program 5.5
a. Source Code

b. Output

52
c. Analisis
Program ini merupakan implementasi algoritma Quick Sort
dalam bahasa C++. Quick Sort adalah metode pengurutan yang
menggunakan pendekatan divide and conquer, yaitu membagi array
menjadi subarray yang lebih kecil, mengurutkan masing-masing
subarray secara terpisah, dan menggabungkannya untuk mendapatkan
array yang terurut. Pada program ini, terdapat fungsi `quick_sort` yang
menerima array integer, indeks pertama, dan indeks terakhir sebagai
argumen. Fungsi ini melakukan pengurutan array menggunakan
algoritma Quick Sort. Variabel `temp`, `low`, `high`, dan
`list_separator` digunakan sebagai variabel bantu dalam proses
pengurutan. Di dalam fungsi `main`, terdapat inisialisasi variabel `first`
dengan nilai 0 dan `last` dengan nilai `data_size - 1` (didefinisikan
sebagai 100). Kemudian, array `values` dengan ukuran `data_size`
diinisialisasi dengan nilai acak antara 0 hingga 99 menggunakan fungsi
`rand() % 100`. Selanjutnya, elemen-elemen array yang belum
diurutkan dicetak. Setelah itu, fungsi `quick_sort` dipanggil dengan
argumen array `values`, `first`, dan `last` untuk mengurutkan array
tersebut. Setelah proses pengurutan selesai, elemen-elemen array yang
sudah diurutkan dicetak. Program ini kemudian menunggu input dari
pengguna sebelum berakhir dengan memanggil fungsi `getchar()`.
Secara keseluruhan, program ini menghasilkan data acak yang belum
diurutkan dan kemudian mengurutkannya menggunakan algoritma
Quick Sort sebelum mencetak data yang sudah terurut.

53
D. Tugas Praktikum
1. Buatlah program menu untuk memilih metode sorting yang digunakan.
Contoh tampilan output program : (mengurutkan 50 data acak/random).
a. Input

54
b. Output

55
Modul 6. Pointer.

A. Tujuan
Setelah mengikuti praktikum, Mahasiswa diharapkan mampu:
Memperkenalkan dan mempelajari konsep Pointer yang akan
digunakan pada variabel dinamis untuk memakai memori bebas selama
eksekusi program.
B. Alat dan Bahan
Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah
sebagai berikut :
1. Laptop/PC
2. Modul
3. App Dev C++

C. Kegiatan Praktikum
1. Program 6.1
a. Source Code

56
b. Output

c. Analisis
Program tersebut menunjukkan penggunaan pointer untuk
mengalokasikan memori, menunjuk variabel, dan menukar nilai
antara variabel dan pointer. Namun, ada beberapa masalah dalam
program tersebut, seperti penggunaan malloc yang sebaiknya diganti
dengan new dan delete dalam bahasa C++, serta penggunaan q = (int
*)malloc(sizeof(int)); yang tidak perlu karena nilai pointer q diganti
dengan alamat variabel n di baris berikutnya.

2. Program 6.2
a. Source Code

57
b. Output

c. Analisis
program di atas memiliki kesalahan dalam pemakaian
pointer. Pernyataan pu = &u; salah karena pu dideklarasikan
sebagai pointer ke float, sementara u memiliki tipe int. Tipe data
pointer harus sesuai dengan tipe data variabel yang dituju.
Kesalahan ini dapat menyebabkan masalah saat dereferensi pointer
dengan pernyataan nu = *pu;. Jika program berhasil dikompilasi,
kemungkinan besar akan terjadi kesalahan dalam interpretasi data
karena tipe data yang tidak sesuai.

3. Program 6.3
a. Source Code

b. Output

58
c. Analisis
Program ini merupakan contoh penggunaan pointer untuk menunjuk
array dalam bahasa C++. Berikut adalah analisis langkah-langkah
program tersebut:
a. `static int tgl_lahir[] = {27, 8, 1977};`: Deklarasi dan inisialisasi
array `tgl_lahir` dengan elemen 27, 8, dan 1977. Array ini
memiliki tipe data `int` dan menggunakan kata kunci `static` yang
memberikan aksesibilitas yang sama di seluruh program.
b. `int *ptgl;`: Deklarasi pointer `ptgl` yang bertipe `int`. Pointer ini
akan digunakan untuk menunjuk ke elemen-elemen dalam array
`tgl_lahir`.
c. `ptgl = tgl_lahir;`: Mengatur nilai pointer `ptgl` untuk menunjuk
ke alamat memori awal dari array `tgl_lahir`. Karena nama array
tanpa indeks menghasilkan alamat pertama dari array, `tgl_lahir`
tanpa indeks setara dengan `&tgl_lahir[0]`. Dengan demikian,
`ptgl` akan menunjuk ke elemen pertama dari array `tgl_lahir`.
d. `cout << "nilai yang ditunjuk oleh ptgl = " << *ptgl << endl;`:
Menampilkan nilai yang ditunjuk oleh pointer `ptgl`. Dalam hal
ini, pointer `ptgl` menunjuk ke elemen pertama dari array
`tgl_lahir`, jadi nilai yang ditunjuk oleh `ptgl` adalah nilai dari
elemen pertama array `tgl_lahir`.
e. `cout << "nilai dari tgl_lahir[0] = " << tgl_lahir[0] << endl;`:
Menampilkan nilai dari elemen pertama array `tgl_lahir`
menggunakan indeks langsung. Dalam hal ini, `tgl_lahir[0]`
mengacu pada elemen pertama dari array `tgl_lahir`, yang
memiliki nilai yang sama dengan yang ditunjuk oleh pointer `ptgl`.
Program ini menunjukkan bagaimana menggunakan pointer untuk
menunjuk ke elemen-elemen dalam array. Pointer `ptgl` digunakan
untuk mengakses nilai dari elemen pertama array `tgl_lahir` dan
menampilkan nilainya. Hal ini sama dengan menggunakan indeks
langsung pada array `tgl_lahir` untuk mendapatkan nilai dari elemen
pertama.

59
4. Program 6.4
a. Source Code

b. Output

c. Analisis
Program di atas merupakan contoh penggunaan pointer
dalam bahasa C++. Berikut adalah analisis langkah-langkah
program tersebut:
a. `int x, y;`: Deklarasi dua variabel `x` dan `y` bertipe `int`.
b. `int *px;`: Deklarasi pointer `px` bertipe `int`. Pointer ini akan
digunakan untuk menunjuk ke variabel bertipe `int`.
c. `x = 87;`: Memberikan nilai 87 ke variabel `x`.
d. `px = &x;`: Menetapkan nilai pointer `px` untuk menunjuk ke
alamat memori variabel `x`. Operator `&` digunakan untuk
mendapatkan alamat memori dari variabel.
e. `y = *px;`: Memberikan nilai yang ditunjuk oleh pointer `px`
ke variabel `y`. Operator `*` digunakan untuk mendapatkan
nilai yang ditunjuk oleh pointer.

60
f. `cout << "alamat x = " << &x << endl;`: Menampilkan alamat
memori dari variabel `x` menggunakan operator `&`.
g. `cout << "isi px x = " << px << endl;`: Menampilkan nilai dari
pointer `px`, yang sekarang menunjuk ke alamat memori
variabel `x`. Karena `px` adalah pointer, nilainya adalah
alamat memori variabel `x`.
h. `cout << "nilai yang ditunjuk oleh px = " << px << endl;`:
Menampilkan nilai yang ditunjuk oleh pointer `px`, yaitu
alamat memori variabel `x`. Karena `px` menunjuk ke `x`, nilai
yang ditunjuk oleh `px` adalah alamat memori `x`.
i. `cout << "nilai y = " << y << endl;`: Menampilkan nilai dari
variabel `y`, yang sekarang memiliki nilai yang sama dengan
yang ditunjuk oleh pointer `px`. Nilai yang ditunjuk oleh `px`
adalah nilai dari variabel `x`.
Program ini menunjukkan penggunaan pointer untuk
menunjuk variabel dan mengakses nilai yang ditunjuk.
Pointer `px` digunakan untuk menunjuk ke variabel `x` dan
mengakses nilainya melalui operator `*`. Nilai dari variabel
`x` juga diakses langsung menggunakan variabel `x` itu
sendiri.

5. Program 6.5
a. Source Code

61
b. Output

c. Analisis
Program di atas merupakan contoh penggunaan pointer untuk
mengakses isi array dalam bahasa C++. Berikut adalah analisis langkah-
langkah program tersebut:

a. `static int tgl_lahir[] = {27, 8, 1977};`: Deklarasi dan inisialisasi


array `tgl_lahir` dengan elemen 27, 8, dan 1977. Array ini
memiliki tipe data `int` dan menggunakan kata kunci `static` yang
memberikan aksesibilitas yang sama di seluruh program.
b. `int i;`: Deklarasi variabel `i` bertipe `int` yang akan digunakan
sebagai penghitung dalam loop.
c. `int *ptgl;`: Deklarasi pointer `ptgl` bertipe `int`. Pointer ini akan
digunakan untuk menunjuk ke elemen-elemen dalam array
`tgl_lahir`.
d. `ptgl = tgl_lahir;`: Mengatur nilai pointer `ptgl` untuk menunjuk
ke alamat memori awal dari array `tgl_lahir`. Karena nama array
tanpa indeks menghasilkan alamat pertama dari array, `tgl_lahir`
tanpa indeks setara dengan `&tgl_lahir[0]`. Dengan demikian,
`ptgl` akan menunjuk ke elemen pertama dari array `tgl_lahir`.
e. `for(i=0; i<3; i++)`: Melakukan perulangan sebanyak 3 kali,
dengan `i` sebagai penghitung.
f. `cout << *(ptgl + i) << " ";`: Menampilkan nilai yang ditunjuk oleh
pointer `ptgl` dengan menggunakan aritmetika pointer. Pada setiap
iterasi, nilai yang ditunjuk oleh pointer `ptgl` akan ditampilkan
dengan operator `*`. Penggunaan `*(ptgl + i)` setara dengan
`ptgl[i]`, yang merupakan cara lain untuk mengakses elemen-
elemen dalam array.

62
g. `cout << endl;`: Mencetak baris baru setelah selesai menampilkan
elemen-elemen array.
Program ini menggunakan pointer `ptgl` untuk
mengakses dan menampilkan elemen-elemen dalam array
`tgl_lahir`. Dalam loop, nilai yang ditunjuk oleh pointer `ptgl`
diakses dan ditampilkan dengan menggunakan operator `*` atau
melalui aritmetika pointer. Ini memungkinkan program untuk
mengakses dan memanipulasi elemen-elemen array dengan
menggunakan pointer.

6. Program 6.6
a. Source Code

b. Output

c. Analisis
Program di atas adalah contoh penggunaan pointer untuk
menunjuk ke konstanta string dalam bahasa C++. Berikut adalah analisis
langkah-langkah program tersebut:

a. `char *pkota = "YOGYAKARTA";`: Deklarasi dan inisialisasi


pointer `pkota` bertipe `char`. Pointer ini menunjuk ke konstanta
string "YOGYAKARTA". Konstanta string tersebut akan
dialokasikan di memori dan alamat awalnya akan ditetapkan untuk
pointer `pkota`.
b. `cout << pkota << endl;`: Menampilkan nilai yang ditunjuk oleh
pointer `pkota` menggunakan operator `<<`. Karena pointer `pkota`

63
menunjuk ke konstanta string "YOGYAKARTA", nilai yang
ditunjuk oleh `pkota` adalah alamat memori dari karakter pertama
dalam string tersebut. Pada saat program mencoba mencetak nilai
yang ditunjuk oleh pointer, string "YOGYAKARTA" akan dicetak.

Program ini menggambarkan bagaimana menggunakan pointer


untuk menunjuk ke konstanta string. Pointer `pkota` menunjuk ke
alamat memori konstanta string "YOGYAKARTA" dan kemudian
menggunakan operator `<<` untuk mencetak string tersebut ke layar.

7. Program 6.7
a. Source Code

b. Output

64
c. Analisis
Program di atas adalah contoh penukaran isi dua string tanpa
menggunakan pointer dalam bahasa C++. Berikut adalah analisis
langkah-langkah program tersebut:
a. `#include <iostream>` dan `#include <string.h>`: Mendeklarasikan
dua header file yang diperlukan untuk program ini, yaitu `iostream`
untuk input/output dan `string.h` untuk operasi string.
b. `#define panjang 20`: Mendefinisikan konstanta `panjang` dengan
nilai 20, yang akan digunakan sebagai panjang maksimum string.
c. `char nama1[panjang] = "hanif";` dan `char nama2[panjang] =
"fathimah";`: Mendefinisikan dua array karakter `nama1` dan
`nama2` dengan panjang maksimum `panjang` dan menginisialisasi
dengan string awal yang diberikan.
d. `char namax[panjang];`: Mendefinisikan array karakter `namax`
dengan panjang maksimum `panjang`, yang akan digunakan sebagai
tempat untuk menyimpan sementara nilai string.
e. `cout << "semula : " << endl;`: Menampilkan pesan "semula:" untuk
menunjukkan kondisi awal dari string sebelum pertukaran.
f. `cout << "nama1 -> " << nama1 << endl;` dan `cout << "nama2 ->
" << nama2 << endl;`: Menampilkan nilai string `nama1` dan
`nama2` sebelum pertukaran.
g. `strcpy(namax, nama1);`, `strcpy(nama1, nama2);`, `strcpy(nama2,
namax);`: Melakukan pertukaran string menggunakan fungsi
`strcpy` dari header `string.h`. String `nama1` disalin ke `namax`,
kemudian isi string `nama2` disalin ke `nama1`, dan akhirnya isi
`namax` disalin ke `nama2`.
h. `cout << "kini : " << endl;`: Menampilkan pesan "kini:" untuk
menunjukkan kondisi setelah pertukaran string.
i. `cout << "nama1 -> " << nama1 << endl;`: Menampilkan nilai string
`nama1` setelah pertukaran.
Program ini melakukan penukaran isi dua string tanpa
menggunakan pointer. String `nama1` dan `nama2` disalin ke array

65
sementara `namax` menggunakan `strcpy`, kemudian isi string
`nama1` dan `nama2` ditukar dengan menggunakan `strcpy` lagi.
Hasilnya, string `nama1` sekarang berisi string awal `nama2` dan
string `nama2` berisi string awal `nama1`.

8. Program 6.8
a. Source Code

b. Output

c. Analisis
Program ini melakukan penukaran isi dua string yang
ditunjuk oleh pointer. Pointer nama1 dan nama2 menunjuk ke string
"hanif" dan "fathimah" masing-masing. Dalam proses pertukaran,
nilai yang ditunjuk oleh pointer nama1 disimpan di pointer namax,
kemudian nilai yang ditunjuk oleh nama2 disalin ke nama1, dan
akhirnya nilai yang ditunjuk oleh namax disalin ke nama2.

66
Hasilnya, pointer nama1 sekarang menunjuk ke string "fathimah"
dan pointer nama2 menunjuk ke string "hanif".

9. Program 6.9
a. Source Code

b. Output

c. Analisis
Program di atas adalah contoh penggunaan pointer yang menunjuk
pointer dalam bahasa C++. Berikut adalah analisis langkah-langkah
program tersebut:
a. `int var_x = 273;`: Mendeklarasikan variabel `var_x` bertipe `int` dan
menginisialisasinya dengan nilai 273.
b. `int *ptr1;`: Mendeklarasikan pointer `ptr1` bertipe `int`.
c. `int **ptr2;`: Mendeklarasikan pointer `ptr2` bertipe `int**`. Pointer ini
akan menunjuk ke pointer `ptr1`.
b. `ptr1 = &var_x;`: Memberikan alamat variabel `var_x` ke pointer `ptr1`.
Dengan demikian, `ptr1` akan menunjuk ke `var_x`.

67
c. `ptr2 = &ptr1;`: Memberikan alamat pointer `ptr1` ke pointer `ptr2`.
Dengan demikian, `ptr2` akan menunjuk ke `ptr1`.
d. `cout << "nilai var_x = " << *ptr1 << endl;`: Mengakses nilai dari
`var_x` melalui `ptr1` menggunakan operator dereferensi `*`. Nilai
`var_x` akan dicetak
e. `cout << "nilai var_x = " << **ptr2 << endl;`: Mengakses nilai dari
`var_x` melalui `ptr2` menggunakan operator dereferensi ganda `**`.
Pointer `ptr2` akan dereferensi terlebih dahulu ke `ptr1`, dan kemudian
`ptr1` dereferensi ke `var_x`. Nilai `var_x` akan dicetak.

Program ini menggambarkan penggunaan pointer yang menunjuk


pointer. Pointer `ptr1` menunjuk ke variabel `var_x`, dan pointer `ptr2`
menunjuk ke pointer `ptr1`. Dengan menggunakan operator dereferensi `*`
dan `**`, kita dapat mengakses nilai variabel `var_x` melalui pointer `ptr1`
dan `ptr2`.

10. Program 6.10


a. Source Code

b. Output

68
c. Analisis
Program ini menggambarkan bagaimana menggunakan pointer
sebagai parameter fungsi untuk memodifikasi nilai variabel yang
dilewatkan sebagai argumen. Fungsi naikkan_nilai menerima dua parameter
berupa pointer ke int (x dan y). Di dalam fungsi, nilai yang ditunjuk oleh
pointer x dan y akan diubah dengan menambahkan 2. Ketika fungsi
dipanggil, alamat variabel a dan b dilewatkan, sehingga nilai a dan b dalam
fungsi main akan berubah setelah pemanggilan fungsi.

11. Program 6.11


a. Source Code

b. Output

69
c. Analisis
Program di atas adalah contoh fungsi dengan keluaran berupa
pointer dalam bahasa C++. Berikut adalah analisis langkah-langkah
program tersebut:
a. `char *nama_hari(int n);`: Deklarasi prototipe fungsi `nama_hari`
yang mengembalikan pointer bertipe `char` dan menerima satu
parameter bertipe `int`.
b. `int main()`: Fungsi `main` adalah fungsi utama yang akan dieksekusi
saat program dijalankan.
c. `int hr;`: Mendeklarasikan variabel `hr` bertipe `int` untuk menyimpan
input pengguna.
b. `cout << "hari(1..7) : ";`: Menampilkan pesan untuk meminta
pengguna memasukkan angka yang mewakili hari.
c. `cin >> hr;`: Membaca input pengguna dan menyimpannya ke variabel
`hr`.
d. `cout << nama_hari(hr) << endl;`: Memanggil fungsi `nama_hari`
dengan argumen `hr` dan mencetak hasilnya menggunakan operator
`<<`.
e. `char *nama_hari(int n)`: Definisi fungsi `nama_hari` yang
mengembalikan pointer bertipe `char` dan menerima satu parameter
bertipe `int`.
f. `static char *hari[] = {...};`: Mendeklarasikan array `hari` yang berisi
nama-nama hari dalam bentuk string. Array ini memiliki ukuran 8 dan
elemen pertamanya ("kode hari salah") digunakan sebagai penanda
jika input pengguna tidak valid.
g. `(n < 1 || n > 7) ? hari[0] : hari[n];`: Mengembalikan alamat dari elemen
array `hari` berdasarkan nilai parameter `n`. Jika `n` kurang dari 1 atau
lebih dari 7, maka akan dikembalikan alamat elemen `hari[0]` yang
berisi string "kode hari salah". Jika `n` berada dalam rentang 1 hingga
7, maka akan dikembalikan alamat elemen `hari[n]` yang sesuai
dengan input penggunan.

70
Program ini menggambarkan penggunaan fungsi dengan keluaran
berupa pointer. Fungsi `nama_hari` mengembalikan pointer yang menunjuk
ke string nama hari berdasarkan input pengguna. Nilai input `hr` diteruskan
ke fungsi, dan fungsi tersebut menggunakan operator kondisional `?:` untuk
memilih alamat yang sesuai dari array `hari`. Hasilnya, nama hari yang
sesuai dengan input pengguna akan dicetak dalam fungsi `main`.

D. Tugas Praktikum
1. Buatlah suatu program dengan menggunakan pointer untuk menampilkan
tulisan atau output :

a. Input

b. Output

2. Buatlah program untuk menukar isi tiga string tanpa pointer dan yang
ditunjuk pointer (modifikasi contoh program 6.7 dan 6.8). Misal :

71
a. Input

b. Output

72

Anda mungkin juga menyukai