From 10e26cd24f82d0b75511e71abaf9b790be0250cf Mon Sep 17 00:00:00 2001 From: kondiak <76839514+kondiak@users.noreply.github.com> Date: Tue, 21 Dec 2021 22:51:05 +0700 Subject: [PATCH 1/4] fix: Refactor beberapa kode --- .../BackTracking/PathFinding/PathFinding.php | 17 +++++---- basics/8_fungsi_dasar/3_Scope_Variabel.php | 21 +++++----- .../Login_static_php/login_cek.php | 38 +++++++++---------- 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/algorithms/BackTracking/PathFinding/PathFinding.php b/algorithms/BackTracking/PathFinding/PathFinding.php index 64e8c9f..8250084 100644 --- a/algorithms/BackTracking/PathFinding/PathFinding.php +++ b/algorithms/BackTracking/PathFinding/PathFinding.php @@ -225,16 +225,19 @@ public function getMapVisitedVisual() echo ""; echo "$x"; foreach ($xArray as $y => $value) { - if ($this->map[$x][$y] == 1) { - $color = "black"; - } else { - if ($value == 0) { + switch ($value) { + case 0: $color = "white"; - } elseif ($value == 1) { + break; + case 1: $color = "yellow"; - } elseif ($value == 2) { + break; + case 2: $color = "red"; - } + break; + } + if ($this->map[$x][$y] == 1) { + $color = "black"; } echo ""; } diff --git a/basics/8_fungsi_dasar/3_Scope_Variabel.php b/basics/8_fungsi_dasar/3_Scope_Variabel.php index 333d2c2..601eabc 100644 --- a/basics/8_fungsi_dasar/3_Scope_Variabel.php +++ b/basics/8_fungsi_dasar/3_Scope_Variabel.php @@ -4,36 +4,39 @@ echo "

Contoh 1

"; //============================================1.Contoh 1============================================ //Deklarasi Variabel global -$a = 1; +$varA = 1; echo "
1.Deklarasi Variabel global a = 1"; function fun() { echo "
2. Membuat Function"; echo "
3. Menampilkan variabel a didalam function"; - echo "
$a"; - echo "
4. Terjadi error, ketika nampilin a"; + echo "
$varA"; + echo "
4. Terjadi error, ketika nampilin varA"; echo "

kenapa bisa error??


hal ini terjadi error pada PHP karena variabel didalam function dianggap sebagai variabel asing yg belum dideklarasi"; echo "
dalam php, global variabel dengan variabel dalam function dianggap sebuah variabel berbeda"; echo "
hal ini solusinya yaitu memberi key global lalu diikuti nama variabel, seperti contoh nomor 2 agar variabel tersebut bisa di assign ke variabel global"; + echo "

Mengunakan Variable varA sebagai lokal variabel
"; + $varA = "Variabel varA"; + echo $varA; } fun(); -echo $a; +echo $varA; echo "

NOTE :
dalam php, global variabel dengan variabel dalam function dianggap sebuah variabel berbeda
Hanya Ada 2 pilihan, yaitu memberi global variabel atau membuat variabel dengan nama berbeda"; //============================================2.Contoh 2============================================ //Deklarasi Variabel global echo "

Contoh 2

"; -$x = 1; -$y = 2; +$numX = 1; +$numY = 2; echo "
1.Deklarasi Variabel global x = 1, y=2"; function Sum() { echo "
2. Membuat Function"; - global $x, $y; + global $numX, $numY; echo "
3. Assign global function"; - $y = $x + $y; + $numY = $numX + $numY; echo "
4.x = x + y"; - echo "
5. Nampilin y = $y"; + echo "
5. Nampilin y = $numY"; } Sum(); diff --git a/utilities/Login_static/Login_static_php/login_cek.php b/utilities/Login_static/Login_static_php/login_cek.php index 3b7dc3d..b9afa51 100644 --- a/utilities/Login_static/Login_static_php/login_cek.php +++ b/utilities/Login_static/Login_static_php/login_cek.php @@ -1,22 +1,18 @@ - \ No newline at end of file +//jika username yang dimasukkan adalah "aku" dan password "uka". Maka berhasil mendapat hak akses +if ($username == "aku" && $password == "uka") { + $_SESSION["hak_akses"] = "admin"; + //Jika Username & Password yang dimasukkan benar, maka akan menuju view_index.php + // CONTOHNYA : + header("location: view_index.php"); +} else { + //jika Username & Password yang dimasukkan salah, maka akan kembali ke login_form_index.php sampai Username & Password yang dimasukkan benar + header("location: login_form_index.php?pesan=Gagal! DATA TIDAK DITEMUKAN."); +} From 3f7d2d61501b17e94fd163e6b7644712f08c9153 Mon Sep 17 00:00:00 2001 From: kondiak <76839514+kondiak@users.noreply.github.com> Date: Tue, 21 Dec 2021 22:58:56 +0700 Subject: [PATCH 2/4] fix: PopSort Complexity --- algorithms/Sorting/PopSort/PopSort.php | 61 ++++++++++++++------------ 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/algorithms/Sorting/PopSort/PopSort.php b/algorithms/Sorting/PopSort/PopSort.php index a6678c8..21cc391 100644 --- a/algorithms/Sorting/PopSort/PopSort.php +++ b/algorithms/Sorting/PopSort/PopSort.php @@ -27,27 +27,27 @@ public function __construct(array $array) */ public function start(bool $verbose = false): array { - echo !$verbose ? '' : '

Pop Sort (Sorting)


'; + $log = '

Pop Sort (Sorting)


'; // Registrasi semua arraynya - $a = $this->array; - $b = []; - $c = []; - echo !$verbose ? '' : '
Data sebelum disort: ' . json_encode($a) . '
'; + $arrA = $this->array; + $arrB = []; + $arrC = []; + + $log .= '
Data sebelum disort: ' . json_encode($arrA) . '
'; + $log .= '
 
'; // Kita loop hingga data di $a kosong - while (count($a) != 0) { + while (count($arrA) != 0) { // Keluarkan nilai paling atas dari array $a - $atasA = array_pop($a); + $atasA = array_pop($arrA); - if ($verbose) { - echo '
Data yang diambil: ' . $atasA . '
'; - echo '
Array A: ' . json_encode($a) . '
'; - } + $log .= '
Data yang diambil: ' . $atasA . '
'; + $log .= '
Array A: ' . json_encode($arrA) . '
'; - // Apabila array B ada isinya dan isi paling atas dari array B - // lebih kecil dari array A, kita pindahkan semua nilai-nilai yang - // cocok dengan kondisi tersebut ke array C + // Apabila array arrB ada isinya dan isi paling atas dari array arrB + // lebih kecil dari array arrA, kita pindahkan semua nilai-nilai yang + // cocok dengan kondisi tersebut ke array arrC // // Pada bagian statement kedua, anda dapat mengganti "<" menjadi ">" // sesuai keinginan anda. @@ -55,29 +55,32 @@ public function start(bool $verbose = false): array // Catatan: // Kita harus menghitung isi array terlebih dahulu sebelum mengambil // data array lebih utama agar menghindari error "Undefined index" - while (count($b) > 0 && $atasA > $b[count($b) - 1]) { - // Pindahkan data dari $b ke $c - array_push($c, array_pop($b)); + while (count($arrB) > 0 && $atasA > $arrB[count($arrB) - 1]) { + // Pindahkan data dari $arrB ke $arrC + array_push($arrC, array_pop($arrB)); } - // Setelah aman, kita masukkan data dari $a ke $b - array_push($b, $atasA); + // Setelah aman, kita masukkan data dari $arrA ke $arrB + array_push($arrB, $atasA); - if ($verbose) { - echo '
Array B: ' . json_encode($b) . '
'; - echo '
Array C: ' . json_encode($c) . '
'; - } + $log .= '
Array B: ' . json_encode($arrB) . '
'; + $log .= '
Array C: ' . json_encode($arrC) . '
'; - // Apabila isi $c ada, kita balikkan lagi ke $b secara berurutan. - while (count($c) > 0) { - array_push($b, array_pop($c)); + // Apabila isi $arrC ada, kita balikkan lagi ke $b secara berurutan. + while (count($arrC) > 0) { + array_push($arrB, array_pop($arrC)); } - echo !$verbose ? '' : '
Hasil sementara: ' . json_encode($b) . '
'; + $log .= '
Hasil sementara: ' . json_encode($arrB) . '
'; + $log .= '
 
'; } - echo !$verbose ? '' : '
Hasil setelah disort: ' . json_encode($b) . '
'; - return $b; + $log .= '
Hasil setelah disort: ' . json_encode($arrB) . '
'; + + if ($verbose) + echo $log; + + return $arrB; } } From 06618f0afc98f262c552304fa1339bb0045adfb1 Mon Sep 17 00:00:00 2001 From: kondiak <76839514+kondiak@users.noreply.github.com> Date: Tue, 21 Dec 2021 23:12:08 +0700 Subject: [PATCH 3/4] fix: update artikel algoritma/searching --- algorithms/Searching/README.md | 25 ++++++++++++++++++- algorithms/Sorting/PopSort/PopSort.php | 3 ++- .../Login_static_php/login_cek.php | 13 +++++----- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/algorithms/Searching/README.md b/algorithms/Searching/README.md index 95b1162..92d6442 100644 --- a/algorithms/Searching/README.md +++ b/algorithms/Searching/README.md @@ -1,4 +1,27 @@

-

Searching Algorithms

+

Algoritma Pencarian

+ +Yang dimaksud dengan algoritma pencarian adalah algoritma yang digunakan untuk mencari sebuah data dalam sekumpulan data yang telah tersedia, algortima ini akan menghasilkan salah satu dari dua kemungkinan yaitu data ditemukan dan data tidak ditemukan. + +Kumpulan data yang dimaksud dalam PHP merupakan sebuah array atau objek perulangan. + +## Jenis Algoritma Pencarian +Berdasarkan kumpulan data, algoritma pencarian terbagi atas 2 (dua) jenis yaitu + +1. Pencarian Sekuensial +2. Pencarian Biner + +Pencarian sekuensial dilakukan pada kumpulan data yang tidak terurut/acak, sebalik untuk kumpulan data terurut disebut pencarian biner. + +## Contoh Algoritma Pencarian +Berikut beberapa contoh pencarian berdasarkan Tipe/Jenis pencarian + +| No | Nama Algoritma | Jenis Pencarian | +|:--:|:---------------|:----------------| +| 1 | [Linear Seacrh](./Linear) | Sekuensial | +| 2 | [Binary Search](./Binary) | Biner | +| 3 | [Jump Search](./Jump) | Biner | +| 4 | [Ternary Search](./Ternary) | Biner | +| 5 | [Interpolation](./Interpolation) | Biner | \ No newline at end of file diff --git a/algorithms/Sorting/PopSort/PopSort.php b/algorithms/Sorting/PopSort/PopSort.php index 21cc391..160988f 100644 --- a/algorithms/Sorting/PopSort/PopSort.php +++ b/algorithms/Sorting/PopSort/PopSort.php @@ -77,8 +77,9 @@ public function start(bool $verbose = false): array $log .= '
Hasil setelah disort: ' . json_encode($arrB) . '
'; - if ($verbose) + if ($verbose) { echo $log; + } return $arrB; } diff --git a/utilities/Login_static/Login_static_php/login_cek.php b/utilities/Login_static/Login_static_php/login_cek.php index b9afa51..7492fa5 100644 --- a/utilities/Login_static/Login_static_php/login_cek.php +++ b/utilities/Login_static/Login_static_php/login_cek.php @@ -1,4 +1,5 @@ Date: Wed, 22 Dec 2021 10:02:31 +0700 Subject: [PATCH 4/4] add: Dokumentasi Interpolation Search --- algorithms/Searching/Interpolation/README.md | 90 ++++++++++++++++++ .../Searching/Interpolation/fungsi.png | Bin 0 -> 3719 bytes 2 files changed, 90 insertions(+) create mode 100644 algorithms/Searching/Interpolation/README.md create mode 100644 assets/content/algorithms/Searching/Interpolation/fungsi.png diff --git a/algorithms/Searching/Interpolation/README.md b/algorithms/Searching/Interpolation/README.md new file mode 100644 index 0000000..4fbbd0d --- /dev/null +++ b/algorithms/Searching/Interpolation/README.md @@ -0,0 +1,90 @@ +

+ +

Algoritma Pencarian

+

+ +## Pencarian Interpolasi + +Pencarian Interpolasi merupakan salah satu algoritma pencarian biner, dimana syarat utama dalam melakukan pencarian dengan algoritma ini adalah kumpulan data yang akan diperiksa telah terurut (sorted). + +Algoritma ini merupakan menigkatan atau perbaikan dari algoritam pencarian binary, dimana kedua algoritma ini akan memecah kumpulan data menjadi dua bagian. Perbedaan antara kedua algoritma ini terdapat pada cara menentukan index tengah dari kumpulan data, dimana pada binary search index tengah ditentukan berdasarakan dari urutan key dari kumpulan data, sedangkan pada Interpolation Search index tengah di tentukan berdasarkan range atau selisih dari setiap nilai dalam kumpulan data. + +Untuk mendapatkan index tengah algoritma ini menggunakan perhitungan sebagai berikut: +

+ +

+ +dimana: + +- It = Index Tengah +- I0 = Index Awal +- Ia = Index Akhir +- N0 = Nilai Awal +- Na = Nilai Akhir +- C = Nilai dicari + + +contoh data yang sama kita gunakan pada binary search sebelumnya : + +kumpulan data = array(6,7,10,11,14,17,18,19,23,26,38,42,78,79,82,84,85) +nilai dicari = 38 + +maka nilai tengah akan kita peroleh dengan perhitungan sebagai berikut: + +It = 0 + ((16 - 0)/(85 - 6) * (38 - 6)) + +It = 0 + ((16/79) * 32) + +It = 0 + (512/79) + +It = 0 + 6 = 6 + +jadi index tengah berada pada key index 6, dinama nilai pada key index 6 adalah 18, karena 18 lebih kecil dari nilai dicari maka kumpulan data bagian kiri atau yang lebih kecil sama dengan 18 kita keluarkan dari pencarian sehingga index awal = 7 dengan nilai awal = 19, seperti ini kumpulan data = array(19,23,26,38,42,78,79,82,84,85), kemudian kita hitung kembali nilai tengah dari kumpulan data baru. + +index tengah selanjutnya dengan rumus/fungsi yang sama kita peroleh pada index ke 12 dengan nilai 78, dimana nilai index ini lebih besar dari nilai dicari maka, kumpulan data bagian atas kita keluarkan dari pencarian dengan menetapkan index terakhir pada index 11 dengan nilai 42. + +Index tengah selanjutnya kita peroleh pada index ke 10, dan nilai index ini adala nilai yang kita cari. + +Itulah pola kerja dari algoritma pencarian interpolasi ini, kita dapat menulis pseudo code untuk fungsi pencarian ini sebagai berikut : + +```text +ALGORITMA PENCARIAN INTERPOLASI + +GET +Data Array +Nilai dicari +Index Awal +Index Akhir + +WHILE (Index Awal < Index Akhir OR Nilai Awal != Nilai Akhir) + + SET mid = Index Awal + ((Index Akhir - Index Awal) / (Nilai Akhir - Nilai Awal) * (Search Val - Nilai Awal)) + + SWITCH (Nilai Mid) + CASE Nilai Mid == Nilai dicari + RETURN mid + CASE Nilai mid < Nilai dicari + Index Awal = mid + 1 + CASE Nilai mid > Nilai dicari + Index Akhir = mid - 1 + END SWITCH + +END WHILE + +RETURN Data tidak ditemukan +``` +--- +>**Info !** : +>***pseudo code*** atau kode samaran biasa digunakan oleh para programer untuk menulis algoritma sehingga dapat dengan mudah dimengerti untuk kemudian diterjemahkan kedalam bahasa pemograman (interpreter/compiler). +>***pseudo code*** tidak memiliki aturan penulisan yang baku. + +--- +\*\*\* Terima kasih \*\*\* + +### Referensi + +- Programiz. *"Binary Search C, C++, Java, Python"*. [Pranala Luar](https://www.programiz.com/dsa/binary-search). +- Kela Casey, *"Let Us Understand Searching Algorithms"*. [Codersera](https://codersera.com/blog/let-us-understand-searching-algorithms/). 2020 +- Edy Budiman. *"Belajar Dasar: Algoritma dan Pemograman"*. Repository Unmul. +- Udy Manber. *Using Mathematical Induction to Design Computer Algorithms*, Computer Science Technical Report#660. 1986. +- PHP net. *"PHP Manual - Class and Object"*. [Pranala Luar](https://www.php.net/manual/en/language.oop5.php) diff --git a/assets/content/algorithms/Searching/Interpolation/fungsi.png b/assets/content/algorithms/Searching/Interpolation/fungsi.png new file mode 100644 index 0000000000000000000000000000000000000000..5b593fa9b814e86b7886ff7ebda18db606426479 GIT binary patch literal 3719 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 literal 0 HcmV?d00001