• Tidak ada hasil yang ditemukan

Program Nama_Program; {Judul Program}

N/A
N/A
Protected

Academic year: 2021

Membagikan "Program Nama_Program; {Judul Program}"

Copied!
40
0
0

Teks penuh

(1)

Praktikum Teknik Pemrograma

1

A. PENDAHULUAN

Struktur Program Pascal

Secara umum struktur program pascal dapat digambarkan sebagai berikut:

Judul Program

Judul Program merupakan baris yang menunjukkan judul program atau identitas program. Bagian ini adalah optional atau tidak harus dibuat. Sintaksnya dituliskan sebagai berikut:

Program [judul_program]; Defenisi Unit

Uses digunakan untuk mendefenisikan unit-unit yang akan digunakan dalam program. Sintaks: Uses Nama Unit;

Misalnya: Uses Crt;

Program Nama_Program; {Judul Program} Uses……… {Definisi Unit}

Label... {Defenisi Label}

Const {pengumuman tetapan-tetapan} ;

type

. . . { pengumuman tipe-tipe data }; . . . { pengumuman peubah-peubah }; procedure Nama_Prosedur; begin . . . end; Function Nama_Fungsi; begin . . . end; { Program utama } begin . . . end.

STRUKTUR BAHASA PEMROGRAMAN PASCAL

MATERI I

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program sederhana menggunakan variable, konstanta, dan operator.

Bahasa Pascal dikembangkan pada awal tahun 1970-an oleh ilmuwan komputer Eropa, Niklaus Wirth. Nama Pascal diambil dari nama ahli matematika Blaise Pascal yang menemukan mesin hitung mekanik pertama. Sekarang Pascal digunakan baik untuk keperluan ilmiah maupun aplikasi bisnis. Sampai saat ini, bahasa Pascal juga digunakan pada sekolah dan universitas di Indoensia untuk belajar pemrograman dasar.

Pascal sebagai salah satu bahasa tingkat tinggi (high-level language) untuk dapat dikenali oleh computer harus diterjemahkan menjadi bahasa mesin. Untuk itu dikembangkan sebuah program penerjemah yang disebut dengan kompilator (compiler). Kompilator Pascal adalah sebuah software, bukan perangkat keras (hardware). Kompilator adalah progam yang disimpan pada file dalam disk.

(2)

Praktikum Teknik Pemrograma

2

Deklarasi label

Deklarasi label digunakan Jika pada penulisan program akan menggunakan statemen GOTO (untuk meloncat ke suatu statement tertentu). Sintaks: Label 100:

Deklarasi konstanta

Deklarasi ini digunakan untuk mengidentifikasikan data yang nilainya sudah ditentukan dan pasti, tidak dapat dirubah dalam program. Sintaks: Const Nama_Konstanta=Nilai; Misalnya Const Phi=3.14;

Deklarasi tipe

Deklarasi ini digunakan untuk menyebutkan tipe setiap data yang akan digunakan pada program Pascal. Tipe data menentukan jangkauan nilai yang mungkin dari data yang digunakan.

Deklarasi variabel/perubah

Deklarasi ini berisi data-data yang bisa berubah-ubah nilainya di dalam program. Deklarasi variabel harus di letakkan setelah deklarasi tipe (jika ada). Nama variabel atau Identifier adalah nama yang diberikan oleh programmer. Identifier tidak hanya untuk menamai program tetapi juga untuk objek-objek Pascal yang lain, seperti variabel dan konstanta. Aturan penamaan identifier:

1. Karakter pertama identifier harus berupa huruf

2. Karakter selanjutnya dapat gabungan antara huruf dan angka 3. Tidak berupa reserved word atau kata kunci dalam Pascal 4. Tidak boleh dipisahkan dengan spasi, tidak boleh operator Sintaks: Var <Nama_variabel>: Tipe_data;

atau :

Var <Nama variabel1>, <Nama Variabel2>,…: Tipe_data; Deklarasi prosedur dan Fungsi

Program dapat dibagi menjadi beberapa bagian/subprogram, yang terdiri dari satu program utama dan satu / lebih program bagian (bisa berupa prosedur /fungsi). Deklarasi prosedure/ fungsi terletak pada subprogram yang menggunakannya.

Program Utama

Bagian ini adalah bagian yang akan terproses dan terdapat dalam suatu blok yang diawali dengan BEGIN dan diakhiri dengan END (penulisan END diikuti dengan tanda titik). Bagian ini berisi pernyataan / statamen yang merupakan instruksi program. Setiap statemen diakhiri dengan tanda titik koma (;). Bentuk umumnya adalah sbb :

BEGIN ... statemen; ... END. Komentar

Jika suatu program dikompilasi, komentar akan dilewati atau diabaikan oleh kompilator. Komentar dalam Pascal dituliskan dengan mengapitnya dengan kurung kurawal buka dan tutup,

(3)

Praktikum Teknik Pemrograma

3

Reserved Word

Reserved Word adalah kata-kata yang sudah mempunyai arti khusus dalam bahasa pemrograman atau “kata kunci”. Contoh: program, begin, end dan lain-lain. Ada banyak sekali reserved word dalam Pascal, anda dapat mencari dalam buku atau referensi lain. Tipe Data

Tipe Data dapat terletak pada deklarasi variabel maupun padadeklarasi tipe. Pascal menyediakan beberapa macam tipe data, yang terdiri dari :

1. Tipe data sederhana/skalar, terdiri dari : 1.1. Tipe data standar/predefinisi

1.1.1.Bulat (integer). Integer adalah Tipe integer adalah bilangan yang tidak mempunyai titik desimal/bilangan pecahan. Integer terdiri dari beberapa tipe, yaitu :

a. byte, dengan jangkauan nilai 0..255 b. shortint, dengan jangkauan nilai -128..127 c. integer, dengan jangkauan nilai -32768..32767 d. word, dengan jangkauan nilai 0..65535

e. longint, dengan jangkauan nilai -2147483648..2147483647

1.1.2.Real. Tipe real adalah bilangan yang mengandung pecahan, palingsedikit harus ada satu digit sebelum dan sesudah titik desimal. Tipe data real terdiri dari beberapa tipe yaitu:

a. Real, dengan jangkauan nilai 2.9E39 ..1.7E38 b. Single, dengan jangkauan nilai (1.5E-45..3.4E38 c. Double, dengan jangkauan nilai 5.0E-423..1.7E308 d. Extend, dengan jangkauan nilai 1.9E-4951..3.4E4932 e. Comp, dengan jangkauan nilai -2E63+1..2E63-1

1.1.3.Char. Yaitu nilai data berupa sebuah karakter yang ditulis diantara tanda petik tunggal, misalnya : 'A', 'b', '@', dan sebagainya

1.1.4.String. Yaitu satu atau lebih karakter yang terletak diantara tanda petik tunggal, misal : 'STMIK DIPANEGARA'. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya 255 karakter.

1.1.5.Logika (boolean) yaitudata yang mempunyai dua nilai, yaitu True dan False. 2. Tipe data didefinisikan pemakai :

2.1.1.Subjangkauan (subrange) yaitu tipe data yang dapat didefinisikan sendiri oleh pemakai. Nilai data pada tipe ini mempunyai jangkauan tertentu. Misalkan nilai ujian mempunyai harga 0 sampai 100, maka nilai ujian dapat didefinisikan sbb: nilai = 0..100;

Terbilang (enumerated) yaitu tipe data ini juga dapat didefinisikan sendiri oleh pemakai. Disebut tipe terbilang karena semua nilai disebut satu persatu. Contoh: hari = (Senin,Selasa,Rabu,Kamis,Jum'at,Sabtu,Minggu);

hari_kerja = (Senin,Selasa,Rabu,Kamis,Jum'at); situasi = (senang,gembira,sedih,susah);

3. Tipe data terstruktur, terdiri dari :

3.1. Larik (array) yaitu tipe data terstruktur yang memiliki item/field data yang masing-masing memiliki tipe yang sama.

3.2. Record yaitu tipe terstruktur yang memiliki item/field data yang masing-masing memiliki tipe data yang berbeda.

3.3. File yaitu kumpulan sejumlah komponen bertipe data sama yang jumlahnya tidak tertentu dan biasanya tersimpan dalam media penyimpanan luar.

3.4. Set atau himpunan yaitu kumpulan objek yang mempunyai tipe data yang sama dan urutan penulisannya tidak diperhatikan.

4. Tipe data penunjuk (pointer) yaitu suatu variable yang berisi alamat (address) di memori dimana suatu data disimpan, bukannya berisi data itu sendiri. Dengan kata

(4)

Praktikum Teknik Pemrograma

4

lain pointer akan menunjukkan letak dari data di memori.

Operator

Tanda operasi (operator) di dalam bahasa Pascal di kelompokkan dalam :

1. Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=). Contoh –> A:=B;

2. Binary operator digunakan untuk mengoperasikan dua buah operand yang berbentuk konstanta ataupun variable. Operator ini digunakan untuk operasi arithmatika yang berhubungan dgn nilai tipe data Integer dan Real. Operasi yang dilakukan adalah : Pertambahan (+), Pengurangan (-), Perkalian (*), Pembagian Bulat (DIV), Pembagian Real (/) dan Modulus atau Sisa Pembagian (MOD)

3. Unary operator, operator ini menggunakan sebuah operand saja dapat berupa unary minus dan unary plus. Contoh : +2.5, a+(+b) dll

4. Bitwise operator digunakan untuk operasi bit per bit pada nilai integer. Operator yang digunakan (NOT, AND, OR, XOR, Shl, Shr)

5. Relasional operator, yaitu operator untuk membadingkan dua buah nilai. Operator yang digunakan lebih besar (>), lebih kecil (<), lebih besar atau sama dengan (>=), lebih kecil atau sama dengan (<=), sama dengan (=), tidak sama dengan (<>)

6. Operator Logika, digunankan untuk menggabungkan beberapa operator relasional. Operator yang digunakan adalah NOT, OR, AND.

Beberapa Statemen / Perintah Pada Pascal

Statemen adalah perintah untuk pengerjaan program pascal. Statemen terletak di bagian deklarasi statemen dengan diawali oleh kata cadangan BEGIN dan diakhiri dengan kata cadangan END. Akhir dari setiap statemen diakhiri dengan titik koma(;). Statemen-statemen dalam bahasa Pascal terdiri dari pernyataan yang berupa fungsi dan prosedur yang telah disediakan sebagai perintah standar Turbo Pascal.

1. Statemen-statemen yang digunakan untuk input/output a) Read/Readln(prosedur)

Perintah read dan readln akan menangkap masukan yang diberikan melalui keyboard dan menyimpannya disebuah memori computer dengan nama sesuai dengan parameternya. Perbedaan perintah read dan readln sama dengan perbedaan perintah write dan writeln. Perintah read akan membaca masukan dari keyboard tanpa memindahkan posisi kursor setelah pembacaan, sedangkan perintah readln akan membaca masukan sekaligus memindahkan posisi kursor.

Misalnya: Read(Alas); Readln(Tinggi);

b) Write/Writeln(prosedur)

Perintah writeln merupakan kependekan dari write line. Setelah menuliskan parameternya di layar, maka kursor penulisan akan langsung pindah ke baris di bawahnya atau ganti baris. Perintah write hanya menuliskan parameternya saja tanpa pindah baris. Contoh penggunaan perintah write dan writeln:

write („Selamat Belajar‟); writeln („Pascal‟); write („Semoga Sukses‟); c) Readkey(fungsi)

Untuk pembacaan sebuah karakter dari keyboard. Tipe data yang dihasilkan adalah char. Sintaks: READKEY;

d) Clrscr(prosedur)

Digunakan untuk membersihkan layar. Sintaks: CLRSCR;

(5)

Praktikum Teknik Pemrograma

5

e) Gotoxy(prosedur)

Untuk menempatkan posisi kursor pada layar. Sintaks: GOTOXY(X, Y: Byte);

Keterangan :

X = sumbu X (posisi horisontal), Y = sumbu Y (posisi vertikal) f) Delay(prosedur)

Untuk menghentikan sejenak proses program. Sintaks: DELAY(MS: Word);

Keterangan : MS = ukuran waktu dalam milisecond. 2. Statemen yang digunakan untuk memanipulasi string

a) CONCAT(fungsi)

Untuk menggabungkan 2 atau beberapa variabel string. Sintaks: CONCAT(s1 [,s2,...,sn]: String) : STRING; contoh: CONCAT('ABC','DEF') { ABCDEF } b) COPY(fungsi)

Mengambil satu(1) atau beberapa karakter dari sebuah string. Sintaks: COPY(S,Index,Count) : String;

Keterangan :

S = sebuah string (string).

Index = posisi awal kita akan mengambil beberapa karakter (integer) Count = banyaknya karakter yang akan diambil (integer).

c) DELETE(prosedur)

Menghapus sebagian karakter dari sebuah string. Sintaks: DELETE(S,Index,Count);

Keterangan : sama dengan statemen COPY. d) INSERT(prosedur)

Menyisipkan satu(1) atau beberapa karakter ke dalam sebuah string. Sintaks: INSERT(Source,var S,Index);

Keterangan :

Source = sumber string untuk disisipi (string)

var S = string tujuan yang akan disisipi oleh string Source (string) Index = posisi mulai (integer).

e) LENGTH(fungsi)

Memberikan nilai panjang dari suatu string (jumlah karakterdalam string). Sintaks: LENGTH(S);

Keterangan : S = string

LENGTH(S) menghasilkan nilai integer. f) POS(fungsi)

Mencari posisi sebuah bagian string (substring) didalam sebuah string. Sintaks: POS(Substr,S); {menghasilkan nilai Byte}

Keterangan :

Substr = substring yang akan dicari posisinya di dalam sebuah string S. Bila bernilai 0 berarti nilai string yang dicari tidak ada.

g) STR(prosedur)

Merubah nilai numerik ke dalam nilai string. Sintaks: STR(N,S);

Keterangan :

(6)

Praktikum Teknik Pemrograma

6

S = data tipe string.

h) UPCASE(fungsi)

Memberikan huruf kapital dari argumen. Sintaks: UPCASE(S);

Keterangan :

S = variabel bertipe karakter.

3. Statemen-statemen untuk perhitungan aritmatik a) ABS(fungsi)

Memberikan nilai mutlak dari suatu argumen. Sintaks: ABS(x);

b) COS(fungsi)

Memberikan nilai dari fungsi Cosinus. Sintaks: COS(x);

c) EXP(fungsi)

Menghitung nilai pangkat dari bilangan e (bilangan alam), yaitu sebesar x.

Sintaks: EXP(x);

x dapat bertipe real atau integer dan akan menghasilkan nilai bertipe real. d) INT(fungsi)

Memberikan nilai integer (bilangan bulat) dari suatu variabel dengan membuang bilangan di belakang koma.

Sintaks: INT(X); e) LN(fungsi)

Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x. Sintaks: LN(x);

f) SIN(fungsi)

Memberikan nilai dari fungsi Sinus. Sintaks: SIN(x);

g) SQR(fungsi)

Digunakan untuk menghitung nilai pangkat kuadrat dari suatu bilangan. Sintaks: SQR(x);

Tipe dari x bisa berupa real maupun integer. Dan hasilnya akan sama dengan tipe dari x.

h) SQRT(fungsi)

Digunakan untuk menghitung nilai akar dari suatu bilangan. Sintaks: SQRT(x);

4. Statemen-statemen untuk transfer nilai dari suatu variable a) CHR(fungsi)

Merubah nilai dari byte ke bentuk karakter yang sesuai dengan kode ASCII. Sintaks: CHR(x);

Keterangan : x bertipe byte contoh : WRITELN(CHR(61); hasilnya : a

b) ROUND(fungsi)

Membulatkan data tipe real ke data tipe longint. Sintaks: ROUND(X);

Keterangan : Jika nilai pecahan < 0,5 maka dibulatkan kebawah. Jika nilai pecahan > 0,5 maka dibulatkan keatas.

(7)

Praktikum Teknik Pemrograma

7

contoh : WRITELN('10/3 dibulatkan = ',ROUND(10/3));

hasilnya : 10/3 dibulatkan = 3 c) TRUNC(fungsi)

Membulatkan kebawah data tipe real ke data tipe longint. Sintaks: TRUNC(X);

contoh :

WRITELN('20/3 dibulatkan kebawah = ',TRUNC(20/3)); hasilnya : 20/3 dibulatkan kebawah = 6

B. KEGIATAN PRAKTIKUM

PROGRAM PERTAMAKU;

USES CRT;

BEGIN

WRITE (‘SELAMAT DATANG DI PEMROGRAMAN PASCAL’); WRITELN(‘STMIK DIPANEGARA MAKASSAR’);

END.

Simpan program di atas dengan memilih menu File, Save atau Save As (Alt F + S) dan beri nama file Prak1_01.Pas. Kemudian eksekusi program tersebut dengan memilih menu Run (Ctrl + F9). Kemudian perhatkan hasilnya;

Tambahkan perintah READLN sebelum perintah END. Kemudian eksekusi kembali program tersebut dan amati hasilnya.

PENYELESAIAN:

PROGRAM Prak1_02;

USES Crt;

VAR bil1, bil2 : real;

BEGIN

CLRSCR;

WRITE(‘MASUKKAN BILANGAN PERTAMA : ‘ ); READLN(BIL1);

WRITE(‘MASUKKAN BILANGAN KEDUA : ‘ );

READLN(BIL2); WRITELN(‘BIL1 + BIL2 = ‘, BIL1 + BIL2:9:2 ); WRITELN(‘BIL1 – BIL2 =’, BIL1 – BIL2:9:2 );

WRITELN(‘BIL1 / BIL2 =’, BIL1/BIL2:9:2 ); WRITELN(‘BIL1 * BIL2 = ‘, BIL1*BIL2:9:2 ); WRITELN(‘BIL1 < BIL2 = ‘, BIL1<BIL2); WRITELN(‘BIL1 > BIL2 = ‘, BIL1>BIL2); READLN;

END.

PROGRAM SOAL2;

Kegiatan-1. Ketik Program berikut ini:

Kegiatan-2. Buatlah program yang mendeklarasikan suatu bilangan bertipe real, mengisi bilangan bertipe real tersebut dari keyboard, lakukan operasi tambah – kurang – bagi – kali –kurang dari – lebih dari. Tampilkan hasil dari tiap setiap operasi ke layar.

Kegiatan-3. Program untuk menghitung luas lingkaran. Luas lingkaran didefinisikan sbb : L = pi*r*r, dimana pi adalah konstanta yang bernilai 3,1415 sedangkan r adalah jari-jari lingkaran.

(8)

Praktikum Teknik Pemrograma

8

USES CRT;

VAR L , R : REAL;

CONST PI = 3.1415; {* Const Pi Adalah Nilai Konstan *}

BEGIN

CLRSCR;

WRITE('NILAI JARI-JARI LINGKARAN: '); READLN(R);

L := PI * SQR(R); {* SQR ADALAH KUADRAT *} WRITELN('LUAS LINGKARAN ADALAH : ',L:9:2); READLN; END. PROGRAM Menghitung_Umur; USES CRT; TYPE STR10 = STRING[10]; CONST KOMA=','; VAR NAMA1,NAMA2 : STR10; ALAMAT : STRING; USIA ,THN_LHR,THN_SKR: INTEGER; BEGIN

WRITE('MASUKKAN NAMA DEPAN : '); READLN(NAMA1); WRITE('MASUKKAN NAMA BELAKANG : '); READLN(NAMA2);

WRITE('MASUKKAN ALAMAT : ');READLN(ALAMAT);

WRITE('MASUKKAN TAHUN LAHIR : ');READLN(THN_LHR); WRITE('MASUKKAN TAHUN SEKARANG : ');READLN(THN_SKR); USIA := THN_SKR - THN_LHR;

WRITELN;

WRITELN('=== BIODATA DIRI ==='); WRITELN(NAMA1,KOMA,NAMA2);

WRITELN(ALAMAT);

WRITELN(USIA,' TAHUN'); READLN;

END.

1. Buatlah program untuk menghitung luas sebuah segitiga siku-siku: Input : Alas, Tinggi

Keluaran : Luas

2. Buatlah program yang menampilkan data mahasiswa berupa No. Stambuk, Nama, Nilai Tugas, Nilai UTS, Nilai UAS dan Total Nilai.

Input : No. Stambuk, Nama, Nilai Tugas, Nilai UTS, Nilai UAS

Proses : Total Nilai = 20% * Nilai Tugas + 35% Nilai UTS + 45% Nilai UAS Keluaran : Total Nilai

3. Jarak antara dua titik dengan masukan 2 titik, yang ditentukan dengan rumus:

𝑑 = x2 − x1 2+ y2 − y1 b2 , dimana d = jarak antara titik A(x1,y1 ) dan B(x2,y2). Buatlah program untuk menghitung jarak diantara 2 buah titik jika x1, x2, y1 dan y2 diinput dari keyboard.

Kegiatan-4. Program Menghitung Umur

(9)

Praktikum Teknik Pemrograma

9

If (kondisi_1) then Alternatif_1

Else if (kondisi_2) then Alternatif_2 ………. Else if(kondisi_n) then Alternatif_n Else Alternatif_n+1

C. PENDAHULUAN

Instruksi seleksi biasa juga disebut dengan percabangan yaitu instruksi untuk mengambil suatu keputusan apakah suatu baris instruksi atau blok instruksi akan diproses atau tidak. Bentuk-bentuk instruksi seleksi:

1. Seleksi if/then. Digunakan untuk memilih suatu alternatif apakah akan dikerjakan atau tidak, berdasarkan kondisi. Jika kondisi yang diuji benar maka alternatif tersebut dikerjakan tetapi jika salah maka alternatif tersebut tidak dikerjakan. Bentuk umum seleksi if/then adalah sebagai berikut:

2. Seleksi if/then/else. Digunakan untuk memilih satu di antara dua alternatif berdasarkan kondisi. Bila kondisi terpenuhi, maka alternatif pertama yang akan dipilih tetapi jika kondisi salah, maka alternatif kedua yang akan dipilih. Bentuk seleksi if/then/else sebagai berikut:

Selain digunakan untuk memilih satu diantara dua alternatif if/then/else juga dapat digunakan untuk memilih satu diantara tiga atau lebih alternatif. Bentuk umumnya sebagai berikut:

Catatan:

1. Alternatif_1 dipilih jika kondisi_1 bernilai benar

2. Alternatif_2 dipilh jika kondisi_1 salah dan kondisi_2 bernilai benar

3. Alternatif_n dikerjakan jika kondisi_1, kondisi_2 bernilai salah dan kondisi_n bernilai benar.

4. Alternatif_n+1 dipilih jika kondisi_1 sampai dengan kondisi_n semuanya bernilai salah.

3. Seleksi Case. Digunakan untuk menyederhanakan kontruksi if/then/else yang terlalu banyak. Bentuk dari seleksi case adalah:

Catatan:

Alternatif_1 dipilih jika nilai variabel sama dengan nilai_1 Alternatif_2 dipilih jika nilai variabel sama dengan nilai_2 Alternatif_n dipilih jika nilai variabel sama dengan nilai_n Alternatif_n+1 dipilih jika nilai variabel tidak sama dengan nilai_1 sampai dengan nilai_n

INSTRUKSI SELEKSI

MATERI 2

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan instruksi seleksi.

If kondisi then Alternatif If (kondisi) then Alternatif1 Else Alternatif2 Case (variabel) Of Nilai_1 : Alternatif_1; Nilai_2 : Alternatif_1; ……… Nilai_n : Alternatif_n; Else Alternatif_n+1; End;

(10)

Praktikum Teknik Pemrograma

10

D. KEGIATAN PRAKTIKUM PENYELESAIAN: PROGRAM PRAK2_01; USES CRT; VAR ANGKA: INTEGER; BEGIN CLRSCR;

WRITE('MASUKKAN SEBUAH ANGKA:'); READLN(ANGKA);

IF (ANGKA MOD 2 = 0) THEN

WRITELN(ANGKA, ' ADALAH BILANGAN GENAP') ELSE

WRITELN(ANGKA, ' ADALAH BILANGAN GANJIL'); READLN;

END.

PT XYZ memberikan tunjangan keluarga kepada karyawannya sebesar 10% dari Gaji Pokok dan Tunjangan anak sebesar 2% dari gaji pokok untuk setiap anak. Jumlah anak yang boleh masuk tanggungan adalah maksimum 2 orang anak. Gaji pokok didasarkan pada tabel golongan sebagai berikut:

Buatlah Program yang menerima NIK, nama, golongan, status kawin, jumlah anak kemudian tampilkan total Gaji. Total Gaji diperoleh dari Gaji Pokok + Tunjangan Keluarga+Tunjangan Anak.

PENYELESAIAN:

PROGRAM PRAK2_02;

USES CRT;

VAR

JA: BYTE; {JA=JUMLAH ANAK}

GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NAMA, NIK: STRING; {GOL=GOLONGAN}

TOTALGAJI, TANAK, TKELUARGA: REAL; GOL, STATUS: CHAR;

BEGIN

CLRSCR; {INPUT DATA}

WRITE('NO. INDUK KARYAWAN :');READLN(NIK);

WRITE('NAMA KARYAWAN :');READLN(NAMA); WRITE('GOLONGAN [1,2,3,4] :');READLN(GOL);

WRITE('STATUS [K/B] :');READLN(STATUS);

WRITE('JUMLAH ANAK :');READLN(JA);

Kegiatan-1. Susunlah program untuk membaca sebuah bilangan. Jika bilangan tersebut habis dibagi dengan 2, maka tampilkan output „Bilangan genap‟ tetapi jika tidak maka tampilkan „Bilangan ganjil‟.

(11)

Praktikum Teknik Pemrograma

11

{MENCARI GAJI POKOK BERDASARKAN GOLONGAN}

IF (GOL='1') THEN GAPOK:=500000

ELSE IF (GOL='2') THEN GAPOK:=600000 ELSE IF (GOL='3') THEN GAPOK:=700000 ELSE GAPOK:=1000000;

{MENGHITUNG TUNJANGAN KELUARGA}

IF UPCASE(STATUS)='K' THEN TKELUARGA:=10/100*GAPOK ELSE TKELUARGA:=0;

{MENGHITUNG TUNJANGAN ANAK}

IF JA>2 THEN TANAK:=2 * GAPOK * 2/100 ELSE TANAK:= JA * GAPOK * 2/100; TOTALGAJI:=GAPOK+TKELUARGA+TANAK; {CETAK OUTPUT}

CLRSCR;

WRITELN('NIK KARYAWAN :',NIK); WRITELN('NAMA KARYAWAN:',NAMA); WRITELN('GOLONGAN :',GOL); WRITELN('STATUS KAWIN :',STATUS); WRITELN('JUMLAH ANAK :',JA);

WRITELN('GAJI POKOK : RP. ',GAPOK:10);

WRITELN('TUNJANGAN KEL. : RP. ',TKELUARGA:10:2); WRITELN('TUNJANGAN ANAK : RP. ',TANAK:10:2); WRITELN('TOTAL GAJI : RP. ',TOTALGAJI:10:2); READLN; END. PENYELESAIAN: PROGRAM Prak2_03; USES CRT; VAR

JA: BYTE; {JA=JUMLAH ANAK}

GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NAMA, NIK: STRING; {GOL=GOLONGAN}

TOTALGAJI, TANAK, TKELUARGA: REAL; STATUS: CHAR;

GOL :CHAR;

BEGIN

CLRSCR;

WRITE('NO. INDUK KARYAWAN:');READLN(NIK); WRITE('NAMA KARYAWAN:');READLN(NAMA); WRITE('GOLONGAN [1,2,3,4]:');READLN(GOL); WRITE('STATUS [K/B] :');READLN(STATUS); WRITE('JUMLAH ANAK :');READLN(JA); {MENGHITING GAJI POKOK}

CASE GOL OF '1' : GAPOK:=500000; '2' : GAPOK:=600000; '3' : GAPOK:=700000; ELSE GAPOK:=1000000; END;

Kegiatan-3. Modifikasi Prak02_2 dengan cara mengganti instruksi if dengan case untuk menentukan gaji pokok berdasarkan golongan.

(12)

Praktikum Teknik Pemrograma

12

{MENGHITUNG TUNJANGAN KELUARGA}

IF (STATUS='K') OR (STATUS='K') THEN TKELUARGA:=10/100*GAPOK

ELSE TKELUARGA:=0;

{MENGHITUNG TUNJANGAN ANAK}

IF JA>2 THEN TANAK:=2 * GAPOK * 2/100 ELSE TANAK:= JA * GAPOK * 2/100; TOTALGAJI:=GAPOK+TKELUARGA+TANAK; {CETAK OUTPUT}

CLRSCR;

WRITELN('NIK KARYAWAN :',NIK); WRITELN('NAMA KARYAWAN :',NAMA); WRITELN('GOLONGAN :',GOL); WRITELN('STATUS KAWIN :',STATUS); WRITELN('JUMLAH ANAK :',JA);

WRITELN('GAJI POKOK : RP. ',GAPOK:10);

WRITELN('TUNJANGAN KEL. : RP. ',TKELUARGA:10:2); WRITELN('TUNJANGAN ANAK : RP. ',TANAK:10:2); WRITELN('TOTAL GAJI : RP. ',TOTALGAJI:10:2);

READLN;

END.

4. Gunakan pernyataan IF atau CASE untuk menyelesaikan soal-soal berikut: Berdasarkan data berikut ini:

A = TVRI B = RCTI C = SCTV D = ANTV E = INDOSIAR F =TVOne G=TRANS TV H=TRANS 7

Buatlah program yang meminta masukan huruf saluran TV,kemudian program menampilkan nama stasiun penyiarannya. Bila yang huruf yang dimasukkan tidak diantara A sampai dengan H, berikan komentar „Nomor saluran salah‟.

5. Buatlah program yang menampilkan data mahasiswa berupa No. Stambuk, Nama, Nilai Tugas, Nilai UTS, Nilai UAS dan Total Nilai.

Input : No. Stambuk, Nama, Nilai Tugas, Nilai UTS, Nilai UAS

Proses : Total Nilai = 20% * Nilai Tugas + 35% Nilai UTS + 45% Nilai UAS Jika Total Nilai>=85, maka nilai huruf=”A”

Jika 75<Total Nilai<=85, maka nilai huruf=”B” Jika 65<Total Nilai<=75, maka nilai huruf=”C” Jika 55<Total Nilai<=65, maka nilai huruf=”D” Jika Total Nilai<=55, maka nilai huruf=”E” Keluaran : Total Nilai , Nilai Huruf

(13)

Praktikum Teknik Pemrograma

13

E. PENDAHULUAN

4. Perulangan for… to… do

Pernyataan for (for statements) juga digunakan untuk melakukan proses perulangan. Perulangan dengan pernyataan for dapat berupa perulangan positif ('to') dan perulangan negatif ('downto'). Jika pernyataan yang akan mengalami perulangan lebih dari satu pernyataan, maka harus diawali dengan begin dan diakhiri dengan end;

Bentuk for positif:

For Variabel:=Awal To Akhir Do

<Instruksi yang diproses berlung-ulang> Bentuk for negatif:

For Variabel:=Awal Down To Akhir Do <Instruksi yang diproses berlung-ulang>

5. Perulangan While. Digunakan untuk pengujian syarat pada awal proses berulang. Pengujian awal digunakan untuk agar program dapat menyeleksi kondisi, sehingga program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari kondisi yang diseleksi tersebut.

Bentuk While While kondisi do

Instruksi yang akan diproses berulang

Misalnya: Menampilkan Angka 1 s.d. 25 dapat dilakukan dengan cara: Angka:=1;

While Angka<=25 do Begin

Write(Angka,‟ „);

Inc(Angka); {Nilai Angka dinaikkan 1} End;

Misalnya: Menampilkan Angka 25 s.d.1 dapat dilakukan dengan cara: Angka:=25;

While Angka>=1 do Begin

Write(Angka,‟ „);

Dec(Angka); {Nilai Angka dikurangi 1} End;

6. Perulangan Repeat. Digunakan untuk melakukan perulangan terhadap suatu pernyataan, dimana proses pemeriksaan syaratnya berada pada akhir pernyataan repeat tersebut. Pernyataan-pernyataan yang ada pada repeat akan dijalankan (diulang terus) sampai kondisi yang diseleksi di until tidak terpenuhi.

BentukRepeat Repeat

Instruksi yang akan diproses berulang Until Kondisi

INSTRUKSI PERULANGAN/LOOPING

MATERI 3

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan instruksi perulangan.

(14)

Praktikum Teknik Pemrograma

14

Misalnya: Menampilkan Angka 1 s.d. 25 dapat dilakukan dengan cara:

Angka:=1; Repeat

Write(Angka,‟ „);

Inc(Angka); {Nilai Angka dinaikkan 1} Until Angka>25;

Misalnya: Menampilkan Angka 25 s.d.1 dapat dilakukan dengan cara: Angka:=25;

Repeat

Write(Angka,‟ „);

Dec(Angka); {Nilai Angka dikurangi 1} Until Angka<1;

F. KEGIATAN PRAKTIKUM

PENYELESAIAN:

PROGRAM PRAK3_01;

USES CRT;

VAR ANGKA: INTEGER;

BEGIN

CLRSCR;

WRITELN('BILANGAN GENAP 1 S.D. 100'); FOR ANGKA := 1 TO 100 DO

IF ANGKA MOD 2 = 0 THEN WRITE(ANGKA:4); READLN;

END.

PENYELESAIAN:

PROGRAM PRAK3_02; USES CRT;

VAR I, PANJANG: INTEGER; KATA,BALIK:STRING;

BEGIN

CLRSCR;

WRITELN('BALIK KALIMAT'); WRITELN('=============');

WRITE('MASUKKAN SEBUAH KALIMAT: '); READ(KATA); PANJANG:=LENGTH(KATA);

FOR I:=PANJANG DOWNTO 1 DO

BALIK:=BALIK+UPCASE(KATA[I]);

WRITELN('HASIL PEMBALIKANNYA :',BALIK); READLN;

END.

PENYELESAIAN:

PROGRAM P3_03;

USES CRT;

Kegiatan-3. Menghitung nilai perpangkatan dan nilai factorial

Kegiatan-1. Susunlah program untuk menampilkan bilangan genap dari 2 s.d. 100

(15)

Praktikum Teknik Pemrograma

15

VAR HASIL: REAL; I, PILIH, A, X, N: INTEGER; STATUS: BOOLEAN; BEGIN REPEAT CLRSCR;

WRITELN('1. PEMANGKATAN 2. FAKTORIAL 3. KELUAR'); WRITE('MASUKKAN PILIHAN ANDA : ');

READLN(PILIH);

CASE PILIH OF 1 : BEGIN

WRITE('MASUKKAN SEMBARANG ANGKA : '); READLN(X);

WRITE('AKAN DIPANGKATKAN BERAPA : '); READLN(A);

HASIL := 1;

FOR I := 1 TO A DO HASIL := X * HASIL; WRITELN('JADI ', X,' DIPANGKATKAN ', A,' : ',HASIL:6:2);

STATUS := FALSE; END;

2 : BEGIN

WRITE('MASUKKAN SEMBARANG ANGKA : '); READLN(N);

IF N <= 1 THEN HASIL := 1 ELSE

BEGIN

HASIL := 1;

FOR I := 2 TO N DO HASIL := HASIL * I; END; WRITELN('JADI FACTORIAL ', N,' (', N,'!) : ',HASIL:6:2); STATUS := FALSE; END; 3 : STATUS := TRUE; ELSE BEGIN

WRITELN('PILIHAN ANDA SALAH !'); STATUS := TRUE; END; END; READLN; UNTIL STATUS; END. PROGRAM PRAK3_04; USES CRT; VAR

JA: BYTE; {JA=JUMLAH ANAK}

GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NAMA, NIK: STRING; {GOL=GOLONGAN}

TOTALGAJI, TANAK, TKELUARGA: REAL; GOL, STATUS, LAGI : CHAR;

(16)

Praktikum Teknik Pemrograma

16

BEGIN REPEAT

CLRSCR; {INPUT DATA}

WRITE('NO. INDUK KARYAWAN :');READLN(NIK);

WRITE('NAMA KARYAWAN :');READLN(NAMA); WRITE('GOLONGAN [1,2,3,4] :');READLN(GOL);

WRITE('STATUS [K/B] :');READLN(STATUS);

WRITE('JUMLAH ANAK :');READLN(JA);

{MENCARI GAJI POKOK BERDASARKAN GOLONGAN} IF (GOL='1') THEN GAPOK:=500000

ELSE IF (GOL='2') THEN GAPOK:=600000 ELSE IF (GOL='3') THEN GAPOK:=700000 ELSE GAPOK:=1000000;

{MENGHITUNG TUNJANGAN KELUARGA}

IF UPCASE(STATUS)='K' THEN TKELUARGA:=10/100*GAPOK ELSE TKELUARGA:=0;

{MENGHITUNG TUNJANGAN ANAK}

IF JA>2 THEN TANAK:=2 * GAPOK * 2/100 ELSE TANAK:= JA * GAPOK * 2/100; TOTALGAJI:=GAPOK+TKELUARGA+TANAK; {CETAK OUTPUT}

CLRSCR;

WRITELN('NIK KARYAWAN :',NIK);

WRITELN('NAMA KARYAWAN :',NAMA);

WRITELN('GOLONGAN :',GOL); WRITELN('STATUS KAWIN :',STATUS); WRITELN('JUMLAH ANAK :',JA);

WRITELN('GAJI POKOK : RP. ',GAPOK:10);

WRITELN('TUNJANGAN KEL. : RP. ',TKELUARGA:10:2); WRITELN('TUNJANGAN ANAK : RP. ',TANAK:10:2); WRITELN('TOTAL GAJI : RP. ',TOTALGAJI:10:2); WRITELN;

WRITE('MASIH ADA DATA [Y/T] :'); READLN(LAGI);

UNTIL UPCASE(LAGI)='T'; END.

6. Buatlah program untuk menghitung jumlah deret bilangan berikut dengan N buah suku, dimana N dibaca dari piranti masukan:

D= -1 + 1/3 – 1/6 + 1/9 -1/12+ 1/15 + …..

7. Buat program untuk menampilkan deret kuadrat 1, 4, 9, 16, .. !

8. Bilangan prima merupakan bilangan yang hanya dapat habis dibagi oleh bilangan 1 dan oleh bilangan itu sendiri, kecuali 1. Untuk menentukan apakah suatu bilangan adalah prima atau tidak, maka bilangan tersebut harus diperiksa dengan membagi bilangan tersebut sejumlah bilangan yang lebih kecil. Misalkan akan diperiksa apakah bilangan a adalah bilangan prima atau tidak maka a harus dibagi oleh 2 s.d. a-1, bilamana ada diantara bilangan tersebut yang membagi a dengan bulat berarti abaikan bilangan prima.

1. Mula-mula baca nilai N 2. Berikan nilai prima=true

3. Untuk i= 2 sampai dengan N lakukan langkah 4 s.d. 8 4. J=2

5. Selama j<i dan prima=true maka lakukan langkah 6 s.d. 8 6. Jika sisa dari I dibagi j =0, maka prima=false

7. J=j+1

(17)

Praktikum Teknik Pemrograma

17

8. Jika prima=true maka cetak i

G. PENDAHULUAN

Program Pascal akan menjadi mudah dibuat jika ditulis dalam bentuk modul-modul. Sistem modul ini memiliki beberapa keuntungan, diantaranya :

1. Untuk langkah-langkah yang sering dilakukan (bukan perulangan), akan terhindar dari pembuatan pernyataan-pernyataan yang sama.

2. Suatu modul program hanya sekali ditetapkan dan dapat dipanggil dari beberapa tempat dalam program. Sekumpulan data yang berbeda juga dapat diproses setiap kali modul tersebut dijalankan.

Dengan menggunakan sistem modul ini panjang program akan dapat dikurangi. Dalam pascal terdapat dua tipe modul, yaitu prosedur dan fungsi (procedures and functions). hanya cara pemanggilannya berbeda, dan memberikan informasi dengan cara yang berbeda. Pada praktikum-praktikum sebelumnya telah digunakan beberapa prosedur bawaan, misalya Write, Writeln, Read dan Readln, serta Fungsi bawaan, misalnya, Odd, Sqr, dll.

Prosedur (Procedures) memiliki struktur yang sama dengan struktur program, yaitu terdiri dari nama prosedur, pengumuman-pengumuman atau deklarasi (kecuali pengumuman uses), dan bagian utama (pernyataan) dari prosedur tersebut. Di dalam prosedur juga dimungkinkan terdapat prosedur (atau fungsi) lainnya, sehingga dapat disebut dengan prosedur bersarang (nested procedures).

Bentuk Prosedure:

PROCEDURE Nama(Daftar Parameter) BEGIN

Deklarasi variable local Daftar Pernyataan END;

Fungsi (functions) hampir sama dengan prosedur, dengan sedikit perbedaan bahwa nama fungsi sekaligus berfungsi sebagai suatu ungkapan (pada blok pemanggil fungsi tersebut). Sehingga setiap fungsi harus diumumkan tipe datanya.

Bentuk Prosedure:

FUNCTION Nama(Daftar Parameter):Tipe; BEGIN

Deklarasi variable local Daftar Pernyataan END;

Parameter : variable yang ditempatkan dalam judul procedure/fungsi untuk menerima nilai jika ada nilai yang dikirim ke dalam sebuah procedure/fungsi.

H. KEGIATAN PRAKTIKUM

PENYELESAIAN:

PROGRAM PRAK4_01;

USES CRT;

VAR I,PANJANG :INTEGER;

PROCEDURE, FUNCTION

MATERI 4

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program modular menggunakan procedure, function.

(18)

Praktikum Teknik Pemrograma

18

KATA:STRING; PROCEDURE CETAK; BEGIN WRITELN(KATA); END; PROCEDURE GARIS; BEGIN

FOR I:=1 TO LENGTH(KATA) DO WRITE('=');

END; BEGIN

WRITE('Masukkan Sebuah Kalimat: '); READLN(KATA);

CLRSCR;

GARIS; {Panggil Prosedure Garis} WRITELN;

CETAK; {Panggil Prosedure Cetak} GARIS; {Panggil Prosedure Garis}

READKEY; {Menunggu Penekanan Tombol Di Keyboard}

END. PENYELESAIAN: PROGRAM PRAK4_02; USES CRT; VAR HASIL: REAL; I, PILIH, A, X, N: INTEGER; STATUS: BOOLEAN; PROCEDURE PANGKAT; BEGIN

WRITE('MASUKKAN SEMBARANG ANGKA : '); READLN(X);

WRITE('AKAN DIPANGKATKAN BERAPA : '); READLN(A);

HASIL := 1;

FOR I := 1 TO A DO HASIL := X * HASIL; WRITELN('JADI ', X,' DIPANGKATKAN ', A,' : ',HASIL:6:2);

END;

PROCEDURE FAKTORIAL;

BEGIN

WRITE('MASUKKAN SEMBARANG ANGKA : '); READLN(N);

IF N <= 1 THEN HASIL := 1 ELSE

BEGIN

HASIL := 1;

FOR I := 2 TO N DO HASIL := HASIL * I; END;

WRITELN('JADI FACTORIAL ', N,' (', N,'!) : ',HASIL:6:2);

END;

{PROGRAM UTAMA}

BEGIN

(19)

Praktikum Teknik Pemrograma

19

REPEAT CLRSCR; WRITELN('<<MENU PILIHAN>>'); WRITELN('<<============>>'); WRITELN('1. PEMANGKATAN'); WRITELN('2. FAKTORIAL '); WRITELN('3. KELUAR'); WRITELN('=============='); WRITE('PILIHAN ANDA [1,2,3]: '); READLN(PILIH); CASE PILIH OF 1 : BEGIN PANGKAT; STATUS := FALSE; END; 2 : BEGIN FAKTORIAL; STATUS := FALSE; END; 3 : STATUS := TRUE; ELSE BEGIN

WRITELN('PILIHAN ANDA SALAH !'); STATUS := TRUE; END; END; READLN; UNTIL STATUS; END. PROGRAM PRAK4_03; USES WINCRT; CONST PHI=3.14; VAR

K,L,R:REAL; {K:KELILING, L:LUAS, R:JARI-JARI} PILIH :INTEGER;

FUNCTION LUAS(JARI:REAL):REAL; BEGIN

LUAS:=PHI*JARI*JARI; END;

FUNCTION KELILING(JARI:REAL):REAL; BEGIN KELILING:=2*PHI*JARI; END; {PROGRAM UTAMA} BEGIN REPEAT CLRSCR;

GOTOXY(10,4); WRITE('MASUKKAN NILAI JARI-JARI LINGKARAN: '); GOTOXY(45,4); READLN(R);

GOTOXY(10,6); WRITE('1. HITUNG LUAS LINGKARAN'); GOTOXY(10,7); WRITE('2. HITUNG KELILING LINGKARAN');

(20)

Praktikum Teknik Pemrograma

20

GOTOXY(10,8); WRITE('3. SELESAI:');

GOTOXY(10,9); WRITE('PILIHAN ANDA [ ]'); REPEAT GOTOXY(24,9);READLN(PILIH); UNTIL PILIH IN [1,2,3]; CASE PILIH OF 1 : BEGIN L:=LUAS(R); GOTOXY(10,11);WRITE('LUAS LINGKARAN: '); GOTOXY(26,11);WRITE(L:8:2); END; 2 : BEGIN K:=KELILING(R); GOTOXY(10,11);WRITE('KELILING LINGKARAN: '); GOTOXY(26,11);WRITE(K:8:2); END; END; READKEY; UNTIL PILIH=3; END.

Buatlah menggunakan untuk menampilkan pilihan berikut: <<MENU PILIHAN OPERASI>>

======================== 1. LUAS PERSEGI PANJANG 2. LUAS KUBUS

3. LUAS LINGKARAN

4. LUAS PERMUKAAN BOLA 5. SELESAI

PILIHAN ANDA [ ]

Jika Pilihan=1, maka panggil modul luas persegi panjang untuk membaca data menghitung luas persegi panjang, dan menampilkan luas persegi panjang.

Jika Pilihan=2, maka panggil modul luas kubus untuk membaca data menghitung luas kubus, dan menampilkan luas kubus.

Jika Pilihan=3, maka panggil modul luas lingkaran untuk membaca data menghitung luas lingkaran, dan menampilkan luas lingkaran.

Jika Pilihan=4, maka panggil modul luas permukaan bola untuk membaca data menghitung luas permukaan bola, dan menampilkan luas permukaan bola.

Jika Pilihan=5, maka selesai

(21)

Praktikum Teknik Pemrograma

21

I. PENDAHULUAN

Larik adalah suatu wadah yang digunakan untuk menampung data yang sejenis. Berdasarkan dimensi maka larik dapat dikategorikan menjadi 3 yaitu (1) vektor yaitu larik berdimensi satu; (2) matriks yaitu larik berdimensi dua; (3) tensor yaitu matrik bermiensi lebih dari dua

Pendefinisian array secara umum adalah sebagai berikut: Jika kita ingin membuat beberapa array dengan tipe/jenis yang sama, kita lebih baik jika mendeklarasikan dengan type selanjutnya dengan deklarasi var dengan bentuk:

TYPE

Nama_array = ARRAY[bawah..atas] of tipe_data; VAR

variabel_array : nama_array;

atau dengan menggunakan statement var : VAR

variabel_array : ARRAY[bawah..atas] of tipe_data;

Penjelasan: Bawah dan Atas menyatakan batas untuk array. tipe_data adalah merupakan tipe variabel yang dipunyai array (mis. Integer, char, real, dsb)

J. KEGIATAN PRAKTIKUM

PENYELESAIAN:

PROGRAM P5_01;

{Program Array Menggunakan 1 Dimensi}

USES CRT;

VAR

A: ARRAY[1..10] OF BYTE;{Maksimum Jumlah Elemen=10}

BEGIN A[1]:=10; A[2]:=15; A[3]:=A[1]+A[2]; WRITELN(A[1]); WRITELN(A[2]); WRITELN(A[3]); END. PENYELESAIAN: PROGRAM PRAK4_02; USES CRT; CONST N=5;

LARIK DIMENSI SATU <VEKTOR>

MATERI 5

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan vektor.

Kegiatan-1. Ketik Program Berikut

(22)

Praktikum Teknik Pemrograma

22

CONST M=10; VAR A: ARRAY [1..N] OF INTEGER; B:ARRAY[1..M] OF INTEGER; C:ARRAY[1..N+M] OF INTEGER; INDEKS, L: INTEGER; LAGI: CHAR; PROCEDURE BACA_A; BEGIN FOR INDEKS:=1 TO N DO BEGIN

GOTOXY(5,4); WRITE('ELEMEN LARIK A[ ]=[ ]'); GOTOXY(20,4);WRITE(INDEKS); GOTOXY(24,4);READ(A[INDEKS]); END; END; PROCEDURE BACA_B; BEGIN FOR INDEKS:=1 TO M DO BEGIN GOTOXY(5,5);WRITE('ELEMEN LARIK B[ ]=[ ]'); GOTOXY(20,5);WRITE(INDEKS); GOTOXY(24,5);READ(B[INDEKS]); END; END; PROCEDURE GABUNG; BEGIN

{SALIN LARIK A KE LARIK C} FOR INDEKS:=1 TO N DO C[INDEKS]:= A[INDEKS]; {SALIN LARIK A KE LARIK C} L:=M+N;

FOR INDEKS:=N+1 TO L DO C[INDEKS] := B[INDEKS-N]; END;

PROCEDURE CETAK; BEGIN

CLRSCR;

WRITELN('<<ISI VEKTOR A>>'); FOR INDEKS:=1 TO N DO WRITE(A[INDEKS],' '); WRITELN; WRITELN('<<ISI VEKTOR B>>'); FOR INDEKS:=1 TO M DO WRITE(B[INDEKS],' '); WRITELN;

WRITELN('<<ISI VEKTOR C=VEKTOR A+VEKTOR B>>'); FOR INDEKS:=1 TO N+M DO WRITE(C[INDEKS],' '); END; {Program Utama} BEGIN {Baca Larik A} REPEAT CLRSCR; BACA_A;

(23)

Praktikum Teknik Pemrograma

23

{Baca Larik B} BACA_B; GABUNG; CETAK; WRITELN;

WRITE('MASIH ADA DATA [Y/T] :'); READLN(LAGI); UNTIL UPCASE(LAGI)='T'; END. PROGRAM PRAK4_03; USES CRT; CONST N=6; VAR

DATA: ARRAY [1..N] OF INTEGER; I,J,TEMP :INTEGER; LAGI: CHAR; PROCEDURE BACA; BEGIN FOR I:=1 TO N DO BEGIN GOTOXY(5,4);WRITE('DATA KE-[ ]=[ ]'); GOTOXY(14,4);WRITE(I); GOTOXY(18,4);READ(DATA[I]); END; END; PROCEDURE SORTING; BEGIN FOR I:=1 TO N-1 DO BEGIN FOR J:=I+1 TO N DO BEGIN IF DATA[I]>DATA[J] THEN BEGIN TEMP:=DATA[I]; DATA[I]:=DATA[J]; DATA[J]:=TEMP; END; END; END; END; PROCEDURE CETAK; BEGIN FOR I:=1 TO N DO WRITE(DATA[I],' '); END; {PROGRAM UTAMA} BEGIN REPEAT CLRSCR; BACA; CLRSCR;

(24)

Praktikum Teknik Pemrograma

24

WRITELN('DATA SEBELUM DIURUTKAN');

CETAK; SORTING; WRITELN; WRITELN;

WRITELN('DATA SETELAH DIURUTKAN’); CETAK;

WRITELN;

WRITE('MASIH ADA DATA [Y/T] :'); READLN(LAGI); UNTIL UPCASE(LAGI)='T'; END. PROGRAM PRAK5_04; USES CRT; CONST N=100; VAR

JA: ARRAY[1..N] OF BYTE; {JA=JUMLAH ANAK} GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NIK:ARRAY[1..N] OF STRING[9]; {GOL=GOLONGAN}

NAMA:ARRAY[1..N] OF STRING[15]; {GOL=GOLONGAN} TOTALGAJI, TANAK, TKELUARGA:REAL;

GOL,STATUS:ARRAY[1..N] OF CHAR; LAGI : CHAR;

I,J, BARIS, JUMLAH:INTEGER;

PROCEDURE GARIS; BEGIN FOR J:=1 TO 80 DO WRITE('-'); END; {PROGRAM UTAMA} BEGIN LAGI:='Y'; I:=0; WHILE UPCASE(LAGI)='Y' DO BEGIN INC(I); CLRSCR; {INPUT DATA}

GOTOXY(5,2);WRITE('ENTRI IDENTITAS PEGAWAI'); GOTOXY(5,3);WRITE('=======================');

GOTOXY(5,4);WRITE('NO. INDUK KARYAWAN:[ ]'); GOTOXY(25,4);READLN(NIK[I]); GOTOXY(5,5);WRITE('NAMA KARYAWAN :[ ]'); GOTOXY(25,5);READLN(NAMA[I]); GOTOXY(5,6);WRITE('GOLONGAN [1,2,3,4]:[ ]'); GOTOXY(25,6);READLN(GOL[I]); GOTOXY(5,7);WRITE('STATUS [K/B] :[ ]'); GOTOXY(25,7);READLN(STATUS[I]); IF UPCASE(STATUS[I])='K' THEN BEGIN GOTOXY(5,8);WRITE('JUMLAH ANAK :[ ]'); GOTOXY(25,8);READLN(JA[I]); END

(25)

Praktikum Teknik Pemrograma

25

ELSE

JA[I]:=0;

GOTOXY(5,10);WRITE('MASIH ADA DATA [Y/T]:[ ]'); GOTOXY(27,10);READLN(LAGI);

END;

JUMLAH:=I; {CETAK LAPORAN} CLRSCR;

GOTOXY(1,1);WRITE('DAFTAR GAJI KARYAWAN PT XYZ'); GOTOXY(1,2);GARIS; GOTOXY(1,3);WRITE('|'); GOTOXY(2,3);WRITE('NO.'); GOTOXY(5,3);WRITE('|'); GOTOXY(6,3);WRITE('N I K'); GOTOXY(14,3);WRITE('|');

GOTOXY(15,3);WRITE(' NAMA KARYAWAN'); GOTOXY(30,3);WRITE('|'); GOTOXY(31,3);WRITE('GOL.'); GOTOXY(34,3);WRITE('|'); GOTOXY(35,3);WRITE('STATUS'); GOTOXY(41,3);WRITE('|'); GOTOXY(42,3);WRITE('ANAK'); GOTOXY(46,3);WRITE('|'); GOTOXY(47,3);WRITE('GAPOK'); GOTOXY(54,3);WRITE('|'); GOTOXY(55,3);WRITE('T. KEL.'); GOTOXY(62,3);WRITE('|'); GOTOXY(63,3);WRITE('T. ANAK'); GOTOXY(69,3);WRITE('|'); GOTOXY(70,3);WRITE('TOTALGAJI'); GOTOXY(80,3);WRITE('|'); GOTOXY(1,4);GARIS; BARIS:=4;

FOR I:=1 TO JUMLAH DO BEGIN

INC(BARIS);

{Mencari Gaji Pokok Berdasarkan Golongan} IF (GOL[I]='1') THEN GAPOK:=500000

ELSE IF (GOL[I]='2') THEN GAPOK:=600000 ELSE IF (GOL[I]='3') THEN GAPOK:=700000 ELSE GAPOK:=1000000;

{Menghitung Tunjangan Keluarga}

IF STATUS[I]='K' THEN TKELUARGA:=10/100*GAPOK ELSE TKELUARGA:=0;

{Menghitung Tunjangan Anak}

IF JA[I]>2 THEN TANAK:=2 * GAPOK * 2/100 ELSE TANAK:= JA[I] * GAPOK * 2/100; TOTALGAJI:=GAPOK+TKELUARGA+TANAK; GOTOXY(1,BARIS);WRITE('|');

GOTOXY(2,BARIS);WRITE(I); GOTOXY(5,BARIS);WRITE('|');

(26)

Praktikum Teknik Pemrograma

26

GOTOXY(6,BARIS);WRITE(NIK[I]); GOTOXY(14,BARIS);WRITE('|'); GOTOXY(15,BARIS);WRITE(NAMA[I]); GOTOXY(30,BARIS);WRITE('|'); GOTOXY(31,BARIS);WRITE(GOL[I]); GOTOXY(34,BARIS);WRITE('|'); GOTOXY(35,BARIS);WRITE(STATUS[I]); GOTOXY(41,BARIS);WRITE('|'); GOTOXY(42,BARIS);WRITE(JA[I]); GOTOXY(46,BARIS);WRITE('|'); GOTOXY(47,BARIS);WRITE(GAPOK:7); GOTOXY(54,BARIS);WRITE('|'); GOTOXY(55,BARIS);WRITE(TKELUARGA:6:0); GOTOXY(62,BARIS);WRITE('|'); GOTOXY(63,BARIS);WRITE(TANAK:6:0); GOTOXY(69,BARIS);WRITE('|'); GOTOXY(70,BARIS);WRITE(TOTALGAJI:7:0); GOTOXY(80,BARIS);WRITE('|');

IF BARIS>22 THEN BARIS:=4;

END;

GOTOXY(1,BARIS+1);GARIS;

END.

Buatlah program untuk membaca data nilai mahasiswa berikut: Masukan: NO. STAMBUK : [ ] NAMA MAHASISWA : [ ] NILAI TUGAS : [ ] NILAI MID : [ ] NILAI FINAL : [ ] MASIH ADA DATA [Y/T] : [ ] Keluaran:

DAFTAR NILAI MAHASISWA

--- | No. | No. Stambuk | Nama Mahasiswa | Tugas | Mid | Final | Akhir | Huruf | --- | | | | | | | | | | | | | | | | | | --- Dimana:

Nilai Akhir = 20%*Nilai Tugas + 35%*Nilai Mid + 45%*Nilai Final Jikai Nilai Akhir>85, maka Nilai Huruf=‟A‟

Jika 75<Nilai Akhir<=85, maka Nilai Huruf=‟B‟ Jika 65<Nilai Akhir<=75, maka Nilai Huruf=‟C‟ Jika 55<Nilai Akhir<=65, maka Nilai Huruf=‟D‟ Jika Akhir<=55, maka Nilai Huruf=‟E‟

(27)

Praktikum Teknik Pemrograma

27

K. PENDAHULUAN

Matriks adalah sekumpulan informasi yang setiap individu elemennya diacu dengan menggunakan dua buah indeks (yang biasanya dikonotasikan dengan baris dan kolom). Matriks juga biasa disebut tabel. Konsep umum larik berlaku juga pada Matriks, yaitu: 1. Kumpulan elemen bertipe sama;

2. Setiap elemen data dapat diakses secara acak, jika indeksnya (baris dan kolom) sudah diketahui;

3. Merupakan struktur data statis, artinya jumlah elemennya sudah ditentukan terlebih dahulu di dalam kamus dan tidak bisa diubah selama pelaksanaan program.

Sebuah matriks dapat dideklarasikan dengan bentuk berikut:

TYPE nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data; VAR variabel_array : nama_array;

atau dengan menggunakan statement var :

VAR variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;

L. KEGIATAN PRAKTIKUM PENYELESAIAN: PROGRAM PRAK6_01; USES CRT; CONST N=3; CONST M=3;

TYPE LARIK = ARRAY[1..M,1..N] OF INTEGER;

VAR A, B, C : LARIK; I, J: INTEGER; LAGI:CHAR; PROCEDURE BACA; BEGIN {BACA MATRIKS A}

WRITELN('MENGISI ELEMEN MATRIKS A'); WRITELN('========================'); FOR I:=1 TO M DO BEGIN FOR J:=1 TO N DO BEGIN WRITE('A',I,’,’,J,'='); READ(A[I,J]); END; END; WRITELN;

LARIK DIMENSI DUA <MATRIKS>

MATERI 6

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan matriks.

(28)

Praktikum Teknik Pemrograma

28

WRITELN('MENGISI ELEMEN MATRIKS B');

WRITELN('========================'); {BACA MATRIKS B} FOR I:=1 TO M DO BEGIN FOR J:=1 TO N DO BEGIN WRITE('B',I,’,’,J,'='); READLN(B[I,J]); END; END; END; PROCEDURE TAMBAH; BEGIN FOR I:=1 TO M DO BEGIN FOR J:= 1 TO N DO

C[I,J]:= A[I,J] + B[I,J]; END;

END;

PROCEDURE CETAK(VAR MATRIKS:LARIK); BEGIN FOR I:= 1 TO M DO BEGIN FOR J:=1 TO N DO WRITE(MATRIKS[I,J],' '); WRITELN; END; END; {ROGRAM UTAMA} BEGIN REPEAT CLRSCR; BACA; TAMBAH; CLRSCR;

WRITELN('ISI MATRIKS A'); WRITELN('============='); CETAK(A); WRITELN('ISI MATRIKS B'); WRITELN('============='); CETAK(B); WRITELN('ISI MATRIKS C'); WRITELN('============='); CETAK(C); WRITELN;

WRITE('MASIH ADA DATA [Y/T]:');READLN(LAGI);

UNTIL UPCASE(LAGI)='T'; END.

PENYELESAIAN:

(29)

Praktikum Teknik Pemrograma

29

PROGRAM PRAK6_02; USES WINCRT; CONST M =2; CONST N=3; CONST P=4; VAR A: ARRAY[1..M,1..N] OF INTEGER; B: ARRAY[1..N,1..P] OF INTEGER; C: ARRAY[1..M,1..P] OF INTEGER; I, J,K: INTEGER; LAGI:CHAR; PROCEDURE BACA_A; BEGIN {BACA MATRIKS A}

WRITELN('MENGISI ELEMEN MATRIKS A'); WRITELN('========================'); FOR I:=1 TO M DO BEGIN FOR J:=1 TO N DO BEGIN WRITE('A',I,',',J,'='); READ(A[I,J]); END; END; END; PROCEDURE BACA_B; BEGIN {BACA MATRIKS B} FOR I:=1 TO N DO BEGIN FOR J:=1 TO P DO BEGIN WRITE('B',I,',',J,'='); READLN(B[I,J]); END; END; END; PROCEDURE KALI; BEGIN FOR I:=1 TO M DO BEGIN FOR J:= 1 TO P DO BEGIN C[I,J]:=0; FOR K:=1 TO N DO BEGIN

C[I,J]:= C[I,J]+ A[I,K]*B[K,J]; END; END; END; END; PROCEDURE CETAK_A; BEGIN

(30)

Praktikum Teknik Pemrograma

30

FOR I:= 1 TO M DO BEGIN FOR J:=1 TO N DO WRITE(A[I,J],' '); WRITELN; END; END; PROCEDURE CETAK_B; BEGIN FOR I:= 1 TO N DO BEGIN FOR J:=1 TO P DO WRITE(B[I,J],' '); WRITELN; END; END; PROCEDURE CETAK_C; BEGIN FOR I:= 1 TO M DO BEGIN FOR J:=1 TO P DO WRITE(C[I,J],' '); WRITELN; END; END; {PROGRAM UTAMA} BEGIN REPEAT CLRSCR; BACA_A; BACA_B; KALI; CLRSCR;

WRITELN('ISI MATRIKS A'); WRITELN('============='); CETAK_A; WRITELN('ISI MATRIKS B'); WRITELN('============='); CETAK_B; WRITELN('ISI MATRIKS C'); WRITELN('============='); CETAK_C; WRITELN;

WRITE('MASIH ADA DATA [Y/T]:');READLN(LAGI);

UNTIL UPCASE(LAGI)='T'; END.

1. Jika diberikan Matriks bujursangkar A dengan ukuran M x M, maka susunlah program modular menggunakan procedure atau fungsi untuk mengisi setiap elemen matriks A, menentukan elemen terkecil dalam matriks A, posisi baris dan kolom elemen terkecil dalam matriks A.

(31)
(32)

Praktikum Teknik Pemrograma

32

M. PENDAHULUAN

Record adalah elemen larik yang bertipe terstruktur. Dengan menggunakan tipe data record, beberapa item data yang masing-masing dapat mempunyai tipe data berbeda-beda dapat dikumpulkan. Masing-masing item data disebut dengan field. Jadi record terdiri dari kumpulan field yang dapat berbeda tipe. Biasanya suatu record berisi beberapa field untuk sebuah subyek tertentu.

Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya (di banding array). Cara pendeklarasian dari record adalah sbb:

a. Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai), b. Mendefinisikan variabel untuk dilakukan operasi.

Sintaks: TYPE Nama_record = record identifier_1 : tipe_data_1; : : identifier_n : tipe_data_n; END; VAR Variabel : nama_record; N. KEGIATAN PRAKTIKUM PENYELESAIAN: PROGRAM PRAK7_01; USES CRT; TYPE REKAMAN=RECORD

JA: BYTE; {JA=JUMLAH ANAK}

GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NIK:STRING[9]; {GOL=GOLONGAN}

NAMA:STRING[15]; {GOL=GOLONGAN}

TOTALGAJI, TANAK, TKELUARGA:REAL; GOL,STATUS:CHAR; END; VAR LAGI : CHAR; KARYAWAN:REKAMAN; {PROGRAM UTAMA} BEGIN LAGI:='Y';

TIPE DATA REKAMAN

<RECORD>

MATERI 8

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan tipe data record.

(33)

Praktikum Teknik Pemrograma

33

WHILE UPCASE(LAGI)='Y' DO BEGIN

CLRSCR; {INPUT DATA}

GOTOXY(5,2);WRITE('ENTRI IDENTITAS PEGAWAI'); GOTOXY(5,3);WRITE('=======================');

GOTOXY(5,4);WRITE('NO. INDUK KARYAWAN:[ ]');

GOTOXY(5,5);WRITE('NAMA KARYAWAN :[ ]'); GOTOXY(5,6);WRITE('GOLONGAN [1,2,3,4]:[ ]'); GOTOXY(5,7);WRITE('STATUS [K/B] :[ ]'); GOTOXY(25,4);READLN(KARYAWAN.NIK); GOTOXY(25,5);READLN(KARYAWAN.NAMA); GOTOXY(25,6);READLN(KARYAWAN .GOL); GOTOXY(25,7);READLN(KARYAWAN.STATUS); IF UPCASE(KARYAWAN.STATUS)='K' THEN BEGIN GOTOXY(5,8);WRITE('JUMLAH ANAK :[ ]'); GOTOXY(25,8);READLN(KARYAWAN.JA); END ELSE KARYAWAN.JA:=0;

IF (KARYAWAN.GOL='1') THEN KARYAWAN.GAPOK:=500000 ELSE IF (KARYAWAN.GOL='2') THEN KARYAWAN.GAPOK:=600000 ELSE IF (KARYAWAN.GOL='3') THEN KARYAWAN.GAPOK:=700000 ELSE KARYAWAN.GAPOK:=1000000;

{Menghitung Tunjangan Keluarga} IF KARYAWAN.STATUS='K' THEN

KARYAWAN.TKELUARGA:=10/100* KARYAWAN.GAPOK ELSE KARYAWAN.TKELUARGA:=0;

{Menghitung Tunjangan Anak} IF KARYAWAN.JA>2 THEN

KARYAWAN.TANAK:=2 * KARYAWAN.GAPOK * 2/100 ELSE

KARYAWAN.TANAK:= KARYAWAN.JA * KARYAWAN.GAPOK * 2/100; KARYAWAN.TOTALGAJI:=KARYAWAN.GAPOK+ KARYAWAN.TKELUARGA + KARYAWAN.TANAK; GOTOXY(5,9);WRITE('GAJI POKOK :[ ]'); GOTOXY(5,10);WRITE('TUNJ. KELUARGA :[ ]'); GOTOXY(5,11);WRITE('TUNJANGAN ANAK :[ ]'); GOTOXY(5,12);WRITE('TOTAL GAJI :[ ]'); GOTOXY(25,9);WRITE(KARYAWAN.GAPOK:7); GOTOXY(25,10);WRITE(KARYAWAN.TKELUARGA:7:0); GOTOXY(25,11);WRITE(KARYAWAN.TANAK:7:0); GOTOXY(25,12);WRITE(KARYAWAN.TOTALGAJI:7:0); GOTOXY(5,14);WRITE('MASIH ADA DATA [Y/T]:[ ]'); GOTOXY(27,14);READLN(LAGI); END; END. PENYELESAIAN: PROGRAM PRAK7_01; USES WINCRT;

TYPE REKAMAN=RECORD

(34)

Praktikum Teknik Pemrograma

34

JA: BYTE; {JA=JUMLAH ANAK}

GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NIK:STRING[9]; {GOL=GOLONGAN}

NAMA:STRING[15]; {GOL=GOLONGAN}

TOTALGAJI, TANAK, TKELUARGA:REAL; GOL,STATUS:CHAR; END; VAR LAGI : CHAR; KARYAWAN:REKAMAN; PROCEDURE BACADATA; BEGIN CLRSCR; {INPUT DATA} WITH KARYAWAN DO BEGIN

GOTOXY(5,2);WRITE('ENTRI IDENTITAS PEGAWAI'); GOTOXY(5,3);WRITE('=======================');

GOTOXY(5,4);WRITE('NO. INDUK KARYAWAN:[ ]');

GOTOXY(5,5);WRITE('NAMA KARYAWAN :[ ]'); GOTOXY(5,6);WRITE('GOLONGAN [1,2,3,4]:[ ]'); GOTOXY(5,7);WRITE('STATUS [K/B] :[ ]'); GOTOXY(25,4);READLN(NIK); GOTOXY(25,5);READLN(NAMA); GOTOXY(25,6);READLN(GOL); GOTOXY(25,7);READLN(STATUS); IF UPCASE(STATUS)='K' THEN BEGIN GOTOXY(5,8);WRITE('JUMLAH ANAK :[ ]'); GOTOXY(25,8);READLN(JA); END ELSE JA:=0; END; END; PROCEDURE HITUNG_GAJI; BEGIN WITH KARYAWAN DO BEGIN

IF (GOL='1') THEN GAPOK:=500000

ELSE IF (GOL='2') THEN GAPOK:=600000 ELSE IF (GOL='3') THEN GAPOK:=700000 ELSE GAPOK:=1000000;

{MENGHITUNG TUNJANGAN KELUARGA}

IF STATUS='K' THEN TKELUARGA:=10/100*GAPOK ELSE TKELUARGA:=0;

{MENGHITUNG TUNJANGAN ANAK}

IF JA>2 THEN TANAK:=2 * GAPOK * 2/100 ELSE TANAK:= JA * GAPOK * 2/100; TOTALGAJI:=GAPOK+TKELUARGA+TANAK; END;

(35)

Praktikum Teknik Pemrograma

35

0 s.d. 2 3 s.d. 4 5 s.d. 6 7 s.d. 8 9 s.d. 10 11 ke atas I 450000 500000 550000 600000 650000 700000 II 800000 850000 900000 950000 1000000 1050000 III 1150000 1200000 1250000 1300000 1350000 1400000 IV 1500000 1550000 1600000 1650000 1700000 1750000 Masa Kerja Golongan PROCEDURE CETAK; BEGIN WITH KARYAWAN DO BEGIN GOTOXY(5,9);WRITE('GAJI POKOK :[ ]'); GOTOXY(5,10);WRITE('TUNJ. KELUARGA :[ ]'); GOTOXY(5,11);WRITE('TUNJANGAN ANAK :[ ]'); GOTOXY(5,12);WRITE('TOTAL GAJI :[ ]'); GOTOXY(25,9);WRITE(GAPOK:7); GOTOXY(25,10);WRITE(TKELUARGA:7:0); GOTOXY(25,11);WRITE(TANAK:7:0); GOTOXY(25,12);WRITE(TOTALGAJI:7:0); END; END; {PROGRAM UTAMA} BEGIN LAGI:='Y'; WHILE UPCASE(LAGI)='Y' DO BEGIN BACADATA; HITUNG_GAJI; CETAK;

GOTOXY(5,14);WRITE('MASIH ADA DATA [Y/T]:[ ]'); GOTOXY(27,14);READLN(LAGI);

END;

END.

PT ABADI NAN JAYA MAKASSAR memberikan tunjangan anak kepada karyawannya sebesar 5% dari gaji pokok untuk setiap anak. Jumlah anak yang boleh masuk tanggungan adalah maksimum 2 orang anak. Gaji pokok didasarkan pada tabel golongan dan masa kerja berikut:

Buatlah program menggunakan type data rekaman/record yang menerima nomor induk karyawan (NIK), nama, golongan, jumlah anak, dan masa kerja kemudian tampilkan total gaji dari seorang karyawan. Total gaji diperoleh dari Gaji Pokok + Tunjangan Anak

(36)

Praktikum Teknik Pemrograma

36

O. PENDAHULUAN

Yang dimaksud dengan record dan array di sini adalah suatu record dapat menampung lebih dari satu record data. Mendefenisikan record dalam bentuk array:

P. KEGIATAN PRAKTIKUM PENYELESAIAN: PROGRAM PRAK8_01; USES WINCRT; CONST M=100; TYPE REKAMAN=RECORD

JA: BYTE; {JA=JUMLAH ANAK}

GAPOK: LONGINT; {GAPOK = GAJI POKOK}

NIK:STRING[9]; {GOL=GOLONGAN}

NAMA:STRING[15]; {GOL=GOLONGAN}

GOL,STATUS:CHAR; END;

VAR LAGI : CHAR;

I,J, BARIS, JUMLAH:INTEGER; KARYAWAN:ARRAY[1..M] OF REKAMAN; TOTALGAJI, TANAK, TKELUARGA:REAL;

PROCEDURE GARIS; BEGIN FOR J:=1 TO 80 DO WRITE('-'); END; PROCEDURE BACADATA; BEGIN CLRSCR; {Input Data} INC(I); WITH KARYAWAN[I] DO BEGIN

GOTOXY(5,2);WRITE('ENTRI IDENTITAS PEGAWAI'); GOTOXY(5,3);WRITE('=======================');

GOTOXY(5,4);WRITE('NO. INDUK KARYAWAN:[ ]'); GOTOXY(5,5);WRITE('NAMA KARYAWAN :[ ]'); GOTOXY(5,6);WRITE('GOLONGAN [1,2,3,4]:[ ]');

GOTOXY(5,7);WRITE('STATUS [K/B] :[ ]');

TIPE DATA REKAMAN

&

ARRAY

MATERI 9

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan tipe data record dan array.

Kegiatan-1. Program Menghitung Gaji dengan Rekaman dan Array

type nama_record = record

identifier_1 : tipe_data_1; :

identifier_n : tipe_data_n;

end;

(37)

Praktikum Teknik Pemrograma

37

GOTOXY(25,4);READLN(NIK); GOTOXY(25,5);READLN(NAMA); GOTOXY(25,6);READLN(GOL); GOTOXY(25,7);READLN(STATUS); IF UPCASE(STATUS)='K' THEN BEGIN GOTOXY(5,8);WRITE('JUMLAH ANAK :[ ]'); GOTOXY(25,8);READLN(JA); END ELSE JA:=0; END; END; PROCEDURE CETAK; BEGIN JUMLAH:=I; {Cetak Laporan} CLRSCR;

GOTOXY(1,1);WRITE('DAFTAR GAJI KARYAWAN PT XYZ'); GOTOXY(1,2);GARIS; GOTOXY(1,3);WRITE('|'); GOTOXY(2,3);WRITE('NO.'); GOTOXY(5,3);WRITE('|'); GOTOXY(6,3);WRITE('N I K'); GOTOXY(14,3);WRITE('|');

GOTOXY(15,3);WRITE(' NAMA KARYAWAN'); GOTOXY(30,3);WRITE('|'); GOTOXY(31,3);WRITE('GOL.'); GOTOXY(34,3);WRITE('|'); GOTOXY(35,3);WRITE('STATUS'); GOTOXY(41,3);WRITE('|'); GOTOXY(42,3);WRITE('ANAK'); GOTOXY(46,3);WRITE('|'); GOTOXY(47,3);WRITE('GAPOK'); GOTOXY(54,3);WRITE('|'); GOTOXY(55,3);WRITE('T. KEL.'); GOTOXY(62,3);WRITE('|'); GOTOXY(63,3);WRITE('T. ANAK'); GOTOXY(69,3);WRITE('|'); GOTOXY(70,3);WRITE('TOTALGAJI'); GOTOXY(80,3);WRITE('|'); GOTOXY(1,4);GARIS; BARIS:=4;

FOR I:=1 TO JUMLAH DO BEGIN

INC(BARIS);

WITH KARYAWAN[I] DO BEGIN

{Mencari Gaji Pokok Berdasarkan Golongan} IF (GOL='1') THEN GAPOK:=500000

ELSE IF (GOL='2') THEN GAPOK:=600000 ELSE IF (GOL='3') THEN GAPOK:=700000 ELSE GAPOK:=1000000;

{Menghitung Tunjangan Keluarga}

IF STATUS='K' THEN TKELUARGA:=10/100*GAPOK ELSE TKELUARGA:=0;

{Menghitung Tunjangan Anak}

(38)

Praktikum Teknik Pemrograma

38

0 s.d. 2 3 s.d. 4 5 s.d. 6 7 s.d. 8 9 s.d. 10 11 ke atas I 450000 500000 550000 600000 650000 700000 II 800000 850000 900000 950000 1000000 1050000 III 1150000 1200000 1250000 1300000 1350000 1400000 IV 1500000 1550000 1600000 1650000 1700000 1750000 Masa Kerja Golongan

ELSE TANAK:= JA * GAPOK * 2/100; TOTALGAJI:=GAPOK+TKELUARGA+TANAK; GOTOXY(1,BARIS);WRITE('|'); GOTOXY(2,BARIS);WRITE(I); GOTOXY(5,BARIS);WRITE('|'); GOTOXY(6,BARIS);WRITE(NIK); GOTOXY(14,BARIS);WRITE('|'); GOTOXY(15,BARIS);WRITE(NAMA); GOTOXY(30,BARIS);WRITE('|'); GOTOXY(31,BARIS);WRITE(GOL); GOTOXY(34,BARIS);WRITE('|'); GOTOXY(35,BARIS);WRITE(STATUS); GOTOXY(41,BARIS);WRITE('|'); GOTOXY(42,BARIS);WRITE(JA); GOTOXY(46,BARIS);WRITE('|'); GOTOXY(47,BARIS);WRITE(GAPOK:7); GOTOXY(54,BARIS);WRITE('|'); GOTOXY(55,BARIS);WRITE(TKELUARGA:6:0); GOTOXY(62,BARIS);WRITE('|'); GOTOXY(63,BARIS);WRITE(TANAK:6:0); GOTOXY(69,BARIS);WRITE('|'); GOTOXY(70,BARIS);WRITE(TOTALGAJI:7:0); GOTOXY(80,BARIS);WRITE('|');

IF BARIS>22 THEN BARIS:=4; END; END; GOTOXY(1,BARIS+1);GARIS; END; {PROGRAM UTAMA} BEGIN I:=0; LAGI:='Y'; WHILE UPCASE(LAGI)='Y' DO BEGIN BACADATA;

GOTOXY(5,14);WRITE('MASIH ADA DATA [Y/T]:[ ]'); GOTOXY(27,14);READLN(LAGI);

CETAK; END;

END.

PT ABADI NAN JAYA MAKASSAR memberikan tunjangan anak kepada karyawannya sebesar 5% dari gaji pokok untuk setiap anak. Jumlah anak yang boleh masuk tanggungan adalah maksimum 2 orang anak. Gaji pokok didasarkan pada tabel golongan dan masa kerja berikut:

Buatlah program menggunakan type data rekaman/record dan array yang menerima nomor induk karyawan (NIK), nama, golongan, jumlah anak, dan masa kerja kemudian tampilkan total gaji dari seorang karyawan. Total gaji diperoleh dari Gaji Pokok + Tunjangan Anak

(39)

Praktikum Teknik Pemrograma

39

Q. PENDAHULUAN

File Teks disusun sebagai runtunan beberapa baris . - Tiap baris terdiri dari runtunan karakter.

- Tiap baris diakhiri oleh karakter khusus, yaitu End-Of-Line (EOL) - Karakter yang terakhir dari file teks adalah End-Of-File (EOF)

EOF adalah menerima argumen nama file dan menghasilkan nilai true jika sudah tidak ada data yang bisa dibaca lagi. Dan EOLN adalah menerima argumen nama file dan menghasilkan nilai true jika sudah tidak ada lagi data yang bisa lagi dalam satu baris. Untuk melakukan operasi pada file teks, kita perlu mendeklarasikan suatu variabel dengan tipe teks seperti berikut:

VAR F : TEXT;

F adalah sembarang variabel file teks. Misalnya akan dibaca file teks dengan nama readme, maka pertama kita harus memanggilnya dengan fungsi: ASSIGN(F,'README'). Untuk bisa membaca file yang dipanggil dengan ASSIGN, dapat dilakukan dengan statement Reset(F); File dapat dibaca baris demi baris, dengan menyatakan suatu variabel s sebagai string: READLN(F, S); Setelah selesai membaca keseluruhan teks, maka harus ditutup dengan CLOSE(F);

Membuka File Baru:

Suatu file teks baru dapat dibuat dengan mengubah kata kunci : RESET(F); menjadi REWRITE(F);

Menambah Data:

Menambah data ke dalam suatu file teks dapat dilakukan dengan membuka file teks tersebut dengan statement APPEND(F);

R. KEGIATAN PRAKTIKUM

PENYELESAIAN:

PROGRAM P10_01;

TYPE COBA = FILE OF BYTE;

VAR FCOBA : COBA;

I : BYTE; BEGIN ASSIGN(FCOBA,'C:\TEST.TXT'); RESET(FCOBA); I:=1; WRITE(FCOBA,I); CLOSE(FCOBA); END. PROGRAM P10_02; TYPE MHS = RECORD

OPERASI FILE TEKS

MATERI 10

Tujuan Instruksional Umum : Setelah mengikuti matakuliah ini, diharapkan mahasiswa mampu membuat program untuk menyelesaikan sejumlah kasus.

Tujuan Instruksional Khusus : Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu menyusun program menggunakan file.

Kegiatan-1. Ketik dan Compile Program Berikut

Referensi

Dokumen terkait

[r]

Processor untuk type desktop dan digunakan pada orang yang ingin kekuatan lebih dari komputer yang ia miliki memiliki 2 buah core dengan konfigurasi 2.4GHz dengan 8MB L2 cache

PENINGKATAN KEMAMPUAN PEMODELAN DAN ABSTRAKSI MATEMATIS SERTA MOTIVASI BELAJAR SISWA SEKOLAH MENENGAH PERTAMA MELALUI PEMBELAJARAN KONTEKSTUAL KOLABORATIF.. Universitas

Perguruan Tinggi Agama [slam, Direktorat Pendidikan lfinggi Islarn akatt3. menyelenggarakan Sosialisasi cktn Luwrching Seleksi Penerimcutn l[ahruiswo

Kendaraan bermotor adalah setiap kendaraan yang digerakkan oleh peralatan teknik yang ada pada kendaran tersebut, biasanya digunakan untuk angkutan orang atau barang

Cara yang efektif untuk meningkatkan kekuatan dan daya tahan otot.. dilakukan dengan cara menggunakan beban, karena dengan latihan beban

JUDUL : PENGARUH MOTIVASI KERJA DAN DISIPLIN KERJA TERHADAP PRESTASI KERJA PEGAWAI DI DINAS PEKERJAAN UMUM PEMERINTAH KOTA SALATIGA JURUSAN/PS :

Dari hasil perbandingan analisa antara perkerasan kaku dengan perkerasan lentur dilihat dari ekonomi perencanaan perkerasan lentur lebih murah tetapi pekerjaan