0% menganggap dokumen ini bermanfaat (0 suara)
236 tayangan58 halaman

1 - Page

Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan masalah. Dokumen ini membahas konsep algoritma dan jenis-jenisnya seperti pencarian, pengurutan, graf, dan rekursif. Flowchart dan pseudocode digunakan untuk merepresentasikan algoritma secara visual dan tekstual.

Diunggah oleh

Adriel Acang
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
236 tayangan58 halaman

1 - Page

Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan masalah. Dokumen ini membahas konsep algoritma dan jenis-jenisnya seperti pencarian, pengurutan, graf, dan rekursif. Flowchart dan pseudocode digunakan untuk merepresentasikan algoritma secara visual dan tekstual.

Diunggah oleh

Adriel Acang
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 58

1|Page

BAB III

ALGORITMA DAN PEMROGRAMAN DASAR


Algoritma dan pemrograman adalah keterampilan dasar yang diperlukan untuk menjadi
seorang pengembang perangkat lunak yang sukses. Dalam dunia teknologi informasi,
algoritma digunakan untuk menyelesaikan masalah sedangkan pemrograman digunakan
sebagai proses menerjemahkan algoritma ke dalam bahasa pemrograman. Dalam materi ini,
akan dibahas konsep dasar algoritma dan pemrograman.

A. Konsep Dasar Algoritma

Algoritma adalah urutan langkah-langkah logis yang digunakan untuk menyelesaikan suatu
masalah atau tugas dengan cara yang sistematis dan efisien.

Dalam pembuatan program, algoritma digunakan sebagai panduan untuk menyelesaikan


masalah atau tugas tertentu. Algoritma seringkali digambarkan dalam bentuk diagram alir
(flowchart) atau pseudocode, dan kemudian diimplementasikan dalam bahasa
pemrograman.

Sebuah algoritma harus memenuhi beberapa kriteria untuk dianggap baik, yaitu:

1. Benar: Algoritma harus menghasilkan hasil yang benar atau sesuai dengan tujuannya.

2. Efisien: Algoritma harus bekerja dengan cepat dan menggunakan sumber daya yang
sedikit.

3. Jelas: Algoritma harus mudah dipahami dan diikuti oleh orang lain.

4. Terdapat masukan (input): Algoritma harus menerima masukan atau data yang dapat
diproses.

5. Terdapat keluaran (output): Algoritma harus menghasilkan keluaran atau hasil yang
berguna.

6. Tidak ambigu: Algoritma harus jelas dan tidak mengandung arti ganda atau tidak jelas.

7. Terdefinisi dengan baik: Algoritma harus memiliki langkah-langkah yang didefinisikan


dengan baik dan tidak membingungkan.

2|Page
8. Terbukti: Algoritma harus terbukti secara matematis atau logis untuk memberikan hasil
yang benar.

9. Bersifat umum: Algoritma harus dapat diterapkan pada berbagai masalah dan tidak
terbatas pada kasus-kasus khusus.

Dengan memenuhi kriteria-kriteria tersebut, algoritma akan dianggap baik dan dapat
digunakan secara luas untuk menyelesaikan berbagai jenis masalah.

Ada banyak jenis algoritma yang digunakan dalam komputer dan pemrograman. Berikut
beberapa di antaranya:

1. Algoritma Pencarian

algoritma yang digunakan untuk mencari elemen tertentu dalam struktur data, seperti
Array, List, atau Tree. Beberapa contoh algoritma pencarian adalah Linear Search,
Binary Search, dan Interpolation Search.

2. Algoritma Pengurutan

algoritma yang digunakan untuk mengurutkan elemen-elemen dalam struktur data.


Beberapa contoh algoritma pengurutan adalah Bubble Sort, Insertion Sort, Quick Sort,
dan Merge Sort.

3. Algoritma Graf

algoritma yang digunakan untuk memecahkan masalah yang melibatkan graf atau
jaringan. Beberapa contoh algoritma graf adalah Breadth-First Search, Depth-First
Search, Dijkstra’s Algorithm, dan Bellman-Ford Algorithm.

4. Algoritma Rekursif

algoritma yang memecahkan masalah dengan cara memecahnya menjadi sub-masalah


yang lebih kecil. Beberapa contoh algoritma rekursif adalah Factorial, Fibonacci, dan
Tower of Hanoi.

5. Algoritma Greedy

algoritma yang memilih solusi yang terbaik pada setiap langkah, tanpa
mempertimbangkan dampak jangka panjangnya. Beberapa contoh algoritma Greedy
adalah Dijkstra’s Algorithm, Huffman Coding, dan Kruskal’s Algorithm.

3|Page
6. Algoritma Divide and Conquer

algoritma yang memecahkan masalah dengan membaginya menjadi sub-masalah yang


lebih kecil, menyelesaikan sub-masalah secara terpisah, dan kemudian menggabungkan
solusinya untuk memecahkan masalah asli. Beberapa contoh algoritma Divide and
Conquer adalah Merge Sort, Quick Sort, dan Binary Search.

7. Algoritma Dinamik

algoritma yang memecahkan masalah dengan memecahkannya menjadi sub-masalah


yang lebih kecil dan menyimpan solusi sub-masalah untuk digunakan di masa depan.
Beberapa contoh algoritma dinamik adalah Fibonacci Sequence, Knapsack Problem,
dan Shortest Path.

8. Algoritma Backtracking

algoritma yang mencoba semua kemungkinan solusi dan mengulangi langkah-langkah


yang salah sampai menemukan solusi yang tepat. Beberapa contoh algoritma
Backtracking adalah N-Queens Problem, Sudoku, dan Maze Solving.

Itu hanya beberapa contoh jenis algoritma yang ada. Terdapat berbagai jenis algoritma
lainnya, yang digunakan dalam berbagai bidang seperti kecerdasan buatan, pemrosesan
citra, pengenalan suara, dan lainnya.

Algoritma adalah urutan langkah-langkah logis yang harus diikuti untuk menyelesaikan
masalah tertentu. Struktur utama dari sebuah algoritma meliputi:

1. Urutan (Sequence) Struktur ini mengacu pada urutan langkah-langkah yang harus
diikuti dalam algoritma. Setiap langkah dieksekusi secara berurutan dari atas ke bawah
sampai algoritma selesai. Struktur ini merupakan dasar dari hampir semua algoritma.

Contoh:

• Buka lembar kerja Excel

• Klik pada cell A1

• Ketik judul kolom pada baris pertama

• Klik pada cell A2

4|Page
• Masukkan data pada baris kedua

• Ulangi langkah 4 dan 5 untuk semua data yang ingin dimasukkan

• Simpan lembar kerja dan keluar dari Excel

2. Pilihan (Selection) Struktur ini digunakan ketika algoritma harus memilih antara
beberapa opsi yang berbeda. Pilihan ini dibuat berdasarkan kondisi yang diberikan. Jika
kondisi terpenuhi, maka algoritma akan melanjutkan ke langkah selanjutnya. Jika tidak
terpenuhi, maka algoritma akan melompati langkah tersebut dan melanjutkan ke
langkah selanjutnya.

Contoh:

• Jika nilai x > 0, maka tampilkan "x adalah bilangan positif"

• Jika nilai x = 0, maka tampilkan "x adalah nol"

• Jika nilai x < 0, maka tampilkan "x adalah bilangan negatif"

3. Perulangan (Iteration) Struktur ini digunakan ketika algoritma perlu mengulang


beberapa langkah secara berulang-ulang sampai suatu kondisi terpenuhi. Kondisi ini
dapat berupa jumlah pengulangan yang telah ditentukan atau kondisi tertentu yang
harus dipenuhi.

Contoh:

• Set total = 0

• Ulangi langkah-langkah berikut sampai semua data telah diproses:

• Masukkan data ke dalam variabel x

• Tambahkan nilai x ke dalam variabel total

• Tampilkan nilai total

Dengan memahami ketiga struktur utama ini, kita dapat membuat algoritma yang lebih
kompleks dan efisien untuk menyelesaikan berbagai macam masalah.

Dalam kehidupan sehari-hari, kita sudah melakukan penyusunan algoritma untuk


menyelesaikan permasalahan atau tantangan yang di hadapi. Sebagai contoh, pada saat di
minta untuk membuat telur dadar. Sebelum membuat algoritmanya, kita perlu

5|Page
mendefinisikan masukan (input) dan luaran (output) terlebih dahulu, dimana input berupa
telur mentah, dan output berupa telur dadar yang sudah matang.

Susunan algoritmanya sebagai berikut:

1. Nyalakan api kompor


2. Tuangkan minyak ke dalam wajan
3. Pecahkan telur ayam ke dalam mangkok
4. Tambahkan garam secukupnya
5. Aduk campuran telur dan garam
6. Tuang adonan telur ke dalam wajan
7. Masak telur hingga matang

Berikut adalah contoh pseudocode untuk


menghitung nilai rata-rata dari tiga bilangan:
1. Mulai
2. Masukkan bilangan pertama
3. Masukkan bilangan kedua
4. Masukkan bilangan ketiga
5. Jumlah bilangan pertama + bilangan
kedua + bilangan ketiga
6. Rata-rata  Jumlah / 3
7. Tampilkan "Rata-rata dari 3 bilangan
adalah ", Rata-rata
8. Selesai

6|Page
Flowchart dan pseudocode adalah dua cara yang berbeda untuk merepresentasikan
algoritma. Berikut adalah perbedaan antara keduanya:

Flowchart adalah diagram yang terdiri dari bentuk-bentuk geometris seperti kotak, oval,
dan panah yang merepresentasikan langkah-langkah dalam algoritma. Sementara itu,
pseudocode adalah representasi teks dari algoritma yang ditulis dalam bahasa yang hampir
mirip dengan bahasa pemrograman.

Flowchart memberikan representasi visual yang jelas dan mudah dimengerti, sehingga
lebih cocok untuk menggambarkan algoritma yang kompleks secara visual. Sementara
pseudocode memberikan representasi yang lebih terperinci dan memungkinkan penggunaan
bahasa yang lebih dekat dengan bahasa pemrograman, sehingga lebih mudah diterjemahkan
ke dalam bahasa pemrograman yang sebenarnya.

Dalam banyak kasus, penggunaan flowchart dan pseudocode dapat digunakan


bersamaan untuk merepresentasikan algoritma. Flowchart digunakan untuk memberikan
representasi visual dan mempermudah pemahaman algoritma secara umum, sementara
pseudocode memberikan detail yang lebih terperinci dan mendekati bahasa pemrograman
yang sebenarnya. Berikut adalah simbol-simbol yang sering digunakan dalam proses
pembuatan flowchart.

7|Page
Contoh Sebuah algoritma untuk mencari bilangan terbesar dari dua bilangan.

Berikut adalah algoritma untuk menyelesaikan masalah tersebut :

1. Ambil dua bilangan

2. Bandingkan kedua bilangan

3. Jika bilangan pertama lebih besar dari bilangan kedua, cetak bilangan pertama

4. Jika bilangan kedua lebih besar dari bilangan pertama, cetak bilangan kedua

5. Jika kedua bilangan sama besar, cetak salah satu bilangan

Buatkan algoritma tersebut dalam bentuk pseudacode dan flowchart!

Setelah memahami algoritma buatkan contoh algoritma sederhana berikut!

1.Algoritma untuk menghitung luas persegi panjang!

2.Algoritma untuk menghitung nilai rata-rata dari tiga bilangan

B. Konsep Dasar Pemrograman.

1. Definisi Pemrograman

Pemrograman adalah suatu kegiatan yang berkaitan dengan penulisan kode atau
program komputer untuk melakukan suatu tugas atau memecahkan suatu masalah.
Pemrograman melibatkan penggunaan bahasa pemrograman, yaitu suatu bahasa yang
digunakan untuk menginstruksikan komputer untuk melakukan tugas tertentu. Tujuan
utama pemrograman adalah untuk membuat program komputer yang efisien, efektif,
dan mudah dipahami oleh pengguna atau pengembang lainnya. Pemrograman dapat
digunakan untuk berbagai macam keperluan, seperti pengembangan aplikasi, game,
website, atau alat-alat lainnya. Dalam pemrograman, seorang programmer harus
memiliki pemahaman yang baik tentang logika, algoritma, dan struktur data untuk
dapat membuat program yang baik dan efektif.

8|Page
2. Jenis-jenis Bahasa Pemrograman
a.) Bahasa pemrograman tingkat rendah adalah bahasa pemrograman yang lebih
dekat dengan bahasa mesin atau bahasa biner (0 dan 1). Bahasa pemrograman
tingkat rendah ini biasanya digunakan untuk mengembangkan sistem operasi,
driver perangkat keras, dan program yang memerlukan performa yang sangat
tinggi.Dua jenis bahasa pemrograman tingkat rendah yang umum digunakan
adalah bahasa mesin dan assembly language:
- Bahasa mesin: Bahasa mesin adalah bahasa yang digunakan oleh
komputer untuk memproses instruksi yang diberikan. Bahasa mesin
terdiri dari kode biner, yaitu rangkaian angka 0 dan 1 yang mewakili
instruksi komputer.
- Assembly language: Bahasa assembly adalah bahasa pemrograman
tingkat rendah yang menggunakan instruksi yang lebih mudah dipahami
oleh manusia. Instruksi dalam bahasa assembly diterjemahkan menjadi
bahasa mesin oleh assembler. Assembly language lebih mudah dipahami
oleh manusia daripada bahasa mesin karena menggunakan mnemonik,
yaitu kata-kata yang dapat diingat dan mudah dipahami, seperti MOV
(move), ADD (addition), SUB (substraction), dan sebagainya.
b.) Bahasa pemrograman tingkat tinggi ini umumnya digunakan untuk
pengembangan aplikasi, web, game, dan sebagainya. Berikut adalah beberapa
contoh bahasa pemrograman tingkat tinggi yang umum digunakan:

✓ Java: Bahasa pemrograman berorientasi objek yang umum digunakan untuk


membuat aplikasi berbasis desktop, web, dan mobile.

✓ Python: Bahasa pemrograman yang mudah dipelajari dan digunakan untuk


berbagai keperluan, seperti pengembangan web, data science, kecerdasan
buatan, dan pengembangan game.

✓ C++: Bahasa pemrograman yang sangat populer untuk pengembangan


sistem operasi, game, dan aplikasi desktop.

✓ JavaScript: Bahasa pemrograman yang digunakan untuk membuat aplikasi


web interaktif dan dinamis.

✓ PHP: Bahasa pemrograman yang digunakan untuk mengembangkan situs


web dinamis dan aplikasi web.

9|Page
✓ Ruby: Bahasa pemrograman yang digunakan untuk pengembangan web,
dan banyak digunakan oleh pengembang web yang menggunakan
framework Ruby on Rails.

✓ Swift: Bahasa pemrograman yang digunakan untuk pengembangan aplikasi


mobile untuk sistem operasi iOS dan macOS.

✓ Objective-C: Bahasa pemrograman yang digunakan untuk pengembangan


aplikasi mobile untuk sistem operasi iOS dan macOS sebelum Swift.

✓ Kotlin: Bahasa pemrograman yang digunakan untuk pengembangan


aplikasi Android dan aplikasi web.

✓ Go: Bahasa pemrograman yang dikembangkan oleh Google untuk membuat


aplikasi dengan kecepatan tinggi dan skalabilitas yang baik.

2. Dasar Pemrograman

Berikut beberapa hal dasar yang perlu diperhatikan sebelum membuat sebuah program:

• Struktur Program: Program harus memiliki struktur yang jelas dan teratur agar
mudah dipahami oleh pengguna.

• Tipe Data dan Variabel: Setiap data yang diproses oleh program harus memiliki
tipe data yang sesuai dan disimpan dalam variabel.

• Operasi Aritmatika dan Logika: Pemrograman melibatkan operasi aritmatika


seperti penjumlahan dan pengurangan, serta operasi logika seperti AND, OR, dan
NOT.

• Input dan Output: Program harus mampu menerima input dari pengguna dan
memberikan output yang tepat.

• Percabangan (If-Else Statement): Pemrograman seringkali membutuhkan


percabangan untuk mengambil keputusan berdasarkan kondisi tertentu.

• Perulangan (For dan While Loop): Pemrograman juga memerlukan perulangan


untuk melakukan tugas yang sama berulang-ulang.

10 | P a g e
3. Mengenal Struktur Program
Struktur yang jelas dan teratur akan memudahkan pengguna dalam memahami
bagaimana program berfungsi dan bagaimana bagian-bagian program saling
berinteraksi. Hal ini dapat membantu pengguna dalam memperbaiki atau memodifikasi
program di masa mendatang.
Dalam program yang memiliki struktur yang buruk atau tidak terorganisir,
pengguna mungkin mengalami kesulitan dalam memahami fungsi program atau
bagaimana memodifikasinya. Hal ini dapat mengakibatkan kesalahan yang tidak
diinginkan dalam program atau memperlambat waktu pengembangan program.
Struktur program biasanya terdiri dari beberapa elemen utama, seperti header,
deklarasi, fungsi, program utama, alur kontrol, dan komentar. Header berisi informasi
tentang program, seperti nama program, nama pengembang, dan deskripsi singkat.
Deklarasi digunakan untuk mendeklarasikan variabel, tipe data, dan fungsi yang
digunakan dalam program. Fungsi berisi kumpulan instruksi yang menjalankan tugas
tertentu dan dapat dipanggil dari bagian lain dalam program. Program utama adalah
bagian utama dari program yang berisi kumpulan instruksi yang akan dijalankan saat
program dijalankan. Alur kontrol berisi struktur kendali yang menentukan urutan
instruksi yang akan dijalankan dalam program, seperti struktur percabangan atau
perulangan. Komentar digunakan untuk memberikan penjelasan tentang bagian-bagian
program.
4. Mengenal Tipe data dan Variabel
a) Variabel
Variabel adalah sebuah simbol atau nama yang digunakan untuk
merepresentasikan nilai atau data yang dapat berubah selama program dijalankan.
Variabel digunakan untuk menyimpan nilai atau data yang digunakan dalam program
dan dapat diakses atau dimodifikasi sesuai kebutuhan.
Variabel dapat memiliki nama dan tipe data tertentu. Nama variabel harus unik
dan tidak boleh mengandung karakter spesial seperti spasi atau tanda baca kecuali
underscore (_).

11 | P a g e
b) Tipe Data
Tipe data adalah jenis nilai yang dapat disimpan dalam sebuah variabel atau
digunakan sebagai argumen dalam suatu fungsi. Tipe data dapat berupa bilangan bulat
(integer), bilangan pecahan (float), string (teks), boolean (nilai benar atau salah), dan
Berikut ini adalah beberapa jenis tipe data pada umumnya dalam pemrograman:
1. Bilangan bulat (integer): Tipe data yang merepresentasikan bilangan bulat tanpa
bagian desimal.
Contohnya adalah 1, 2, 3, -4, -5, dan seterusnya.
2. Bilangan pecahan (float): Tipe data yang merepresentasikan bilangan dengan
bagian desimal.
Contohnya adalah 1.5, 2.3, 3.14159, -4.2, dan seterusnya.
3. String: Tipe data yang merepresentasikan teks. String harus diapit dengan tanda
kutip (", '). Contohnya adalah "Hello, World!", 'Halo, Dunia!', dan seterusnya.
4. Boolean: Tipe data yang merepresentasikan nilai benar atau salah. Hanya
terdapat dua nilai, yaitu True (benar) dan False (salah).
5. List: Tipe data yang merepresentasikan kumpulan nilai. Nilai-nilai tersebut
dapat berbeda-beda tipe datanya. List diapit dengan kurung siku ([]).
Contohnya adalah [1, 2, 3], ['a', 'b', 'c'], [1, 'a', True], dan seterusnya.
6. Tuple: Tipe data yang mirip dengan list, tetapi nilainya tidak dapat diubah
setelah didefinisikan. Tuple diapit dengan kurung biasa (). Contohnya adalah
(1, 2, 3), ('a', 'b', 'c'), dan seterusnya.
7. Dictionary: Tipe data yang merepresentasikan pasangan kunci dan nilai. Setiap
kunci harus unik dan nilainya dapat berbeda-beda tipe datanya. Dictionary
diapit dengan kurung kurawal ({:}).
Contohnya adalah {'nama': 'Andi', 'umur': 20, 'tinggi': 175}, dan seterusnya.
Tipe data yang tepat harus dipilih sesuai dengan kebutuhan program.

12 | P a g e
Berikut adalah contoh kode Python untuk mendefinisikan variabel dengan berbagai
jenis tipe data:

# Bilangan bulat (integer)


a = 5 # Mencetak nilai variabel
b = -10 print(a)
c = 0 print(b)
#varibel a,b,c pada bilangan print(c)
bulat print(pi)
#dengan tipe data integer print(x)
#----------------------------# print(y)
# Bilangan pecahan (float) print(nama)
pi = 3.14 print(umur)
x = 2.5 print(benar)
y = -1.0 print(salah)
print(my_list)
# String print(my_tuple)
nama = "Andi" print(my_dict)
umur = '20 tahun'
# Mengakses nilai dalam list,
# Boolean tuple, dan dictionary
benar = True print(my_list[2])
salah = False print(my_tuple[0])
print(my_dict['umur'])
# List
my_list = [1, 2, 'a', True,
3.14]

# Tuple
my_tuple = ('a', 'b', 1, 2, 3)

# Dictionary
my_dict = {'nama': 'Andi',
'umur': 20, 'tinggi': 175}

Dalam program ini, kita mendefinisikan beberapa variabel untuk setiap jenis tipe data
yang telah disebutkan. Kemudian, kita mencetak nilai variabel tersebut menggunakan
fungsi print(). Selanjutnya, kita juga mengakses nilai dalam list, tuple, dan dictionary
menggunakan index atau key tertentu.

13 | P a g e
5. Operasi Aritmatik dan Logika
a. Operasi aritmatik adalah operasi matematika yang digunakan untuk
melakukan perhitungan pada bilangan. Berikut adalah beberapa operasi
aritmatik dalam Python:
1. Penjumlahan (+): Untuk menjumlahkan dua bilangan.
2. Pengurangan (-): Untuk mengurangi satu bilangan dengan bilangan lain.
3. Perkalian (*): Untuk mengalikan dua bilangan.
4. Pembagian (/): Untuk membagi satu bilangan dengan bilangan lain.
5. Modulo (%): Untuk menghitung sisa pembagian dari dua bilangan.
6. Pemangkatan (**): Untuk memangkatkan suatu bilangan dengan pangkat
tertentu.
Contoh penggunaan operasi aritmatik dalam bahasa pemrograman python:

# Penjumlahan
a = 5 # Pembagian
b = 7 m = 16
c = a + b n = 5
print(c) # Output: 12 o = m / n
print(o) # Output: 3.2
# Pengurangan
x = 10 # Modulo
y = 3 u = 13
z = x - y v = 5
print(z) # Output: 7 w = u % v
print(w) # Output: 3
# Perkalian
p = 3 # Pemangkatan
q = 4 e = 2
r = p * q f = 3
print(r) # Output: 12 g = e ** f
print(g) # Output: 8

Dalam program ini, kita mendefinisikan beberapa variabel dan melakukan


operasi aritmatik menggunakan operator yang telah disebutkan. Kemudian, kita
mencetak hasil operasi aritmatik tersebut menggunakan fungsi print().

14 | P a g e
b. Operasi logika adalah operasi yang digunakan untuk membandingkan dua nilai
boolean (True atau False). Berikut adalah beberapa operasi logika dalam
Python:
1. AND: Menghasilkan nilai True jika kedua nilai yang dibandingkan bernilai
True.
2. OR: Menghasilkan nilai True jika salah satu atau kedua nilai yang
dibandingkan bernilai True.
3. NOT: Menghasilkan nilai True jika nilai yang dibandingkan bernilai False,
dan sebaliknya.
Contoh penggunaan operasi logika dalam bahasa pemrograman python:

# AND Logika
a = True
b = False
c = True and False
print(c) # Output: False

# OR Logika
x = True
y = False
z = True or False
print(z) # Output: True

# NOT Logika
p = True
q = not p
print(q) # Output: False

Dalam program ini, kita menggunakan tiga operator logika yang berbeda, yaitu and,
or, dan not. Operator and akan menghasilkan True jika kedua operandnya bernilai
True, sedangkan operator or akan menghasilkan True jika salah satu atau kedua
operandnya bernilai True. Operator not akan menghasilkan kebalikan dari operandnya.
Pada contoh di atas, kita mendefinisikan beberapa variabel boolean dan melakukan
operasi logika menggunakan operator yang telah disebutkan. Kemudian, kita mencetak
hasil operasi logika tersebut menggunakan fungsi print().

Operasi logika sering digunakan dalam pengambilan keputusan dan struktur kontrol
seperti if-else.

15 | P a g e
6. Input dan output Program
Input dan output adalah dua hal yang penting dalam pengembangan program.
Input diperlukan untuk memberikan nilai ke program, sedangkan output diperlukan
untuk menampilkan hasil dari pemrosesan program tersebut.
Di Python, input dari pengguna dapat diterima menggunakan fungsi input().
Fungsi ini akan meminta pengguna memasukkan nilai yang diinginkan melalui
keyboard dan mengembalikan nilai tersebut dalam bentuk string. Kita dapat
menyimpan nilai yang dimasukkan pengguna ke dalam variabel untuk digunakan dalam
program.

Contoh penggunaan fungsi input() dalam bahasa python:

1. Meminta input dan menampilkan 2. Meminta input bilangan bulat


pesan terkait: dan melakukan operasi
matematika:
nama = input("Siapa namamu?
") angka1 = int(input("Masukkan
print("Halo, " + nama + "! bilangan pertama: "))
Selamat datang.") angka2 = int(input("Masukkan
bilangan kedua: "))
hasil = angka1 + angka2
print("Hasil penjumlahannya
adalah: ", hasil)

3. Menggunakan input() untuk mengambil pilihan dari pengguna


dalam bentuk string:

pilihan = input("Pilih warna kesukaanmu (merah/biru/hijau): ")


if pilihan == "merah":
print("Warna kesukaanmu adalah merah.")
elif pilihan == "biru":
print("Warna kesukaanmu adalah biru.")
elif pilihan == "hijau":
print("Warna kesukaanmu adalah hijau.")
else:
print("Pilihanmu tidak valid.")

4. Meminta pengguna untuk mengisi daftar nilai dan menampilkan rata-


ratanya:
#program untuk menghitung nilai dan memasukkan rata-rata
nilai = []
jumlah = int(input("Masukkan jumlah nilai: "))

for i in range(jumlah):
nilai.append(int(input("Masukkan nilai ke-" + str(i+1) + ": ")))

rata_rata = sum(nilai)/jumlah
print("Rata-rata nilai adalah:", rata_rata)

16 | P a g e
Dalam contoh-contoh di atas, fungsi input() digunakan untuk mengambil input
dari pengguna dalam bentuk string, dan kemudian digunakan dalam berbagai operasi
seperti operasi matematika, kondisional, dan loop.
Untuk memberikan output, Python menyediakan fungsi print(). Fungsi ini dapat
digunakan untuk menampilkan nilai dari variabel atau hasil operasi pada layar. Kita
dapat menyertakan beberapa nilai atau teks dalam satu perintah print() dengan
menggunakan koma sebagai pemisah.

Contoh penggunaan fungsi print() dalam bahasa python:


1. Mencetak teks sederhana ke konsol: 4. Menggunakan format string untuk
print("Halo dunia!") mencetak nilai dalam satu baris:
nama = "Jane"
#output/Keluaranya
umur = 30
Halo dunia!
print(f"Nama: {nama} Umur:
2. Mencetak hasil operasi matematika {umur}")
ke konsol: #output/Keluaranya
Nama: Jane Umur: 30
x = 5 5. Mencetak data dalam bentuk tabel
y = 3
print("Hasil penjumlahan x + y menggunakan format string:
adalah", x + y)
data = [ ("John", 25),
#output/Keluaranya
("Jane", 30), ("Bob", 35)]
Hasil penjumlahan x + y adalah 8
for item in data:
3. Mencetak hasil operasi dalam satu print("{:<10}
baris menggunakan tanda pemisah: {:<10}".format(item[0],
nama = "John" item[1]))
umur = 25 #output/Keluaranya
print("Nama:", nama, "Umur:", John 25
umur) Jane 30
#output/Keluaranya Bob 35
Nama: John Umur: 25

Dalam contoh-contoh di atas, fungsi print() digunakan untuk mencetak atau


menampilkan output ke konsol. Berbagai format dan gaya output dapat dicapai dengan
menggunakan berbagai metode seperti string formatting dan tanda pemisah.

17 | P a g e
7. Percabangan (if-else statement)
Percabangan (if-else statement) adalah struktur kontrol pada pemrograman yang
digunakan untuk membuat keputusan berdasarkan kondisi tertentu. Percabangan
memungkinkan program untuk memeriksa nilai dari sebuah variabel atau hasil operasi
dan melakukan tindakan yang berbeda tergantung pada kondisi tersebut.
Dalam percabangan if-else statement, program akan mengevaluasi suatu
kondisi dan akan melakukan aksi berbeda tergantung pada hasil evaluasi tersebut. Jika
kondisi yang dievaluasi bernilai True, maka program akan menjalankan aksi yang
didefinisikan di dalam blok if. Namun, jika kondisi yang dievaluasi bernilai False, maka
program akan menjalankan aksi yang didefinisikan di dalam blok else.

Contoh program menggunakan percabangan if-else statement dalam python:


1. Program untuk menentukan apakah suatu 3. Program untuk menentukan grade
bilangan bulat positif atau negatif: berdasarkan nilai:
nilai = int(input("Masukkan
num = int(input("Masukkan nilai Anda: "))
sebuah bilangan bulat: "))
if nilai >= 90:
if num >= 0: grade = "A"
print("Bilangan tersebut elif nilai >= 80:
adalah bilangan bulat grade = "B"
positif.") elif nilai >= 70:
else: grade = "C"
print("Bilangan tersebut elif nilai >= 60:
adalah bilangan bulat grade = "D"
negatif.") else:
grade = "E"
2. Program untuk menentukan kategori
pengguna berdasarkan usia: print("Grade Anda adalah:",
grade)
usia = int(input("Masukkan
usia: "))

if usia < 18:


kategori = "Anak-anak"
elif usia < 30:
kategori = "Dewasa muda"
elif usia < 60:
kategori = "Dewasa"
else:
kategori = "Lansia"

print("Anda termasuk
kategori", kategori)

18 | P a g e
percabangan if-else statement digunakan untuk memilih tindakan yang akan dilakukan
berdasarkan kondisi tertentu. Ini dapat digunakan untuk memvalidasi masukan
pengguna, memilih cabang dalam alur program, dan menentukan hasil yang sesuai
dengan kondisi tertentu.

8. Perulangan (looping)
Perulangan (Looping) merupakan salah satu struktur kontrol pada pemrograman
yang digunakan untuk melakukan tugas yang sama secara berulang-ulang. Terdapat dua
jenis perulangan utama pada pemrograman yaitu for loop dan while loop.
For loop digunakan untuk mengulangi sebuah blok kode sebanyak jumlah yang
telah ditentukan sebelumnya. For loop biasanya digunakan ketika kita mengetahui
berapa kali kita harus melakukan perulangan.
Contoh penggunaan for loop menggunakan bahasa pemrograman Python:
➢ Mencetak baris bintang sebanyak 5 ➢ Mencetak sebuah elemen dari setiap
kali elemen dari sebuah List
for i in range(1, 6): my_list = [1, 2, 3, 4, 5]
for j in range(i): for item in my_list:
print("*", end="") print(item)
print() #outputnya
#outputnya 1
* 2
** 3
*** 4
**** 5
***** 4. For Loop dengan else statement
➢ Contoh penggunaan for loop di
my_list = [1, 2, 3, 4, 5]
Python untuk menghitung jumlah for item in my_list:
huruf "a" dalam sebuah string: if item == 0:
break
my_string = "banana" else:
count = 0 print("No zero in the
for char in my_string: list")
if char == "a":
count += 1
print(count)
#outputnya
3

19 | P a g e
While loop, di sisi lain, digunakan ketika kita tidak mengetahui berapa kali kita harus
melakukan perulangan, tetapi kita ingin melakukan perulangan selama suatu kondisi
bernilai True. Pada while loop, blok kode akan dieksekusi berulang-ulang selama
kondisi yang ditentukan masih bernilai True.
Contoh penggunaan while loop menggunakan pemrograman Python:

n = 10
while n > 0:
print(n)
n -= 1
print("Blastoff!")
#outputnya
10
9
8
7
6
5
4
3
2
1
Blastoff!
Penjelasan: Perulangan while akan berjalan selama nilai n lebih besar dari 0. Setiap
iterasi, nilai n akan dikurangi 1 dan dicetak. Setelah nilai n mencapai 0, maka
perulangan while akan berakhir dan mencetak pesan "Blastoff!".
Contoh :
Program python untuk Menemukan bilangan prima
n = 2
while n < 20:
for i in range(2, n):
if n % i == 0:
break
else:
print(n, "adalah bilangan prima")
n += 1

Penjelasan: Perulangan while akan berjalan selama nilai n kurang dari 20. Pada setiap
iterasi, for loop akan mengiterasi setiap nilai i antara 2 dan n (non inklusif). Jika n
dapat dibagi dengan i tanpa sisa, maka for loop akan dihentikan menggunakan break.
Jika for loop selesai tanpa break, maka nilai n adalah bilangan prima dan akan
dicetak. Setelah itu, nilai n akan ditambahkan 1.

20 | P a g e
Kedua jenis perulangan ini memiliki kegunaannya masing-masing. Pada for loop, kita
dapat memastikan bahwa perulangan akan dilakukan sejumlah yang telah ditentukan
sebelumnya. Sementara itu, pada while loop, kita dapat melakukan perulangan dengan
kondisi yang lebih kompleks dan dinamis, di mana jumlah iterasi tidak diketahui
sebelumnya.

C. Struktur Program Dasar

Struktur program dasar terdiri dari beberapa komponen yang harus dipahami oleh
seorang programmer. Beberapa komponen penting tersebut adalah fungsi dan prosedur,
penggunaan library atau modul, serta debugging dan testing.
➢ Fungsi dan Prosedur
Fungsi dan prosedur adalah dua konsep penting dalam pemrograman. Keduanya
merupakan blok kode yang dapat digunakan kembali dalam program, namun
terdapat perbedaan antara keduanya.
Fungsi adalah blok kode yang dapat menerima input dan menghasilkan output.
Fungsi biasanya digunakan untuk melakukan tugas-tugas tertentu dalam program
dan mengembalikan nilai hasilnya.
Dalam Python, fungsi dan prosedur didefinisikan dengan menggunakan
keyword def, seperti contoh berikut:
Prosedur, di sisi lain, adalah blok kode yang juga dapat digunakan kembali
dalam program, namun tidak menghasilkan nilai kembalian. Prosedur biasanya
digunakan untuk melakukan tugas-tugas tertentu yang tidak memerlukan
pengembalian nilai.
Contoh penggunaan Fungsi dan prosedur:

# Contoh penggunaan fungsi


def tambah(a, b):
return a + b

# Contoh penggunaan prosedur


def cetak_nama(nama):
print("Nama saya adalah", nama)

# Memanggil fungsi dan prosedur


hasil = tambah(3, 5)
cetak_nama("John")

21 | P a g e
➢ Penggunaan Library atau Modul
Library atau modul adalah kumpulan dari fungsi dan prosedur yang telah dibuat
sebelumnya, dan dapat digunakan kembali dalam program kita. Dalam Python, kita
dapat mengimpor library atau modul dengan menggunakan kata kunci import.
Penggunaan library atau modul dapat menghemat waktu dan usaha karena kita
tidak perlu menulis kode program dari awal untuk setiap tugas yang sama. Beberapa
contoh library atau modul yang sering digunakan dalam Python adalah NumPy,
Pandas, dan Matplotlib. Contoh penggunaan library NumPy dalam Python:

# Contoh penggunaan library NumPy


import numpy as np

# Membuat array NumPy


arr = np.array([1, 2, 3, 4, 5])

# Melakukan operasi pada array NumPy


mean = np.mean(arr)
std = np.std(arr)

# Menampilkan hasil
print("Array:", arr)
print("Mean:", mean)
print("Std dev:", std)

➢ Debugging dan testing


Debugging dan testing adalah proses penting dalam pengembangan program.
Debugging adalah proses mencari dan memperbaiki kesalahan pada program,
sedangkan testing adalah proses memastikan bahwa program berjalan dengan benar
dan menghasilkan output yang tepat. Dalam Python, kita dapat menggunakan
beberapa teknik untuk melakukan debugging dan testing, seperti menambahkan
pernyataan print pada bagian tertentu dari program, menggunakan debugger, atau
membuat unit test.
Berikut adalah contoh program Python dengan beberapa kesalahan atau bug dan
bagaimana melakukan debugging dan testing pada program tersebut:

# Program untuk menghitung nilai rata-rata dari daftar


nilai Siswa

def hitung_rata_rata(nilai):
total = 0
for n in nilai:

22 | P a g e
total += n
rata_rata = total / len(nilai)
return rata_rata

def cetak_hasil(nama, nilai):


rata_rata = hitung_rata_rata(nilai)
print("Nilai rata-rata", nama, "adalah",
rata_rata)

# Daftar nama dan nilai Siswa


nama = ["John", "Jane", "Bob", "Alice"]
nilai = [80, 75, 90, 85]

# Cetak hasil untuk setiap Siswa


for i in range(len(nama)):
cetak_hasil(nama[i], nilai[i])

Program di atas memiliki beberapa kesalahan atau bug, yaitu:


1. Fungsi hitung_rata_rata tidak menangani kasus ketika daftar nilai kosong.
2. Fungsi cetak_hasil tidak memformat nilai rata-rata dengan dua desimal.
Untuk melakukan debugging pada program di atas, kita dapat menggunakan
breakpoint untuk memeriksa nilai variabel saat program dijalankan. Berikut adalah
contoh penggunaan breakpoint pada program di atas:

# Program untuk menghitung nilai rata-rata dari daftar


nilai Siswa

def hitung_rata_rata(nilai):
total = 0
for n in nilai:
total += n
rata_rata = total / len(nilai)
return rata_rata

def cetak_hasil(nama, nilai):


rata_rata = hitung_rata_rata(nilai)
print("Nilai rata-rata", nama, "adalah", rata_rata)

# Daftar nama dan nilai Siswa


nama = ["John", "Jane", "Bob", "Alice"]
nilai = [80, 75, 90, 85]

# Cetak hasil untuk setiap Siswa


for i in range(len(nama)):
import pdb; pdb.set_trace()
cetak_hasil(nama[i], nilai[i])

23 | P a g e
Setelah kita menggunakan breakpoint, kita dapat memeriksa nilai variabel dan
menemukan kesalahan pada fungsi hitung_rata_rata. Kita perlu menambahkan
penanganan untuk kasus ketika daftar nilai kosong.

Berikut adalah contoh perbaikan pada fungsi hitung_rata_rata:

def hitung_rata_rata(nilai):
if len(nilai) == 0:
return 0
total = 0
for n in nilai:
total += n
rata_rata = total / len(nilai)
return rata_rata

Setelah kita memperbaiki kesalahan pada fungsi hitung_rata_rata, kita dapat


melakukan testing pada program untuk memastikan bahwa program berjalan dengan
benar. Berikut adalah contoh penggunaan unit testing untuk program di atas:

import unittest

class TestProgram(unittest.TestCase):

def test_hitung_rata_rata(self):
nilai = [80, 75, 90, 85]
self.assertEqual(hitung_rata_rata(nilai), 82.5)
nilai = []
self.assertEqual(hitung_rata_rata(nilai),

24 | P a g e
D. Pemrograman Berorientasi Objek (OOP)

1. Konsep dasar OOP


Konsep dasar OOP meliputi:
➢ Kelas (Class) adalah blueprint atau rancangan objek yang digunakan untuk
membuat objek. Kelas mendefinisikan atribut dan metode yang dimiliki
oleh objek tersebut.

class Mobil:
def __init__(self, warna, merek, nomor_plat):
self.warna = warna
self.merek = merek
self.nomor_plat = nomor_plat

def info_mobil(self):
print("Mobil warna", self.warna, "merek",
self.merek, "dengan nomor plat", self.nomor_plat)

def menyalakan_mesin(self):
print("Mesin mobil dinyalakan.")

def mempercepat(self):
print("Mobil sedang dipercepat.")

Dalam contoh ini, class "Mobil" memiliki tiga atribut yaitu warna,
merek, dan nomor plat. Selain itu, class ini juga memiliki tiga
metode yaitu info_mobil, menyalakan_mesin, dan mempercepat.
1. Metode init adalah constructor (pembuat) class Mobil. Ini
digunakan untuk menginisialisasi atribut-atribut yang
dimiliki oleh objek mobil yang dibuat dari class ini.
2. Metode info_mobil digunakan untuk menampilkan informasi
tentang objek mobil, seperti warna, merek, dan nomor plat.
3. Metode menyalakan_mesin digunakan untuk menyalakan
mesin mobil.
4. Metode mempercepat digunakan untuk meningkatkan
kecepatan mobil.
Dengan class ini, kita dapat membuat objek mobil baru dengan
menentukan nilai-nilai atribut seperti warna, merek, dan nomor plat.
Contohnya:
mobil1 = Mobil("merah", "Toyota", "B 1234 ABC")
25 | P a g e
mobil2 = Mobil("biru", "Honda", "B 5678 DEF")

Kita dapat memanggil metode pada objek-objek ini, seperti:


mobil1.info_mobil() # akan menampilkan "Mobil
warna merah merek Toyota dengan nomor plat B 1234
ABC"
mobil2.menyalakan_mesin() # akan menampilkan
"Mesin mobil dinyalakan."

➢ Objek (Object) adalah sebuah objek adalah sebuah instance dari sebuah
class. Class sendiri adalah sebuah blueprint atau template yang digunakan
untuk membuat objek-objek yang memiliki sifat atau karakteristik yang
sama. Setiap objek memiliki state (keadaan) yang terdiri dari nilai-nilai dari
variabel-variabel yang dimiliki oleh objek tersebut, dan behavior (perilaku)
yang terdiri dari Method-Method yang dapat dipanggil untuk memanipulasi
atau mengakses state tersebut. Sebagai contoh, dalam sebuah program
perbankan yang menggunakan OOP, terdapat class "Account" yang
memiliki variabel seperti "account_number", "balance", dan
"owner_name". Setiap objek yang dibuat dari class "Account" akan
memiliki state yang terdiri dari nilai-nilai dari variabel-variabel tersebut.
Selain itu, class "Account" juga memiliki Method seperti "deposit",
"withdraw", dan "check_balance" yang dapat dipanggil untuk
memanipulasi atau mengakses state objek tersebut. Dengan menggunakan
OOP, sebuah program dapat diorganisasi dengan lebih baik dan lebih
mudah dipahami, karena program dibagi ke dalam berbagai class dan objek-
objek yang saling berinteraksi sesuai dengan tujuannya masing-masing.
Berikut ini adalah contoh program Python sederhana yang menggunakan
OOP untuk membuat class "Account":

class Account:
def __init__(self, account_number, balance,
owner_name):
self.account_number = account_number

26 | P a g e
self.balance = balance
self.owner_name = owner_name

def deposit(self, amount):


self.balance += amount

def withdraw(self, amount):


if self.balance >= amount:
self.balance -= amount
else:
print("Insufficient balance")

def check_balance(self):
print("Account balance:", self.balance)

# Contoh penggunaan class Account


account1 = Account("1234567890", 1000, "John Doe")
account1.check_balance() # Output: Account balance:
1000

account1.deposit(500)
account1.check_balance() # Output: Account balance:
1500

account1.withdraw(2000) # Output: Insufficient


balance
account1.check_balance() # Output: Account balance:
1500

account1.withdraw(1000)
account1.check_balance() # Output: Account balance:
500

Pada contoh di atas, class "Account" memiliki tiga variabel yaitu


"account_number", "balance", dan "owner_name". Constructor __init__()
digunakan untuk menginisialisasi nilai-nilai awal dari variabel-variabel
tersebut ketika objek dibuat.

Selain variabel-variabel tersebut, class "Account" juga memiliki tiga


Method yaitu "deposit()", "withdraw()", dan "check_balance()". Method
"deposit()" digunakan untuk menambahkan saldo ke dalam akun, Method
"withdraw()" digunakan untuk mengurangi saldo dari akun, dan Method
"check_balance()" digunakan untuk menampilkan saldo saat ini pada akun.

27 | P a g e
Kemudian pada contoh penggunaannya, kita membuat objek "account1"
dari class "Account" dengan memasukkan nilai-nilai awal ke dalam
constructor. Selanjutnya kita memanggil Method "check_balance()" untuk
mengecek saldo awal pada akun.

Setelah itu, kita memanggil Method "deposit()" untuk menambahkan


saldo pada akun, kemudian memanggil Method "check_balance()" lagi
untuk mengecek saldo baru pada akun.Kemudian kita mencoba untuk
melakukan penarikan dengan nilai yang lebih besar dari saldo yang tersedia
pada akun, sehingga akan menampilkan pesan "Insufficient balance".
Setelah itu kita mencoba lagi untuk melakukan penarikan dengan nilai yang
lebih kecil dari saldo yang tersedia pada akun, dan mengecek saldo baru
pada akun dengan memanggil Method "check_balance()".

➢ Properti (Property) atau Atribut (Attribute)


istilah "properti" (property) atau "atribut" (attribute) digunakan untuk
merujuk pada variabel yang dimiliki oleh sebuah objek. Properti atau atribut
ini dapat diakses dan dimanipulasi melalui objek tersebut.
Secara umum, properti atau atribut pada sebuah objek dapat dibagi menjadi
dua jenis, yaitu:
1. Properti publik (public property), yaitu properti yang dapat diakses dan
dimanipulasi langsung dari luar objek tanpa harus melalui Method
khusus. Properti ini biasanya didefinisikan dengan menggunakan kata
kunci self di dalam constructor atau Method-Method di dalam class.
2. Properti privat (private property), yaitu properti yang hanya dapat
diakses dan dimanipulasi melalui Method-Method khusus yang
didefinisikan di dalam class tersebut. Properti ini biasanya
didefinisikan dengan menggunakan underscore (_) sebagai awalan
nama variabel, seperti _nama_properti.

Contoh penggunaan properti pada sebuah class dalam bahasa Python:

class Siswa:
def __init__(self, nama, npm, jurusan):
self._nama = nama # properti privat dengan
awalan underscore
self._npm = npm # properti privat dengan
awalan underscore

28 | P a g e
self.jurusan = jurusan # properti publik

@property
def nama(self):
return self._nama # Method getter untuk
properti privat _nama

@nama.setter
def nama(self, nama_baru):
self._nama = nama_baru # Method setter
untuk properti privat _nama

@property
def npm(self):
return self._npm # Method getter untuk
properti privat _npm

@npm.setter
def npm(self, npm_baru):
self._npm = npm_baru # Method setter untuk
properti privat _npm

# Contoh penggunaan class Siswa


mhs1 = Siswa("Aisyah", "12345", "Teknik
Informatika")

print(mhs1.jurusan) # Output: Teknik Informatika


print(mhs1.nama) # Output: Aisyah
print(mhs1.npm) # Output: 12345

mhs1.nama = "Budi" # mengubah properti privat _nama


melalui Method setter
mhs1.npm = "67890" # mengubah properti privat _npm
melalui Method setter

print(mhs1.nama) # Output: Budi


print(mhs1.npm) # Output: 67890

Pada contoh di atas, class "Siswa" memiliki tiga properti yaitu "nama",
"npm", dan "jurusan". Properti "jurusan" adalah properti publik yang dapat
diakses dan dimanipulasi langsung dari luar objek, sedangkan properti
"nama" dan "npm" adalah properti privat dengan awalan underscore yang
hanya dapat diakses dan dimanipulasi melalui Method-Method khusus
yang didefinisikan di dalam class tersebut.

29 | P a g e
Untuk mengakses dan memanipulasi properti privat "nama" dan "npm",
kita menggunakan Method getter dan setter yang didefinisikan dengan
menggunakan decorator @property dan @nama.setter serta
@npm.setter. Method getter digunakan untuk mengambil nilai properti
privat, sedangkan Method setter digunakan untuk mengubah nilai properti
privat. Dengan menggunakan properti dan Method getter/setter pada class
"Siswa" seperti di atas, kita dapat memastikan bahwa properti privat tidak
dapat diakses atau dimanipulasi langsung dari luar objek. Selain itu,
penggunaan Method getter/setter juga dapat memberikan validasi atau
verifikasi pada nilai properti sebelum disimpan ke dalam objek.

➢ Metode (Method)
Metode (Method) adalah sebuah fungsi atau prosedur yang terdapat
pada suatu objek atau kelas dalam pemrograman berorientasi objek. Metode
biasanya diimplementasikan di dalam kelas dan memiliki akses ke properti-
properti pada objek tersebut.
Metode digunakan untuk melakukan tindakan atau operasi pada
objek yang sama, atau juga dapat digunakan untuk mengembalikan nilai
yang diinginkan. Dalam beberapa kasus, metode dapat menerima parameter
atau argumen yang diperlukan untuk melakukan tindakan atau operasi yang
diinginkan.
Dalam sebuah kelas, metode seringkali digunakan untuk
memodifikasi atau mengambil data dari objek yang dibuat dari kelas
tersebut. Contohnya, sebuah kelas Mobil dapat memiliki metode untuk
mengubah kecepatan mobil, mengisi bahan bakar, atau memeriksa apakah
mobil sedang menyala atau tidak.
Dalam pemrograman, metode memiliki beberapa karakteristik yang
membedakannya dari fungsi pada umumnya. Beberapa karakteristik
tersebut antara lain:
1. Metode diakses melalui objek atau kelas yang mengandungnya,
sedangkan fungsi biasanya dapat diakses secara global.
2. Metode memiliki akses ke properti-properti atau variabel-variabel
pada objek atau kelas tempat metode tersebut didefinisikan.

30 | P a g e
3. Metode seringkali mengubah atau memodifikasi objek yang
dipanggil, sedangkan fungsi biasanya tidak memiliki efek samping
seperti itu.
4. Metode dapat diwariskan dari kelas lain, sehingga kelas-kelas
turunan dapat menggunakan metode tersebut.
Dalam pemrograman berorientasi objek, metode sangat penting
untuk mengorganisasi dan mengelola kode program. Dengan menggunakan
metode, kita dapat memisahkan logika program ke dalam blok-blok yang
lebih kecil dan mudah dipahami, sehingga memudahkan pengembangan
dan perawatan kode program secara keseluruhan.

Berikut adalah contoh program sederhana yang menggunakan metode pada


bahasa pemrograman Python untuk menghitung luas segitiga:

def hitung_luas_segitiga(alas, tinggi):


luas = (alas * tinggi) / 2
return luas

# Input alas dan tinggi segitiga dari pengguna


alas = float(input("Masukkan panjang alas segitiga:
"))
tinggi = float(input("Masukkan tinggi segitiga: "))

# Hitung luas segitiga menggunakan metode


luas_segitiga = hitung_luas_segitiga(alas, tinggi)

# Cetak hasil perhitungan


print("Luas segitiga dengan alas {} dan tinggi {}
adalah {}".format(alas, tinggi, luas_segitiga))

Penjelasan program di atas adalah sebagai berikut:


1. Pertama-tama, kita mendefinisikan sebuah metode bernama
hitung_luas_segitiga yang memiliki dua parameter yaitu alas dan
tinggi.
2. Di dalam metode tersebut, kita menghitung luas segitiga dengan rumus
luas = (alas * tinggi) / 2 dan mengembalikan hasil perhitungan
menggunakan perintah return.

31 | P a g e
3. Setelah itu, kita meminta pengguna untuk memasukkan nilai alas dan
tinggi segitiga menggunakan fungsi input.
4. Selanjutnya, kita memanggil metode hitung_luas_segitiga dengan
mengirimkan nilai alas dan tinggi yang sudah dimasukkan pengguna
sebagai argumen.
5. Hasil perhitungan yang diterima dari metode disimpan dalam variabel
luas_segitiga.
6. Akhirnya, kita mencetak hasil perhitungan menggunakan perintah
print.
Dalam program di atas, kita menggunakan metode untuk memisahkan
logika perhitungan luas segitiga ke dalam sebuah blok yang terpisah.
Dengan demikian, program menjadi lebih mudah dipahami dan lebih
mudah dikelola.

2. Pewarisan (inheritance) dan polimorfisme (polymorphism)

Pewarisan (inheritance) adalah salah satu konsep dasar dalam pemrograman


berorientasi objek (OOP) yang memungkinkan pembuatan kelas baru yang
memperoleh sifat dan perilaku dari kelas yang sudah ada (parent class atau
superclass). Dalam pewarisan, kelas yang baru dibuat disebut subclass atau
child class. Dengan menggunakan pewarisan, subclass dapat mewarisi semua
atribut dan metode yang ada di superclass, dan kemudian dapat menambahkan
atau mengubah perilaku dan atribut tersebut sesuai kebutuhan.

Polimorfisme (polymorphism) adalah konsep dalam pemrograman berorientasi


objek yang mengacu pada kemampuan objek dari kelas yang berbeda untuk
merespons permintaan atau panggilan metode dengan cara yang sama, namun
dengan perilaku yang berbeda. Dalam polimorfisme, suatu objek dapat
merespons permintaan dengan perilaku yang berbeda tergantung pada jenis atau
kelas objek tersebut. Polimorfisme juga dapat dicapai melalui penggunaan
inheritance, di mana subclass dapat mengoverride metode yang diwarisi dari
superclass dan menggantinya dengan perilaku yang berbeda. Polimorfisme
memungkinkan programmer untuk mengurangi redundansi kode dan
meningkatkan fleksibilitas dalam aplikasi yang dibuat.

32 | P a g e
Misalkan kita memiliki sebuah program untuk menghitung gaji pegawai di
sebuah perusahaan. Pegawai di perusahaan tersebut terbagi menjadi dua jenis,
yaitu pegawai biasa dan pegawai magang. Kedua jenis pegawai ini memiliki
atribut dan Method yang sama, namun ada beberapa perbedaan di antara
keduanya.

Contoh implementasi pewarisan pada program ini adalah sebagai berikut:

class Pegawai:
def __init__(self, nama, gaji):
self.nama = nama
self.gaji = gaji

def hitung_gaji(self):
return self.gaji

class PegawaiBiasa(Pegawai):
def __init__(self, nama, gaji, tunjangan):
super().__init__(nama, gaji)
self.tunjangan = tunjangan

def hitung_gaji(self):
return super().hitung_gaji() + self.tunjangan

class PegawaiMagang(Pegawai):
def __init__(self, nama, gaji, bonus):
super().__init__(nama, gaji)
self.bonus = bonus

def hitung_gaji(self):
return super().hitung_gaji() + self.bonus

Pada contoh di atas, terdapat kelas Pegawai yang memiliki atribut nama dan
gaji, serta Method hitung_gaji(). Selain itu, terdapat kelas turunan
PegawaiBiasa dan PegawaiMagang yang mewarisi atribut dan Method dari
kelas induk Pegawai.

Contoh implementasi polimorfisme pada program ini adalah sebagai berikut:


def cetak_gaji(pegawai):
print("Gaji", pegawai.nama, "adalah",
pegawai.hitung_gaji())

33 | P a g e
pegawai1 = PegawaiBiasa("John Doe", 10000000, 5000000)
pegawai2 = PegawaiMagang("Jane Doe", 2000000, 500000)

cetak_gaji(pegawai1)
cetak_gaji(pegawai2)

Pada contoh di atas, terdapat fungsi cetak_gaji() yang menerima objek


pegawai sebagai parameter. Karena kedua kelas turunan PegawaiBiasa dan
PegawaiMagang memiliki Method hitung_gaji(), maka fungsi cetak_gaji()
dapat dipanggil untuk kedua jenis pegawai tanpa perlu mengetahui tipe objek
yang sebenarnya. Hal ini memanfaatkan konsep polimorfisme dalam
pemrograman berorientasi objek.

3. Konstruktor dan destruktor


Konstruktor dan destruktor adalah dua jenis metode dalam
pemrograman berorientasi objek yang digunakan untuk menginisialisasi dan
membersihkan objek.Konstruktor adalah metode khusus yang digunakan untuk
menginisialisasi objek saat dibuat dari sebuah kelas. Konstruktor biasanya
memiliki nama yang sama dengan kelas, dan tidak mengembalikan nilai apa
pun. Fungsi konstruktor adalah untuk menetapkan nilai awal ke variabel-
variabel anggota objek dan melakukan tugas-tugas awal lainnya. Konstruktor
dipanggil secara otomatis pada saat pembuatan objek, dan biasanya tidak
dipanggil secara eksplisit dalam kode program.
Destruktor adalah metode khusus lainnya yang digunakan untuk
membersihkan objek saat objek tidak lagi digunakan. Destruktor biasanya
memiliki nama yang sama dengan kelas, dengan tanda tilde di depannya (~).
Fungsi destruktor adalah untuk membersihkan sumber daya yang digunakan
oleh objek, seperti memori yang dialokasikan secara dinamis atau menutup file
atau koneksi database yang dibuka oleh objek. Destruktor dipanggil secara
otomatis saat objek dihapus atau keluar dari ruang lingkup.
Perbedaan utama antara konstruktor dan destruktor adalah bahwa
konstruktor dipanggil pada saat pembuatan objek untuk menginisialisasi nilai
awal, sedangkan destruktor dipanggil pada saat objek dihapus dari memori
untuk membersihkan sumber daya yang digunakan oleh objek. Selain itu,
konstruktor biasanya tidak memiliki nilai pengembalian dan tidak perlu

34 | P a g e
dipanggil secara eksplisit, sedangkan destruktor tidak memiliki parameter dan
juga tidak perlu dipanggil secara eksplisit.
Di dalam bahasa pemrograman Python, konstruktor dan destruktor
direpresentasikan dengan metode __init__() dan __del__() masing-masing.

Berikut adalah contoh sederhana dari konstruktor dan destruktor pada bahasa
pemrograman Python:

class Contoh:
def __init__(self):
print("Objek telah dibuat")

def __del__(self):
print("Objek telah dihapus")

# Membuat objek Contoh


obj = Contoh()

# Program selesai, objek akan dihapus secara otomatis

Pada contoh di atas, sebuah kelas bernama Contoh didefinisikan dengan


metode konstruktor __init__() dan destruktor __del__(). Ketika program
dijalankan dan objek Contoh dibuat, konstruktor akan dipanggil dan akan
menampilkan pesan "Objek telah dibuat". Kemudian, saat program selesai
dieksekusi, objek Contoh akan dihapus dan destruktor akan dipanggil, yang
akan menampilkan pesan "Objek telah dihapus". Perlu dicatat bahwa
pemanggilan destruktor terjadi secara otomatis dan tidak perlu dipanggil secara
eksplisit dalam kode program.

4. Abstraksi dan Enkapsulasi


Abstraksi dan enkapsulasi adalah konsep penting dalam pemrograman
berorientasi objek yang berfungsi untuk memudahkan pengembangan,
pemeliharaan, dan pengaturan kompleksitas program. Meskipun keduanya
sering dikaitkan, ada perbedaan antara abstraksi dan enkapsulasi dalam
pemrograman berorientasi objek.
Abstraksi adalah konsep yang memungkinkan untuk menyembunyikan
detail yang tidak perlu dari suatu objek dan hanya menampilkan detail yang
penting atau relevan. Hal ini membantu mempermudah pengembangan dan

35 | P a g e
pemeliharaan program karena memungkinkan programmer untuk fokus pada
konsep tingkat tinggi daripada detail implementasi yang lebih rendah. Dalam
abstraksi, kita membuat kelas abstrak yang memiliki beberapa Method abstrak
yang hanya memberikan deklarasi atau pengertian tentang apa yang akan
dilakukan Method tersebut, tanpa memberikan implementasi yang sebenarnya.
Implementasi Method ini akan diwajibkan untuk dibuat oleh kelas turunan yang
mengimplementasikan kelas abstrak tersebut.
Sementara itu, enkapsulasi adalah konsep yang memungkinkan untuk
menyembunyikan detail implementasi dari pengguna dan hanya menampilkan
interface publik yang dapat digunakan pengguna. Dalam enkapsulasi, atribut
atau Method tertentu diberikan hak akses tertentu, seperti public, private, dan
protected, untuk menentukan siapa saja yang dapat mengakses atribut atau
Method tersebut. Ini membantu menjaga integritas data dan menghindari
konflik nama antara Method dan atribut dalam program.
Secara umum, abstraksi dan enkapsulasi berfungsi untuk
menyederhanakan program dan membantu menjaga integritas data dan
konsistensi antar objek. Namun, abstraksi fokus pada menyembunyikan detail
implementasi yang tidak perlu, sedangkan enkapsulasi fokus pada
menyembunyikan atribut atau Method yang tidak perlu diakses dari luar kelas.
Berikut adalah contoh sederhana dari abstraksi dan enkapsulasi pada
bahasa pemrograman Python:

class Kotak:
def __init__(self, panjang, lebar, tinggi):
self.__panjang = panjang
self.__lebar = lebar
self.__tinggi = tinggi

def hitung_volume(self):
return self.__panjang * self.__lebar *
self.__tinggi

# Membuat objek Kotak


kotak = Kotak(2, 3, 4)

# Menghitung volume kotak


volume = kotak.hitung_volume()

# Menampilkan hasil perhitungan


print("Volume kotak adalah:", volume)

36 | P a g e
Pada contoh di atas, sebuah kelas bernama Kotak didefinisikan dengan
metode konstruktor __init__() dan metode hitung_volume(). Variabel
panjang, lebar, dan tinggi diinisialisasi dalam konstruktor dengan
menggunakan konsep enkapsulasi, yaitu dengan menggunakan double
underscore (__) sebelum nama variabel, sehingga variabel tersebut menjadi
variabel pribadi dan hanya bisa diakses dari dalam kelas Kotak. Dalam metode
hitung_volume(), nilai dari variabel pribadi tersebut digunakan untuk
menghitung volume kotak.
Selain itu, konsep abstraksi juga digunakan dalam contoh di atas dengan
cara menyembunyikan detail implementasi dari metode hitung_volume() dan
hanya menampilkan hasil perhitungan pada penggunaan program. Hal ini
membuat program menjadi lebih mudah dimengerti dan dikelola.

37 | P a g e
BAB IV

STRUKTUR DATA
A. Pengertian Struktur Data

Struktur data adalah cara untuk menyimpan, mengatur, dan mengakses data
dalam sebuah program komputer. Struktur data memungkinkan programmer
untuk mengatur data dengan cara yang efisien dan memudahkan dalam
pemrosesan data. Dalam pemrograman, pemilihan struktur data yang tepat sangat
penting untuk mencapai tujuan yang diinginkan.

B. Jenis-Jenis Struktur Data


Berikut adalah beberapajenis struktur data:

1. Array

Array adalah struktur data yang terdiri dari beberapa elemen dengan tipe data
yang sama yang disimpan secara berurutan di dalam memori. Setiap elemen
dapat diakses dengan menggunakan indeks yang sesuai. Data pada array
dapat diakses menggunakan indeks yang merupakan posisi dari data tersebut
pada array. Indeks pada array dimulai dari 0.

Jenis-jenis Array

a. Array Satu Dimensi (1D)


Array satu dimensi adalah array yang hanya memiliki satu baris atau
satu kolom. Array satu dimensi sering juga disebut sebagai vektor.
Contoh :

# membuat array satu dimensi


angka = [1, 2, 3, 4, 5]

38 | P a g e
b. Array Dua Dimensi(2D)
Array dua dimensi adalah array yang memiliki dua dimensi atau
memiliki baris dan kolom. Array dua dimensi sering juga disebut
sebagai matriks.
Contoh :

# membuat array dua dimensi


matriks = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Operasi pada Array Menggunakan pemrograman Python


1. Mengakses elemen pada array
Elemen pada array dapat diakses dengan menggunakan indeks.
Contoh :

angka = [1, 2, 3, 4, 5]
print(angka[0]) # 1

2. Menambahkan elemen pada array


Elemen pada array dapat ditambahkan menggunakan metode
append().
Contoh:
angka = [1, 2, 3, 4, 5]
angka.append(6)
print(angka) # [1, 2, 3, 4, 5, 6]

3. Menghapus elemen pada array


Elemen pada array dapat dihapus menggunakan metode remove().
Contoh :
# menghapus elemen pada array
angka = [1, 2, 3, 4, 5]
angka.remove(3)
print(angka) # [1, 2, 4, 5]

4. Menggabungkan dua array


Dua array dapat digabungkan menggunakan operator +.
Contoh:
# menggabungkan dua array
angka1 = [1, 2, 3]
angka2 = [4, 5, 6]
angka3 = angka1 + angka2

39 | P a g e
print(angka3) # [1, 2, 3, 4, 5, 6]

Kelebihan dan Kekurangan Array


Kelebihan:
• Memiliki akses yang cepat pada elemen array.
• Memiliki ukuran yang tetap.
• Dapat dilakukan operasi matematika pada elemen array.
Kekurangan:
• Ukuran array tetap dan tidak dapat diubah.
• Memakan ruang memori yang besar untuk array yang berukuran
besar.
• Tidak efisien untuk memanipulasi data yang kompleks.
2. Linked List

Linked list merupakan struktur data yang terdiri dari urutan data linier yang
dapat dihubungkan satu sama lain. Saat menggunakan tipe linked list, Anda
perlu untuk mengakses data secara manual. Hal ini dikarenakan Anda tidak
dapat mencari data dengan sistem acak.

Tipe linked list ini dipisahkan menjadi tiga jenis, yaitu singly linked
list, doubly linked list, dan circular linked list. Ketiganya bisa dibedakan
melalui proses traversal atau proses kunjungan ke setiap node pada satu
waktu.

Keunggulan tipe linked list:

• Ukuran lebih dinamis.

• Alokasi pada penggunaan memori dapat Anda sesuaikan dengan


kebutuhan.

40 | P a g e
• Penambahan atau pengurangan data menjadi lebih cepat.

Kekurangan tipe linked list:

• Menghabiskan memori yang lebih besar.

• Tidak dapat kembali ke node sebelumnya (reverse traversal), kecuali


pada jenis doubly linked list.

• Proses traversal menjadi lebih panjang karena tidak langsung dapat


mengakses data dengan indeks.

3. Stack

Stack adalah struktur data yang memungkinkan penyimpanan data dengan


prinsip Last In First Out (LIFO). Data yang terakhir dimasukkan ke dalam
stack akan menjadi data yang pertama kali diambil. Sebaliknya, data yang
pertama masuk bisa menjadi data yang keluar terakhir.

Terdapat beberapa operasi dasar yang dapat dilakukan pada stack, yaitu:

• push(data): Menambahkan data ke dalam stack

• pop(): Mengambil dan menghapus data teratas (top) dari stack

• peek(): Melihat data teratas (top) dari stack tanpa menghapusnya

• is_empty(): Memeriksa apakah stack kosong atau tidak

• size(): Mengembalikan jumlah data dalam stack

41 | P a g e
Keunggulan tipe stack:

• Bisa mengelola data yang lebih efisien.

• Dapat membersihkan objek dengan cara otomatis.

• Bisa mengatur memori secara lebih mandiri.

Kekurangan tipe stack:

• Kapasitas memori yang tersedia sangat terbatas.

• Memiliki potensi terjadi overflow saat jumlah objek terlalu banyak.

• Tidak bisa mengakses data secara acak.

Berikut ini adalah contoh program implementasi Stack dengan Python:

class Stack:
def __init__(self):
self.items = []

def push(self, data):


self.items.append(data)

def pop(self):
if not self.is_empty():
return self.items.pop()
else:
return None

def peek(self):
if not self.is_empty():
return self.items[-1]
else:
return None

def is_empty(self):
return len(self.items) == 0

def size(self):
return len(self.items)

# Contoh penggunaan Stack


stack = Stack()
stack.push(1)
stack.push(2)

42 | P a g e
stack.push(3)

print("Isi Stack: ", stack.items)


print("Ukuran Stack: ", stack.size())
print("Data teratas Stack: ", stack.peek())

pop_item = stack.pop()
print("Data yang diambil dari Stack: ", pop_item)

print("Isi Stack setelah pop: ", stack.items)

Output program di atas adalah sebagai berikut:


Isi Stack: [1, 2, 3]
Ukuran Stack: 3
Data teratas Stack: 3
Data yang diambil dari Stack: 3
Isi Stack setelah pop: [1, 2]

Program tersebut melakukan operasi dasar pada Stack, yaitu


menambahkan data ke dalam Stack menggunakan fungsi push(),
mengambil dan menghapus data teratas dari Stack menggunakan fungsi
pop(), melihat data teratas Stack tanpa menghapusnya menggunakan
fungsi peek(), memeriksa apakah Stack kosong atau tidak menggunakan
fungsi is_empty(), dan menghitung jumlah data dalam Stack
menggunakan fungsi size(). Output program menunjukkan bahwa data 1,
2, dan 3 telah berhasil ditambahkan ke dalam Stack. Ukuran Stack awal
adalah 3, dan data teratas Stack adalah 3. Setelah mengambil data teratas
dari Stack menggunakan fungsi pop(), data 3 dihapus dari Stack dan
ukuran Stack berkurang menjadi 2.

4. Queue

43 | P a g e
Queue adalah struktur data yang memungkinkan penyimpanan data dengan
prinsip First In First Out (FIFO). Data yang pertama kali dimasukkan ke
dalam queue akan menjadi data yang pertama kali diambil. Gambaran
sederhana yang menjabarkan tipe ini adalah ketika orang yang sedang
mengantri. Siapa yang datang pertama, orang itulah yang akan dilayani
terlebih dulu.

Secara umum, Queue terdiri dari dua operasi dasar yaitu enqueue dan
dequeue. Operasi enqueue digunakan untuk menambahkan elemen ke ujung
belakang (tail) dari Queue, sedangkan operasi dequeue digunakan untuk
mengambil elemen dari ujung depan (head) dari Queue.

Queue memiliki beberapa konsep penting, yaitu:

• Head: elemen pertama (terdepan) pada Queue.

• Tail: elemen terakhir (terbelakang) pada Queue.

• Front: posisi Head pada Queue.

• Rear: posisi Tail pada Queue.

• Size: jumlah elemen yang tersimpan dalam Queue.

Keunggulan tipe queue:

• Data yang masuk dapat dilayani sesuai urutannya.

• Proses antrian data menjadi lebih cepat dan optimal.

• Menghandle beberapa tipe data sekaligus.

Kekurangan tipe queue:

• Ketika waktu pelayanan habis, maka data yang terakhir masuk tidak
dapat dilayani.

• Proses yang rumit ketika perlu dalam menambah atau menghapus


elemen dari tengah.

• Membutuhkan waktu yang lama saat mencari antrian.

44 | P a g e
Contoh program Python untuk mempelajari Queue :

class Queue:
def __init__(self):
self.items = []

def is_empty(self):
return self.items == []

def enqueue(self, item):


self.items.append(item)

def dequeue(self):
if self.is_empty():
return None
else:
return self.items.pop(0)

def size(self):
return len(self.items)

q = Queue()
print(q.is_empty()) # True
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.size()) # 3
print(q.dequeue()) # 1
print(q.size()) # 2

Penjelasan:
• Kelas Queue memiliki empat metode: __init__, is_empty, enqueue,
dequeue, dan size.

• Metode __init__ akan membuat sebuah atribut items berupa sebuah list
yang berisi elemen-elemen queue.

• Metode is_empty akan mengembalikan nilai True jika queue kosong,


dan False jika tidak.

• Metode enqueue akan menambahkan sebuah elemen ke queue dengan


menggunakan method append.

45 | P a g e
• Metode dequeue akan menghapus elemen pertama dari queue dengan
menggunakan method pop(0), lalu mengembalikan nilai elemen
tersebut. Jika queue kosong, metode ini akan mengembalikan None.

• Metode size akan mengembalikan panjang dari list items, yaitu jumlah
elemen pada queue.

• Terakhir, program di atas membuat sebuah instance dari kelas Queue


dan melakukan beberapa operasi pada queue tersebut seperti
menambahkan elemen dan menghapus elemen.

Output dari program diatas adalah:


True
3
1
2

Penjelasan:
• Pertama, program memanggil metode is_empty untuk mengecek
apakah queue kosong. Karena belum ada elemen yang ditambahkan
ke queue, maka outputnya adalah True.
• Selanjutnya, program menambahkan tiga elemen ke queue dengan
memanggil metode enqueue. Setelah itu, program memanggil metode
size untuk mengetahui jumlah elemen pada queue. Outputnya adalah
3.
• Kemudian, program memanggil metode dequeue untuk menghapus
elemen pertama dari queue dan mengembalikan nilai elemen tersebut.
Outputnya adalah 1.
• Akhirnya, program memanggil metode size lagi untuk mengetahui
jumlah elemen pada queue setelah satu elemen dihapus. Outputnya
adalah 2.

46 | P a g e
5. Tree

Tree adalah struktur data yang terdiri dari beberapa elemen yang terhubung
dengan bentuk hierarki. Elemen yang berada di atas disebut sebagai parent
node, sedangkan elemen yang berada di bawahnya disebut sebagai child
node.

Setiap node dapat berisi beberapa data atau link yang bersumber pada node
lainnya. Beberapa istilah yang ada pada tipe tree yaitu:

• Root: node terdapat pada tingkat paling atas..

• Child node: Turunan pada setiap node.

• Parent node: node yang mengandung sub-node.

• Siblings: node yang bersumber dari parent node yang sama.

• Leaf node: node yang tidak mempunyai turunan lagi.

Keunggulan tipe tree:

• Proses mencari data dapat dilakukan dengan cepat.

Kekurangan tipe tree:

• Membutuhkan waktu yang lebih lama saat memasukkan data


dikarenakan harus menyesuaikan dengan urutan nilainya.

47 | P a g e
6. Graph

Graph adalah struktur data yang terdiri dari beberapa node dan hubungan
antar node. Node pada graph dapat terhubung dengan node lainnya melalui
edge atau sisi.

Node pada tipe graph juga dikenal sebagai simpul. Jadi, setiap garis dapat
saling menghubungkan dua simpul. Biasanya tipe ini diperlukan sebagai cara
dalam menunjukkan jaringan tertentu. Misalnya seperti jaringan telepon.

Tipe graph ini dibedakan dua jenis jenis, yaitu directed graph dan undirected
graph. Directed graph yaitu setiap garis dapat terhubung ke semua simpul.
Sedangkan undirected graph yaitu tidak semua simpul akan terhubung
dengan garis. Jika sebuah simpul tidak dapat terhubung dengan simpul
lainnya, maka disebut dengan isolated vertex.

Keunggulan tipe graph:

• Bisa membantu memeriksa hubungan antar node dengan cepat.

• Cocok digunakan dalam bentuk grafik yang tidak mengandung banyak


node.

Kekurangan tipe graph:

• Membutuhkan waktu lama dalam memodifikasi data.

48 | P a g e
7. Hash Table

Hash table merupakan tipe yang digunakan dalam menyimpan data secara
asosiatif. Tipe ini dapat menyimpan data dalam bentuk array. Hal ini
memungkinkan Anda dalam mengakses data secara lebih cepat karena cukup
menggunakan indeksnya saja.
Operasi utama yang dapat digunakan dalam hash table yaitu search (untuk
mencari elemen), insert (untuk menyisipkan elemen), dan delete (untuk
menghapus elemen). Contoh penggunaan tipe hash table yaitu untuk mencari
data nama dan nomor telepon.
Keunggulan tipe hash table:
• Dibandingkan dengan tipe lainnya, kadang penggunaan hash table lebih
efisien dalam mencari data sehingga sering dipakai pada software untuk
pengindeksan basis data.
• Mudah dalam melakukan sinkronisasi.
Kekurangan tipe hash table:
• Kemungkinan bentrokan data (collision) menjadi sangat besar sehingga
menjadi tidak efisien.

C. Operasi pada Struktur Data


1. Insert
Operasi insert digunakan untuk menambahkan data ke dalam struktur data. Pada
struktur data seperti array, list, atau queue, operasi insert akan menambahkan
elemen baru pada posisi yang ditentukan. Sedangkan pada struktur data seperti
tree atau graph, operasi insert akan menambahkan node baru dan membuat
koneksi antara node tersebut dengan node yang sudah ada.

49 | P a g e
2. Delete
Operasi delete digunakan untuk menghapus data dari struktur data. Pada
struktur data seperti array, list, atau queue, operasi delete akan menghapus
elemen dari posisi yang ditentukan. Sedangkan pada struktur data seperti tree
atau graph, operasi delete akan menghapus node dan menghapus koneksi antara
node tersebut dengan node yang sudah ada.
3. Search
Operasi search digunakan untuk mencari data dalam struktur data. Pada struktur
data seperti array, list, atau queue, operasi search akan mencari elemen dengan
nilai tertentu. Sedangkan pada struktur data seperti tree atau graph, operasi
search akan mencari node dengan nilai tertentu dan mengembalikan node
tersebut jika ditemukan.
4. Traverse
Operasi traverse digunakan untuk mengakses semua elemen pada struktur data.
Pada struktur data seperti array, list, atau queue, operasi traverse akan
mengakses setiap elemen secara berurutan. Sedangkan pada struktur data seperti
tree atau graph, operasi traverse dapat dilakukan dalam berbagai cara, seperti
pre-order traversal, post-order traversal, atau inorder traversal, yang masing-
masing memiliki urutan akses yang berbeda.

Dalam penggunaan struktur data, operasi-insert, delete, search, dan


traverse sangatlah penting karena dengan memahami operasi-operasi tersebut
kita dapat memanipulasi struktur data dengan baik dan efisien. Setiap operasi
memiliki fungsi dan cara kerja yang berbeda-beda tergantung dari jenis struktur
data yang digunakan.

50 | P a g e
MODUL PRAKTEK
PENGENALAN BAHASA PEMROGRAMAN PYTHON
3.1. Tujuan Pembelajaran
1. Siswa dapat memahami sejarah perkembangan bahasa pemrograman Python.
2. Siswa dapat mengetahui fitur-fitur penting yang terdapat pada Python.
3. Siswa dapat mengetahui kelebihan dan kekurangan bahasa Python.
4. Siswa dapat melakukan proses instalasi bahasa Python.
5. Siswa mengerti konsep dan struktur bahasa pemrograman Python.
6. Siswa mengerti konsep variabel, tipe data, dan operator pada Python.
7. Siswa dapat membuat program sederhana menggunakan bahasa pemrograman Python.

3.2. Teori Dasar Python

Gambar 3.1. Logo Python

Python dikembangkan oleh Guido van Rossum pada tahun 1990 di CWI, Amsterdam
sebagai kelanjutan dari bahasa pemrograman ABC. Versi terakhir yang dikeluarkan CWI adalah
1.2. Tahun 1995, Guido pindah ke CNRI sambil terus melanjutkan pengembangan Python. Versi
terakhir yang dikeluarkan adalah 1.6. Tahun 2000, Guido dan para pengembang inti Python
pindah ke BeOpen.com yang merupakan sebuah perusahaan komersial dan membentuk
BeOpen PythonLabs. Python 2.0 dikeluarkan oleh BeOpen. Setelah mengeluarkan Python 2.0,
Guido dan beberapa anggota tim PythonLabs pindah ke DigitalCreations.

Saat ini pengembangan Python terus dilakukan oleh sekumpulan pemrogram yang
dikoordinir Guido dan Python Software Foundation. Python Software Foundation adalah
sebuah organisasi non-profit yang dibentuk sebagai pemegang hak cipta intelektual Python
sejak versi 2.1 dan dengan demikian mencegah Python dimiliki oleh perusahaan komersial.
Saat ini distribusi Python sudah mencapai versi 2.6.1 dan versi 3.0.

Nama Python dipilih oleh Guido sebagai nama bahasa ciptaannya karena kecintaan
guido pada acara televisi Monty Python’s Flying Circus. Oleh karena itu seringkali ungkapan-
ungkapan khas dari acara tersebut seringkali muncul dalam korespondensi antar pengguna
Python.

51 | P a g e
3.3. Pengenalan Python
Python merupakan bahasa pemrograman dinamis yang mendukung pemrograman
berbasis objek. Python dapat digunakan untuk berbagai keperluan pengembangan
perangkat lunak dan dapat berjalan di berbagai platform sistem operasi. Saat ini skrip python
dapat dijalankan pada sistem berbasis : Windows, Linux / Unix, Mac OS X, OS/2, Amiga.
Python didistribusikan dengan beberapa lisensi yang berbeda dari beberapa versi. Lisensi
Python tidak bertentangan baik menurut definisi Open Source maupun General Public
License (GPL). Interpreter Python dapat diperoleh diwebsite resminya di
http://www.python.org

Python merupakan bahasa pemrograman tingkat tinggi yang diracik oleh Guido van
Rossum. Python banyak digunakan untuk membuat berbagai macam program, seperti:
program CLI, Program GUI (desktop), Aplikasi Mobile, Web, IoT, Game, Program untuk
Hacking, dsb. Python juga dikenal dengan bahasa pemrograman yang mudah dipelajari,
karena struktur sintaknya rapi dan mudah dipahami.

3.4. Mengapa Python


Sisi utama yang membedakan Python dengan bahasa lain adalah dalam hal aturan
penulisan kode program. Bagi para programmer di luar python siap-siap dibingungkan dengan
aturan indentasi, tipe data, tuple, dan dictionary. Python memiliki kelebihan tersendiri
dibandingkan dengan bahasa lain terutama dalam hal penanganan modul, ini yang membuat
beberapa programmer menyukai python. Selain itu python merupakan salah satu produk yang
opensource, free, dan multiplatform.

Beberapa fitur yang dimiliki Python adalah :

• memiliki kepustakaan yang luas; dalam distribusi Python telah disediakan modulmodul
siap pakai untuk berbagai keperluan.
• memiliki tata bahasa yang jernih dan mudah dipelajari.
• memiliki aturan layout kode sumber yang memudahkan pengecekan, pembacaan
kembali dan penulisan ulang kode sumber. berorientasi obyek.
• memiliki sistem pengelolaan memori otomatis (garbage collection, seperti java)
modular, mudah dikembangkan dengan menciptakan modul-modul baru;
modulmodul tersebut dapat dibangun dengan bahasa Python maupun C/C++.
• memiliki fasilitas pengumpulan sampah otomatis, seperti halnya pada bahasa

52 | P a g e
• pemrograman Java, python memiliki fasilitas pengaturan penggunaan ingatan
komputer sehingga para pemrogram tidak perlu melakukan pengaturan ingatan
komputer secara langsung.

3.5. Kelebihan dan Kekurangan Python


a. kelebihan bahasa Python antara lain :
• Tidak ada tahapan kompilasi dan penyambungan (link) sehingga kecepatan perubahan pada
masa pembuatan system aplikasi meningkat.
• Tidak ada deklarasi tipe sehingga program menjadi lebih sederhana, singkat, dan fleksible.
• Manajemen memori otomatis yaitu kumpulan sampah memori sehingga dapat menghindari
pencatatan kode.
• Tipe data dan operasi tingkat tinggi yaitu kecepatan pembuatan system aplikasi menggunakan
tipe objek yang telah ada
• Pemrograman berorientasi objek
• Pelekatan dan perluasan dalam C
• Terdapat kelas, modul, eksepsi sehingga terdapat dukungan pemrograman skala besar secara
modular
• Pemuatan dinamis modul C sehingga ekstensi menjadi sederhana dan berkas biner yang kecil
• Pemuatan kembali secara dinamis modul phyton seperti memodifikasi aplikasi tanpa
menghentikannya
• Model objek universal kelas Satu
• Konstruksi pada saat aplikasi berjalan
• Interaktif, dinamis dan alamiah
• Akses hingga informasi interpreter
• Portabilitas secara luas seperti pemrograman antar platform tanpa ports
• Kompilasi untuk portable kode byte sehingga kecepatan eksekusi bertambah dan melindungi
kode sumber
• Antarmuka terpasang untuk pelayanan keluar seperti perangkat Bantu system, GUI,
persistence, database, dll

b. Beberapa kekurangan bahasa Python antara lain :


• Beberapa penugasan terdapat diluar dari jangkauan python, seperti bahasa pemrograman
dinamis lainnya, python tidak secepat atau efisien sebagai statis, tidak seperti bahasa
pemrograman kompilasi seperti bahasa C.

53 | P a g e
• Disebabkan python merupakan interpreter, python bukan merupakan perangkat bantu
terbaik untuk pengantar komponen performa kritis.
• Python tidak dapat digunakan sebagai dasar bahasa pemrograman implementasi untuk
beberapa komponen, tetapi dapat bekerja dengan baik sebagai bagian depan skrip antarmuka
untuk mereka.
• Python memberikan efisiensi dan fleksibilitas tradeoff by dengan tidak memberikannya secara
menyeluruh.
• Python menyediakan bahasa pemrograman optimasi untuk kegunaan, bersama dengan
perangkat bantu yang dibutuhkan untuk diintegrasikan dengan bahasa pemrograman lainnya.

3.6. Proses Instalasi Python


Proses instalasi python pada Windows dapat dilakukan langkah-langkah sebagai berikut :
1. Pilih software Python yang diinginkan, contoh memakai di modul ini menggunakan python
versi 3.7 yang dapat di download pada alamat situs berikut

https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe. (Boleh menggunakan versi


yang lebih tinggi dan sesuaikan dengan komputer)

Gambar 3.2. Windows Installer Package

2. Klik software python running program kemudian lakukan peng-instalan pada computer
dan ikuti langkah selanjutnya :

54 | P a g e
Gambar 3.3. Jendela Instalasi Python
3. Pilih direktori tujuan untuk tempat menyimpan program python, lalu klik tombol next.
Jika kita klik tombol Disk Usage maka muncul form yang berisi informasi berapa besar
kapasitas disk yang dibutuhkan/digunakan untuk menginstal python(sekitar 49 MB) :

Gambar 3.4. Jendela Customize Python

4. Jika kita klik tombol advanced, pilih compile .py ke byte code setelah instalasi, jika tidak
memilih juga tidak apa-apa. Tunggu beberapa menit selama proses instalasi
berlangsung dan tekan finish, ikuti petunjuk selanjutnya :

55 | P a g e
Gambar 3.5. Jendela Proses Instalasi

Gambar 3.6. Jendela Instalasi Python selesai dikerjakan


5. Selesai instalasi, komputer Anda telah ada Python, khususnya versi 3.7 pada
folder \AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python
3.7. Anda juga bisa mendownload langsung package ANACONDA lalu
pergunakan IDE SPYDER untuk Python bagi beberapa komputer Package
ANACONDA termasuk berat sehingga direkomendasikan IDLE untuk spek
komputer dengan ram dan processor yang rendah.

3.7. Cara Menjalankan Python


Klik tombol start Program Python26 IDLE (Python GUI), IDLE(GUI-Integrated Development
Environment) dengan tampilan sebagai berikut :

56 | P a g e
Gambar 3.7. Tampilan Awal Python
Pada window diatas,,didalam prompt (>>>), tuliskan : print instalasi python selesai. Kemudian
interpreter merespon dengan menampilkan pada layar :

print("Instalasi Python telah Selesai.. Siap Ngoding")


Outputnya adalah sebagai berikut :

Gambar 3.8. Contoh menjalankan perintah sederhana pada python

3.8. Perbandingan Penulisan Code

Gambar 3.9. Deklarasi Output Python yang sederhana

3.9. Cara Kerja Python Interpreter dan Compiler


Penterjemah bahasa python menggunakan interpreter (satu per-satu pernyataan), berbeda
dengan penterjemah compiler yang menterjemahkan kode program sekaligus (blok pernyataan).
Interpreter: Interpreter tidak menghasilkan bentuk object code, tetapi hasil translasinya hanya
dalam bentuk internal, dimana program induk harus selalu ada-berbeda dengan compiler.

57 | P a g e
Gambar 3.10. Skema Proses Interpreter
Compiler : Source code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau bahasa
assembly. Source code dan data diproses secara berbeda.

Gambar 3.11. Skema Proses Compiler

58 | P a g e

Anda mungkin juga menyukai