MODUL PRAKTIKUM PRAKTEK ALGORITMA DAN PEMROGRAMAN II



dokumen-dokumen yang mirip
Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

Bab 1 Pengenalan Pascal 1 BAB I PENGENALAN PASCAL, TIPE-TIPE DATA PASCAL DAN STATEMEN DASAR PADA PASCAL TUJUAN PRAKTIKUM TEORI PENUNJANG

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Struktur Data. Pertemuan 2

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

MODUL 1. Struktur Bahasa PASCAL secara umum

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Dasar Komputer & Pemrograman 2A

PRAKTIKUM 7 TIPE DATA TERSTRUKTUR. Larik : deretan data yang punya type data sejenis. Misalnya : Daftar Nomor Telpon, Tabel Pajak dll.

KONSEP DASAR PEMROGRAMAN PASCAL

Pengantar dalam Bahasa Pemrograman Turbo Pascal

PROCEDURE DAN FUNCTION

Algoritma Pemrograman

JENIS-JENIS DATA DAN STATEMEN INPUT OUTPUT

Pertemuan 4 KONSEP TIPE DATA

Bab 2 DASAR-DASAR ALGORITMA

Teori Algoritma. Struktur Algoritma

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] Nilai elemen array Index array Inelemen array

menunjukkan tipe hasil dari fungsi. sqr, succ dan sebagainya. buat sendiri.

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

P A S C A L D A S A R

BAB I PENGENALAN STRUKTUR DATA DAN ALGORITMA

Lab. Teknik Informatika Struktur Data 1

Dasar Komputer & Pemrograman 2A

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

PROSES PENJUALAN BUKU

SMA SANTO PAULUS PONTIANAK

ARRAY. Larik / array adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama.

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

Sesi/Perkuliahan ke: II

Chapter 3.2 : Tipe, Nama dan Nilai

Algoritma Pemrograman

Konsep Dasar Pemrograman Pascal

PENDAHULUAN. Brigida Arie Minartiningtyas, M.Kom

Algoritma,Flowchart, Konsep

FUNGSI. Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri dengan kata cadangan End dan titik koma.

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-5

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

Pengenalan Pascal/DevPascal

I. SOAL PILIHAN GANDA. 1. Tag yang harus dimiliki setiap file HTML adalah : a. <HEAD> b. <TITLE> c. <BODY> d. <TEXT> e. <STYLE>

Teori Algoritma TIPE DATA

ARRAY (LARIK) Altien Jonathan Rindengan, S.Si., M.Kom.

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Definisi Algoritma Algoritma adalah logika, metode dan tahapan (urutan) sistematis yang digunakan untuk memecahkan suatu permasalahan.

Array, Record, sorting : Elektro Unud (MSU) Page 1 of 13

MODUL 3 ALGORITMA PEMROGRAMAN

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB I TUJUAN DAN LANDASAN TEORI

Sesi/Perkuliahan ke: VII

& PEMROGRAMAN. Alex De Kweldju, S.Kom D3 Teknik Komputer Fakultas Teknik Universitas Negeri Papua

Memulai Pemrograman Pascal dengan Delphi Console 1. Buka aplikasi delphi 2. Pilih File New Other Console Application

BAB 2 BAGAIMANA MENULISKAN PROGRAM PASCAL

Pengenalan Pascal. Sejarah Singkat Pascal

Algoritma Pemrograman

Indentifier, Keywords, Variable, Tipe Data dan Operator. Ramos Somya, S.Kom., M.Cs.

MANIPULASI STRING. Contoh :

Dasar Komputer & Pemrogaman 2A

BAB IX LINKED LIST (SENARAI BERANTAI)

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 1 & 2

Pertemuan 6 Array Objektif: 1. Memahami cara mendeklarasi tipe indeks dalam array 2. Dapat membuat program sederhana menggunakan array Pertemuan 6 53

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

SOAL DAN JAWABAN UTS PEMROGRAMAN DASAR KELAS X

Contoh soal Struktur Program Pascal (Seleksi tingkat propinsi TOKI 2004)

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

TIPE, NAMA, DAN NILAI

STRUKTUR KENDALI. Memanfaatkan struktur kendali untuk kasus komputasi

Pertemuan III ARRAY dan RECORD

Tipe Data. Definisi Tipe Data

BAB 6 Array Dua Dimensi

Statemen-Statemen pada Pemrograman Pascal Reserved Word

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

MODUL STRUKTUR DATA. Erna Kumalasari Nurnawati

ARRAY. contoh : A[1] := 10; var A : array[1..10] of integer; A[nomer_indeks]

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

Wah gak terasa kita sudah nyampe di bab perulangan & kondisi selamat mencoba.

Algoritma dan Struktur Data

KONSEP DASAR BAHASA PASCAL

Array & Program Modular

Bagian 2 Statemen-Statemen pada Pemrograman Pascal

Belajar itu, Tidak harus menunggu materi dari guru Inisiatif Mencari itulah BELAJAR.

KONSEP DASAR BAHASA PASCAL

.::BAB II.::MENGENAL PASCAL

Pertemuan 2 Operasi String

I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-4 - Hal 1

Perulangan. Bentuk Proses. 1. Perulangan For positif contoh 1 : perulangan positif untuk satu statement :

Alwin sanjaya

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

PEMROGRAMAN DASAR ( PASCAL ) PERTEMUAN I

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

MODUL PRAKTIKUM PEMROGRAMAN PASCAL. Fight #1 PENGENALAN PASCAL, VARIABEL, TIPE DAN KONSTANTA.

Pertemuan VI ANTRIAN (Queue)

Function. Pertemuan 7 Jurusan Sistem Informasi Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma 2015

SOAL PASCAL A. 1. Lengkapi Source Code Dibawah ini : {* Program Menghitung dengan Operator Matematika*}

LAPORAN AKHIR PRAKTIKUM STRUKTUR DATA

MODUL PRAKTIKUM KONSEP PEMROGRAMAN KOMPUTER

Transkripsi:

MODUL PRAKTIKUM PRAKTEK ALGORITMA DAN PEMROGRAMAN II

MODUL I ARRAY DIMENSI I (1 x pertemuan) I. TUJUAN - Mempelajari tipe terstruktur Array dimensi satu. II. TEORI SINGKAT Array atau Larik adalah Type data terstruktur yang terdiri dari sejumlah elemen dimana setiap elemennya mempunyai tipe data yang sama atau sejenis (setype). Larik dimanipulasikan dengan memanfaatkan index (subscript) dari tiap elemen larik tersebut. Array dapat dideklarasikan pada bagian deklarasi type atau bagian deklarasi Var. Bentuk 1 : Var NamaArray : Array[TypeIndex] Of TypeLarik; Bentuk 2 : Type NamaType = Array[TypeIndex] Of Type Larik; Var NamaVarArray : NamaType; NamaLarik : Nama Variable bertype Array. Type Larik : Type datanya. Type larik dapat berupa integer, real, char, string atau record. TypeIndex : data bertype ordinal seperti char, byte, integer atau enumerated. Type Index dapat berupa NamaType atau Sub Range Langsung. Contoh deklarasi : Type Daftar_nilai : array [1..5] of integer; Var Nilai : daftar_nilai; Atau dapat ditulis pada bagian var saja : Var Nilai : array [1..5] of integer; Dari deklarasi diatas mempunyai arti : Variable array yang bernama Nilai mempunyai 5 buah elemen (dengan indeks 1 sampai 5) dan masingmasing elemen bertipe integer. Dari deklarasi Array diatas dapat direpresentasikan didalam memori sebagai berikut : Tiap kotak disebut dengan elemen array, berfungsi seperti halnya variable, dapat diisi dengan sebuah data dari type tertentu sesuai yang dideklarasikan. Tiap kotak mempunyai nomor / alamat yang disebut dengan index yang berfungsi untuk memberi identitas kotak tersebut. 1

III. Modul Praktikum Cara mengakses elemen array dimensi satu Elemen array bisa diakses dengan cara menyebutkan nama array diikuti nilai indeksnya didalam kurung siku. Nilai [1], ini berarti mengakses nilai elemen pertama. Untuk memberikan nilai ke array, bisa menggunakan 2 cara, yaitu : Dengan operator penugasan (:=) Nilai [1] := 0, elemen pertama dari nilai diberi nilai 70 Dengan statemen Read/readln Read (nilai[1]); Read (nilai[2]); Jika menggunakan perintah ini banyaknya perintah yang diberikan harus sebanyak elemen yang dideklarasikan pada deklarasi array, sehingga bias digunakan perintah perulangan seperti berikut : For I := 1 to 5 do Readln(nilai[I]); Untuk mengambil nilai/membaca elemen dari array dimensi satu digunakan statemen Write, contoh : Write (nilai[1]). Untuk mempersingkat program dipergunakan perintah berikut : For I := 1 to 5 do PRAKTEK Writeln(nilai[I]); Program pas11; uses crt; const max_test = 4; type data_nilai = array[1..max_test] of integer; var i,jum : integer; rata : real; nilai_test : data_nilai; clrscr; {memasukkan data} for i := 1 to max_test do write ('masukkan nilai test ke ',i,' = '); readln (nilai_test[i]); {menhitung total nilai dan rata-rata} jum := 0; for i := 1 to max_test do jum := jum + nilai_test[i]; 2

rata := jum / max_test; {mencetak} writeln ('Total nilai = ',jum); writeln ('Rata-rata nilai = ',rata:5:2); readln; end. Program pas12; Uses Crt; Const N = 10; Var Nim : Array[1..N] Of integer; Nama : Array[1..N] Of String[20]; IP : Array[1..N] Of real; I : Integer; End. Clrscr; {Baca Data} Writeln( Masukkan,N, buah data ); For I := 1 to N Do Write( No.Mhs : );Readln(NIM[I]); Write( Nama Mhs : );Readln(Nama[I]); Write( IP Mhs : );Readln(IP[I]); {Cetak Hasil} Writeln( Daftar Nilai ); Writeln( No NIM NAMA IP ); For I := 1 to N Do Writeln( I:2, Nim[I]:10, Nama[I]:15, IP[I]:6:2); Readln Tugas : Buat program dengan output : No Nama Test1 Test2 Test3 3

MODUL II ARRAY DIMENSI II (1 x pertemuan) I. TUJUAN II. - Mempelajari tipe terstruktur Array dimensi dua. TEORI SINGKAT Array berdimensi dua mempunyai bentuk table yang menpunyai 2 indeks, baris dan kolom. Format deklarasi array dimensi dua dapat ditempatkan pada bagian type ataupun Var seperti halnya array dimensi satu. Bentuk 1: Var Bentuk 2 : Type Var NamaLarik : Array[TipeIndexBaris,TypeIndexCol] Of TypeLarik; NamaType = Array[TipeIndexBaris,TypeIndexCol] Of TypeLarik; NamaVarArray : NamaType; Indeks1 biasa disebut indeks baris yang menunjukkan banyaknya baris, sedang indeks2 disebut indeks kolom yang menunjukkan banyaknya kolom. Contoh : Var Nilai_mhs : array [1..100,1..3] of integer; Cara mengakses elemen array dimensi dua Untuk mengakses elemen pada array dimensi 2 bisa disebutkan nama array diikuti dengan indeks baris dan indeks kolomnya. Nama array [indeks_baris, indeks_kolom] Untuk memberi nilai ke array, bisa dengan dua cara Dengan operator penugasan (:=) ke 1. Nilai_mhs[4, 1] := 80; Berarti memberikan nilai 80 langsung kedalam elemen array baris ke 4 kolom Dengan pernyataan masukan (read/readln) Read (Nilai_mhs [4, 1]); Berarti memberikan nilai kedalam elemen array baris ke 4 kolom ke 1 melalui keyboard. Banyaknya perintah yang diberikan dengan statemen diatas sesuai dengan banyaknya elemen array, yaitu jumlah baris dikalikan jumlah kolomnya. Untuk mempersingkat perintah bias dipergunakan perintah perulangan, untuk deklarasi diatas bias dipergunakan perintah berikut : For I := 1 to 100 do For J := 1 to 3 do Readln(Nilai_mhs[I,J); Dengan variable I mewakili baris dan variable J mewakili kolom. 4

Untuk mengambil atau mencetak nilai dari array, digunakan pernyataan keluaran (write/writeln) Write (Nilai_mhs [4, 1]); Untuk mempersingkat perintah bisa dipergunakan perintah perulangan, untuk deklarasi diatas bias dipergunakan perintah berikut : For I := 1 to 100 do For J := 1 to 3 do Writeln(Nilai_mhs[I,J); Dengan variable I mewakili baris dan variable J mewakili kolom. III. PRAKTEK Program pas21; uses crt; type data_nilai = array[1..100,1..3] of integer; var max_siswa,i,j,jum : integer; rata : real; nilai_test : data_nilai; clrscr; {memasukkan data} write ('masukkan jumlah siswa = '); readln (max_siswa); for i := 1 to max_siswa do writeln ('data Mahasiswa ke ',i,' = '); for j := 1 to 3 do write ('masukkan nilai test ke ',i,' = '); readln (nilai_test[i,j]); {menhitung total nilai dan rata-rata} clrscr; writeln ('DAFTAR NILAI'); write ('No '); for i := 1 to 3 do write ('nilai ke-',i,' '); writeln ('rata-rata'); writeln; for i := 1 to max_siswa do jum := 0; for j := 1 to 3 do jum := jum + nilai_test[i,j]; rata:= jum / 3; write (i:2); for j := 1 to 3 do write (' ',nilai_test[i,j],'':7); writeln(rata:5:2); 5

readln; end. Tugas : Buat program dengan output : No Nama Test1 Test2 Test3 Total Rerata Huruf Total = test1+ test 2 + test3 Rata = total / 3 Jika rata >= 80 maka nilai huruf = A Jika rata >= 70 maka nilai huruf = B Jika rata >= 60 maka nilai huruf = C Jika rata >= 50 maka nilai huruf = D Jika rata < 50 maka nilai huruf = E 6

MODUL III PROCEDURE (1 x pertemuan) I. TUJUAN - Mempelajari pemecahan program ke dalam modul-modul program dalam bentuk prosedur. II. TEORI SINGKAT Procedure standard adalah suatu routine yang juga siap pakai dan dipanggil dengan menyebutkan nama procedure dengan memberikan argumen yang sesuai. Berikut adalah procedure-procedure standard yang sering kita pakai. A. Procedure Input / Output Write, writeln : sudah dibahas Read, Readln : sudah dibahas B. Procedure Operasi String Delete(x,i,n) : Membuangn buah character mulai dari i dari string x. Insert(s1,s2,i) : Menyisipkan string s1 dalam string s2 di posisi i. Str(n:w:d,s) : Merubah Numerik lebar w decimal d dalam string s. Val(s,n,c) : Merubah s string menjadi numeric dalam n. FillChar(x,n,ch) : Mengisi variable x dengan character ch sebanyak n. C. Procedure Lain-lain Clrscr : Hapus layar. ClrEol : Hapus baris mulai posisi cursor. DelLine : Menghapus 1 baris di posisi cursor dan menggeser naik tampilan-tampilan di bawahnya. InsLine : Menyisipi sebuah baris pada posisi cursor. Gotoxy(x,y) : Memposisikan cursor pada baris y, kolom x. Delay(n) : Menunda proses n integer yang menunjukkan lama tunda. Halt : Menghentikan eksekusi program. Sound(f) : Menghasilkan nada suara dengan frequensi f. NoSound : Mematikan nada. TextColor(x) : Memesan warna tulisan dengan konstanta warna x. x dapat berupa angka 0, 1, 2, atau Black, Red, White, TextBackGround(x) : Memesan warna latar belakang dengan konstanta warna x. Untuk procedure dan fungsi standard yang sudah disediakan oleh pascal semuanya terdapat pada unit-unit yang harus disertakan pemakaiannya pada USES (pada kepala program). D. Menciptakan Procedure Berapa hal yang harus diperhatikan dalam penggunaan prosedur, antara lain : Deklarasi prosedur terletak pada bagian deklarasi program. 7

Sembarang tipe statemen pascal bisa digunakan dalam prosedur. Parameter dalam prosedur bersifat optional, boleh ada boleh tidak. Suatu prosedur bisa memanggil prosedur lain yang sudah didefinisikan terlebih dahulu. Pemberian nama prosedur mengikuti aturan pemberian nama pengenal atau perubah. Mendeklarasikan prosedur Struktur prosedur hampir sama dengan struktur program pascal, yaitu : Bagian kepala prosedur Procedure nama_prosedur (dafatar parameter formal); Bagian deklarasi Digunakan untuk mendeklarasikan semua variabel lokal yang digunakan dalam prosedur. Bagian pernyataan. Digunakan untuk menuliskan semua statemen, yang diawali dengan dan diakhiri dengan end diikuti tanda titik koma (;). (statement) end. Pemanggilan prosedur dilakukan dengan cara menyebutkan nama prosedurnya diikuti dengan parameter (parameter aktual) jika memakai parameter formal pada saat mendeklarasikan. III. PRAKTEK Program pas31; uses crt; type larik = array[1..100] of real; var vektor : larik; n,i,bantu : integer; m,rerata,jum : real; procedure baca; clrscr; write('masukkan banyak data = '); readln(n); writeln('masukkan datanya ='); bantu := 1; for I := 1 to n do read(vektor[i]); gotoxy(wherex+(i mod 8) * 8,whereY-1); if I mod 8 = 0 then writeln; procedure cetak(x:larik;p:integer); var i : integer; 8

writeln; for I := 1 to P do write(x[i]:6:2); if I mod 8 = 0 then writeln; writeln; procedure urut (var X : larik; P:integer); var i,j,lokasi : integer; bantu : real; for i := 1 to p-1 do lokasi := i; for j := i+1 to p do if x[lokasi] > x[j] then lokasi := j; bantu := x[i]; x[i] := x[lokasi]; x[lokasi] := bantu; procedure medu(var x : larik; n :integer); if (n mod 2 = 0) then m := (x[n div 2] + x[(n div 2) +1])/2 else m := x[(n+1)div 2]; procedure rata (x:larik; n :integer); var i : integer; jum := 0.0; for i := 1 to n do jum := jum + x[i]; rerata := jum / n; clrscr; baca; clrscr; writeln('data sebelum diurutkan ='); cetak(vektor,n); writeln; urut(vektor,n); writeln('data urut ='); cetak(vektor,n); rata(vektor,n); writeln; writeln('banyaknya data = ',n); writeln('total data = ',jum:6:2); writeln('nilai rata-rata = ',rerata:6:2); medu(vektor,n); writeln('nilai median = ',m:6:2); readln; readln; end. 9

MODUL IV FUNCTION (1 x pertemuan) I. TUJUAN - Mempelajari pemecahan program ke dalam modul-modul program dalam bentuk fungsi. II. TEORI SINGKAT Fungsi adalah suatu routine yang terdefinisi, baik di definisikan oleh PASCAL (fungsi standard) maupun didefinisikan oleh pemakai (user define function). Fungsi dapat kita bedakan dari hasil fungsinya, yang dapat berupa String, Numeric atau Boolean. Berikut ini adalah fungsi-fungsi pustaka ynag sudah terdefinisi dalam PASCAL. 1. Fungsi Standard Aritmatika Abs(x) : Menghasilkan nilai mutlak dari x, x real atau integer. Exp(x) : Menghasilkan x e, x real atau integer. Ln(x) : Menghasilkan logaritma natural x. Int(x) : Menghasilkan nilai integer dari x, x real. Frac(x) : Menghasilkan bagian pecah dari x yang real. Sqr(x) : Menghasilkan nilai kuadrat dari x, x real atau integer. Sqrt(x) : Menghasilkan akar kuadrat dari x, x real. Sin(x) : Sinus x, x real. Cos(x) : Cosinus x, x real. ArcTan(x) : Arch Tg x. Random(x) : Menghasilkan bilangan bulat acak dari 0 x. 2. Fungsi Standard String Copy(s,I,n) : Menyalin n buah character mulai dari posisi i dari string x. Pos(s1,s2) : Menghasilkan posisi suatu string s1 dalam string s2. Length(s) : Menghasilkan panjang suatu string s. Readkey : Menghasilkan satu character yang diketik dari keyboard. Bersifat menunggu masukkan satu character. 3. Fungsi Standard Transfer Ord(x) : Menghasilkan KODE ASCII dari x, x bertype Char. Chr(x) : Menghasilkan character yang berkode ASCII x. Round(x) : Menghasilkan nilai longint yang terdekat dari x real sesuai dengan aturan pembulatan. Trunc(x) : Menghasilkan nilai longint yang terkecil dari x real. Upcase(x) : Menghasilkan huruf besar. A. Menciptakan Fungsi Fungsi merupakan sebuah subprogram yang apabila dipanggil akan menghasilkan sebuah nilai. Ciri-ciri suatu fungsi : 10

III. Modul Praktikum 1. Fungsi hanya memberikan sebuah hasil 2. Nama fungsi selain digunakan untuk memanggil fungsi tersebut, juga dianggap sebagai suatu variable sehingga bias digunakan sebagai bagian dari ungkapan. 3. Dalam fungsi tidak digunakan parameter variable, semua parameter dianggap sebagai parameter nilai. 4. Semua parameter digunakan sebagai masukan pada fungsi tersebut dengan keluarannya nama fungsi yang bertindak sebagai satu variable. Deklarasi fungsi : Function pengenal [(daftar parameter formal)]: tipe; Function, adalah kata tercadang pascal yang memberi tanda bahwa deklarasi fungsi dimulai. Pengenal, adalah nama fungsi. Daftar parameter formal, adalah nama parameter yang akan dioperasikan dalam fungsi. Tipe, adalah tipe data dari nilai fungsi. (yang diperbolehkan hanya tipe skalar, subjangkauan atau terbilang). Kemudian untuk memanggil fungsi yang sudah dideklarasikan, digunakan bentuk sebagai berikut : Pengenal(daftar parameter aktual); Pengenal adalah nama fungsi yang akan dipanggil. Beberapa hal penting yang perlu diperhatikan berkaitan dengan pemakaian fungsi, adalah : 1. Tipe hasil fungsi harus bertipe sederhana (integer, real, boolean, char atau string), karena fungsi hanya bisa mengembalikan nilai bertipe sederhana. 2. Jika fungsi tidak memiliki daftar parameter formal, maka tanda kurung buka ( dan kurung tutup ) tidak ditulis. Fungsi didefinisikan didalam blok program pemanggil (setelah kata tercadang var) PRAKTEK program pas41; uses crt; var pil,i,k,j : integer; tinggi : array[1..100] of real; mahasiswa : array[1..100] of string; function menu(var pilih:integer):integer; clrscr; gotoxy(20,5);writeln('**********************************'); gotoxy(20,6);writeln(' M E N U'); gotoxy(20,7);writeln('**********************************'); gotoxy(20,8);writeln; gotoxy(20,9);writeln(' 1. Tambah Data'); gotoxy(20,10);writeln(' 2. Urutkan Data'); gotoxy(20,11);writeln(' 3. Tampilkan Data'); gotoxy(20,12);writeln(' 4. Hapus Data'); gotoxy(20,13);writeln(' 5. Edit Data'); gotoxy(20,14);writeln(' 6. Statistik'); gotoxy(20,15);writeln(' 0. Keluar'); gotoxy(20,16);writeln('**********************************'); gotoxy(20,18);writeln('**********************************'); gotoxy(20,17);write('pilihan = ');readln(pilih); function tambah:string; clrscr; 11

writeln('******************'); writeln(' Tambah Data'); writeln('******************'); writeln; write('banyak data yg ditambahkan = ');readln(j); for i:=1 to j do k:=k+1; writeln('-----------'); writeln(' Data ke-',k); writeln('-----------'); write('nama Mahasiswa : ');readln(mahasiswa[k]); write('tinggi Badan : ');readln(tinggi[k]); function urutkan:integer; var pil2,x,y : integer; temp2: string; temp : real; clrscr; writeln('******************'); writeln(' Urutkan Data'); writeln('******************'); writeln; if k=0 then write('data masih kosong, ENTER untuk ke MENU'); readln; end else writeln('urutan berdasarkan :'); writeln('1. Nama Mahasiswa'); writeln('2. Tinggi Badan'); write('pilihan = ');readln(pil2); if (pil2=1) then for i:=1 to k-1 do for j:=i+1 to k do if length(mahasiswa[i])>length(mahasiswa[j]) then x:=length(mahasiswa[i]) else x:=length(mahasiswa[j]); for y:=1 to x do if ((mahasiswa[i,y])>(mahasiswa[j,y])) then temp:=tinggi[i]; temp2:=mahasiswa[i]; mahasiswa[i]:=mahasiswa[j]; tinggi[i]:=tinggi[j]; tinggi[j]:=temp; 12

mahasiswa[j]:=temp2; y:=x; end else if ((mahasiswa[i,y])<(mahasiswa[j,y])) then y:=x; write('data telah terurutkan, ENTER untuk ke MENU');readln; end else if (pil2=2) then for i:=1 to k-1 do for j:=i+1 to k do if tinggi[i]>tinggi[j] then temp:=tinggi[i]; temp2:=mahasiswa[i]; tinggi[i]:=tinggi[j]; mahasiswa[i]:=mahasiswa[j]; tinggi[j]:=temp; mahasiswa[j]:=temp2; write('data telah terurutkan, ENTER untuk ke MENU');readln; end else write('data GAGAL diurutkan, ENTER untuk ke MENU');readln; function tampilkan(pos: byte; teks : string):string; clrscr; writeln('******************'); gotoxy(pos,2);writeln(teks); writeln('******************'); writeln; writeln('terdapat ',k,' data '); for i:=1 to k do writeln('-----------'); writeln(' Data ke-',i); writeln('-----------'); writeln('nama Mahasiswa : ',mahasiswa[i]); writeln('tinggi Badan : ',tinggi[i]:0:2,' cm'); writeln; writeln; write('enter untuk melanjutkan');readln; 13

function editkan:string; var bil : integer; tampilkan(5,'edit Data'); if (k>0) then write('data yang di edit urutan ke-');readln(bil); if (bil>0) and (bil<=k) then writeln('-----------'); writeln(' Data ke-',bil); writeln('-----------'); writeln('nama Mahasiswa : ',mahasiswa[bil]); writeln('tinggi Badan : ',tinggi[bil]:0:2); writeln('[::] Edit Data [::]'); write('nama Mahasiswa : ');readln(mahasiswa[bil]); write('tinggi Badan : ');readln(tinggi[bil]); writeln; write('data telah diubah, ENTER untuk ke MENU'); readln; end else writeln; write('no Data tidak tepat, ENTER untuk ke MENU');readln; function hapuskan:string; var bil,i : integer; tampilkan(5,'hapus Data'); if (k>0) then write('data yang di hapus urutan ke-');readln(bil); if (bil>0) and (bil<=k) then for i:=bil to k-1 do tinggi[i]:=tinggi[i+1]; mahasiswa[i]:=mahasiswa[i+1]; k:=k-1; writeln; write('data telah dihapus, ENTER untuk ke MENU'); readln; end else writeln; write('no Data tidak tepat, ENTER untuk ke MENU');readln; function statistik:string; var i,j : integer; 14

temp,jum : real; temp2 : string; clrscr; writeln('******************'); writeln(' Statistik Data'); writeln('******************'); if (k>0) then jum:=0; writeln; writeln('banyak data yang ada = ',k); for i:=1 to k-1 do for j:=i+1 to k do if tinggi[i]>tinggi[j] then temp:=tinggi[i]; temp2:=mahasiswa[i]; tinggi[i]:=tinggi[j]; mahasiswa[i]:=mahasiswa[j]; tinggi[j]:=temp; mahasiswa[j]:=temp2; jum:=jum+tinggi[i]; writeln('rata-rata tinggi mahasiswa = ',((jum+tinggi[k])/k):0:2); writeln('mahasiswa yang memiliki tinggi badan terrendah = ',mahasiswa[1],' (',tinggi[1]:0:2,')'); writeln('mahasiswa yang memiliki tinggi badan tertinggi = ',mahasiswa[k],' (',tinggi[k]:0:2,')'); writeln; end else writeln; write('data masih kosong, '); write('enter untuk ke MENU');readln; { program utama } repeat menu(pil); case pil of 0 : exit; 1 : tambah; 2 : urutkan; 3 : tampilkan(3,'tampilkan Data'); 4 : hapuskan; 5 : editkan; 6 : statistik; else gotoxy(20,19);write('pilihan salah, ENTER untuk ke MENU');readln; until pil=0; end. 15

MODUL V REKURSIF (1 x pertemuan) I. TUJUAN II. - Mempelajari proses rekursi dalam penggunaan prosedur dan fungsi TEORI SINGKAT Rekursi adalah suatu prosedur atau fungsi yang dapat memanggil dirinya sendiri. Contoh dari rekursi adalah proses menghitung faktorial dan proses menghitung bilangan fibonacci. Program berikut menunjukkan contoh penggunaan rekursi yang identik dengan suatu perulangan. Program 51; var i : integer; procedure ulang; writeln(i,'. Tulisan ini akan tercetak 10 kali'); if i < 10 then i := i + 1; ulang; i := 1; ulang; readln end. Perhatikan hasil dari eksekusi program diatas. Terlihat bahwa di dalam prosedur ulang terdapat baris perintah yang berfungsi untuk memanggil dirinya sendiri sebelum i =10. III. PRAKTEK Dibawah ini program untuk mengetahui nilai pemangkatan bilangan : program pas52; uses crt; var x : real; n : integer; Function pkt(x :real; n : integer):real; var t : real; m : integer; m:=abs(n); if (x<>0) and (n=0) then pkt:=1 else if n >0 then pkt:=x*pkt(x,n-1) else if (n < 0) then pkt := 1/(x*pkt(x,m-1)); clrscr; write('bilangan yang dipangkatkan : ');readln(x); 16

write('bilangan pangkat : ');readln(n); writeln(x:5:2,' Pangkat ',n,' = ',pkt(x,n):8:3); readln; end. Contoh dibawah ini merupakan program untuk mencari bilangan fibo : program pas53; uses crt; var x:array[1..100] of integer; i,n:integer; lagi:char; function fibo(n:integer):integer; if (n = 1) or (n=2) then fibo:=1 else fibo:=fibo(n-1)+fibo(n-2); repeat clrscr; write('suku deret Fibonacci keberapa :');readln(n); writeln('suku ke ', n,' =', fibo(n)); write('lagi...[y/t]');lagi:=upcase(readkey); writeln(lagi); until lagi <> 'Y'; end. Tugas : Ubahlah ketiga contoh program diatas tanpa menggunakan rekursi, tetapi menghasilkan output yang sama. 17

MODUL VI RECORD (1 x pertemuan) I. TUJUAN II. - Mempelajari penggunaan tipe data terstruktur record pada pascal TEORI SINGKAT Record merupakan tipe berstruktur yang memiliki beberapa komponen atau elemen dengan masing-masing elemen boleh memiliki tipe data yang berlainan. Bentuk deklarasi variabel record : RECORD Daftar_field_1 : tipe_1; Daftar_field_2 : tipe_2; Daftar_field_n : tipe_n; END; Masing-masing elemen dari record disebut dengan field. Masing-masign field dapat berupa tipe apa saja termasuk array. Contoh deklarasi : Type Var RecBarang = RECORD Nama : string; Cara Mengakses field Contoh : Bentuk : Barang.Nama; Banyak : integer; Harga : LongInt; Barang : RecBarang; Variabel.field Berarti field nama dari variabel record benama barang. Contoh lain : Barang.Nama := Sabun Mandi ; Field Nama pada record Barang diisi string Sabun Mandi Pernyataan WITH Untuk menyederhanakan pernyataan seperti DataPeg.TgLahir.Tgl Pascal menyediakan pernyataan WITH, dengan bentuk : WITH nama_record Do <pernyataan> III. PRAKTEK Program pas61; Type 18

Recbarang = RECORD Nama_B : string[8]; Jumlah : Integer; Harga_b : LongInt; Var Barang : Recbarang; {Memasukan data ke dalam record barang} Barang.Nama_b := 'Baju koko'; Barang.Jumlah := 10; Barang.Harga_b := 200000; {Menampilkan isi field record} Writeln('Nama Barang : ',Barang.Nama_b); Writeln('Jumlah Barang : ',Barang.Jumlah); Writeln('Harga Barang : ',Barang.Harga_b); End. Program pas62; Type RecTgl = RECORD Tgl, Bln,Thn : Integer; RecPegawai = RECORD Nmr : Integer; Nama : String[35]; TgLahir : RecTgl; Gaji : LongInt; Var DataPeg : RecPegawai; {Mengisikan nilai terhadap field-field} DataPeg.Nmr := 123; DataPeg.Nama := 'Joko Bodho'; DataPeg.TgLahir.Tgl := 13; DataPeg.TgLahir.Bln := 10; DataPeg.TgLahir.Thn := 1975; {menampilkan isi field} Writeln('Nomor : ',DataPeg.Nmr); Writeln('Nama : ',DataPeg.Nama); Writeln('Tanggal Lahir : ',DataPeg.TgLahir.Tgl, '/',DataPeg.TgLahir.Bln,'/',DataPeg.TgLahir.Thn); readln; End. Program pas63; Type Recbarang = RECORD Nama_B : string[10]; Jumlah : Integer; Harga_b : LongInt; Var Barang : Recbarang; {Memasukan data ke dalam record barang} Barang.Nama_b := 'Baju koko'; 19

Barang.Jumlah := 10; Barang.Harga_b := 200000; {Menampilkan isi field record} WITH Barang Do Writeln('Nama Barang : ',Nama_b); Writeln('Jumlah Barang : ',Jumlah); Writeln('Harga Barang : ',Harga_b); readln; End. Tugas : Buatlah progam untuk memasukkan sejumlah data nilai mahasiswa dalam bentuk record. Data yang dimasukkan adalah Nim, Nama, Nilai UTS, Nilai UAS, Nilai Tugas. Setelah semua data dimasukkan, semua data ditampilkan dalam bentuk tabel yang diurutkan secara descending berdasarkan nilai rata-rata tiap mahasiswa, kemudian konversi nilai rata-rata ke dalam nilai angka dengan aturan. Rata-rata >= 80 nilai huruf A keterangan Lulus Rata-rata >= 70 nilai huruf B keterangan Lulus Rata-rata >= 60 nilai huruf C keterangan Lulus Rata-rata >= 50 nilai huruf D keterangan Tidak Lulus Rata-rata < 50 nilai huruf E keterangan Tidak Lulus Contoh output program : Jumlah Data : 2 Data ke-1 N I M : 11010001 N a m a : Jono Nilai UTS : 50 Nilai UAS : 50 Nilai TUGAS : 50 Data ke-1 N I M : 11010002 N a m a : Hari Nilai UTS : 90 Nilai UAS : 90 Nilai TUGAS : 90 H A S I L P R O S E S No NIM Nama Rata Huruf Keterangan 1 11010002 Jana 90 A Lulus 2 11010001 Jono 50 D Tidak Lulus 20

MODUL VII UNIT (1 x pertemuan) I. TUJUAN II. - Mempelajari pembuatan unit dengan mengunakan pascal TEORI SINGKAT Unit merupakan group dari prosedur atau fungsi (untuk berbagai deklarasi/definisi seperti variabel dan tipe) yang dpat dikompilasi terpisah terhadap program turbo pascal. Keuntungan dengan adanya unit, program yang memakai fasilitas dalam unit akan dikompilasi lebih cepat, sebab bagian dari unit tidak ikut dikompilasi lagi. Struktur Unit Unit terdiri dari tiga buah bagian : Bagian Interface Bagian Implementation Bagian Inisialisasi Struktur Sebuah Unit : UNIT nama_unit; INTERFACE USES daftar_nama_unit; {optional} {bagian deklarasi yang bersifat global} IMPLEMENTATION {Bagian deklarasi yang bersifat lokal dan implementasi dari subprogram yang terdapat pada bagian interface} BEGIN {opsional} (* bagian inisialisasi *) {opsional} END. Bagian Interface Bagian interface merupakan bagian penghubung antara unit dengan unit lain atau program. Jika unit mengandung prosedur atau fungsi yang dapat diakses oleh program atau unit lain, hanya kepala/judul prosedur/fungsi yang berada pada bagian interface. Adapun tubuh fungsi berada pada bagian implementation. UNIT TambKur; INTERFACE USES CRT; PROCEDURE Tambah(x, y : integer); PROCEDURE Kurang(x, y : integer); PROCEDURE Hapuslayar; PROCEDURE TUNDA; Bagian Implementation Bagian implementation berisi : Bagian tubuh dari fungsi atau prosedur yang kepalanya dideklarasikan pada bagian interface Deklarasi konstanta, tipe, variabel, prosedurdan fungsi yang bersifat lokal (hanya dikenal dibagian implementation) 21

Bagian ini dapat menggunakan semua fasilitas yang ada pada bgian interface (seperti deklarasi variabel dan tipe) dan juga fasilitas yang terdapat pada unit yang dilibatkan pada bagian interface. IMPLEMENTATION PROCEDURE HAPUSLAYAR; ClrScr; PROCEDURE Tunda; Readln; PROCEDURE Tambah(x, y : integer); VAR Total : integer; total := x + y; writeln(x,' + ',y,' = ',total); PROCEDURE Kurang(x, y : integer); VAR Total : integer; total := x - y; writeln(x,' - ',y,' = ',total); Bagian Inisialisasi Bagian ini bisa terdiri kata tercadang END saja yang diakhiri dengan titik. Dan menyatakan unit tidak mengandung kode inisialisasi. End. Dari contoh contoh pada bagian diatas anda ketikkan menjadi sebuah program dan beri nama TambKur Kemudian Compile program diatas dengan menekan tobol Alt+F9 atau dari menu Compile pilih Compile. Jika program anda tidak mengandung kesalahan maka anda akan mendapatkan sebuah file baru dengan nama TambKur.tpu. yaitu file TPU yang anda bisa sisipkan pada program utama anda dengan menggunakan perintah Uses. Ketikkan program dibawah ini kemudian simpan dengan nama Test uses tambkur; var n,m : integer; Hapuslayar; Write( Masukan Nilai 1 : ); readln(n); Write( Masukan Nilai 2 : ); readln(m); Tambah(n,m); Kurang(n,m); Tunda; end. 22

III. PRAKTEK Salin berikut ini : unit cekpas; interface function CekSandi(Kata, Password: string): Boolean; implementation function CekSandi(Kata, Password: string): Boolean; if Kata=Password then CekSandi := True Else CekSandi := False; end. Kemudian simpan program tersebut di atas dengan nama yang sama dengan nama unitnya. Untuk pemanggilan unit di ketikkan setelah kata kunci Uses. Kompilasi unit tersebut di atas (ingat, selalu kompilasi unit ke pengingat tambahan (compile to disk)). Kemudian setelah dikompilasi, salin program berikut ini : program pas71; uses crt, cekpas; var Kata_sandi : string; Clrscr; repeat Write('Masukkan Password Anda!! : '); Readln(Kata_sandi); until CekSandi (Kata_sandi, 'praktikan'); Writeln; Write('Password Anda Benar!!'); Readln; end. Jalankan program tersebut dan amati hasilnya. Program tersebut menggunakan unit cekpas dan unit cekpas itu harus sudah terkompilasi pada berkas. Bila dijalankan, pernyataan-pernyataan antara repeat dengan until pada program tersebut akan diulang terus hingga kata sandi yang diketikkan adalah 'praktikan' dan CekSandi bernilai True. Tugas : Buatlah sebuah program pascal yang memanfaatkan fasilitas unit untuk menghitung jumlah huruf hidup dan huruf mati dari suatu string yang diinputkan dari keyboard. 23

MODUL VIII POINTER ( 2 x pertemuan) I. TUJUAN - Mempelajari tipe pointer dan penerapannya dalam program II. TEORI SINGKAT Pointer adalah suatu tipe data yang dapat digunakan untuk mengalokasikan dan mendealokasikan (mengambil / mengurangi) pengingat secara dinamis, yaitu sesuai dengan kebutuhan pada saat suatu program dieksekusi. Data bertipe pointer merupakan suatu fasilitas yang dimiliki pernrograrnan bahasa Pascal untuk mengatasi tipe data yang bersifat statis, misainya data bertipe larik yang penyimpanannya dalam pengingat terbatas, data yang tersimpan dalam perubah tidak boleh melebihi pesanan yang telah dideklarasikan. Gambar 3. menunjukkan ilustrasi perubah statis dan dinamis. a A 1000 A 10 b 10 1000 Gambar diatas bisa dijelaskan sebagai berikut. Pada gambar a perubah A adalah perubah statis. Dalam hal ini 1000 adalah nilai data yang sesungguhnya dan disimpan pada perubah (lokasi) A. Pada gambar b perubah A adalah perubah dinamis. Nilai perubah ini misalnya adalah 10. Nilai ini bukan nilai data yang sesungguhnya, tetapi lokasi dimana data yang sesunggulmya berada. Jadi dalam hal ini nilai data yang sesungguhnya tersimpan pada lokasi 10. Dari ilustrasi di atas bisa dilihat bahwa nilai perubah dinamis akan digunakan untuk menunjuk ke lokasi lain yang befisi data sesungguhnya yang akan diproses. Karena alasan inilah perubah dinamis lebih dikenal dengan sebutan pointer yang artinya kira-kira menunjuk ke sesuatu. Dalam perubah dinamis, nilai data yang ditunjuk oleh suatu pointer biasanya disebut sebagai simpul/node. A. Struktur Data. Struktur data yang dimaksud disini adalah struktur data yang digunakan dalam data bertipe pointer. Data bertipe pointer ditandai dengan meletakkan tanda ^ didepan nama simpul pada deklarasinya. Simpul bisa dideklarasikan sebagai sebuah record yang berisi field-field data yang bertipe selain pointer dan field-field yang bertipe pointer. 24

Field bertipe pointer dalam sebuah record bisa satu buah (untuk single link list), bisa dua buah (untuk double link list) dan sebagainya. Single link list hanya bisa menunjuk ke satu arah, sedang double link list bisa menunjuk ke dua arah. Dalam pemrograman bahasa Pascal, struktur data bertipe pointer yang bersifat dinamis berbeda dengan tipe data lainnya yang besifat statis. Bentuk umum deklarasi pointer adalah sebagai berikut: Type pengenal = ^simpul; simpul = tipe; dengan pengenal: nama pengenal yang menyatakan data bertipe pointer. Simpul : nama simpul. Tipe : tipe dari simpul. Tanda ^ didepan nama simpul harus ditulis apa adanya dan menunjukkan bahwa pengenal adalah suatu tipe data pointer. Tipe data simpul yang dinyatakan dalam tipe bisa berupa sembarang tipe data, misainya char, integer, real, rekaman (record) dan sebagainya. Contoh: Type patkiang = string [301; pegawai=.^simpul; simpul = record Nama : panjang; Alamat : panjang; pekerjaan: patkiang; Var P1,P2: pegawai; Deklarasi pada contoh diatas sifat kedinamisannya masih tersamar, karena jika dfinginkan sejumlah simpul aktif dalam pengingat, maka kita perlu menyediakan sejumlah pointer yang sesuai. Dengan demikian seolah-olah tidak ada perbedaan yang nyata antara perubah statis dengan dinamis. Gambar diatas menunjukkan medan informasi pada simpul pointer P1 dan P2. Dari gambar diatas terlihat ada kemiripan dengan perubah statis tanpa larik. P1 Nama Alamat Pekerjaan P2 Nama Alamat Pekerjaan Medan informasi Medan informasi Jika benar-benar diinginkan mempunyai perubah yang bersifat dinamis, harus ditarnbalikan satu medan lagi dalarn rekaman yang mampu menunjuk simpul lain, yang disebut dengan medan penyambung dengan tipenya sama dengan tipe pointer awal (P1). Deklarasinya struktur data untuk single-link-list dapat diubah menjadi: Type panjang = string[30]; pegawai= 'I simpul; simpul = record Nama : panjiang; Alamat : panjang; Pekerjaan : panjang; 25