Anda di halaman 1dari 10

Praktikum Struktur Data

Modul 2 - Review Algoritma #2


Senin, 25 Maret 2024

1 Tujuan
1. Mahasiswa mengulang kembali konsep dasar Algoritma Pemrograman, antara lain :

(a) List 2D, Akses anggota di dalam List 2D


(b) Dictionary, Akses anggota di dalam dictionary

2. Mahasiswa memahami penggunaan dan implementasi dengan menggunakan bahasa pemrograman


Python akan List 2D dan Dictionary

2 Ketentuan
Kerjakan semua soal dalam modul ini baik Tugas Pra-Praktikum maupun Tugas Praktikum, dengan keten
tuan sebagai berikut :

1. Semua jawaban ditulis dalam bentuk ipynb format di dalam Google Colab dan print pdf dari file
tersebut, dan tiap jawaban diberikan heading yang berisi nomor soal, dan soal dituliskan kembali

2. Setiap nomor dikerjakan dalam dua cell berbeda, cell pertama berisi nomor soal (dalam bentuk
heading) dan soal, serta cell kedua adalah jawaban

3. Submit link collaboratory di dalam Google Classroom dan file pdfnya, sesuai dengan waktu yang
telah ditentukan

4. Berikan Nama File berupa dengan format : NPM ModulXX PraPraktikum dan NPM ModulXX Praktikum, misalkan
230411100000 Modul01 PraPraktikum.pdf

3 Tugas Pra-Praktikum
Buat program dengan menggunakan bahasa pemrograman Python untuk soal-soal berikut ini:

1. Buat fungsi create list(n), yaitu fungsi untuk menghasilkan suatu list, dimana n adalah banyaknya
anggota dalam list, dan anggota list merupakan inputa dari user

2. Buat fungsi add list(a, b), yaitu fungsi untuk menambahkan dua buah list yaitu a dan b, dimana
ukuran dari dua buah list tersebut haruslah sama

3. Buat fungsi rev list(a), yaitu fungsi untuk membalik anggota-anggota di dalam list a, misalkan a = [1,
2, 3, 4, 5], maka return value dari fungsi tersebut adalah [5, 4, 3, 2, 1]

1
4 Materi - Review Algoritma
4.1 Built-in Data Structure
4.1.1 List 2D
Pada materi sebelumnya, telah dikenal bahwa list merupakan salah satu struktur data yang memiliki
beber apa elemen atau anggota list (dapat berbeda tipe data ataupun tipe data yang sejenis). Setiap
elemen atau anggota ini dipisahkan oleh ‘,’, dan anggota-anggota list ini diapit oleh tanda kurung siku
(kurung buka dan kurung tutup), seperti contoh list berikut ini:
numbers = [4, 7, 1, 9]

chars = [‘r,s, w]
data = [‘nama, 100,surabaya, 0.5]

Contoh list tersebut adalah contoh list 1D, dimana pada list tersebut hanya ada satu pasangan kurung
siku, dan untuk mengakses anggota pada list hanya dibutuhkan satu buah indeks saja, seperti contoh
berikut ini:
1 numbers =[4 ,7 ,1 ,9]
2 total =0
3 for i in range ( len ( numbers )):
4 total += numbers [i]
5 print ( total )

List 2D (D=Dimensi), digunakan jika dibutuhkan tempat penyimpanan data dimana cara
pengaksesannya membutuhkan dua buah nilai indeks. List 2D ini dapat dibayangkan seperti ruang kelas
di dalam gedung bertingkat, maka untuk mengakses ruangan tersebut dibutuhkan dua buah informasi
penting yaitu no lantai dan no ruangan, seperti yang diilustrasikan pada Gambar 1.

Gambar 1: Ilustrasi Penyimpanan data 2D

Contoh list 2D adalah sebagai berikut:


numbers = [[2, 3, 4][1, 2, 10], [4, 5, 6]]

kota = kota = [[Surabaya, Sidoarjo, Jombang], [Kamal, Bangkalan, Sampang, P amekasan], [Jogjakarta, Sema

Dapat dilihat pada contoh tersebut, maka list 2D ini memiliki dua pasang kurung siku (terdapat list di
dalam list), dan untuk mengakses tiap anggota di dalam list ini, dibutuhkan dua buah indeks. Indeks
pertama menunjukkan list utama, sedangkan indeks kedua menunjukkan sub-list. Seperti halnya list 1D,
maka indeks pada list 2D ini dimulai dari nol. Contoh untuk mengakses List 2D ini dapat dilihat pada
Program berikut ini:
1 kota =[[ ’Surabaya ’,’Sidoarjo ’,’Jombang ’] ,[ ’Kamal ’,’Bangkalan ’,’Sampang ’,’Pamekasan ’] ,[ ’ Jogjakarta ’,’Semarang ’]]
2 for i in range ( len ( kota )) :
3 for j in range ( len ( kota [ i ]) ):
4 print ( kota [i ][ j ])
5 print (’’)

2
List 2D ini sering digunakan terutama untuk representasi data matriks dua dimensi, misalkan terdapat
matriks berikut ini:
 11 21
 

4 1 6
3078

12 9 5
3 7 10

Pada matriks tersebut terdapat 5 baris dan 3 buah kolom, maka ukuran list utama pada list2D yang akan
dibentuk juga sama dengan jumlah baris yaitu 5, dan ukuran sub list sama dengan jumlah kolom, yaitu 3.
Untuk mengakses indeks anggota dari list2D ini, indeks pertama menunjukkan baris ke-, sedangkan
indeks kedua menunjukkan kolom ke-, seperti pada program berikut ini:
1matriks =[[4 ,1 ,6] ,[3 ,0 ,7] ,[8 ,12 ,9] ,[5 ,3 ,7] ,[10 ,11 ,21]]
2 for bar in range ( len ( matriks ) ):
3 temp =’’
4 for kol in range ( len ( matriks [ bar ]) ):
5 temp =’%s %4d’ %( temp , matriks [ bar ][ kol ])
6 print ( temp )
7 print (’ ’)

Seperti halnya pada list 1D, maka untuk menambah data pada list 2D ini dapat menggunakan method
append yang sudah disediakan oleh pyhton, seperti contoh berikut ini :
1 baris =2
2 kolom =3
3 matriks =[]
4 for i in range ( baris ):
5 temp =[]
6 for j in range ( kolom ):
7 strin =’Data matriks [%d ,%d] : ’ %( i ,j)
8 data = input ( strin )
9 temp . append ( int( data ) )
10 matriks . append ( temp )
11 print ( matriks )

4.1.2 Dictionaries
Struktur data dictionaries adalah struktur data sepertinya halnya list yang memiliki beberapa anggota
(bisa berupa tipe data yang berbeda-beda), hanya saja index dari dictionaries ini tidak hanya berupa
integer, tetapi bisa berupa float, string, character, dan lain-lain. Jika pada list, anggota-anggotanya diapit
oleh pasangan kurung siku, maka pada dictionary ini diapit oleh pasangan kurung kurawal, seperti contoh
berikut ini :

\#cara pertama
dataDict={}
dataDict[’apel’]=’apple’
dataDict[’semangka’]=’watermelon’
dataDict[’anggur’]=’grape’
dataDict[’stroberi’]=’strawberry’
dataDict[’nanas’]=’pineapple’
dataDict[’pisang’]=’banana’
dataDict[’mangga’]=’mango’
for fruit in dataDict:
print(fruit, ’ : ’,dataDict[fruit])
print(dataDict)
\# cara kedua
numbers={‘one’ : ‘satu’, ‘two’:’dua’, ‘three’:’tiga’}
Indeks dari dictionary dikenal dengan istilah key, sedangkan anggota dari indek tersebut disebut den
gan values. sehingga anggota dari elemen tersebut disebut dengan key value pairs Pada contoh variabel

3
dataDict diatas, maka keys dari dictionary tersebut adalah ‘apel’, ‘semangka’,
‘anggur’,’stroberi’,’nanas’,’pisang’,’mangga’. Sedangkan values dari data dictionary tersebut adalah ‘apple’,
‘watermelon’, ‘grape’, ‘straberry’, ‘pineapple’, ‘banana’, ‘mango’. Untuk mendapatkan nilai keys atau values dari suatu
data dictionary dapat menggunakan method yang sudah disediakan oleh bahasa pemrograman python, dan untuk
setiap values dapat diakses melalui masing-masing keys seperti contoh program berikut ini:
1 dataDict ={}
2 dataDict [’apel ’]= ’apple ’
3 dataDict [’semangka ’]= ’watermelon ’
4 dataDict [’anggur ’]= ’grape ’
5 dataDict [’stroberi ’]= ’strawberry ’
6 dataDict [’nanas ’]= ’pineapple ’
7 dataDict [’pisang ’]= ’banana ’
8 dataDict [’mangga ’]= ’mango ’
9 numbers ={ ’one ’ : ’satu ’, ’two ’:’dua ’, ’three ’:’tiga ’}
10
11 print (’keys :’ , dataDict . keys () )
12 print (’values :’, dataDict . values () )
13
14 for k in numbers . keys () :
15 print ( numbers [ k ])

Kelebihan struktur data dictionaries ini dibandingkan dengan list terletak pada key yang dimiliki oleh
dictionaries, yang tidak harus berupa integer, akan tetapi dapat berupa string, character, atau yang lain.
Sehingga jika suatu permasalahan membutuhkan key bukan berupa integer, maka struktur data ini
sangatlah tepat. Contoh penggunaan dictionary ini adalah untuk menyimpan sparse matrix, pada matriks
ini, banyak elemen yang bernilai nol, sehingga akan tidak efisien jika data ini direpresentasikan dalam
bentuk list, seperti contoh berikut ini.
7000
 0010
 000
0 0 
040  
0400

Matriks tersebut adalah matriks yang berukuran 4 x 5, oleh karena itu terdapat 20 anggota yang dapat
diisi atau disimpan dalam matriks tersebut. Hanya saja, hanya 4 data saja yang berisi nilai bukan nol,
sedangkan yang lainnya bernilai nol. Oleh karena itu, jika disimpan dengan menggunakan struktur data
list, banyak indeks yang berisi nilai nol, hal ini menjadi tidak efisien. Sehingga dibutuhkanlah struktur data
berupa dictionaries yang hampir menyerupai list, hanya saja key yang terdapat pada dictionaries tidak
harus berupa integer dan berurutan. Dengan dictionaries ini, hanya anggota yang bernilai tidak nol saja
yang akan disimpan. Hanya saja karena matriks yang akan dibuat adalah matriks dua dimensi, maka
dibutuhkanlah pasangan key yang menyatakan baris dan kolom suatu matriks, dan key ini tidak boleh
dirubah atau harus bersifat immutable, sehingga data berbentuk tuple akan digunakan sebagai key dari
data dictionary ini, seperti pada contoh berikut ini:
1 mat ={}
2 num = int ( input (’Jumlah elemen = ’))
3 for i in range ( num ):
4 bar = int ( input (’baris ke - ? ’))
5 kol = int ( input (’kolom ke - ? ’))
6 data = int ( input (’data [’+ str ( bar )+’,’+str( kol ) +’]= ’))
7 mat [ bar , kol ]= data
8 print ( mat )

Untuk mengetahui apakah sebuah key terdapat pada suatu dictionary, dapat menggunakan method
get pada dictionary. Jika key terdapat pada dictionary tersebut, maka return value akan berupa value yang
terdapat pada key, jika key tidak terdapat dictionary tersebut, maka return value adalah None. Berikut
contoh penggunaan method get pada dictionary untuk mengetahui keberadaan suatu key:

print(mat.get((1,4)))
print(mat.get((4,4)))

4
5 Tugas Praktikum
Buat program dengan menggunakan bahasa pemrograman Python untuk soal-soal berikut
ini: 1. Matrix 2D

(a) Buat fungsi create_matrix(rows,cols) untuk membuat matriks 2D dengan jumlah baris se
banyak rows dan jumlah kolom sebanyak cols, dengan return value berupa matriks yang sudah
dibuat, seperti yang dicontohkan pada Gambar 2a atau Gambar 2b
(b) Buat fungsi display_matrix(mat) untuk menampilkan list 2D yang sudah dibuat sehingga list
tersebut dapat memvisualisasikan matriks 2D seperti yang dicontohkan pada Gambar 2a atau
Gambar 2b.
(c) Buat fungsi untuk menjumlahkan dua buah matriks add_matrix(a,b), yaitu matriks a dan ma
triks b, dengan syarat kedua buah matriks memiliki ukuran yang sama, seperti yang
dicontohkan pada Gambar 2c atau Gambar 2d
(d) Buat fungsi untuk mengalikan dua buah matriks mul_matrix(a,d, yaitu matriks a dan matriks b,
dengan syarat perkalian matriks (jumlah kolom matriks pertama sama dengan jumlah baris
matriks kedua), seperti yang dicontohkan pada Gambar 2e atau Gambar 2f

2. Sparse Matrix

(a) Buat fungsi create_sparse(rows,cols untuk membuat sparse matriks 2D (hanya menyimpan
nilai yang bukan nol) dengan jumlah baris sebanyak rows dan jumlah kolom sebanyak cols,
dengan return value berupa sparse matriks yang sudah dibuat, seperti yang dicontohkan pada
Gambar 3a atau Gambar 3b
(b) Buat fungsi add_sparse(mat1,mat2 untuk menjumlahkan dua buah matriks sparse, dengan ter
dapat ketentuan pengecekan ukuran matriks, sperti yang dicontohkan pada Gambar 4a atau
Gambar 5a
(c) Buat fungsi mul_sparse(mat1,mat2 untuk menjumlahkan dua buah matriks sparse, dengan ter
dapat ketentuan pengecekan ukuran matriks, sperti yang dicontohkan pada Gambar ?? atau
Gambar 5b

Selamat Mengerjakan, Selalu Latihan, Jujur


harus dimulai kapanpun, Bertanya jika kurang
mengerti

Struktur Data - 2024


Teknik Informatika
Universitas Trunojoyo Madura
5

(b)
(a)

(d)

(c)
(f)
(e)

Gambar 2: Matriks 2 Dimensi

(a)
(b)

Gambar 3: Pembuatan sparse matrix

7
(b) (a)

Gambar 4: Penjumlahan Sparse Matrix

8
(b) (a)

Gambar 5: Perkalian Sparse Matrix

Anda mungkin juga menyukai