40
Dosen: Marsel, S.Kom., M.T. 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.

MATERI I STRUKTUR BAHASA PEMROGRAMAN … Marsel, S.Kom., M.T. Praktikum Teknik Pemrograma 3 Reserved Word Reserved Word adalah kata-kata yang sudah mempunyai arti khusus dalam bahasa

Embed Size (px)

Citation preview

Dosen: Marsel, S.Kom., M.T.

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.

Dosen: Marsel, S.Kom., M.T.

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, {komentar} atau (*komentar*)

Dosen: Marsel, S.Kom., M.T.

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) yaitu data 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

Dosen: Marsel, S.Kom., M.T.

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;

Dosen: Marsel, S.Kom., M.T.

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 : N = data tipe integer,

Dosen: Marsel, S.Kom., M.T.

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.

Dosen: Marsel, S.Kom., M.T.

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.

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-5. Buatlah program untuk kasus-kasus berikut ini:

Dosen: Marsel, S.Kom., M.T.

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;

Dosen: Marsel, S.Kom., M.T.

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‟.

Kegiatan-1. Studi Kasus

Dosen: Marsel, S.Kom., M.T.

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.

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-4. Buatlah program untuk kasus-kasus berikut ini:

Dosen: Marsel, S.Kom., M.T.

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.

Bentuk Repeat

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.

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-2. Program membalik kalimat

Dosen: Marsel, S.Kom., M.T.

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;

Kegiatan-4. Modifikasi Program Prak2_03 menjadi seperti berikut ini:

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-5. Buatlah program untuk kasus-kasus berikut ini:

Dosen: Marsel, S.Kom., M.T.

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.

Kegiatan-1. Program untuk mencetak garis dan kalimat menggunakan procedure.

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-2. Program menghitung pangkat dan Faktorial

Dosen: Marsel, S.Kom., M.T.

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');

Kegiatan-3. Menghitung Luas & Keliling Lingkaran dengan Function

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-4. Buatlah Program Untuk Mengelesaikan kasus-kasus berikut

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-2. Program Menggabungkan 2 buah Vektor

Dosen: Marsel, S.Kom., M.T.

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;

Dosen: Marsel, S.Kom., M.T.

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;

Kegiatan-3. Mengurutkan Isi Larik

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-4. Program Perhitungan Gaji Karyawan

Dosen: Marsel, S.Kom., M.T.

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('|');

Dosen: Marsel, S.Kom., M.T.

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‟

Kegiatan-5. STUDI KASUS

Dosen: Marsel, S.Kom., M.T.

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.

Kegiatan-1. Program Menjumlahkan Matriks

Dosen: Marsel, S.Kom., M.T.

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:

Kegiatan-2. Program Perkalian Matriks

Dosen: Marsel, S.Kom., M.T.

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

Dosen: Marsel, S.Kom., M.T.

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.

Kegiatan-5. STUDI KASUS

Dosen: Marsel, S.Kom., M.T.

Praktikum Teknik Pemrograma 31

Dosen: Marsel, S.Kom., M.T.

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.

Kegiatan-1. Menghitung gaji karyawan dengan menggunakan tipe record

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-2. Modifikasi Prak7_01 menggunakan prosedure

Dosen: Marsel, S.Kom., M.T.

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;

END;

Dosen: Marsel, S.Kom., M.T.

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 KerjaGolongan

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

Kegiatan-3. STUDI KASUS

Dosen: Marsel, S.Kom., M.T.

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;

var variabel : Array[1..N] of nama_record;

Dosen: Marsel, S.Kom., M.T.

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}

IF JA>2 THEN TANAK:=2 * GAPOK * 2/100

Dosen: Marsel, S.Kom., M.T.

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 KerjaGolongan

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

Kegiatan-2. STUDI KASUS

Dosen: Marsel, S.Kom., M.T.

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

Kegiatan-2. Ketik dan compile program berikut

Dosen: Marsel, S.Kom., M.T.

Praktikum Teknik Pemrograma 40

NRP : STRING[8];

NAMA : STRING[20];

END;

VAR

FMHS : FILE OF MHS;

TMHS : MHS;

BEGIN

TMHS.NRP := '00112398';

TMHS.NAMA := 'WIWIEN';

ASSIGN(FMHS,'C:\TEST.TXT');

RESET(FMHS);

WRITE(FMHS,TMHS);

CLOSE

END.

PROGRAM P10_03;

CONST N = 2;

TYPE

TMHS = RECORD

NRP : STRING[8];

NAMA : STRING[20];

ALAMAT : STRING;

END;

DTMHS = ARRAY[1..N] OF TMHS;

VAR F : FILE OF DTMHS;

DATAMHS : DTMHS;

I : INTEGER;

BEGIN

FOR I:= 1 TO N DO

BEGIN

WITH DATAMHS[I] DO

BEGIN

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

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

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

END;

END;

ASSIGN(F,'C:\TEST.TXT');

REWRITE(F);

WRITE(F,DATAMHS);

CLOSE(F);

ASSIGN(F,'C:\TEST.TXT');

RESET(F);

READ(F,DATAMHS);

CLOSE(F);

FOR I : = 1 TO N DO

BEGIN

WRITELN(DATAMHS[I].NRP);

WRITELN(DATAMHS[I].NAMA);

WRITELN(DATAMHS[I].ALAMAT);

END;

READLN;

END.

Buatlah 2 procedure untuk menginput data dan menampilkan data pada program P10_03 di

atas

Kegiatan-3. Ketik dan compile program berikut

Kegiatan-4. STUDI KASUS