Ubah file dpr dari pelajaran sebelumnya menjadi konten berikut
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
program MyProgram;
procedure MyProcedure(const A: Integer);
begin
WriteLn('A + 10 is: ', A + 10);
end;
function MyFunction(const S: string): string;
begin
Result := S + 'strings are automatically managed';
end;
var
X: Single;
begin
WriteLn(MyFunction('Note: '));
MyProcedure(5);
// Pembagian pakai "/" selalu menghasilkan bilangan pecahan, gunakan "div" untuk pembagian bulat
X := 15 / 5;
WriteLn('X is now: ', X); // notasi ilmiah
WriteLn('X is now: ', X:1:2); // 2 angka di belakang koma
end.Code language: PHP (php)
D:\fpcdemo>fpc mydemo.dpr
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling mydemo.dpr
Linking mydemo.exe
20 baris dikompilasi, 0,0 detik, 39248 byte kode, 2484 byte data
D:\fpcdemo>mydemo
Note: strings are automatically managed
A + 10 is: 15
X is now: 3.000000000E+00
X is now: 3.00
D:\fpcdemo>Code language: CSS (css)

Berikut penjelasan komentar per baris. Karakter non-Inggris bisa tampil rusak; atur encoding konsol agar bisa menampilkan tulisan Mandarin dengan benar.
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
program MyProgram;
// Nama program buatan sendiri. Program konsol Pascal harus dimulai dengan program nama; baru kemudian deklarasi variabel, prosedur dan logika utama
// Tanpa nilai kembalian: procedure prosedur. Prosedur dan fungsi hanya berjalan jika dipanggil
procedure MyProcedure(const A: Integer);
begin
WriteLn('A + 10 =:', A + 10);
end;
// Ada nilai kembalian: function fungsi
function MyFunction(const S: string): string;
begin
Result := S + 'memori string dikelola otomatis oleh sistem';
end;
// Object Pascal tidak punya fungsi main, blok terluar begin...end. menjadi titik masuk program, ini blok utama
var
X: Single; // Tipe dasar bilangan pecahan presisi tunggal
begin
// Semua logika yang akan dijalankan ditulis di sini
WriteLn(MyFunction('Peringatan:'));
MyProcedure(5);
// Operator "/" selalu menghasilkan bilangan pecahan, pakai div untuk pembagian bilangan bulat
X := 15 / 5;
WriteLn('X is now:', X); // Tampil otomatis pakai notasi ilmiah
WriteLn('X is now:', X:1:2); // Batasi dua angka di belakang koma
end. // end. pakai titik menandakan program selesai sepenuhnyaCode language: PHP (php)
Setiap fungsi dan prosedur memiliki pasangan begin dan end untuk batas isi fungsi, setara dengan kurung kurawal { } di C, C++, Java dan bahasa lain.
WriteLn mencetak teks ke konsol, tanda kutip tunggal ‘ ‘ membungkus literal string. WriteLn('A + 10 =:', A + 10); akan mencetak berurutan string A + 10 =: lalu hasil perhitungan A + 10.
Satu program hanya boleh memiliki satu blok luar begin dan end. yang berisi semua kode utama dan memanggil fungsi serta prosedur lain di dalamnya.
X := 15 / 5;
WriteLn(‘X is now: ‘, X); // notasi ilmiah
WriteLn(‘X is now: ‘, X:1:2); // dua angka desimal
/ adalah operator pembagian pecahan, hasil bagi selalu bilangan desimal.
Dua baris pertama adalah arahan prakompilasi
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}Code language: PHP (php)
Ini adalah arahan kompilasi bersyarat khusus FPC
{$ifdef FPC}: Jalankan pengaturan di tengah hanya jika kompiler yang dipakai adalah Free Pascal{$mode objfpc}: Beralih ke mode sintaks ObjFpc{$H+}: Aktifkan string panjang (tipe string modern dengan manajemen memori otomatis, wajib pakai){$J-}: Nonaktifkan konstanta yang bisa diubah (konstanta tidak boleh diganti saat program jalan, lebih aman){$endif}: Akhir blok bersyarat
Fungsi: Hanya aktifkan sintaks modern saat dikompilasi pakai FPC; kompiler Delphi akan melewati seluruh blok ini.
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}Code language: PHP (php)
Kompilasi bersyarat lintas platform
MSWINDOWS: Hanya berlaku di sistem operasi Windows{$apptype CONSOLE}: Tetapkan program sebagai aplikasi konsol (muncul jendela terminal hitam bukan jendela GUI). Baris ini diabaikan saat kompilasi di Linux/macOS.
Poin Pengetahuan Inti
stringtipe primitif bawaan; FPC/Delphi kelola memori secara otomatis, tidak perlu rilis manual- procedure prosedur: Tanpa nilai kembalian; function fungsi: Ada nilai kembalian disimpan di variabel bawaan
Result - Pemisahan pembagian:
/pembagian pecahan;divpembagian bilangan bulat potong desimal - Cetak format
variabel:lebarTotal:angkaDesimaluntuk atur tampilan bilangan pecahan - Fungsi rekursif tanpa parameter wajib pakai kurung kosong
()agar tidak ambigu sintaks Exit(nilai)bisa tentukan langsung nilai kembalian dan akhiri fungsi lebih awal- Fungsi bisa dipanggil tanpa simpan nilai kembalian, cocok untuk logika efek samping seperti ubah variabel global
Aturan Nilai Kembalian Fungsi
- Variabel khusus bawaan
Resultsimpan nilai yang dikembalikan fungsi, baca dan tulis sama seperti variabel lokal biasa
function MyFunction(const S: string): string;
begin
Result := S + 'One';
Result := Result + 'Two';
end;
Code language: PHP (php)
- Sintaks lama bisa langsung tetapkan nilai ke nama fungsi (
MyFunction := xxx), tidak disarankan karena sulit dibaca; gunakan seragamResult.
C/C++/Java/C# pakai
=untuk penugasan dan==untuk perbandingan sama. Pascal kebalikannya::=untuk isi variabel, satu=untuk bandingkan, sama dengan notasi matematika.Pascal tidak punya operator
==
Ganti MyFunction lama di contoh dengan versi di atas. Fungsi ini menambahkan “One” lalu “Two” di akhir string yang dikirim saat panggilan.
String akhir yang dikembalikan: string asli + One + Two
Panggilan Rekursif
Fungsi tanpa parameter saat rekursif wajib pakai kurung kosong () untuk bedakan “jalankan fungsi” dan “baca nilai kembalian saat ini”:
function SumIntegersUntilZero: Integer;
var I: Integer;
begin
ReadLn(I);
Result := I;
if I <> 0 then
Result := Result + SumIntegersUntilZero(); // panggil rekursif pakai ()
end;
Code language: JavaScript (javascript)
Penjelasan fungsi tanpa parameter SumIntegersUntilZero:
SumIntegersUntilZero()→ jalankan fungsi rekursif dan ambil nilai kembalianSumIntegersUntilZero→ akses variabel internalResult(nilai kembalian milik fungsi sendiri)
Kode tanpa kurung:
Result := Result + SumIntegersUntilZero;
Kompiler akan artikan sebagai:
Result := Result + Result;
Sama dengan Result := Result * 2, logika rekursif rusak total, terjadi loop tak hingga dan angka terus berlipat ganda.
Di contoh ini, fungsi panggil dirinya sendiri berulang sampai input bernilai 0 baru keluar; selama input bukan nol rekursi terus berjalan.
Exit: Keluar Lebih Awal
- Exit tanpa parameter: Langsung keluar fungsi, kembalikan nilai Result yang sudah diisi
Exit(nilai): Tentukan langsung nilai kembalian dan tutup fungsi, setara return x di bahasa C
function AddName(const ExistingNames, NewName: string): string;
begin
if ExistingNames = '' then
Exit(NewName); // Langsung kembalikan NewName dan hentikan fungsi
Result := ExistingNames + ', ' + NewName;
end;
Code language: PHP (php)
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
program MyProgram;
procedure MyProcedure(const A: Integer);
begin
WriteLn('A + 10 is: ', A + 10);
end;
function AddName(const ExistingNames, NewName: string): string;
begin
if ExistingNames = '' then
Exit(NewName);
Result := ExistingNames + ', ' + NewName;
end;
var
X: Single;
begin
WriteLn(AddName('Tom','Jack'));
WriteLn(AddName('Tom',''));
WriteLn(AddName('','Jack'));
end.Code language: PHP (php)
Panggil Fungsi Seperti Prosedur (Abaikan Nilai Kembalian)
Meskipun fungsi punya nilai kembalian, bisa hanya jalankan logika dan abaikan hasilnya; cocok untuk logika efek samping seperti ubah variabel global:
var
Count, MyCount: Integer;
function CountMe: Integer;
begin
Inc(Count); // Efek samping: tambah variabel global satu
Result := Count;
end;
begin
Count := 10;
CountMe; // Abaikan nilai kembalian, hanya jalankan logika, Count jadi 11
MyCount := CountMe; // Simpan nilai kembalian, Count jadi 12
end.
Code language: PHP (php)
Contoh lengkap berjalan
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
program MyProgram;
var
Count, MyCount: Integer;
function CountMe: Integer;
begin
Inc(Count);
Result := Count;
end;
begin
Count := 10;
WriteLn(CountMe);
MyCount := CountMe;
WriteLn(MyCount);
end.Code language: PHP (php)
Inc fungsi standar bawaan Pascal (FPC/Delphi), gunanya tambah variabel sebesar 1.
var adalah kata kunci deklarasi variabel Pascal, fungsinya definisikan variabel.
var
Count, MyCount: Integer;Code language: JavaScript (javascript)
var: Buka blok deklarasi variabel
Count, MyCount: Dua nama variabel
Integer: Tipe bilangan bulat
Variabel yang dideklarasikan di blok var contoh ini bersifat global, bisa dipakai semua prosedur dan fungsi di seluruh program.
Fungsi, prosedur dan tipe primitif dasar