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/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/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 a6678c8..160988f 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,33 @@ 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 .= '
 
'; + } + + $log .= '
Hasil setelah disort: ' . json_encode($arrB) . '
'; + + if ($verbose) { + echo $log; } - echo !$verbose ? '' : '
Hasil setelah disort: ' . json_encode($b) . '
'; - return $b; + return $arrB; } } diff --git a/assets/content/algorithms/Searching/Interpolation/fungsi.png b/assets/content/algorithms/Searching/Interpolation/fungsi.png new file mode 100644 index 0000000..5b593fa Binary files /dev/null and b/assets/content/algorithms/Searching/Interpolation/fungsi.png differ 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..7492fa5 100644 --- a/utilities/Login_static/Login_static_php/login_cek.php +++ b/utilities/Login_static/Login_static_php/login_cek.php @@ -1,22 +1,19 @@ - \ No newline at end of file +error_reporting(0); +session_start(); +//username adalah name yang digunakan untuk penamaan pada text field Username +$username = $_POST["username"]; +//password adalah name yang digunakan untuk penamaan pada text field Password +$password = $_POST["password"]; + +//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."); +}