Transcript
Page 1: Modul Praktikum Algoritma & Pemrograman II

MODUL PRAKTIKUM

ALGORITMA DAN PEMROGRAMAN II

TEKNIK INFORMATIKA SEMESTER II

TAHUN AKADEMIK 2010/2011

DISUSUN OLEH:

DAMESKUS SAIKHUL BAHRI

UNIVERSITAS MUSAMUS MERAUKE

FAKULTAS TEKNIK

PROGRAM STUDI TEKNIK INFORMATIKA

2011

Page 2: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

1                                               By: Demz 

PRAKTIKUM 1 (1/3)

PROSEDUR

A. TUJUAN PRAKTIKUM

1. Memahami syntax prosedur

2. Memahami pendeklarasian prosedur

B. TEORI DASAR

Prosedur diawali dengan kata cadangan Procedure di dalam bagian

deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok

program yang lainnya dengan menyebutkan judul prosedurnya.

Prosedur banyak digunakan pada program yang terstruktur, karena:

1. Merupakan penerapan konsep program modular, yaitu memecah-

mecah program yang rumit menjadi program-program bagian yang

lebih sederhana dalam bentuk prosedur-prosedur.

2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan

sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan

sewaktu-waktu bila diperlukan.

Sebagaimana halnya sebuah program, suatu procedure juga memiliki

header dan block. Perbedaan bentuknya dengan program hanyalah pada

bagian header-nya saja.

Bentuk Umum header suatu procedure adalah :

PROCEDURE nama;

Atau

PROCEDURE nama (formal parameter : jenis);

Jika kita menggunakan procedure dalam suatu program, maka procedure

tersebut harus dituliskan pada bagian deklarasi.

 

Page 3: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

2                                               By: Demz 

C. TUGAS PENDAHULUAN

1. Analisislah kedua contoh program di bawah ini tentang syntax dan

pendeklarasian prosedur serta tulislah output programnya!.

a. Contoh 1:

var   a,b,c:integer;  procedure maksimum; var   max :integer;      begin          if a>b then max:=a else max:=b;          if c>max then max:=c;          writeln ('Jadi nilai maksimumnya adalah =',max);     end;  begin      write ('Masukan Nilai a ='); readln (a);      write ('Masukan Nilai b ='); readln (b);      write ('Masukan Nilai c ='); readln (c);      maksimum; end.  

b. Contoh 2:

var p,l,t:real;  procedure balok; var v:real;           begin                v:=p*l*t;                writeln ('Volumenya adalah =',v:2:0);           end; begin      write ('Masukan Nilai panjang ='); readln (p);      write ('Masukan Nilai lebar   ='); readln (l);      write ('Masukan Nilai tinggi  ='); readln (t);      balok; end. 

2. Buatlah program untuk setiap permasalahan dalam percobaan!.

Page 4: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

3                                               By: Demz 

D. PERCOBAAN

1. Buatlah sebuah program menggunakan prosedur untuk menampilkan

kalimat “Algoritma dan Pemrograman II”.

2. Buatlah program untuk menampilkan kalimat “Teknik Informatika”

sebanyak 10 kali dengan menggunakan prosedur.

3. Buatlah program untuk menampilkan bilangan 1 sampai 50.

4. Buatlah program untuk menampilkan bilangan ganjil dari 1 sampai 20

dengan menggunakan prosedur.

5. Ulangilah program No.4 dengan dengan menampilkan bilangan ganjil

1 sampai n, dimana nilai n merupakan nilai maksimal perulangan yang

diinput melalui keyboard.

Page 5: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

4                                               By: Demz 

PRAKTIKUM 2 (2/3) PROSEDUR

A. TUJUAN PRAKTIKUM 1. Memahami jangkauan identifier.

B. TEORI DASAR Identifier yang dideklarasikan dalam suatu blok program hanya berlaku

pada blok dimana identifier tersebut didefinisikan.

Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya

hanya dapat digunakan pada modul atau unit program yang bersangkutan

saja, tidak dapat digunakan pada modul atau unit program yang lainnya.

Untuk lebih memahami hal ini, perhatikan contoh di bawah ini:

1. Contoh 1:  

 

   

Page 6: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

5                                               By: Demz 

2. Contoh 2:

 

 

C. TUGAS PENDAHULUAN 1. Buatlah sebuah contoh program sederhana yang menggunakan

variabel local.

2. Buatlah sebuah contoh program sederhana yang menggunakan variabel

global.

3. Jelaskan dan analisislah kedua program yang telah dibuat serta tulislah

output programnya.

4. Kerjakanlah untuk setiap permasalahan dalam percobaan, dan

kumpulkan hasilnya.

Page 7: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

6                                               By: Demz 

D. PERCOBAAN 1. Analisislah program di bawah ini, apakah variabel yang digunakan

merupakan variabel local atau variabel global.

Procedure Tanya_hitung;  Var X,Y :real;  Begin  

Write (‘Nilai X ?’); Readln(X);  Y:=X*X;  Writeln(‘Nilai Y = ‘,Y:6:2);  

End;   Begin  

Tanya_Hitung;  End.  

2. Jika program No.1 diubah menjadi seperti program di bawah ini,

bagaimana hasilnya dan jelaskan!.

Procedure Tanya_hitung;  Var X,Y :real;  Begin  

Write (‘Nilai X ?’); Readln(X);  Y:=X*X;  

End;   Begin  

Tanya_Hitung;  Writeln(‘Nilai Y = ‘,Y:6:2);  

End.  

3. Program di bawah ini tidak dapat di compile karena terdapat

kesalahan. Perbaikilah program berikut hingga dapat dijalankan dan

jelaskan.

Procedure CetakNama; Begin    Writeln (NamaKu); End;  Var NamaKu: string[20]; Begin    NamaKu:=’Pascal’;   CetakNama;  End.  

Page 8: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

7                                               By: Demz 

PRAKTIKUM 3 (3/3) PROSEDUR

A. TUJUAN PRAKTIKUM 1. Memahami parameter dalam prosedur

B. TEORI DASAR Agar nilai-nilai variabel dapat digunakan pada modul lainnya yang

membutuhkannya, maka dapat dilakukan dengan beberapa cara, yaitu:

1. Dibuat bersifat global.

Agar suatu nilai dapat bersifat global, maka harus dideklarasikan di

atas modul yang akan menggunakannya.

Contoh 1:

Page 9: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

8                                               By: Demz 

Pada contoh di atas, variabel A dab B bersifat global untuk prosedur

kedua, ketiga dan utama, tetapi tidak bersifat global untuk prosedur

kesatu, sehingga prosedur kesatu tidak dapat menggunakan variabel-

variabel tersebut.

Contoh 2:

Pada contoh di atas, variabel A dan B bersifat global, sehingga dapat

digunakan untuk semua modul.

Page 10: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

9                                               By: Demz 

2. Dikirimkan sebagai parameter ke modul yang membutuhkannya.

Parameter yang dikirim dari modul utama ke modul prosedur disebut

actual parameter, dan parameter yang ada dan dituliskan pada judul

prosedur disebut formal parameter.

a. Pengiriman parameter secara nilai

Parameter yang dikirimkan secara nilai, maka parameter formal

yang ada di prosedur akan berisi nilai yang dikirimkan yang

kemudian bersifat lokal di prosedur.

b. Pengiriman parameter secara acuan

Bila pengiriman parameter secara acuan (by reference), maka

perubahan-perubahan yang terjadi pada nilai parameter formal di

prosedur akan mempengaruhi nilai actual parameter.

Acua Forward

Acuan Forward (forward reference) digunakan untuk mendeklarasikan di

muka judul prosedur terpisah dari bloknya. Judul prosedur yang berisi

parameter terpisah ini merupakan judul yang semestinya dan

dideklarasikan dengan menambahkan kata cadangan Forward. Blok

prosedur ini letaknya terpisah dari judulnya, juga di awali dengan judul

prosedur, tetapi hanya mencantumkan judul atau nama prosedurnya saja,

tanpa mencantumkan parameter formalnya.

Prosedur Standar

Prosedur yang disediakan oleh Turbo Pascal:

1. Prosedur standar EXIT

Digunakan untuk keluar dari suatu blok.

2. Prosedur standar HALT

Digunakan untuk menghentikan proses program baik di program

bagian maupun di program utama.

3. Prosedur standar MOVE

Bentuk umum: MOVE (Var source,dest; count: word);

Page 11: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

10                                               By: Demz 

Digunakan untuk menyalin suatu blok sebanyak count byte memori

dari blok dimulai byte pertama source dan disalinkan ke byte pertama

dest.

4. Prosedur standar FILLCHAR

Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variabel,

sebagai berikut:

FillChar(x;count :word;ch);

X adalah variabel yang dapat bertipe apapun yang akan diisi dengan

nilai tipe ordinal Ch sebanyak count byte.

C. TUGAS PENDAHULUAN 1. Carilah contoh program di internet atau di buku dengan ketentuan di

bawah ini:

a. Sebuah contoh program dengan menggunakan prosedur, dan

pegiriman parameternya secara nilai.

b. Sebuah contoh program dengan menggunakan prosedur, dan

pegiriman parameternya secara acuan.

2. Jelaskan kedua contoh program tersebut dan kumpulkan.

3. Analisislah program di bawah ini dan tuliskan output programnya.

Procedure pro1(var I : integer); Forward;  Procedure pro2(var I : integer);  Begin  

Writeln(‘prosedur pro’, I);  End;   Procedure pro1;  Begin  

Writeln(‘prosedur pro’,I);  End;  Var I : integer;  Begin  

I := 1; pro1(I);  I := 2; pro2(I);  

End.     

Page 12: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

11                                               By: Demz 

D. PERCOBAAN 1. Jelaskan program di bawah ini dan analisalah output programnya.

Procedure Hitung(A,B : integer);  Var C : integer;  Begin  

C := A + B;  Writeln(‘Nilai C = ‘,C)  

End;   Var X,Y : integer;  Begin  

Write(‘Nilai X ? ‘); Readln(X);  Write(‘Nilai Y ?’); Readln(Y);  Hitung(X,Y);  

End.   

2. Jelaskan program berikut ini dan analisalah parameternya.

Procedure Hitung(Var A,B,C : integer);  Begin  

C := A + B;  End;   Var X,Y,Z : integer;  Begin  

X := 2; Y:= 3;  Hitung(X,Y,Z);  Writeln(‘X = ‘,X,’ Y = ‘,Y,’ Z = ‘,Z);  

End.   

3. Bandingkan kedua program di atas dan simpulkan.

4. Program di bawah ini masih terdapat kesalahan, temukan kesalahan

tersebut dan lengkapilah hingga dapat dijalankan.

program Hitung_Faktorial; uses wincrt; prosedure faktorial (var fak,hasil:integer); var    i:integer;  begin      hasil:=1;      for i:=2 to fak do hasil:=hasil*i; end.  

Page 13: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

12                                               By: Demz 

var    n,f:integer;  begin      write ('Berapa faktorial yang akan dihitung?=');      readln (n);      writeln;      writeln (n,' faktorial ='.f); end.  

Page 14: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

13                                               By: Demz 

PRAKTIKUM 4 (1/2) FUNGSI

A. TUJUAN PRAKTIKUM 1. Memahami bentuk umum penulisan dan pendeklarasian fungsi

2. Memahami fungsi tanpa parameter

B. TEORI DASAR Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus

dideklarasikan dengan tipenya atau jenis hasilnya. Tipe deklarasi ini

menunjukkan tipe hasil dari fungsi.

Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr,

succ dan sebagainya.

Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function.

Sedangkan function yang akan bicarakan disini adalah fungsi yang kita

buat sendiri.

Berbeda dengan procedure, function merupakan modul program yang

menghasilkan suatu kuantitas.

Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data

dari kuantitas yang dihasilkan.

Secara umum bentuk header suatu function adalah:

FUNCTION nama : jenis hasil;

Atau FUNCTION nama (formal parameter : jenis ) : jenis_hasil;

FUNGSI TANPA PARAMETER

Suatu fungsi yang tanpa menggunakan parameter berarti nilai balik yang

akan dihasilkan merupakan nilai yang sudah pasti. Parameter digunakan

untuk memberikan input pada fungsi dan fungsi akan memberikan hasil

balik sesuai dengan parameter yang diberikannya.

Page 15: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

14                                               By: Demz 

Sedang pada fungsi yang tidak mempunyai parameter, maka hasil fungsi

tersebut tidak dapat diatur dari modul yang menggunakannya, karena tidak

ada parameter yang dikirimkan. Dengan demikian fungsi yang tanpa

parameter jarang dipergunakan.

C. TUGAS PENDAHULUAN 1. Jelaskan pendeklarasian fungsi!.

2. Jelaskan perbedaan antara fungsi dengan prosedur!.

3. Buatlah sebuah program sederhana dengan menggunakan fungsi tanpa

parameter untuk menampilkan kalimat “TEKNIK INFORMATIKA

2010”.

4. Kerjakanlah untuk setiap permasalahan dalam percobaan dan

kumpulkan hasilnya.

D. PERCOBAAN 1. Buatlah sebuah program sederhana (tidak menggunakan fungsi) untuk

menampilkan kalimat “Belajar Pascal”.

2. Analisa dan jelaskan program dengan menggunakan fungsi tanpa

parameter di bawah ini, dan bagaimana output programnya?.

uses wincrt; function tampil:string; begin      tampil:='Belajar Pascal'; end;  begin      writeln (tampil); end.  

3. Bandingkan kedua program di atas, jelaskan perbedaannya dan

persamaannya serta simpulkan!.

4. Di bawah ini merupakan fungsi tanpa parameter untuk membuat garis.

Namun program tersebut dapat diefisiensikan tanpa menggunakan

fungsi. Efisiensikan program di bawah ini hingga menjadi program

sederhana tanpa menggunakan fungsi!.

Page 16: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

15                                               By: Demz 

uses wincrt; type huruf = string[18]; function garis:huruf;  begin      garis:='‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'; end;  begin      writeln (garis);      writeln ('TEKNIK INFORMATIKA');      writeln (garis); end.   

5. Bandingkan program No.4 dengan program yang telah diefisiensikan

dan simpulkan.

   

Page 17: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

16                                               By: Demz 

PRAKTIKUM 5 (2/2) FUNGSI

A. TUJUAN PRAKTIKUM 1. Memahami parameter dalam fungsi

B. TEORI DASAR

PARAMETER DALAM FUNGSI

Sama halnya dengan prosedur, parameter dalam fungsi dapat dikirimkan

secara nilai (by value) atau secara acuan (by reference). Penulisan judul

fungsi yang menggunakan parameter dengan pengiriman secara nilai dapat

dilihat pada contoh penulisan berikut:

Function Hitung (a,b:integer):integer;

Sedangkan penulisan judul fungsi yang menggunakan parameter dengan

pengiriman secara acuan adalah dengan menambahkan kata cadangan Var.

hal ini dapat dilihat pada contoh penulisan berikut:

Function Hitung (var a,b:integer):integer;

Pengiriman parameter dengan secara acuan akan mengakibatkan

perubahan nilai parameter pada fungsi juga merubah nilai parameter pada

modul yang mengirimkannya. Dengan demikian fungsi yang

menggunakan pengiriman parameter secara acuan ini mirip dengan

prosedur, yaitu parameter yang dikirimkan secara acuan tersebut dapat

dimanfaatkan sebagai hasil balik.

C. TUGAS PENDAHULUAN 1. Buatlah setiap program pada percobaan dan kumpulkan sebelum

memulai praktikum.

D. PERCOBAAN 1. Buatlah sebuah program dengan menggunakan fungsi untuk

menghitung luas sebuah luas bangun persegi panjang (gunakan

pengiriman parameter secara nilai).

Page 18: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

17                                               By: Demz 

2. Apa keluaran dari program di bawah ini?, dan analisislah fungsi yang

digunakan!.

uses wincrt; Function Hitung(Var A,B : integer): integer; Begin      Hitung := A + B; End;  Var X,Y : integer; Begin      Write('Nilai X ? '); Readln(X);      Write('Nilai Y ? '); Readln(Y);      Writeln;      Writeln(X,' + ',Y,' = ',Hitung(X,Y)); End.  

3. Buatlah sebuah program dengan menggunakan fungsi (parameternya

dikirim secara acuan) untuk menghitung besar energy kinetic. Besar

energy kinetic dapat dihitung dengan menggunakan persamaan

Ek=1/2mv2, dimana m adalah massa dan v merupakan kecepatan yang

diinput melalui keyboard.

4. Buatlah fungsi dalam sebuah program untuk menentukan nilai terbesar

dari dua buah nilai bertipe data integer yang diinputkan.

Page 19: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

18                                               By: Demz 

PRAKTIKUM 6 (1/2) REKURSI

A. TUJUAN PRAKTIKUM 1. Memahami konsep dan kondisi pengakhiran rekursi

B. TEORI DASAR

PENGERTIAN REKURSI

Rekursi (recursion) merupakan proses dari suatu sub program (dapat

berupa prosedur atau fungsi) yang memanggil dirinya sendiri.

KONDISI PENGAKHIRAN REKURSI

Jika kita menulis suatu fungsi atau prosedur rekursi, yang perlu

diperhatikan adalah fungsi atau prosedur tersebut harus mendukung suatu

kondisi akhir dari proses rekursi. Kondisi ini diperlukan untuk mencegah

terjadinya proses rekursi yang tidak berujung (indefinite), yaitu proses

rekursi akan terus dilakukan tanpa henti.

Komdisi pengakhiran rekursi dapat dilakukan dengan menggunakan

statement penyeleksian kondisi. Rekursi akan dihentikan bila kondisi telah

memenuhi syarat.

C. TUGAS PENDAHULUAN 1. Buatlah penyelesaian untuk setiap permasalahan pada percobaan dan

kumpulkan sebelum memulai praktikum.

D. PERCOBAAN 1. Analisislah output dari program di bawah ini, mengapa demikian?

uses wincrt; procedure rekursi; begin      write ('INFORMATIKA 2010');      rekursi; end;  begin      rekursi; end. 

Page 20: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

19                                               By: Demz 

 

2. Analisislah output dari program yang berikut ini, mengapa demikian?

uses wincrt; var    akhir:word;  procedure rekursi;  begin      if akhir<12 then       begin           writeln ('INFORMATIKA 2010');           akhir:=akhir+1;           rekursi;      end; end;  begin      akhir:=0;      rekursi; end.  

3. Bandingkan program No.1 dan program No.2 kemudian simpulkan!

4. Lengkapilah dan perbaikilah program di bawah ini hingga dapat

dijalankan untuk menampilkan deret bilangan.

prosedur deret(u; integer); begin write (u:3): if u<12 then deret(u+1); end; var u:integer begin u:=0; deret; end. 

Page 21: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

20                                               By: Demz 

PRAKTIKUM 7 (2/2) REKURSI

A. TUJUAN PRAKTIKUM 1. Memahami penggunaan rekursi

B. TEORI DASAR Telah diketahui bahwa suatu fungsi atau prosedur dalam bahasa Pascal

dapat bersifat rekursif. Artinya, fungsi atau prosedur tersebut dapat

memanggil dirinya sendiri. Hal ini dapat dimanfaatkan dalam program

untuk menghitung faktorial, perkalian dua bilangan positif, bilangan

fibonaci, dll.

Sebagai contoh, program untuk menghitung faktorial. faktorial adalah

1x2x3…n (dengan asumsi n>3) dan dapat dirumuskan sebagai berikut:

N!=N*(N-1)*(N-2)*…*1

Perumusan ini dapat didefinisaikan secara rekursi sebagai berikut:

N!=N*(N-1)!

Misalnya akan dihitung 4!:

faktorial (4) = 4 * faktorial (3)  3 * faktorial (2)  

2 * faktorial (1)  1 * faktorial (0)  

1  = 4 * 3 * 2 * 1 * 1  = 24  

Contoh lain dari proses rekursi adalah perkalina dari dua bilangan bulat

positif. Hasil perkalian A*B untuk A dan B merupakan bilangan bulat

positif dapat didefinisikan sebagai A ditambah dengan nilainya sendiri

sebanyak B kali. Proses rekursi ini selanjutnya dapat didefinisikan:

A*B=A untuk B=0

A*B=A+A*(B-1) untuk B>1

 

 

Page 22: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

21                                               By: Demz 

C. TUGAS PENDAHULUAN 1. Berikan solusi untuk setiap permasalahan pada percobaan dan

kumpulkan sebelum memulai praktikum.

D. PERCOBAAN 1. Di bawah ini merupakan prosedur untuk menghitung faktorial.

Lengkapilah prosedur tersebut hingga menjadi sebuah program

lengkap untuk menghitung nilai faktorial dari bilangan yang

diinputkan melalui keyboard.

procedure faktorial (n:byte; var hasil:longint); begin      if n<=1 then         hasil:=1         else             begin                  faktorial(n‐1,hasil);                  hasil:=n*hasil;             end; end;  

2. Program di bawah ini merupakan program untuk menghitung perkalian

dua bilangan bulat positif. Analisislah program tersebut dan

simpulkan!.

program hasilkali; uses wincrt; function kali (a,b:integer):integer; begin      if b=1 then         kali:=a         else             kali:=a+kali(a,b‐1) end; var    bil1,bil2:integer;  begin      write ('Bilangan pertama ='); readln (bil1);      write ('Bilangan kedua   ='); readln (bil2);      writeln;      writeln (bil1,'x',bil2,' = ',kali(bil1,bil2)); end. 

Page 23: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

22                                               By: Demz 

PRAKTIKUM 8 (1/2) ARRAY (LARIK)

A. TUJUAN PRAKTIKUM 1. Memahami pendeklarasian Array

2. Memahami Array satu dimensi

B. TEORI DASAR Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-

komponen yang mempunyai tipe sama. Komponen-komponen tersebut

disebut sebagai komponen type, larik mempunyai jumlah komponen yang

jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu

indeks, dimana tiap komponen di array dapat diakses dengan menunjukkan

nilai indeksnya atau subskript. Array dapat bertipe data sederhana seperti

byte, word, integer, real, bolean, char, string dan tipe data scalar atau

subrange. Tipe larik mengartikan isi dari larik atau komponen-

komponenya mempunyai nilai dengan tipe data tersebut.

Contoh:  

Var  

Untai : array[1..50] of Integer;  

Pada contoh Array dengan nama untai di atas telah dideklarasikan dengan

tipe integer, dengan jumlah elemen maksimum 50 elemen, nilai dari

elemen array tersebut di atas harus bertipe integer.

Contoh Program:   Uses winCrt;  Var  Bilangan : array[1..50] of Integer;  Begin     Bilangan[1]:=3;     Bilangan[2]:=29;     Bilangan[3]:=30;      Bilangan[4]:=31;     Bilangan[5]:=23;    Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);  End.  

Page 24: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

23                                               By: Demz 

Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini:  Program Contoh_Deklarasi_Array_Beragam;  Uses winCrt;  Var     NPM : array[1..20] of string[10];     Nama : array[1..20] of string[25];     Nilai : array[1..20] of real;     Umur : array[1..20] of byte;     banyak,i : integer;  Begin     ClrScr;     Write('Isi berapa data array yang diperlukan :');Readln(banyak);     For i := 1 to banyak Do        Begin         Write('NPM =');Readln(NPM[i]);        Write('Nama =');readln(Nama[i]);        Write('Nilai=');readln(Nilai[i]);        Write('Umur =');readln(Umur[i]);  End;  {cetak varibel array}  Writeln('NPM NAMA NILAI UMUR ');  For i:= 1 to banyak Do      Begin          Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);      End;      Readln;   End.   

Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini:

Type  

Angka = String[20];  

Var  

Nama : Array [1..50] of Angka;  

Begin  

.  

.  

End.  

 

Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar

atau subrange, tetapi tidak bisa real.

Page 25: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

24                                               By: Demz 

Contoh:  

Var  

Nilai : Array[1..10] of Integer;  pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10.

Array tersebut dapat dideklarasikan dengan type seperti berikut ini :

Type  

Skala = 1..10;  

Var  

   Nilai : Array [skala] of Integer;  

atau :  

Type  

Skala = 1..10;  

Y = Array[skala] of Integer;  

Var  

   Nilai : Y;  

C. TUGAS PENDAHULUAN 1. Buatlah penyelesaian dari setiap permasalahan pada percobaan.

D. PERCOBAAN 1. Analisislah program berikut dan bagaimana outputnya?

Program Contoh; Uses wincrt;  Var      nilai: array[1..5] of Integer;  Begin     nilai[1]:=100;     nilai[2]:=90;     nilai[3]:=80;      nilai[4]:=61;     nilai[5]:=73;     Writeln ('Nilai ke‐4 adalah =',nilai[4]);     Readln;  End.  

2. Ubahlah program No.1 di atas, dimana nilai-nilainya diinput melalui

keyboard.

Page 26: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

25                                               By: Demz 

3. Bandingkan kedua program di atas dan simpulkan.

4. Di bawah ini merupakan program untuk menginput nama dan nilai

mahasiswa sebanyak 10 data dan menampilkan kembali inputan

tersebut, dimana variabel nama dan nilai bertipe data Array. Namun

program berikut ini masih terdapat kekurangan, lengkapi dan

perbaikilah program tersebut hingga dapat dijalankan.

uses wincrt; var    i:integer;    nama:array [1..10] of string;    nilai:array [1…10] of integer;  begin      for i=1 to 10 do;       begin           write ('Nama ke‐',i,' ='); readln (nama[1]);           write ('Nilai ke‐',i,'='); readln (nilai[i]);           writeln;      end;       writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');      writeln ('Nama        Nilai');      writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');      for i:= 1 to 10 do       begin           writeln (nama[1],'      ',nilai[i])      end;      writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'); end; end.  

5. Ubahlah program No.4 tersebut, dimana banyaknya data tergantung

dari inputan user dan di akhir program muncul pertanyaan “apakah

akan mengulang program (y/t)?”. Jika di tekan y maka program akan

mengulang kembali, jika ditekan t program akan berhenti.

Page 27: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

26                                               By: Demz 

PRAKTIKUM 9 (2/2) ARRAY (LARIK)

A. TUJUAN PRAKTIKUM 1. Memahami Array multidimensi

B. TEORI DASAR Pada pembahasan sebelumnya, indeks atau subscript pada larik (array)

jumlahnya hanya sebuah dan larik ini disebut dengan Array dimensi satu

(one dimensional array). Larik dapat juga berdimensi lebih dari satu yang

disebut dengan larik dimensi banyak (multidimensional array), yang dapat

berdimensi dua (two dimensional array), berdimensi tiga (three

dimensional array) dan seterusnya.

Pascal memungkinkan larik berdimensi lebih dari 3, yang membatasi

hanya kapasitas dari memory computer (RAM). Secara prinsip, larik

dimensi lebih dari 2 penanganannya sama dengan larik dimensi 2 dan pada

pembahasan ini hanya akan dibahas larik dimensi 2 saja.

Larik dimensi 2 mewakili suatu bentuk tabel atau matrik, yaitu indeks

yang pertama dapat menunjukkan baris dan indeks yang kedua dapat

menunjukkan kolom dari tabel atau matrik. Bentuk deklarasinya sebagai

berikut:

Nama-larik=array[tipe-indeks1] of array[tipe-indeks2] of tipe-larik

Atau dapat ditulis:

Nama-larik=array[tipe-indeks1, tipe-indeks2] of tipe-larik

C. TUGAS PENDAHULUAN 1. Carilah di internet sebuah contoh program Array 2 dimensi, kemudian

anlisislah output program tersebut.

2. Selesaikanlah semua permasalahan pada percobaan, dan kumpulkan

sebelum memulai praktikum

.

Page 28: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

27                                               By: Demz 

D. PERCOBAAN 1. Analisislah output dari program berikut ini:

Uses winCrt; Var    matrix:Array[1..3,1..2] of Integer;    i,j  :integer;  Begin        matrix[1,1]:=1;       matrix[1,2]:=2;        matrix[2,1]:=3;        matrix[2,2]:=4;        matrix[3,1]:=5;        matrix[3,2]:=6;        for i:= 1 to 3 Do       Begin            for J:= 1 to 2 Do                begin                     Write(matrix[i,j]:5);                end;            writeln;       End;  End. 

2. Ubahlah program No.1 di atas, dimana nilai-nilainya diinput melalui keyboard.

3. Buatlah sebuah program yang menampilkan sebuah matrik (terdiri dari 4 kolom dan 2 baris), dimana setiap elemennya diinput oleh user.

4. Analisalah program penjumlahan 2 buah matrik di bawah ini:

Program Penjumlahan_Matrik; Uses winCrt;  Var      Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;      i,j : Integer;  Begin  ClrScr;  { input matrik ke satu }  Writeln('input elemen matrik pertama');  For i := 1 to 3 Do      Begin            For j := 1 to 2 Do            Begin                  Write('Elemen baris ‐',i,' Kolom ‐',j,'= ');  

Page 29: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

28                                               By: Demz 

                Readln(matrik1[i,j]);            End;      End; writeln;  {input matrik ke dua}  Writeln('input elemen matrik kedua');  For i:= 1 to 3 Do      Begin            For j:= 1 to 2 Do            Begin                  Write('Elemen baris ‐',i,' kolom ‐',j,'= ');                  Readln(matrik2[i,j]);            End;      End; writeln;  {proses penjumlahan tiap elemen}  For i := 1 to 3 Do  Begin        For j:= 1 to 2 Do        Begin              Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];        End;  End;  {proses cetak hasil} writeln ('HASIL PENJUMLAHAN:'); For i:= 1 to 3 Do  Begin        For j:= 1 to 2 Do        Begin              Write(Hasil[i,j]:6);        End;  Writeln;  End;  Readln;  End. 

Page 30: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

29                                               By: Demz 

PRAKTIKUM 10 (1/3) RECORD

A. TUJUAN PRAKTIKUM 1. Memahami pendeklarasian record

B. TEORI DASAR Record merupakan suatu kumpulan data item yang masing-masing

mempunyai jenis data berbeda. Data item yang merupakan elemen record

biasanya disebut dengan FIELD.

CARA MENDEKLARASIKAN RECORD

Bentuk umum deklarasi suatu variabel berjenis record adalah sbb:

TYPE identifier = RECORD  Nama_field_1 : jenis;  Nama_field_2 : jenis;  ……………………..  ……………………..  nama_field_n : jenis;  END;   1. Contoh 1:

VAR nilai : RECORD  Nilai_1 : integer;  Nilai_2 : integer;  

END;   

2. Contoh 2:

TYPE date = RECORD  Tanggal : 1..31;  Bulan : 1…12;  Tahun : 1900..2000;  

END;  VAR event1,event2 : ARRAY [1..10] OF date;   

3. Contoh 3:

TYPE account = RECORD  cust_no : integer;  cust_type : char;  cust_balance : real;  

Page 31: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

30                                               By: Demz 

END;  VAR customer : account;   

MEMPROSES VARIABEL BERJENIS RECORD

Perhatikan deklarasi variabel berikut:

TYPE nilai : RECORD  Nilai1 : real;  Nilai2 : real;  END;  VAR x,y : nilai;   Untuk memproses variabel x dan / atau y dilakukan dengan cara

menyebutkan field designatornya, yang terdiri dari atas:

Nama_record.nama_field   Pada deklarasi diatas yang dimaksud dengan field designator-nya adalah :

x.nilai1  x.nilai2  y.nilai1  y.nilai2   Jadi jika ingin membaca variabel x atau y atau keduanya, maka bentuk

statement-nya adalah:

READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2);   

C. TUGAS PENDAHULUAN 1. Buatlah penyelesaian dari setiap permasalahan pada percobaan.

D. PERCOBAAN 1. Di bawah ini merupakan contoh program penggunaan tipe data record.

Namun program tersebut belum lengkap dan masih terdapat kesalahan.

Lengkapi dan perbaikilah program tersebut hingga dapat dijalankan.

uses wincrt; type     hasil:record           sisi    :integer;           luas    :integer; 

Page 32: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

31                                               By: Demz 

          keliling:integer; var    bujursangkar:hasil;  begin        write ('Masukkan panjang sisi ='); readln (bujursangkar.sisi);        luas:=bujursangkar.sisi*bujursangkar.sisi;       keliling=4*bujursangkar.sisi;       writeln;        writeln ('Luasnya      =', luas);       writeln ('kelilingnya =', keliling); end.  

2. Ulangi program No.1 di atas dengan mengubah deklarasi tipe data

recordnya, yaitu dideklarasikan langsung pada deklarasi variabel.

3. Bandingka program No.1 dan program No.2 kemudian simpulkan.

4. Buatlah sebuah program dengan menggunakan tipe data record untuk

menginput identitas mahasiswa yang terdiri dari nama, NIM, jenis

kelamin, agama dan alamat. Kemudian tampilkan kembali identitas

yang telah diinput tersebut.

Page 33: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

32                                               By: Demz 

PRAKTIKUM 11 (2/3) RECORD

A. TUJUAN PRAKTIKUM 1. Memahami statement With

2. Memahami Array bertipe record

3. Memahami Array dalam Record

B. TEORI DASAR STATEMENT WITH 

Selain cara yang telah disebutkan diatas, untuk memproses suatu record

dapat digunakan statement WITH.

Dengan statement ini penulisannya akan lebih sederhana. Bentuk Umum

penulisan statement WITH ini adalah:

WITH nama_record DO statement  

Perhatikan deklarasi dibawah ini :

TYPE x = RECORD  No : integer;  Kode : char;  Juml : integer;  Harga : real;  

END;  VAR p,q : x;   Untuk membaca variabel p dan q di atas dengan memanfaatkan statement

WITH bentuknya menjadi:

WITH p,q DO read (no, kode, juml, harga);   Bandingkan jika digunakan cara sebelumnya :

Read(p.no, p.kode, p.juml,p.harga,q.no,q.kode,q.juml,q.harga);  

ARRAY BERTIPE RECORD

Tipe terstruktur (Array) dapat pula bertipe record. Perhatikan contoh

berikut:

type  barang=RECORD  

Page 34: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

33                                               By: Demz 

namabrg:string[20];  jmlbrg:byte;  hargabrg:real;  total:real;  

end;  var  

jual:array [1..10] of barang  i,j:integer;  tot1:real;  

ARRAY DALAM RECORD

Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat

di bawah ini:

Type barang= RECORD  nmbrg:string[20];  jmlbrg:array[1..3]of byte;  hrgbrg:real;  total:real;  

end;  var  

jual:barang;  tbarang, i:integer;   

C. TUGAS PENDAHULUAN 1. Buatlah penyelesaian dari setiap permasalahan pada percobaan.

D. PERCOBAAN 1. Buatlah sebuah program dengan menggunakan tipe data record untuk

menghitung besar energy potensial, dimana nilai m, g dan h diinput

melalui keyboard.

2. Ubahlah program No.1 dengan menggunakan statement WITH.

3. Bandingkan kedua program di atas dan simpulkan.

4. Analisislah program yang menggunakan Array bertipe Record berikut

ini:

uses wincrt; type     mahasiswa=record         nama :string;         kelas :string; 

Page 35: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

34                                               By: Demz 

        nilai :integer;         ket:string;     end;  var    mhs:array [1..62] of mahasiswa;    data,i:integer;     begin      write ('banyak data ='); readln (data);      writeln;       for i:=1 to data do       begin           write ('nama ='); readln (mhs[i].nama);           write ('kelas='); readln (mhs[i].kelas);           write ('nilai='); readln (mhs[i].nilai);           writeln;            if mhs[i].nilai>65 then              mhs[i].ket:='lulus'                 else                     mhs[i].ket:='tdk lulus';       end;       writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');      writeln ('no  nama       kelas      nilai    ket');      writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');       for i:= 1 to data do       begin           writeln (i,'  ',mhs[i].nama,'       ',mhs[i].kelas,'      ',mhs[i].nilai,'   ',mhs[i].ket);      end;      writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'); end.  

5. Analisislah program yang memanfaatkan Array dalam Record di

bawah ini:

uses wincrt; type     mhs=record 

Page 36: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

35                                               By: Demz 

          nama,nim,agama,alamat:string;           jk:char;           hobby:array [1..10] of string;     end;  var    mahasiswa:mhs;    jum_hobi,i:integer;      begin      write ('Nama  ='); readln (mahasiswa.nama);      write ('NIM   ='); readln (mahasiswa.nim);      write ('JK    ='); readln (mahasiswa.JK);      write ('Agama ='); readln (mahasiswa.agama);      write ('Alamat='); readln (mahasiswa.alamat);      writeln;       write ('Berapa hobi anda ='); readln (jum_hobi);      for i:=1 to jum_hobi do       begin           write ('Hobby ke‐',i,'='); readln (mahasiswa.hobby[i]);      end; end. 

Page 37: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

36                                               By: Demz 

PRAKTIKUM 12 (3/3) RECORD

A. TUJUAN PRAKTIKUM 1. Memahami record di dalam record

2. Memahami record bervariasi

B. TEORI DASAR RECORD DI DALAM RECORD 

Didalam sebuah record memungkinkan berisi record lain. Sebagai

gambaran hal ini, perhatikan deklarasi berikut:

RecTanggal = Record     Tanggal,     Bulan,     Tahun :Integer   End; RecPegawai = Record     Nomor : LongInt;     Nama  : String [35];     TglLahir  : RecTanggal;     Gaji  : LongInt   End;  

Tampak bahwa tipe record bernama RecPegawai berisi record yang lain

(RecTanggal).

Hal yang menarik yang perlu diperhatikan adalah cara mengakses field

seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai

berikut.

Nama_variabel.TglLahir.Tanggal Nama_variabel.TglLahir.Bulan Nama_variabel.TglLahir.Tahun  

RECORD BERVARIASI

Record bervaiasi merupakan suatu record dengan field yang bisa berubah

pada saat program berjalan. Hal yang perlu diperhatikan adalah bahwa

Page 38: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

37                                               By: Demz 

beberapa field yang berada dalam record tidak pernah muncul dalam

serempak, hanya akan ada satu field yang terpakai dalam satu saat.

Record varian akan memberikan fasilitas untuk menentukan field yang

diperlukan pada saat program berjalan (RUN-TIME), berdasarkan

keperluannya.

Bentuk umum Record Varian:

TYPE  namarecord = RECORD  

Nama_field_1 : jenis;  Nama_field_2 : jenis;  ……………………..  nama_field_n : jenis;  Case Tagfield:jenis Of  nama_tagfield : (Nama_field:jenis);  nama_tagfield : (Nama_field_1, Nama_field_2:jenis);  ……………………..  nama_tagfield : (Nama_field_n:jenis);  

END;  

C. TUGAS PENDAHULUAN 1. Carilah di internet sebuah contoh program yang menggunakan record

variant dan record di dalam record.

2. Jelaskan dan analisislah kedua program tersebut.

3. Buatlah solusi dari setiap permasalahan pada percobaan.

D. PERCOBAAN 1. Analisislah sebuah program yang menggunakan record di dalam record

berikut ini:

uses wincrt; type     RecTanggal = Record                    tanggal,bulan,tahun:integer;                  end;      RecPegawai = Record                    Nomor      :Longint;                    Nama       :string[35];                    TglLahir   :RecTanggal;                    Gaji       :longint;                  end; 

Page 39: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

38                                               By: Demz 

 var    DataPeg:RecPegawai;  begin clrscr;        DataPeg.Nomor:=56789;        DataPeg.Nama :='Demz';        DataPeg.TglLahir.Tanggal:=12;        DataPeg.TglLahir.Bulan:=7;        DataPeg.TglLahir.Tahun:=1990;        DataPeg.Gaji:=750000;         writeln ('Nama Pegawai =',DataPeg.Nama);        writeln ('Tanggal Lahir=',DataPeg.TglLahir.Tanggal,'/',                                  DataPeg.TglLahir.Bulan,'/',                                  DataPeg.TglLahir.Tahun); end.  

2. Ubahlah program di atas dengan menggunakan statemen WITH dan

semua elemen seperti nomor, nama, ttl dst diinput melalui keyboard.

Kemudian tampilkan kembali inputan tersebut.

3. Analisislah program yang menggunakan record bervariasi di bawah

ini:

{Contoh Program Record Varian Sederhana,by:Demz} uses wincrt; type     statusmahasiswa=(single,menikah);     data=record                       nama:string[25];                       nim :string[12];                       case status:statusmahasiswa of                            single:();                            menikah:();                       end;  var    mahasiswa:array[1..20] of data;    jawab:char;    n,i:integer;  begin      write ('jumlah data='); readln (n);      for i:=1 to n do 

Page 40: Modul Praktikum Algoritma & Pemrograman II

Algoritma & Pemrograman II

39                                               By: Demz 

      begin           with mahasiswa[i] do            begin                writeln;                write ('Nama   ='); readln (nama);                write ('NIM    ='); readln (NIM);                write ('Status (Single (S) / Menikah (M)) ='); readln (jawab);                 if upcase (jawab)='S' then                 begin                     status :=single;                end;                 if upcase (jawab)='M' then                begin                     status:=menikah;                end;           end;      end;       writeln;      WRITELN ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');      writeln ('Nama          Nim         Status');      writeln ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');      for i:=1 to n do      begin           with mahasiswa[i] do           begin                write (nama,'     ',nim);                case status of                     single :writeln ('        S');                     menikah:writeln ('        M');                end;           end;      end;      WRITELN ('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐'); end. 

 


Recommended