Konsep Algoritma
01 04 Struktur Iteratif
Penemuan Algoritma
03 06 Efisiensi dan Ketepatan
KONSEP
ALGORITMA
GOSTUDIO
PENGERTIAN ALGORITMA
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan tidak tergantung pada bahasa
pemrograman tertentu. Langkah-langkah (intruksi) dalam algoritma harus logis serta harus dapat ditentukan bernilai salah atau benar.
Agar dapat dilaksanakan oleh komputer, algoritma harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program. Jadi,
program adalah perwujudan atau implementasi teknis algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga dapat
dilaksanakan oleh komputer.
Ciri-ciri algoritma :
• Contoh
A1. Aksi 1 >> mula-mula aksi 1 dilakukan
A2. Aksi 2 >> aksi 2 dilakukan setelah aksi 1
A3. Aksi 3 >> aksi 3 diakukan setelah aksi 2
STRUKTUR DASAR ALGORITMA
PEMILIHAN (SELECTION)
=> Memungkinkan suatu aksi dieksekusi jika suatu kondisi terpengaruh atau tidak terpengaruh
=> Bentuk-bentuk pemilihan :
>> if – else
>> switch – case (digunakan apabila kontruksi if-else bertingkat terlalu jauh, sehingga sulit dibaca)
PENGULANGAN (REPEATITION)
Struktur pseudocode :
=> Program (nama program) -🡪 penjelasan tentang algoritma, berisi urain singkat mengenai masalah yang akan diselesaikan
=> Deklarasi -🡪 semua nama yang dipakai ; nama tipe, nama konstanta, nama peubah, nama produser, nama fungsi
=> Algoritma -🡪 semua langkah/aksi algoritma ditulis pada bagian ini
CONTOH FORMAT PSEUDOCODE
PROGRAM
Program untuk mencari GCD dari dua bilangan bulat posistif m dan n (m ≥ n). GCD dari m dan n adaah bilangan bulat posistif terbesar
yang habis membagi m dan n
DEKLARASI
ALGORITMA
read (m,n) (m ≥ n)
while n! = 0 do
r 🡨m MOD n
m🡨n
n🡪r
end while
(kondisi selesai pengulangan n=0, maka gcd (m,n) = m)
PENEMUAN
ALGORITMA
⮚ Hubungan erat antara proses penemuan algoritma dan pemecahan masalah umum menyebabkan ilmuwan
komputer bergabung dengan orang-orang dari disiplin ilmu lain dalam mencari teknik pemecahan masalah yang
lebih baik.
⮚ Pada akhirnya, seseorang ingin mengurangi proses pemecahan masalah menjadi algoritme itu sendiri, tetapi ini
terbukti mustahil di mana terdapat masalah yang tidak memiliki solusi algoritmik.
⮚ Dengan demikian kemampuan untuk memecahkan masalah tetap lebih merupakan keterampilan artistik untuk
dikembangkan daripada ilmu yang tepat untuk dipelajari.
Sebagai bukti dari sifat artistik yang sulit dipahami dari pemecahan masalah,
ahli matematika George Polya mendefinisikan fase pemecahan masalah pada
tahun 1945, yang sampai saat ini tetap menjadi prinsip dasar untuk
mengajarkan keterampilan memecahkan masalah.
Kejadian lain yang dapat terjadi adalah inspirasi misterius yang mungkin datang
kepada seorang calon pemecah masalah yang, setelah mengerjakan suatu
masalah tanpa hasil yang jelas, di kemudian hari tiba-tiba melihat solusi saat
melakukan tugas lain. Fenomena tersebut mencerminkan proses di mana bagian
bawah sadar dari pikiran seseorang terus bekerja dan, jika berhasil,
memunculkan solusi ke dalam pikiran sadar.
MELETAKKAN KAKI DI PINTU
Tunggu, anda tidak berpikir bahwa kita akan berjalan menuju pintu dan menginjakkan kaki disana kan?
Menginjakkan kaki di pintu, dalam hal ini, berarti kita memulai suatu langkah awal dalam serangkaian proses
pemecahan masalah.
Salah satunya adalah mencoba mengerjakan soal secara mundur. Contoh : Apabila seorang mengerjakan
suatu program, beberapa orang cenderung melihat ‘program’ yang sudah jadi untuk kemudian melihat cara
kerja dari algoritme pemrograman tersebut
Pendekatan lain untuk memulai pemecahan masalah adalah dengan menerapkan stepwise
refinement. Idenya adalah memecah masalah asli menjadi beberapa bagian masalah yang mudah
diselesaikan
ALGORITMA PENCARIAN
BERURUTAN
KONTROL LOOP
ALGORITMA SORTASI
PENYISIPAN
Metode iteratif merupakan suatu proses perulangan yang
dilaksanakan oleh suatu prosedur atau fungsi atau sub
program dengan cara memasukkan secara langsung
nilai-nilai argumennya.
Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada
setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti data telah
ditemukan. Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data
tidak ada. Pada kasus yang paling buruk, untuk N elemen data harus dilakukan pencarian sebanyak
N kali pula.
Algoritma pencarian berurutan dapat dituliskan sebagai berikut :
maka akan mengecek dari awal sampai data ketemu, jadi akan di periksa satu persatu ,
dengan cara membandingkan seperti ini
apakah 5 = 1 False
apakah 5 = 2 False
apakah 5 = 4 False
apakah 5 = 3 False
apakah 5 = 5 True
jika ada ada di tengah maka akan berhenti ketika kondisi menjadi true, dan tidak akan di ulang lagi.
contoh kita mencari data 5 dari array [,1,2,5,3,4]
apakah 5 = 1 False
apakah 5 = 2 False
apakah 5 = 5 True
kontrol loop adalah bagian struktur yang lebih rentan terhadap kesalahan dan oleh
karena itu perlu diperhatikan.
Kontrol loop terdiri dari tiga aktivitas:
UJI
Bandingkan keadaan saat
ini dengan kondisi
terminasi dan hentikan
INISIALISASI pengulangan jika sama MODIFIKASI
Tetapkan keadaan awal yang akan Ubah keadaan sedemikian
dimodifikasi menuju kondisi rupa sehingga bergerak
penghentian menuju kondisi penghentian
termination condition
langkah inisialisasi dan modifikasi harus mengarah pada kondisi penghentian yang
sesuai. Karakteristik ini sangat penting untuk kontrol loop yang tepat, dan oleh karena
itu seseorang harus selalu mengecek ulang keberadaannya saat merancang struktur
loop.
Kegagalan untuk membuat evaluasi seperti itu bisa menyebabkan kesalahan bahkan
dalam kasus yang paling sederhana. Contoh:
“Number” (Angka) = 1
“while” (Bilangan! = 6): Bilangan = Bilangan + 2
penggunaan operator Python "! =" ("tidak sama“). Di sini kondisi terminasi adalah
"Number == 6“. Tetapi nilai Number diinisialisasi pada 1 dan kemudian bertambah 2
pada langkah modifikasi. Jadi, saat siklus perulangan, nilai yang ditetapkan ke
Bilangan akan menjadi 1, 3, 5, 7, 9, dan seterusnya, tetapi tidak pernah nilainya 6.
Akibatnya, loop ini tidak akan pernah berhenti.
Insertion Sort
~ Insertion sort (Sortasi Penyisipan) => sebuah metode pengurutan dengan cara
melakukan perbandingan terhadap data-data sebelumnya.
~ Ide dari metode Insertion Sort ini dapat dianalogikan sama seperti mengurutkan kartu,
dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka kartu yang lain akan
bergeser mundur atau maju sesuai kondisi pemindahan kartu tersebut.
KOMPLEMENTASI WAKTU
Algoritma Insertion Sort juga terdiri dari 2 kalang bersarang. Dimana terjadi N-1 Pass (dengan N adalah
banyak elemen struktur data), dengan masing-masing Pass terjadi i kali operasi perbandingan. i tersebut
bernilai 1 untuk Pass pertama, bernilai 2 untuk Pass kedua, begitu seterusnya hingga Pass ke N-1.
BRANDING
POSITIONING
ADAPTABILITY
Struktur Rekursif
Salah satu konsep paling dasar dalam ilmu komputer dan pemrograman adalah pengunaan
fungsi sebagai abstraksi untuk kode-kode yang digunakan berulang kali. Kedekatan ilmu
komputer dengan matematika juga menyebabkan konsep-konsep fungsi pada matematika
seringkali dijumpai. Salah satu konsep fungsi pada matematika yang ditemui pada ilmu
komputer adalah fungsi rekursif: sebuah fungsi yang memanggil dirinya sendiri.
Struktur Rekursif
Secara umum, fungsi rekursif dirancang untuk menguji kondisi terminasi (sering disebut
kasus dasar atau kasus degeneratif) sebelum meminta aktivasi lebih lanjut. Jika kondisi
terminasi tidak terpenuhi, rutin membuat aktivasi lain dari fungsi dan menugaskannya
tugas untuk memecahkan masalah yang direvisi yang lebih dekat dengan kondisi
terminasi daripada yang ditugaskan ke aktivasi saat ini. Namun, jika kondisi terminasi
terpenuhi, sebuah jalur diambil yang menyebabkan aktivasi saat ini berhenti tanpa
membuat aktivasi tambahan.
Algoritma Pencarian Biner
Sebuah algoritme pencarian biner (atau pemilahan biner) adalah sebuah
teknik untuk menemukan nilai tertentu dalam sebuah larik (array) linear,
dengan menghilangkan setengah data pada setiap langkah, dipakai
secara luas tetapi tidak secara ekslusif dalam ilmu komputer.
Pencarian BIner (Binary Search)
dilakukan untuk :
~Memperkecil jumlah operasi perbandingan yang harus dilakukan antara
data yang dicari dengan data yang ada di dalam tabel, khususnya untuk
jumlah data yang sangat besar ukurannya.
~Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian
secara berulang-ulang sampai data ditemukan atau sampai ruang
pencarian tidak dapat dibagi lagi ( berarti ada kemungkinan data tidak
ditemukan).
~Syarat utama untuk pencarian biner adalah data di dalam table harus
sudah terurut, misalkan terurut menaik
EFISISENSI &
KETEPATAN
Efisiensi Algoritma
Efisiensi Algoritma
Masalah:
Walaupun universitas memiliki pendaftaran siswa secara aktual
dengan perkiraan siswa yang mendaftar sebanyak 10.000 orang
pada satu semester, file “siswa saat ini” berisikan lebih dari 30.000
orang karena termasuk mahasiswa yang mendaftar setidaknya 1
mata kuliah namun belum menyelesaikan studinya.
Efisiensi Algoritma
Kita asumsikan bahwa records mahasiswa tersebut disimpan dalam
komputer yang berisikan registrasi mahasiswa secara berurutan
sesuai dengan id mahasiswa.
Contoh yang sedikit lebih terlibat terjadi dalam kasus struktur if-else
seperti:
if (kondisi): instruksi A
else: instruksi B
Verifikasi Perangkat Lunak
Mengikuti aturan seperti ini, pembuktian kebenaran dilanjutkan
dengan mengidentifikasi pernyataan, yang disebut assertions, yang
dapat dibuat di berbagai titik dalam program. Hasilnya adalah
kumpulan dari assertions, masing-masing merupakan konsekuensi
dari preconditions program dan urutan instruksi yang mengarah ke
titik dalam program di mana pernyataan tersebut ditetapkan. Jika
pernyataan yang dibuat di akhir program sesuai dengan spesifikasi
keluaran yang diinginkan (yang disebut kondisi akhir), kami
menyimpulkan bahwa program tersebut benar.
Verifikasi Perangkat Lunak