Anda di halaman 1dari 39

LembagaInformasidanKomunikasi DivisiPendidikandanPelatihan UniversitasMuhammadiyahMalang

TurboPascal ForWondows
ModulPraktikum EdySantoso,S.Si,M.Kom

2010
ModulPraktikumTurboPascal

BABI PENDAHULUAN MEMULAITURBOPASCAL DenganHardDisk 1.C:\Turbo\turbo 2.TungguLayarkerja. PERINTAHPERINTAHTOMBOL EscKeluardarisatupilihanatauproses. F1Help(Bantuan) F2Save(Menyimpanfile/program) F3Open(Memanggilprogramdaridisk) F4Gotocursor(Jalankanprogramhinggakeposisikursor) F5Zoom(Memperkecil/memperbesarjendela) F6Next(Keprogramberikutnyaberpindahantarprogram/jendela) F7Traceinfo(Menjalankanprocedureyangsedang didebug) F9Make(Membuatfile.EXE) F10MengaksesmenuTurboPascal. Alt+0List(Menampilkandaftarprogramyangpernahdipanggil). Alt+F1PreviousTopic(KetopiksebelumnyaHelp) Alt+F3Close(MenutupProgram) Alt+F5Userscreen(MelihathasilRunpadalayar) Alt+F7Gotoprevius(Tools) Alt+F8Gotonext(Tools) Alt+F9Compile(Mengkompilasiprogram) Alt+XExit(Keluar/menutupturbopascal) Alt+BackSpUndo(Mengembalikanyangterhapusterakhir) Shift+F1Index(Bantuandenganmenuabjad) Shift+F2Grep(Untukmenginstalasitool) Shift+F6Previous(Keprogramsebelumnyajikadilayaradabeberapaprogram) Shift+DelCut(Menghapusblok) Shift+InsPaste(MemanggilisClipboard) Control+F1 TopicSearch(BantuanuntuktopikutamaHelpuntukLanguage) Control+F2ProgramReset(Menjalankankembaliprogramdariawal) Control+F3Callstack(Memanggilstack) Control+F4Evaluate/modify(Mengevaluasivariabelatauekspresi) Control+ F5Size/Move(Memindahataumengubahukuranjendela) Control+F7AddWatch(UntukDebug) Control+F8membuatataumenghapusbreakpoint Control+F9Run(MenjalankanProgram) Control+InsCopy(Mengcopyblok) Control+DelClear(MenghapusBlok) OPERASIBLOK

ModulPraktikumTurboPascal

Blok adalah sekumpulan teks yang ditandai (dihighlight) untuk tujuan penghapusanteks secaracepat,pengcopyan,pemindahanteksdanlain lain. CARAMEMBLOK 1. Letakkankursorpadaawalteksyangakandiblok 2. TekantombolSHIFT(jangandilepas) 3. SambilmenekantombolSHIFT,ikutilahdenganmenekantomboltombolberikut: a. Tekananakpanahkananuntukmemblokperkarakterkekanan. b. Tekananakpanahkiriuntukmemblokperkarakterkekiri. c. TekantombolEnduntukmemblokhingakeakhirbaris. d. TekantombolHomeuntukmemblokhingakeawalbaris. e. Tekananakpanahatasuntukmemblokkebarisatas. f. Tekananakpanahbawahuntukmemblokkebarisbawah. 4. Selanjutnyabloktekstersebutsudahdapatdicopy,dihapus, dipindahkanatau yanglainsesuaidengankeperluananda. MENGHILANGKANTANDABLOK Jikainginmembatalkanblok,tekanCTRL+KH,maka tandablok akan hilang. Sebaliknya,tekankembaliCTRL+KH,makatandablokakanmenculkembali. MENGCOPYBLOK Mencopy blok adalah mengcopy teks yangdiblok ke daerah lain, sehingga teks (dalamhalinilistingprogram)tidakdiketikulang. 1. Blok terlebih dahulu teks yang akan dicopy dengan acra yang telah diterangkan sebelumnya. 2. TekanCtrl+Insertuntukmengcopy.{Makablok teksakandikirimkeClipboard} 3. Pindahkankursorkemanateksakandicopy 4. TekanShift+Insert. 5. Makateksakandicopydimanakursorberada. 6. SelanjutnyatekanCtrl+KHuntukmenghilangkantandablok. MENGHAPUSBLOK 1. Blokteksyangakandihapus. 2. TekanCtrl+KY. 3. Makaseleuruhteksyangdiblokterhapus.

ModulPraktikumTurboPascal

BABII OPERASIINPUTDANOUTPUT 2.1.Tujuan a. MahasiswamengertitentangTipeData,pendeklarasianvariabel,danoperasi aritmatikasertastatementinputdanoutputpadaTurboPascal7.0 b. MahasiswadapatmembuatprogramperhitungansederhanamenggunakanTurbo Pascal7.0 2.2.Materi a. TipeData b. Identifier/Pengenal c. OperasiAritmatika d. OperasiInputdanOutput 2.3.Teori a. TipeData Dalamturbopascaltipedatadibagimenjadibeberapatipeyaitu: 1. TipeBilanganBulat Padatipebilanganbulatiniada5(lima)macamtipebawaan(defined) yangberkaitandenganbilanganbulatyaitu:shortint,integer,longint,byte dan word.Adapununtukrangedanmemorysizedarimasingmasingtipeadalah sebagaiberikut:

Untuk range bilangan heksadesimal dimulai dari $00000000 $FFFFFFFF. Sedangkanuntukpenulisannyaharusdiawalidengantanda$. 2. TipeBilanganReal(BilanganPecahan) Tiperealadalahtipebilanganpecahan.Padatipereal inidapatdibedakan menjadi 5 (lima) macam tipe juga yaitu : real, single, double, extended, dan comp. Adapun untuk penjelasan masing masing tipe dapat dilihat pada tabel berikutini:

Untukkonstantabilanganpecahaninidapatditulisdenganmenggunakan tandaexponentialEataue.formatpenulisannyaadalahsebagaiberikut: d.ddddddddddEdddd dimana:dmenyatakandigit.Contoh: 1.6E5 1.6E05 1.6E+5 1.6e+05 Keempatnilaidiatasmenyatakannilaiyangsamayaitubilangan: 1.6x104

ModulPraktikumTurboPascal

3. TipeDataChar Tipecharinimerupakantipedatayanghanayterdiridarisebuahkarakter (Huruf).KarakterinidapatberupasembarangkarakterASCII,danuntuk menyatakan tipedatainiharusdiawalidandiakhiridengantandapetik tunggal/apostrof().Contoh: A MenyatakankarakterA 1 Menyatakankarakterangka1 > Menyatakankaraktersimbol> Menyatakankarakterapostrof Beberapa karakter ASCII ada yang tidak bisa dinyatakan dengan tanda petik tunggal. Karakter yang demikian tersebut yaitu karakter yang memiliki kode ASCII 0 31, atau biasa sebagai karakter kontrol. Untuk penulisannya menggunakannotasi:^<karakter>.Contoh: ^G Bell,digunakanuntukmembunyikanspeakerkomputer ^[ KarakterEscape ^L Karakterformfeed Karakter ASCII ini juga bisa ditulis dengan notasi #<nilai_ascii>. Dengan <nilai_ascii>dapatberupanilaidesimalatauheksadesimal. 4. TipeDataString Tipe data string ini dapat berupa nol atau sejumlah karakter. Suatu konstanta stringditulisdengandiapitolehtandapetiktunggal( ). Contoh: Apabiladidalamsuatukonstantastringmengandungtandapetiktunggal maka penulisannya dapat dilakukan dengan menambah satu tanda petik tunggallagi.Contoh: jumat Hasil:Jumat `Hasil: ` (sebuahkarakterpetiktunggal) untuk string yang mengandung karakter ASCII dengan kode 0 31 maka penulisannyamenjadisebagaiberikut: #7Awas! StringdengandiawaliolehkarakterASCII#7 Baris9#10 Baris10 StringyangmengapitkarakterASCII#10

ModulPraktikumTurboPascal

b.Identifier/Pengenal Identifier/pengenalbanyakbermafaatdalamprogram,diantaranyauntuk memberikannamapadakonstanta,variabel,procedure,function,unitdan program. Aturanaturanpenamaanidentifieradalahsebagaiberikut: 1.Pengenal/identifierharusdiawalidenganhuruf 2.Tidakmengandungspasi 3.Karakterkeduadanseterusnyadapatberupahuruf,angkaatau garisbawah (Underscore) 4. Panjangidentifieryangdinyatakanberartihanya63karakter pertama. 5.Tidakmembedakanhurufkapitalatauhurufkecil Contohpemberianidentifieryangbenaradalah: HASIL Hasil Matrix1 Kode_Barang

IdentikdenganHASIL

Contohpemberianidentifieryangsalah: 3Dimensi JumlahBarang MatrikB Karakterpertamaberupaangka MengandungSpasi MengandungSimbolKhusus

Dalam pemberian identifier tidak boleh memakai Reserved Word (Kata Tercadang) atau nama Defined Identifier (Pengenal Terdefinisi) atau simbol khususdariTurboPascal. c.OperasiAritmatika Dalamoperasiaritmatika,operatoraritmatikterbagimenjadi2(dua) yaitu operator binary dan unary. Operator binary adalah jika operator tersebut melibatkan2(dua)buahoperand.Contoh: A+B penjumlahanAdenganB Sedangkan operator unary adalah jika operator tersebut hanya melibatkan 1 (satu)buahoperandsaja.Contoh: A nilainegatifdariA Adapununtukdaftaroperator,jenisopersidansifatnyatercantumpada tabeldibawahini:

ModulPraktikumTurboPascal

Contohungkapanaritmatik: 2+3=5 7/2=3.5 7div2=3 7mod2=1 Dalam operasi aritmatik dikenal adanya prioritas operator. Adapun prioritas operatoradalahsebagaiberikut: Operator unary memilikipriorotastertinggi Operator*,/,divdanmodmemilikiprioritasmenengah Operator+danmemilikiprioritasterendah Jika dalam suatu operasi terdapat prioritas yang sama, maka perhitungan dimulaidarikirikekanan.Contoh: 7*105mod3*4+9 705mod3*4+9 702*4+9 708+9 62+9 71 Untukmemberimemberikanprioritasyanglebihtinggiterhadapprioritas yang lebihrendah,makadapatkitatambahkantandakurung.Contoh: (7*(105)mod3*4+9 (7*5mod3)*4+9 (35mod3)*4+9 2*4+9 8+9 17 d.StatementInputdanOutput Pernyataan Input output dalam Pascal menggunakan prosedur standard yaitu Write, Writeln, Read, Readln. Untuk operasi input (masukan) dapat digunakan Read atau Readln. Sedangkan untuk operasi output dapat digunakan Write atau Writeln. Bentuk pernyataan untuk prosedur standard Read dan Readln adalah: READ(variabel_1[,variabel_2,][,varabel_n]); READLN(varabel_1[,variabel_2,][,variabel_n]); Varabel_i dalam pernyataan diatas adalah variable yang digunakan untuk menyimpandatayangdimasukkanmelalui keyboard. Bentukpernyataanuntukprosedurstandar Write dan Writeln adalah: WRITE(nilai_1[,nilai_2,][,nilai_n]); WRITELN(nilai_1[,nilai_2,][,nilai_n]); Nilai_i pada pernyataan diatas bisa berupa nilai dari suatu variabel, suatu konstanta, suatu fungsi atau hasil dari suatu ungkapan yang melibatkan operatordanoperand. 2.4.Percobaan a.PercobaanI Programsederhanainiakanmenampilkanhasildarisuatuperhitungantanpa memintamasukandari keyboard.

ModulPraktikumTurboPascal

ProgramPercobaan_I; { } { Programuntukmenampilkanhasildarisuatuungkapan} { ) Var A,B,C:Integer; Begin A:=10;B:=2;C:=5; Write(A*B/C); End. b.PercobaanII Pada Percobaan II ini akan diperlihatkan efek perbedaan dari write dan writeln. ProgramPercobaan_II; { } { Programini akanmenampilkanefekdariwritedanwriteln} { } Begin Write(Hello); Write(TheWorld); Readln; Writeln(Hello); Writeln(TheWorld); End. c.PercobaanIII Program pada Percobaan III ini akan menampilkan data yang disimpan pada suatuvariabeldengansebelumnyamemintamasukandari keyboard. ProgramPercobaan_III { } { Program iniakanmemintamasukandarikeyboard} { selanjutnyaakanditampilkanpadalayarmonitoranda} { } Var A,B,C:Integer; Begin Write(MasukkanNilaiA:);readln(A); Write(MasukkanNilaiB:);readln(B); Write(MasukkanNilaiC:);readln(C); Readln; Writeln(Nilaiyangandamasukkanadalah:); Writeln(A=,A);Writeln(B=,B);Writeln(C=,C); Readln; End. 2.5.Latihan Buatlahsuatu programyangbiasmenghitungluasdankeliling persegipanjang denganukuranpanjangdanlebarnyatergantungpadamasukandari keyboard. Rumus: 8

ModulPraktikumTurboPascal

Luas=Panjang*Lebar Keliling=2*(Panjang+Lebar)

ModulPraktikumTurboPascal

BABIII PROSESPERCABANGANDANLOOPING 3.1.Tujuan a. MahasiswamengertitentangTipeDataBooleandanprosesseleksi (percabangan)sertaprosespengulangan(looping) b. Mahasiswadapatmembuatprogramseleksidarisuatusyarat tertentudenganmenggunakanTurboPascal 7.0 c. Mahasiswadapatmembuatprogrampengulanganprosesdengan menggunakanTurboPascal7.0 3.2.Materi a.TipeDataBoolean b.StatementIF THEN ELSE c.StatementCASE OF d.StatementWHILE DO e.StatementREPEAT UNTIL f.StatementFOR TO danFOR DOWNTO 3.3.Teori a.TipeDataBoolean Tipe Data Boolean ini hanya memiliki 2 (dua) nilai saja, yaitu true dan false.Dalampengoperasiantipedataini,bisadigunakanoperatorand,xor,or atau not. Nilai dari variabel yang menggunakan tipe data ini sangat penting untuk pengambilan suatu keputusan, terutama jika dalam program yang membutuhkan proses seleksi. Pada tabel berikut ini akan dijelaskan tentang berbagai nilai operanddarioperator operatorboolean.

ModulPraktikumTurboPascal

10

Sedangkanprioritasuntukoperatorpenghubungadalahsebagaiberikut: PrioritasTertinggi NOT AND OR PrioritasTerendah = < XOR > <= >= <>

b.Statement IF THEN ELSE Statement ini merupakan statement bersyarat yang akan mengeksekusi pernyataan dibawahnya apabila syarat logika yang diberikan memenuhi. Bentuk statementiniadalah: IF<syaratlogika>THEN <pernyataan> atau IF<syaratlogika>THEN <pernyataan1> ELSE <pernyataan2> c.Statement CASE OF Statement ini digunakan untuk melakukan proses seleksi pada suatu kondisi yang memiliki kondisi lebih dari satu. Bentuk statement dari CASE OF ini adalah: CASE<syaratpemilih>OF <kondisi1>:<pernyataan1> <kondisi2>:<pernyataan2> <kondisin>:<pernyataann> ELSE <pernyataan>; END; Pada statement ini, <pernyataan i> akan dieksekusi hanya jika nilai dari <syarat pemilih> tercantum pada <kondisi i> . Namun jika nilai tersebut tidak adamaka pernyataanpernyataanyangmengikuti ELSE yangakandieksekusi.

ModulPraktikumTurboPascal

11

d.Statement WHILE DO Statement ini digunakan untuk melakukan proses perulangan sampai pada batasyangtelahditentukan.Bentukpernyataannyaadalah: e.Statement REPEAT UNTIL REPEAT memiliki kegunaan yang hamper sama dengan WHILE, namun perbedaannya adalah kondisi pengulangan pada REPEAT akan diperiksa setelah pernyataan yang berada dalam Blok REPEATUNTIL dieksekusi. Sehingga pernyataan yang berada dalam REPEAT akan dieksekusi paling sedikit satu kali. Bentukpernyataandari REPEAT adalah: REPEAT <pernyataan>; UNTIL <syarat>; Pengeksekusian terhadappernyataan inidilakukan terus selama <syarat> masih bernilai False f.Statement FOR TO danFOR DOWNTO Statement FOR ini digunakan untuk melakukan pengulangan eksekusi terhadap suatu pernyataan. Pengendalian pengulangan ini dilakukan oleh <variabel>denganjumlahpengulanganditentukanoleh<nilaiawal>dan<nilai akhir>. Bentukpernyataandari FOR TO maupun FOR DOWNTO adalah: <pernyataan> <pernyataan> Pernyataan FOR TO digunakan untuk pengulangan secara menaik (ascending).SedangkanFORDOWNTOdigunakanuntukpengulangansecara menurun (descending). 3.4.Percobaan a.PercobaanI Pada Percobaan I ini program akan melakukan seleksi terhadap suatu pilihandenganmenggunakanstatement IF THEN ELSE

ModulPraktikumTurboPascal

12

ProgramPercobaan_2_1; {} {PenggunaanIFTHENELSE} {} UsesCrt; Var Kode:Byte; Begin Repeat ClrScr; Write('MasukkanKodeHari[1..7]:'); Readln(Kode); Until(Kodein[1..7]); Writeln; ifKode=1Then Writeln('HariSenin') else ifKode=2Then Writeln('HariSelasa') else ifKode=3Then Writeln('HariRabu') else ifKode=4Then Writeln('HariKamis') else ifKode=5Then Writeln('HariJum''at') else ifKode=6Then Writeln('HariSabtu') else ifKode=7Then Writeln('HariMinggu'); Readln; End.

ModulPraktikumTurboPascal

13

b.PercobaanII PadaPercobaanIIiniprogramakanmelakukanproseslooping (perulangan). untukmenggambarbentuksegitigadenganmenggunakankarakter *. ProgramPercobaan_II; {} {ProgamContohProsesLooping} {} UsesCrt; Var i,j, Bar:Byte; Begin ClrScr; Write('JumlahBaris:');Readln(Bar); ClrScr; i:=0; Repeat Forj:=1ToiDo Write('*':3); Writeln; inc(i); Untili>Bar; Fori:=Bar 1Downto0Do Begin J:=1; Whilej<=iDo Begin Write('*':3); j:=j+1; end; writeln; end; Readln; End.

ModulPraktikumTurboPascal

14

c.PercobaanIII PadapercobaanIIIiniprogramakanmenghitungjumlahhurufkapitalyangada padakatayangdiinputkan. ProgramPercobaan_III; {} {ContohProgramSeleksidalamLooping} {} UsesCrt; Var Kata:String[40]; Kap,I:Byte; Begin Repeat ClrScr; Writeln(MasukkanKata:); Readln(Kata); UntilLength(Kata)<=40; ForI:=1toLength(Kata)Do Begin IfKata[I]in[A..Z]Then Kap:=Kap+1; End; Writeln(JumlahHurufBesar:,Kap); Readln; End. 3.5.Latihan Buatlah program untuk memisahkan Huruf Vokal dan Konsonan serta Angka dan karakterlainnyadenganmemintamasukandari keyboard.GunakanStatement Case Of untukprosesseleksinya. Contoh: Input:TurboPascalVersi7.0 Output: Vokal:u,o,a,a,e,i Konsonan:T,r,b,P,s,c,l,V,r,s Angka:7,0 KarakterLainnya:Spasi (.) Catatan:KodeASCIIuntukSpasiadalah32

ModulPraktikumTurboPascal

15

BABIV ARRAY 4.1.Tujuan a. MahasiswamengertitentangArray1DimensimaupunArray2 Dimensi b. MahasiswadapatmembuatprogramdenganmemanfaatkanArray 4.2.Materi a.Array1Dimensi b.Array2Dimensi 4.3.Teori Array adalah sekumpulan tipe data terstruktur yang berisi sekumpulan komponen/elemendengantipeyangsama. a.Array1Dimensi Array berdimensi 1 merupakan array yang memiliki satu indeks saja dengan tipe data yang sama.Bentuk pernyataan untuk mendeklarasikan array berdimensi1 adalah: Variabel_array:array[indeks_array]oftipe_data Tipedatamerupakantipedatayangdikenaldalampascalyangtelahdijelaskan padaBAB1.contohpendklarasianarray1dimensiadalahsebagaiiberikut: Var Daftar:array[0..9]ofinteger; Sedangkanuntukmengisikannilaipadaarrayadalah:Daftar[6]:=32;Dalam hal ini nilai 32 akan diisikan pada array Daftar pada elemen yang mempunyai indeks array 6 atau elemen ke 7 dari array (elemen pertama adalah indeks 0). Adapun untukmenampilkanelementersebutadalah: writeln(Daftar[6]); b.Array2Dimensi Jika pada array 1 dimensi hanya memiliki 1 indeks array, maka pada array 2 dimensi ini dimungkinkan array memiliki 2 buah indeks array. Antara indeks array yang satu dengan yang lainnya dipisahkan oleh tanda koma. Bentuk dari pernyataanpendeklarasiannyaadalah: Contohpendeklarasianarray2dimensiiniadalahsebagaiberikut: Var Matrik:array[1..5,1..4)ofByte; Untuk memberikan nilai adaarray2 dimensiini adalah:Matrik[2,1]:=56; Pada contohtersebutnilai56diisikanpadabariske2dankolomke1padaelemen array. Sedangkan untuk menampilkan nilai tersebut adalah : writeln(Matrik[2,1]); 4.4.Percobaan a.PercobaanI Padapercobaan Iiniakandisajikancontohprogrampengurutandata secaramenaik (ascending) denganmemanfaatkanarray1dimensi. ProgramPercobaan_3_1; {} 16

ModulPraktikumTurboPascal

{PengurutanDataDenganMenggunakanArray} {} USESCRT,DOS; VAR DATA:ARRAY[1..10]OFINTEGER; TMP,N,I,J:INTEGER; BEGIN CLRSCR; N:=0; REPEAT CLRSCR; WRITE('MASUKKANJUMLAHDATA(MAX10): '); READLN(N); UNTIL(N<=10)AND(N<>0); CLRSCR; FORI:=1TONDO BEGIN WRITE('DATAKE ',I,':'); READLN(DATA[I]); END; CLRSCR; {THISPARTTOWRITETHEORIGINALDATA} GOTOXY(5,1); WRITELN('YOURDATAIS:'); FORJ:=1TONDO BEGIN GOTOXY(4+J,2); WRITELN(DATA[J]); END; {THISPARTTOSORTINGTHEDATA} FORI:=1TONDO BEGIN FORJ:=I+1TONDO BEGIN IFDATA[I]>DATA[J]THEN BEGIN TMP:=DATA[J]; DATA[J]:=DATA[I]; DATA[I]:=TMP; END; END; END; {THISPARTTOWRITEDATAAFTERSORTING} GOTOXY(5,3); WRITELN('DATAAFTERSORTING:'); FORI:=1TONDO BEGIN GOTOXY(4+I,4); WRITELN(DATA[I]); END; 17

ModulPraktikumTurboPascal

READLN; END. b.PercobaanII Padapercobaan IIiniprogramakanmembaca dan menampilakansebuaharray berdimensi2.Programinibisadimanfaatkanuntukoperasimatrik. ProgramPercobaan_3_2; {} {ProgramMembuatMatrikdenganarray2Dimensi} {} usescrt; const MaxData=5; var matrik:array[1..MaxData,1..MaxData]ofinteger; I,J,X,Y:integer; Begin {MembacaJumlahBarisDanKolomuntukelemenmatrik} clrscr; repeat write(MasukkanJumlahBaris:);Readln(X); untilX<=MaxData; repeat write(MasukkanJumlahKolom:);Readln(Y); untilY<=MaxData; {MembacaDataUntukTiapElemenMatirk} forI:=1toXdo begin forJ:=1toY do begin write(Elemen(,I,,,J,)); readln(matrik[I,J]); end; writeln; end; {MenampilkanNilaiDariMatrik} writeln(MATRIKS:); writeln; forI:=1toXdo begin forJ:=1toYdo write(matrik[I,J],8); writeln; end; readln; End. 4.5.Latihan Buatlah program Transpose Matriks. Program ini meminta masukan berupa jumlah baris dan jumlah kolom. Tetapkan jumlah baris maupun jumlah kolom maximal10. ContohdariTransposeMatriksiniadalah:

ModulPraktikumTurboPascal

18

ModulPraktikumTurboPascal

19

BABV HIMPUNAN,RECORDDANFILE 5.1.Tujuan a. MahasiswamengertitentangTipeHimpunan,TipeRecorddanOperasi File. b. MahasiswadapatmembuatprogramdenganmemanfaatkanTipe HimpunandanTipeRecordsertapenyimpanandatadengan menggunakanFile. 5.2.Materi a. TipeHimpunan b. TipeRecord c. File : 1.FileAcak(RandomFile)/FileBertipe 2.FileTeks 3.FileTakBertipe 5.3.Teori a.TipeHimpunan Himpunan (set) adalah tipe data terstruktur yang berisi sekumpulan dari object dengan tipe yang sama, dengan masing masing object (yang biasanya disebut sebagai anggota atau elemen himpunan) tidak bisa diakses secara langsung. Contoh: 1.Himpunanbilangandari1sampai100 [1..100] 2.HimpunanhurufbesardariCsampaiX [C..X] 3.Himpunanhurufvokal [A,I,U,E,O] Pendefinisianhimpunaniniadalah: Type Digit=1..10; Hari=(MINGGU,SENIN,SELASA, RABU,KAMIS,JUMAT,SABTU); Angka=SetOfDigit; Days=SetOfHari; Jadipendefinisianhimpunansecaraumumadalah: Variabel_Himpunan=SETOFtipe_elemen_himpunan;

ModulPraktikumTurboPascal

20

Seperti halnya variabel lainnya, variabel bertipe himpunan ini bisa dioperasikan secaramatematis.Adapunoperasidarihimpunaninimeliputipenambahan, pengurangan,perkalian,maupunperbandingan. 1.Penambahan Padaoperasipenambahanatauseringdisebutjugasebagaioperasiunion, akan menghasilkan gabungan dari 2 elemen himpunan yang ditambahkan. Contoh: [1,2,3]+[4,5,6,7] [1,2,3,4,5,6,7] 2.Pengurangan Pada operasi pengurangan ini akan menghasilkan elemen elemen himpunan yang ada pada elemen himpunan pertama tetapi tidak ada pada elemen himpunankedua.Contoh: [a,b,c ] [a,d,e] [b,c] 3. Perkalian Perkalianhimpunanataujugabiasadisebutsebagaiinterseksidapat menghasilkan himpunan yang berupa elemn yang ada pada himpunan pertamadanjugaadapadaelemenyangkedua.Contoh: [1,2,4,7]*[1,7,3,8] [1,7] 4.Perbandingan Pada operasi perbandingan ini digunakan untuk membandingkan 2 buah himpunan, operator yang dipakai adalah =, >, <, <=, >= dan IN. operasi perbandingan himpunan ini akan menghasilkan nilai boolean. Operasi perbandinganinimenghasilkannilaitruebilajumlahelemen antarakeduabuah himpunansama,danseluruhelemenpadahimpunanpertamaadapadahimpunan kedua.Contoh: [1,2,3]<>[2,3,4] true b.TipeRecord Recordmerupakantipeterstrukturyangterdiridaribeberapa komponen/elemen, dengan masing masing elemen boleh memiliki tipe yang berlainan. Elemen record biasa disebut dengan field dan setiap field memiliki namapengenaltersendiri.Adapunbentukpendefinisianrecordadalah:

ModulPraktikumTurboPascal

21

Record_Name=RECORD <Field_1>:<Tipe_Field_1> <Field_2>:<Tipe_Field_2> <Field_N>:<Tipe_Field_N> End; Contohpendefinisiandarirecordadalahsebagaiberikut: Type RecordData=RECORD NIM:String[10]; Nama:String[20]; Nilai:Real; End; Var DataMHS:array[1..100]ofRecordData; Elemendarirecordinidapatdiaksesdenganmenggunakanbentuk: Nama_Variabel_Record.Nama_Field; c.File Digunakan untuk menyimpan data pada media penimpanan data (Harddisk ataudisket). 1.FileAcak/FileBertipe File ini bisa diakses secara acak, sehingga data dapat diakses secara langsung padaposisiyangdiinginkandantidakharusdimulaidariawalfile. Pendefinisiandarifileacakiniadalah: FileOf<TipeKomponen> <tipe_komponen>menunjukkantipe komponendarifile.Misalnya: var Karakter:FILEOFChar; Nilai:FILEOFReal; Pada pendefinisian diatas semua komponen file bertipe skalar. Komponen tersebutbisaberuparecordyangmengandungbeberapafield.Contoh: TData=RECORD Nim :String[10]; Nama:String[20]; Nilai:Real; End; Var ata:FILEOFTData; 2.FileTeks Berbedadenganfileacak,fileteksinitidak memberikan keleluasaan pengaksesankomponenkomponenfilesecaraacak.Padafileini semua 22

ModulPraktikumTurboPascal

komponenharus dibacamulaidaridepanataudibacasecara berurut (sequential).Elemendasarpembentukfileteksiniadalahkarakter.Dalamsebuah file teks komponen file merupakan sederetan karakter yang membentuk sebuah baris danmasing masingbarisdiakhiridengansebuahtandaakhirbaris(eoln/end of line). Tanda eoln ini terdiri dari karakter CR dan LF secara berderet. Pendefinisianuntukfileteksiniadalah: var <variabel_file>:TEXT; 3.FileTakBertipe Pada file tak bertipe ini dimungkinkan untuk membaca sembarang file yang akan dibuka. Keistimewaan dari file ini adalah dapat melakukan pembacaan maupunpenulisansecaraserentakdalamsekaliwaktusaja.Pendefinisianfiletak bertipeiniadalah: <variabel_file>:FILE; 5.4.Percobaan a.PercobaanI PadaPercobaan4.1iniakandisajikantentangpemanfaatan TipeHimpunan untukmencarisemuakarakteryangadapadakalimatke 1dantidakadapada kalimatke2kecualikarakterspasi. programpercobaan_4_1; usescrt; constspasi =#32; type himpkarakter=setofchar; var i,j:integer; karakter:char; kalimat:array[1..2]ofstring; himpunan:array[1..2]ofhimpkarakter; himpselisih:himpkarakter; begin clrscr; { inputkalimat } writeln('kalimatpertama:');readln(kalimat[1]); writeln('kalimatkedua:');readln(kalimat[2]); { proseselemen } fori:=1to2do begin himpunan[i]:=[];{definisikanhimpunankosong} forj:=1tolength(kalimat[i])do ifnot(kalimat[i][j]inhimpunan[i])then himpunan[i]:=himpunan[i]+[kalimat[i][j]]; end; himpselisih:=himpunan[1] himpunan[2];

ModulPraktikumTurboPascal

23

{ tampilkanelemenhimpunanhasilselisih } writeln; writeln('daftarkarakteryangadapadakalimatpertama'); writeln('dantidakadapadakalimatkedua:'); writeln; karakter:=succ(spasi);{untukmemperolehkaraktersetelahspasi} while(himpselisih<>[])do begin ifkarakterinhimpselisihthen begin write(karakter:2); himpselisih :=himpselisih [karakter]; end; karakter:=succ(karakter);{untukmemperolehkarakterberikutnya} end; readln; end.

ModulPraktikumTurboPascal

24

b.PercobaanII PadaPercobaanIIini program akanmerekamdatapada record,kemudianakan menampilkannyakembali. ProgramPercobaan_4_2; UsesCRT; Const JNilai=5; MaxSiswa=20; Type TSiswa=RECORD NIM:String[10]; Nama:String[20]; Nilai:Array[1..JNilai] ofReal; Rata:Real; End; NSiswa=Array[1..MaxSiswa]ofTSiswa; Var Jumlah:1..MaxSiswa; i,j:Integer; TotalNilai:Real; Siswa:NSiswa; Temporary:TSiswa; Begin clrscr; {bagianmemasukkandata} repeat write('MasukkanJumlahData(Max20):');Readln(Jumlah); untilJumlah<=MaxSiswa; writeln; fori:=1toJumlahdo begin write('N.I.M:'); readln(Siswa[i].Nim); write('Nama:'); readln(Siswa[i].Nama); writeln('Nilai:'); forj:=1toJNilaido begin write('Nilai',j,':'); readln(Siswa[i].Nilai[j]); end; writeln; end; {bagianmenghitungnilairata rata} fori:=1toMaxSiswado begin TotalNilai:=0; forj:=1toJNilaido TotalNilai:=TotalNilai+Siswa[i].Nilai[j]; Siswa[i].Rata:=TotalNilai/JNilai; end; 25

ModulPraktikumTurboPascal

{bagianmengurutkandataberdasarkannilairata ratatertinggi} fori:=1toJumlah 1do begin forj:=i+1toJumlahdo ifSiswa[i].Rata<Siswa[j].Ratathen begin {menukarkanisirecord} Temporary:=Siswa[i]; Siswa[i]:=Siswa[j]; Siswa[j]:=Temporary; end; end; {Tampilkandatayangsudahdiurut} writeln; {012345678901234567890123456789012345678901234567890123} writeln('======================================================'); writeln('|N.I.M|NAMA|Rata Rata|'); writeln('======================================================'); fori:=1toJumlahdo writeln('|',Siswa[i].Nim:10,'|',Siswa[i].Nama:20,'|', Siswa[i].Rata:20:1,'|'); writeln('======================================================'); readln; end.

ModulPraktikumTurboPascal

26

c.PercobaanIII ProgrampadaPercobaanIIIinisebagiandatayangadapadaPercobaanIIyaitu NIM,Nama,NilaiRataRataakandisimpanpadaFileAcakdengannama Nilai.Dat. 1.Programuntukmembuatfilebarudanmenyimpandatanyake dalamfiletersebut ProgramPercobaan_4_3_1; usescrt; type TSiswa=Record NIM:String[10]; Nama:String[20]; Nilai:Real; end; var FileSiswa:FILEOFTSiswa; Siswa:TSiswa; Kar:char; i :integer; begin clrscr; {tentukannamadandirectorydarifile} assign(FileSiswa,'D:\Nilai.dat'); {buatfilebarudenganisikosong} rewrite(FileSiswa); i:=0; {bacamasukandariuser} repeat withSiswado begin write('NIM:');readln(nim); write('Nama:');readln(nama); write('Nilai:');readln(nilai); end; write('TambahDataLagi(Y/T)?');readln(kar); ifkarin['Y','y']then begin write(FileSiswa,Siswa);{tuliskandatapadafile} inc(i); end; untilKarin['T','t']; close(FileSiswa);{menutupfile} end. 2.Programuntukmembacadatadidalamfileyangtelahdibuat melaluiprogramke1. ProgramPercobaan_4_3_2; usescrt; type TSiswa=Record NIM:String[10]; Nama:String[20]; 27

ModulPraktikumTurboPascal

Nilai:Real; end; var FileSiswa:FILEOFTSiswa; Siswa:TSiswa; Kar:char; i:integer; begin clrscr; {tentukannamadandirectorydarifile} assign(FileSiswa,'D:\Nilai.dat'); {bukafiletanpamenghapus} reset(FileSiswa); i:=0; {bacamasukandariuser} whilenoteof(FileSiswa)do begin read(FileSiswa,Siswa); write('NIM:');writeln(Siswa.nim); write('Nama:');writeln(Siswa.nama); write('Nilai:');writeln(Siswa.nilai:0:1); write('============================='); writeln('============================='); end; close(FileSiswa);{menutupfile} readln; end.

ModulPraktikumTurboPascal

28

3.Programuntukmenambahkandatadiakhirfile. ProgramPercobaan_4_3_3; usescrt; type TSiswa=Record NIM:String[10]; Nama:String[20]; Nilai :Real; end; var FileSiswa:FILEOFTSiswa; Siswa:TSiswa; Kar:char; i:integer; begin clrscr; {tentukannamadandirectorydarifile} assign(FileSiswa,'D:\Nilai.dat'); {bukafiletanpamenghapus} reset(FileSiswa); seek(FileSiswa,filesize(filesiswa));{menempatkanpointerfilepadaposisi terakhir} i:=0; {bacamasukandariuser} repeat withSiswado begin write('NIM:');readln(nim); write('Nama:');readln(nama); write('Nilai:');readln(nilai); end; write('TambahDataLagi(Y/T)?');readln(kar); ifkarin['Y','y']then begin write(FileSiswa,Siswa);{tuliskandatapadafile} inc(i); end; untilKarin['T','t']; close(FileSiswa);{menutupfile} end. 5.5.Latihan Buatlah program yang bias menyimpan data karyawan. Data karyawan tersebut berisi NIP, Nama, Golongan, Gaji/Hari, Gaji Total. Gaji/Hari ditentukan melalui golongankaryawantersebut,ketentuannyaadalah: GolonganIRp.3.000/hari GolonganIIRp.4.500/hari GolonganIIIRp.6.000/hari GolongnIVRp.7.500/hari

ModulPraktikumTurboPascal

29

Programtersebutbisadigunakanuntukmenambahdata,danmelihatdata.

ModulPraktikumTurboPascal

30

BABVI PROSEDURDANFUNGSI 6.1.Tujuan a.MahasiswamengertitentangModularPrograming b.MahasiswamengertitentangperbedaanProsedurdanFungsi c.Mahasiswabisamembuatprogramyanglebihterstruktur 6.2.Materi a.Parameter,VariabelGlobaldanVariabelLokal b.Prosedur c.Fungsi d.Rekursif 6.3.Teori a.Parameter,VariabelGlobaldanVariabelLokal Parameteradalahsuatumekanismeuntukmelewatkannilaiatauvariabel ke dalamsubprogram.Denganparameterini,pemberiannilaiawalataunama variabelyangberbedaterhadapsubprogramdapatdilakukan.Parameterini dibedakan menjadi 2 yaitu Parameter Formal dan Parameter Aktual. Parameter Formal adalah parameter yang terdapat dalam kepala supprogram Parameter Aktual adalah parameter yang diberikan apabila prosedur atau fungsi dipanggil.ParameterAktualinidibagimenjadi2 yaituParameterNilai danParameterVariabel.ParameterNilai merupakanparameteryangnilainya tidak tidak akan berubah pada saat subprogram selesai diproses meskipun ada pernyataan dalam subprogram yang mengubahnya. Parameter Variabel adalah parameter yang nilainya bisa berubah ketika subprogram selesai diproses. VariabelGlobalsuatuvariabeldikatakansebagaivariabelglobal apabila variabel tersebut tidak dideklarasikan didalam subprogram itu sendiri, namun dideklarasikan pada subprogram yang memiliki level lebih tinggi atau pada program utama, dan pendeklarasiannya dilakukan sebelum subprogram. Variabel Lokal suatu variabel dikatakan lokal apabila pendeklarasiannya dilakukan didalam subprogram itu sendiri. Variabel ini tidakbisadigunakan diluar blok subprogram yang mendeklarasikannya. Bentuk pendeklarasian proseduradalah:

ModulPraktikumTurboPascal

31

PROCEDURE<nama_prosedure>(<daftar_parameter_formal>); <bagian_deklarasi> BEGIN <bagian_pernyataan> END; b.ProsedurdanFungsi Prosedur merupakan kumpulan dari statemen statemen yang dalam satu subprogramdandapatdipanggilberulangkalibaikolehsubprogramlainmaupun olehprogramutama.Prosedurberdirisendirisebagaisebuahpernyataan.Fungsi hampir sama dengan prosedur namun fungsi ini tidak dapat berdiri sendiri sebagai sebuah pernyataan. Fungsi digunakan sebagai elemen dalam pernyataanpenugasanatausuatuungkapan.Fungsiinijugadigunakanuntuk memperolehsebuah nilai,karenafungsibisamemberikansuatunilaibalik. Bentukpendeklarasianfungsiadalah: FUNCTION<nama_fungsi>(<daftar_parameter_formal>):<tipe_hasil>; <bagian_deklarasi> BEGIN <bagian_pernyataan> END; c.Rekursif Rekursif merupakan suatu subprogram yang bisa memanggil dirinya sendiri. Suatu subprogram selain bisa dipanggil oleh subprogram lain bisa juga dipanggilolehsubprogramitusendiri.Cararekursifinibanyakdipakaipada persoalanyangdapatdipecahkansecara induktif. 6.4.Percobaan a.PercobaanI Programberikutiniakanmelakukanpenukarannilaivariabelmelaluiprosedur. ProgramPercobaan_5_1; Usescrt; Var X,Y:real; ProcedureSwap(VarX,Y:real); Var Temp:real; Begin Temp:=X; X :=y; Y:=Temp; End; Begin{ProgramUtama} Clrscr; X:=12; Y:=20; Writeln(NilaiVariabelSebelumProsedurSwapDipanggil:); Writeln(X=,X:5:2,Y=,Y:5:2);

ModulPraktikumTurboPascal

32

Swap(X,Y); Writeln(NilaiVariabelSetelahProsedurSwapDipanggil:); Writeln(X=,X:5:2,Y=,Y:5:2) Readln; End. b.PercobaanII Padapercobaaniniprogramakanmelakukanpenjumlahanpada2variabel denganmemanfaatkanfungsi. ProgramPercobaan_4_2; Usescrt; Var A,B:integer; FunctionAdd(A,B:Integer):Integer; Begin Add:=a+b; End; Begin Clrscr; A:=5; B:=10; Writeln(A+B=,Add(A,B):5:2); Writeln(15+20=,Add(15,20):5:2); Readln; End.

ModulPraktikumTurboPascal

33

c.PercobaanIII PadaPercobaanIIIiniakanditampilkanfungsirekursifuntukmenghitungnilai darisuatuderetfibbonacci. ProgramPercobaan_4_3; Usescrt; Var I,Nilai:Integer; FunctionFibo(N:Integer):Integer; Begin If(N=1)or(N=2)then Fibo:=1; Else Fibo:=Fibo(N1)+Fibo(N2); End; Begin{PogramUtama} Clrscr; Write(MasukkanBatasDeret:); Readln(Nilai); ForI:=1toNilaido Writeln(I:3,Fibo(I):8); Readln; End. 6.5.Latihan Buatlah suatu fungsi yang dapat menghitung nilai faktorial dengan memanfaatkan fungsi rekursif. Kemudian manfaatkan fungsi tersebut untuk menghitungnilaisuatukombinasidenganrumus: !n C= ()! !mmn

ModulPraktikumTurboPascal

34

BABVII POINTER 7.1.Tujuan a.MahasiswamengertitentangVariabelDinamis b.Mahasiswabisamembuatprogramdenganmenggunakanvariabeldinamis c.Mahasiswamengertitentangdasardasarstrukturdata 7.2.Materi a.PendefinisiandanPembuatanVariabelDinamis(Pointer) b.MembacaDataVariabelDinamis(Pointer) c.MenghapusDatadariVariabelDinamis(Pointer) 7.3.Teori a.PendefinisiandanPembuatanVariabelDinamis(Pointer) Struktur data dinamis merupakan kumpulan dari elemen yang dinamakan sebagai simpul (node). Suatu node biasanya berupa suatu struktur record. Padastrukturdinamis,terdapatvariabelkhususyangberisialamatmemori darivariabeldinamis.VariabelkhususinidinamakansebagaiVariabelPointer. Untukmendefinisikanpointerinidapatdilakukansebagaiberikut: TYPE<pengenal_pointer>=^<tipe_pointer>; Contoh: TYPE PTRData=^RECData; RECData=RECORD; NoRec:Integer; Nama:String[10]; Next:PTRData; END; Var PTRHead,PTRNew:PTRData;

ModulPraktikumTurboPascal

35

Untuk membuat varibel dinamis, prosedur yang dipakai yaitu New. Prosedur ini memilikiparameteryangberupavariabelpointer.Contohpenggunaanprosedur Newini: NEW(<variabel_pointer>); SelainNewuntukmembuatvariabeldinamisinidiperlukansatukatatercadang yaituNIL.Contohpembuatanpointerbaruini: PTRHead:=NIL; NEW(PTRNew); PTRNew^.NoRec:=1; PTRNew^.Nama:=Vega; PTRNew^.Next:=PTRHead; PTRHead:=PTRNew; b.MembacaDataVariabelDinamis(Pointer) Sepertihalnyavariabelstatis,variabeldinamisinijugabisadibacadan ditampilkan. Cara membaca variabel dinamis inidengan menggeserpointer yang adasampaipointertersebutsamadenganNIL.Contoh: PTRTemp:=PTRHead; WhilePTRTemp<>NILdo WithPTRTemp^do Begin Writeln; Writeln(No.Record:,NoRec); Writeln(Nama:,Nama); PTRTemp:=Next; End; c.Menghapusdatadarivariabeldinamis Variabeldinamisinisebenarnyaakandisimpandalammemory.Jadipada variabelinibisadilakukanoperasipenghapusan.Baikseluruhdatamaupun sebagiandata.Contohpenghapusandatapadapointeradalah: Begin IfPTRHead<>NILthen Begin PTRHead:=PTRHead^.Next; Writeln( SimpulTelahTerhapus); End; End; 7.4.Percobaan Pada Percobaan VI ini akan ditampilkan program untuk operasi pointer. Operasi yang dilakukan adalah penambahan data, penghapusan data, dan menampilkandata. usescrt; typelinked=^list; list=record nim:string[10]; nama:string[20]; alamat:string[25]; 36

ModulPraktikumTurboPascal

next:linked; end; var awal,akhir:linked; p:char; functionnewlist:linked; var first:linked; begin new(first); withfirst^do begin write('nim:');readln(nim); write('nama:');readln(nama); write('alamat:');readln(alamat); next:=nil; end; newlist:=first; end; proceduretambah(jml:integer); var baru:linked; j:char; begin repeat clrscr; ifjml<>0then begin writeln('menambahdatabaru'); writeln(''); end; writeln; baru:=newlist; ifawal=nilthen akhir:=baru else baru^.next:=awal; awal:=baru; write('tambahdatalagi<y/n>?');readln(j); untilupcase(j)='n'; clrscr; end; proceduredelete; begin ifawal<>nilthen begin awal:=awal^.next; writeln('simpulpertamatelahdihapus'); end else writeln('linklistmasihkosong'); 37

ModulPraktikumTurboPascal

writeln; writeln('tekanenteruntukkembalikemenuutama'); repeatuntilreadkey=#13; clrscr; end; procedurebaca; var temp:linked; i,j,y:integer; begin i:=1; writeln('membacaisilinklist'); temp:=awal; iftemp=nilthen writeln('linklistmasihkosong') else begin gotoxy(1,2);writeln('no'); gotoxy(19,2);writeln('nim'); gotoxy(39,2);writeln('nama'); gotoxy(59,2);writeln('alamat'); forj:=1to79do begin gotoxy(j,3);write(''); end; y:=4; whiletemp<>nildo begin gotoxy(1,y);writeln(i); gotoxy(19,y);writeln(temp^.nim); gotoxy(39,y);writeln(temp^.nama); gotoxy(59,y);writeln(temp^.alamat); temp:=temp^.next; inc(y);inc(i); end; forj:=1to79do begin gotoxy(j,y);writeln(''); end; writeln; writeln('tekansembarangenteruntukkembalikemenuutama'); repeatuntilreadkey=#13; clrscr; end; end; { menuutama } begin awal:=nil;akhir:=nil; clrscr; repeat 38

ModulPraktikumTurboPascal

gotoxy(30,3);writeln('daftarpilihanmenu'); gotoxy(20,8);writeln('<1>menambahlist'); gotoxy(20,9);writeln('<2>membacalist'); gotoxy(20,10);writeln('<3>menghapuslist'); gotoxy(20,11);writeln('<4>keluar'); gotoxy(20,14);write('pilihan:');readln(p); casepof '1':begin clrscr; tambah(1); end; '2':begin clrscr; baca; end; '3':begin clrscr; delete; end; end; untilp='4'; end. 7.5.Latihan Lengkapilahpercobaandiatasdenganprocedure prosedursebagaiberikut: 1.TambahDataDitengah(Inserting) 2.TambahDataDiakhirPointer 3.MenghapusDataDitengahPointer 4.MenghapusDataDiakhirPointer

ModulPraktikumTurboPascal

39

Anda mungkin juga menyukai