P Pascal dan Algoritma
Modul 2 dari 50 Roadmap
Modul 02 - Fase Dasar

Instalasi Free Pascal dan Struktur Program Pascal

Sebelum menulis kode yang lebih kompleks, kita perlu menyiapkan alat kerja dan memahami anatomi program Pascal. Modul ini memandu Anda memasang Free Pascal di Windows, Linux, dan macOS, menjelaskan alur kompilasi dari kode sumber hingga program yang dapat dieksekusi, dan membedah setiap bagian struktur program Pascal secara rinci.

Estimasi 110 menit Tingkat Dasar 2 Flowchart 4 Program Pascal 5 Latihan
01

Tujuan Pembelajaran

Kompetensi yang ingin dicapai setelah menyelesaikan modul ini

Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu:

  1. Memasang Free Pascal beserta IDE pada sistem operasi Windows, Linux, atau macOS.
  2. Menjalankan perintah kompilasi fpc dari terminal maupun dari dalam IDE.
  3. Menjelaskan alur kompilasi dari kode sumber .pas hingga berkas .exe.
  4. Mengidentifikasi dan menuliskan tujuh bagian struktur program Pascal secara benar.
  5. Membedakan kedudukan blok const, type, dan var di dalam program.
  6. Menggunakan komentar dengan tiga gaya yang didukung Pascal.
  7. Menjelaskan perbedaan mendasar Free Pascal dengan Turbo Pascal, termasuk mode kompilasi.
  8. Menggunakan direktif kompilator sederhana seperti {$mode tp} dan {$H+}.
  9. Membaca dan menafsirkan pesan kesalahan kompilator untuk memperbaiki kode secara sistematis.
02

Capaian Pembelajaran

Indikator ketercapaian dan kaitan dengan modul selanjutnya

Capaian Pembelajaran Mata Kuliah

Mahasiswa mampu menyiapkan lingkungan pengembangan Pascal, menulis program dengan struktur yang benar, mengompilasi, menjalankan, dan memecahkan masalah kompilasi dasar secara mandiri.

Indikator Ketercapaian Modul

Kode Indikator Bukti
IK-2.1 Berhasil memasang dan menjalankan Free Pascal di perangkat sendiri Latihan 1
IK-2.2 Mengompilasi dan menjalankan program dari terminal Latihan 1 dan 2
IK-2.3 Menulis program dengan urutan blok deklarasi yang benar Latihan 3 dan 4
IK-2.4 Membaca pesan kompilator dan mengidentifikasi sumber kesalahan Latihan 5
IK-2.5 Menjelaskan perbedaan Free Pascal dan Turbo Pascal secara tepat Jawaban latihan teori
Kaitan dengan Modul Berikutnya

Kemampuan kompilasi dan penulisan struktur program menjadi prasyarat mutlak untuk seluruh modul selanjutnya. Modul 3 akan mulai membahas variabel dan tipe data secara mendalam, memanfaatkan blok var yang baru saja kita kuasai di sini.

03

Materi Teori

Persiapan lingkungan, alur kompilasi, dan anatomi program Pascal

3.1 Mengapa Free Pascal

Free Pascal Compiler (FPC) adalah kompiler Pascal modern yang bersifat open source dan tersedia gratis. Proyek ini dimulai pada 1993 oleh Florian Klämpfl dan kini mendukung berbagai platform: Windows, Linux, macOS, FreeBSD, dan beberapa arsitektur prosesor. Terdapat beberapa alasan FPC menjadi pilihan utama untuk pembelajaran:

3.2 Pilihan Editor dan IDE

Anda dapat menulis Pascal dengan beberapa pilihan lingkungan kerja. Tidak ada yang paling benar, semuanya bergantung pada kenyamanan dan kebutuhan Anda.

Pilihan Kelebihan Kekurangan
FP IDE (fp.exe / fp) Sudah menyatu dengan instalasi FPC, ringan, tampilan mirip Turbo Pascal Antarmuka berbasis teks, terasa kuno bagi pemula
Lazarus IDE IDE grafis lengkap dengan form designer, debugger, dan manajemen proyek Instalasi lebih besar, agak berat untuk komputer tua
Visual Studio Code Ringan, kaya ekstensi, mendukung banyak bahasa sekaligus Perlu konfigurasi ekstensi Pascal dan task build secara manual
Notepad++ / Geany / Kate Ringan, cepat, penyorotan sintaks dasar sudah tersedia Tidak ada fitur debugger atau autocomplete lanjutan
Rekomendasi Kursus

Untuk mengikuti modul ini, kami menyarankan dua opsi. Bila Anda menginginkan pengalaman grafis, pasang Lazarus — instalasinya otomatis menyertakan FPC. Bila Anda lebih suka pendekatan minimalis dan memahami proses kompilasi dari terminal, pasang FPC saja dan gunakan editor teks favorit Anda.

3.3 Instalasi Free Pascal di Windows

Prosedur berikut berlaku untuk Windows 10 dan Windows 11. Estimasi waktu pemasangan sekitar 5 hingga 10 menit.

  1. Unduh pemasang FPC. Buka freepascal.org/download.html, pilih platform Windows, lalu unduh berkas fpc-x.y.z.i386-win32.exe atau versi 64-bit fpc-x.y.z.x86_64-win64.exe. Untuk komputer modern, pilih versi 64-bit.
  2. Jalankan pemasang. Klik dua kali berkas yang telah diunduh. Bila muncul peringatan User Account Control, pilih Yes. Pilih bahasa instalasi lalu klik OK.
  3. Ikuti wizard instalasi. Terima lisensi, pilih folder instalasi (default C:\FPC\x.y.z sudah sesuai), dan pilih Full installation agar IDE dan dokumentasi tersedia.
  4. Selesaikan instalasi. Klik Install dan tunggu hingga proses selesai. Pastikan opsi Add FPC to PATH tercentang bila tersedia.
  5. Verifikasi dari Command Prompt. Buka Command Prompt baru, lalu jalankan:
    Command PromptShell
    fpc -iV
    Bila terpasang benar, akan muncul nomor versi, misalnya 3.2.2.

3.4 Instalasi Free Pascal di Linux

Di sebagian besar distribusi Linux, FPC tersedia di repositori resmi. Buka terminal dan jalankan perintah sesuai distribusi Anda.

Debian / Ubuntu / Linux MintShell
sudo apt update
sudo apt install fpc
Fedora / RHEL / CentOSShell
sudo dnf install fpc
Arch Linux / ManjaroShell
sudo pacman -S fpc

Setelah pemasangan selesai, verifikasi dengan perintah fpc -iV. Untuk pengalaman grafis, Anda dapat menambahkan Lazarus melalui repositori distribusi atau mengunduh versi resmi dari lazarus-ide.org.

3.5 Instalasi Free Pascal di macOS

Pada macOS, ada dua jalur utama. Pertama, melalui paket resmi .dmg dari situs Free Pascal. Kedua, melalui Homebrew bagi pengguna yang sudah terbiasa dengan manajer paket tersebut.

HomebrewShell
brew install fpc
Catatan Pengguna Apple Silicon

Pada Mac dengan chip M1, M2, atau M3, paket Homebrew FPC untuk arsitektur ARM sudah tersedia. Bila Anda mengunduh paket resmi dari situs Free Pascal, pastikan memilih versi yang sesuai dengan arsitektur prosesor Anda.

3.6 Alur Kompilasi Program Pascal

Memahami apa yang terjadi ketika Anda menekan tombol kompilasi akan sangat membantu ketika muncul kesalahan. Secara garis besar, kompiler Pascal menerjemahkan kode sumber menjadi program yang dapat dieksekusi melalui beberapa tahap.

flowchart LR
    A["Kode Sumber
program.pas"] --> B["Preprocessing
direktif kompilator"] B --> C["Analisis Leksikal
tokenisasi"] C --> D["Analisis Sintaks
pohon parsing"] D --> E["Analisis Semantik
cek tipe dan scope"] E --> F["Pembangkitan Kode
assembly"] F --> G["Assembler"] G --> H["Linker
menyatukan unit"] H --> I["Program
program.exe"]

Gambar 3.1 - Alur kompilasi dari kode sumber hingga berkas eksekusi

Pada praktiknya, seluruh tahap di atas dipicu oleh satu perintah fpc nama_berkas.pas. Free Pascal juga menghasilkan berkas antara seperti .o (object) dan .ppu (unit), namun untuk keperluan pembelajaran, Anda cukup fokus pada berkas .pas sebagai input dan .exe (Windows) atau berkas tanpa ekstensi (Linux/macOS) sebagai output.

3.7 Struktur Lengkap Program Pascal

Program Pascal memiliki struktur bertingkat yang sangat ketat. Secara lengkap, ada tujuh bagian yang perlu Anda ketahui, meskipun sebagian di antaranya bersifat opsional.

program NamaProgram;                          { 1. Judul program }

uses NamaUnit1, NamaUnit2;                    { 2. Klausa uses }

const                                         { 3. Blok konstanta }
  KONSTANTA_1 = nilai;
  KONSTANTA_2 = nilai;

type                                          { 4. Blok tipe bentukan }
  NamaTipe = definisi;

var                                           { 5. Blok variabel global }
  variabel_1 : tipe;
  variabel_2 : tipe;

  procedure NamaProsedur;                     { 6. Subprogram (opsional) }
  begin
    { ... }
  end;

begin                                         { 7. Blok pernyataan utama }
  pernyataan;
  pernyataan;
end.

Berikut penjelasan setiap bagian.

No Bagian Wajib Keterangan
1 Judul program Tidak Diawali kata kunci program, diikuti nama program dan titik koma. Diabaikan oleh sebagian kompiler, tetapi berguna sebagai dokumentasi.
2 Klausa uses Tidak Mendaftarkan unit yang akan dipakai. Unit standar seperti crt perlu didaftarkan bila Anda ingin memakai fungsi seperti clrscr.
3 Blok const Tidak Mendefinisikan nilai tetap yang tidak dapat diubah selama program berjalan.
4 Blok type Tidak Mendefinisikan tipe bentukan seperti record, enumerasi, atau subrange. Dibahas lengkap pada Modul 20 hingga 22.
5 Blok var Tidak Mendeklarasikan variabel. Bila program tidak memakai variabel, blok ini boleh dihilangkan.
6 Subprogram Tidak Deklarasi prosedur dan fungsi. Dibahas mulai Modul 11.
7 Blok utama Ya Diawali begin dan diakhiri end. dengan titik. Wajib ada di setiap program.
Urutan Blok Bersifat Mengikat

Blok const harus mendahului type, yang harus mendahului var. Menukar urutan ini akan menyebabkan kesalahan kompilasi. Ini adalah salah satu kesalahan paling umum pada mahasiswa baru.

3.8 Aturan Penulisan Sintaks

a. Titik koma dan titik

Pascal membedakan dengan jelas tiga jenis pemisah:

b. Titik koma sebelum end

Secara aturan, pernyataan terakhir sebelum end boleh tanpa titik koma. Namun, banyak programmer tetap menuliskannya untuk mencegah kesalahan saat menyisipkan pernyataan baru di kemudian hari. Kami menyarankan kebiasaan menuliskan titik koma di setiap akhir pernyataan.

c. Pemisah antar pernyataan dan antar blok

Perhatikan bahwa setelah end yang menutup blok begin...end di dalam program, diikuti titik koma. Namun setelah end yang menutup program secara keseluruhan, diikuti titik.

3.9 Komentar dalam Pascal

Pascal mendukung tiga gaya komentar. Ketiganya berfungsi sama, yaitu diabaikan oleh kompiler.

tiga_gaya_komentar.pasPascal
program TigaGayaKomentar;

{ Ini komentar gaya kurung kurawal.
  Dapat menempati beberapa baris sekaligus. }

(* Ini komentar gaya kurung bintang.
   Sering dipakai untuk memblok kode sementara. *)

// Ini komentar gaya garis miring ganda.
// Hanya berlaku sampai akhir baris.

begin
  writeln('Program ini mendemonstrasikan tiga gaya komentar.');
end.
Gaya Dukungan Keterangan
{ ... } Semua Pascal Gaya asli, dapat multi-baris
(* ... *) Semua Pascal Berguna bila kode Anda mengandung kurawal di dalam string
// ... FPC, Delphi, Turbo Pascal 7+ Bergaya C, hanya satu baris
Kurawal Bersarang

Komentar gaya { ... } tidak dapat disarangkan. Bila Anda menulis { komentar { dalam } }, kompiler akan menganggap komentar berakhir pada kurawal tutup pertama, dan sisa teks dianggap sebagai kode. Untuk menonaktifkan blok yang mengandung komentar, gunakan (* ... *).

3.10 Direktif Kompilator

Direktif kompilator adalah perintah khusus yang disampaikan kepada kompiler, bukan kepada program yang dihasilkan. Sintaksnya sama dengan komentar, yaitu di dalam { ... }, tetapi diawali karakter dolar $.

Direktif Fungsi Nilai Umum
{$mode tp} Mengaktifkan mode kompatibilitas Turbo Pascal —
{$mode delphi} Mengaktifkan mode kompatibilitas Delphi —
{$mode objfpc} Mode default Free Pascal dengan Object Pascal —
{$H+} Mengaktifkan string dinamis (ansistring) sebagai default + aktif, - nonaktif
{$R+} Pemeriksaan rentang nilai saat runtime + aktif, - nonaktif
{$I-} Mematikan pemeriksaan kesalahan input/output otomatis + aktif, - nonaktif

Direktif ditulis pada baris tersendiri, biasanya di bagian atas program sebelum deklarasi. Contoh penggunaannya:

contoh_direktif.pasPascal
{$mode tp}
{$R+}

program ContohDirektif;

var
  nilai: integer;

begin
  write('Masukkan nilai: ');
  readln(nilai);
  writeln('Nilai yang Anda masukkan: ', nilai);
end.

3.11 Perbedaan Free Pascal dan Turbo Pascal

Pemahaman terhadap perbedaan ini penting ketika Anda menemukan referensi atau kode lama dari era Turbo Pascal.

Aspek Turbo Pascal Free Pascal
Pengembang Borland International Komunitas open source
Tahun rilis awal 1983 1993
Arsitektur 16-bit, MS-DOS 32-bit dan 64-bit, multi-platform
Ukuran memori program Terbatas 640 KB Memanfaatkan memori sistem secara penuh
Tipe string default ShortString (maks 255 karakter) AnsiString (dinamis)
Sintaks case Dengan else Dengan else (sama)
Object Pascal Terbatas sejak TP 5.5 Penuh, termasuk class, interface, generic
IDE Terintegrasi, berbasis teks biru FP IDE, Lazarus, atau editor eksternal
Ketersediaan Sudah tidak dijual lagi Gratis dan aktif dikembangkan

3.12 Membaca Pesan Kesalahan Kompilator

Kompiler Free Pascal melaporkan kesalahan dalam format yang teratur:

nama_berkas.pas(baris, kolom) Error: pesan kesalahan
nama_berkas.pas(baris, kolom) Warning: pesan peringatan
nama_berkas.pas(baris, kolom) Fatal: kesalahan yang menghentikan kompilasi
nama_berkas.pas(baris, kolom) Note: catatan informasi

Empat tingkat keparahan yang perlu Anda ketahui:

  1. Note — informasi saja, tidak menghentikan kompilasi.
  2. Warning — ada masalah yang sebaiknya diperbaiki, tetapi program masih dapat dikompilasi.
  3. Error — ada kesalahan yang mencegah kompilasi. Program tidak dihasilkan.
  4. Fatal — kesalahan serius yang menghentikan proses lebih awal, sering kali karena berkas tidak ditemukan.

Berikut beberapa pesan kesalahan yang paling sering muncul.

Pesan Kompilator Penyebab Umum Perbaikan
Fatal: Can't find unit X Unit yang didaftarkan di uses tidak ada Periksa ejaan nama unit atau pasang paket yang diperlukan
Error: Identifier not found "X" Variabel atau fungsi belum dideklarasikan Tambahkan deklarasi di blok var
Error: Illegal character Karakter tidak sah, sering karena karakter aneh dari copy-paste Hapus dan ketik ulang baris bermasalah
Error: ; expected but X found Lupa titik koma pada baris sebelumnya Tambahkan titik koma di akhir pernyataan sebelumnya
Error: Incompatible types Menugaskan tipe yang tidak kompatibel Konversi tipe atau gunakan variabel dengan tipe yang sesuai
Fatal: Syntax error, "." expected but ";" found Menuliskan end; sebagai penutup program Ganti dengan end.
Warning: Variable "X" does not seem to be initialized Variabel dipakai sebelum diberi nilai Berikan nilai awal sebelum dipakai
Tips Membaca Kesalahan

Kompiler Pascal kadang menunjuk baris setelah kesalahan sebenarnya. Bila pesan menunjuk baris ke-12, periksa juga baris ke-11 dan ke-10. Sering kali penyebabnya ada di baris sebelumnya yang lupa diberi titik koma.

04

Algoritma dan Flowchart

Alur kompilasi dan siklus pengembangan program

Flowchart pada bagian ini menggambarkan alur kerja yang akan Anda lakukan berulang-ulang sepanjang kursus: menulis kode, mengompilasi, memperbaiki kesalahan, menjalankan, dan menguji.

4.1 Flowchart Siklus Menulis-Kompilasi-Jalankan

flowchart TD
    A(["Mulai"]) --> B["Tulis atau ubah
kode sumber .pas"] B --> C["Jalankan perintah
fpc nama_berkas.pas"] C --> D{"Kompilasi
berhasil?"} D -- "Tidak" --> E["Baca pesan kesalahan
di terminal"] E --> F["Identifikasi baris
dan jenis kesalahan"] F --> G["Perbaiki kode sumber"] G --> B D -- "Ya" --> H["Jalankan
program hasil kompilasi"] H --> I{"Hasil sesuai
yang diharapkan?"} I -- "Tidak" --> J["Analisis logika
dan data uji"] J --> B I -- "Ya" --> K(["Selesai"])

Gambar 4.1 - Siklus pengembangan program Pascal dari penulisan hingga pengujian

4.2 Flowchart Alur Kompilasi Berkas .pas Menjadi .exe

Diagram berikut memperlihatkan secara lebih teknis apa yang terjadi di dalam kompiler FPC ketika Anda menjalankannya.

flowchart TD
    A(["Perintah fpc dijalankan"]) --> B["Baca berkas sumber .pas"]
    B --> C{"Berkas
ditemukan?"} C -- "Tidak" --> X["Fatal: can't open file"] X --> Z(["Selesai dengan kesalahan"]) C -- "Ya" --> D["Proses direktif kompilator"] D --> E["Analisis leksikal dan sintaks"] E --> F{"Ada kesalahan
sintaks?"} F -- "Ya" --> Y["Tampilkan pesan error"] Y --> Z F -- "Tidak" --> G["Analisis semantik dan tipe"] G --> H{"Ada kesalahan
tipe atau scope?"} H -- "Ya" --> Y H -- "Tidak" --> I["Bangkitkan kode objek .o"] I --> J["Link dengan unit yang dipakai"] J --> K["Hasilkan berkas .exe"] K --> L(["Selesai dengan sukses"])

Gambar 4.2 - Alur internal kompilasi Free Pascal

05

Pseudocode

Representasi algoritmik dari struktur dan alur kompilasi

Karena modul ini lebih menekankan aspek persiapan lingkungan dan struktur, pseudocode yang disajikan berbentuk algoritma prosedural yang menggambarkan langkah-langkah instalasi dan kompilasi.

5.1 Pseudocode Memasang dan Memverifikasi Free Pascal

PROGRAM VerifikasiInstalasiFPC
{ Memastikan Free Pascal terpasang dan dapat dipanggil dari terminal }

DEKLARASI
  versiFPC : string

ALGORITMA
  write("Membuka terminal atau Command Prompt...")
  write("Menjalankan perintah: fpc -iV")
  read(versiFPC)

  jika versiFPC kosong maka
    write("Free Pascal belum terpasang atau tidak ada di PATH.")
    write("Periksa kembali langkah instalasi.")
  selain itu
    write("Free Pascal terpasang dengan versi: ", versiFPC)
    write("Instalasi berhasil.")
  akhir jika
END

5.2 Pseudocode Mengompilasi dan Menjalankan Program

PROGRAM KompilasiDanJalankan
{ Alur mengompilasi berkas .pas dan menjalankan hasilnya }

DEKLARASI
  namaBerkas    : string
  berhasil      : boolean

ALGORITMA
  write("Nama berkas sumber (tanpa ekstensi): ")
  read(namaBerkas)

  write("Menjalankan: fpc ", namaBerkas, ".pas")
  berhasil <- jalankanKompilasi(namaBerkas)

  jika berhasil = false maka
    write("Kompilasi gagal. Baca pesan kesalahan di layar.")
    write("Perbaiki kode sumber lalu ulangi.")
  selain itu
    write("Kompilasi berhasil. Menjalankan program...")
    jalankanProgram(namaBerkas)
  akhir jika
END

5.3 Pseudocode Struktur Program Sederhana

PROGRAM StrukturProgramContoh
{ Mendemonstrasikan urutan blok deklarasi dan pernyataan }

KONSTANTA
  BATAS_MAKS = 100

DEKLARASI
  nilaiAktual : integer
  namaProgram : string

ALGORITMA
  namaProgram <- "StrukturProgramContoh"
  write("Nama program: ", namaProgram)

  nilaiAktual <- BATAS_MAKS
  write("Nilai batas maksimum: ", nilaiAktual)
END
06

Contoh Kode Pascal Lengkap

Empat program untuk menguji struktur dan fitur Pascal

6.1 Program Minimal: Struktur Paling Sederhana

Program berikut adalah bentuk paling minimal dari program Pascal yang sah. Baris judul dan deklarasi dihilangkan, hanya menyisakan blok utama.

minimal.pas Pascal
begin
  writeln('Program Pascal paling minimal.');
end.

Program ini tidak memiliki judul, tidak memakai variabel, dan tidak menerima masukan. Namun, program ini sudah lengkap dan dapat dikompilasi serta dijalankan.

6.2 Program dengan Struktur Lengkap

Program berikut mendemonstrasikan semua bagian struktur Pascal kecuali subprogram: judul, klausa uses, blok const, blok type, blok var, dan blok utama.

struktur_lengkap.pas Pascal
program StrukturLengkap;
{ Mendemonstrasikan struktur lengkap program Pascal
  tanpa subprogram }

uses
  crt;

const
  NAMA_APLIKASI = 'Demo Struktur Pascal';
  VERSI = '1.0.0';
  TAHUN = 2025;

type
  Suhu = -100..100;

var
  namaPengguna: string;
  umur: integer;
  suhuRuang: Suhu;
  sudahLogin: boolean;

begin
  clrscr;

  writeln('==========================================');
  writeln(NAMA_APLIKASI);
  writeln('Versi ', VERSI, ' - Tahun ', TAHUN);
  writeln('==========================================');
  writeln;

  write('Siapa nama Anda? ');
  readln(namaPengguna);
  write('Berapa umur Anda? ');
  readln(umur);
  write('Suhu ruangan (Celsius, -100 s.d. 100)? ');
  readln(suhuRuang);

  sudahLogin := true;

  writeln;
  writeln('==========================================');
  writeln('Ringkasan Data');
  writeln('==========================================');
  writeln('Nama       : ', namaPengguna);
  writeln('Umur       : ', umur, ' tahun');
  writeln('Suhu ruang : ', suhuRuang, ' derajat Celsius');
  writeln('Status     : ', sudahLogin);
  writeln('==========================================');
end.

Contoh keluaran:

==========================================
Demo Struktur Pascal
Versi 1.0.0 - Tahun 2025
==========================================

Siapa nama Anda? Andi
Berapa umur Anda? 20
Suhu ruangan (Celsius, -100 s.d. 100)? 24

==========================================
Ringkasan Data
==========================================
Nama       : Andi
Umur       : 20 tahun
Suhu ruang : 24 derajat Celsius
Status     : TRUE
==========================================

6.3 Program dengan Direktif Kompilator Mode Turbo Pascal

Program ini menambahkan direktif {$mode tp} di baris paling atas agar perilaku kompilasi menyerupai Turbo Pascal. Perhatikan bahwa string maksimal 255 karakter pada mode ini.

mode_turbo.pas Pascal
{$mode tp}
{$R+}

program ModeTurboPascal;
{ Mendemonstrasikan penggunaan direktif kompilator }

const
  MAKS_NILAI = 100;
  MIN_NILAI = 0;

var
  namaSiswa: string[30];
  nilai: integer;

begin
  write('Nama siswa (maks 30 karakter): ');
  readln(namaSiswa);

  write('Nilai ujian (0 sampai 100): ');
  readln(nilai);

  writeln;
  writeln('Nama  : ', namaSiswa);
  writeln('Nilai : ', nilai);

  if (nilai >= MIN_NILAI) and (nilai <= MAKS_NILAI) then
    writeln('Status: Nilai valid')
  else
    writeln('Status: Nilai di luar rentang yang diizinkan');
end.
Perhatikan {$R+}

Direktif {$R+} mengaktifkan pemeriksaan rentang saat runtime. Bila pengguna memasukkan nilai di luar rentang yang ditentukan untuk variabel subrange, program akan menghentikan eksekusi dengan pesan kesalahan yang jelas. Ini sangat berguna untuk mendeteksi bug lebih awal.

6.4 Program dengan Subprogram Sederhana

Sebagai pratinjau Modul 11, program berikut menambahkan satu prosedur sederhana. Perhatikan bahwa prosedur harus dideklarasikan sebelum blok utama.

dengan_prosedur.pas Pascal
program DenganProsedur;
{ Pratinjau subprogram: prosedur sederhana }

const
  GARIS = '==========================================';

var
  nama: string;

procedure TampilkanHeader;
begin
  writeln(GARIS);
  writeln('  Program dengan Subprogram Sederhana');
  writeln(GARIS);
end;

procedure SapaPengguna(namaSapa: string);
begin
  writeln('Selamat datang, ', namaSapa, '!');
end;

begin
  TampilkanHeader;

  write('Siapa nama Anda? ');
  readln(nama);

  SapaPengguna(nama);

  writeln('Prosedur selesai dijalankan.');
  writeln(GARIS);
end.

Program ini menunjukkan tiga hal penting: (1) subprogram dideklarasikan setelah blok var dan sebelum blok utama, (2) prosedur dapat dipanggil dari blok utama, (3) konstanta yang dideklarasikan di tingkat program dapat diakses dari dalam prosedur.

07

Penjelasan Kode Baris per Baris

Membedah program StrukturLengkap dan ModeTurboPascal secara rinci

7.1 Program StrukturLengkap

Baris Kode Penjelasan
1 program StrukturLengkap; Judul program. Nama program bebas, namun sebaiknya sama dengan nama berkas agar tidak membingungkan. Diakhiri titik koma.
2-3 { Mendemonstrasikan struktur ... } Komentar multi-baris yang menjelaskan tujuan program. Komentar semacam ini sangat membantu ketika program dibaca orang lain atau dibaca kembali setelah beberapa bulan.
5-6 uses
crt;
Klausa uses mendaftarkan unit crt, yang menyediakan prosedur seperti clrscr untuk membersihkan layar. Bila tidak memakainya, unit ini dapat dihilangkan. Perhatikan bahwa unit diakhiri titik koma.
8 const Pembuka blok konstanta. Semua konstanta yang didefinisikan dalam blok ini bernilai tetap selama program berjalan dan tidak dapat diubah.
9 NAMA_APLIKASI = 'Demo Struktur Pascal'; Konstanta string. Konvensi penamaan konstanta di kursus ini memakai huruf kapital semua dengan pemisah garis bawah. Tanda = di sini bukan penugasan, melainkan pemberian nilai awal pada konstanta.
10-11 VERSI = '1.0.0';
TAHUN = 2025;
Dua konstanta lagi, satu bertipe string dan satu bertipe integer. Tipe data ditentukan otomatis oleh kompiler berdasarkan nilai yang diberikan.
13 type Pembuka blok tipe bentukan. Di sini kita mendefinisikan tipe buatan sendiri. Blok ini wajib berada setelah const dan sebelum var.
14 Suhu = -100..100; Mendefinisikan tipe Suhu sebagai subrange dari -100 hingga 100. Tipe ini membatasi nilai yang sah. Bila program mencoba menyimpan nilai di luar rentang, akan muncul kesalahan (dengan {$R+}).
16 var Pembuka blok variabel. Semua variabel yang akan dipakai harus terdaftar di sini sebelum blok utama.
17-20 namaPengguna: string;
umur: integer;
suhuRuang: Suhu;
sudahLogin: boolean;
Empat deklarasi variabel dengan empat tipe berbeda. Perhatikan bahwa suhuRuang memakai tipe Suhu yang baru didefinisikan di blok type. Setiap deklarasi diakhiri titik koma.
22 begin Pembuka blok utama program. Semua pernyataan yang akan dieksekusi berada di antara baris ini dan end. di baris terakhir.
23 clrscr; Prosedur dari unit crt untuk membersihkan layar. Tanpa unit crt di klausa uses, baris ini akan menghasilkan kesalahan kompilasi "Identifier not found".
25-27 writeln('=====');
writeln(NAMA_APLIKASI);
writeln('Versi ', VERSI, ...);
Menampilkan tiga baris header. Perhatikan baris ketiga mencampur teks literal dengan konstanta VERSI dan TAHUN yang dipisahkan koma. Argumen kedua dan seterusnya tidak perlu diapit tanda petik karena mereka adalah ekspresi, bukan teks.
30-32 write('Siapa nama Anda? ');
readln(namaPengguna);
Pola standar prompt then read. Prosedur write menampilkan pertanyaan tanpa baris baru, sehingga pengguna dapat mengetik di baris yang sama. readln menunggu masukan dan menyimpannya ke variabel.
33-36 write('Berapa umur Anda? ');
readln(umur);
...
Pola yang sama diulang untuk umur dan suhuRuang. Perhatikan bahwa kompiler akan mencoba mengkonversi masukan teks menjadi tipe yang sesuai; bila pengguna mengetik "dua puluh" untuk umur, akan muncul kesalahan saat runtime.
38 sudahLogin := true; Penugasan nilai boolean. Operator := adalah penugasan, sedangkan = adalah pembanding. Konstanta boolean true dan false adalah reserved word.
40-48 writeln;
writeln('=====');
...
Blok keluaran ringkasan. Perhatikan writeln; tanpa argumen menghasilkan satu baris kosong, sehingga ringkasan terpisah rapi dari bagian masukan.
49 end. Menutup blok utama dan mengakhiri program. Titik setelah end bersifat wajib dan hanya boleh muncul sekali di seluruh program.

7.2 Program ModeTurboPascal

Baris Kode Penjelasan
1 {$mode tp} Direktif kompilator. Harus berada di baris paling atas sebelum kata kunci program. Mengaktifkan mode kompatibilitas Turbo Pascal, sehingga tipe string default menjadi ShortString (maksimal 255 karakter) dan beberapa perilaku lain menyerupai TP.
2 {$R+} Direktif untuk mengaktifkan pemeriksaan rentang saat runtime. Bila variabel subrange diberi nilai di luar rentangnya, program akan berhenti dengan pesan kesalahan yang jelas, bukan diam-diam menghasilkan nilai yang salah.
4 program ModeTurboPascal; Judul program. Meskipun opsional, penulisan judul membantu ketika program dibaca oleh orang lain.
6-7 { Mendemonstrasikan ... } Komentar yang menjelaskan tujuan program.
9-11 const
MAKS_NILAI = 100;
MIN_NILAI = 0;
Dua konstanta integer. Dengan adanya {$R+}, rentang ini dapat dipakai untuk memvalidasi masukan pengguna.
13-14 var
namaSiswa: string[30];
Deklarasi variabel string dengan panjang maksimal 30 karakter. Notasi string[30] valid di semua mode Pascal dan berguna untuk membatasi penggunaan memori. Pada mode tp, ini adalah bentuk deklarasi string yang paling umum.
15 nilai: integer; Variabel integer untuk menyimpan nilai ujian.
20-24 if (nilai >= MIN_NILAI) and
(nilai <= MAKS_NILAI) then
Struktur percabangan. Meskipun percabangan dibahas secara mendalam pada Modul 6, kode ini menunjukkan bagaimana operator pembanding >= dan <= dipadukan dengan operator logika and. Tanda kurung di sekeliling setiap perbandingan sangat dianjurkan untuk kejelasan.

7.3 Jejak Eksekusi Program StrukturLengkap

Tabel berikut menunjukkan jejak eksekusi program StrukturLengkap dengan masukan nama = Andi, umur = 20, suhu = 24.

Baris Pernyataan Efek
23clrscrLayar dibersihkan
25-27writeln headerHeader tampil: 3 baris
30-31prompt dan readln namanamaPengguna = "Andi"
33-34prompt dan readln umurumur = 20
36-37prompt dan readln suhusuhuRuang = 24
38sudahLogin := truesudahLogin = TRUE
40-48writeln ringkasanRingkasan tampil di layar
49end.Program selesai
Pola Pikir yang Perlu Ditanamkan

Perhatikan bahwa dalam program yang benar, urutan blok adalah program → uses → const → type → var → (subprogram) → begin...end.. Urutan ini tidak boleh diubah. Bila ada satu saja yang keliru urutannya, kompiler akan menolak.

08

Latihan Soal

Lima soal dengan tingkat kesulitan bertingkat

1

Instalasi dan Kompilasi Pertama

Mudah

Pasang Free Pascal di perangkat Anda. Setelah selesai, buat program dengan nama berkas uji_instalasi.pas yang menampilkan pesan berikut:

Uji Instalasi Free Pascal
Versi 1.0
Hari ini saya belajar mengompilasi program Pascal.

Langkah yang harus Anda lakukan:

  1. Buka terminal atau Command Prompt.
  2. Pindah ke direktori tempat berkas uji_instalasi.pas disimpan.
  3. Jalankan perintah fpc uji_instalasi.pas.
  4. Perhatikan pesan yang muncul. Apakah kompilasi berhasil?
  5. Jalankan program hasil kompilasi.
  6. Catat perintah yang Anda gunakan di setiap langkah.

Pertanyaan tambahan: berapa baris pesan yang dihasilkan kompiler ketika kompilasi berhasil? Berapa baris ketika gagal?

2

Mengenal Pesan Kesalahan Kompilator

Mudah

Salin program berikut ke berkas error_latihan.pas, kemudian kompilasi. Amati pesan kesalahan yang muncul, lalu perbaiki satu per satu.

error_latihan.pasPascal
program ErrorLatihan

const
  NAMA = 'Latihan'

var
  angka: integer

begin
  angka := 10
  writeln('Nama: ', NAMA)
  writeln('Angka: ', angka)
end;

Ketentuan:

  • Catat setiap pesan kesalahan yang muncul, lengkap dengan nomor baris dan jenisnya (Error, Warning, Fatal).
  • Perbaiki satu kesalahan pada satu waktu, kompilasi ulang setelah setiap perbaikan.
  • Berapa jumlah kesalahan yang berhasil Anda identifikasi?

Pertanyaan analisis: mengapa kompiler berhenti pada kesalahan pertama dan tidak melaporkan seluruh kesalahan sekaligus?

3

Program Profil Mahasiswa

Sedang

Buat program dengan nama profil_mahasiswa.pas yang meminta masukan nama, NIM, program studi, dan angkatan, kemudian menampilkannya dalam format kartu profil.

Ketentuan:

  • Gunakan blok const untuk menyimpan nama universitas dan nama fakultas.
  • Gunakan blok var untuk empat masukan pengguna.
  • Gunakan blok type untuk mendefinisikan tipe subrange TahunAngkatan = 2000..2100.
  • Tampilkan garis pemisah yang rapi menggunakan konstanta.
  • Setiap masukan diberi prompt yang jelas sebelum readln.

Contoh keluaran yang diharapkan:

==========================================
KARTU PROFIL MAHASISWA
Universitas Nusantara
Fakultas Ilmu Komputer
==========================================
Nama         : Budi Santoso
NIM          : 2025010001
Program Studi: Teknik Informatika
Angkatan     : 2025
==========================================
4

Demonstrasi Direktif Kompilator

Sedang

Buat dua versi program yang sama, satu dengan {$mode tp} di baris paling atas dan satu tanpa direktif tersebut. Kedua program membaca nama pengguna dan menampilkannya.

Ketentuan:

  • Beri nama berkas tanpa_mode.pas dan dengan_mode.pas.
  • Kompilasi keduanya dan bandingkan ukuran berkas hasil kompilasi.
  • Catat perbedaan yang Anda amati dari segi pesan kompilasi dan perilaku program.

Pertanyaan analisis: berdasarkan dokumentasi Free Pascal, apa perbedaan perilaku yang paling nyata antara mode Turbo Pascal dan mode objfpc untuk tipe data string?

5

Deteksi Kesalahan Struktur

Sulit

Program berikut memiliki enam kesalahan baik sintaks maupun struktur. Temukan semuanya, lalu tuliskan versi yang benar.

kacau.pasPascal
var
  total: integer;
  nama: string;

program Kacau;

const
  PAJAK = 0.11

type
  Nilai = 0..100;

begin
  write('Nama: ')
  readln(nama);

  write('Total: ');
  readln(total);

  writeln('Nama: ', nama);
  writeln('Total: ', total);
end.

Ketentuan:

  • Sebutkan nomor baris setiap kesalahan yang Anda temukan.
  • Jelaskan jenis kesalahan: apakah sintaks, struktur, atau logika.
  • Tuliskan versi perbaikan lengkap yang dapat dikompilasi.

Pertanyaan analisis: setelah kesalahan diperbaiki, program tetap menampilkan peringatan bahwa konstanta PAJAK tidak dipakai. Apa yang sebaiknya Anda lakukan: menghapus konstanta tersebut, atau menambahkannya ke dalam perhitungan?

09

Studi Kasus

Kartu Pendaftaran Pelatihan Pemrograman

9.1 Deskripsi Masalah

Sebuah lembaga kursus pemrograman menerima pendaftaran peserta melalui program sederhana. Setiap peserta diminta memasukkan data berikut: nama lengkap, usia, asal kota, dan pilihan bahasa pemrograman. Program akan menampilkan kembali data tersebut dalam bentuk kartu peserta, lengkap dengan nomor urut otomatis.

Studi kasus ini melatih penggunaan lengkap struktur program: konstanta, tipe bentukan, variabel, dan blok utama dengan masukan serta keluaran terformat.

9.2 Analisis dengan Berpikir Komputasional

Pilar Penerapan pada Kasus Ini
Dekomposisi Terbagi menjadi tiga sub-tugas: (1) membaca empat data peserta, (2) memvalidasi usia dalam rentang wajar, (3) menampilkan kartu peserta terformat.
Pengenalan Pola Pola prompt, readln yang sama diulang empat kali. Pola ini akan menjadi ciri khas dari program-program awal pada beberapa modul berikutnya.
Abstraksi Detail yang diabaikan: alamat lengkap, nomor telepon, email. Yang disimpan hanya empat data inti yang relevan untuk keperluan identifikasi awal.
Algoritma Alur sederhana: baca → susun kartu → tampilkan. Belum ada percabangan maupun perulangan.

9.3 Flowchart Studi Kasus

flowchart TD
    A(["Mulai"]) --> B[/"Baca nama, usia, kota, pilihan bahasa"/]
    B --> C["Susun nomor peserta = 1"]
    C --> D["Siapkan garis pemisah dari konstanta"]
    D --> E[/"Tampilkan kartu peserta"/]
    E --> F(["Selesai"])
      

Gambar 9.1 - Flowchart pendaftaran peserta pelatihan

9.4 Pseudocode Studi Kasus

PROGRAM KartuPesertaPelatihan
{ Menerima data peserta dan menampilkan kartu pendaftaran }

KONSTANTA
  NAMA_LEMBAGA = "Lembaga Kursus Pemrograman Nusantara"
  GARIS_GANDA  = "=========================================="
  GARIS_TUNGGAL= "------------------------------------------"

TIPE
  UsiaPeserta = 10..80

DEKLARASI
  namaPeserta    : string
  usia           : UsiaPeserta
  asalKota       : string
  bahasaPilihan  : string
  nomorPeserta   : integer

ALGORITMA
  nomorPeserta <- 1

  write("Nama lengkap      : ")
  read(namaPeserta)
  write("Usia              : ")
  read(usia)
  write("Asal kota         : ")
  read(asalKota)
  write("Bahasa pemrograman: ")
  read(bahasaPilihan)

  write(GARIS_GANDA)
  write(NAMA_LEMBAGA)
  write(GARIS_GANDA)
  write("Nomor Peserta     : ", nomorPeserta)
  write("Nama              : ", namaPeserta)
  write("Usia              : ", usia, " tahun")
  write("Asal Kota         : ", asalKota)
  write("Bahasa Pilihan    : ", bahasaPilihan)
  write(GARIS_TUNGGAL)
  write("Status            : TERDAFTAR")
  write(GARIS_GANDA)
END

9.5 Implementasi dalam Pascal

kartu_peserta.pas Pascal
program KartuPesertaPelatihan;
{ Studi Kasus Modul 2 - Kartu pendaftaran peserta pelatihan }

const
  NAMA_LEMBAGA  = 'Lembaga Kursus Pemrograman Nusantara';
  GARIS_GANDA   = '==========================================';
  GARIS_TUNGGAL = '------------------------------------------';

type
  UsiaPeserta = 10..80;

var
  namaPeserta   : string;
  usia          : UsiaPeserta;
  asalKota      : string;
  bahasaPilihan : string;
  nomorPeserta  : integer;

begin
  nomorPeserta := 1;

  writeln('Formulir Pendaftaran Peserta');
  writeln(GARIS_TUNGGAL);
  writeln;

  write('Nama lengkap      : ');
  readln(namaPeserta);

  write('Usia (10-80)      : ');
  readln(usia);

  write('Asal kota         : ');
  readln(asalKota);

  write('Bahasa pemrograman: ');
  readln(bahasaPilihan);

  writeln;
  writeln(GARIS_GANDA);
  writeln(NAMA_LEMBAGA);
  writeln(GARIS_GANDA);
  writeln('Nomor Peserta     : ', nomorPeserta);
  writeln('Nama              : ', namaPeserta);
  writeln('Usia              : ', usia, ' tahun');
  writeln('Asal Kota         : ', asalKota);
  writeln('Bahasa Pilihan    : ', bahasaPilihan);
  writeln(GARIS_TUNGGAL);
  writeln('Status            : TERDAFTAR');
  writeln(GARIS_GANDA);
end.

9.6 Contoh Keluaran

Formulir Pendaftaran Peserta
------------------------------------------

Nama lengkap      : Siti Nurhaliza
Usia (10-80)      : 22
Asal kota         : Bandung
Bahasa pemrograman: Pascal

==========================================
Lembaga Kursus Pemrograman Nusantara
==========================================
Nomor Peserta     : 1
Nama              : Siti Nurhaliza
Usia              : 22 tahun
Asal Kota         : Bandung
Bahasa Pilihan    : Pascal
------------------------------------------
Status            : TERDAFTAR
==========================================

9.7 Pembahasan

Perhatikan keputusan perancangan berikut.

  1. Konstanta untuk garis pemisah. Alih-alih menuliskan '=====' berkali-kali, kita definisikan sekali sebagai GARIS_GANDA dan GARIS_TUNGGAL. Bila nanti ingin mengubah panjang garis, cukup satu tempat yang diubah.
  2. Tipe subrange untuk usia. Dengan mendefinisikan UsiaPeserta = 10..80, kita menyatakan secara eksplisit rentang usia yang sah. Bila nanti ditambahkan direktif {$R+}, kompiler akan memvalidasi masukan secara otomatis.
  3. Blok keluaran terstruktur. Setiap baris kartu ditulis dengan writeln tunggal. Ini membuat kode mudah dibaca dan dimodifikasi.
  4. Pemisah visual. Menyisipkan writeln; tanpa argumen memisahkan formulir dari kartu hasil dengan rapi.

9.8 Pengembangan Selanjutnya

Program ini akan berkembang pada modul-modul berikutnya.

Modul Pengembangan
Modul 5Memperhalus pemformatan keluaran dengan pengaturan lebar field
Modul 6Menambahkan validasi bersyarat untuk setiap masukan
Modul 8Mendaftarkan banyak peserta sekaligus dengan perulangan FOR
Modul 16Menyimpan seluruh peserta dalam array
Modul 20Mengelompokkan data peserta dalam record
Modul 25Menyimpan daftar peserta ke berkas teks
10

Rangkuman

Poin-poin kunci yang perlu diingat dari Modul 2

  1. Free Pascal adalah kompiler Pascal modern, gratis, open source, dan lintas platform. Tersedia untuk Windows, Linux, dan macOS.
  2. Pemasangan FPC dapat dilakukan melalui pemasang grafis di Windows, manajer paket di Linux, dan Homebrew atau paket .dmg di macOS. Verifikasi dengan perintah fpc -iV.
  3. Alur kompilasi melibatkan analisis leksikal, sintaks, semantik, pembangkitan kode, assembling, dan linking. Satu perintah fpc nama_berkas.pas menjalankan seluruh tahap tersebut.
  4. Struktur program Pascal terdiri atas tujuh bagian: judul program, klausa uses, blok const, blok type, blok var, subprogram, dan blok utama. Urutannya bersifat mengikat.
  5. Titik koma memisahkan pernyataan; titik dua memisahkan nama variabel dari tipe; titik hanya muncul sekali, setelah end penutup program.
  6. Pascal mendukung tiga gaya komentar: { ... }, (* ... *), dan // ... (khusus FPC dan Delphi). Komentar gaya kurawal tidak dapat disarangkan.
  7. Direktif kompilator ditulis dalam { $... }. Yang paling penting: {$mode tp}, {$mode delphi}, {$mode objfpc}, dan {$R+}.
  8. Perbedaan utama Free Pascal dan Turbo Pascal terletak pada arsitektur (16-bit vs 32/64-bit), dukungan Object Pascal, tipe string default, dan ketersediaan saat ini.
  9. Pesan kesalahan kompilator memiliki empat tingkat: Note, Warning, Error, dan Fatal. Bila pesan menunjuk baris tertentu, periksa juga baris sebelumnya karena penyebab sering ada di sana.
  10. Bila ingin perilaku semirip mungkin dengan Turbo Pascal, gunakan {$mode tp}. Bila ingin memanfaatkan fitur modern seperti string dinamis dan class, gunakan {$mode objfpc} atau {$mode delphi}.
Sebelum Melanjutkan

Pastikan Anda telah berhasil mengompilasi setidaknya satu program di perangkat Anda sendiri, dan Anda sudah memahami struktur blok program Pascal. Bila masih ada keraguan, ulangi Latihan 1 dan Latihan 5. Modul 3 akan mulai membahas variabel dan tipe data secara mendalam.

11

Referensi

Sumber rujukan yang digunakan dalam penyusunan modul ini

Buku Teks

  1. Wirth, N. (1971). "The Programming Language Pascal." Acta Informatica, 1(1), 35-63. Makalah asli yang mendefinisikan bahasa Pascal.
  2. Jensen, K., & Wirth, N. (1991). Pascal User Manual and Report (4th ed.). Springer-Verlag. Referensi standar definisi Pascal.
  3. Cooper, D., & Clancy, M. (1982). Oh! Pascal! W. W. Norton & Company. Buku pengantar klasik yang sangat baik untuk pemula.
  4. Cantu, M. (2020). Object Pascal Handbook. Marco Cantu. Referensi modern untuk Free Pascal dan Delphi.
  5. Grogono, P. (1995). Programming with Pascal. Addison-Wesley. Buku teks akademik yang membahas struktur program secara rinci.

Dokumentasi Resmi

  1. Free Pascal Team. Free Pascal Programmer's Guide. Tersedia di freepascal.org/docs.html.
  2. Free Pascal Team. Free Pascal Reference Guide. Berisi daftar lengkap reserved words, direktif kompilator, dan tipe data standar.
  3. Free Pascal Team. Free Pascal User's Guide. Berisi petunjuk instalasi untuk berbagai platform.
  4. Lazarus IDE Documentation. Tersedia di wiki.lazarus.freepascal.org.

Sumber Daring

  1. Free Pascal Official Website. https://www.freepascal.org.
  2. Lazarus IDE Official Website. https://www.lazarus-ide.org.
  3. Pascal Central. Kumpulan sumber daya, tutorial, dan referensi Pascal.
  4. Stack Overflow - Tag pascal dan freepascal. Komunitas tanya-jawab yang aktif untuk permasalahan praktis.