Pascal. Modul khusus. Plugin - Rutinitas dan fungsi grafis Pascal Basic

Modul dalam Pascal dalam kaitannya dengan bagian utama program, mereka menyerupai subrutin (prosedur dan fungsi). Tetapi menurut definisi, mereka adalah program independen yang sumber dayanya dapat digunakan dalam program lain. Selain itu, deskripsi modul terjadi di luar aplikasi pemanggil, tetapi dalam file terpisah, jadi modul adalah program yang dikompilasi secara terpisah. File modul yang dikompilasi (yang merupakan salah satu yang perlu Anda gunakan) akan memiliki ekstensi yang disediakan oleh lingkungan pemrograman (misalnya, .tpu, .ppu, .pcu).

Modul dibuat, sebagai aturan, untuk memastikan kekompakan kode, yang harus ditangani oleh proyek besar. Perlu juga dicatat bahwa penggunaan modul dalam arti tertentu menghilangkan batasan pada segmentasi memori, karena kode setiap modul terletak di segmen yang terpisah.

Struktur modul terlihat seperti ini:

satuan<имя модуля>;
Antarmuka
<интерфейсная часть>
Penerapan
<исполняемая часть>
Mulai
<инициализация>
akhir.

Nama modul (Satuan)

Nama modul mengikuti kata kunci satuan, harus sesuai dengan nama file (tanpa .pas) yang berisi kodenya. Juga, dengan menggunakan namanya, modul terhubung ke modul lain, atau ke program utama. Untuk melakukan ini, Anda harus menentukan kata layanan menggunakan, dan daftar daftar plugin yang dipisahkan dengan koma:

menggunakan<список имен модулей>;

Bagian antarmuka (Antarmuka)

Bagian antarmuka menjelaskan header objek yang dapat diakses oleh modul dan program lain. Ini adalah konstanta, tipe, variabel dan subrutin. Misalnya, seperti inilah tampilan bagian antarmuka modul Pencarian, yang berisi algoritme untuk mencari elemen dalam array.

1
2
3
4
5
6

Pencarian satuan;
Antarmuka

vars: string

Untuk mendeklarasikan modul ini, Anda perlu menentukan namanya dalam program:

Setelah itu, dimungkinkan untuk menggunakan semua objek yang dijelaskan di bagian antarmuka.

Bagian yang dapat dieksekusi (Implementasi)

Bagian ini dimulai dengan kata Penerapan(penerapan). Di sinilah Anda perlu menjelaskan subrutin yang dideklarasikan di bagian antarmuka. Pada saat yang sama, diperbolehkan untuk tidak menentukan parameter formal di header mereka, jika tidak mereka harus benar-benar cocok dengan yang ada di bagian antarmuka. Selain itu, bagian antarmuka mungkin berisi objek lokal (tidak dapat diakses oleh program pemanggil) untuk modul.

Bagian awal

Bagian inisiasi memulai pekerjaannya sebelum dimulainya eksekusi program utama. Di dalamnya (antara Awal dan Akhir), sebagai aturan, operator dijelaskan yang dimaksudkan untuk berbagai jenis pekerjaan tambahan. Bagian ini mungkin hilang atau tidak memiliki kode di dalamnya. Dalam kasus pertama, Anda perlu menentukan Akhiri dengan titik, pada kasus kedua, sisakan ruang kosong di dalam Mulai dan Akhir.

Modul kompilasi

Hanya modul terkompilasi yang memiliki ekstensi yang disediakan oleh lingkungan pengembangan aplikasi Anda yang dapat digunakan dalam program. Pertimbangkan tiga yang paling populer di antaranya:

TurboPascal

Hasil kompilasi modul di Turbo Pascal akan menjadi file dengan ekstensi .tpu (Satuan Turbo Pascal) yang menyimpan kodenya.

Pascal Gratis

Setelah mengkompilasi modul di lingkungan Free Pascal, dua file dibuat dengan izin berbeda: .ppu dan .Hai. Yang pertama berisi bagian antarmuka modul, dan yang kedua (diperlukan untuk menghubungkan program) adalah bagian implementasi.

Pascal ABC.NET

Pascal ABC.Net tidak menghasilkan kode bahasa mesin selama kompilasi modul. Jika kompilasi berhasil, kode disimpan dalam file dengan izin .pcu.

Ada tiga mode kompilasi untuk lingkungan pemrograman Turbo Pascal dan Free Pascal: Kompilasi, Buat, dan Bangun. Dalam mode Kompilasi, semua modul yang digunakan dalam program harus dikompilasi terlebih dahulu. Aplikasi dalam mode kompilasi-make memeriksa semua modul yang terhubung untuk keberadaan file dengan izin yang sesuai untuk lingkungan pemrograman (.tpu atau .o). Jika salah satunya tidak ditemukan, maka file dengan nama modul tidak ditemukan dan ekstensi .pas akan dicari. Mode yang paling dapat diandalkan adalah Build. Pencarian dan kompilasi file (dengan ekstensi .pas) dalam mode ini terjadi bahkan ketika file modul sudah ada.

Contoh

Mari kita buat modul kecil yang berisi prosedur untuk pencarian biner dan linier untuk elemen dalam array. Kode modul:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

Pencarian satuan;
Antarmuka
ketik arr = array [ 1 ..5 ] bilangan bulat ;
vars: string
prosedur binary_search(x: integer ; Ar: arr; var s: string );
prosedur line_search(x: integer ; Ar: arr; var s: string );
Penerapan
var a, b, c, i: bilangan bulat ;
prosedur binary_search(x: integer ; Ar: arr; var s: string );
mulai
a:= 1 ; b:= 5 ; s:= 'TIDAK' ;
sementara a<= b do
mulai
c:= a+ (b- a) div 2 ;
jika (x b:= c- 1
else if (x>Ar[ c] ) maka
a:= c+1
lain
mulai s:= 'YA' ; merusak ; akhir ;
akhir ;
akhir ;
prosedur line_search(x: integer ; Ar: arr; var s: string );
mulai
s:= 'TIDAK' ;
untuk i:= 1 sampai 5 do
mulai
jika (Ar[i] = x) maka
mulai
s:= 'YA' ; merusak ;
akhir ;
akhir ;
akhir ;
akhir.

Semua kode ini harus dalam file terpisah. Sekarang mari kita tulis program utama, di mana kita akan menghubungkan modul Pencarian kita.

Modul (satuan) adalah satu set konstanta, tipe data, variabel, prosedur dan fungsi. Setiap modul mirip dengan program Pascal yang terpisah: ia dapat memiliki badan utama yang dipanggil sebelum program Anda dimulai dan melakukan inisialisasi yang diperlukan. Singkatnya, modul adalah pustaka deklarasi yang dapat Anda sisipkan ke dalam program Anda dan yang memungkinkan Anda untuk memecah program menjadi bagian-bagian yang dikompilasi secara terpisah.

Turbo Pascal memberi Anda akses ke sejumlah besar konstanta bawaan, tipe data, variabel, prosedur, dan fungsi. Beberapa di antaranya khusus untuk Turbo Pascal; lainnya khusus untuk PC IBM (dan komputer yang kompatibel) atau untuk sistem operasi MS-DOS. Jumlah mereka besar, namun, dalam program Anda, Anda jarang menggunakannya sekaligus. Oleh karena itu, mereka dibagi menjadi kelompok terkait yang disebut modul. Dalam hal ini, Anda hanya dapat menggunakan modul yang diperlukan dalam program.

Struktur modul

Sebuah modul menyediakan serangkaian fitur melalui prosedur dan fungsi yang didukung oleh konstanta, tipe data, dan variabel, tetapi implementasi sebenarnya dari fitur-fitur ini disembunyikan karena modul dibagi menjadi dua bagian: antarmuka dan implementasi. Jika sebuah program menggunakan sebuah modul, maka semua deklarasi modul menjadi tersedia untuk program itu seolah-olah mereka didefinisikan dalam dirinya sendiri.

Struktur modul mirip dengan program, tetapi ada beberapa perbedaan yang signifikan. Misalnya, pertimbangkan modul:

satuan<идентификатор>; antarmuka menggunakan<список модулей>; (Opsional) (buka deskripsi) penerapan (prosedur tertutup dan deskripsi fungsi) mulai (kode inisialisasi) akhir.

Header modul dimulai dengan unit kata yang dicadangkan diikuti dengan nama modul (pengidentifikasi), seperti halnya nama program. Elemen berikutnya dalam modul adalah kata kunci antarmuka. Ini menandai awal dari bagian antarmuka modul - bagian yang terlihat oleh semua modul atau program lain yang menggunakannya.

Sebuah modul dapat menggunakan modul lain, untuk ini mereka didefinisikan dalam klausa using. Klausa using, jika ada, segera mengikuti setelah kata kunci interface. Perhatikan bahwa aturan umum untuk menggunakan klausa use dipenuhi di sini: jika modul yang namanya ditentukan dalam klausa using menggunakan modul lain, maka nama modul ini juga harus ditentukan dalam klausa using, dan sebelum digunakan.

Modul standar

File TURBO.TPL berisi semua paket standar kecuali Graph dan paket kompatibilitas (Graph3 dan Turbo3): System, Overlay, Crt, Dos, dan Printer. Paket-paket ini dimuat ke dalam memori dengan Turbo Pascal dan selalu tersedia untuk Anda. Biasanya, file TURBO.TPL disimpan di direktori yang sama dengan TURBO.EXE (atau TPC.EXE). Anda dapat menyimpannya di direktori lain selama itu digambarkan sebagai direktori Turbo Pascal. Untuk melakukannya, gunakan TINST.EXE untuk mengatur direktori ini di file TURBO.EXE.

Paket yang digunakan: tidak ada

Sistem berisi semua prosedur dan fungsi standar dan bawaan Turbo Pascal. Setiap subrutin Turbo Pascal yang bukan merupakan bagian dari Pascal standar dan tidak ditemukan dalam modul lain terdapat di System. Modul ini dilampirkan ke semua program.

Paket yang digunakan: tidak ada

DOS mendefinisikan banyak rutinitas dan fungsi Pascalian yang setara dengan panggilan DOS yang paling umum digunakan, seperti GetTime, SetTime, DiskSize, dan sebagainya. Selain itu, ini mendefinisikan dua program tingkat rendah, MsDos dan Intr, yang memungkinkan Anda untuk mengaktifkan panggilan MS-DOS atau interupsi sistem. Register adalah tipe data untuk parameter dalam MSDos dan Intr. Selain itu, beberapa konstanta dan tipe data lainnya didefinisikan.

Paket yang digunakan: tidak ada

Overlay - berisi alat untuk membuat program overlay. Program OVERKAY adalah program yang tidak memuat semua, tetapi sebagian.

Paket yang digunakan: tidak ada

Crt menyediakan satu set deskripsi khusus PC tentang konstanta, variabel, dan program untuk operasi I/O. Yang terakhir dapat digunakan untuk bekerja dengan layar (mengatur jendela, kontrol kursor langsung, teks dan warna latar belakang). Selain itu, Anda dapat membuat input keyboard "mentah" dan mengontrol papan penghasil suara dari komputer pribadi. Modul ini menyediakan banyak rutinitas yang standar di versi 3.0.

Paket yang digunakan: Crt

Modul Printer mendefinisikan variabel file teks, Lst, yang dikaitkan dengan driver perangkat yang memungkinkan output Pascal standar dikirim ke printer menggunakan Write dan Writeln. Misalnya, dengan menyertakan Printer dalam program Anda, Anda dapat melakukan hal berikut:

Tulis (Kedua,"Jumlah dari " ,A:4 ," dan " ,B:4 ," sama dengan " ); C:=A+B; WriteIn(Lst,C:8) ;

Paket yang digunakan: Crt

Graph3 mendukung rangkaian lengkap rutinitas grafik untuk versi 3.0 - untuk grafik biasa, grafik tingkat lanjut, dan grafik menggunakan perintah relatif. Mereka identik dalam nama, parameter fungsi, dan rutinitas versi 3.0.

Paket yang digunakan: Crt

Modul ini berisi dua variabel dan beberapa prosedur yang tidak lagi didukung oleh Turbo Pascal. Ini termasuk variabel file bawaan Kbd, variabel boolean CBreak, dan versi integer asli MemAvail dan MaxAvail (yang mengembalikan memori bebas dalam paragraf, bukan byte seperti yang dilakukan versi aslinya).

Paket yang digunakan: Crt

Graph menyediakan serangkaian rutinitas grafis yang cepat dan efisien yang memungkinkan Anda memanfaatkan sepenuhnya kemampuan grafis komputer pribadi Anda.

Modul ini mengimplementasikan driver grafis independen perangkat Borland untuk mendukung adaptor grafis CGA, EGA, Hercules, ATT 400, MCGA, 3270 PC, dan VGA.

Menulis modul Anda sendiri

Katakanlah Anda menulis modul IntLib, menulisnya ke file INTLIB.PAS, dan menerjemahkannya ke disk; kode yang dihasilkan ada di file INTLIB.TRU. Untuk menggunakan modul ini dalam program Anda, Anda harus menyertakan pernyataan penggunaan dalam program Anda untuk memberi tahu kompiler modul mana yang akan digunakan. Program Anda mungkin terlihat seperti ini:

program MyProg; menggunakan IntLib;

Perhatikan bahwa Turbo Pascal mengasumsikan bahwa file yang berisi modul memiliki nama yang sama dengan modul itu sendiri. Jika nama modul Anda adalah MyUtilities, maka Turbo Pascal akan mencari file bernama MYUTILIT.PAS.

kompilasi modul

Sebuah modul dikompilasi dengan cara yang persis sama seperti sebuah program dikompilasi: modul dibuat menggunakan editor, dan kemudian perintah Compile / ompile disebut (Compile / Compile) (atau tombol Alt-C ditekan). Namun, alih-alih file dengan ekstensi .EXE, Turbo Pascal membuat file dengan ekstensi .TRU (Turbo Pascal Unit - Turbo Pascal Unit). Setelah itu, Anda dapat membiarkan file ini apa adanya, atau memasukkannya ke dalam TURBO.TPL menggunakan TPUMOVER.EXE.

Dalam kedua kasus, masuk akal untuk mengirim file *.TRU (bersama dengan file sumber) ke direktori unit, yang ditentukan dengan perintah direktori O/D/Unit. Hanya ada satu modul per file sumber, karena kompilasi berhenti segera setelah pernyataan akhir pengakhiran ditemukan.

Contoh:

Mari kita menulis modul kecil. Sebut saja IntLib dan masukkan dua subrutin sederhana untuk bilangan bulat ke dalamnya - prosedur dan fungsi:

satuan IntLib; prosedur antarmuka ISwap(var I,J: integer ); fungsi IMax(I,J: integer ): integer ; prosedur pelaksanaan ISwap; var Suhu: bilangan bulat ; mulaiTemp:=Saya; saya:=J; J:=temp akhir ; (akhir prosedur ISwap) fungsi IMax; mulai jika I > J maka IMax:=I else IMax:=J end ; (akhir dari fungsi IMax) akhir. (akhir modul IntLib)

Mari perkenalkan subrutin ini, tulis ke file INTLIB.PAS, lalu terjemahkan ke disk. Hasilnya, kami mendapatkan kode modul di file INTLIB.TRU. Mari kita kirimkan ke direktori modules. Program berikut menggunakan modul IntLib:

program IntTest; menggunakan IntLib; varA,B: bilangan bulat ; mulai Tulis ( "Masukkan dua nilai bilangan bulat: "); Bacaln(A,B) ; Tukar(A,B) ; WriteIn("A=" ,A," B=" ,B) ; tulis ( "Nilai maksimumnya adalah",IMaks(A,B) ); akhir. (akhir program IntTest)

Semua deklarasi dalam modul terkait satu sama lain. Misalnya, modul Crt berisi semua deskripsi yang diperlukan untuk rutinitas layar di komputer pribadi Anda.

Modul dalam Pascal dalam kaitannya dengan bagian utama program menyerupai subrutin (prosedur dan fungsi). Tetapi menurut definisi, mereka adalah program independen yang sumber dayanya dapat digunakan dalam program lain. Selain itu, deskripsi modul terjadi di luar aplikasi pemanggil, tetapi dalam file terpisah, jadi modul adalah program yang dikompilasi secara terpisah. File modul yang dikompilasi (yang merupakan salah satu yang perlu Anda gunakan) akan memiliki ekstensi yang disediakan oleh lingkungan pemrograman (misalnya, .tpu , .ppu , .pcu).

Modul dibuat, sebagai aturan, untuk memastikan kekompakan kode, yang harus ditangani oleh proyek besar. Perlu juga dicatat bahwa penggunaan modul dalam arti tertentu menghilangkan batasan pada segmentasi memori, karena kode setiap modul terletak di segmen yang terpisah.

Struktur modul terlihat seperti ini:

satuan<имя модуля>; Antarmuka<интерфейсная часть>Penerapan<исполняемая часть>Mulai<инициализация>akhir.

Nama modul (Satuan)

Nama modul setelah kata kunci Unit harus sesuai dengan nama file (tanpa .pas) yang berisi kodenya. Juga, dengan menggunakan namanya, modul terhubung ke modul lain, atau ke program utama. Untuk melakukan ini, Anda harus menentukan kata kunci Uses, dan daftar daftar plug-in dipisahkan dengan koma:

menggunakan<список имен модулей>;

Bagian antarmuka (Antarmuka)

Bagian antarmuka menjelaskan header objek yang dapat diakses oleh modul dan program lain. Ini adalah konstanta, tipe, variabel dan subrutin. Misalnya, seperti inilah tampilan bagian antarmuka modul Pencarian, yang berisi algoritme untuk mencari elemen dalam array.

pencarian satuan; Jenis antarmuka arr = array bilangan bulat; vars:string; prosedur binary_search(x: integer; Ar: arr; var s: string); prosedur line_search(x: integer; Ar: arr; var s: string);

Untuk mendeklarasikan modul ini, Anda perlu menentukan namanya dalam program:

Setelah itu, dimungkinkan untuk menggunakan semua objek yang dijelaskan di bagian antarmuka.

Bagian yang dapat dieksekusi (Implementasi)

Bagian ini dimulai dengan kata Implementasi. Di sinilah Anda perlu menjelaskan subrutin yang dideklarasikan di bagian antarmuka. Pada saat yang sama, diperbolehkan untuk tidak menentukan parameter formal di header mereka, jika tidak mereka harus benar-benar cocok dengan yang ada di bagian antarmuka. Selain itu, bagian antarmuka mungkin berisi objek lokal (tidak dapat diakses oleh program pemanggil) untuk modul.
Bagian awal

Bagian inisiasi memulai pekerjaannya sebelum dimulainya eksekusi program utama. Di dalamnya (antara Awal dan Akhir), sebagai aturan, operator dijelaskan yang dimaksudkan untuk berbagai jenis pekerjaan tambahan. Bagian ini mungkin hilang atau tidak memiliki kode di dalamnya. Dalam kasus pertama, Anda perlu menentukan End dengan titik, pada kasus kedua, tinggalkan ruang kosong di dalam Begin dan End .

Modul kompilasi

Hanya modul terkompilasi yang memiliki ekstensi yang disediakan oleh lingkungan pengembangan aplikasi Anda yang dapat digunakan dalam program. Pertimbangkan tiga yang paling populer di antaranya:

kompilasi modul di Turbo Pascal

Hasil kompilasi modul di TurboPascal, akan ada file dengan ekstensi .tpu (Satuan Turbo Pascal) yang menyimpan kodenya.

kompilasi modul dalam Free Pascal

Setelah mengkompilasi modul di lingkungan Pascal Gratis, dua file dibuat dengan izin berbeda: .ppu dan .Hai. Yang pertama berisi bagian antarmuka modul, dan yang kedua (diperlukan untuk menghubungkan program) adalah bagian implementasi.

kompilasi modul di Pascal ABC.NET

Pascal ABC.Net tidak menghasilkan kode bahasa mesin selama kompilasi modul. Jika kompilasi berhasil, kode disimpan dalam file dengan resolusi .pcu.

Ada tiga mode kompilasi untuk lingkungan pemrograman Turbo Pascal dan Free Pascal: Kompilasi, Buat, dan Bangun. Dalam mode Kompilasi, semua modul yang digunakan dalam program harus dikompilasi terlebih dahulu. Aplikasi dalam mode kompilasi-make memeriksa semua modul yang terhubung untuk keberadaan file dengan izin yang sesuai untuk lingkungan pemrograman (.tpu atau .o). Jika salah satunya tidak ditemukan, maka file dengan nama modul tidak ditemukan dan ekstensi .pas akan dicari. Mode yang paling dapat diandalkan adalah Build. Pencarian dan kompilasi file (dengan ekstensi .pas) dalam mode ini terjadi bahkan ketika file modul sudah ada.

Contoh: mari kita buat modul kecil yang berisi prosedur untuk pencarian biner dan linier untuk elemen dalam array. Kode modul:

pencarian satuan; Jenis antarmuka arr = array bilangan bulat; vars:string; prosedur binary_search(x: integer; Ar: arr; var s: string); prosedur line_search(x: integer; Ar: arr; var s: string); Implementasi var a, b, c, i: integer; prosedur binary_search(x: integer; Ar: arr; var s: string); mulai a:=1; b:=5; s:="TIDAK"; sementara a<=b do begin c:=a+(b-a) div 2; if (xAr[c]) lalu a:=c+1 lain mulai s:="YA"; merusak; akhir; akhir; akhir; prosedur line_search(x: integer; Ar: arr; var s: string); mulai s:="TIDAK"; untuk i:=1 sampai 5 jangan mulai if (Ar[i]=x) lalu mulai s:="YA"; merusak; akhir; akhir; akhir; akhir.

Semua kode ini harus dalam file terpisah. Sekarang mari kita tulis program utama, di mana kita akan menghubungkan modul Pencarian kita.

modul_pencarian program; menggunakan Crt, Cari; var mas: array bilangan bulat; n, j: bilangan bulat; str:string; y: arang; mulai clrscr; writeln("Masukkan elemen array"); untuk j:=1 sampai 5 lakukan readln(mas[j]); write("Masukkan nomor pencarian : "); bacaln(n); write("Array ini diurutkan? (y/n)"); bacaln(y); if y="y" lalu binary_search(n, mas, str) else line_search(n, mas, str); tulis(str); kunci Baca; akhir.

Setelah mengkompilasi file, aplikasi ini akan berfungsi dengan baik. Tentu saja, jika Anda menjawab pertanyaan "Apakah susunan ini dipesan?" memberikan informasi palsu program, maka dapat merespon dalam bentuk.

Dalam bahasa Pascal, perpustakaan subrutin digunakan untuk mengimplementasikan teknologi pemrograman terstruktur menggunakan modul. Secara tekstual, perpustakaan digabungkan menjadi unit program independen yang disebut modul bahasa Pascal. Modul dibuat untuk mengimplementasikan pustaka rutinitas. Biasanya, modul menggabungkan subprogram yang melakukan tugas dari kelas yang sama.

Modul merupakan unit program mandiri yang menyusun secara mandiri dan memiliki struktur tertentu.

Modul ini memiliki struktur sebagai berikut:

Judul modul Pascal terdiri dari kata layanan Unit diikuti dengan nama modul. Ada persyaratan ketat untuk nama modul, dan nama ini harus cocok dengan nama file disk dengan ekstensi .pas, yang berisi teks modul.

TipeUnitSaya; //file MyType.pas

Nama modul digunakan untuk menghubungkan modul ke program dan modul lainnya. Program dan modul tertaut ke modul yang diperlukan di bagian Penggunaan program atau modul. Modul dapat memanggil modul lain untuk pekerjaannya, jika modul memanggil modul lain, maka bagian Penggunaan harus mengikuti kata kunci INTERFACE.

Bagian antarmuka dari bahasa Pascal dimulai dengan kata INTERFACE yang dicadangkan. Ini berfungsi untuk menghubungkan modul dengan program host atau modul lainnya. Bagian antarmuka berisi deklarasi semua objek global modul. Pertama-tama, subrutin, dan sebagai tambahan, tipe dan variabel global dideklarasikan. Jika suatu objek dideklarasikan secara global, maka objek tersebut dapat digunakan dalam program dan modul pemanggilan tanpa deklarasi khusus.

Satuan Massa Air;

ANTARMUKA

MENGGUNAKAN MyType;

[nama_tipe]:[tipe];

[list_of_global_variables]:[jenis];

Di bagian antarmuka, subrutin dideklarasikan oleh headernya, yang menyertakan nama subrutin dan daftar parameter formal.

Bagian yang dapat dieksekusi dari bahasa Pascal dimulai dengan kata layanan IMPLEMENTASI dan berisi deskripsi subprogram yang dideklarasikan di bagian antarmuka, selain itu, objek lokal ke modul (variabel, konstanta) dapat dideklarasikan di bagian yang dapat dieksekusi. Deskripsi subrutin di bagian yang dapat dieksekusi harus dimulai dengan judul subrutin, sedangkan daftar parameter formal dihilangkan.

Bagian awal dari bahasa Pascal mengakhiri modul, dan bagian ini mungkin tidak ada atau mungkin kosong. Melakukan bagian inisiasi tidak disarankan karena situasi hang dapat terjadi. Ini berisi pernyataan yang dapat dieksekusi, menetapkan nilai awal variabel global, membuka file yang diperlukan, dan membuat tautan dengan file lain.

Mengkompilasi modul dalam Pascal

Saat bekerja dengan modul, Anda harus mengkompilasi modul itu sendiri dan mengkompilasi program yang menggunakan modul. Seperti yang Anda ketahui, ada tiga mode kompilasi di lingkungan Borland Pascal (Compile, Build, Make). Saat mengkompilasi modul itu sendiri, mode Kompilasi biasanya digunakan, meskipun mode lain dimungkinkan jika modul digunakan oleh modul lain. Mengkompilasi modul tidak membuat program yang dapat dieksekusi, tetapi membuat file modul terkompilasi khusus dengan ekstensi .tpw. File unit yang dikompilasi ditempatkan di direktori, biasanya bernama Unit (ditentukan dalam pengaturan lingkungan). Saat mengkompilasi program yang berisi modul, ketiga mode kompilasi dapat digunakan. Mengkompilasi mode yang berbeda berbeda dalam durasi dan keandalan.

Mode Menyusun- yang paling sederhana dan tercepat. Dalam mode ini, kompiler memeriksa keberadaan plug-in di bagian Penggunaan dan mengkompilasi program jika tersedia. Jika modul hilang, kompilasi berhenti dan pesan tentang modul yang hilang ditampilkan.

dalam mode Membuat compiler memeriksa keberadaan plug-in dan jika beberapa modul tidak ditemukan, compiler mencari teks modul dengan ekstensi .pas, mengkompilasi modul, dan kemudian mengkompilasi program. Selain itu, kompilator memeriksa tanggal pembuatan modul .tpw dan .pas. Jika ditemukan bahwa tanggal pembuatan file .pas lebih lambat dari file .tpw, ia menyimpulkan bahwa perubahan telah dibuat pada teks modul dan mengkompilasi ulang modul. Dengan demikian, lebih dapat diandalkan.

dalam mode Membangun semua file .tpw diabaikan, compiler akan mengkompilasi ulang semua modul yang digunakan dalam program utama dan mengkompilasi program. Ini adalah mode yang paling dapat diandalkan, tetapi pada saat yang sama paling lama.

Modul (SATUAN-module, unit) adalah unit program yang dikompilasi secara mandiri (terpisah) yang berisi komponen bagian deskripsi (label, konstanta, tipe, variabel, prosedur, fungsi), dan mungkin juga berisi operator bagian inisialisasi.
Modul itu sendiri bukanlah program yang dapat dieksekusi, tetapi dimaksudkan untuk digunakan oleh program dan modul lain.

Struktur modul

Modul ini memiliki struktur sebagai berikut:
SATUAN< nama modul >
ANTARMUKA
< bagian antarmuka >
PENERAPAN
< bagian implementasi >
MULAI
< bagian inisialisasi >
AKHIR.

Judul modul terdiri dari kata cadangan satuan(modul) dan nama modul.

Nama modul dipilih sesuai dengan aturan umum dan harus sesuai dengan nama file disk yang berisi kode sumber modul.
Ekstensi nama modul (. pas ) tidak ditentukan, sudah diatur secara default.

Nama modul digunakan untuk menghubungkannya ke program utama dengan klausa menggunakan .
Menawarkan menggunakan m.b. ditempatkan setelah header modul atau di belakang kata-kata

Antarmuka dan Penerapan .

Bagian antarmuka Antarmuka(antarmuka, artikulasi, koneksi) dan berisi referensi ke modul lain dan deklarasi (deskripsi) objek global, yaitu label, konstanta, tipe, variabel, dan header prosedur dan fungsi yang tersedia untuk program utama dan modul lain (yaitu terlihat dari luar).

bagian implementasi - dimulai dengan kata kunci Penerapan(eksekusi) dan berisi deskripsi objek lokal ke modul, yaitu label, konstanta, tipe, variabel yang tidak tersedia untuk program utama dan modul lain (yaitu, tidak terlihat dari luar) dan deskripsi lengkap tentang prosedur dan fungsi . Dalam hal ini, di header subrutin, daftar parameter formal dapat menjadi dihilangkan, tetapi jika diberikan, itu harus sama persis dengan deskripsi di bagian antarmuka.

Bagian Inisialisasi - diapit tanda kurung MULAI SELESAI.
dan berisi pernyataan yang akan dieksekusi sebelum kontrol ditransfer ke program utama. Ini mungkin Pernyataan inisialisasi data (variabel) Misalnya, pernyataan tugas dan input, serta prosedur untuk menghubungkan dan membuka file. Bagian operator bisa. kosong MULAI SELESAI atau hanya absen AKHIR .
Sebuah titik ditempatkan di akhir modul.

Menyusun dan Menggunakan Modul

Sistem RAM memiliki struktur segmen (satu segmen sama dengan 64K = 65535 byte). Kode program dapat berupa tidak lebih dari satu segmen, jumlah data tidak dapat melebihi satu segmen (kecuali menggunakan memori dinamis) dan satu segmen untuk tumpukan. Ukuran tumpukan diatur oleh arahan ($M<>). Ukuran tumpukan minimum adalah 1K dan segmen tunggal maksimum adalah 16K secara default. Nilai variabel lokal didorong ke tumpukan saat subrutin dipanggil, dan dikeluarkan dari tumpukan saat keluar.
Kode modul ditempatkan di segmen terpisah, karena itu disiarkan secara mandiri dari program utama, dan jumlah modul yang digunakan oleh program hanya bergantung pada OP yang tersedia. Ini memungkinkan Anda membuat program besar.
Kompiler menghasilkan kode modul dengan nama yang sama tetapi ekstensi tpu (unit turbo pascal).
Untuk menggunakan modul oleh program utama atau modul lain, namanya (tanpa ekstensi) ditempatkan di daftar saran menggunakan
Jika modulnya ringkas dan sering digunakan oleh program aplikasi, dapat ditempatkan di perpustakaan modul standar TURBO.TPL (Turbo-Pasacal-library ) menggunakan utilitas TPUMOVER.
Tetapi ini harus dilakukan hanya dalam keadaan darurat. perpustakaan dimuat ke dalam OP dan mengurangi ruang untuk program.
Saat mengkompilasi file dengan kode sumber modul, file dengan nama yang sama muncul dengan ekstensi tpu dan ditempatkan di direktori yang ditentukan oleh opsi

OPSI/DIREKTORI/DIREKTORI UNIT

atau di direktori saat ini jika opsi ini tidak ada.
Saat menyusun program utama, modul yang digunakan harus di direktori yang ditentukan oleh opsi
DIREKTORI OPSI/DIREKTUR/EXE & TPU

atau di direktori saat ini tanpa adanya opsi ini
Menerima EXE file tugas dalam opsi

KOMPIL/TUJUAN/DISK(MEMORI)
Install DISK .
Ada tiga mode untuk mengkompilasi modul:
- MENYUSUN
-MEMBANGUN
- MEMBUAT

Mode diatur oleh menu MENYUSUN

1.Mode MENYUSUN(ditelepon Alt-F9 ) . Dalam hal ini, program dikompilasi, dan modul yang digunakan harus. pra-kompilasi dan disimpan dalam direktori yang sesuai.
2.Mode MEMBANGUN(ditelepon - F9) . Dalam hal ini, modul yang dikompilasi sebelumnya diabaikan, dan modul dengan ekstensi pas dan dikompilasi ulang.
3.Mode MEMBUAT(ditelepon F9) . Dalam hal ini, hanya modul yang memiliki perubahan dalam teks yang dikompilasi ulang.

Contoh 16.1.

dalam file inp.txt ada tiga susunan bilangan real

2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6

fungsi hitung

di mana Max_a, Max_b, Max_c, Sa, Sb, Sc, ka, kb, kc adalah elemen maksimum, jumlah dan jumlah elemen positif dari array yang sesuai a, b, dan c.
Keluarkan hasilnya ke file keluar. txt dan di layar.

Teks modul

UNMAS;
Antarmuka
Konstituen n=10;
Ketik vec=array real;
Varz:vec;
saya: bilangan bulat;
f1,f2:teks;

Prosedur SK1(z:vec; num:byte; Var s:real; Var k:byte);
Fungsi MAX(z:vec; num:byte):nyata;

Penerapan
ProcedureV(s:char; num:byte;Var z:vec);
Mulai
Writeln("Array ",s);
Untuk i:=1 sampai num do
Mulai
Baca(f1,z[i]); Write(z[i]:4:1," ":3);
akhir;
readln(f1); tulis;
akhir;

Prosedur SK1(z:vec;num:byte; Var s:real; Var k:byte);
Mulai
s:=0; k:=0;
untuk i:=1 sampai num lakukan jika z[i]>0 maka
Mulai
s:=s+z[i];
k:=k+1
akhir;
akhir;
Fungsi MAX(z:vec;num:byte):nyata;
varm:nyata;
Mulai
m:=z;
untuk i:=1 hingga num lakukan jika z[i]>m maka m:=z[i];
MAKS:=m
akhir;

Mulai
Tetapkan (f1, "inp.txt"); setel ulang (f1);
Tetapkan(f2,"keluar.txt"); Tulis ulang (f2)
akhir.

Teks program

Program lr7_16;
Menggunakan CRT,UNMAS;
Var
a,b,c:vec;
y,sa,sb,sc:nyata;
ka,kb,kc:byte;
Mulai
clrscr;
Vv("a",8,a);
vv("b",9,b);
vv("c",n,c);
SK1(a,8,sa,ka);
SK1(b,9,sb,kb);
SK1(c,n,sc,kc);
y:=(MAX(a,8)+MAX(b,9)+MAX(c,n))+(sa+sb+sc+ka+kb+kc);
Writeln("Hasilnya:":20);
Write("Array a:");
Writeln("sa=",sa:5:1," ka=",ka);
Write("Array b: ");
Writeln("sb=",sb:5:1," kb=",kb);
Write("Array c: ");
Writeln("sc=",sc:5:1," kc=",kc);
Writeln(" ":10,"y=",y:10);
bacan;
Writeln(f2,"ђҐ§g"mv ke:");
Writeln(f2," ":10,"y=",y:10);
tutup (f1);
Tutup (f2)
akhir.

Hasil program

Array a
-2.1 3.1 -2.4 5.6 5.4 -6.7 3.5 -3.6
Array b
2.3 -4.3 2.1 2.5 -3.7 -5.6 4.6 3.5 -7.5
Array c
-2.1 4.3 -2.3 7.6 4.5 -8.9 5.7 -4.5 6.8 -5.8
Hasil:
Larik a: sa= 17,6 ka=4
Larik b: sb= 15.0 kb=5
Larik c: sc= 28,9 kc=5
y=9,330E+01