PENGENALAN TURBO PASCAL A.
PENDAHULUAN
Turbo pascal merupakan bahasa pemograman tingakt tinggi. Sebagai bahasa pemograman tingkat tinggi, Turbo Pascal mudah dipelajari karena instruksiinstruksinya mendekati bahasa manusia. Instruksi-instruksi Turbo Pascal menggunakan kata-kata dari bahasa Inggris. Turbo Pascal merupakan bahasa pemograman terstruktur sehingga program yang dibuat dengan Turbo Pascal dapat dipecah-pecah menjadi blok-blok kecil. Blok-blok kecil ini menyusun blok besar yang kemudian secara keseluruan membentuk program utuh/lengkap. Dalam Turbo Pascal blok-blok kecil tersebut biasa disebut procedure/fungction. B.
MENJALANKAN TURBO PASCAL
Untuk dapat menjalankan program Turbo Pascal ini kita harus mempunyai disket atau cd yang berisikan program pascal dan untuk program pascal for windows kita harus menginstal program ini terlebih dahulu. Setelah dinstal program pascal, dan kita menjalankannya dilayar akan tampil seperti berikut:
C.
STRUKTUR PROGRAM PASCAL
Pada dasarnya Turbo Pascal dibagi atas 3 Bagian :
1
1. Bagian Kepala Program , diawali kata tercadang PROGRAM diikuti dengan judul program dan diakhiri dan tanda koma, untuk versi sesudah 4.0 pada bagian ini dapat mengandung klausa USES (unit yang dipakai pada program yang akan ditulis) 2. Bagian definisi dan deklarasi, pada bagian ini berisi definisi dan deklarasi yang akan digunakan program. 3. Bagian Pernyataan, pada bagian ini berisi program-program yang an dieksekusi, yang diawali dengan BEGIN dan diakhiri dengan END dan tanda titik. D.
KEGUNAAN MENU PADA TURBO PASCAL
Pada Turbo Pascal terdapat beberapa menu yang berguna untuk proses suatu program, edit proram, memanggil program paa disket maupun hardisk, serta mengcompile program, merubah tampilan pascal dan lain-lain. Tampilan menu pada pascal antara lain sebagai berikut:
Menu utamanya adalah : 1. File 2. Edit 3. Search 4. Run
5. 6. 7. 8.
Compile Options Window Help
Untuk mengatifkan salah satu menu utama kita bisa menggunakan cara cepat menggunakan keyboard, yaitu dengan menekan tombol Alt + huruf depan menu utamanya.
2
BAB I. DASAR PEMROGRAMAN A.
KARAKTER PADA TUBO PASCAL
Karakter disini dalam Tubo Pascal berpengertian sebagai huruf, angka atau berupa simbol-simbol khusus, seperti : 1. huruf A sampai dengan Z atau a sampai z 2. angka 0 sampai 9 3. angka heksa desimal 0 sampai 9 dan A sampai F 4. spasi 5. karakter kontrol : karakter yang mempunyai kode ASCII antara 0 sampai 31 6. karakter ASCII tak standar kode 128 smapi 255 7. simbol-simbol khusus berpasangan, seperti <= , >= , := atau yang lainnya. B.
PENGENAL
Pengenal (identifier) digunakan untuk memberi nama : konstanta, variabel, tipe data, prosedure, label, fungsi, program, unit dan field pada record. Pengenal harus diawali dengan HURUF dilanjutkan huruf atau angka atau tanda garis bawah, tidak boleh memakai spasi, titik atau karakter khusus dan tidak boleh memakai kata tercadang (reserved word), Panjang karakter yang digunakan adalah bebas tetapi berarti untuk Tubo Pascal adalah 63 karakter yang digunakan adalah bebas tetapi berarti untuk tubo pascal adalah 63 karakter yang pertama. Contoh : JenisPekerjaan, Total_Gaji dsb. C.
JENIS ATAU TIPE DATA
Terdiri dari lima macam tipe data yaitu : 1. Tipe data sederhana ; tipe bilangan (bulat dan real), karakter dan bolean. 2. Tipe data bulat ; terdiri dari beberapa tipe sepertti : • Shortint : tipe data numerik dalam bilangan bulat tanpa bilangan desimal dengan range data dari –128 s/d 127 • Integer : tipe data numerik dalam bilangan bulat tanpa bilangan desimal dengan range data dari –32.768 s/d 32.767. • Longint : tipe data numerik dalam bilangan bulat tanpa bilangan desimal dengan range data dari –2.147.483.648 s/d 2.147.483.647 (-231 s/d 231) • Byte : tipe data numerik dalam bilangan bulat tanpa bilangan desimal dengan range data 0 s/d 255 • Word : tipe data numerik dalam bilangan bulat tanpa bilangan desimal dengan range data dari 0 s/d 65.35 3. Tipe data real ; terdiri dari : • Real : tipe data numerik dalam bilangan desimal dengan range data dari ± 2.9 x 10 -39 s/d 1.7 x 10 38 • Single : tipe data numerik dalam bilangan desimal dengan range data dari ± 1.5 x 10 -45 s/d 3.4 x 10 38 • Double : tipe data numerik dalam bilangan desimal dengan range data dari ± 2,9 x 10 -39 s/d 1,7 x 10 38
3
•
Extended : tipe data numerik dalam bilangan desimal dengan range data dari ± 5.0 x 10 -324 s/d 1,7 x 10 308 • Comp : tipe data numerik dalam bilangan desimal dengan range data dari -2 63 s/d 2 63 –1 4. Tipe data bolean : tipe data yang hanya mengenal dua nilai yaitu true (benar) dan false (salah). 5. Tipe data karakter : tipe data yang mengandung sebuah karakter 6. Tipe data String : berupa sederetan karakter. D.
KONSTANTA
Merupakan nilai yang tidak berubah selama program berjalan, dalam pascal mengenal bermacam-macam konstanta, antara lain : • Konstanta karakter • Konstanta bilangan • Konstanta string • Konstanta bolean • Konstanta yang dideklarasikan E.
VARIABEL
Suatu nama yang menyiratkan lokasi memory komputer yang digunakan untuk menyimpan nilai. Dan nilainya dapat berubah selama program dijalankan. Variabek ini harus dideklarasikan terlebih dahulu sebelum digunakn pada program, dengan menggunakn kata tercadang VAR. F.
UNGKAPAN
Ungkapan dibentuk oleh operand dan operator. G.
OPERATOR
Operan aritmatik berfungsi untuk melakukan operasi aritmatika. Operator @ not * / div mod shl shr + - or xor = <> < <= >= in Operator ^ / Div * Mod + -
Prioritas Pertama Kedua Ketiga Keempat
Fungsi Pangkat Pembagi bilangan pecahan Pembagi blangan bulat Perkalian Sisa pembagian bilangan bulat Penjumlahan Pengurangan
Kelompok Operator Unary Operator Pengali Operator Penambahan Operator Relasi Contoh 10^5 10.5/10 10 div 20 12*7 3 mod 2 2 + 12 43 – 20
4
-
Negatif
-30
Operator logika ada 6 buah : 1. not : besifat unary, untuk memperoleh niali bit berlawanan 2. and : bersifat binary 3. or : bersifat binary 4. xor : bersifat binary 5. snl 6. shr H.
BEBERAPA FUNGSI / PERINTAH PROGRAM INPUT OUTPUT
Perintah WRITE / WRITELN ; berfungsi untuk mencetak kelayar Contoh : Write(‘Perintah Input’); Perintah READ / READLN ; berfungsi untuk membaca nilai pernyataan Contoh : Readln(Output);
BAB II. PENGAMBILAN KEPUTUSAN DAN PROSES PENGULANGAN A.
PERNYATAAN GOTO
5
Digunakan sebagai pernyataan loncatan tak bersyarat, berguna untuk mengarahkan eksekusi program kepernyataan yang diawali label yanmg ditunjuk. Contohnya : Label Ulang; Begin Ulang Writeln (turbopascal); Goto Ulang End. B.
PERNYATAAN MAJEMUK
Kumpulan pernyataan yang diawali dengan BEGIN dan diakhiri dengan END, antara pernyataan dipisahkan oleh tanda titik koma (;), eksekusi program dimulai dari pernyataan 1 sampai pernyataan ke n secara berurutan. Bentuk umunya : Begin Pernyataan_1 Pernyataan_2 Pernyataan_n End. C. •
•
PERINTAH-PERINTAH LOOPING IF.......THEN.......ELSE adalah pernyataan logika percabangan yang mana perintah ini akan memeriksa terhadap suatu kondisi. Bentuk umumnya: IF Ungkapan nalar THEN Pernyataan Atau IF Ungkaan nalar THEN Pernyataan_1; ELSE Pernyataan_2; Select CASE adalah pernyataan logika seperti IF...THEN tetapi pada perintah ini digunakan untuk permasalahan dengan pilihan lebih banyak Bentuk umum : Case Pemilihan OF Daftar_konstanta_1:Pernyataan_1; Daftar_konstanta_2:Pernyataan_2; Daftar_konstanta_n:Pernyataan_n; [Else pernyataan_m] End.
•
Penggunaan FOR adalah salah satu bentuk penyataan pengulangan yang jumlah pengulangannya sudah diketahui sebelum prose dimulai 6
Bentuk umum : FOR pencacah : = Nilai_awal TO nilai_akhir DO pernyataan; Atau FOR pencacah : = Nilai_awal DOWNTO nilai_akhir DO Pernyataan; •
Penggunaan REPEAT adalah pernyataan pengulangan yang digunakan karena jumlah pengulangannya belum pasti, tetapi minimal proses akan minimal akan dikerjakan sekali. Bentuk umum : REPEAT Pernyataan; UNTIL Ungkapan_nalar;
•
Pengguanaan WHILE adalah bentuk penyataan pengulangan jika jumlah pengulangan belum pasti dan pengujian kondisi dilakukan pada awal proses, selama kondisi benilai benar mak proses pengurangan akan terus dikerjakan. Bentuk umum : WHILE Ungkapan_nalar DO Pernyataan;
BAB III. PROSEDURE DAN FUNGSI Fungsi dalam bahasa Pascal terdiri atas : • Built-in Fungction : Fungsi yang telah disediakan oleh bahasa Pascal, yang langsung dapat di implementasikan dalam bahasa pemograman. • User Define Fungtion A.
FUNGSI ARITMATIKA
Fungsi yang berkaitan dengan operasi aritmatika yang disediakan oleh bahasa pascal cukup banyak seperti : •
Fungsi ABS : untuk menghasilakan nilai absolut dari ekspresi numerik, hasil bertipe sesuai dengan tipe argumen. bentuk umum : ABS (numeric expresion)
7
•
• • • • • • • • • • • • •
Fungsi ArcTan : untuk menghasilkan nilai ArcTangen dari nilai trigonometri, hasil bertipe real. Bentuk umum : Arctan (numeric expresion) Fungsi COS : untuk menghasilkan nilai Cosinus dari nilai trigonometri, hasil bertipe real Fungsi SIN : untuk menghasilkan nilai Sinus dari nilai trigonometri, hasil bertipe real. Fungsi Random : untuk menghasilkan nilai random antara 0 dan 1, hasil bertipe word. Fungsi SQR : untuk menghasilkan nilai akar dari suatu numerik. Hasil bertipe sesuai argumen. Fungsi Exp : untuk memperoleh eksposional dari argumen X, yaitu ex. hasil bertipe real. Fungsi Frac : untuk mengambil bagian pecahan dari argumen data X. hasil beripe real. Fungsi Int : untuk mengambil bagian bulat dari data X, hasil bertipe real. Fungsi LN : untuk memperoleh nilai logaritama natural (basis e), hasil bertipe real. Fungsi Pi : untuk menghasilkan nilai 3.14159265365 Fungsi Round : untuk memperoleh nilai pembulatan dari suatu bilangan real, hasil bertipe real. Fungsi Sqrt : untuk memperoleh nilai akar kuadrat dari argumen X. hasil bertipe real. Fungsi Trunc : untuk memperoleh bagian bulat dari X(real), hasil bertipe Longint. Fungsi Odd : untuk menentukan apakah argumen (tipe longint) berupa bilangan ganjil atau tidak, hasil bertipe Boolean.
• B. MENCIPTAKAN FUNGSI Fungsi merupakan salah satu jenis subprogram. Jika dipanggil maka pengenal yang merupakan nama fungsi akan menghasilkan sebuah nilai. Bentuk umum : Fungtion nama_fungsi (daftar_parameter_formal):tipe_hasil; Bagian_deklarasi_fungsi; Bagian_pernyataan_fungsi; Bagian deklarasi berisi Consts, Var, type,label atau sub program lainnya. Bagian Pernyataan diawali BEGIN dan diakhiri END. C.
MENCIPTAKAN PROSEDURE
Prosedure terdiri dari tiga bagian yaitu : 1. Judul Prosedure 2. Deklarasi 3. Pernyataan Bentuk umum : Procedure nama_procedure (daftar_parameter_formal);
8
Bagian_deklarasi_fungsi; Bagian_pernyataan_fungsi; Bagian deklarasi berisi Consts, Var, type,label atau sub program lainnya. Bagian Pernyataan diawali BEGIN dan diakhiri END. D.
MELEWATKAN PARAMETER DENGAN NILAI ATAU REFERENSI
Parameter dapat dilewatkan dalam subprogram dengan dua cara yaitu: 1. Parameter lewat nilai : menyebakan nilai parameter aktual disalin dalam parameter formal subprogram, yang berarti apabila nilai parameter didalam subprogram diubah tidak akan merubah nilai parameter aktual pemanggil subprogram. 2. Parameter lewat referesi : menyebakan nilai parameter aktual dilewatkan dalam subprogram, yang berarti ada kaitan antara nilai parameter formal didalam subprogram dengan nilai parameter aktual pemanggil subprogram. Parameter formal harus diawali kata-kata tercadang Var, sedamg parameter aktual harus berupa Variabel. E.
PEMBATASAN PENGENAL
Pembatasan pengenal ini dimaksudkan agar pengenal dapat dikenal pada suatu blok tetapi tidak dikenal pada blok lainnya. Beberapa sifat pembatasan pengenal : 1. tidak dikenal diluar blok deklarasi 2. pengenal global dapat diakses disembarang bagian program. 3. pengenal yang dideklarasikan dalam subprogram dapat diakses oleh subprogram yang didefinisikan didalamnya 4. jika subprogram didefinisikan sama maka kedua subprogram dapat memanggil subprogram lainnya.
BAB IV. ARRAY DAN RECORD Data terstruktur adalah tipe data yang dapat digunakan untuk menyimpan lebih dari sebuah elemen. Beberapa tipe data : A.
ARRAY
Array satu dimensi : tipe indeks berupa ordinal, keculai tipe longint dan subrange dari longint, dan bisa menggunakan tipe integer, char dan bolean, array satu dimensi ini gambarannya seperti sebuah kolom memanjang, dan berisikan nilai tipe data sejenis tetapi beda nilainya. Memberikan nilai kearray dilakukan dengan cara : a. melalui pernyataan penugasan b. menggunakan pernyataan Read/readln. Memperoleh elemen array dilakukan dengan cara : a. melalui pernyataan penugasan 9
b. menggunakan pernyataanWrite/writeln. Array dua dimensi : berbentuk matriks dimana ukuran matriksnya ditentukan besarnya nilai data. Memberikan nilai kearray dilakukan dengan cara : a. melalui pernyataan penugasan b. menggunakan pernyataan Read/readln. Memperoleh elemen array dilakukan dengan cara : a. melalui pernyataan penugasan b. menggunakan pernyataanWrite/writeln. Array sebagai parameter : dapat dilewatkan ke subprogram sebagai parameter, baik sebagai nilai maupun variabel. Bentuk umum : Pada bagian deklarasi prosedure : Procedure nama_array(Var daftar_parameter_tipe); Pada saat pemanggilan prosedure : Nama_array(daftar_parameter); Penugasan Array : Penyalinan suatu array ke array lainnya dapat dilakukan melalui instruksi penyalian satu persatu atau secara keseluruhan. B.
RECORD
Merupakan jenis data terstruktur yang mengandung sejumlah elemen dengan setiap elemen mempunyai tipe berbeda. Dan elemen dalam record disebut field. 1. Mendefinisikan/mendeklarasikan record : Bentuk umum : Record Daftar_field_1 : tipe_record_1; Daftar_field_2 : tipe_record_2; Daftar_field_n : tipe_record_n; End. 2. Mengakses record : Field dari suatu record dapat diakses dengan menggunakan : Nama_variabel_record.nama_field Menggunakan pernyataan With : digunakan untuk pengaksesan record, dan cukup digunakan satu kali. Bentuk umum : With nama_record DO Pernyataan 3. Menggunakan Variant record Bertujuan untuk menghemat memory, karna suatu data berbeda dapat menempati lokasi yang sama. 10
Catatan : • Kemungkinan nilai dari tag bisa lebih dari 2 • Field yang berkaitan dengan Tag harus ditulis diantara tanda kurung • Jika tag field tidak digunakan bagian deklarasi tag cukup ditulis () • Case pada Variant record tidak diakhiri dengan End. Inisiasi data record Pemberian nilai awal record dilaksanakan dalam deklarasi CONST, dan berdiri sebagai konstanta bertipe. Bentuk konstanta record : Pengenal_record : tipe_pengenal = field_1 : nilai_1; field_2 :nilai_2; field_n :nilai_n;
BAB V. FASILITAS DALAM UNIT CRT A.
MENGATUR JENDELA TEKS
Unit CRT berupa prosedur window untuk mengatur jendela teks. Bentuk umum Window(X1,Y1,X2,Y2:byte); B. MENGATUR WARNA TEKS Dilakukan dengan memanipulasi atribut elemen teks digunakan adalah TextAtrr (bertipe byte). Daftar warna latar depan dan belakang Bit Bit Warna latar depan karakter 3 2 1 0 6 5 0 0 0 0 Hitam 0 0 0 0 0 1 Biru 0 0 0 0 1 0 Hijau 0 1 0 0 1 1 Cyan 0 1 0 1 0 0 Merah 1 0 0 1 0 1 Magenta 1 0 0 1 1 0 Coklat 1 1 0 1 1 1 Abu-abu 1 1 1 0 0 0 Abu-abu muda 1 0 0 1 Biru muda 1 0 1 0 Hijau muda 1 0 1 1 Cyan muda 1 1 0 0 Merah muda
(karakter), prosedur yang
4 0 1 0 1 0 1 0 1
Warna Latar belakang karakter Hitam Biru Hijau Cyan Merah Magenta Coklat Abu-abu
11
1 1 1
1 1 1
0 1 1
1 0 1
Magenta muda Kuning Putih
Bentuk umum : Textbackground (warna : byte); TextColor (warna : byte); Prosedur Lowvideo : mengatur warna teks dalam intensitas rendah (warna tua) Prosedur Highvideo : mengatur warna teks dalam intensitas tinggi (warna cerah) Prosedur Normvideo : mengatur warna teks dalam keadaan semula. C.
MENEMPATKAN KURSOR KE SUATU LOKASI JENDELA LAYAR
Prosedur Goto XY : untuk menempatkan kursor pada posisi tertentu. Bentuk umum : Goto XY (X,Y :byte); Fungsi Where X dan Where Y : untuk memperoleh posisi kursor. Contoh : X : = WhereX; Y : = WhereY; ClrScr : untuk menghapus layar DelLine : untuk menghilangkan baris Prosedur Insline : untuk menyisipkan baris kosong D. MENGATUR DAN MEMERIKSA MODE TEKS Prosedur TextMode : untuk mengatur mode teks Bentuk Umum : TextMode (Mode : integer); E.
FUNGSI YANG BERHUBUNGAN DENGAN TOMBOL
Fungsi Keypressed : untuk memeriksa ada tidaknya tombol yang ditekan, hasil berupa bolean, true jika ditekan, dan false jika tidak. Fungsi ReadKey : sebagai tombol papan ketik dan dapat dibaca tanpa karakternya ditampilkan dilayar, juga digunakan untuk membaca tombol. Prosedur Delay : untuk menunda eksekusi sesaat Bentuk umum : Delay (ms : word); F.
MENGATUR SUARA SPEAKER
Prosedur sound : menghasilkan bunyi atau suara, dalam satuan Hertz. Bentuk umum : Suond (hz : word); G.
PROSEDUR DAN FUNGSI LAIN
1. Variabel DirectVideo 2. Variabel CheckSnow 3. Variabel CheckEof 12
4. Variabel AssignCrt
BAB VI. PENGOLAHAN DATA DENGAN FILE A.
FILE BERTIPE
Tipe komponennya ditentukan oleh programmer. 1. Menentukan tipe komponen Didefinisikan dengan cara : File of tipe_data 2. Operasi file bertipe a. Prosedur Assign : untuk mengkaitkan variabel file dan nama file Bentuk umum : Assign (variabel_file, nama_file); b. Prosedur Rewrite (variabel_file) dan Reset(variabel_file) : untuk membuka file. c. Write(varibel_file, variabel_komponen) dan Write(varibel_file, variabel_komponen) : untuk mengakes data d. Close (variabel_file) : untul menutup file 3. Prosedur Lainnya : a. Prosedur seek b. Prosedur filesize c. Prosedur filepos d. Prosedur erase e. Prosedur rename f. Prosedur truncate B.
FILE TEKS
1. Pendefinisian file teks : Menggunakan kata tercadang text. Contoh : file_masuk : text; 13
2. Operasi file teks : sama dengan file bertipe • Prosedur Assign • Prosedur Rewrite (variabel_file) dan Reset(variabel_file) • Append (variabel_file) : membuka sekaligus menambah isi file • Write(varibel_file, karakter) dan Writeln(varibel_file,) writeln(variabel_file,st). • Read(varibel_file, karakter) dan Raeadln(varibel_file,) readln(variabel_file,st). • Close (variabel_file) 3. Prosedur Lainnya : • Prosedur Settextbuff • Prosedur Seekof • Prosedur Eoln • Prosedur Seekoln • Prosedur Flush C.
atau atau
FILE TAK BERTIPE
Merupakan cara pengaksesan disket secacar low-level. Dan digunakan untuk menyalin sebarang file Contoh : Var Proses : FILE Artinya : veriabel file proses berjenis file tak bertipe. Operasi file tak bertipe : • Prosedur Assign • Prosedur Rewrite (variabel_file, ukuran_record) dan Reset(variabel_file, ukuran_record) • Prosedur blokread(variabel_file, var_penampung, jumlah, [var_hasil]) • Prosedur blokwrite(variabel_file, var_penampung, jumlah, [var_hasil]) Prosedur Lainnya : • Sama seperti prosedur lainnya file bertipe.
14
BAB VII. PEMOGRAMAN DENGAN POINTER Pointer dapat diciptakan maupun dihapus selama eksekusi program, sehingga disebut variabel dinamis. Total variabel dibatasi oleh kapasitas memory yang ada dikomputer, variabel dinamis terdiri dari simpl (node), yang biasa berupa record. A. PENDEFINISIAN POINTER Ponter hanya menunjuk kesuatu lokasi data, tipe pointer didefinisikan dengan diawali tenda caret (^) dan diikuti pengenal tipe. Bentuk umum : ^pengenal_tipe B. DAFTAR BERANTAI Daftar berantai (linked list) merupakan salah satu bentuk struktur data dinamis yang sederhana. Menciptakan Variabel Dinamis : menggunakan Prosedur New. Bentuk umum : New (variabel_pointer) Membuat Daftar Berantai : dimulai dengan memberi nilai NIL. Menampilkan isi daftar berantai : 1. Variabel pointer diatur menunjuk lokasi yang ditunjuk 2. Jika Masih belum berisi NIL, maka cetak isi simpul, dan variabel pointer digeser menunjuk lokasi yang ditunjuk oleh pointer lanjutan 3. Tujuan pembuatan variabel pointer, agar selama proses tetap menunjujk lokasi yang sama. Bentuk umum : Ptrsemen : = ptrkepala; While ptrsemen <> Nil DO 15
Begin Writeln (ptrsemen^ nama, ptrsemen^ jabatan); Ptrsemen : = ptrsemen^lanjutan; End; Readln (ptrbaru^nama); C. VARIABEL DINAMIS Heap adalah tempat menyimpan varibel dinamis, Heapptr adalah pointer bawaan yang terdapat pada heap, bersifat Global, dan selalu menunjuk memory terendah. Dispose atau freemem dan Mark&release. Bentuk umum prosedur mark : Mark(var_ptr) Bentuk umum prosedur release : release(var_ptr) Bentuk umum prosedur dispose : Dispose(var_ptr) Semua Var_ptr diatas bertipe pointer Prosedur getmem dan freemem Freemem untuk mengahpus variabel dinamis dan getmem untuk menciptakan variabel dinamis, dengan ukuran yang bisa ditentukan. Bentuk umum : GetMem (var_ptr, ukuran); FreeMem (var_ptr, ukuran); Var_ptr : Variabel pointer dan Ukuran bertipe Word Fungsi Maxavail dan MemVail : sebagai alokasi variabel dinamis, dan tanpa argumen dan/parameter. Maxavail : untuk memperoleh ukuran blok bebas terbesar dalam heap Memavail : untuk memperoleh total memori dalam heap.
16
BAB VIII. MANIPULASI MEMORI Pascal mempunyai unit system yang berguna untuk memanipulasi memori komputer, seperti : a. Membaca dan mengubah isi suatu memory secara langsung b. Memperoleh alamat suatu variabel, konsatanta bertipe atau subprogram c. Memperoleh ukuran memori yang digunakan untuk suatu tipe, konstanta bertipe atau variabel. A. MEMORI KOMPUTER IBM Setiap memori komputer berukuran 1 byte ( 8 bit). dan masing-masing memiliki alamat, setiap alamat memilki bagian yang disebut segmen atau ofset. Notasi untuk menyatakan alamat memori : Segmen : ofset Organisasi memori dalam komputer terdiri dari 16 blok, setiap blok mengandung 64 KB memori (total 1 MB) Blok 0 RAM sampai 64 KB Blok 1 RAM sampai 128 KB Blok 2 RAM sampai 192 KB Blok 3 RAM sampai 256 KB Blok 4 RAM sampai 320 KB Blok 5 RAM sampai 384 KB Blok 6 RAM sampai 448KB Blok 7 RAM sampai 512 KB Blok 8 RAM sampai 576 KB Blok 9 RAM sampai 640 KB Blok A Memori perluasan untuk video Blok B Memori standar untuk video Blok C Blok D Ekspansi ROM untuk keperluan lain Blok E
17
Blok F
Sistem ROM_BIOS dan ROM-BASIC
Peta memori dalam turbo pascal Memori terendah
Stack berkembang ke memori rendah ukuran penampung = 0 jika tidak ada overlay Stack berkembang ke memori tinggi Memori Tinggi
Awal kode objek Akhir kode objek Kode unit n ...... Kode unit 1 Kode unit sistem Awal dari data Akhir dari data Stack bebas Stack Penampung overlay Awal heap Puncak heap Memori tersisa Daftar blok bebas
B. ALAMAT, SEGMEN ATAU OFSET Fungsi yang berkaitan dengan ketiga hal tersebut : Addr (X) : untuk memperoleh alamat dari objek X Seg (X) : untuk memperoleh Segmen dari objek X Ofs (X) : untuk memperoleh Ofset dari objek X Cseg : untuk memperoleh isi yang terkandung dalam register CS (Code segment) Dseg : untuk memperoleh isi yang terkandung dalam register DS (Data segment) Sseg : untuk memperoleh isi yang terkandung dalam register SS (Stack segment) Sptr : untuk memperoleh isi yang terkandung dalam register SP ( Stack Pointer)
18
Sizeof (objek) : untuk memperoleh ukuran memori yang diperlukan oleh objek argumennya. MENGISI SUATU DATA TERSTRUKTUR DENGAN NILAI YANG SAMA Untuk inisialisasi terhadap tipe data tersetruktur dapat digunakan Prosedur fillchar.
19
Bentuk umum : Fillchar (var_x, cacah, nilai) Jika prosedur ini dipanggil maka memori pertama sampai kecacah dari var_x akan diisi dengan nilai. MENYALIN ISI SEJUMLAH MEMORI Isi sejumlah memori dapat disalin kelokasi lain dengan prosedur Move. Bentuk umum : Move(var_1, var_2); MANIPULASI DATA BERTIPE WORD Tipe Word mengandung 2 buah byte, dlam bentuk heksa desimal word dinyatakan dalam 4 digit. Fungsi HI :untuk memperoleh byte tertinggi Bentuk umum : Hi (X), dengan x berupa sebarang ungkapan bertipe word. Fungsi LO :untuk memperoleh byte terendah Bentuk umum : Lo (X), dengan x berupa sebarang ungkapan bertipe word. Fungsi SWAP :untuk memperoleh nilai tipe word yang merupakan pertukaran byte terendah dan byte tertinggi dari X. MENGUBAH SEGMEN OFSET MENJADI ALAMAT Untuk mengubah suatu alamat alternatif yang terdiri dari segmen dan ofset menjadi sebuah alamat bertipe pointer dapat digunakan fungsi ptr. Bentuk umum : Ptr (segmen, ofset) MENGAKSES MEMORI DAN PORT SECARA LANGSUNG Fasilitas yang disediakan : • Mem : untuk mengakses sebuah byte memori yang mempunyai alamat segmen : ofset • MemW : untuk mengakses sebuah data bertipe Word (2 byte) yang berada dalam alamat awal segmen : ofset • MemL : untuk mengakses sebuah data bertipe longint (4 byte) yang berada dalam alamat awal segmen : ofset Fasilitas untuk mengakses Port secara langsung : PORT[nomor_port] PORTW[nomor_port] Komponen array PORT bertipe byte dan PORTW bertipe word. KLAUSA ABSOLUTE Bertujuan untuk memungkinkan pendeklarasian variabel absolut, yaitu variabel yang tertinggal pada memori yang dikehendaki oleh programmer. Bentuk deklarasi : Var_absolut : tipe_variabel ABSOLUTE segmen : ofset;
20