Anda di halaman 1dari 5

DESAIN DAN ANALISIS ALGORITMA

UJIAN TENGAH SEMESTER

Oleh:
Edy Santosa Putra
NIM: 2329101048
Kelas: E

PROGRAM STUDI ILMU KOMPUTER


PROGRAM PASCA SARJANA
UNIVERSITAS PENDIDIKAN GANESHA
2023
SOAL
1. Rancanglah struktur data yang dapat menyimpan kumpulan beberapa objek yang
merepresentasikan beberapa jenis geometri bangun datar pada diagram cartesius, yaitu: segitiga,
persegi, persegi panjang, janjar genjang, belah ketupat, layang-layang, trapesium, dan lingkaran.
2. Jika diberikan sekumpulan objek geometri bangun datar yang tersimpan dalam struktur data yang
Anda telah rancang sebelumnya, tuliskan algoritma untuk mengetahui apakah ada minimal satu
persegi panjang di dalamnya ?
3. Jika diberikan sekumpulan objek geometri bangun datar yang tersimpan dalam struktur data yang
Anda rancang sebelumnya, tuliskan algoritma untuk mengetahui berapa jumlah luas total seluruh
bangun datar di dalamnya ?

JAWABAN

Diagram Cartesius adalah sistem koordinat yang digunakan untuk menggambarkan objek berdasarkan
titik-titik koordinat pada 2 sumbu, biasanya disebut sumbu x dan y, dimana pertemuan nilai antara
sumbu x dan y membentuk sebuah titik koordinat.

1. Perancangan Struktur Data


Karena struktur data yang akan kita rancang harus dapat merepresentasikan kumpulan objek-
objek bangun datar yang dimana setiap bangun datar dapat memiliki properti yang berbeda-
beda, seperti persegi panjang yang memiliki 4 titik koordinat, segitiga yang memiliki 3 titik
koordinat, atau lingkaran yang memiliki 1 titik koordinat serta jari-jari. Maka kita akan
menggunakan struktur data LinkedList.
Setiap node akan merepresentasikan sebuah bangun datar, dalam node tersebut akan disimpan
sebuah ArrayList yang menyimpan struct/class bernama Koords yang memiliki 2 property
integer yaitu x dan y, kemudian untuk menyimpan kumpulan objek koords kita buat sebuah
Array List. Khusus untuk lingkaran, hanya ada titik 2 koordinat. Titik koordinat pertama adalah
titik tengah dari lingkaran, dan titik koordinat kedua adalah titik terluar lingkaran, jadi jarak
antara titik tengah dan titik terluar lingkaran adalah jari-jarinya.

Gambar1
Diagram Cartesian sebuah Persegi Panjang
Pada Gambar 1 diatas, digambarkan sebuah bangun datar persegi panjang dengan koordinat (1,5),
(7,5), (1,2), dan (7,1). Maka sebuah node yang menyimpan bangun datar tersebut dapat
divisualisasikan seperti pada Gambar 2 dibawah.

Gambar 2
List Koordinat

Dari penjelasan diatas apabila kita menambahkan sebuah node baru dari LinkedList yang kita buat,
misalnya sebuah bangun datar segitiga dengan koordinat (2,2), (4,-1), dan (0,-1) maka akan dihasilkan
sebuah LinkedList seperti pada Gambar 3 dan Diagram Cartesian pada Gambar 4:

Gambar 3
LinkedList of List

Gambar 4
Diagram Cartesian Persegi Panjang dan Segitiga

2. Algoritma Pendeteksian Persegi Panjang


Dari struktur data yang telah kita buat sebelumnya, apabila misalnya kita telah memiliki data
yang memiliki beberapa bangun datar yang berbeda. Untuk dapat mendeteksi apakah ada
bangun persegi panjang di dalamnya pertama kita cek apakah node tersebut memiliki 4
koordinat, kemudian kita harus mencocokkan apakah ada pasangan jarak antar koordinat yang
horizontal yang memiliki panjang sama, dan pasangan jarak antar koordinat vertikal yang
memiliki panjang yang sama. Panjang jarak antar koordinat horizontal harus lebih panjang dari
jarak antar koordinat vertikal, atau sebaliknya.

Gambar 5
Jarak antara koordinat

Jarak antar koordinat horizontal (6)

Jarak antar koordinat


vertikal (4)

Di Gambar 5 kondisi untuk menentukan apakah bangun datar tersebut merupakan persegi
panjang telah terpenuni karena:
1. Struktur data memiliki 4 koordinat
2. Cocokkan panjang jarak antara koordinatnya. Pada gambar diatas bisa kita lihat terdapat
pasangan koordinat horizontal (1,5), (7,5) dan (1,1), (7,1) memiliki panjang 6 titik, kemudian
pasangan koordinat vertikal (1,1), (1,5) dan (7,1), (7,5) memiliki panjang 4 titik.
3. Pasangan koordinat vertikal dan horizontal berbeda. Vertikal memiliki panjang 4 titik,
Horizontal memiliki panjang 6 titik.

Asumsikan kita telah memiliki struktur data LinkedList dengan 3 bangun datar seperti gambar
dibawah:
Gambar 6
Struktur Data Cartesian dengan 3 Bangun Datar
Algoritma diatas dapat kita tuangkan ke pseudo code sebagai berikut:

// deklarasi class Koords


public class Koords {
ArrayList<long> edges = new ArrayList <long>;
}

//deklarasi Linked List untuk menyimpan keseluruhan bangun datar


List<ArrayList> bangunDatar= new List<ArrayList>;

// deklarasi bangun datar 1


ArrayList<Koords> bangun = new List<Koords>;
... masukkan koordinat bangun datar 1 disini dan masukkan ke bangunDatar
// deklarasi bangun datar 2
ArrayList<Koords> bangun = new List<Koords>;
... masukkan koordinat bangun datar 2 disini dan masukkan ke bangunDatar
// deklarasi bangun datar 3
ArrayList<Koords> bangun = new List<Koords>;
... masukkan koordinat bangun datar 3 disini dan masukkan ke bangunDatar

// loop bangunDatar
for (i=0 to i> bangunDatar.length){
if (panjang bangun datar tertinggi)
titikTerpanjang++
else
titikTerpendek++
}

If titikterpanjang == titikTerpendek == 2 then


System.out (”Terdapat persegi Panjang”)
Else
System.out (”Tidak terdapat persegi Panjang”)

3. Algoritma Pendeteksian Persegi Panjang


Untuk mengetahui luas semua bangun datar yang ada pada struktur data kita. Kita harus
mencocokkan dulu jumlah koordinat yang ada pada setiap node. Apabila terdapat node dengan
4 titik kita gunakan rumus perhitungan luas bangun datar persegi/persegi panjang. Apabila 3
titik kita gunakan rumus perhitungan segitiga, apabila 2 titik kita gunakan rumus perhitungan
lingkaran.

// loop bangunDatar
for (i=0 to i> bangunDatar.length){
if bangunDatar[i].panjang node == 4
HitungPersegi()
Else if bangunDatar[i].panjang node == 3
HitungSegitiga()
Else if bangunDatar[i].panjang node == 2
HitungLingkaran()

Anda mungkin juga menyukai