Anda di halaman 1dari 10

Nama : Ketut Riski Prananda

Nim : 2005551125

Kelompok :26

MODUL III
“ARRAY DAN POINTER”

Tujuan

1. Mengetahui pengertian tentang array dan deklarasinya dalam C/C++


serta tipe data yang digunakan dalam array.
2. Mengetahui fungsi dan kegunaan dari pointer dalam C/C++.
3. Mampu menjelaskan pengertian dari sorting dan searching.
4. Mengetahui motede pengurutan dan pencarian.

Tugas Pendahuluan

1. Jelaskan tentang array dan deklarasi array dalam C/C++ serta tipe data
yang mungkin digunakan dalam array. Berikan contoh deklarasi array
dalam C/C++ lalu hitung keperluan memory-nya!
2. Jelaskan apa yang dimaksud dengan pointer serta berikan contoh
pendeklarasian dan penggunaan pointer dalam bahasa C/C++!
3. Jelaskan secara rinci perbedaan array dan pointer!
4. Buatlah contoh cara membangkitkan bilangan random dalam C/C++!
5. Jelaskan apa yang dimaksud dengan sorting dan searching!
6. Jelaskan mekanisme metode pengurutan dan pencarian berikut serta
berikan contoh pengurutan data yang dilakukan dengan metode tersebut.
a. Insertion sort
b. Bubble sort
c. Quick sort
d. Sequential search
e. Binary search
7. Buatlah flowchart dan pseudocode (notasi algoritma) dari masing-masing
metode di atas, lalu buatlah trace dari flowchart yang Anda buat.

Jawaban

1. Pengertian array dan deklarasi array
Array adalah suatu variabel yang terdiri dari sekumpulan data
dimana data-data tersebut mempunyai tipe data yang sama. Setiap data
disimpan dalam alamat memori yang berbeda-beda dan disebut dengan elemen
array. Setiap elemen mempunyai nilai indek sesuai dengan urutannya. Melalui
indek inilah dapat mengakses data-data tersebut. Sedangkan deklarasi array
adalah variable array dideklarasikan dengan mencantumkan tipe dan nama
variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Berikut
merupakan tipe data yang mungkin digunakan dalam array.
1.1. Array satu dimensi
Array satu dimensi adalah array yang terdiri dari n buah kolom atau
Array satu dimensi adalah array yang terdiri dari 1 subskrip array saja. Setiap
elemen array satu dimensi dapat diakses melalui indeks yang terdapat di
dalamnya. Untuk mendeklarasikan sebuah array satu dimensi  harus
menggunakan tanda [ ] (bracket). Setiap elemen array dapat diakses melalui index
dan secara default dimulai dari 0.
1.2. Array dua dimensi
Array dua dimensi adalah array yang terdiri dari n buah baris dan m buah
kolom, atau array dua dimensi juga biasa disebut sebagai array yang mempunyai
dua subskrip, yaitu baris dan kolom. Bentuk dari array dua dimensi pada umunya
berbentuk seperti matriks atau tabel dimana indeks pertama menunjukan baris dan
indeks kedua menunjukan kolom.
1.3. Array multidimensi
Array Multidimensi merupakan array yang serupa dengan array satu
dimensi maupun array dua dimensi, namun array multidimensi dapat memiliki
memori yang lebih besar. Biasanya array multidimensi digunakan untuk menyebut
array dengan dimensi lebih dari dua atau array yang mempunyai lebih dari dua
subskrip, seperti untuk menyebut array tiga dimensi, empat dimensi, lima dimensi
dan seterusnya.

#include <stdio.h>

int main(void)
{
int bilangan[5] = {6, 9, -8, 24, -99};

printf("bilangan pertama: %d \n",bilangan[0]);


printf("bilangan kedua: %d \n",bilangan[1]);
printf("bilangan ketika: %d \n",bilangan[2]);
printf("bilangan keempat: %d \n",bilangan[3]);
printf("bilangan kelima: %d \n",bilangan[4]);

return 0;
}
Kode program 1, Contoh deklarasi Array
Pada contoh program diatas, di awal kode program, baris int
bilangan[5] dipakai untuk membuat sebuah array bernama bilangan dengan 5
elemen atau 5 anggota. Array bilangan ini di set sebagai int, yang artinya setiap
elemen array hanya bisa diisi dengan bilangan bulat (integer). tipe data integer
dimana memiliki ukuran memory sebesar 4 byte atau 32 bit, pada array bilangan
memiliki ukuran sebesar 5, maka memory yang digunakan sebesar 5x10 yaitu 50
byte, atau 32x10 yaitu 320 bit.

2. Pointer
Pointer adalah sebuah jenis variabel yang dapat menunjuk address atau
alamat memory dari sebuah variabel lain. Setiap variabel biasanya mempunyai
sebuah alamat karena dalam deklarasi, program akan mengalokasikan sebuah
alamat untuk variabel tersebut.

#include <stdio.h>

int main(){
int angka=10;
int *p;

p=&angka;
printf("%d", *p);
getchar();
return 0;
}
Kode program 2, Contoh deklarasi Pointer
Pada contoh program 2, dideklarasikan sebuah variabel angaka dengan
tipe data interger bernilai 10, lalu dibuat deklarasi pointer p(*p) karena untuk
mendeklarasikan variabel pointer harus menggunakan simbol bintang (*) di
depan variabel yang di deklarasikan pada tipe data tertentu. Pada program dibuat
sebuah perintah “p=&angka” yang digunakan untuk menunjuk alamat pada
variabel angka. Hasil dari printf *p adalah 10. Karena, diatas sudah terdapat
“p=&angka” menunjuk alamat dari variabel angka.

3. Perbedaan array dan pointer


Perbedaan utama antara array dan pointer adalah suatu array adalah
struktur data yang menyimpan kumpulan elemen dari tipe data yang sama dan
dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan
lokasi memori yang ingin dibuat. Pointer adalah variabel yang menyimpan alamat
variabel lain dalam memori komputer dan biasanya setiap variabelnya mempunyai
sebuah alamat karena dalam deklarasi program akan mengalokasikan sebuah
alamat untuk variabel tersebut.
Tabel 3, perbedaan Array dan Pointer
Array Pointer
Sebuah array mengacu pada satu set elemen Pointer adalah variabel yang menunjuk ke
data beberapa lokasi memori lainnya.
Array adalah kumpulan data yang menyimpan Pointer adalah variabel yang menyimpan
sejumlah nilai tetap dari tipe data yang sama. alamat variabel lain
array dapat digunakan untuk mengalokasikan pointer dapat digunakan untuk alokasi
memori ukuran tetap (memori statis) memori dinamis.
Istilah array dan pointer adalah dua konsep pemrograman. Perbedaan
antara array dan pointer adalah bahwa array adalah struktur data yang
menyimpan kumpulan elemen dari tipe data yang sama sedangkan pointer adalah
variabel yang menyimpan alamat variabel lain dalam memori komputer.

4. Bilangan random dalam C/C++


Dalam Bahasa pemrograman C/C++ terdapat angka acak atau sering
disebut bilangan random. Pada Bahasa C Terdapat dua fungsi yang dibutuhkan
untuk membangkitkan bilangan acak yaitu srand() dan rand(). Fungsi srand()
dibutuhkan untuk menentukan "bibit" atau “seed” dari bilangan acak yang akan
dibangkitkan. Sedangkan fungsi rand() digunakan untuk menampilkan bilangan
acak yang dihasilkan dari "bibit" yang diberikan ke fungsi srand().Fungsi
rand() umumnya digunakan untuk membangkitkan atau menghasilkan bilangan
acak yang bertipe bilangan bulat.

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
// Driver program
int main(void)
{
srand(time(0)); //fungsi srand()
for(int i = 0; i<5; i++)
 printf(" %d ", rand());//fungsi rand()
return 0;
}

Kode program 4, Contoh membangkitkan bilangan random


Kode program 4 merupakan contoh membangkitkan bilangan random.
Pada program tersebut akan menghasilkan urutan berbeda dari angka acak setiap
kali program dijalankan. Pada program srand() adalah sekumpulan seed yang
digunakan oleh rand untuk generate angka secara acak. Jika srand tidak
dipanggil sebelum pemanggilan pertama rand, maka seolah-olah dilakukan
pemanggilan srand(1) untuk mengatur seed menjadi satu.

5. Sorting dan Searching


Dalam pemrograman C/C++ terdapat sebuah metode untuk mengatur
data pada atau objek pada sebuah program. Metode yang digunakan ada dua yaitu
sorting yang berfungsi mengurutkan data dan searching yang digunakan untuk
mencari sebuah data dalam kumpulan data. Berikut penjelasan rinci mengenai
sorting dan searching
5.1. Sorting
Sorting merupakan proses pengurutan data yang sebelumnya disusun
secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan
tertentu. Sort dalam hal ini diartikan mengurutkan data yang berada dalam suatu
tempat penyimpanan, dengan urutan tertentu baik urut menaik (ascending) dari
nilai terkecil sampai dengan nilai terbesar, atau urut menurun (descending) dari
nilai terbesar sampai dengan nilai terkecil.
5.2. Searching
Pencarian (searching) merupakan tindakan untuk mendapatkan suatu
data dalam kumpulan data. Untuk keperluan mencari data, terdapat beragam
algoritma pencarian (search algorithm). Yang dimaksud dengan algoritma
pencarian adalah algoritma yang menerima sebuah argumen a dan mencoba untuk
menemukan sebuah rekaman yang memiliki kunci a. Umumnya metode pencarian
langsung akan lebih efisien digunakan untuk mencari data dalam sekelompok data
dalam jumlah kecil. Dalam kondisi data yang dicari berada dalam sekumpulan
data yang tidak di urut, maka penerapan metode pencarian langsung akan lebih
mudah. Namun dalam kasus cacah data akan lebih baik jika data diurutkan
terlebih dahulu dan kemudian menggunakan metode pencarian biner.
6. Metode Pengurutan dan Pencarian
Dalam pemograman pada bahasa C memiliki cara untuk mengurutkan
serta mencari data. Konsep pengurutan atau sorting dapat memudahkan intuk
mengurutkan data yang acak dan konsep searching mempermudah pencarian
suatu data di dalam kumpulan data. Macam-macam metode sorting dan
searching dalam Bahasa C antara lain.
6.1 Insertion sort
Metode Insertion Sort merupakan metode pengurutan dengan cara
membandingkan elemen array yang ada pada posisi yang tepat. Pengurutan posisi
yang tepat dilakukan dengan pergeseran elemen array. Proses pengurutannya
adalah menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array
diurutkan, jadi bisa dikatakan bahwa proses pengurutannya dilakukan dari indeks
terkecil hingga terbesar. Contoh metode pegurutan insertion sort:

Tabel 6.1 Contoh Algoritma Insertion Sort


Data Data Data Data Data Data Data
Tahap
ke-1 ke-2 ke-3 ke-4 ke-5 ke-6 ke-7
Data Awal 2 3 9 6 4 5 1
Iterasi pertama 2 3 9 6 4 5 1
Iterasi kedua 2 3 6 9 4 5 1
Iterasi ketiga 2 3 4 6 9 5 1
Iterasi keempat 2 3 4 5 6 9 1
Iterasi kelima 1 2 3 4 5 6 9
Tabel 6.1 merupakan contoh penerapan insertion sort. Pada tabel terdapat
data awal yaitu 2,3,9,6,4,5, dan 1. Data yang digaris bawahi merupakan pembatas
dilakukan pengecekan kondisi, jika data yang sebelumnya lebih besar maka akan
pergeseran elemen array atau bertukar posisi. Kemudian data tersebut akan dicek
lagi hingga urutan datanya sudah terurut dari nilai terkecil hingga nilai terbesar.

6.2 Bubble sort


Bubble Sort  adalah metode yang membandingkan elemen yang sekarang
dengan elemen-elemen berikutnya. Pembandingan elemen dapat dimulai dari awal
atau mulai dari paling akhir. Apabila elemen yang sekarang lebih besar atau lebih
kecil dari elemen berikutnya, maka posisinya ditukar, tetapi jika tidak maka
posisinya tetap.

Tabel 6.2 Contoh Implementasi Algoritma Bubble Sort


Tahapan Data ke-1 Data ke-2 Data ke-3 Data ke-4 Data ke-5
Data Awal 7 9 4 1 5
Proses Pertama
Tahap 1 7 9 4 1 5
Tahap 2 7 4 9 1 5
Tahap 3 7 4 1 9 5
Tahap 4 7 4 1 5 9
Proses Kedua
Tahap 1 7 4 1 5 9
Tahap 2 4 7 1 5 9
Tahap 3 4 1 7 5 9
Tahap 4 4 1 5 7 9
Proses Ketiga
Tahap 1 4 1 5 7 9
Tahap 2 1 4 5 7 9
Tahap 3 1 4 5 7 9
Tahap 4 1 4 5 7 9
Tabel 6.2 merupakan contoh dari implementasi algoritma bubble sort.
Proses sorting akan dilakukan sebanyak n-1, di mana n adalah jumlah elemen
data. Setiap proses memiliki tahapan sebanyak n-1. Jika diperhatikan, pada proses
ketiga masih terus berjalan agar tidak ada satupun penukaran pada suatu proses.
Proses ini dilakukan untuk verifikasi data. Kelebihan metode ini yaitu metode
yang paling sederhana, namun kekurangannya ialah tidak efisien karena jika
mengurutkan data yang besar maka akan sangat lama prosesnya.
6.3 Quick sort
Quick Sort merupakan metode tercepat dalam proses pengurutan data
dengan menggunakan prinsip rekursif. Metode ini menggunakan strategi “pecah-
belah” dengan mekanisme berikut ini. Metode ini mengambil salah satu elemen
secara acak yang disebut dengan pivot  lalu menyimpan semua elemen yang lebih
kecil di sebelah kiri pivot  dan semua elemen yang lebih besar di sebelah kanan
pivot. Hal ini dilakukan secara rekursif terhadap elemen di sebelah kiri dan
kanannya sampai semua elemen sudah terurut.

Tabel 6.3 Contoh Implementasi Algoritma Quick Sort


Tahap Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7
Data awal 9 4 2 7
10 1 5
Tahap 1 4 2 1 57 9 10
Tahap 2 1 2 4 57 9 10
Tabel 6.3 merupakan contoh implementasi algoritma quick sort. Saat
memulai pengurutan, Algoritma ini mengambil salah satu elemen secara acak
yang disebut dengan pivot lalu menyimpan elemen yang lebih kecil di sebelah kiri
dan elemen yang lebih besar di sebelah kanan. Pivot dipilih dari elemen pada data
yang dibagi dengan 2. Setelah itu dilakukan pengecekan data paling awal dengan
data paling akhir. Apabila kondisi terpenuhi akan dilakukan pertukran posisi
elemen atau data. Pada tahap 1, terdapat dua pivot di masing-masing ujung data.
Kemudian data tersebut dipecah menjadi dua bagian dan diurutkan berdasarkan
pivot yang akan menghasilkan data yang terurut.

6.4 Sequential search


Sequential search adalah teknik pencarian data dimana data dicari secara
urut dari depan ke belakang atau dari awal sampai akhir, berdasarkan key yang di
cari. Sequential Search dapat dilakukan pada data yang belum terurut mau pun
yang sudah terurut. Pencarian dilakukan dengan melakukan penelurusan data satu-
persatu kemudian dicocokan dengan data yang dicari, jika tidak sama maka
penelusuran dilanjutkan, jika sama maka penelurusan dihentikan, berarti data telah
ditemukan.
Tabel 6.4 Contoh Implementasi Algoritma Sequential Search
Tahap Data Penjelasan
Awal 1 2 5 3 4 Mencari data 5 dari array
(1) 2 5 3 4 Dilakukan Pengecekan data, apabila tidak
1
sesuai maka pencarian akan dilanjutkan
1 (2) 5 3 4 Pengecekan data bernilai 2 dan tidak
2
sesuai maka pencarian dilanjutkan
1 2 (5) 3 4 Pengecekan dengan data bernilai 5 dan
3
sesuai pencarian, searching diberhentikan
Tabel 6.4 merupakan contoh dari implementasi algoritma sequential
search. Pengecekan data dilakukan untuk setiap elemen array dimulai dari indeks
pertama sampai indeks terakhir. Apabila pengecekan sesuai dengan data yang
dicari, maka searching akan dilanjutkan dan apabila pengecekan data sesuai
pencarian, maka searching akan dihentikan.

6.5 Binary search


Binary search adalah metode pencarian suatu data atau elemen di dalam
suatu array dengan kondisi data dalam keadaan terurut. Proses pencarian binary
search hanya dapat dilakukan pada sekumpulan data yang sudah diurutkan
terlebih dahulu. Dengan teknik ini pertama data yang dicari akan dibuang
setengah dari jumlah data yang ada. Apabila ditemukan kecocokan data maka
program akan mengembalikan output, jika tidak pencarian akan terus berlanjut
hingga akhir dari pembagian jumlah data tersebut.

Tabel 6.5 Contoh Implementasi Algoritma Binary Search


Tahap Data Penjelasan
Awal 4 1 5 3 8 Data awal dengan data yang akan dicari adalah 4
sorting 1 3 4 5 8 Proses pengurutan data
Dilakukan pengecekan kondisi dengan data tengah yaitu data
1 1 3 (4) 5 8 yang bernilai 4, data yang dicari (4) lebih kecil daripada 5,
maka ruang disebalah kiri yang digunakan
Data bernilai 5 dan 8 tidak lagi akan digunakan, karena kita
hanya akan fokus di ruang sebelah kiri. Karena data yang
2 1 3 (4) 5 8
dicari sudah benar yaitu data 4, maka proses searching akan
diberhentikan.
Tabel 6.5 merupakan contoh dari implementasi algoritma binary search.
Metode ini menggunakan pembagian ruang elemen data dan data tengah akan
dijadikan sebagai pengecekan kondisi setiap iterasi. Apabila data yang dicari
ternyata lebih kecil, maka ruang di sebelah kiri akan digunakan. Sebaliknya
apabila data yang dicari lebih besar maka ruang di sebalah kanan akan digunakan.
Pengecekan data akan terus dilakukan sampai kondisi terpenuhi. Apabila sudah
benar, maka proses searching aka dihentikan.

Anda mungkin juga menyukai