Modul Prak. Pemrograman



DAFTAR ISI

Daftar Isi …………………………………………………………………..   1
Petunjuk Penggunaan dan Pelaporan  ……………………………   2
1.           Dasar Pemrograman dalam Pascal  ………………………….   3
2.           Tipe Data Standar  ………………………………………………..   7
3.           Tipe Data Didefinisikan …………………………………………..  11
4.           Input Output  ………………………………………………………  15
5.           Perulangan …………………………………………………………  18
6.           Percabagan  ………………….……………………………………  22
7.           Prosedur  ……………………….……………………………………  26
8.           Fungsi  …………………………..……………………………………  32
9.           Rekursi  …………………………..…………………………………..  36



 

PETUNJUK PENGGUNAAN DAN PELAPORAN


Untuk mendapatkan pemahaman yang baik dalam setiap modul, pelajarilah terlebih dahulu teori yang saudara peroleh pada patakuliah Algoritma dan Pemrograman I. Disamping itu, sebaiknya saudara mempelajari terlebih dahulu setiap topik dengan membaca literature-literatur Bahasa Pascal. Setiap materi ditampilkan untuk memberikan gambaran kerangka program saja, sehingga untuk dapat sempurnanya program saudara harus melengkapi program. Jangan lupa setiap saudara selesai mengetik contoh program, lakukan eksekusi (Runing) sampai program dapat dikerjakan tanpa kesalahan. Selajutnya lakukan perubahan-perubahan sesuai dengan keinginan saudara. Jangan takut salah… coba… coba… dan coba !!!!

Untuk setiap kali praktikum saudara diharuskan membuat laporan dengan ketentuan sebagai berikut :
1.       Jawablah semua pertanyaan pada setiap materi dan berikan ulasan.
2.       Kerjakan latihan pada setiap modul, jika ada kesulitan konsultasikan dengan Asisten atau Dosen yang bersangkutan.
3.       Dokumenkan semua hasil kerja saudara setiap selesai praktikum
4.       Kumpulkan laporan praktikum pada asisten tiap modul




MODUL 1

DASAR PEMROGRAMAN DALAM PASCAL


Tujuan

Mahasiswa memahami dasar-dasar pembuatan program dalam bahasa Pascal. Mahasiswa dapat membuat program sederhana sampai dapat dieksekusi (tanpa kesalahan)

Dasar Teori

1.      Cara mengaktifkan Turbo Pascal
  • Pilih menu Programs (jika Pascal disimpan dalam menu program)
  • Pilih sub menu TPW 1.5
  • Pilih sub-sub menu TPW 1.5
  • Atau, jika dibuat shortcut click shortcut tersebut.
2.      Cara membuat, menyimpan, menutup, dan mengedit file program
·         Memubuat file baru
Dari jendela Turbo Pascal pilih menu : File, New maka akan dibuat file dengan nama sementara noname00.pas

·         Menyimpan File

Pilih menu File, Save, ketik nama file pada isian dibelakang tulisan File Name : kemudian Click [Ok].
·         Menutup jendela Editing
Click tanda x pada sudut kanan atas jendele editing, maka akan ditutup jendela yang bersangkutan
Atau pilih menu Window, Close all untuk menutup semua jendela yang terbuka.
·         Mengedit program
Pilih menu File, Open, click salah satu file yang ada pada daftar atau ketik namanya kemudian click [Ok]
3.      Cara me-eksekusi program (running)
Pilih menu Run,Run atau tekan secara bersama-sama tombol [Ctrl] dan [F9]
Maka hasil eksekusi akan ditampilkan dalam jendela yang lain
4.      Struktur dasar dan aturan umum pemrograman dalam Turbo Pascal
·         Struktur program utama dalam Pascal adalah terdiri dari kepala program yang harus ditulis terlebih dahulu kemudian badan program yang ditulis dibawah kepala program. Kepala program berisi deklarasi-deklarasi yang diperlukan dalam program. Biasanya berisi perintah USES, CONST, VAR, TYPE, FUNCTION, PROCEDURE. Badan program dibatasi dengan blok perintah BEGIN ….. END. (harus diakhiri dengan tanda titik).
·         Setiap baris perintah atau blok perintah harus diakhiri dengan titik koma (;).
5.      Perintah
WRITE atau WRITELN adalah perintah untuk menampilkan besaran atau variable dalam argumennya
USES adalah perintah menggunakan unit bawaan pascal
CLRSCR adalah perintah menghapus layar
FOR var:=awal TO akhir DO perintah adalah blok perulangan dari kondisi awal sampai akhir. Lebih lanjut akan dibahas di belakang.
6.      Hotkey / Tombol navigasi cepat
  • [CTRL][F9] untuk Compile dan Run
  • [CTRL][F1] untuk tombol bantuan
  • [F2] untuk menyimpan
  • [F3] untuk membuka
  • [ALT][F3] untuk menutup jendela yang aktif
  • [ALT][F5] untuk menampilkan keluaran
  • [SHIFT][Panah] untuk mengeblok teks
  • [CTRL][INS] untuk mengcopy blok
  • [SHIFT][INS] untuk mem-paste blok di memori
  • [SHIFT][DEL] untuk menghapus teks yang diblok
  • [CTRL][K][H] untuk menyembunyikan teks yang diblok
  • [ALT][Space] untuk pembatalan
  • [ALT][X] untuk keluar

Materi

1.      Ketiklah program berikut kemudian simpan dengan nama M11, kemudian eksekusi amati hasilnya:
USES WINCRT;
BEGIN
  CLRSCR;
  WRITELN(‘Selamat Datang di Turbo Pascal’);
  WRITELN(‘Mahasiswa Fakultas MIPA’);
  WRITELN(‘Universitas Widya Dharma Klaten’);
END.
2.      Berilah spasi pada masing-masing baris program no 1, kemudian eksekusi. Bandingkan hasilnya dengan program awal.
3.      Ketik ulang program diatas dengan menggunakan huruf kecil untuk semua perintah (tulisan yang tidak dalam tanda petik). Run !
4.      Ubah semua kalimat dalam tanga petik dengan huruf besar. Run!
5.      Ketik program dibawah ini dan sempurnakan kesalahan serta lengkapi kekurangannya.
USES WINCRT
VAR I:WORD;
BEGIN
       CLRSCR;
       FOR I:=1 TO 10 DO
       BEGIN
            WRITELN(‘Isi Variabel I adalah :’,I)
       END;
END

Latihan

  1. Buatlah program sehingga layar menampilkan hasil sbb :

NAMA                        :  EKO SRI WAHYUNI

ALAMAT                   :  JLN. PEMUDA UTARA NO 10 KLATEN

TANGGAL LAHIR   :  20 AGUSTUS 1980
 








  1. Buatlah program untuk menampilkan tulisan dengan format sebagai berikut :


JURUSAN ILMU KOMPUTER
DAN
MANAJEMEN INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS WIDYA DHARMA KLATEN
 








  1. Lengkapi program berikt sehingga bisa dieksekusi :


VAR I:INTEGER;

BEGIN
            FOR I:=1 TO 10 DO
            BEGIN
                        WRITE(‘Ditulis dalam satu baris..!!’)
            END;
            READLN
            FOR I:=1 TO 10 DO
            BEGIN
                        WRITELN(‘Ditulis pada baris lain..!!’)
            END;
END.

 













-End-
MODUL 2

TIPE DATA STANDAR

Tujuan
Mahasiswa dapat memahami tipe data standar dalam Pascal
Mahasiswa dapat membuat program dengan menggunakan data-data standar.
Mahasiswa dapat menggunakan operasi-operasi serta fungsi-fungsi standar/bawaan

Dasar Teori
1.           Data jenis Integer
Tipe data integer adalah tipe data yang nilainya berupa angka matematis bulat baik desimal maupun heksadesimal (untuk heksadesimal diawali dengan $). Jenis data integer seperti terlihat pada tabel berikut :

Tipe
Jangkauan Nilai
Format Penyimpanan
Shortint
-128…127
8 bit bertanda
Integer
-32768…32767
16 bit bertanda
Longint
-2147483648…2147483647
32 bit bertanda
Byte
0…255
8 bit tak bertanda
word
0…65535
16 bit tak bertanda

Operasi-operasi biner yang bisa digunakan dalam jenis data ini adalah :

Nama
Simbul
Contoh
Jumlahan
+
2+3
Pengurangan
-
2-3
Perkalian
*
2*3
Pembagian real
/
2/3
Pembagian integer
Div
2 div 3
Modulo (sisa pembagian)
Mod
6 mod 3

2.           Data jenis Real
Tipe data real adalah tipe data yang nilainya berupa data matematis yang mengandung pecahan. Jenis data real seperti terlihat pada tabel berikut :



Tipe
Jangkauan Nilai
Ukuran
Real
2.9E-39…1.7E38
6 byte
Single
1.5E-45…3.4E38
4 byte
Double
5.0E-324…1.7E308
8 byte
Extended
3.4E-4932…1.1E4932
10 byte
comp
-263+1…263-1
8 byte

Operasi-operasi biner yang dapat dikerjakan pada jenis data ini adalah :


Nama
Simbul
Contoh
Jumlahan
+
2.23+3.22
Pengurangan
-
2.45-4.3
Perkalian
*
2.34*3.56
Pembagian real
/
5.232/3.45

3.           Data jenis Boolean
Jenis data Boolean adalah jenis data yang mempunyai satu nila dengan dua kemungkinan yaitu benar atau salah ( true atau false). Operasi dasar pada data Boolean adalah and, or, not. Contoh penggunaannya seperti terlihat pada tabel berikut :
A
B
A and  B
A or B
Not A
true
True
True
True
False
true
False
False
True
False
false
True
Flase
True
True
False
false
false
false
True

4.           Data jenis Char
Tipe data char adalah tipe data yang nilainya semua karakter yang dikenal komputer. Setiap karakter mempunyai nilai yang disebut kode ASCII. Untuk menuliskan data char digunakan tanda petik (‘) atau dengan kode ASCII dengan mengawali tanda #.  Fungsi-fungsi bawaan yang sering digunakan diantarnya :



Nama
Guna
Ord(x)
Mencari kode ASCII dari character x
Char(x)
Mencari character yang kode ASCII-nya x
Pred(x)
Mencari character yang urutannya mendahului x
Succ(x)
Mencari character yang urutannya setelah x
Upcase(x)
Mengubah x menjadi huruf besar

5.           Data jenis String
Data tipe string adalah data yang berisi sederetan karakter yang terletak di antara tanda petik tunggal (‘). Untuk mendeklarasikan suatu data dengan tipe ini selalu disertakan panjangnya, jika tidak akan disimpan dengan panjang 255 karakter.
6.           Perintah
a.       VAR adalah perintah inisialisasi variabel dan jenisnya.
b.      TYPE perintah deklarasi jenis variable
c.       SQRT mencari akar bilangan
d.      SQR mencari pangkat dua dari suatu bilangan


Materi
Siapkan Pascal dan kerjakan soal-soal dibawah ini.
1.      Ketik program berikut kemudian Run. Amati dan buatlah rangkuman tentang prosesnya!

USES WINCRT;
VAR  jari2:real;
Begin
  Jari2:=20;
  Luas:=(22/7)*jari2*jari2;
  Writeln(‘Luas lingkaran dengan jari-jari ‘,jari2,’ m adalah ‘,luas,’ m2’);
End.

2.      Ketik program berikut dan lengkapi jika ada kekurangan, bagaimanakah proses yang dikerjakan ?
USES WINCRT;
VAR  kata1,kata2:string[10];kata3:char;
Begin
  Kata1:=’Minggu’;
  Kata2:=’Senin’;
  Writeln(kata1+kata2);
End.
3.      Modifikasi program no 2 tanpa dengan menambah variable lagi, sehingga keluar hasil sbb :
---------------------------------------------------------------
Hari Minggu dan Hari Senin adalah hari ke 1 dan 2
---------------------------------------------------------------
4.      Gunakan fungsi upcase(x), sehingga program no 3 menampilkan hasil dengan huruf besar semua!
 

Latihan
  1. Buatlah suatu program untuk menghitung luas dan keliling dari suatu persegi panjang yang panjang dan lebarnya diketahui dalam program. (Petunjuk : Luas= panjang . lebar, Keliling = 2(panjang+lebar).
  2. Buatlah suatu program untuk menghitung luas segitiga, jika diketahui tinggi dan alasnya. (Petunjuk : Luas = 0.5 *alas*tinggi)
  3. Buatlah suatu program untuk menghitung akar persamaan kuadrat ax2 + bx + c =0. Jika a,b,c diketahui dalam program. (Petunjuk : X1,2 = (-b±(b2-4ac)1/2)/(2a)
  4. Buatlah program untuk mengkonversi suhu dari satuan derajat ke satuan Reamur, Fahrenheid dan Kelvin. (Petunjuk : Reamur=3/4 Celcius, Fahrenheid=9/5 celcius+32, Kelvin=celcius+273)
-End-
MODUL 3

TIPE DATA DIDEFINISIKAN

Tujuan
Mahasiswa dapat memahami tipe data yad didefinisikan dalam Pascal
Mahasiswa dapat membuat program dengan menggunakan data-data didefinisikan.
Mahasiswa dapat menggunakan operasi-operasi serta fungsi-fungsi standar/bawaan

Dasar Teori
  1. Data subrange
Type data subrange adalah suatu data yang menunjuk pada suaru range, dengan diketahui nilai terkecil dan terbesarnya. Bentuk umum pendeklarasiannya adalah sbb:
Type pengenal= awal..terakhir
Pengenal adalah nama type data yang dideklarasikan
Awal adalah nilai data terkecil
Akhir adalah nilai data terbesar
  1. Data Enumerated
Type data Enumerated adalah suatu data yang menunjuk pada kumpulan data yang urutannya sudah pasti. Nilai dari  tipe data yang dideklarasikan akan diwakili dengan konstanta-konstanta mulai dari nol. Deklarasi umum untuk tipe ini adalah :
Type pengenal= (daftar)
Pengenal adalah nama type data yang dideklarasikan
 Daftar adalah daftar dari elemen-elemen yang digunakan.
  1. Fungsi-fungsi
·         Pred(x) adalah fungsi untuk menghasilkan nilai urutan sebelum x dari suatu nilai ordinal.
·         Succ(x) adalah fungsi untuk menghasilkan nilai urutan sesudah x  dari suatu nilai ordinal.
·         Ord(x) adalah suatu fungsi menghasilkan urutan dari nilai ordinal x.
·         Inc(x,n) adalah suatu fungsi untuk menaikkan suatu nilai ordinak x dengan n
·         Dec(x,n) adalah suatu fungsi untuk menurunkan suatu nilai ordinal x dengan n
Materi

1.      Ketik program berikut, kemudian tuliskan proses yang terjadi dari program tsb, hapus perintah yang tidak dapat dikerjakan.
Uses wincrt;
Type Bil = (Nol,Satu,Dua,Tiga,Empat,Lima);
Var Angka: Bil;
Begin
Angka := Nol;
Write(Ord(Angka));
Writeln(angka);
Inc(Angka,2); (nilai Angka dinaikkan 2}
Write(Ord(Angka));
Writeln(angka);
End.
2.      Berdasar listing program no 1, tampilka order (urutannya).
3.      Cobalah program berikut kemudian simpulkan hasilnya.
Uses wincrt;
Type hari =1..7;
Var harike:hari;
Begin
 For harike:=1 to 7 do
     Writeln(‘Subrange ke ’,ord(harike));
End.
4.      Ketik program tersebut, dapatkah dikerjakan. Coba hilangkan baris yang salah. Tulis  kesimpulan saudara.
uses wincrt;
type hari=1..7;
    nama=(Minggu,Senin,Selasa,Rabu,Kamis,Jumat,Sabtu);
var  nhari:hari;
     chari:nama;
begin
     nhari:=1;
     chari:=Minggu;
     for nhari:=1 to 7 do
     begin
          write(ord(nhari));
          writeln(nhari);
     end;
     for chari:=Minggu to Sabtu do
     begin
          write(ord(chari));
          writeln(chari);
     end;
end.

Latihan
1.      Tulis program berikut kemudian sempurnakan sehingga dapat dieksekusi dan ambil kesimpulan.
uses wincrt;
type bulanke=1..12;
     nama=(Januari, Pebruari, Maret, April, Mei, Juni,
           Juli, Agustus, September, Oktober,
           Nopember, Desember);
var  i:bukanke;
     cbulan:nama;
begin
     for i:=1 to 12 do write(i));
          writeln;
     for cbulan:=januari to Desember do
       writeln(ord(cbulan));
end.
2. Ketik kepala program berikut kemudian lengkapi badan programnya sehingga dapat menampilkan tulisan ‘Ok!’ sebanyak data yang mungkin.
uses wincrt;
type NN=(Ayam, Senin, Agung, Laut, Mata, Malam,DR);
var  Data:NN;
3.      Gunakan fungsi pred() dan Succ() untuk menampilkan order sebelumnya dan order setelahnya.
4.      Buatlah kepala program sehingga badan program berikut dapat dieksekusi menampilkan seluruh tanggal, setelah saudara lengkapi.
Begin
  For  tanggal:=1 to 31 do
  Write(‘Tanggal : ‘)
Write(tanggal)
End.


-End-
MODUL 4

INPUT OUTPUT


Tujuan
Mahasiswa dapat memahami Perintah Input dan Output
Mahasiswa dapat membuat program dengan proses Input dan Output
Mahasiswa dapat mengatur tampilan di layar dan di printer dengan program

Dasar Teori
1.      Perintah WRITE, WRITELN
Adalah perintah untuk menampilkan sesuatu yang enjadi argumennya. Jika argumennya adalah suatu konstanta karakter maka akan ditampilkan apa adanya. Jika sebuah variabel maka akan ditampilkan isi variabel tersebut. Bentuk umum dari perintah tersebut adalah :
WRITE (pesan)
WRITELN(pesan)
Perbedaan WRITE dengan WRITELN adalah pada posisi kursor sesaat setelah selesai mencetak.

2.      Perintah READ, READLN
Adalah perintah untuk membaca masukan yang diberikan lewat papan ketik saat program berjalan untuk disimpan dalam variabel yang menjadi argumennya. Bentuk umumnya adalah :
READ(variabel)
READLN(variabel)
3.      Perintah READKEY
Adalah perintah untuk membaca satu carakter yang dimasukkan lewat papan ketik. Bentuk umumnya adalah :
Var:=READKEY;
Materi
1.      Ketik dan lengkapi program untuk membuat tabel berikut ini sehingga dapat dieksekusi:
USES WINCRT;
VAR X,Y:REAL;i:integer;
BEGIN
   WRITELN(‘ TABEL FUNGSI Y1(X) = X^2 + 3 DAN Y2(X) = (X^2+X)/X)
   WRITELN(‘               ‘);
   WRITELN(‘------------------------------------------------------‘);
   WRITELN(‘   X            Y1              Y2                    ‘);
   WRITELN(‘------------------------------------------------------‘);
   X:=1.500;
   FOR i:=1 TO  15 DO
   BEGIN
         Y1=SQR(X)+3;
         Y2=(SQR(X)+X)/X;
         WRITE( X:5:2);
         WRITE(Y1:6:3);
         WRITELN(Y2:6:3);
         X:=x+0.56;
   END;
   WRITELN(‘------------------------------------------------------‘);
END.
2.      Untuk program diatas, ubahlah agar perintah mencetak dalam blok FOR..NEXT hanya terdiri dari satu perintah WRITELN.
3.      Ketik program berikut dan lengkapi sehingga tidak ada kesalahan !
USES WINCRT;
VAR A:CHAR;
BEGIN
  WRITELN(‘Tekan tombol apa saja !);
  CR:=READKEY;
   WRITE(‘Karakter yang baru anda masukkan adalah : ‘,cr);
END.
4.      Sempurnakan program diatas sehinga dapat memasukkan suatu tiga carakter kemudian saudara rangkaiakan untuk kemudian dicetak.

Latihan
1.      Buatlah suatu program untuk membuat tabel sinus dan cosinus dengan format tiap kolom menampilkan angka dua digit didepan koma dan empat digit dibelakang koma.
2.      Buatlah program untuk mencetak bobot nilai berupa angka numerik berdasar pembacaan masukan keyboard berupa huruf/carakter.



MODUL 5

PERULANGAN


Tujuan
Mahasiswa memahami konsep tentang perulangan dalam Pascal
Mahasiswa dapat membuat program dengan perulangan dengan benar
Mahasiswa dapat mengimplementasikan macam-macam perulangan
Dasar Teori
1.      Perulangan dengan FOR
Bentuk perulangan ini merupakan bentuk berulangan dengan format tetap atau tidak memerlukan kondisi.
a.       Perulangan positif
Perulangan positif yaitu perulangan dengan kenaikan counter positif. Bentuk umum perintah ini adalah :
FOR  counter:= awal  TO akhir DO statemen
Variabel counter merupakan variable jenis integer, sedangkan konstanta awal dan akhir merupakan konstanta integer. Konstanta akhir harus lebih besar dari awal. Blok perintah pada statemen merupakan perintah-perintah yang akan diulang.
b.      Perulangan negatif
Perulangan negarif yaitu perulangan dengan kenaikan counter negatif. Bentuk umum perintah ini adalah :
FOR  counter:= awal  DOWNTO akhir DO statemen
Variabel counter merupakan variable jenis integer, sedangkan konstanta awal dan akhir merupakan konstanta integer. Konstanta akhir harus lebih kecil dari awal. Blok perintah pada statemen merupakan perintah-perintah yang akan diulang.
c.       Perulangan bersusun
Perulangan bersusun adalah perulangan yang memuat perulangan lagi. Jadi statemen dari blok perulangan akan merupakan perulangan lagi. Proses mengulang akan dikerjakan terlebih dahulu untuk perulangan yang berada di dalam, baru kemudian akan menambah/mengurangi counter satu untuk perulangan diluarnya. Sehingga jika diluar ada n perulangan dan didalamnya ada m perulangan maka akan terjadi perulangan sebanyak mn kali (bukan m+n kali!)
Jadi perulangan dengan menggunakan bentuk FOR merupakan perulangan dengan jumlah perulangan tertentu (diketahui) yaitu dari kedaan variable counter berisi awal sampai diperoleh variable counter berisi akhir.
2.      Perulangan dengan WHILE..DO
Jenis perulangan ini memerlukan kondisi untuk dapat dilakukannya perulangan. Kondisi biasanya akan tergantung saat program di-eksekusi. Bentuk umum perintah ini adalah :
WHILE kodisi DO ekspresi
Jika kondisi benar maka blok perintah dalam ekspresi akan diulang. Proses mengulang akan berhenti saat diketahui kondisi bernilai salah. Jika saat pertama kali ditemukan kondisi salah maka tidak ada proses yang dikerjakan dari blok perintah ekspresi.
3.      Perulangan dengan REPEAT..UNTIL
Perulangan ini hampir sama dengan jenis WHILE..DO. Bentuk umum untuk perulangan ini adalah :
REPEAT ekspresi UNTIL kondisi
Perbedaan dengan bentuk WHILE..DO adalah bahwa jika kondisi bernilai benar maka perulangan akan berhenti. Perintah dalam blok ekspresi tidak memerlukan statemen BEGIN..END. Karena kondisi akan di cek setelah proses, maka dalam bentuk ini minimal akan terjadi satu kali proses perintah dalam ekspresi.
4.      Kondisi
Kondisi merupakan suatu ekpresi yang mempunyai nilai kebenaran. Suatu kondisi biasanya akan terkait dengan relasi. Jika bukan variable Boolean, maka akan terdiri dari tiga bagian yaitu variable, relasi, dan konstanta. (Mis :  n>10, gaji>100000, dll)
Materi
  1. Ketik program berikut mendapatkan karkter dalam kompur dan kode ASCII nya.
USE WINCRT;
VAR NO:WORD;
BEGIN
     FOR NO:=1 TO 256 DO
     BEGIN
       WRITELN(‘Kode ASCII : ’,no,’ KARACTERNYA : ‘,CHAR(NO))
     END;
END.
  1. Ketikkan program berikut  dan eksekusi dan sempurnakan.
USES WINCRT;
VAR I:INTEGER;
     C,R,F,K:REAL;
BEGIN
     CLRSCR;
     WRITELN(‘PROGRAM KONVERSI SUHU);
     WRITELN(‘ ---------------------------------------------‘);
     WRITELN(‘Celcius    Reamur    Fahrenheit         Kelvin’);
     WRITELN(‘----------------------------------------------‘);
     FOR I:=1 TO 20 DO
     BEGIN
          C:=I;
          R:=4/5*C;
          F:=9/5*C+32;
          K:=C+273;
          WRITELN(C:15:2,R:15:2,F:15:2,K:15:2);
     END;

END.
  1. Buat program diatas dengan perulangan While..do
  2. Buat program diatas dengan Repeat…until.


Latihan
1.      Buatlah program untuk menghitung jumlah bilangan dari 1 sampai dengan 100.
2.      Buatlah program untuk menghitung rata-rata bilangan dari 50 sampai dengan 250.
3.      Buatlah table untuk konversi matauang Rupiah ke dolar dari 1000 rupiah sampai 100.000 rupiah jika kurs 1$ = Rp. 8.700,-
4.      Jika diketahu rumus standar deviasi s =  buatlah program untuk menghitung s dari data bilngan bulat positif kurang dari 200.

-End-
MODUL 6

PERCABANGAN


Tujuan
Mahasiswa dapat memahami konsep percabangan/pengambilan keputusan
Mahasiswa dapat mengimplementasikan dalam program
Dasar Teori
1.      Struktur IF
Struktur ini akan bekerja berdasar kondisi yang terjadi saat program dieksekusi. Bentuk umum perintah ini adalah :
IF kondisi THEN statemen
Bentuk ini akan megerjakan blok perintah statemen jika kondisi bernilai benar. Tetapi jika kondisi bernilai salah maka tidak ada perintah yang dikerjakan. Sedangkan untuk bentuk :
IF kondisi THEN statemen1 ELSE statemen2
Akan mengerjakan statemen1 jika kondisi benar dan akan mengerjakan statemen2 jika kondisi salah.
Untuk struktur ini sangat dimungkinkan juga membentuk struktur IF yang bersusun. Berarti dalam blok statemen juga berisi struktur IF juga.
2.      Struktur CASE
Struktur CASE merupakan struktur percabangan dengan banyak pilihan. Bentuk umum struktur ini adalah :
CASE variable OF
Kasus1: statemen1;
Kasus2: statemen2;
Kasus3: statemen3;
.
.
kasusN: statemenN;
END;
Atau bentuk :
CASE variable OF
Kasus1: statemen1;
Kasus2: statemen2;
Kasus3: statemen3;
.
.
kasusN: statemenN;
ELSE
            Statemen;
END;
Dalam blok perintah ini variable akan mempunyai banyak kemungkinan (kasus) yang dinyatakan dalam kasus1,kasus2,…,kasusN. Jika kasus1 yang terjadi maka akan dikerjakan blok statemen1, jika kasus2 yang terjadi maka statemen2 yang akan dikerjakan dan seterusnya. Sedangkan jika semua kasus yang diberikan tidak ada yang terjadi maka akan dikerjakan statemen dibawah perintah ELSE, jika perintah ini diberikan. Variabel yang digunakan pada acuan kasus harus bertipe ordinal.
Materi
  1. Tulis program berikut dan lengkapi sehingga dapat dieksekusi
USES WINCRT;
VAR NILAI:INTEGER;
BEGIN
     CLRSCR;
     WRITE(‘Masukkan nilai awal :’); readln(nilai);
     If (nilai>10) then nilai:=5
     Else nilai:=15;
     Writeln(‘Nilai Akhir =’,nilai);
END.
  1. Untuk program diatas tambahkan pada blok, kejadia jika nilai=0 maka nilai di set menjadi 0 juga.
  2. Ketik program berikut dan beri ulasan terkait dengan kemungkinan nya.
Uses wincrt;
Var hari:byte;
Begin
     Clrscr;
     Writeln(‘Program konversi nama hari ‘);
     Write(‘Masukkan urutan hari (1..7) :’);
readln(hari);
     Case hari of
     1:writeln(‘Minggu ‘);
     2:writeln(‘Senin’);
     3:writeln(‘Selasa’);
     4:writeln(‘Rabu’);
     5:writeln(‘Kamis);
     6:writeln(‘Jumat’);
     7:writeln(‘Sabtu’);
     end;
End.
  1. Untuk program diatas (no 3), lengkapi dengan perulangan sehingga setiap kali selesai mencetak hari, akan ada pertanyaan ‘Apakah akan konversi lagi ? (Y/N).’

Latihan
  1. Buatlah program untuk membuat table konversi nilai skala 100, jika diketahu table konversinya sbb :
Nilai angka
Nilai huruf
86 – 100
A
65 – 85
B
36 - 64
C
16 – 35
D
0 – 15
E

  1. Buatlah suatu program untuk menghitung jumlah bilangan bulat dan bilangan ganjil dari 1 sampai dengan 100.
  2. Buatlah program untuk mengkonversi urutan bulan menjadi nama bulan!
  3. Buatlah program untuk menghitung jumlah satuan, puluhan, ratusan, dan ribuan jika diketahu masukan besarnya angka.

-End-



MODUL 7

PROSEDUR



Tujuan
Mahasiswa dapat memahami konsep prosedure
Mahasiswa dapat mengimplementasikan dalam program
Mahasiswa dapat memahami konsep variabel global dan local
Mahasiswa dapat memahami konsep parameter formal dan actual dalam prosedur
Mahasiswa dapat memahami konsep melewatkan parameter dengan nilai dan  dengan acuan pada prosedur.
Dasar Teori
1.      Prosedur dapat dikatakan suatu program yang kecil yang biasa disebut sub-program. Suatu prosedur lebih ‘menekankan’ pada proses daripada pada hasil. Suatu prosedur dapat dipanggil berkali-kali dari program atau dari prosedur yang lain. Setiap prosedur dapat memanggil prosedur lain yang telah didefinisikan.
2.      Suatu prosedur biasanya akan didefinisikan pada bagian kepala program, bentuk umumnya adalah sbb:
procedure identifier
      <bagian deklarasi>
begin
      statemen-statemen
end;

atau dengan menggunakan parameter formal sbb:

procedure identifier ( parameters:type_data );
      <bagian deklarasi>
begin
      statemen-statemen
end;
3.      Suatu variable dikatakan variabel global jika variable tersebut dikenal pada seluruh program. Sebuah variable global dideklarasikan diluar prosedur/fungsi.
4.      Suatu variable dikatakan variable local jika hanya dikenali pada sutu prosedur/fungsi. Suatu variable yang dideklarasikan pada sutu prosedur akan menjadi variable local.
5.      Nama variable local dimungkinkan sama dengan variable global, tetapi saat kontrol program berada diluar prosedur/fungsi yang mendeklarasikan, maka yang akan dikenali adalah variable globalnya.
6.      Parameter formal adalah parameter yang ditulis pada pendeklarasian prosedur/fungsi. Sedangkan parameter actual adalah parameter yang diberikan saat fungsi atau prosedur dipanggil.
7.      Parameter dengan nilai adalah parameter formal yang hanya mengambil nilai dari parameter actual yang bersesuaian. Sedangkan parameter dengan acuan adalah parameter formal yang jika nilainya mengalami perubahan maka nilai parameter aktualnya akan ikut berubah.
8.      Pendefinisian parameter dengan acuan didahului dengan kata vara yaitu :
Nama_prosedur(Var namaparameter:type_data)

Materi
1.      Ketiklah program berikut kemudian eksekusi, uraikan jalannya program :

 {kepala program utama}
program buat_prosedure   ;
uses wincrt;

var nama:string;

{prosedur satu}
procedure garis_satu;
begin
     writeln('------------------------------------------');
end;


{prosedur dua}
procedure garis_dua;
begin
     writeln('==============================================');
end;

{badan program utama}
begin
     clrscr;
     garis_satu;
     write('Masukkan Nama :');readln(nama);
     garis_dua;
     writeln;
     writeln;
     writeln('Hasil Program........');
     garis_satu;
     writeln('Hallo, selamat datang ',nama);
     garis_dua;

end.

2.      Ketik program berikut ini, kemudian beri analisa untuk kerja program.

uses wincrt;

var kalimat:string;
    model_cetak,i:word;

procedure buat_garis;
begin
     writeln('===============================================');
end;

procedure cetak_mendatar;
begin
    writeln(kalimat);
end;

procedure cetak_terbalik;
begin
     for i:=length(kalimat) downto 1 do
         write(kalimat[i]);
end;

procedure cetak_menurun;
begin
     for i:=1 to length(kalimat) do
         writeln(kalimat[i]);
end;

procedure cetak_menurun_terbalik;
begin
     for i:=length(kalimat) downto 1 do
         writeln(kalimat[i]);
end;

{program utama}
begin
    clrscr;
    buat_garis;
    write('Masukkan sembarang kalimat : ');readln(kalimat);
    write('Ketik model cetak (1-biasa, 2-terbalik 3-menurun,4-menurun terbalik :');
    readln(model_cetak);
    buat_garis;
    writeln(' ');
    case model_cetak of
    1:begin
        buat_garis;
        cetak_mendatar;
        buat_garis;
      end;

    2:begin      
      buat_garis;
      cetak_terbalik;
      writeln;
      buat_garis
      end;

    3:begin
        buat_garis;
        cetak_menurun;
        buat_garis;
      end;

    4:begin
        buat_garis;
        cetak_menurun_terbalik;
        buat_garis;
      end;
    end;
end.
3.      Ketikkan program berikut kemudian modifikasi variable-variabel yang ada :

uses wincrt;
var k,l,r:real;

procedure keliling(jari2:real);
begin
     k:=2*(22/7)*jari2;
end;

procedure luas(jari2:real);
begin
     l:=(22/7)*jari2*jari2;
end;

begin
    clrscr;
    write('Masukkan jari-jari lingkaran : ');
    readln(r);

    luas(r);
    keliling(r);

    writeln('Keling lingkaran tersebut adalah : ',k:9:4);
    writeln('Luas lingkaran tersebut adalah   : ',l:9:4);

4.      Ketikkan program berikut dan perhatikan perubahan isi variable-variabelnya, apakah yang saudara simpulkan ?

uses wincrt;
var data:integer;

{prosedur dengan pelewatan parameter dengan nilai}
procedure prosedur1(par1:integer);
var a:integer;
begin
     a:=2;
     writeln('-----------di prosedur1-------------') ;
     writeln('Isi dari parameter par1(data) =',par1);
     writeln('Isi dari variabel a     =',a);
     par1:=par1+a;
     writeln('Isi parameter par1(data) sekarang =',par1);
     writeln('------------------------------------');

end;

{prosedur dengan pelewatan parameter dengan acuan}
procedure prosedur2(var par2:integer);
var b:integer;
begin
      b:=3;
     writeln('-----------di prosedur2-------------');
     writeln('Isi dari parameter par2(data) =',par2);
     writeln('Isi dari variabel a     =',b);
     par2:=par2*b;
     writeln('Isi variabel par2(data) sekarang =',par2);
     writeln('------------------------------------');
    
end;
begin
     data:=5;
     writeln('-------------di program utama------------');
     writeln('Isi variabel data =',data);
     prosedur1(data);
     writeln('-----------------------------------------');
     writeln('---------di prog utama lagi--------------');
     writeln('Isi variabel data =',data);
     writeln('-----------------------------------------');
     prosedur2(data);
      writeln('---------di prog utama lagi--------------');
     writeln('Isi variabel data =',data);
     writeln('-----------------------------------------');
end.
 
Latihan
1.      Buatlah suatu program untuk menyatakan proses menghitung dan menampilkan hasil luas persegi panjang dengan menggunakan prosedur. Prosedur berupa proses menghitung luas dan proses menampilkannya, sedang program utama berisi proses mengisi variabel panjang dan lebar.
2.      Buatlah sebuah program untuk menhitung keliling bentuk-bentuk bidang datar yaitu : persegi, lingkaran, dan segitiga siku-siku. Prosedur berisi proses menghitung keliling (Petunjuk : Rumus keliling untuk bentuk bidang datar tersebut berturut-turut 2(p+l), 2Õr, a+t+().
3.      Buatlah program yang melibatkan variable local dan global serta prosedur.
4.      Buatlah program yang mempunyai parameter formal dan actual dalam prosedur
5.      Buatlah program yang melibatkan parameter dengan nilai.
6.      Buatlah program yang melibatkan parameter dengan acuan.

-End-
MODUL 8

FUNGSI


Tujuan
Mahasiswa dapat memahami konsep fungsi dalam pascal
Mahasiswa dapat mengimplementasikan fungsi dalam program
Mahasiswa dapat memahami konsep variabel global dan local
Mahasiswa dapat memahami konsep parameter formal dan actual dalam fungsi
Mahasiswa dapat memahami konsep melewatkan parameter dengan nilai dan  dengan acuan pada fungsi.

Dasar Teori
1.      Suatu fungsi pada dasarnya adalah sebuah prosedur juga. Yang membedakan fungsi dengan prosedur adalah bahwa sebuah fungsi akan menghasilkan sebuah nilai, sedangkan prosedur tidak. Nilai ini disimpan dalam sebuah variable dengan nama nama fungsinya. Dengan demikian hasil sebuah fungsi akan dapat disimpan kedalam sebuah variable.
2.      Untuk mendeklarasikan suatu fungsi pada dasarnya sama dengan mendeklarasikan sebuah prosedur, yaitu :

function ident : type;
      <bagian deklarasi>
begin
      statemen-statemen
end;

atau dengan menggunakan parameter formal sbb:

 function ident (parameters) : type;

      <bagian deklarasi>
begin
      statemen-statemen
end;

3.      Seperti halnya sebuah prosedur, cara pelewatan parameter pada fungsi dilakukan secara sama.
4.      Fungsi dan prosedur bawaan
  • Length – suatu fungsi untuk mencari panjang string
Bentuk : length(str):integer
            Str = string yang akan dicari panjangnya.
 
Materi
1.      Ketiklah program berikut kemudian berikan analisa program tersebut.

uses wincrt;
var jari2:real;

function keliling(r:real):real;
begin
      keliling:=2*(22/7)*r;
end;


function Luas(r:real):real;

begin
     Luas:=(22/7)*r*r;
end;
begin
     write('Masukkan jari-jari lingkaran = ');readln(jari2);
     writeln(' ');
     writeln('-----------------------------------------');
     writeln('Keliling lingkaran tersbut adalah =',keliling(jari2):7:3);
     writeln('Luas lingkaran tersebut adalah    =',luas(jari2):7:3);
     writeln('-----------------------------------------');

end.
2.      Perhatikan program berikut, ketik kemudian eksekusi perhatikan hasilnya :

uses wincrt;
var bil1:real;

function fungsi1(par:real):real;
begin
      fungsi1:=par*par;
      par:=par+1;
end;


function fungsi2(par:real):real;

begin
     fungsi2:=par+par;
     par:=par-1;
end;
begin
     write('Masukkan sembarang bilangan = ');readln(bil1);
     writeln(' ');
     writeln('---------belum memanggil fungsi-----------');
     writeln('Isi variabel bil1 =',bil1:5:2);
     writeln('Hasil fungsi1    =',fungsi1(bil1):5:2);
     writeln('--------setelah memanggil fungsi1---------');
     writeln('Isi variabel bil1 =',bil1:5:2);
     writeln('Hasil fungsi2     =',fungsi2(bil1):5:2);
     writeln('setelah memanggil fungsi2 ----------------');
     writeln('Isi variabel bil1 =',bil1:5:2);
     writeln('-----------------------------------------');

end.
3.      Lewatkan parameter para fungsi program diatas dengan referensi, ambil kesimpulan saudara!
4.      Ketikkan program berikut, saudara perhatikan pemanggilan fungsi atas fungsinya, eksekusi program tersebut. Kemudian ubah letak deklarasi fungsinya, ambil kesimpulan

uses wincrt;
var jarak:real;

function jumlah_bensin(par1:real):real;
begin
      jumlah_bensin:=par1/40;
end;


function jumlah_uang(par2:real):real;

begin
     jumlah_uang:=jumlah_bensin(par2)*1850;
end;
begin
     write('Masukkan jarak yang akan ditempuh = ');readln(jarak);
     writeln(' ');
     writeln('-----------------------------------------');
     writeln('Jumlah bensin yang diperlukan =',jumlah_bensin(jarak):7:3);
     writeln('Jumlah uang yang diperlukan   =',jumlah_uang(jarak):7:3);
     writeln('-----------------------------------------');

end.

Latihan
1.      Buatlah program yang menggunakan fungsi dengan parameter yang dilewatkan dengan nilai.
2.      Buatlah program yang menggunakan fungsi dengan parameter yang dilewatkan dengan acuan!
3.      Buatlah program untuk menghitung luas jajaran genjang. Nyatakan proses menghitung luasnya dengan menggunakan fungsi berparameter yang dilewatkan dengan nilai. (rumus Luas=alas x tinggi).
4.      Ubahlah program diatas dengan melewatkan parameter dengan acuan kemudian gunakan.

-End-
MODUL 9

REKURSI


Tujuan
Mahasiswa memahami tentang proses rekursi
Mahasiswa dapat mengimplementasikan dalam program
Dasar Teori
Rekursi adalah suatu proses yang dapat memanggil dirinya sendiri. Sebetulnya proses rekursi adalah proses pemanggilan fungsi oleh fungsi. Pada proses rekursi kebetulan yang dipanggil mempunyai nama sama.
Materi
1.      Jika diketahui rumus factorial n!=1.2.3.4.5….n, maka untuk menyelesaikannya dapat dilakukan proses rekursi. Ketik dan perhatikan program menghitung faktorial berkut
uses wincrt;
var n,hasil:integer;

function faktorial(n:integer):integer;
begin
     if n=0 then faktorial:=1 else
     faktorial:=n*faktorial(n-1);
end;

begin
     write('Masukkan sembarang bilangan buat n = ');readln(n);
     writeln(' ');
     writeln('-----------------------------------------');
     writeln('Faktorial dari bilangan tersebut adalah :');
     hasil:=faktorial(n);
     writeln('   n! = ',hasil);
     writeln('-----------------------------------------');
end.
2.      Berikut adalah program menghitung bilangan fibonacci. Bilangan ini adalah suatu deret bilangan yang diperoleh dengan menjumlahkan dua elemn terakhir yaitu deret : 1 1 2 3 5 8 13 21 34…..

Uses wincrt;
Var n,hasil:integer;
Function fibonacci(n:integer):integer;
Begin
   If (n=1) or (n=2) then fibonacci:=1 else
   Fibonacci:=fibonacci(n-1)*fibonacci(n-2);
End;
Begin
   Write(‘Bilangan fibonaci ke : ‘);readln(n)
   Hasil:=fibonacci(n);
   Writeln(‘Bilangan fibonacci ke  ’,n,’ = ‘,hasil);
End.

3.      Perhatikan proses rekursi berikut ini, setelah saudara mengesekusinya.

uses wincrt;
var x,hasil:real;
    y:integer;
function pangkat(x:real;y:integer):real;
begin
    if y=0 then
       pangkat:=1
    else begin
       if y>0 then
          pangkat:=x*pangkat(x,y-1)
       else
          if y<0 then
             pangkat:=1/x*pangkat(x,y+1);
    end;
   
end;

begin
    writeln('Menhitung nilai x^y dengan x bilangan real dan y bilangan bulat');
    write('Nilai x = ');readln(x);
    write('Nilai y = ');readln(y);
    hasil:=pangkat(x,y);
    writeln('Nilai x^y = ',hasil:10:4);
end.

Latihan
1.      Buatlah fungsi yang mengandung proses rekursi!
2.      Buatlah program untuk menghitung banyaknya kombinasi dari dua buah bilangan (rumus combinasi dari m,n adalah m!/(m-n)!
3.      Buatlah program untuk menampilkan kemungkinan-kemungkinan pasangan berurutan huruf A,B,C,D.( Petunjuk : kemungkinan pasangan berurutan dari 4 huruf tersebut adalah ada 4!)
4.      Tampilkan kombinasi dua huruf dari huruf A,B,C,D yang mungkin. (Petunjuk : banyak pasangan yang mungkin adalah kombinasi bilangan 4 dan 2)
-End-



DAFTAR ISI



Petunjuk Penggunaan dan Pelaporan  ………………………………. 37
Daftar Isi  …………………………………………………………………….  37
1.     Tipe Data Set  ………………………………………………………….  38
2.     Tipe Data Array  ……………………………………………………….  43
3.     Tipe Data Record  …………………………………………………….  48
4.     Tipe Data File/Berkas  …………………………………………………  53
5.     Tipe Data Pointer  ……………………………………………………..  61
6.     Unit ……….………………………………………………………………  64



MODUL 10

TIPE DATA SET


Tujuan
Mahasiswa memahami tentang tipe data set
Mahasiswa dapat mengimplementasikan dalam program
Dasar Teori
1.      Data set adalah suatu data yang berupa kumpulan obyek yang mempunyai tipe sama dan urutan penulisannya tidak diperhatikan.
2.      Untuk membuat data jenis set digunakan deklarasi tipe data yaitu :
Type pengenal = set of  tipe_data
atau dalam deklarasi variabelnya :
 Var pengenal = set of  tipe_data

Pengenal adalah nama pengenal yang akan dinyatakan sebagai tipe himpunan.
Tipe_data adalah type data dari anggota himpunan
3.      Type data dari anggota himpunan harus memenuhi syarat sbb:
    • Tidak boleh bertipe data terstruktur
    • Tidak boleh bertipe real
    • Dapat berupa tipe enumerated, subrange dari integer, tupe char, atau subrange dari char atau boolean.
4.      Operasi yang dapat dilakukan antara dua data set adalah :
Operator
Guna
Contoh
+
Union atau sum
[1,2,3,4] + [3,4,5] = [1,2,3,4,5]
*
Interseksi atau product
[1,2,3,4] * [3,4,5,6,7,8] = [3,4]
-
Set difference atau selisih
[1,2,3,4] - [3,4,5,6,7,8] = [1,2]

5.      Untuk operator relasional, disediakan operasi sebagai berikut :
Operator
Guna
Contoh
=
Mengetes kesamaan dua himpunan
[1,2,3,4] = [3,4,5,6,7,8]
<> 
Mengetes ketidaksamaan dua himpunan
[1,2,3,4]  <> [3,4,5,6,7,8]

Operator
Guna
Contoh
>=
Mengetes apakah operand kedua merupakan bagian dari operand pertama.
[1,2,3,4]  >= [3,4,5,6,7,8]
<=
Mengetes apakah operand pertama merupakan bagian dari operand kedua
[1,2,3,4]  <= [3,4,5,6,7,8]
In
Mengetes keanggotaan suatu himpunan.
 1 In [1,2,3,4]

6.      Perintah perintah
  • Val – sebuah prosedur untuk mengubah teks angka menjadi angka matematis.
Bentuk : val (string,var1,var2)
            String = teks angka (angka dengan tipe string)
            Var1 = variable jenis integer/real untuk menampung hasil
             Var2 = variable jenis integer untuk menampung kesalahan saat konversi.
  • Str – suatu prosedur untuk mengubah nilai angka matematis menjadi jenis string
Bentuk :   str(value,teks)
            Value = angka yang akan di stringkan
            Teks = hasil konversi yang berupa angka dengan jenis string
  • Upcase – suatu fungsi yang mengubah huruf kecil menjadi huruf besar
Bentuk : upcase(param):char
            Param = data bertipe character
  • Insert – suatu prosedur untuk menyisipkan suatu substring ke suatu string pada posisi yang ditentukan.
Bentuk : insert(substring,var1,var2)
            Substring = string yang akan disisipkan
            Var1 = variable ber jenis string yang akan disisipi
            Var2 = variable jenis integer yang menunjukkan posisi penyisipan
Hasil yang dikenali hanyalah 255 carakter pertama, selebihnya dibuang.
  • Concat – suatu fungsi untuk menggabung string, hasil fungsinya adalah string hasil gabungan.
Bentuk : concat(str1,str2,…):string
            Str1, str2 = string-string yang akan digabung
Hasil yang dikenali hanyalah 255 carakter pertama, selebihnya dibuang.
  • Copy – Suatu fungsi yang berguna untuk mengcopy sebagian atau seluruhnya dari suatu string.
Bentuk : copy(str, var1,var2):string
            Str = string yang akan disalin
Var1 = variable integer yang menyatakan posisi awal substring yang akan disalin
Var2 = variable integer yang menyatakan panjang string yang akan disalin
  • Delete – suatu prosedur untuk menghapus substring dari suatu string
Bentuk : delete(str,var1,var2)
Str = variable string yang akan dihapus sebagian
Var1 = variable integer yang menyatakan posisi awal substring yang akan dihapus.
Var2 = variable integer yang menyatakan panjang string yang akan dihapus.
  • Post – suatu fungsi untuk mencari posisi suatu substring dari suatu string.
Bentuk :post(str1,str2):byte
            Str1 = string yang akan dicari
            Str2 = string sumber
Materi
1.      Cobalah program berikut dan perhatikan definisi himpunannya :
uses wincrt;
var A,B,C:set of 1..10;
begin
     A:=[1,2,3,4];
     B:=[3,4,5,6];
     C:=[2,3];
     if C<=A then writeln('C berada dalam A') else writeln('C tidak berada dalam A');
     if C<=B then Writeln('C berada dalam B') else
      begin
           if C>=B then
              writeln('B berada dalam C')
           else   
              writeln('C tidak berada dalam B');
     end;
end.
2.      Ketik program berikut dan perhatikan operasi yang dilakukan :
uses wincrt;
type type1=set of char;
var A,B:type1;
    jawab:char;
begin
     A:=['a','i','u','e','o'];
     B:=['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'];
     write('Sembarang Charakter :');readln(jawab);
     if jawab in A then writeln('Huruf vokal...')else
       begin
              if jawab in B then writeln('Huruf mati....')else
                  writeln('Charakter khusus..')
      end;
end.
3.      Coba dan perhatikan program berikut .
uses wincrt;
type type1=set of 1..100;
var A,B:type1;
    awal,akhir:integer;
begin
    write('Masukkan awal himpunan  A:');readln(awal);
    write('Masukkan akhir himpunan A:');readln(akhir);
    if awal<= akhir then A:=[awal..akhir];
    write('Masukkan awal himpunan  B:');readln(awal);
    write('Masukkan akhir himpunan B:');readln(akhir);
    if awal<=akhir then B:=[awal..akhir];
    if A<=B then writeln('A bagian dari B');
    if A>=B then writeln('B bagian dari A');
    if A=B then writeln('A sama dengan B');
    if A<>B then writeln('A tidak sama dengan B');
end.
Latihan
1.      Buatlah program yang menggunakan operasi gabungan, interseksi, dan set defference  himpunan
2.      Buatlah program untuk mengklasifikasikan macam-macam bentuk bidang datar. (Petunjuk : macam bidang datar adalah : segi empat, segitiga, lingkaran, dll )
3.      Buatlah program untuk mengklasifikasikan warna dengan menggunakan kode warna!!

-End-



MODUL 11

TIPE DATA ARRAY


Tujuan
Mahasiswa dapat memahami konsep data  jenis array
Mahasiswa dapat mengimplementasikan kedalam program data jenis array
Dasar Teori
1.      Array adalah jenis data terstruktur yang terdiri sejumlah komponen yang mempunyai jenis sama. Suatu array dalam pascal mempunyai sifat statis yaitu jumlah elemennya tetap. Secara matematis suatu array dinyatakan dengan bilangan berindeks sbb :
a1, a2,a3,a4,a5,…….,an
2.      Untuk membuat data jenis array dapat digunakan deklarasi array pada statemen type atau var, sbb :
Type nama = array[tipe_indeks] of tipe_data
Atau
Var  nama: array[tipe_indeks] of tipe_data

Nama = menyatakan tipe data yang dibuat atau nama variable yang dibuat
Tipe_indeks = menyatakan indeks atau type indeks yang akan digunakan pada array. Tipe_indeks selalu digunakan jenis data subrange scalar atau tipe enumerated. Jadi jenis data untuk indeks ini dapat berjenis char, integer, atau Boolean.
Tipe_data= menyatakan tipe data yang akan disimpan dalam array, dapat berupa data bertipe standar atau jenis data yang didefinisikan sendiri pada statemen type.
3.      Jika deklarasi array hanya mempunyai satu indeks maka akan diperoleh array satu dimensi (dalam baris). Jika deklarasi array mempunyai dua indeks maka disebut array dimensi dua (dalam bidang) dan seterusnya.
4.      Deklarasi array berdimensi dua dapat dilakukan dengan sebagai berikut :
Nama_array=array[tipe_indek1,tipe_indek2] of tipe_data
5.      Untuk mengalamati array (mengakses) dapat dilakukan dengan menuliskan nama variable dengan diikuti indek dalam kurung tegak.
Nama_variabel[indek]
Materi
1.      Buatlah program berikut dan perhatikan cara pengisisna dan pencetakan variabel dengan jeni array.
uses wincrt;
var x:array[1..10] of integer;
    i:integer;
begin
     {Proses mengisi X}
     for i:=1 to 10 do
     begin
         x[i]:=i*i;
     end;
     {Proses menampilkan}
     for i:=1 to 10 do
     begin
         writeln('Isi variabel x ke ',i,' adalah :',x[i])
     end;
end.
2.      Ketiklah program berikut dan analisa kerjanya.
uses wincrt;
type jenis_matriks=array[1..7,1..5] of integer;
var y,x:jenis_matriks;
    i,j:integer;
begin
     {Proses mengisi X dan Y }
     for i:=1 to 7 do
     begin
       for j:=1 to 5 do
       begin
         x[i,j]:=i*i;
         Y[i,j]:=i+2;
       end;
     end;


     {Proses menampilkan}
     for i:=1 to 7 do
     begin
       for j:=1 to 5 do
       begin
           writeln('X[',i,',',j,'] = ',x[i,j])
       end;
       
     end;

     for i:=1 to 7 do
     begin
       for j:=1 to 5 do
       begin
           write('Y[',i,',',j,'] = ',Y[i,j])
       end;
       writeln;
     end;
end.
3.      Perhatikan operasi antara dua variebal jenis matriks berikut !
uses wincrt;
type jenis_matriks=array[1..4,1..4] of integer;
var A,B:jenis_matriks;
    i,j:integer;
begin
     {Proses mengisi B }
     for i:=1 to 4 do
     begin
       for j:=1 to 4 do
       begin
         write('B[',i,',',j,']=');readln(B[i,j]);
       end;
     end;
     {Proses menambah elemen2 B dengan 2 dimasukkan ke A}
     for i:=1 to 4 do
     begin
       for j:=1 to 4 do
       begin
         A[i,j]:=B[i,j]+2;
       end;
     end;
     {menampilkan B}
     writeln('Matriks B nya adalah =');
     for i:=1 to 4 do
     begin
       for j:=1 to 4 do
       begin
           write(B[i,j]);write('   ');
       end;
       writeln;
     end;
     {Proses menampilkan A}
     writeln('Matriks A nya adalah =');
     for i:=1 to 4 do
     begin
       for j:=1 to 4 do
       begin
           write(A[i,j]);write('   ');
       end;
       writeln;
     end;
end.
Latihan
  1. Buatlah program untuk menjumlahkan dua matriks dengan ukuran tertentu yang bisa dimasukkan saat runing program. (Petunjuk: c(h,j)=a(h,j)+b(h,j))
  2. Buatlah program untuk mengalikan dua matriks dengan kemampuan mengecek apakah matriks dapat dikalikan atau tidak. (Petunjuk : Dua matriks dapat dikalikan jika kolom matriks pertama sama dengan baris matriks yang kedua. Rumus : C(i,j)=åA(i,k)B(k,j) untuk semua harga k.
  3. Buatlah program konversi bilangan dssimal ke bilangan heksadesimal,oktal dan biner. (Petunjuk: gunakan prosedur umum dengan menggunakan konstanta array)

-End-
MODUL 12

TIPE DATA RECORD


Tujuan
Mahasiswa dapat memahami jenis data record
Mahasiswa dapat mengimplementasikan kedalam program
Dasar Teori
1.      Data record adalah data yang merupakan kumpulan field dengan tipe yang dapat berbeda-beda. Banyaknya recor dalam suatu data record ada yang tetap tetapi juga ada yang tidak tetap. Dengan demikian data record dapat menyimpan jenis data dengan tipe yang berbeda-beda.
2.      Untuk membuat data jenis record digunakan statemen sbb:
Type pengenal = record
            Field1:tipe1;
            Field2:tipe2;
            Field3:tipe3;
            ……….
            Fieldn:tipen;
End;
Pengenal = menyatakan nama tipe record yang dideklarasikan
Field1…fieldn = menyatakan nama-nama field yang digunakan untuk menyimpan data.
Tipe1….tipen = menyatakan tipe data yang akan disimpan dalam field yang bersangkutan. Tipe ini dapat berupa jenis record maupun jenis array.
3.      Untuk mengakses field dari data jenis record dilakukan dengan menuliskan nama variabel diikuti nama field dengan dirangka tanda titik (.).
Nama_variabel.namafield
4.      Selain bentuk dasar tersebut, type data record dapat dibuat dengan struktur field bervariasi. Jenis ini biasa disebut dengan varian record, dengan bentuk umum :
Type pengenal = record
            Field1:tipe1;
            Field2:tipe2;
            Field3:tipe3;
            ……….
            Fieldn:tipen;
            Case tag : tipe_tag  of
                        Label1: (field:tipe;
                                      …………
                                       field :tipe);
                        label2 : (field : tipe;
                                       …………
                                       field : tipe);
End;
           
            Tag = pemilih kasus
            Tipe_tag = tipe data pemilih kasus
            Label1,label2,...... = nama label yang menunjukkan kasus yang dipilih
           
Materi
1.      Ketik program berikut dan perhatikan deklarasi record nya.
uses wincrt;
 type tipe_mhs=record
          nama:string[20];
          jurusan:string[15];
          IPK:real;
      end;
 var mahasiswa:tipe_mhs;
     i:integer;
 begin
     {Mengisis data record sebanyak 5 dan menampilkan}
     for i:=1 to 5 do
     begin
         write('Masukkan Nama   :');readln(mahasiswa.nama);
         write('         Jurusan:');readln(mahasiswa.jurusan);
         write('         IPK    :');readln(mahasiswa.ipk);
         writeln('---------------------------------');
         writeln('Nama Mahasiswa  :',mahasiswa.nama);
         writeln('     Jurusan    :',mahasiswa.jurusan);
         writeln(' IP Komulatif   :',mahasiswa.IPK);
         writeln('----------------------------------');
     end;
end.
2.      Perhatikan program berikut dan analisa cara deklarasinya.
uses wincrt;
 type tipe_buku=record
          judul:string[20];
          pengarang:string[15];
          penerbit:string[20];
          jumlah:integer;
      end;
 var data_buku:array[1..5] of tipe_buku;
     i:integer;
 begin
     {Mengisis data record sebanyak 5 }
     for i:=1 to 5 do
     begin
         writeln('---------------------------------');
         writeln('            Data ke :',i);
         write('Masukkan Judul Nuku   :');readln(data_buku[i].judul);
         write('         Pengarang    :');
         readln(data_buku[i].pengarang);
         write('         Penerbit     :');
         readln(data_buku[i].penerbit);
         write('         Jumlah       :');readln(data_buku[i].jumlah);
         writeln('----------------------------------');
     end;
    
     {Mengisis data record sebanyak 5 }
     for i:=1 to 5 do
     begin
         writeln('---------------------------------');
         writeln('       Isi Data ke  :',i);
         writeln('         Judul Nuku   :',data_buku[i].judul);
         writeln('         Pengarang    :',data_buku[i].pengarang);
         writeln('         Penerbit     :',data_buku[i].penerbit);
         writeln('         Jumlah       :',data_buku[i].jumlah);
         writeln('----------------------------------');
     end;
 end.
3.      Perhatikan program berikut dan cobalah !

uses wincrt;
type tanggal=record
        tg:1..31;
        bl:1..12;
        th:1900..2020;
     end;
    jenis1=record
        nama:string[20];
        alamat:string[30];
        tgl_lahir:tanggal;
     end;
var mhs:jenis1;
    i:integer;
begin
  for i:=1 to 5 do
  begin
      write  ('Masukkan Nama         :');readln(mhs.nama);
      write  ('         Alamat       :');readln(mhs.alamat);
      writeln('         Tanggal Lahirnya');
      write  ('             Tanggal  :');readln(mhs.tgl_lahir.tg);
      write  ('             Bulan    :');readln(mhs.tgl_lahir.bl);
      write  ('             Tahun    :');readln(mhs.tgl_lahir.th);

      writeln('========================================');
      writeln('Nama          :',mhs.nama);
      writeln('Alamat        :',mhs.alamat);
      writeln('Tanggal Lahir :',mhs.tgl_lahir.tg,'/',mhs.tgl_lahir.bl,'/',mhs.tgl_lahir.th);
      writeln('========================================');
       
  end;
end.

Latihan
  1. Buatlah program untuk merekam data pegawai yang mempunyai identitas :
Nama, Alamat, Pangkat, Golongan, Gaji Pokok. Program berjalan dengan jumlah data sesuai dengan keinginan pengguna. (Petunjuk: gunakan array untuk menentukan maksimal data yang akan ditampung).
  1. Buatlah program untuk memasukkan data yang memuat data dengan jenis record yang bertingkat!
  2. Buatlah program untuk menyimpan data kedalam array dengan data berjenis varian record, kemudian dicetak!!

-End-
MODUL 13

TIPE DATA FILE/BERKAS


Tujuan
Mahasiswa dapat memahami jenis data file
Mahasiswa dapat membuat serta menggunakan data jenis file dalam program
Dasar Teori
1.      Tipe data file adalah jenis data yang dapat disimpan kedalam media simpan sekunder
2.      Di dalam pascal dikenal tiga macam data file yaitu : File bertipe, file tidak bertipe, dan file text. Untuk bekerja dengan file-file tersebut dilakukan langkah-langkah inisialisasi, buka, modifikasi, tutup.
3.      Variabel yang digunakan untuk menyimpan nama file bertipe dideklarasikan dengan perintah :
Type <Nama_type> = file of <tipe_data>
Var <nama_var >:<nama_type>
Atau
Var <nama_var>:file of <tipe_data>
4.      Variabel yang digunakan untuk menyimpan nama file tidak bertipe dideklarasikan dengan perintah :
Var <nama_var>:file
5.      Variabel yang digunakan untuk menyimpan nama file teks dideklarasikan dengan perintah :
Var <nama_var>:text
6.      Untuk memproses file bertipe dapat dilakukan dengan tahapan-tahapan sebagai berikut :
f        Nyatakan nama file kedalam suatu nama variabel dengan perintah
Assign(nama_var_file,str_nama_file)
f         Buatlah file baru dengan perintah Rewrite(nama_var_file), atau buka file yang sudah ada dengan perintah Reset(nama_var_file).
f         Tambahkan isi file dengan perintah write(nama_var_file,nama_var_data), baca isi file dengan perintah read(nama_var_file,nama_var_data).
f         Tutup file jika telah selesai menggunakan dengan perintah
Close(nama_var_file).
7.      Untuk memproses file tidak bertipe dapat dilakukan dengan tahapan-tahapan sebagai berikut :
f        Nyatakan nama file kedalam suatu nama variabel dengan perintah
Assign(nama_var_file,str_nama_file)
f         Buatlah file baru dengan perintah Rewrite(nama_var_file,n), atau buka file yang sudah ada dengan perintah Reset(nama_var_file,n).
f         Modifikasi isi file dengan perintah baca dan tulis sebagai berikut :
BlockWrite(nama_var_file,buffer,size)
BlockRead(nama_var_file,buffer,size)
f         Tutup file jika telah selesai menggunakan dengan perintah
Close(nama_var_file).
8.      Untuk memproses file text dapat dilakukan dengan tahapan-tahapan sebagai berikut :
f        Nyatakan nama file kedalam suatu nama variabel dengan perintah
Assign(nama_var_file,str_nama_file)
f         Buatlah file baru dengan perintah Rewrite(nama_var_file,n), atau buka file yang sudah ada dengan perintah Reset(nama_var_file,n).
f         Modifikasi isi file dengan perintah baca dan tulis sebagai berikut :
Write(nama_var_file,text)
WriteLn(nama_var_file,text)
Read(nama_var_file,text)
ReadLn(nama_var_file,text)
f         Tutup file jika telah selesai menggunakan dengan perintah
Close(nama_var_file).
9.      Fungsi-fungsi dan prosedur-prosedur pendukung operasi file diantaranya :
f         Assign(Var,String) – prosedur yang berguna untuk mengasosiasikan suatu nama file external dengan suatu variabel file.
Var = variabel file bertipe sembarang
String = Nama file bertipe string
Catatan : tidak dapat digunakan untuk file yang telah dibuka
f         Reset(Var) – prosedur yang berguna untuk membuka file yang telah ada
Var = Variabel file yang telah di assign
Catatan : File harus telah dibuat sebelumnya. Jika file dalam kedaan terbuka maka akan ditutup dahulu kemudian dibuka lagi. Jika filenya berjenis teks maka hanya akan dapat dibaca saja.
f         Rewrite(Var) – prosedur untuk membuat file baru kemudian membukanya.
Var = variabel file yang telah di assign sebelumnya
Catatan: Jika nama file yang diberikan telah ada maka file tersebut akan dihapus kemudian dibuat yang baru. Jika file teks maka setelah prosedur ini bersifat read only (hanya dapat dibaca).
f         Append(F) – prosedur yang berguna membuka file teks untuk penambahan data.
F = Variabel file teks yang akan ditambah datanya.
f         Read(Var,Var1) dan ReadLn(Var,Var1) – prosedur untuk membaca isi file
Var = Variabel file yang telah di assign sebelumnya
Var1 = Variabel untuk menampung hasil pembacaan
Catatan: ReadLn digunakan untuk file teks
f         Write(Var,Param) dan WriteLn(Var,Param) – prosedur yang berguna untuk menulis kedalam file
Var = Variabel file yang telah di assign sebelumnya
Var1 = Variabel untuk menampung data yang akan dituliskan
Catatan: Writeln digunakan untuk file teks
f         BlockRead(F,Buff,Count) dan BlockWrite(F,Buff,Count) – prosedur untuk menulis dan membaca isi file tak bertipe.
F = Variabel file tak bertipe
Buff = buffer untuk menampung data yang dibaca atau akan ditulis kedalam file.
Count = Besar pembacaan atau penulisan
f         Seek(F,Pos) – prosedur untuk menggerakkan penunjuk file ke posisi tertentu dalam file
F = Variabel file
Pos = posisi yang dikehendaki
f         FilePos(F):LongInt –  fungsi yang mengembalikan posisi penunjuk file
F = Variabel file
f         FileSize(F):LongInt – fungsi yang mengembalikan ukuran file
F = Variabel file
f         Eof(F):Boolean – fungsi yang mengembalikan status end of file
F =  Variabel file
f         Eoln(F):Boolean – fungsi yang mengembalikan status apakah end of line dalam file text.
F = Variabel file text
f         Erase(Var) – prosedur untuk menghapus file
Var = Variabel file yang akan dihapus
f         Close(Var) – prosedur untuk menutup file
Var = Variabel file yang telah di assign sebelumnya
Materi
1.      Ketikan program berikut kemudian modifikasi seperlunya untuk percobaan.
uses wincrt;
type TMahasiswa=record
     Nama:string[25];
     NIM:string[4];
     Progdi:(Ilkom, MI);
     end;
     TmhsFile= file of TMahasiswa;
var Mhs:TMahasiswa;
    MhsFile:TmhsFile;

begin
    clrscr;
    Assign(MhsFile,'Mhs.dat');
    rewrite(MhsFile);
    Mhs.Nama:='Vera Indrayati';
    Mhs.NIM :='2001' ;
    Mhs.Progdi:=Ilkom;
    write(MhsFile,Mhs);
    Reset(MhsFile);
    Read(MhsFile,Mhs);
    Writeln('Mahasiswa yang telah tersimpan adalah :');
    writeln('Nama  :',Mhs.Nama);
    writeln('N I M :',Mhs.NIM);
    Write('Progdi :');
    if mhs.Progdi =Ilkom then writeln('Ilmu Komputer')
    else writeln('Manajemen Informatika');
    close(MhsFile);
    Erase(MhsFile);
    repeat until keypressed;
end.
2.      Cobalah program berikut ini
uses wincrt;
type TMahasiswa=record
     Nama:string[25];
     NIM:string[4];
     Progdi:(Ilkom, MI);
     end;
     TmhsFile= file of TMahasiswa;
var Mhs:TMahasiswa;
    num:byte;
    F:file;

begin
    clrscr;
    randomize;
    Assign(F,'Mhs.dat');
    rewrite(F,1);
    Mhs.Nama:='Vera Indrayati';
    Mhs.NIM :='2001' ;
    Mhs.Progdi:=Ilkom;
    num:=random(256);
    Blockwrite(F,Mhs,sizeof(TMahasiswa));
    BlockWrite(F,Num,1);
    Reset(F,1);
    BlockRead(F,Mhs,sizeof(TMahasiswa));
    BlockRead(F,Num,1);
    Writeln('Mahasiswa yang telah tersimpan adalah :');
    writeln('Nama  :',Mhs.Nama);
    writeln('N I M :',Mhs.NIM);
    Write('Progdi :');
    if mhs.Progdi =Ilkom then writeln('Ilmu Komputer')
    else writeln('Manajemen Informatika');
    writeln('dan Bilangan random ',num);
    close(F);
    Erase(F);
    repeat until keypressed;
end.
3.      Modifikasi program berikut setelah selesai di run !
uses wincrt;
uses wincrt;
type tmahasiswa=record
     nama:string[25];
     nim:string[4];
     progdi:(ilkom, mi);
     end;
     tmhsfile= file of tmahasiswa;
var mhs:tmahasiswa;
    num:byte;
    f:text;
    baris:string;
    dec:real;
begin
    clrscr;
    randomize;
    assign(f,'mhs.txt');
    rewrite(f);
    mhs.nama:='vera indrayati';
    mhs.nim :='2001' ;
    mhs.progdi:=ilkom;
    num:=random(256);
    writeln(f,'1. data mahasiswa :');
    writeln(f,'nama   :',mhs.nama);
    writeln(f,'n i m  :',mhs.nim);
    write(f,'progdi :');
    if mhs.progdi=ilkom then writeln(f,'ilmu komputer')
    else writeln(f,'manajemen informatika');
    write(f,'2. data acak bertipe byte :');writeln(f,num);
    reset(f);
    writeln('data yang telah disimpan adalah :');
    while not eof(f) do
    begin
        readln(f,baris);
        writeln(baris);
    end;
    append(f);
    mhs.nama:='elvi yuniar';
    mhs.nim:='2004';
    mhs.progdi:=mi;
    dec:=random;
    writeln(f,'3. data mahasiswa :');
    writeln(f,'nama   :',mhs.nama);
    writeln(f,'n i m  :',mhs.nim);
    write(f,'progdi :');
    if mhs.progdi=ilkom then writeln(f,'ilmu komputer')
    else writeln(f,'manajemen informatika');
    write(f,'4. data acak bertipe real :');writeln(f,dec:4:2);
    reset(f);
    writeln('data yang telah prosedur append dipanggil adalah :');
    while not eof(f) do
    begin
        readln(f,baris);
        writeln(baris);
    end;
   close(f);
    erase(f);
    repeat until keypressed;
end.

Latihan
1.      Buatlah suatu program untuk mengelola data buku bertipe record dengan field : Judul, Kode, Penerbit, Tanggal Masuk kedalam file eksternal.
2.      Buatlah file teks untuk menyimpan data pada nomer 1
3.      Buatlah program untuk menyimpan sembarang teks yang dimasukkan dari keyboard kedalam file eksternal. Teks tersebut berisi komentar.
4.      Implementasikan prosedur menyimpan, membaca sembarang data dari file tak bertipe.


-End-



MODUL 14

TIPE DATA POINTER


Tujuan
1.      Mahasiswa dapat memahami data jenis pointer
2.      Mahasiswa dapat membuat data jenis pointer dan mengimplementasikan dalam program
Dasar Teori
  1. Data pointer adalah suatu jenis data yang menyimpan alamat di memori. Jenis data ini biasa digambar dengan anak panah dan kotak. Didalam kotak menyatakan isi dari variebel.

isi
 


                         Var

  1. Untuk mendeklarasikan variabel bentuk ini digunakan perintah :
<nama_var>:^<tipe_data>
atau jika pointer tak bertipe dapat digunakan
<nama_var>:pointer
  1. Setiap data pointer dapat menunjuk data-data jenis standar, terstruktur, atau pointer lain.
  2. Setiap data pointer dapat diisi dengan nilai yang berasal dari : NIL, operator @, fungsi ptr, prosedur New dan GetMem, atau pointer yang lain.
  3. Dengan menggunakan data jenis record dan pointer dapat disusun suatu rangkaian data yang disebut linklist. Data yang berikut menunjuk alamat data sebelumnya.
Materi
1.      Coba program berikut dengan terlebih dahulu melengkapinya.
var p,q,r,s:^string;
      nilai:string
begin
      nilai:=’ini string nilai !!!’;
      p:=@nilai;
      new(q);
      q^:=’ini isi pointer q !!!’;
      r:=q {r menunjuk ke alamat yang ditunjuk q}
      s^:=q^;
      writeln(’alamat pointer p =’,seg(p^):4,’:’,ofs(p^):4,’; isi pointer p =’,p^);
      writeln(’alamat pointer q =’,seg(q^):4,’:’,ofs(q^):4,’; isi pointer q =’,q^);
      writeln(’alamat pointer r =’,seg(r^):4,’:’,ofs(r^):4,’; isi pointer r =’,r^);
      writeln(’alamat pointer s =’,seg(s^):4,’:’,ofs(s^):4,’; isi pointer s =’,s^);
end.
2.      Coba program berikut kemudian pahami strukturnya.
var p:pointer;
      q:^byte;
      r:array[0..19] of byte;
      i:byte;
begin
      getmem(p,20);
      q:=p;
      for i:=0 to 19 do
      begin
                  r[i]:=19-i;
                  q^:=19-i;
                  inc(q);
      end;
      q:=p;
      for i:=0 to 19 do
      begin
                  write(’r[’,i,’]=’,r[i],’;’);
            writeln(’p^ ke –’,i,’=’,q^);
            inc(q);
      end;
end.

Latihan
1.      Buatlah program untuk mengimplementasikan data jenis record dengan suatu pointer.
2.      Buatlah program yang melibatkan data jenis pointer dengan data array.
3.      Buatlah program dengan struktur data sebagai berikut :
Data:record;
Nama:string[10];
Berikut:pointer;
End;
4.      Buatlah program untuk mengisi data pada no 3 diatas sehingga terbentuk suatu linklist .

-End-
MODUL 15

UNIT


Tujuan
1.      Mahasiswa dapat memahami apa yang disebut unit dalam pascal
2.      Mahasiswa dapat mengimplementasikan dalam program
3.      Mahasiswa dapat membuat suatu pustaka sendiri
Dasar Teori
1.      Unit adalah kumpulan/pustaka dari komponen-komponen program
2.      Untuk menggunakan unit harus dinyatakan dalam klausa uses
3.      Setiap unit terdiri dari bagian-bagian yaitu :
a.       Kepala unit, yaitu bagian yang menentukan nama unit yang dibatasi sebanyak delapan carakter. Nama file yang digunakan harus sama dengan nama unitnya.
b.      Bagian Interface, berisi perintah-perintah pendeklarasian variable, konstanta, fungsi dan lain sebagainya yang diperlukan dalam pendefinisian unit. Bagian ini diawali dengan kata inteface
c.       Bagian Implementation, bagian ini berisi tubuh dari sebua prosedur mupun fungsi yang dideklarasikan dalam interface.
d.      Bagian Initialization, merupakan bagian akhir darai unit.
4.      Struktur unit adalah sebagai berikut :
Unit <nama_unit>
Interface
{bagian interface}
implementation
{bagian implementasi}
begin
{bagian inisialisasi}
end.
5.      Unit-unit bawaan pascal diantaranya :wincrt, windos, system, dan lain-lain.


Materi
Buatlah contoh unit berikut ini :

Unit balok;

Interface

Type
            Tbalok=record;
              Panjang, lebar, tinggi:byte;
            End;
Procedure buatbalok(var b:tbalok;p,l,t:byte);
Function luasbalok(b:tbalok):word;
Function isibalok(b:tbalok):word;

Implementation

Procedure buatbalok
Begin
            With b do begin
            Panjang:=p;
            Lebar:=l;
            Tinggi:=t;
            End;
End;
Function luasbalok;
Begin
            With b do luasbalok:=2*panjang*lebar+2*panjang*tinggi+2*lebar*tinggi;
End;
Function isibalok;
Begin
            With b do isibalok:=panjang*lebar*tinggi;
End;

Latihan
  1. Buatlah unit untuk menangani bilngan kompleks, yang memuat :
q  Pendeklarasian type data bilngan kompleks
q  Opersi jumlahan, pengurangan, perkalian, pembagian
q  Fungsi untuk mengambil komponen imajiner dan realnya
q  Fungsi untuk mengambil modulusnya
  1. Buatlah unit untuk menangani opersi matriks orde nxm, yang memuat :
q  Pendeklrasian tipe data matriks
q  Pencarian determinan
q  Opersi jumlahan, pengurangan, perkalian, transpose
q  Opersi elementer matriks
q  Fungsi mengambil elemen tertentu.
-End-


MODUL 16

PENGURUTAN


Tujuan

Dasar Teori

Materi

Latihan

-End-

2 komentar:

  1. mb, mbok di kasih jawaban nya jg buat yg materi n latian nya

    BalasHapus
  2. mb, mbok jawaban nya sekalian, bngung ini

    BalasHapus