Anda di halaman 1dari 40

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

Algoritma & Pemrograman II

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

1 By:Demz

Algoritma & Pemrograman II

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; proceduremaksimum; var max:integer; begin ifa>bthenmax:=aelsemax:=b; ifc>maxthenmax:=c; writeln('Jadinilaimaksimumnyaadalah=',max); end; begin write('MasukanNilaia=');readln(a); write('MasukanNilaib=');readln(b); write('MasukanNilaic=');readln(c); maksimum; end.

b. Contoh 2: var p,l,t:real; procedurebalok; var v:real; begin v:=p*l*t; writeln('Volumenyaadalah=',v:2:0); end; begin write('MasukanNilaipanjang=');readln(p); write('MasukanNilailebar=');readln(l); write('MasukanNilaitinggi=');readln(t); balok; end. 2. Buatlah program untuk setiap permasalahan dalam percobaan!.

2 By:Demz

Algoritma & Pemrograman II

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.

3 By:Demz

Algoritma & Pemrograman II

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:

4 By:Demz

Algoritma & Pemrograman II

2. Contoh 2:

C. TUGAS PENDAHULUAN 1. Buatlah sebuah contoh program sederhana variabel local.

yang menggunakan

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.

5 By:Demz

Algoritma & Pemrograman II

D. PERCOBAAN 1. Analisislah program di bawah ini, apakah variabel yang digunakan merupakan variabel local atau variabel global. ProcedureTanya_hitung; VarX,Y:real; Begin Write(NilaiX?);Readln(X); Y:=X*X; Writeln(NilaiY=,Y:6:2); End; Begin Tanya_Hitung; End. 2. Jika program No.1 diubah menjadi seperti program di bawah ini, bagaimana hasilnya dan jelaskan!. ProcedureTanya_hitung; VarX,Y:real; Begin Write(NilaiX?);Readln(X); Y:=X*X; End; Begin Tanya_Hitung; Writeln(NilaiY=,Y:6:2); End. 3. Program di bawah ini tidak dapat di compile karena terdapat kesalahan. Perbaikilah program berikut hingga dapat dijalankan dan jelaskan. ProcedureCetakNama; Begin Writeln(NamaKu); End; VarNamaKu:string[20]; Begin NamaKu:=Pascal; CetakNama; End.

6 By:Demz

Algoritma & Pemrograman II

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:

7 By:Demz

Algoritma & Pemrograman II

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 variabelvariabel tersebut. Contoh 2:

Pada contoh di atas, variabel A dan B bersifat global, sehingga dapat digunakan untuk semua modul.

8 By:Demz

Algoritma & Pemrograman II

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

9 By:Demz

Algoritma & Pemrograman II

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. Procedurepro1(varI:integer);Forward; Procedurepro2(varI:integer); Begin Writeln(prosedurpro,I); End; Procedurepro1; Begin Writeln(prosedurpro,I); End; VarI:integer; Begin I:=1;pro1(I); I:=2;pro2(I); End.

10 By:Demz

Algoritma & Pemrograman II

D. PERCOBAAN 1. Jelaskan program di bawah ini dan analisalah output programnya. ProcedureHitung(A,B:integer); VarC:integer; Begin C:=A+B; Writeln(NilaiC=,C) End; VarX,Y:integer; Begin Write(NilaiX?);Readln(X); Write(NilaiY?);Readln(Y); Hitung(X,Y); End.

2. Jelaskan program berikut ini dan analisalah parameternya. ProcedureHitung(VarA,B,C:integer); Begin C:=A+B; End; VarX,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. programHitung_Faktorial; useswincrt; prosedurefaktorial(varfak,hasil:integer); var i:integer; begin hasil:=1; fori:=2tofakdohasil:=hasil*i; end.

11 By:Demz

Algoritma & Pemrograman II

var n,f:integer; begin write('Berapafaktorialyangakandihitung?='); readln(n); writeln; writeln(n,'faktorial='.f); end.

12 By:Demz

Algoritma & Pemrograman II

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.

13 By:Demz

Algoritma & Pemrograman II

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?. useswincrt; functiontampil:string; begin tampil:='BelajarPascal'; 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!.

14 By:Demz

Algoritma & Pemrograman II

useswincrt; typehuruf=string[18]; functiongaris:huruf; begin garis:=''; end; begin writeln(garis); writeln('TEKNIKINFORMATIKA'); writeln(garis); end. 5. Bandingkan program No.4 dengan program yang telah diefisiensikan dan simpulkan.

15 By:Demz

Algoritma & Pemrograman II

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

16 By:Demz

Algoritma & Pemrograman II

2. Apa keluaran dari program di bawah ini?, dan analisislah fungsi yang digunakan!. useswincrt; FunctionHitung(VarA,B:integer):integer; Begin Hitung:=A+B; End; VarX,Y:integer; Begin Write('NilaiX?');Readln(X); Write('NilaiY?');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.

17 By:Demz

Algoritma & Pemrograman II

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? useswincrt; procedurerekursi; begin write('INFORMATIKA2010'); rekursi; end; begin rekursi; end.

18 By:Demz

Algoritma & Pemrograman II

2. Analisislah output dari program yang berikut ini, mengapa demikian? useswincrt; var akhir:word; procedurerekursi; begin ifakhir<12then begin writeln('INFORMATIKA2010'); 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.

19 By:Demz

Algoritma & Pemrograman II

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 1x2x3n (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 A*B=A+A*(B-1)

untuk B=0 untuk B>1

20 By:Demz

Algoritma & Pemrograman II

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. procedurefaktorial(n:byte;varhasil:longint); begin ifn<=1then hasil:=1 else begin faktorial(n1,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!. programhasilkali; useswincrt; functionkali(a,b:integer):integer; begin ifb=1then kali:=a else kali:=a+kali(a,b1) end; var bil1,bil2:integer; begin write('Bilanganpertama=');readln(bil1); write('Bilangankedua=');readln(bil2); writeln; writeln(bil1,'x',bil2,'=',kali(bil1,bil2)); end.

21 By:Demz

Algoritma & Pemrograman II

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 komponenkomponen 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 komponenkomponenya mempunyai nilai dengan tipe data tersebut. Contoh: Var Untai:array[1..50]ofInteger; 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: UseswinCrt; Var Bilangan:array[1..50]ofInteger; Begin Bilangan[1]:=3; Bilangan[2]:=29; Bilangan[3]:=30; Bilangan[4]:=31; Bilangan[5]:=23; Writeln('nilaivaribelbilanganke3=',Bilangan[3]); End.

22 By:Demz

Algoritma & Pemrograman II

Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini:

ProgramContoh_Deklarasi_Array_Beragam; UseswinCrt; Var NPM:array[1..20]ofstring[10]; Nama:array[1..20]ofstring[25]; Nilai:array[1..20]ofreal; Umur:array[1..20]ofbyte; banyak,i:integer; Begin ClrScr; Write('Isiberapadataarrayyangdiperlukan:');Readln(banyak); Fori:=1tobanyakDo Begin Write('NPM=');Readln(NPM[i]); Write('Nama=');readln(Nama[i]); Write('Nilai=');readln(Nilai[i]); Write('Umur=');readln(Umur[i]); End; {cetakvaribelarray} Writeln('NPMNAMANILAIUMUR'); Fori:=1tobanyakDo 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]ofAngka; Begin . . End.

Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange, tetapi tidak bisa real.
23 By:Demz

Algoritma & Pemrograman II

Contoh: Var Nilai:Array[1..10]ofInteger;


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]ofInteger; atau: Type Skala=1..10; Y=Array[skala]ofInteger; Var Nilai:Y; C. TUGAS PENDAHULUAN 1. Buatlah penyelesaian dari setiap permasalahan pada percobaan. D. PERCOBAAN 1. Analisislah program berikut dan bagaimana outputnya? ProgramContoh; Useswincrt; Var nilai:array[1..5]ofInteger; Begin nilai[1]:=100; nilai[2]:=90; nilai[3]:=80; nilai[4]:=61; nilai[5]:=73; Writeln('Nilaike4adalah=',nilai[4]); Readln; End.

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

24 By:Demz

Algoritma & Pemrograman II

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. useswincrt; var i:integer; nama:array[1..10]ofstring; nilai:array[110]ofinteger; begin fori=1to10do; begin write('Namake',i,'=');readln(nama[1]); write('Nilaike',i,'=');readln(nilai[i]); writeln; end; writeln(''); writeln('NamaNilai'); writeln(''); fori:=1to10do 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.

25 By:Demz

Algoritma & Pemrograman II

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 .

26 By:Demz

Algoritma & Pemrograman II

D. PERCOBAAN 1. Analisislah output dari program berikut ini: UseswinCrt; Var matrix:Array[1..3,1..2]ofInteger; 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; fori:=1to3Do Begin forJ:=1to2Do 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: ProgramPenjumlahan_Matrik; UseswinCrt; Var Matrik1,Matrik2,Hasil:Array[1..3,1..2]ofInteger; i,j:Integer; Begin ClrScr; {inputmatrikkesatu} Writeln('inputelemenmatrikpertama'); Fori:=1to3Do Begin Forj:=1to2Do Begin Write('Elemenbaris',i,'Kolom',j,'=');

27 By:Demz

Algoritma & Pemrograman II

Readln(matrik1[i,j]); End; End; writeln; {inputmatrikkedua} Writeln('inputelemenmatrikkedua'); Fori:=1to3Do Begin Forj:=1to2Do Begin Write('Elemenbaris',i,'kolom',j,'='); Readln(matrik2[i,j]); End; End; writeln; {prosespenjumlahantiapelemen} Fori:=1to3Do Begin Forj:=1to2Do Begin Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j]; End; End; {prosescetakhasil} writeln('HASILPENJUMLAHAN:'); Fori:=1to3Do Begin Forj:=1to2Do Begin Write(Hasil[i,j]:6); End; Writeln; End; Readln; End.

28 By:Demz

Algoritma & Pemrograman II

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: TYPEidentifier=RECORD Nama_field_1:jenis; Nama_field_2:jenis; .. .. nama_field_n:jenis; END;

1. Contoh 1: VARnilai:RECORD Nilai_1:integer; Nilai_2:integer; END;

2. Contoh 2: TYPEdate=RECORD Tanggal:1..31; Bulan:112; Tahun:1900..2000; END; VARevent1,event2:ARRAY[1..10]OFdate;

3. Contoh 3: TYPEaccount=RECORD cust_no:integer; cust_type:char; cust_balance:real;

29 By:Demz

Algoritma & Pemrograman II

END; VARcustomer:account;

MEMPROSES VARIABEL BERJENIS RECORD Perhatikan deklarasi variabel berikut: TYPEnilai:RECORD Nilai1:real; Nilai2:real; END; VARx,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. useswincrt; type hasil:record sisi:integer; luas:integer;

30 By:Demz

Algoritma & Pemrograman II

keliling:integer; var bujursangkar:hasil; begin write('Masukkanpanjangsisi=');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.

31 By:Demz

Algoritma & Pemrograman II

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: WITHnama_recordDOstatement Perhatikan deklarasi dibawah ini :
TYPEx=RECORD No:integer; Kode:char; Juml:integer; Harga:real; END; VARp,q:x;

Untuk membaca variabel p dan q di atas dengan memanfaatkan statement WITH bentuknya menjadi: WITHp,qDOread(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

32 By:Demz

Algoritma & Pemrograman II

namabrg:string[20]; jmlbrg:byte; hargabrg:real; total:real; end; var jual:array[1..10]ofbarang 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]ofbyte; hrgbrg:real; total:real; 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: useswincrt; type mahasiswa=record nama:string; kelas:string;
33 By:Demz

end; var

Algoritma & Pemrograman II

nilai:integer; ket:string; end; var mhs:array[1..62]ofmahasiswa; data,i:integer; begin write('banyakdata=');readln(data); writeln; fori:=1todatado begin write('nama=');readln(mhs[i].nama); write('kelas=');readln(mhs[i].kelas); write('nilai=');readln(mhs[i].nilai); writeln; ifmhs[i].nilai>65then mhs[i].ket:='lulus' else mhs[i].ket:='tdklulus'; end; writeln(''); writeln('nonamakelasnilaiket'); writeln(''); fori:=1todatado 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: useswincrt; type mhs=record
34 By:Demz

Algoritma & Pemrograman II

nama,nim,agama,alamat:string; jk:char; hobby:array[1..10]ofstring; 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('Berapahobianda=');readln(jum_hobi); fori:=1tojum_hobido begin write('Hobbyke',i,'=');readln(mahasiswa.hobby[i]); end; end.

35 By:Demz

Algoritma & Pemrograman II

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

36 By:Demz

Algoritma & Pemrograman II

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; CaseTagfield:jenisOf 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: useswincrt; type RecTanggal=Record tanggal,bulan,tahun:integer; end; RecPegawai=Record Nomor:Longint; Nama:string[35]; TglLahir:RecTanggal; Gaji:longint; end;

37 By:Demz

Algoritma & Pemrograman II

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('NamaPegawai=',DataPeg.Nama); writeln('TanggalLahir=',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: {ContohProgramRecordVarianSederhana,by:Demz} useswincrt; type statusmahasiswa=(single,menikah); data=record nama:string[25]; nim:string[12]; casestatus:statusmahasiswaof single:(); menikah:(); end; var mahasiswa:array[1..20]ofdata; jawab:char; n,i:integer; begin write('jumlahdata=');readln(n); fori:=1tondo

38 By:Demz

Algoritma & Pemrograman II

begin withmahasiswa[i]do begin writeln; write('Nama=');readln(nama); write('NIM=');readln(NIM); write('Status(Single(S)/Menikah(M))=');readln (jawab); ifupcase(jawab)='S'then begin status:=single; end; ifupcase(jawab)='M'then begin status:=menikah; end; end; end; writeln; WRITELN(''); writeln('NamaNimStatus'); writeln(''); fori:=1tondo begin withmahasiswa[i]do begin write(nama,'',nim); casestatusof single:writeln('S'); menikah:writeln('M'); end; end; end; WRITELN(''); end.

39 By:Demz