0% menganggap dokumen ini bermanfaat (0 suara)
40 tayangan49 halaman

Fungsi input() dalam Pemrograman Python

Modul ini membahas tentang algoritma dan pemrograman. Modul ini menjelaskan definisi algoritma dan pemrograman, sejarah dan perkembangan pemrograman, serta perbedaan antara algoritma dan program.

Diunggah oleh

ariefsusnawati3636
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 DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
40 tayangan49 halaman

Fungsi input() dalam Pemrograman Python

Modul ini membahas tentang algoritma dan pemrograman. Modul ini menjelaskan definisi algoritma dan pemrograman, sejarah dan perkembangan pemrograman, serta perbedaan antara algoritma dan program.

Diunggah oleh

ariefsusnawati3636
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 DOCX, PDF, TXT atau baca online di Scribd

MODUL PERKULIAHAN

Algoritma dan
Pemrograman

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh


Fakultas Ilmu Sistem Informasi SIC202 Arief Zikry, [Link]., [Link].
Komputer
00
DAFTAR ISI
1. Pendahuluan...............................................................................................................................3
1.1 Definisi Algoritma dan pemrograman..................................................................................3
1.2 Sejarah dan Perkembangan Pemrograman.........................................................................4
1.3 Perbedaan antara algoritma dan program..........................................................................5
2. Dasar-Dasar Pemrograman.........................................................................................................8
2.1 Struktur Dasar Program........................................................................................................8
2.2 Variabel dan Tipe Data.......................................................................................................12
2.3 Input dan Output................................................................................................................13
3. Pengendali Aliran Program.......................................................................................................16
3.1 Statement Kondisi..............................................................................................................16
3.2 Perulangan (Looping).........................................................................................................19
LATIHAN.........................................................................................................................................50
DAFTAR PUSTAKA..........................................................................................................................51

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


Arief Zikry,[Link].,[Link] [Link] 2
1. Pendahuluan

1.1 Definisi Algoritma dan pemrograman

a. Algoritma:
Algoritma adalah serangkaian langkah-langkah sistematis dan terorganisir yang
digunakan untuk menyelesaikan suatu masalah atau mencapai suatu tujuan dalam waktu
yang terbatas. Algoritma tidak harus terkait dengan komputer; itu bisa sepadan dengan
resep memasak atau instruksi untuk merakit furnitur. Namun, dalam konteks ilmu
komputer, algoritma biasanya dinyatakan dalam bentuk yang dapat dijalankan oleh mesin
dan digunakan sebagai dasar untuk menulis program komputer.

Karakteristik algoritma antara lain:

 Memiliki langkah-langkah yang jelas dan tidak ambigu.


 Memiliki titik masuk (awal) dan titik keluar (akhir).
 Efisien dalam hal waktu dan sumber daya.
 Memberikan solusi yang benar untuk semua masukan yang valid.
b. Pemrograman:
Pemrograman adalah proses menulis, menguji, dan memperbaiki (debugging) kode
yang akan dijalankan oleh komputer untuk mencapai suatu hasil atau fungsi tertentu.
Kode tersebut ditulis dalam bahasa pemrograman, yang bisa berupa bahasa tingkat tinggi
(seperti Python, Java, atau C++) atau bahasa tingkat rendah (seperti Assembly). Tujuan
pemrograman adalah untuk mengubah algoritma yang telah didefinisikan menjadi
instruksi yang dapat dijalankan oleh komputer.
Dalam pemrograman, kita memanfaatkan algoritma untuk menyelesaikan masalah,
dan kode yang ditulis adalah representasi dari algoritma tersebut dalam suatu bahasa
pemrograman.
Singkatnya, algoritma adalah "apa" yang harus dilakukan untuk menyelesaikan
masalah, sedangkan pemrograman adalah "bagaimana" kita menginstruksikan komputer
untuk melaksanakannya.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


Arief Zikry,[Link].,[Link] [Link] 3
1.2 Sejarah dan Perkembangan Pemrograman

Sejarah pemrograman komputer adalah cerita yang kaya dan beragam, mulai dari
konsep-konsep awal tentang komputasi hingga teknologi canggih yang kita miliki saat ini.
Mari kita jelajahi sejarah dan perkembangan pemrograman dalam garis besar:
1. Awal Mula:
1800-an: Adaide Charles Babbage, Analytical Engine, dikenal sebagai salah satu
mesin komputasi pertama yang dirancang. Meskipun mesin ini tidak pernah sepenuhnya
dibangun selama hidup Babbage, asisten Babbage, Ada Lovelace, dikenal sebagai
programmer pertama karena catatan-catatannya yang mendetail mengenai cara mesin
tersebut dapat diprogram untuk menghitung serangkaian angka bernardo.
2. Era Kartu Punch:
Awal 1900-an: Komputer awal, seperti IBM 701, menggunakan kartu punch untuk
menerima instruksi. Ini adalah era sebelum bahasa pemrograman, di mana instruksi
diberikan langsung dalam bentuk kode mesin atau Assembly yang sangat rendah
tingkatnya.
3. Lahirnya Bahasa Pemrograman Tingkat Tinggi:
 1950-an: Fortran (Formula Translation) diciptakan untuk kebutuhan komputasi ilmiah.
Ini adalah salah satu bahasa pemrograman tingkat tinggi pertama.
 1959: COBOL (Common Business Oriented Language) diciptakan, yang ditujukan
untuk aplikasi bisnis.
4. Dekade 1960-an dan 1970-an:
 LISP diciptakan untuk kebutuhan pemrograman simbolik dan penelitian kecerdasan
buatan.
 ALGOL menjadi inspirasi bagi banyak bahasa pemrograman yang datang setelahnya,
termasuk C, Java, dan Pascal.
 C diperkenalkan di akhir 1960-an dan awal 1970-an dan menjadi salah satu bahasa
paling populer dan berpengaruh.
 Pascal diperkenalkan sebagai alat pembelajaran dan juga untuk penelitian dalam
desain bahasa pemrograman.
5. Dekade 1980-an:
 C++ diperkenalkan, menambahkan fitur-fitur pemrograman berorientasi objek ke C.
 Perl diciptakan, menjadi populer untuk pemrograman skrip.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


4
Arief Zikry,[Link].,[Link] [Link]
 Python diperkenalkan pada akhir 1980-an sebagai bahasa pemrograman yang
menekankan pada keterbacaan kode.
6. Dekade 1990-an:
 Java diperkenalkan oleh Sun Microsystems, dengan semboyan "Tulis sekali, jalankan
di mana saja" karena portabilitas yang luar biasa.
 JavaScript diperkenalkan untuk memprogram web browser, tetapi sekarang telah
berkembang jauh lebih luas dari itu.
 PHP menjadi populer untuk pengembangan web.
7. Dekade 2000-an hingga Sekarang:
 C# diperkenalkan oleh Microsoft sebagai bagian dari .NET Framework.
 Ruby on Rails, sebuah kerangka kerja berbasis Ruby, mendorong adopsi Ruby secara
luas.
 Swift diperkenalkan oleh Apple sebagai pengganti Objective-C untuk pengembangan
iOS.
 Perkembangan teknologi seluler mendorong popularitas Kotlin untuk Android dan
Swift untuk iOS.
 Bahasa-bahasa seperti Go dan Rust muncul dengan fokus pada keamanan dan
konkurensi.
 Python mengalami kebangkitan besar-besaran karena populasinya di bidang ilmu
data, pembelajaran mesin, dan kecerdasan buatan.
Selain itu, ada tren seperti pemrograman fungsional, mikro-layanan, kontainerisasi
(seperti Docker), dan banyak konsep dan teknologi lain yang telah mempengaruhi lanskap
pemrograman.
Penting untuk dicatat bahwa sementara teknologi dan bahasa pemrograman terus
berkembang, konsep dasar pemrograman telah relatif tetap, dan pemahaman yang
mendalam tentang dasar-dasar ini akan membantu programmer menyesuaikan diri dengan
teknologi baru yang muncul.

1.3 Perbedaan antara algoritma dan program

Algoritma:

1. Definisi: Algoritma adalah serangkaian langkah-langkah sistematis untuk


menyelesaikan suatu masalah atau mencapai tujuan tertentu.
2. Representasi: Algoritma biasanya dijelaskan dengan bahasa sehari-hari, pseudokode,
atau diagram alir, dan tidak terikat pada bahasa pemrograman tertentu.
2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning
5
Arief Zikry,[Link].,[Link] [Link]
3. Kemandirian: Algoritma adalah konsep yang independen dan dapat
diimplementasikan dalam berbagai bahasa pemrograman atau platform.
4. Tujuan: Tujuan utama algoritma adalah untuk mendefinisikan solusi untuk suatu
masalah atau prosedur tertentu dengan cara yang jelas dan efisien.
5. Abstraksi: Algoritma biasanya lebih abstrak daripada program dan fokus pada "apa"
yang harus dilakukan, bukan "bagaimana" melakukannya pada platform atau bahasa
pemrograman tertentu.

Program:

1. Definisi: Program adalah implementasi konkret dari algoritma dalam bahasa


pemrograman tertentu yang dapat dijalankan oleh komputer.
2. Representasi: Program ditulis dalam sintaks spesifik bahasa pemrograman dan
mengikuti aturan dan konvensi bahasa tersebut.
3. Ketergantungan: Program bergantung pada bahasa pemrograman yang digunakan
dan, dalam beberapa kasus, pada platform tertentu.
4. Tujuan: Tujuan utama program adalah untuk dijalankan oleh komputer dan
menghasilkan output yang diharapkan. Untuk itu, program harus memperhitungkan
aspek-aspek teknis seperti pengelolaan memori, input/output, dan interaksi dengan
perangkat keras.
5. Spesifik: Program mencerminkan detail-detail teknis tentang "bagaimana"
mengeksekusi langkah-langkah yang didefinisikan dalam algoritma dalam konteks
perangkat keras dan sistem operasi tertentu.

Contoh:

Misalkan kita memiliki masalah mencari bilangan terbesar dalam daftar bilangan.

Algoritma:

1. Mulai dengan asumsi bahwa bilangan pertama adalah bilangan terbesar.


2. Lihat setiap bilangan berikutnya di daftar.
3. Jika bilangan tersebut lebih besar dari bilangan terbesar saat ini, anggap bilangan
tersebut sebagai bilangan terbesar.
4. Lanjutkan hingga semua bilangan diperiksa.
5. Bilangan terbesar saat ini adalah bilangan terbesar di daftar.
Program (dalam Python):

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


6
Arief Zikry,[Link].,[Link] [Link]
Dalam contoh di atas, algoritma memberikan serangkaian langkah untuk menemukan
bilangan terbesar, sedangkan program memberikan implementasi konkret dari algoritma
tersebut dalam bahasa pemrograman Python.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


7
Arief Zikry,[Link].,[Link] [Link]
2. Dasar-Dasar Pemrograman

2.1 Struktur Dasar Program

Sebuah program komputer, pada dasarnya, adalah serangkaian instruksi yang diberikan
kepada komputer untuk dieksekusi. Meskipun struktur dasar bisa bervariasi antar bahasa
pemrograman, banyak elemen yang umum ditemukan di banyak bahasa.

A. Deklarasi & Inisialisasi


Sebelum variabel atau fungsi digunakan, mereka seringkali perlu dideklarasikan atau
diinisialisasi. Berikut adalah beberapa penjelasan tentang fungsi utama berdasarkan
beberapa bahasa pemrograman :
B. Fungsi Utama:

Dalam konteks pemrograman, fungsi utama seringkali merupakan titik awal eksekusi
suatu program. Ini adalah fungsi yang pertama kali dipanggil ketika program dijalankan.
Berikut adalah beberapa penjelasan tentang fungsi utama berdasarkan beberapa bahasa
pemrograman :
1. C dan C++:
Dalam C dan C++, main() adalah fungsi utama. Ketika program dijalankan, main()
adalah fungsi pertama yang dieksekusi.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


8
Arief Zikry,[Link].,[Link] [Link]
2. Java :
Dalam Java, public static void main(String[] args) dalam kelas publik adalah titik
masuk program. Ini adalah metode yang pertama kali dieksekusi saat menjalankan
program Java.

[Link]:
Meskipun Python tidak memiliki konsep "fungsi utama" yang ketat seperti C atau
Java, konstruksi berikut sering digunakan untuk menunjukkan bagian kode yang harus
dieksekusi saat script dijalankan sebagai program standalone (bukan diimpor sebagai
modul) :

C. Ekspresi & Statement


Ekspresi adalah kombinasi nilai, variabel, operator, dan panggilan fungsi yang
dievaluasi menjadi nilai tunggal. Statement adalah instruksi tunggal yang memberitahu
komputer untuk melakukan sesuatu.

D. Kontrol Aliran
Kontrol aliran dalam pemrograman merujuk pada urutan di mana instruksi atau
pernyataan dieksekusi atau dievaluasi. Kontrol aliran adalah konsep dasar yang
memungkinkan pemrogram membuat keputusan, mengulangi blok kode, dan
menjalankan kode berdasarkan kondisi tertentu. Berikut adalah beberapa elemen dasar
kontrol aliran:
2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning
9
Arief Zikry,[Link].,[Link] [Link]
1. Pernyataan Kondisional
Pernyataan kondisional memungkinkan pemrogram membuat keputusan dan
mengeksekusi blok kode berdasarkan apakah suatu kondisi benar atau salah.

2. Looping atau Pengulangan


Loop memungkinkan pemrogram untuk mengeksekusi blok kode berulang kali
berdasarkan kondisi atau jumlah iterasi tertentu.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


10
Arief Zikry,[Link].,[Link] [Link]
3. Pernyataan Kontrol Lainnya
Ada beberapa pernyataan lain yang mempengaruhi kontrol aliran.

2.2 Variabel dan Tipe Data

1. Variabel
Variabel dalam pemrograman berfungsi sebagai wadah atau tempat penyimpanan untuk
data. Sebuah variabel memiliki nama (sering disebut sebagai "identifier") yang digunakan
untuk mengacu pada data yang disimpannya. Saat program dijalankan, data yang
disimpan dalam variabel dapat diubah atau dimanipulasi sesuai kebutuhan.
Karakteristik Variabel:
1. Nama (Identifier): Setiap variabel memiliki nama yang unik yang disebut identifier. Ini
memungkinkan pemrogram untuk mengakses atau mengubah nilai yang disimpan di
memori.
2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning
11
Arief Zikry,[Link].,[Link] [Link]
2. Nilai: Ini adalah data aktual yang disimpan di memori dan diasosiasikan dengan nama
variabel.
3. Tipe Data: Menentukan jenis data yang bisa disimpan dalam variabel.
4. Alamat Memori: Lokasi fisik di mana variabel disimpan di memori.
5. Cakupan (Scope): Menentukan area kode di mana variabel dapat diakses.
6. Riwayat Hidup (Lifespan): Durasi waktu di mana variabel ada di memori saat program
dijalankan.
2. Tipe Data
Tipe data menentukan jenis data yang dapat disimpan dalam suatu variabel. Ini juga
menentukan operasi apa yang dapat dilakukan terhadap data tersebut dan berapa
banyak memori yang akan ditempati oleh variabel tersebut.
Tipe Data Dasar (Primitif):
1. Integer: Digunakan untuk menyimpan bilangan bulat (tanpa titik desimal). Contoh: -3,
0, 42.
2. Floating Point (Float/Double): Digunakan untuk menyimpan bilangan dengan titik
desimal. Float biasanya memakan memori lebih sedikit dibandingkan dengan Double,
tetapi Double memiliki presisi lebih tinggi. Contoh: -3.14, 0.001, 20.6.
3. Character (Char): Digunakan untuk menyimpan karakter tunggal, seperti 'A', '1', atau
'?'.
4. Boolean (Bool): Digunakan untuk menyimpan nilai kebenaran, yaitu True atau False.

Tipe Data Majemuk (Komposit):


1. String: Menyimpan rangkaian karakter. Contoh: "Halo, Dunia!"
2. Array: Kumpulan elemen dengan tipe data yang sama yang diakses berdasarkan
indeks. Contoh: [1, 2, 3, 4, 5].
3. List: Mirip dengan array tetapi biasanya lebih fleksibel dalam ukuran dan jenis
elemen.
4. Dictionary / Map: Kumpulan pasangan kunci-nilai.
5. Struct / Record: Kumpulan variabel yang mungkin memiliki tipe data yang berbeda,
dikelompokkan bersama di bawah satu nama.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


12
Arief Zikry,[Link].,[Link] [Link]
6. Class / Object: Dalam paradigma pemrograman berorientasi objek, kelas adalah cetak
biru yang mendefinisikan atribut (variabel) dan metode (fungsi), sedangkan objek
adalah instans dari kelas tersebut.

Dalam setiap bahasa pemrograman, cara mendeklarasikan variabel dan tipe data
yang didukung mungkin berbeda. Namun, konsep dasar yang dijelaskan di atas tetap
relevan di hampir semua bahasa pemrograman.

2.3 Input dan Output

Input dan output adalah dua komponen fundamental dalam pemrograman yang
memungkinkan program berkomunikasi dengan pengguna atau sistem lain. Input adalah cara kita
memberi data kepada program, sedangkan output adalah cara program menyajikan informasi
kembali kepada kita atau sistem lain.

1. Input

Input adalah proses menerima data dari sumber eksternal. Dalam konteks aplikasi yang
berinteraksi dengan pengguna, ini biasanya berarti menerima data dari keyboard atau
mouse. Dalam ustak yang lebih kompleks, input bisa berasal dari file, basis data, sensor, atau
sumber lainnya, Berikut contoh input dalam Bahasa pemrograman :

a. Python:
Dalam Python, fungsi input() digunakan untuk menerima input dari pengguna.

b. Dalam Java, Anda dapat menggunakan kelas Scanner dari ustaka standar untuk
menerima input dari pengguna.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


13
Arief Zikry,[Link].,[Link] [Link]
c. C++:
Dalam C++, Anda dapat menggunakan cin untuk menerima input dari pengguna.

2. Output
Output adalah proses menampilkan data ke tujuan eksternal. Ini bisa berarti
menampilkan informasi di layar, menulis ke file, mengirim data ke alat, dan lainnya, Berikut
contoh input dalam Bahasa pemrograman :
a. Python:
Dalam Python, fungsi print() digunakan untuk menampilkan output ke layar.

b. Java :
Dalam Java, Anda dapat menggunakan [Link]() untuk menampilkan output
ke layar.

c. C++:
Dalam C++, Anda dapat menggunakan cout untuk menampilkan output ke layar.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


14
Arief Zikry,[Link].,[Link] [Link]
Dalam pemrograman yang lebih maju, input dan output juga bisa melibatkan operasi
dengan file, komunikasi jaringan, interaksi dengan basis data, dan lainnya. Namun, konsep
dasarnya tetap sama: menerima data dan menyajikan hasil.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


15
Arief Zikry,[Link].,[Link] [Link]
3. Pengendali Aliran Program

Pengendali aliran program mengacu pada mekanisme yang mengatur urutan eksekusi
instruksi dalam sebuah program. Ada tiga jenis struktur pengendali aliran dasar: sekuensial,
pemilihan (kondisional), dan perulangan. Struktur-struktur ini memungkinkan programmer untuk
menciptakan alur eksekusi yang kompleks berdasarkan kondisi dan perulangan tertentu.

3.1 Statement Kondisi

1. if, else:
 if: Menjalankan blok kode jika kondisinya bernilai benar.
 else: Menjalankan blok kode jika kondisi if bernilai salah.
 elif/else if: Menambahkan kondisi lain setelah if dan sebelum else.
Mekanisme ini memungkinkan program untuk membuat keputusan dan
menjalankan instruksi berbeda berdasarkan kebenaran atau ketidakbenaran kondisi
tertentu, Penerapan didalam Bahasa pemrograman :
a. Pyton :

b. Java :

c. C++ :
2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning
16
Arief Zikry,[Link].,[Link] [Link]
2. switch-case:

Dalam beberapa bahasa pemrograman, mekanisme switch-case digunakan untuk


membandingkan sebuah variabel dengan serangkaian nilai konstan. Berdasarkan hasil
perbandingan, blok kode yang sesuai dengan nilai yang cocok akan dieksekusi, berikut
peneraparan didalam Bahasa pemrograman :

a. Pyton :
Python tidak memiliki struktur switch-case bawaan. Namun, Anda dapat menirunya
dengan menggunakan kamus (dictionary):

b. Java

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


17
Arief Zikry,[Link].,[Link] [Link]
c. C++ :

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


18
Arief Zikry,[Link].,[Link] [Link]
3.2 Perulangan (Looping)

Perulangan memungkinkan eksekusi blok kode berulang kali berdasarkan kondisi atau
jumlah iterasi tertentu.

1. for:

Perulangan for digunakan ketika kita tahu sebelumnya berapa kali iterasi yang ingin
kita lakukan. Biasanya, kita menggunakan perulangan for untuk mengulangi kode
berdasarkan jumlah tertentu, berikut penerapan didalam Bahasa pemrograman :

2. while:

Perulangan while terus menjalankan blok kode selama kondisi yang diberikan bernilai
benar. Jika kondisi sudah salah sejak awal, blok kode mungkin tidak pernah dijalankan.

3. do-while:

Mirip dengan perulangan while, namun perbedaannya adalah blok kode di dalamnya
akan dijalankan setidaknya sekali sebelum kondisinya diperiksa, karena pengecekan
kondisi dilakukan setelah eksekusi blok kode.

Kesimpulan:

Pengendali aliran program memungkinkan kita untuk menciptakan logika yang kompleks dan
responsif. Kondisional (seperti if-else dan switch-case) memungkinkan program untuk merespons
situasi yang berbeda, sementara perulangan (seperti for, while, dan do-while) memungkinkan
program untuk menjalankan tugas berulang kali tanpa harus menulis ulang kode yang sama
berulang kali. Memahami dan menguasai struktur-struktur ini adalah kunci untuk membangun
program yang efisien dan efektif.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


19
Arief Zikry,[Link].,[Link] [Link]
4. Fungsi

4.1 Definisi Fungsi

Fungsi adalah blok kode terorganisir dan dapat digunakan kembali yang digunakan untuk
melakukan tugas atau aksi tertentu. Fungsi memberikan modularitas untuk kode Anda dan
memungkinkan untuk melakukan pemakaian ulang kode. Dalam pemrograman, kita sering kali
menemui tugas-tugas yang perlu diulang. Daripada menulis kode yang sama berulang kali, kita
dapat menggunakan fungsi.

Contoh :

Di sini, sapa adalah fungsi yang menerima satu parameter nama dan ketika dipanggil, ia akan
mencetak pesan sapaan.

4.2 Parameter dan Argumen

Parameter adalah variabel yang digunakan dalam deklarasi fungsi. Parameter


memberikan informasi kepada fungsi tentang jenis data apa yang perlu diproses. Dalam contoh di
atas, nama adalah parameter.
Argumen adalah nilai yang diberikan ke fungsi saat Anda memanggilnya. Nilai ini
diteruskan ke fungsi, dimana nilai tersebut menggantikan parameter yang didefinisikan
sebelumnya.
Contoh :

Dalam contoh di atas, angka1 dan angka2 adalah parameter, sedangkan 5 dan 3 adalah argumen.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


20
Arief Zikry,[Link].,[Link] [Link]
4.3 Return Value

Return value adalah nilai yang dikembalikan oleh fungsi ke pemanggilnya ketika selesai
menjalankan. Setelah pernyataan return dieksekusi, fungsi berhenti dan kontrol kembali ke
pemanggil. Tidak semua fungsi harus memiliki nilai kembali. Namun, jika perlu, fungsi dapat
mengembalikan satu atau lebih nilai.

Contoh :

Dalam contoh di atas, fungsi kuadrat mengembalikan nilai kuadrat dari argumen yang diberikan
dan nilai tersebut dapat disimpan dalam variabel atau digunakan langsung oleh pemanggil.

Ringkasan:

 Fungsi adalah blok kode yang dapat digunakan kembali untuk tugas tertentu.
 Parameter adalah variabel dalam deklarasi fungsi, sedangkan argumen adalah nilai yang
diberikan ke fungsi saat dipanggil.
 Return value adalah nilai yang dikembalikan oleh fungsi ke pemanggilnya.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


21
Arief Zikry,[Link].,[Link] [Link]
5. Rekursi

5.1 Konsep Rekursi

Rekursi adalah teknik di mana suatu fungsi memanggil dirinya sendiri. Proses ini terus
berlanjut sampai kondisi tertentu terpenuhi dan fungsi berhenti memanggil dirinya sendiri. Setiap
pemanggilan rekursif mengurangi masalah ke ukuran yang lebih kecil, dan akhirnya masalah
tersebut dapat diselesaikan tanpa lebih lanjut memanggil fungsi secara rekursif.

Ada dua bagian utama dalam fungsi rekursif:

 Basis (base case): Ini adalah kondisi yang, ketika terpenuhi, akan menghentikan
pemanggilan rekursif lebih lanjut.
 Langkah rekursif (recursive step): Di mana fungsi memanggil dirinya sendiri dengan
argumen yang berbeda.

5.2 Contoh-Contoh Fungsi Rekursi

a. Faktotial

b. Deret Fibonacci

5.3 Rekursi vs Iterasi

a. Rekursi:

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


22
Arief Zikry,[Link].,[Link] [Link]
 Teknik di mana fungsi memanggil dirinya sendiri.
 Memiliki struktur berbasis pohon karena setiap pemanggilan memunculkan satu
atau lebih pemanggilan lainnya.
 Mungkin lebih mudah untuk memahami dan menulis tergantung pada masalah
yang dihadapi.
 Tetapi bisa menjadi tidak efisien dan memakan memori lebih banyak karena
setiap pemanggilan memerlukan tumpukan memori tambahan.
b. Iterasi:
 Teknik di mana sebuah tugas diulang menggunakan struktur kontrol seperti loop
(for, while).
 Biasanya lebih efisien dari rekursi dalam hal penggunaan memori.
 Di beberapa kasus, kode iteratif mungkin lebih sulit untuk memahami dan
menulis dibandingkan dengan rekursi.

Ringkasan:

Rekursi adalah teknik di mana suatu fungsi memanggil dirinya sendiri, biasanya digunakan untuk
memecahkan masalah yang dapat dibagi menjadi sub-masalah yang lebih kecil. Iterasi adalah
proses pengulangan menggunakan loop. Meskipun rekursi mungkin lebih intuitif untuk beberapa
jenis masalah, ia dapat memerlukan penggunaan memori yang lebih besar dibandingkan dengan
iterasi. Pilihan antara keduanya tergantung pada masalah khusus yang dihadapi dan preferensi
pribadi pemrogram.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


23
Arief Zikry,[Link].,[Link] [Link]
6. Array dan List

6.1 Definisi dan Perbedaan Array dan List

1. Array:
a. Definisi: Sebuah array adalah kumpulan elemen yang memiliki tipe data yang sama
dan berurutan. Ukuran dari array biasanya tetap, yang berarti setelah suatu array
didefinisikan, kita tidak dapat mengubah ukurannya.
b. Perbedaan dengan List:
 Elemen dalam array harus memiliki tipe data yang sama.
 Ukuran array biasanya tetap.
2. List:
a. Definisi: List adalah kumpulan elemen yang berurutan, tetapi tidak terbatas pada tipe
data yang sama. Dalam banyak bahasa pemrograman, seperti Python, list memiliki
fleksibilitas untuk berubah ukurannya (dinamis).
b. Perbedaan dengan Array:
 Elemen dalam list dapat memiliki tipe data yang berbeda.
 Ukuran list dapat berubah-ubah (dinamis).

6.2 Cara Kerja dan Penerapan dalam Pemrograman

1. Array:

Cara Kerja: Karena array memiliki ukuran yang tetap dan tipe data yang sama
untuk setiap elemennya, mereka biasanya diwakili dalam memori secara berurutan. Hal
ini memungkinkan akses yang cepat ke elemen berdasarkan indeksnya.

Penerapan:

Bahasa seperti C dan Java mendukung array secara native.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


24
Arief Zikry,[Link].,[Link] [Link]
Dalam Python, "array" seperti yang dikenal dalam banyak bahasa pemrograman lain
kurang umum. Sebagai gantinya, Python memiliki tipe data built-in yang disebut "list"
yang berfungsi mirip dengan array tetapi dengan lebih banyak fleksibilitas. Namun, jika
Anda mencari struktur data yang benar-benar mirip dengan array klasik, Python juga
memiliki modul array.

Penerapan dalam Bahasa pyton

2. List:
 Cara Kerja: List dalam banyak bahasa pemrograman diwakili sebagai struktur data
yang dinamis, yang memungkinkannya tumbuh atau menyusut sesuai kebutuhan.
Implementasi mungkin melibatkan array dinamis, node berantai, atau metode lain.
 Penerapan:
Python adalah salah satu bahasa yang menggunakan list sebagai salah satu tipe data
utamanya.

Ringkasan :

Array dan list adalah struktur data yang berurutan. Sementara array memiliki ukuran yang
tetap dan elemen dengan tipe data yang sama, list lebih fleksibel dalam hal ukuran dan tipe

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


25
Arief Zikry,[Link].,[Link] [Link]
elemen. Pemilihan antara array atau list tergantung pada kebutuhan spesifik dari aplikasi
pemrograman yang dikerjakan. Sebagai contoh, jika kita memerlukan struktur data dengan
ukuran yang tetap dan operasi akses yang cepat, array mungkin menjadi pilihan yang tepat.
Namun, jika kita memerlukan struktur yang lebih dinamis dengan kemampuan untuk menyisipkan
atau menghapus elemen dengan mudah, list mungkin lebih sesuai.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


26
Arief Zikry,[Link].,[Link] [Link]
7. String

7.1 Pengenalan String Sebagai Array Karakter

Di banyak bahasa pemrograman, termasuk Python dan Java, string didefinisikan sebagai
sebuah kumpulan dari karakter-karakter yang tersusun secara berurutan. Dalam banyak hal,
string dapat dilihat dan diperlakukan seperti array karakter.

Contoh :

7.2 Fungsi-Fungsi Dasar String

1. Panjang String
Mengembalikan jumlah karakter dalam string

2. Konversi dari huruf besar ke huruf kecil

3. Pengecekan Substring

4. Split dan Join

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


27
Arief Zikry,[Link].,[Link] [Link]
7.3 Manipulasi String

1. Penggantian Substring :

2. Pemotongan (slicing) String :


Menggunakan index untuk memotong bagian tertentu dari string.

3. Pembalikan String :

4. Penghilangan Whitespace :
Menghilangkan whitespace (spasi, tab, baris baru) dari awal dan akhir string.

5. Format String :
Menyisipkan nilai tertentu ke dalam string.

Dengan memahami fungsi-fungsi dasar dan manipulasi string ini, Anda dapat
melakukan banyak operasi yang kompleks pada teks. Pemahaman dasar ini juga penting
saat Anda berinteraksi dengan input dan output dalam pemrograman, serta saat bekerja
dengan data teks dalam banyak aplikasi.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


28
Arief Zikry,[Link].,[Link] [Link]
8. Struktur Data : Stack & Queue

8.1 Pengenalan stack dan queue

1. Stack (Tumpukan):
Stack adalah struktur data linier yang mengikuti prinsip Last In First Out (LIFO). Artinya,
elemen terakhir yang ditambahkan ke stack akan menjadi elemen pertama yang diambil
keluar.
2. Queue (Antrian):
Queue adalah struktur data linier yang mengikuti prinsip First In First Out (FIFO). Artinya,
elemen pertama yang ditambahkan ke queue akan menjadi elemen pertama yang diambil
keluar.

8.2 Implementasi dan Operasi Dasar

1. Stack:
a. Operasi Dasar:
 Push: Menambahkan elemen ke puncak stack.
 Pop: Mengambil dan menghapus elemen dari puncak stack.
 Peek/Top: Melihat elemen puncak tanpa menghapusnya.
 IsEmpty: Memeriksa apakah stack kosong.
b. Implemantasi Pyton :

2. Queue
2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning
29
Arief Zikry,[Link].,[Link] [Link]
a. Operasi Dasar:
 Enqueue: Menambahkan elemen ke akhir queue.
 Dequeue: Mengambil dan menghapus elemen dari awal queue.
 Front: Melihat elemen depan tanpa menghapusnya.
 IsEmpty: Memeriksa apakah queue kosong.
b. Implementasi Python:

8.3 Contoh Aplikasi

1. Stack:
 Penyelesaian Ekspresi Matematika: Stack dapat digunakan untuk mengevaluasi
ekspresi postfix atau prefix.
 Undo Mechanism: Fungsi "undo" dalam banyak aplikasi perangkat lunak
menggunakan konsep stack.
 Navigasi Browser: Tombol "back" pada browser menggunakan konsep stack untuk
kembali ke halaman sebelumnya.
2. Queue:
 Sistem Antrian: Seperti antrian tiket bioskop, pemesanan makanan di restoran cepat
saji.
 Penjadwalan Tugas: Dalam komputasi, penjadwalan tugas sering menggunakan
queue.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


30
Arief Zikry,[Link].,[Link] [Link]
 Manajemen Buffer: Dalam komunikasi data atau multimedia, buffer sering dikelola
dengan konsep queue.

Dengan memahami konsep dasar stack dan queue, serta bagaimana mengimplementasikannya,
Anda dapat menyelesaikan berbagai macam masalah pemrograman dan desain sistem dengan
lebih efisien.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


31
Arief Zikry,[Link].,[Link] [Link]
9. Struktur Data: Linked List

9.1 Pengenalan Linked List

Linked List adalah struktur data linier yang terdiri dari sekumpulan node (simpul) yang
digunakan untuk merepresentasikan urutan. Berbeda dengan array, di mana setiap elemen
memiliki indeks dan ditempatkan berdampingan di memori, elemen-elemen di linked list
disimpan dalam node. Setiap node memiliki dua bagian: data dan referensi (pointer) ke node
berikutnya dalam urutan.

9.2 Jenis-jenis linked list: singly, doubly, dan circular

1. Singly Linked List (Daftar Bertaut Tunggal):


 Setiap node memiliki data dan satu pointer yang menunjuk ke node berikutnya.
 Node terakhir dalam list ini menunjuk ke NULL, yang menandakan akhir dari list.
2. Doubly Linked List (Daftar Bertaut Ganda):
 Setiap node memiliki data serta dua pointer: satu menunjuk ke node sebelumnya dan
satu lagi menunjuk ke node berikutnya.
 Memberikan kemampuan untuk bergerak maju dan mundur dalam list.
3. Circular Linked List (Daftar Bertaut Sirkular):
 Mirip dengan singly linked list, tetapi node terakhir dalam list menunjuk kembali ke
node pertama daripada NULL.
 Tidak ada node yang menunjuk ke NULL; alih-alih, list berputar kembali ke dirinya
sendiri.

9.3 Operasi Dasar linked List

1. Penambahan Elemen (Insertion):


 Di awal (head): Tambahkan elemen di awal list.
 Di tengah: Tambahkan elemen setelah node tertentu.
 Di akhir: Tambahkan elemen di bagian akhir list.
2. Penghapusan Elemen (Deletion):
 Dari awal: Hapus node pertama dari list.
 Dari tengah: Hapus node tertentu berdasarkan data atau posisi.
 Dari akhir: Hapus node terakhir.
3. Pencarian:

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


32
Arief Zikry,[Link].,[Link] [Link]
 Mencari apakah elemen tertentu ada dalam list.
 Dapat dilakukan dengan iterasi dari head hingga elemen yang dicari ditemukan atau
mencapai akhir list.
4. Traversing (Penelusuran):
 Melalui setiap elemen dalam list dari awal hingga akhir.
 Berguna untuk mencetak semua elemen atau melakukan operasi lain pada setiap
elemen.
5. Pembalikan:
 Mengubah urutan elemen di linked list sehingga elemen terakhir menjadi pertama,
dan seterusnya.
6. Pengukuran Panjang:
 Menghitung jumlah node dalam list.

Contoh Implementasi (Singly Linked List pada Python):

Dengan memahami konsep linked list dan operasi dasarnya, programmer dapat mengatur data
dengan lebih fleksibel dan dinamis dibandingkan dengan struktur data linier lainnya seperti array.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


33
Arief Zikry,[Link].,[Link] [Link]
10. Struktur Data : Trees

10.1 Pengenalan Trees

Trees adalah struktur data hierarkis yang digunakan untuk merepresentasikan hubungan
antara objek-objek. Trees terdiri dari nodes (simpul) yang terhubung oleh edges (garis). Tidak
seperti array atau linked list, trees dapat memiliki lebih dari dua cabang.

Elemen-elemen penting dari tree:

 Root: Node awal dari tree.


 Parent: Node yang memiliki cabang.
 Child: Node yang merupakan cabang dari node lain.
 Leaf: Node yang tidak memiliki cabang.
 Depth: Jarak suatu node dari root.
 Height: Jarak maksimum dari node ke leaf.

10.2 Binary trees, traversal methods

Binary Trees adalah jenis tree dimana setiap node memiliki paling banyak dua anak (biasanya
disebut sebagai "left child" dan "right child").

Metode Traversal:

 In-order (LNR):
1. Kunjungi left child.
2. Kunjungi node saat ini.
3. Kunjungi right child.
 Pre-order (NLR):
1. Kunjungi node saat ini.
2. Kunjungi left child.
3. Kunjungi right child.
 Post-order (LRN):
1. Kunjungi left child.
2. Kunjungi right child.
3. Kunjungi node saat ini.
 Level-order (Breadth-First Search):

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


34
Arief Zikry,[Link].,[Link] [Link]
Mengunjungi semua nodes pada kedalaman d sebelum mengunjungi nodes pada
kedalaman d+1.

10.3 Binary Search Trees (BST):

BST adalah binary tree khusus dimana untuk setiap node:

 Semua node di left child memiliki nilai yang kurang dari node saat ini.

 Semua node di right child memiliki nilai yang lebih besar dari node saat ini.

Operasi dasar BST:

 Insert: Menambahkan elemen baru ke tree sambil mempertahankan properti BST.

 Search: Mencari elemen di tree.

 Delete: Menghapus elemen dari tree sambil mempertahankan properti BST.

Kelebihan BST:

 Operasi seperti pencarian, penyisipan, dan penghapusan dapat dilakukan dengan cepat,
terutama jika tree seimbang.

Kekurangan BST:

 Jika tidak seimbang (contoh: saat data dimasukkan dalam urutan terurut), operasi dapat
menjadi lambat, mendekati O(n).

Contoh Implementasi (Binary Search Trees pada Python):

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


35
Arief Zikry,[Link].,[Link] [Link]
Dengan memahami konsep trees, khususnya binary trees dan binary search trees, programmer
dapat memanfaatkan struktur data ini untuk menyusun dan mencari data dengan lebih efisien
dalam berbagai aplikasi, dari database hingga algoritma pathfinding.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


36
Arief Zikry,[Link].,[Link] [Link]
11. Graf

11.1 Pengenalan Graf

Graf adalah koleksi dari titik-titik yang disebut simpul (vertices) dan garis yang
menghubungkan simpul-simpul tersebut disebut sisi (edges). Graf digunakan untuk
merepresentasikan banyak jenis informasi dan struktur dalam dunia nyata, seperti jaringan
komputer, peta, jaringan sosial, dan lain-lain.

Dua jenis utama graf:

 Directed Graph (Digraph): Sisi memiliki arah, yaitu dari satu simpul ke simpul lainnya.

 Undirected Graph: Sisi tidak memiliki arah.

11.2 Representasi Utama Graf

1. Adjacency Matrix:
 Matriks 2D (dua dimensi) digunakan untuk merepresentasikan graf.
 Ukuran matriks adalah V x V dimana V adalah jumlah simpul di graf.
 Nilai m[i][j] adalah 1 jika ada sisi dari simpul i ke simpul j; sebaliknya 0.

Kelebihan:

 Representasi sederhana.
 Memeriksa keberadaan sisi antara dua simpul cepat.

Kekurangan:

 Memerlukan banyak memori untuk graf besar.


 Tidak efisien dalam hal ruang untuk graf yang jarang (sparse graphs).
2. Adjacency List:
 Setiap simpul memiliki daftar yang memuat simpul-simpul tetangganya.
 Dapat direpresentasikan dengan array atau linked list.

Kelebihan:

 Menghemat memori untuk graf yang jarang.


 Lebih intuitif untuk beberapa operasi.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


37
Arief Zikry,[Link].,[Link] [Link]
Kekurangan:

 Lebih sulit untuk memeriksa keberadaan sisi tertentu.

11.3 Traversal Graf

1. Breadth-First Search (BFS):


 Mengunjungi semua simpul pada kedalaman saat ini sebelum bergerak ke simpul
pada kedalaman berikutnya.
 Menggunakan antrian untuk menampung simpul-simpul yang harus dikunjungi.

Contoh implementasi (Pyton):

2. Depth-First Search (DFS):


 Mengunjungi suatu simpul dan kemudian bergerak lebih dalam ke simpul-simpul
tetangganya sebelum kembali.
 Bisa diimplementasikan dengan rekursif atau dengan tumpukan (stack).

Contoh Implementasi (Pyton):

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


38
Arief Zikry,[Link].,[Link] [Link]
Menggunakan BFS dan DFS, kita dapat menemukan informasi seperti jalur terpendek,
komponen yang terhubung, dan lain-lain pada graf. Pemilihan metode traversal tergantung
pada jenis masalah dan jenis informasi yang diinginkan dari graf.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


39
Arief Zikry,[Link].,[Link] [Link]
12. Sorting

12.1Konsep Dasar Sorting

Sorting atau pengurutan adalah proses mengatur sejumlah data (angka, huruf, dll) dalam
urutan tertentu (naik atau turun). Tujuan dari sorting adalah untuk meningkatkan efisiensi
pencarian atau untuk mengoptimalkan struktur data yang digunakan.

Kriteria Pengurutan:

 Stability: Sebuah algoritma sorting dikatakan stabil jika urutan relatif dari dua objek yang
sama tetap tidak berubah setelah pengurutan.
 In-place: Jika algoritma memerlukan sejumlah konstan memori ekstra untuk mengurutkan
list, maka dikatakan in-place.
 Adaptive: Algoritma dikatakan adaptive jika efisiensinya meningkat dengan sebagian data
yang sudah diurutkan.

12.2 Algoritma Sorting Sederhana

1. Bubble Sort:
 Prinsip: Bandingkan setiap pasangan item berdekatan dan tukar jika dalam urutan
yang salah.
 Terus lakukan ini sampai tidak ada lagi pertukaran yang diperlukan.
2. Selection Sort:
 Prinsip: Cari item terkecil di list, tukar dengan item pertama. Kemudian cari item
terkecil kedua, tukar dengan item kedua, dan seterusnya.
3. Insertion Sort:
 Prinsip: Bangun list terurut satu item pada satu waktu. Untuk setiap posisi, iterasi
melalui list yang sudah diurutkan di sebelah kiri untuk menemukan posisi item
tersebut.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


40
Arief Zikry,[Link].,[Link] [Link]
12.3 Praktik Pemrograman

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


41
Arief Zikry,[Link].,[Link] [Link]

[Link]

13.1 Konsep Dasar Searching

Searching atau pencarian adalah proses menemukan lokasi dari suatu item dalam
kumpulan data. Searching adalah salah satu operasi dasar yang sering dilakukan dalam
pemrograman dan memiliki berbagai algoritma, masing-masing dengan kelebihan dan
kekurangannya.

13.2 Linear Search dan Binary Search

1. Linear Search (Pencarian Linear):


 Prinsip: Mengecek setiap elemen dari kumpulan data satu per satu hingga item yang
dicari ditemukan.
 Kompleksitas waktu: O(n)
2. Binary Search (Pencarian Biner):
 Prinsip: Dapat bekerja pada daftar yang telah diurutkan. Membandingkan item yang
dicari dengan elemen tengah dari daftar; jika tidak cocok, setengah dari daftar di
mana elemen tidak mungkin berada dihilangkan.
 Kompleksitas waktu: O(log n)

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


42
Arief Zikry,[Link].,[Link] [Link]
13.3 Praktik Pemrograman

Mengerti teknik searching dasar seperti linear search dan binary search memberikan
pemahaman dasar tentang bagaimana menemukan informasi dalam kumpulan data. Meskipun
ada banyak algoritma pencarian lanjutan lainnya, pemahaman atas konsep dasar ini penting
sebelum beralih ke metode yang lebih kompleks.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


43
Arief Zikry,[Link].,[Link] [Link]
14. Algoritma Greedy

14.1 Pengenalan Konsep Greedy

Algoritma greedy (serakah) adalah algoritma yang mencari solusi optimal pada setiap
tahapan dengan harapan menemukan solusi global optimal. Pada setiap langkah, algoritma
greedy membuat keputusan yang terlihat optimal saat itu tanpa mempertimbangkan keputusan
sebelumnya atau keputusan yang mungkin diambil nantinya.

Fitur utama dari pendekatan greedy:

 Membuat keputusan lokal di setiap langkah.


 Tidak pernah meninjau kembali keputusan tersebut.
 Biasanya mudah untuk diimplementasikan.
 Tidak selalu menghasilkan solusi optimal, tetapi dalam beberapa kasus dapat
memberikan solusi yang mendekati optimal dalam waktu yang jauh lebih cepat.

14.2 Contoh Masalah yang Dipecahkan dengan Algoritma Greedy

 Masalah Koin (Coin Change Problem): Diberikan denominasi koin dengan nilai yang berbeda,
tentukan jumlah minimum koin yang diperlukan untuk membuat total tertentu.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


44
Arief Zikry,[Link].,[Link] [Link]
 Masalah Knapsack Fraksional: Diberikan bobot dan keuntungan dari item, tentukan item apa
yang harus dimasukkan ke dalam tas (knapsack) agar mendapatkan keuntungan maksimal.
Dalam versi ini, Anda dapat memecah item.
 Masalah Penjadwalan Aktivitas (Activity Selection Problem): Diberikan sejumlah aktivitas
dengan waktu mulai dan selesai, tentukan jumlah aktivitas maksimum yang tidak saling
tumpang tindih.

14.3 Praktik Pemrograman

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


45
Arief Zikry,[Link].,[Link] [Link]
15. Devide and Conquer

15.1 Pengenalan Konsep Divide and Conquer

Divide and Conquer (membagi dan menaklukkan) adalah paradigma pemrograman yang
mengpecahkan masalah dengan membagi masalah menjadi sub-masalah yang lebih kecil dan
lebih mudah dikelola, menyelesaikan setiap sub-masalah secara independen, dan
menggabungkan solusi dari sub-masalah untuk mendapatkan solusi dari masalah asli.

Tiga langkah utama dalam paradigma ini adalah:

 Divide: Bagi masalah menjadi sub-masalah yang lebih kecil.


 Conquer: Selesaikan sub-masalah. Jika sub-masalah masih cukup besar, terapkan kembali
divide and conquer pada sub-masalah tersebut.
 Combine: Gabungkan solusi dari sub-masalah untuk mendapatkan solusi masalah asli.

15.2 Algoritma Dasar Seperti Merge Sort dan Quick Sort

1. Merge Sort:
 Divide: Bagi array menjadi dua bagian yang hampir sama.
 Conquer: Urutkan kedua bagian secara rekursif menggunakan Merge Sort.
 Combine: Gabungkan kedua bagian yang telah diurutkan untuk mendapatkan array
final yang diurutkan.
2. Quick Sort:
 Divide: Pilih elemen, disebut pivot, dari array. Bagilah array menjadi dua sub-array:
elemen yang kurang dari pivot dan elemen yang lebih besar dari pivot.
 Conquer: Urutkan kedua sub-array secara rekursif menggunakan Quick Sort.
 Combine: Ini sebenarnya otomatis terjadi karena array sudah terbagi dengan benar.

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


46
Arief Zikry,[Link].,[Link] [Link]
15.3 Praktik Pemrograman

1. Implementasi Merge Sort:

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


47
Arief Zikry,[Link].,[Link] [Link]
2. Implementasi Quick Sort:

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


48
Arief Zikry,[Link].,[Link] [Link]
DAFTAR PUSTAKA

2023 Algoritma dan Pemrograman Pengembangan Materi Pembelajaran dan e-learning


Arief Zikry,[Link].,[Link] [Link] 49

Anda mungkin juga menyukai