Buku Manual Komputasi & Glosarium Algoritma
Dokumentasi terstruktur fungsi inti PHP 8.3, sintaks kueri basis data SQL, rujukan resmi dokumentasi php.net, serta glosarium istilah komputasi dan analisis asimtotik.
1. Fungsi Manipulasi Array (PHP)
DATA STRUCTUREarray_filter(array $array, ?callable $callback = null, int $mode = 0): array
php.net docs →
Menyaring elemen array berdasarkan kriteria fungsi penentu (callback). Elemen yang mengembalikan true akan dipertahankan. Sangat penting untuk membersihkan data sensor atau data input anomali.
$suhu = [24.5, -5.0, 31.2, 85.0]; // Ambil hanya suhu positif normal (0 < suhu <= 50) $valid = array_filter($suhu, fn(float $val): bool => $val > 0 && $val <= 50.0); $hasil = array_values($valid); // Hasil: [24.5, 31.2]
array_map(?callable $callback, array $array, array ...$arrays): array
php.net docs →
Mentransformasikan seluruh elemen array dengan mengeksekusi callback pada setiap indeks untuk menghasilkan array baru dengan ukuran yang sama.
$radiasi = [1.256, 4.881, 7.009]; $terkalibrasi = array_map(fn(float $n): float => round($n, 2), $radiasi); // Hasil: [1.26, 4.88, 7.01]
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
php.net docs →
Mereduksi sekumpulan elemen array menjadi satu nilai tunggal (akumulator), ideal untuk menghitung akumulasi total atau agregasi nilai matriks.
$angka = [10, 20, 30, 40]; $total = array_reduce($angka, fn(int $carry, int $item): int => $carry + $item, 0); // Hasil: 100
array_values(array $array): array
php.net docs →
Menyusun ulang kunci indeks array numerik dari indeks 0 secara berurutan. Sangat krusial setelah menjalankan array_filter agar array tidak berlubang (non-sequential keys).
$acak = [2 => 'Data A', 9 => 'Data B']; $terurut = array_values($acak); // [0 => 'Data A', 1 => 'Data B']
usort(array &$array, callable $callback): bool
php.net docs →
Mengurutkan elemen array di tempat (*in-place*) menggunakan fungsi pembanding kustom. Menggunakan operator spaceship <=> untuk perbandingan ascending/descending.
$personil = [
['nama' => 'Kadet A', 'xp' => 450],
['nama' => 'Kadet B', 'xp' => 920]
];
// Urutkan descending berdasarkan XP
usort($personil, fn($a, $b) => $b['xp'] <=> $a['xp']);
2. Fungsi Manipulasi String (PHP)
STRING OPSstr_contains(string $haystack, string $needle): bool
php.net docs →
Memeriksa apakah substring $needle terdapat di dalam teks $haystack (peka huruf besar-kecil). Hadir sejak PHP 8.0 menggantikan strpos() !== false.
if (str_contains('SENSOR-PENDINGIN-A1', 'PENDINGIN')) {
echo "Pola modul pendingin terdeteksi.";
}
str_starts_with(string $haystack, string $needle): bool
php.net docs →
Memastikan apakah suatu teks diawali dengan awalan tertentu secara eksak. Pasangannya adalah str_ends_with() untuk memvalidasi akhiran.
$route = '/admin/settings';
if (str_starts_with($route, '/admin')) {
// Memerlukan hak otorisasi administrator
}
explode(string $separator, string $string): array
php.net docs →
Memecah teks menjadi array berdasarkan karakter delimiter pemisah. Kebalikannya adalah implode($separator, $array) yang menggabungkan kembali array menjadi satu teks.
$log = "2026-11-01|REAKTOR|NORMAL";
$parts = explode('|', $log); // ["2026-11-01", "REAKTOR", "NORMAL"]
$joined = implode(' // ', $parts); // "2026-11-01 // REAKTOR // NORMAL"
3. Operasi Matematika & Numerik (PHP)
MATHround(int|float $num, int $precision = 0): float
php.net docs →
Membulatkan angka desimal ke digit presisi di belakang koma. Gunakan floor() untuk pembulatan ke bawah mutlak, dan ceil() untuk pembulatan ke atas mutlak.
echo round(83.33333, 2); // 83.33 echo floor(4.99); // 4.0 echo ceil(4.01); // 5.0 echo abs(-42); // 42 (Nilai mutlak)
intdiv(int $num1, int $num2): int
php.net docs →
Melakukan pembagian bilangan bulat (*integer division*) tanpa menghasilkan pecahan desimal. Sangat krusial dalam algoritma **Binary Search** saat menghitung indeks tengah $mid = intdiv($low + $high, 2).
echo intdiv(7, 2); // 3 (bukan 3.5) echo 7 % 2; // 1 (sisa bagi modulo)
4. Fitur Modern PHP 8.3 & Engine
PHP 8.3 STANDARDmatch ($value) { pattern => result, ... }
php.net docs →
Pengganti switch modern: melakukan perbandingan identik ketat (===), tidak memerlukan break, dan langsung mengembalikan nilai (*expression*).
$label = match ($role) {
'admin' => 'Administrator Sistem',
'editor' => 'Penyusun Soal',
default => 'Kadet Peserta'
};
json_validate(string $json, int $depth = 512, int $flags = 0): bool
php.net docs →
Fitur Baru PHP 8.3: Memvalidasi apakah string berformat JSON valid tanpa perlu mendekompresi dan mengalokasikan pohon memori seperti pada json_decode(). Sangat cepat dan hemat memori untuk API.
if (json_validate($payload)) {
// String terbukti JSON valid tanpa memboroskan alokasi memori
}
declare(strict_types=1);
php.net docs →
Mengaktifkan pemeriksaan tipe data secara ketat. Memaksa compiler menolak konversi otomatis (*implicit coercion*) jika tipe parameter yang dilewatkan tidak sesuai dengan deklarasi tipe fungsi.
declare(strict_types=1);
function tambah(int $a, int $b): int {
return $a + $b;
}
// tambah('5', 10); -> Melempar TypeError secara instan!
5. Referensi Cepat Sintaks SQL (DQL)
RELATIONAL DQLGROUP BY ... HAVING vs WHERE
Agregasi
Klausul WHERE menyaring baris sebelum dikelompokkan, sedangkan HAVING menyaring hasil fungsi agregat (seperti SUM, COUNT, AVG) setelah pengelompokan GROUP BY.
SELECT nama_sektor, COUNT(id) AS total_unit, ROUND(SUM(daya), 2) AS total_daya FROM generator WHERE status = 'ONLINE' GROUP BY nama_sektor HAVING total_daya > 250.0 ORDER BY total_daya DESC;
6. Glosarium Istilah Pemrograman & Algoritma
GLOSSARY A-ZUkuran asimtotik batas atas yang mendeskripsikan efisiensi waktu eksekusi atau konsumsi memori suatu algoritma saat ukuran input data (N) bertambah menuju tak hingga.
Kondisi mutlak pada fungsi rekursif yang menghentikan proses pemanggilan diri sendiri dan mengembalikan nilai konstan, mencegah terjadinya Maximum Call Stack Exceeded.
Blok memori terstruktur LIFO (Last-In, First-Out) tempat komputer melacak variabel lokal dan alamat kembali dari setiap pemanggilan fungsi yang sedang berjalan.
Teknik pemecahan masalah dengan menggunakan dua variabel penunjuk indeks (misalnya di awal dan di akhir array) yang bergerak secara bertahap untuk membalik data atau validasi palindrom dalam waktu O(N).
Teknik mengelola sub-array bergerak dengan batas jendela dinamis untuk menghitung nilai maksimal atau substring unik tanpa perlu perulangan bersarang kuadratik O(N²).
Algoritma pencarian elemen pada array terurut dengan membagi interval pencarian menjadi dua bagian di setiap langkah, menghasilkan efisiensi waktu logaritmik O(log N).
Struktur data pohon hirarki yang mewakili struktur sintaksis kode sumber program. Digunakan oleh sistem sandbox platform untuk mengaudit token kode berbahaya sebelum eksekusi.
Aturan hierarki yang menentukan urutan evaluasi operasi dalam suatu ekspresi. Misalnya perkalian (*) memiliki presedensi lebih tinggi dibanding penjumlahan (+), dan operator tanda kurung () memiliki prioritas tertinggi.
7. Portal Rujukan Resmi php.net Manual
OFFICIAL DOCSSeluruh kurikulum koding dan modul tantangan di platform ini berbasis pada dokumentasi standar resmi PHP. Anda dapat merujuk ke portal dokumentasi resmi berikut untuk pendalaman materi: