Tipe Bentukan dan Array
(CDK1GAB4) Algoritma Pemrograman Pekan ke-06 dan 07
Prodi Sains Data
Fakultas Informatika, Universitas Telkom
1
Outline
Tipe Bentukan
• Jenis Tipe Bentukan
• Deklarasi tipe bentukan
Array
• Ilustrasi Array
• Deklarasi array
Contoh Soal
Latihan Soal
2
Tipe Bentukan
3
TIPE BENTUKAN
Tipe data dasar telah terdefinisi (Contoh: integer, real,
string, boolean dan char).
Tipe bentukan merupakan salah jenis tipe data yang
didefinisikan oleh pemrograman (user-defined data type).
Perlu deklarasi variable dengan tipe data bentukan pada
kamus
Alias
Jenis tipe bentukan
Struktur
4
TIPE BENTUKAN :: Alias
1. Deklarasi tipe bentukan sebagai alias.
2. Salah satu cara pemberian nama tipe data dengan nama baru sehingga lebih mudah untuk
dikenali atau dipahami oleh pemrogram.
type nama_alias : tipe_data
3. Berikut ini adalah pemberian alias bilangan untuk integer dan desimal untuk real
Pseudocode GoLang
1 program Contoh_Alias package main
2 kamus import "fmt"
3 type bilangan : integer type bilangan int
4 type desimal : real type desimal float64
5 a : bilangan; b : desimal
6 algoritma func main(){
7 a <- 10 var a bilangan = 10
8 b <- 3.14 var b desimal = 3.14
9 output(a,b) fmt.Println(a,b)
10 endprogram }
5
TIPE BENTUKAN :: Struktur (1)
1. Memungkinkan kita untuk mengelompokkan beberapa variabel yang mungkin berelasi
menjadi suatu kesatuan.
2. Sebagai contoh, data buku biasanya terdiri dari judul buku, nama penulis, tahun terbit, nama
penerbit, edisi, dan data-data lainnya.
Pseudocode GoLang
1 type nama_struktur < type nama_struktur struct {
2 field_1 : tipe_data_1 field_1 tipe_data_1
3 field_2 : tipe_data_2 field_2 tipe_data_2
4 ... ...
5 > }
3. Tipe data dari field bisa berupa tipe data dasar ataupun tipe bentukan lainnya.
Contoh:
• Tipe Waktu (jam, menit, dan detik)
• Tipe Orang (nama, gendre, alamat, agama dan biodata lainnya)
• Tipe Buku (judul, penulis, tahun terbit, penerbit, dan data lainnya)
6
TIPE BENTUKAN :: Struktur (2)
Pseudocode GoLang
1 program contoh_struktur package main
2 kamus import "fmt"
3 type date < type date struct {
4 tanggal : integer tanggal int
5 bulan: string bulan string
6 tahun: integer tahun int
7 > }
8 tgl: date func main(){
9 algoritma var tgl date
10 tgl.tanggal <- 10 tgl.tanggal = 10
11 input(tgl.bulan, tgl.tahun) fmt.Scan(&tgl.bulan, &tgl.tahun)
12 tgl.tanggal <- tgl.tanggal + 10 tgl.tanggal += 10
13 output(tgl.tanggal) fmt.Println(tgl.tanggal)
14 output(tgl.bulan, tgl.tahun) fmt.Println(tgl.bulan, tgl.tahun)
15 endprogram }
7
TIPE BENTUKAN :: Struktur (3)
1 program contoh_struktur
2 kamus
1. Akses dilakukan melalui field yang
didefinisikan
3 type date <
4 tanggal : integer
2. Operasi dilakukan sesuai tipe data
dari fieldnya.
5 bulan: string
6 tahun: integer
3. Pahami hirarki berikut:
7 >
Keterangan
8 tgl: date
date adalah tipe data, bukan variable
9 algoritma
tgl adalah variabel dengan tipe date
10 tgl.tanggal <- 10
11 input(tgl.bulan, tgl.tahun)
tgl.tanggal bertipe integer
12 tgl.tanggal <- tgl.tanggal + 10 tgl.bulan bertipe String
13 output(tgl.tanggal) tgl.tahun bertipe integer
14 output(tgl.bulan, tgl.tahun)
15 endprogram
8
Array
9
ARRAY
Digunakan untuk menyimpan kumpulan data.
Data Structure
1. Array dapat menyimpan data/elemen dengan tipe homogen/sejenis. (Non-Primitive)
2. Element terurut berdasarkan indeks
3. Banyaknya elemen adalah tetap. Linear Non-Linear
4. Index adalah nomor untuk mengakses elemen dari array.
5. Tipe indeks adalah integer atau character abjad. Array List Stack Queue Tree Graph
Contoh kasus, misalnya persoalan yang mengharuskan menyimpan data nama mahasiswa se-
Fakultas Informatika. Maka penyelesaiannya dapat menggunakan dua pendekatan.
o Tanpa Array
Deklarasi variable string sebanyak jumlah mahasiswa, ribuan?
o Dengan Array
Deklarasi sebuah variabel dengan tipe array of string berkapasitas sebanyak jumlah mahasiswa.
10
ARRAY :: Ilustrasi dan Deklarasi
Ilustrasi: T2
• T1 dan T2 adalah Array Raden 0
• Jumlah elemen T1 = 5, Indeks = 1, 2, 3, 4, 5 T1 30 12 17
King 1
• Jumlah elemen T2 = 3, Indeks = 0, 1, 2 1 2 3 4 5
Sultan 2
• Tipe T1 : Array of Integer, dan Tipe T2 : Array of String
Deklarasi array:
<nama_variable> : array [start..end] of <data_type>
yang mana indeks array adalah dari start hingga end
Contoh:
T1 : array [1..5] of integer
T2 : array [0..2] of string
11
ARRAY :: Contoh
Pseudocode GoLang
1 program contoh_array package main
2 kamus import "fmt"
3 days : array [0..6] of string
4 i : integer func main(){
5 algoritma var days[7]string // 7 elemen
6 days <- "senin" {Salah} var i int
7 days[0] <- "senin" {Benar} days[0] = "senin"
8 input(days[1]) {Benar} fmt.Scan(&days[1])
9 for i <- 2 to 6 do for i = 2; i <= 6; i++ {
10 input(days[i]) {Benar} fmt.Scan(&days[i])
11 days[9] <- "minggu" {Salah} }
12 output(days) {Salah} fmt.Println(days[1], days[5])
13 output(days[1],days[5]) {Benar} }
14 endprogram
12
Contoh Soal☺
13
Contoh 1: Balok
Buatlah program yang digunakan untuk menampilkan luas dan volume balok.
Deklarasikan balok sebagai tipe bentukan, dan gunakan subprogram untuk
perhitungan luas dan volume.
Masukan terdiri dari tiga bilangan yang menyatakan panjang, lebar dan tinggi
balok.
Keluaran berupa dua bilangan yang menyatakan luas selimut dan volume dari
balok.
Catatan: data balok adalah panjang, lebar, tinggi, volume dan luas selimut.
14
Solusi 1: Balok
1 program Contoh_Balok procedure hitungLuas(in/out x : balok)
2 kamus {I.S. terdefinisi balok x
3 type balok< F.S. field luas dari x berisi luas selimut balok}
4 p,l,t : integer algoritma
5 volume, luas : integer blk.luas <- 2* (x.p * x.l + x.p * x.t + x.l * x.t)
6 > endprocedure
7 bb : balok
8 algoritma procedure hitungVolume(in/out y : balok)
9 input(bb.p, bb.l, bb.t) {I.S. terdefinisi balok y
10 hitungLuas(bb) F.S. field volume dari y berisi volume balok}
11 hitungVolume(bb) algoritma
12 output(bb.luas, bb.volume) y.volume <- y.p * y.l * y.t
13 endprogram endprocedure
15
Contoh 2: Teman Kelas
Buatlah program yang digunakan untuk menyimpan nama teman-teman yang
sekelas dengan anda saat ini.
Masukan terdiri dari beberapa baris. Baris pertama adalah bilangan bulat N yang
menyatakan banyaknya teman. N baris berikutnya adalah nama teman-teman
anda.
Keluaran berupa N baris nama teman-teman yang telah anda tulis.
Catatan: Gunakan array dan subprogram untuk menyimpan dan menampilkan
data teman.
16
Solusi 2: Teman Kelas
1 procedure tulis(in/out A:teman, in M : procedure cetak(in A:teman, M:integer)
2 integer) {I.S. terdefinisi array A yang berisi M
3 {I.S. terdefinisi bilangan bulat M string
4 F.S. array A berisi M string dari F.S. menampilkan isi array A ke layar
5 masukan} monitor}
6 kamus kamus
7 j : integer j : integer
8 algoritma algoritma
9 for j <- 0 to M-1 do for j <- 0 to M-1 do
10 input(A[j]) output(A[j])
11 endfor endfor
12 endprocedure endprocedure
13 program Contoh_TemanKelas
14 kamus
15 type teman:array[0..100] of string {asumsi kapasitas 100}
16 t : teman; N : integer
17 algoritma
18 input(N)
19 tulis(t, N)
20 cetak(t, N)
21 endprogram 17
Latihan Soal☺
18
Soal 1 : Jarak Titik
Sebuah program digunakan untuk menghitung jarak antara dua buah titik. jarak antara titik (𝑎, 𝑏) dan
(𝑐, 𝑑) adalah.
𝑗𝑎𝑟𝑎𝑘 = 𝑎−𝑐 2 + 𝑏−𝑑 2
Masukan berupa 4 nilai yang menyatakan sumbu x dan y dari masing-masing titik.
Keluaran sebuah bilangan real yang menyatakan jarak antara 2 titik tersebut
Buatlah dengan melengkapi dan menggunakan subprogram berikut
1 function jarak(P1, P2 : titik) -> real
2 {diterima nilai sumbu dari titik P1 dan P2, untuk mengembalikan jarak dari P1
dan P2}
3 function akar(x : real) -> real
4 {diterima nilai suatu x untuk mengembalikan akar kuadrat dari x, fungsi ini
terdefinisi dan tinggal digunakan saja}
19
Soal 2: Persegi
Buatlah program dengan ketentuan sebagai berikut ini:
Masukan terdiri dari beberapa nilai yang menyatakan properti dari suatu bidang persegi panjang. Dua bilangan bulat
pertama adalah panjang dan lebar, sedangkan nilai ketiga adalah string yang menyatakan warna.
Keluaran berupa dua bilangan yang menyatakan luas dan keliling dari persegi panjang tersebut.
Program dibuat dengan melengkapi procedure isiData dan procedure hitung yang digunakan untuk mengisi dan
melengkapi isi dari tipe bentukan yang sudah dideklarasikan.
type rectangle <
length, width : integer
color : string
property : geometry >
type geometry < area, perimeter : integer>
procedure isiData(in/out persegi:reactangle)
{I.S. data persegi telah siap pada piranti masukan (length, width dan color)
F.S. length, width dan color dari persegi telah terisi dari masukan}
procedure hitung(in/out persegi:reactangle)
{I.S. terdefinisi data persegi (length, width dan color)
F.S. area dan perimeter dari persegi berisi luas dan keliling dari persegi} 20
Soal 3 : Palindrom
Buatlah program dengan spesifikasi berikut ini!
a. Sebuah tipe array of integer yang berkapasitas 256!
b. Buatlah procedure untuk pengisian array tersebut dengan sejumlah n bilangan.
c. Buatlah procedure untuk reverse isi dari array!
d. Buatlah function untuk mengecek apakah suatu array memiliki pola palindrom! Nilai
elemen membentuk pola simetris.
Contoh A = [10, 20, 30, 20, 10], B = [15, 75, 75, 15] dan C = [100]
e. Buatlah program utamanya untuk menguji tiga subprogram yang telah dibuat
tersebut!
21
Soal 4 : Pertandingan Bola
Sebuah program digunakan untuk menyimpan jumlah kemenangan pertandingan bola 2 tim
dalam setiap tahunnya.
Masukan terdiri dari 2 baris. Baris pertama adalah kumpulan bilangan bulat yang menyatakan gol-
gol yang diperoleh tim 1, sedangkan baris kedua adalah kumpulan gol yang diperoleh tim 2.
Masukan pada setiap barisnya berakhir apabila bilangan yang diberikan adalah negatif.
Keluaran berupa 2 bilangan yang menyatakan rata-rata kemenangan dari 2 tim tersebut setiap
tahunnya.
procedure inputData(in/out t:tabGol, n: integer)
{I.S. data kemenangan suatu tim telah siap pada piranti masukan
F.S. t berisi n data kemenangan suatu tim.}
function rataan(t: tabGol, n : integer) -> real
{diberikan array t yang berisi n data kemenangan, untuk mengembalikan rata-rata
kemenangan}
program PertandinganBola
{program untuk menyimpan data kemenangan 3 tim bola, dan menampilkan rata-rata
kemenangan setiap timnya}
22
Soal 5 : Nasabah (1)
a. Buatlah sebuah tipe bentukan nasabah digunakan untuk menyimpan data nasabah (id nasabah, nama
nasabah, nama bank dan nomor rekening) suatu bank di Indonesia.
b. Buatlah sebuah tipe array tabNasabah dengan kapasitas 2022 orang nasabah.
c. Lengkapi subprogram berikut ini sesuai dengan spesifikasi yang diberikan!
procedure addNasabah(in/out T:tabNasabah, N:integer)
{I.S. terdefinisi array T yang berisi data sejumlah N nasabah
F.S. array T bertambah 1 orang nasabah baru, tampilkan "data penuh" apabila array
telah penuh}
procedure cetak(in T:tabNasabah, N:integer, X:string)
{I.S. terdefinisi array T yang berisi data sejumlah N nasabah, dan string X
F.S. menampilan data nasabah yang menabung pada bank X}
23
Soal 5 : Nasabah (2)
d. Buatlah sebuah main program berdasarkan penjelasan pada poin e dan f.
e. Tambahkan 10 data nasabah (gunakan looping dengan 10 iterasi dan data dummy/sembarang)
f. Tampilkan data nasabah pada bank tertentu (misalnya pada contoh Mandiri).
Masukan JQHK Elsa BNI 58541
UTBM Anna Mandiri 46735
VUWR Eunice Mandiri 28997
YRRZ Maul BJB 104022
HPTT Rayan BRI 59046
NWPY Bardot Nagari 70739
ECJA Sultan Mandiri 31953
XLYA James BCA 581710
OBCP Hansley BJB 741012
ATIS Cromwell BNI 33795
Mandiri
Keluaran Kode: UTBM , Nasabah: Anna , Bank: Mandiri , Rek: 46735
Kode: VUWR , Nasabah: Eunice , Bank: Mandiri , Rek: 28997
Kode: ECJA , Nasabah: Sultan , Bank: Mandiri , Rek: 31953
24
Terima Kasih
Tim Dosen Algoritma
Pemrograman
25