Anda di halaman 1dari 85

LAPORAN PRAKTIKUM ALGORITMA DAN

PEMOGRAMAN 2

Disusun Oleh :
Muhammad Karim Abdul Jabbar
NIM : 202212031

PROGRAM STUDI TEKNIK INFORMATIKA


SEKOLAH TINGGI TEKNOLOGI BONTANG
TAHUN 2022/2023

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.

Bontang, 11 Mei 2023

Muhammad Karim Abdul Jabbar

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

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai berikut
:
a. Dev c++
b. Microsoft word
c. Diagram drawio
d. Buku modul
e. Laptop/pc

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. Modul Program 1.1

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

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai berikut
:
a. Dev C++
b. Microsoft word
c. Diagram draw io
d. Buku modul
e. Laptop/pc

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

a. Pada program yang menggunakan struct merupakan ata yang menggabungkan


beberapa jenis data yang berbeda menjadi satu entitas. Biasanya, record atau
struct terdiri dari beberapa bidang atau anggota yang masing-masing memiliki
tipe data sendiri.

b. Pada program yang menggunakan strcpy merupakan program yang digunakan


untuk meng-copy isi dari satu string ke string lainnya. Fungsi ini membutuhkan
dua argumen, yaitu string tujuan (target) dan string sumber (source).

c. Pada program yang menggunakan info_rekan merupakan program yang


bertujuan untuk menyimpan dan mengelola informasi tentang rekan-rekan
seseorang. Berikut adalah langkah-langkah umum untuk melakukan analisis
simpel pada program "info_rekan":

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.

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut :
1. Dev c++
2. Microsoft word
3. Diagram draw io
4. Buku modul
5. Laptop/pc

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.

c. Buatlah program untuk mengitung deret menggunakan function Rekursi.


Jawab:
1. Input

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.

4. Program dan output

35
D. Tugas

Modul 4. Pencarian Data (Searching)

36
A. Tujuan
1. 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. Dev c++
2. Microsoft word
3. Diagram draw io
4. Buku modul
5. Laptop/pc

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

b. 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).
Jawab:
a. Input

47
2. Output

D. Tugas

48
Modul 5. Pengurutan Data (Shorting)

A. Tujuan
1. 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. Dev c++
2. Microsoft word
3. Diagram draw io
4. Buku modul
5. Laptop/pc

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

a. Baris 1-4: Mendefinisikan direktif preprosesor dan menggunakan pernyataan


namespace untuk mengimpor ruang lingkup standar.

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:

1) Variabel data_size dideklarasikan dan diatur nilainya menjadi 30.

2) Larik values dengan ukuran data_size dideklarasikan.

3) Loop for digunakan untuk mengisi larik dengan angka acak antara 0 hingga
99 menggunakan fungsi rand() % 100.

4) Data yang belum diurutkan dicetak di layar.

5) Fungsi bubble_sort dipanggil dengan mengirimkan larik values dan ukuran


data_size sebagai argumen.

6) Data yang sudah diurutkan dicetak di layar.

d. Baris 37: Menggunakan fungsi getchar() untuk menunggu sampai pengguna


menekan tombol enter sebelum program berakhir.

51
2. Modul 5.2

1. Input

2. Output

52
3. Analisis

a. Baris 1-3: Mendefinisikan direktif preprosesor dan menggunakan pernyataan


namespace untuk mengimpor ruang lingkup standar.

b. Baris 5-16: Membuat fungsi straight_inst_sort yang menerima sebuah larik


(array) dan ukuran (size) dari larik tersebut. Fungsi ini akan mengurutkan larik
menggunakan algoritma Straight Insertion Sort. Algoritma ini menggunakan satu
loop untuk membagi larik menjadi bagian terurut dan tidak terurut, dan satu loop
bersarang untuk memasukkan elemen dari bagian tidak terurut ke posisi yang
tepat dalam bagian terurut.

1) Variabel Temp digunakan untuk menyimpan elemen yang akan dimasukkan


ke posisi yang tepat.

2) Loop pertama (i) akan berjalan dari 1 hingga (size-1). Loop ini
menunjukkan posisi elemen yang akan dimasukkan ke dalam bagian terurut.

3) Elemen yang akan dimasukkan disimpan dalam variabel Temp.

4) Variabel j diatur ke (i-1), menunjukkan posisi terakhir bagian terurut.

5) Loop while digunakan untuk membandingkan elemen Temp dengan


elemen-elemen di bagian terurut dan memindahkan elemen-elemen yang
lebih besar untuk memberikan ruang bagi Temp.

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:

1) Variabel k dan data_size dideklarasikan.

2) Variabel values dengan ukuran 20 dideklarasikan untuk menyimpan data


yang akan diurutkan.

3) Menggunakan pernyataan cin untuk meminta pengguna memasukkan


jumlah data (data_size) yang akan diurutkan. Data_size tidak boleh lebih
dari 20.

4) Menggunakan loop for untuk meminta pengguna memasukkan data


sebanyak data_size dan menyimpannya dalam larik values.

5) Data yang belum diurutkan dicetak di layar.

6) Fungsi straight_inst_sort dipanggil dengan mengirimkan larik values dan


ukuran data_size sebagai argumen.

3. Modul 5.3

1. Input

54
2. Output

3. Analisis

a. Baris 1-4: Mendefinisikan direktif preprosesor dan menggunakan pernyataan


namespace untuk mengimpor ruang lingkup standar.

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.

1) Variabel temp digunakan untuk menukar elemen-elemen larik.

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.

d. Baris 36: Menggunakan fungsi getchar() untuk menunggu sampai pengguna


menekan tombol enter sebelum program berakhir.

4. Modul 5.4

1. Input

56
2. Output

57
3. Analisis

a. Baris 1-5: Mendefinisikan direktif preprosesor dan menggunakan pernyataan


namespace untuk mengimpor ruang lingkup standar.

b. Baris 7-13: Mendeklarasikan fungsi shell_sort yang menerima sebuah larik


(array) sebagai argumen dan mengembalikan nilai integer. Fungsi ini akan
mengurutkan larik menggunakan algoritma Shell Sort.

1) Variabel i, j, k, dan mid dideklarasikan.

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.

4) Loop ketiga (i) digunakan untuk membandingkan dan menukar elemen-


elemen yang berjarak gap dalam larik.

5) Jika elemen yang berjarak gap tidak terurut, mereka ditukar.

6) Algoritma ini terus berulang dengan mengurangi gap hingga menjadi 1.

58
c. Baris 16-29: Fungsi main merupakan fungsi utama dari program. Di dalam
fungsi ini, langkah-langkah berikut dilakukan:

1) Variabel arr dengan ukuran size dideklarasikan untuk menyimpan elemen-


elemen yang akan diurutkan.

2) Menggunakan loop for untuk meminta pengguna memasukkan elemen-


elemen larik.

3) Fungsi shell_sort dipanggil dengan mengirimkan larik arr sebagai argumen


untuk mengurutkan larik tersebut.

4) Data yang sudah diurutkan dicetak di layar menggunakan loop for.

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:

1) Variabel first diatur dengan nilai 0.

2) Variabel last diatur dengan nilai data_size - 1, dengan data_size


didefinisikan sebagai konstanta 100.

3) Variabel values dengan ukuran data_size dideklarasikan untuk menyimpan


elemen-elemen yang akan diurutkan.

4) Menggunakan loop for untuk meminta pengguna memasukkan elemen-


elemen larik.

5) Data yang belum diurutkan dicetak di layar.

6) Fungsi quick_sort dipanggil dengan mengirimkan larik values, first, dan last
sebagai argumen untuk mengurutkan larik tersebut.

7) Data yang sudah diurutkan dicetak di layar.

d. Baris 49-54: Menggunakan fungsi getchar() untuk menunggu sampai pengguna


menekan tombol enter sebelum program berakhir.

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

B. Alat dan Bahan


Peralatan dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai
berikut:
a. Dev c++
b. Microsoft word
c. Diagram draw io
d. Buku modul
e. Laptop/pc

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

Selanjutnya, nilai dari tgl_lahir[0] dicetak menggunakan cout dengan


pernyataan cout << "nilai dari tgl_lahir[0] = " << tgl_lahir[0] << endl;. Ini juga

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.

10. Program 6.10


1. Input

2. Output

3. Analisis

80
81
11. Program 6.11
a. Buatlah suatu program dengan menggunakan pointer untuk menampilkan
tulisan atau output :

Pemrograman Dasar Turbo C


Dasar Turbo C
Turbo C

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

Anda mungkin juga menyukai