Unit (Units)

Unit dapat mengemas deklarasi tipe, fungsi, prosedur, konstanta, variabel yang digunakan bersama agar dapat dipanggil oleh unit lain atau program utama, setara dengan modul / paket pada bahasa pemrograman lain.

Membuat Unit

Unit terbagi menjadi dua bagian inti:

Bagian interface (antarmuka): Konten yang diekspos ke luar, dapat diakses langsung setelah diimpor oleh file lain;

Bagian implementation (implementasi): Kode pribadi internal, hanya terlihat di unit saat ini dan tidak dapat dipanggil dari luar.

Contoh

Buat file bernama MyUnit.pas untuk menulis satu unit.

unit MyUnit;

{$ifdef FPC}
{$mode objfpc}{$H+}{$J-}
{$endif}

// Bagian antarmuka: publik ke luar
interface

procedure MyProcedure(const A: Integer);
function MyFunction(const S: string): string;

// Bagian implementasi: kode pribadi
implementation

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;

end.Code language: JavaScript (javascript)

Pembaca yang teliti akan menyadari bahwa end. di akhir tidak memiliki pasangan begin?

Struktur sintaks unit (unit) Pascal berbeda dengan program (program)

program Program utama: wajib memiliki blok begin ... end. sebagai titik masuk eksekusi program

unit Unit: tidak memerlukan begin global

Seluruh unit diakhiri dengan end. (titik menandakan akhir file, tidak ada begin global yang berpasangan)

  • Di dalam interface ditulis prototipe fungsi/prosedur, tipe, konstanta, variabel global; file luar dapat memanggilnya setelah menggunakan perintah uses;
  • implementation hanya berisi implementasi lengkap fungsi; prosedur lokal dan variabel pribadi yang didefinisikan di sini tidak terlihat oleh unit lain;
  • File unit dimulai dengan unit Nama; dan diakhiri dengan end..

Memuat Unit di Program Utama

File program utama kita adalah mydemo.pas

Gunakan kata kunci uses untuk memuat unit buatan sendiri

{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

program MyProgram;

// Muat unit buatan sendiri MyUnit
uses
  MyUnit;

begin
  WriteLn(MyFunction('Note: '));
  MyProcedure(5);
  ReadLn;
end.Code language: PHP (php)

Tulisan MyUnit; di bawah uses merujuk pada nama unit, bukan nama file .pas.

Nama ini berasal dari baris pertama MyUnit.pas: unit MyUnit;

Meskipun nama file dan nama unit bisa berbeda, disarankan agar keduanya sama. Jika berbeda, perintah uses tetap menggunakan nama unit, bukan nama file.

Sekarang kompilasi dan jalankan; program utama akan memanggil fungsi yang ada di dalam unit.

Sekarang kompilasi dan jalankan

Setelah dikompilasi, akan muncul dua file baru di folder proyek

.ppu (Pascal Unit File, file metadata hasil kompilasi unit)

Hanya dihasilkan saat mengompilasi file unit; program utama program tidak menghasilkan file .ppu

  • Menyimpan metadata hasil kompilasi bagian interface unit: prototipe fungsi, tipe, konstanta, simbol ekspor;
  • Saat file lain menjalankan uses MyUnit, kompiler tidak perlu mengurai ulang seluruh kode sumber MyUnit.pas, langsung membaca file .ppu untuk validasi antarmuka dengan cepat;
  • Mempercepat waktu kompilasi proyek besar secara signifikan; merupakan file inti kompilasi inkremental FPC.

MyUnit.o: Instruksi mesin biner hasil kompilasi MyUnit.pas (seluruh kode bagian implementation)

mydemo.o: Kode mesin biner program utama mydemo.pas

Kompiler pertama-tama menerjemahkan setiap file .pas menjadi file objek biner mandiri .o; kemudian linker menggabungkan semua file .o menjadi program eksekusi .exe.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *