Fondasi Algoritma dan Sintaks Pascal
Berpikir komputasional, struktur program, tipe data, operator, input/output, percabangan, dan perulangan.
Modul 1 - 10Kursus terstruktur 50 modul yang memadukan teori algoritma, perancangan flowchart, dan implementasi kode Pascal (Free Pascal / Turbo Pascal) secara mendetail. Setiap modul memuat tujuan pembelajaran, materi teori, algoritma dan flowchart, pseudocode, contoh kode lengkap dengan penjelasan baris per baris, latihan bertingkat, studi kasus, rangkuman, dan referensi.
Perjalanan belajar dibagi menjadi empat fase yang saling berjenjang. Setiap fase dibangun di atas kompetensi fase sebelumnya, sehingga mahasiswa dapat mengikuti alur secara berurutan tanpa lompatan konsep.
Berpikir komputasional, struktur program, tipe data, operator, input/output, percabangan, dan perulangan.
Modul 1 - 10Prosedur, fungsi, parameter, scope, rekursi, array, pencarian, pengurutan, record, set, dan enumerasi.
Modul 11 - 22String, unit, file handling, pointer, linked list, stack, queue, divide and conquer, sorting lanjutan, kompleksitas.
Modul 23 - 35Class, enkapsulasi, inheritance, polymorphism, interface, exception, generic, graph, dynamic programming, proyek akhir.
Modul 36 - 50Tidak ada modul yang cocok dengan kata kunci tersebut. Coba kata kunci lain.
Membangun dasar berpikir algoritmik dan penguasaan sintaks dasar bahasa Pascal.
Definisi algoritma, ciri algoritma yang baik, representasi algoritma (narasi, pseudocode, flowchart), simbol-simbol flowchart, serta sejarah dan kedudukan bahasa Pascal.
Pemasangan Free Pascal dan IDE, alur kompilasi, struktur umum program Pascal (header, deklarasi, blok statement), serta perbedaan mendasar Free Pascal dan Turbo Pascal.
Aturan penamaan identifier, reserved words, deklarasi var dan const, tipe data sederhana (integer, real, char, string, boolean), serta rentang nilai dan ukuran memori tiap tipe.
Operator aritmatika, relasional, logika, bitwise, dan set; prioritas operator; aturan kompatibilitas tipe; konversi implisit dan eksplisit; serta kesalahan umum pembagian bilangan bulat.
Prosedur read, readln, write, writeln; pengaturan lebar field dan jumlah desimal; karakter escape; serta penanganan masalah umum saat membaca input dari keyboard.
Struktur seleksi satu arah, dua arah, dan bersarang; aturan pasangan else; penggunaan blok begin...end; serta kesalahan logika umum pada kondisi majemuk.
Seleksi berbasis nilai ordinal, sintaks case, klausa else, penggunaan rentang nilai, batasan tipe yang diizinkan, serta perbandingan efisiensi case dengan rangkaian if.
Perulangan terkendali dengan pencacah, arah naik (to) dan turun (downto), tipe data pencacah yang sah, larangan mengubah pencacah di dalam blok, serta pola akumulasi dan pencacahan.
Perulangan tak terkendali berbasis kondisi, perbedaan uji di awal (while) dan uji di akhir (repeat), risiko infinite loop, serta teknik validasi input berulang.
Kombinasi for, while, dan repeat bersarang, analisis jumlah iterasi, pembentukan pola bintang, segitiga, dan tabel perkalian sebagai latihan penalaran iteratif.
Memecah masalah menjadi subprogram dan mengelola kumpulan data secara terstruktur.
Konsep subprogram, sintaks deklarasi dan pemanggilan prosedur, prosedur tanpa parameter, ruang lingkup, serta manfaat modularisasi dalam keterbacaan dan pemeliharaan kode.
Perbedaan fungsi dan prosedur, penentuan tipe hasil, penugasan nilai balik melalui nama fungsi, serta pembuatan pustaka fungsi matematika dan teks sederhana.
Mekanisme pengiriman parameter nilai dan referensi, kata kunci var, const, dan out, efek samping perubahan nilai, serta pemilihan mode parameter yang tepat.
Variabel global dan lokal, konsep blok, shadowing, durasi hidup variabel, reserved words dan identifier standar, serta konvensi penamaan yang baik dalam Pascal.
Prinsip rekursi, base case dan recursive case, penelusuran call stack, contoh faktorial, Fibonacci, dan penjumlahan deret, serta perbandingan pendekatan rekursif dan iteratif.
Deklarasi array, indeks dan batas, inisialisasi, penelusuran, pencarian nilai maksimum dan minimum, penghitungan rata-rata, serta kesalahan umum index out of range.
Array dua dimensi dan lebih, penelusuran baris dan kolom, operasi matriks (penjumlahan, perkalian, transpose), serta alokasi memori array berdimensi besar.
Pencarian linear pada array, pencarian seluruh kemunculan, teknik sentinel, analisis kasus terbaik dan terburuk, serta implementasi dalam bentuk fungsi yang dapat dipakai ulang.
Bubble sort, selection sort, dan insertion sort: logika langkah, pseudocode, flowchart, penelusuran tabel, penghitungan jumlah perbandingan dan pertukaran, serta perbandingan performa.
Mendefinisikan tipe record, mengakses field, record bersarang, with, array of record, serta penerapan pada pengelolaan data mahasiswa dan inventaris sederhana.
Mendefinisikan tipe enumerasi, urutan ordinal, konversi dengan ord dan succ, operasi himpunan (union, intersection, difference, membership), serta batasan jumlah anggota set.
Tipe subrange dan kegunaannya untuk validasi, deklarasi type kustom, aturan kompatibilitas dan kesetaraan tipe, konversi tipe eksplisit, serta praktik terbaik pendefinisian tipe.
Mengelola data dinamis, berkas, modul program, dan algoritma berperforma tinggi.
Tipe string dan shortstring, fungsi standar (length, copy, pos, concat), prosedur manipulasi (delete, insert, str, val), serta studi kasus validasi dan penguraian teks.
Struktur unit Pascal (interface dan implementation), klausa uses, unit standar, pembuatan pustaka sendiri, serta strategi memecah program besar menjadi modul terkelola.
Konsep berkas, deklarasi variabel file, prosedur assign, rewrite, reset, append, close, pembacaan hingga eof, serta studi kasus pencatatan data sederhana.
Perbedaan file teks dan file biner, file of record, akses acak dengan seek, filepos, dan filesize, pembaruan data di posisi tertentu, serta pertimbangan efisiensi dan portabilitas.
Konsep alamat memori, deklarasi pointer, operator ^ dan @, prosedur new dan dispose, pointer nil, dangling pointer, serta bahaya memory leak.
Struktur node dan penunjuk, senarai tunggal, operasi penyisipan di awal/tengah/akhir, penghapusan, penelusuran, pembalikan senarai, serta perbandingan linked list dengan array.
Prinsip LIFO dan FIFO, implementasi stack dan queue dengan array serta linked list, operasi dasar, aplikasi pada konversi notasi dan simulasi antrian, serta analisis kompleksitas operasi.
Menara Hanoi, permutasi dan kombinasi, pencarian maksimum dengan pendekatan bagi-dua, analisis relasi rekurens sederhana, serta teknik mengubah rekursi menjadi iterasi.
Syarat data terurut, pencarian biner iteratif dan rekursif, analisis kompleksitas logaritmik, pengantar fungsi hash, penanganan collision sederhana, serta kapan hashing lebih unggul dari pencarian biner.
Strategi partisi dan pivot pada quick sort, pemilihan pivot, proses penggabungan pada merge sort, penelusuran langkah, analisis kasus rata-rata dan terburuk, serta perbandingan keduanya.
Struktur heap biner, operasi sift up dan sift down, membangun heap, heap sort, serta implementasi priority queue sebagai dasar algoritma lanjutan dan penjadwalan.
Notasi Big-O, Omega, dan Theta, analisis waktu dan ruang, perhitungan kompleksitas perulangan bersarang, perbandingan pertumbuhan fungsi, serta cara memilih algoritma berdasarkan kebutuhan.
Jenis kesalahan (sintaks, runtime, logika), membaca pesan kompilator, penggunaan breakpoint dan watch, penelusuran manual dengan tabel, serta strategi sistematis menemukan akar masalah.
Membangun aplikasi berorientasi objek, algoritma tingkat lanjut, dan proyek terpadu.
Paradigma berorientasi objek, deklarasi class, field dan method, constructor dan destructor, instansiasi objek, serta perbedaan record dan class dalam pengelolaan memori.
Bagian private, protected, public, published, teknik penyembunyian data, penulisan properti dengan read dan write, serta praktik perancangan antarmuka kelas yang bersih.
Kelas dasar dan kelas turunan, kata kunci inherited, penulisan ulang method, hierarki kelas, serta perancangan hierarki yang benar untuk menghindari duplikasi kode.
Method statis dan virtual, kata kunci virtual, override, dan abstract, pengikatan dinamis, penggunaan variabel bertipe kelas dasar, serta contoh nyata polimorfisme.
Kelas abstrak sebagai kerangka umum, deklarasi interface sebagai kontrak perilaku, perbedaan interface dan kelas abstrak, serta penerapan pada perancangan sistem yang mudah diperluas.
Konsep penanganan kesalahan terstruktur, blok try...except dan try...finally, objek exception, raise, pembuatan kelas exception sendiri, serta pola penanganan yang aman.
Pemrograman generik pada Free Pascal dan Object Pascal, deklarasi generic dan specialize, penulisan struktur data yang dapat dipakai ulang untuk berbagai tipe, serta batasan implementasinya.
Penataan folder proyek berskala menengah, pemisahan lapisan logika dan antarmuka, penggunaan berkas konfigurasi, otomatisasi kompilasi, serta dokumentasi kode dan penomoran versi.
Pointer ke pointer, pointer ke record dan class, manipulasi memori terkontrol, teknik menghindari kebocoran memori, serta pengelolaan sumber daya dengan pola yang aman dan terukur.
Konsep graf berarah dan tak berarah, representasi matriks ketetanggaan dan senarai ketetanggaan, penelusuran BFS dengan queue dan DFS dengan stack atau rekursi, serta aplikasinya.
Pencarian jalur terpendek dengan Dijkstra, pembentukan pohon merentang minimum dengan Prim dan Kruskal, penelusuran langkah, serta analisis kompleksitas tiap algoritma.
Prinsip optimal substructure dan overlapping subproblems, pendekatan memoization dan tabulasi, studi kasus knapsack, longest common subsequence, serta perbandingan dengan rekursi biasa.
Pola perancangan yang umum digunakan: Singleton, Factory, Observer, Strategy, dan Model-View-Controller, disertai contoh implementasi Pascal serta kapan sebaiknya digunakan.
Pengujian unit sederhana, pengujian batas dan kasus ekstrem, teknik refactoring, pengukuran waktu eksekusi, optimasi algoritma dan struktur data, serta penyusunan kode yang mudah dirawat.
Perancangan dan implementasi aplikasi lengkap berorientasi objek: analisis kebutuhan, perancangan kelas, penyimpanan berkas, antarmuka teks, pengujian, dan dokumentasi proyek akhir.
Setiap modul dirancang mandiri namun tetap terhubung. Ikuti urutan fase untuk hasil pembelajaran yang paling optimal, atau lompat langsung ke modul tertentu bila prasyaratnya sudah dikuasai.