Pertemuan 2 Operasi String
Objektif: 1.
Dapat mengerti dan menggunakan prosedur standar untuk operasi string
2.
Dapat mengerti dan menggunakan fungsi standar untuk opersi string
| Pertemuan 2
28
P2.1 Teori Pengerjaan suatu string hanya mempunyai sebuah operator, yaitu ‘ + ‘. Bila operator ini digunakan untuk penambahan nilai numeric, maka akan berfungsi menjumlahkan dua buah nilai elemen numeric, tetapi pada string operator ini digunakan untuk merangkai dua buah elemen string menjadi sebuah string. Panjang maksimum suatu string yang diijinkan oleh Pascal adalah 255 karakter. Contoh :
Const Jenis = ‘ Bahasa ’ ; Nama = ‘ Pascal ’ ; Var Sifat : string[10] ; Kalimat : string[80] ; Begin Sifat : = ‘ terstruktur ‘ ; Kalimat : = Jenis + ‘ ‘ + Nama + ‘ ‘ + ‘merupakan‘ + Jenis+ ’ ‘ + sifat; Writeln (kalimat) ; End.
Output program : Bahasa Pascal merupakan bahasa terstruktur
Dua buah string dikatakan sama bila nilai string yang pertama sama isi dan panjangnya dengan nilai string yang kedua. Blank dianggap nilai yang signifikan.
| Operasi String
29
Prosedure Standar Untuk Operasi String 1.
DELETE
Digunakan untuk membuang sejumlah karakter tertentu (jumlah karakter yang dibuang ditunjukkan oleh nilai integer
count) mulai dari posisi tertentu
(ditunjukkan oleh nilai integer index) dari suatu nilai string ditunjukkan oleh pengenal variable string var s). Jika posisi index lebih besar dari panjang string s, maka tidak ada karakter yang akan terhapus. Bentuk Umum : Delete (var s : string, index : integer, count : integer); Contoh : Var Bahasa : string [12] ; Urutan , Posisi : integer ; Begin Bahasa : = ‘Turbo Pascal’ ; For Urutan : = 1 to 12 do Begin Posisi : = 14 – Urutan ; Delete (Bahasa, Posisi, 1); Writeln (Bahasa) ; End ; End.
2.
Prosedur Standar Insert
Digunakan untuk menyisipkan suatu string (ditunjukkan oleh nilai string source), ke nilai string yang lainnya (ditunjukkan oleh nilai string var s) mulai dari posisi yang ditunjukkan oleh nilai integer index. | Operasi String
30
Bentuk Umum : Insert ( source : string , var s : string , index : integer ); Contoh :
Var Nama : string [30] ; Begin Nama : = ‘Pal’ ; Insert (‘sca’, Nama, 3) ; End.
3.
Prosedur Standar Str
Digunakan untuk merubah nilai numeric (ditunjukkan oleh nilai x) menjadi nilai string (ditunjukkan oleh pengenal variable string var s). nilai x dapat berupa nilai numeric integer maupun nilai numeric real. Nilai width menunjukkan format panjang dari nilai utuh dan nilai decimals menunjukkan format dari panjang nilai dibelakang koma. Bentuk Umum : Str ( x [:width [: decimals]] , var s : string ) ;
Contoh : Var Nilai1, Nilai2 : integer ; X1, x2 : string[5] ; Begin Nilai1 : = 1234 ; Nilai2 : = 567 ; Writeln (Nilai1 + Nilai2) ; | Operasi String
31
Str (Nilai1 : 4, x1) ; Str (Nilai2 ; 4, x2) ; Writeln (x1+ x2) ; End.
4.
Prosedur Standar Val
Digunakan untuk mengkonversi suatu nilai string (ditunjukkan oleh nilai s) menjadi nilai numeric (ditunjukkan oleh nilai variable numeric v). S walaupun merupakan nilai string, tetapi harus berisi angka atau tanda plus / minus, bila tidak berarti salah dan letak kesalahannya ditunjukkan oleh nilai variable code. Nilai variable ini akan nol bila tidak mengandung kesalahan. Bentuk Umum : Val (s : string , v , var code) :
Contoh : Var NilaiString : string[6] ; NilaiReal : real ; PosisiSalah : integer ; Begin NilaiString : = ‘123.A5’ ; Val (NilaiString, NilaiReal, PosisiSalah) ; Writeln (‘Nilai String =’, NilaiString) ; Writeln (‘Nilai Real =’, NilaiReal) ; Writeln (‘Posisi Salah =’, PosisiSalah); End.
| Operasi String
32
Fungsi Standar Operasi String 1.
Fungsi Standar Copy
Digunakan untuk menyalin sejumlah karakter (jumlah karakter yang disalin ditunjukkan oleh nilai count) mulai dari posisi yang ditunjukkan oleh nilai integer index dari nilai string yang ditunjukkan oleh s. Bentuk Umum : Copy (s : string ; index : integer ; count : integer ) : string Contoh : Var Karakter : string[15]; Begin Karakter : = ‘ABCDEFGHIJKLMNO’ ; Writeln (Karakter); Writeln (copy(Karakter, 5, 3)); Writeln (copy(Karekter, 3, 10)); End.
2. Fungsi Standar ConCat Mempunyai operasi yang sama dengan operator string “+”, yaitu merangkai beberapa nilai string yang ditunjukkan oleh nilai string s1, s2, …, sn. Contoh program : Const Nama = ‘Pascal’ ; Lain = ‘dan keluarga’ ; Begin Writeln (Concat(‘Bahasa’, Nama, ‘untuk Anda’, lain)) ; End.
| Operasi String
33
3.
Fungsi Standar Pos
Digunakan untuk mencari posisi letak dari suatu nilai string (ditunjukkan oleh Substr) yang ada didalam nilai string yang lain (ditunjukkan oleh s). Nilai yang dihasilkan adalah berupa nilai byte yang menunjukkan letaknya. Bila bernilai nol berarti nilai string yang dicari tidak ada.
Bentuk Umum : Pos (Substr : string ; s : string) : byte ;
Contoh program : Const Huruf = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ ; Kar1 = ‘FGHI’ ; Kar2 = ‘F’ ; Kar3 = ‘JUGA’ ; Kar4 = ‘DCB’ ; Kar5 = ‘PQRST’ ; Begin Writeln (Huruf) ; Writeln ; Writeln (Kar1, ‘ada diposisi ke’, Pos(Kar1,Huruf)) ; Writeln (Kar2, ‘ada diposisi ke’, Pos(Kar2,Huruf)) ; Writeln (Kar3, ‘ada diposisi ke’, Pos(Kar3,Huruf)) ; Writeln (Kar4, ‘ada diposisi ke’, Pos(Kar4,Huruf)) ; Writeln (Kar5, ‘ada diposisi ke’, Pos(Kar5,Huruf)) ; End.
| Operasi String
34
4. Fungsi Standar Length Digunakan untuk menghitung panjang atau jumlah karakter yang ada dinilai string yang ditunjukkan oleh s. hasil dari fungsi ini adalah nilai numeric integer positif. Contoh program :
Var Nama : string[30] ; Begin Write (‘ Nama Anda :’ ) ; Readln (Nama) ; Writeln ( ‘Panjang nama Anda adalah ’, Length(Nama),’ karakter’); End.
P2.2 Contoh Kasus Berikut adalah contoh program manipulasi string.. Program Man_String; Uses Crt; Var s : String; l : Integer; h : String; Const a='Mudah'; b=' Sekali'; c=' Belajar'; d=' Pascal'; Begin ClrScr; s:= ConCat (a,b,c,d); Writeln (s); | Operasi String
35
h:=Copy (s,1,5); Writeln(h); l:= Length(s); Writeln ('Panjangnya string S : ',l); Writeln ('Posisi "Pascal" pada nilai S : ',POS('Pascal',s)); readln; END.
Langkah pengerjaan •
Untuk membuka turbo pascal Buka command prompt, lalu ketikan perintah seperti di bawah ini..
•
Kemudian akan muncul jendela turbo pascal seeperti di bawah ini…
•
Kemudian ketikkan koding program
| Operasi String
36
•
Untuk mengkompile program tekan alt+f9 atau pilih compile pada menu
•
Untuk mengeksekusi program tekan ctrl+f9 atau pilih run pada menu
•
Kemudian akan muncul ouput
P2.3 Latihan Tentukan hasil dari program berikut : 1. PROGRAM LATIH1; VAR M, N: STRING[14]; BEGIN M := ‘ESCHATOLOGICAL’; N := COPY (M,6,4); INSERT (‘L’, N, 3); WRITELN (N);
| Operasi String
37
END. 2. VAR A, B: STRING[10]; BEGIN A := ‘MORGAN’; B := COPY (A, 2, 2); WRITELN (B); A := ‘CONCAT (A, B); WRITELN (A); END. 3. VAR M, N: STRING[10]; BEGIN M := ‘ABCDEFGHIK’; DELETE (M, 5, 2); INSERT (‘Z’, A, 2); WRITELN (COPY (A, 4, 3); END
P2.4 Daftar Pustaka 1.
Ifada N, Diktat Mata Kuliah Algoritma Pemrograman, Bangkalan: Jurusan Teknik Informatika Universitas Trunojoyo, 2005.
2.
Munir R, Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika, 2003.
3.
Jogiyanto H, Turbo Pascal, Yogyakarta Andi, 2006.
4.
Buku Seri diktat kuliah Algoritma & Pemrograman 2008
| Operasi String
38
Pertemuan 3 Penyeleksian Kondisi
Objektif: 1.
Mengetahui macam-macam penyeleksian kondisi dalam pascal
2.
Mengerti statement kondisi IF dan Case
| Pertemuan 3
39
P3.1 Teori Pada umumnya satu permasalahan yang komplek memerlukan suatu penyelesaian kondisi. Dengan menyeleksi suatu kondisi, maka selanjutnya dapat ditentukan tindakan apa yang harus dilakukan, tergantung pada hasil kondisi penyeleksian. Jadi suatu aksi hanya dikerjakan apabila persyaratan atau kondisi tertentu terpenuhi.
Statement IF §
Penyeleksian Satu Kasus, dengan menggunakan struktur IF-THEN: Pada penyeleksian satu kasus, kondisi akan diseleksi oleh statemen if. Bila kondisi bernilai benar (true), maka aksi sesudah kata then (dapat berupa satu atau lebih aksi) akan diproses. Bila kondisi bernilai salah (false), maka tidak ada aksi yang akan dikerjakan. Statemen endif adalah untuk mempertegas bagian awal dan bagian akhir struktur IF-THEN.
IF kondisi?
benar THEN
salah
Aksi
Diagram Alir Struktur Penyeleksian Satu Kasus (IF-THEN)
Struktur Penulisan IF-THEN : if kondisi then aksi
| Penyeleksian Kondisi
40
§
Penyeleksian Dua Kasus, menggunakan struktur IF-THEN-ELSE: Dalam struktur IF-THEN-ELSE, aksi1 akan dilaksanakan jika kondisi bernilai benar (true), dan jika kondisi bernilai salah (false) maka aksi2 yang akan dilaksanakan. Statemen else menyatakan ingkaran (negation) dari kondisi.
IF kondisi?
benar THEN
salah ELSE
aksi1
aksi2
Diagram Alir Struktur IF-THEN-ELSE
Struktur penulisan IF-THEN-ELSE : if kondisi then aksi1 else aksi2
§
Penyeleksian Tiga Kasus atau Lebih (Penyeleksian IF Tersarang) Untuk penyeleksian tiga kasus atau lebih juga menggunakan struktur IF-THEN-ELSE sebagaimana halnya permasalahan dua kasus.
| Penyeleksian Kondisi
41
Diagram alir dari struktur tiga kasus IF-THEN-ELSE (tersarang)
Struktur penulisan IF-THEN-ELSE tersarang : if kondisi1 then aksi1 else if kondisi2 then aksi2 else aksi3
Statement CASE Struktur CASE-OF mempunyai suatu ungkapan logika yang disebut dengan selector dan sejumlah statemen yang diawali
dengan
suatu label
permasalahan (case label) yang
mempunyai tipe sama dengan selector. Statement yang mempunyai case label yang bernilai sama dengan case label yang bernilai sama dengan nilai selector akan diproses sedang statemen yang lainya tidak. .
| Penyeleksian Kondisi
42
CASE Variabel Kondisi OF CASE- LABEL 1: STATEMENT 1; CASE- LABEL 2: STATEMENT 2; ........ CASE- LABEL N: STATEMENT N; END;
{
end dari case
}
Struktur Bahasa Pascal Untuk Seleksi CASE
Kondisi1, kondisi2, … kondisiN dapat bernilai benar atau salah. Tiap kondisi diperiksa nilai kebenarannya mulai dari kondisi pertama sampai ditemukan kondisi yang benar. Jika kondisi ke-k benar, maka aksi ke-k dilaksanakan, selanjutnya keluar dari struktur CASE. Aksi yang dipasangkan dengan kondisi ke-k dapat lebih dari satu, karena itu ia berupa runtunan. Jika tidak ada satupun kondisi yang benar, maka aksi sesudah otherwise (optional) dikerjakan
P3.2 Contoh Kasus
Penggunaan IF-THEN Program kondisi_if_then Var nilai :real; ket : string [11]; Begin Ket :=’ tidak lulus’; Write(‘ nilai yang didapat = ‘); Readln(nilai); If nilai > 60 then ket:=’lulus’; Writeln(ket); Readln; End.
| Penyeleksian Kondisi
43
Penggunaan IF-THEN-ELSE Program kondisi_if_then_else Var nilai :real; Begin Write(‘ nilai yang didapat = ‘); Readln(nilai); If nilai > 60 then Writeln(’lulus’); else Writeln(‘tidak lulus’); Readln; End.
Penggunaan IF-THEN-ELSE (tersarang) Program if_then_tersarang var nilai: integer; begin write('Masukkan nilai : '); readln(nilai); if nilai >= 82 then write ('Nilai A') else if nilai >= 72 then write ('Nilai B') else if nilai >= 56 then write ('Nilai C') else if nilai >= 41 then write ('Nilai D') else if nilai <= 40 then write ('Nilai E'); readln; end.
Penggunaan CASE PROGRAM case_nilai; VAR nil : CHAR; BEGIN WRITE('Nilai Numerik yang didapat :'); READLN(nil); CASE nil OF 'A': WRITELN('SANGAT BAIK'); 'B': WRITELN('BAIK'); 'C': WRITELN('CUKUP'); 'D': WRITELN('KURANG'); 'E': WRITELN('SANGAT KURANG '); END; END.
| Penyeleksian Kondisi
44
P3.3 Latihan Kerjakan tugas-tugas di bawah ini sebelum praktikum dimulai. 1. Jelaskan pada kondisi apa sebaiknya struktur seleksi if dan case digunakan! Apa perbedaan dari kedua struktur tersebut? 2. Buatlah algoritma untuk menentukan bilangan terbesar dari tiga buah bilangan bulat yang dimasukkan melalui piranti masukan. (Asumsi: ketiga bilangan adalah bilangan yang berbeda) Contoh keluaran yang diinginkan; Masukkan bilangan pertama : 4 Masukkan bilangan kedua : 2 Masukkan bilangan ketiga : 7
Bilangan yang terbesar adalah : 7 3. Buatlah algoritma konversi dari nilai angka menjadi nama hari. (Asumsi: 1=Senin, 2=Selasa, 3=Rabu, 4=Kamis, 5=Jumat, 6=Sabtu, 7=Minggu)
Contoh keluaran yang diinginkan: Masukkan Angka yang menunjukkan hari : 1 Hari yang anda pilih : Senin
P3.4 Daftar Pustaka 1
Ifada N, Diktat Mata Kuliah Algoritma Pemrograman, Bangkalan: Jurusan Teknik Informatika Universitas Trunojoyo, 2005.
2
Munir R, Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika, 2003.
3
Jogiyanto H, Turbo Pascal, Yogyakarta Andi, 2006.
| Penyeleksian Kondisi
45
Pertemuan 4 Perulangan
Objektif: 1.
Mengetahui macam-macam perulangan dalam Pascal
2.
Mengerti perulangan For, While Do, Repeat …Until
| Pertemuan 4
46
P4.1 Teori Dalam Pascal dikenal adanya 2 tipe perulangan yaitu: •
Iteration statement digunakan untuk melakukan perulangan sekumpulan statement (compound statement).
•
Loop (iteration) structure menggambarkan perulangan dari satu atau lebih instruksi
Perulangan For Perulangan dengan statemen FOR digunakan untuk mengulang statemen atau suatu blok statemen berulang kali. Bentuk perulangan ini merupakan bentuk perulangan yang paling sederhana. Pengulangan dilakukan mulai dari suatu indeks awal, sampai dengan indeks akhir, misalnya: for i:=1 to 5 do writeln('Hello'); akan mencetak 5 kali kata hello. Perulangan dengan statemen FOR dapat berupa perulangan positif dan perulangan negatif.
Perulangan FOR positif Contoh : Perulangan positif untuk satu statement : USES CRT; VAR i : INTEGER; BEGIN FOR i := 1 TO 5 DO WRITELN('STMIK GUNADARMA'); END.
Maka bila program diatas dicompile hasilnya : STMIK GUNADARMA STMIK GUNADARMA STMIK GUNADARMA STMIK GUNADARMA STMIK GUNADARMA Penjelasan : Berati statemen STMIK GUNADARMA akan diulang sebanyak 5 kali yaitu dengan menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5. Contoh dengan menggunakan blok statement: Cara penulisannya dengan pada awal blok diawali dengan BEGIN dan pada akhir blok diakhiri dengan END; | Perulangan
47
USES CRT; VAR i : INTEGER; BEGIN FOR i:= 1 TO 10 DO BEGIN WRITELN('STMIK GUNADARMA'); END; END.
{ blok statement }
Hasil yang akan didapat akan sama dengan contoh yang pertama, tapi yang harus diingat disini untuk penggunaan blok pada perulangan FOR biasanya mempunyai banyak statement (lebih dari 1 statement)
Perulangan FOR negatif Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil. Statement yang digunakan adalah FOR-DOWNTO-DO Contoh : USES CRT; VAR i : INTEGER ; BEGIN FOR i := 10 DOWNTO 1 DO WRITE(i:3); END. Hasil : 10 9 8 7 6 5 4 3 2 1
Perulangan FOR tersarang Perulangan FOR tersarang adalah perulangan FOR yang berada pada perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya dan seterusnya.
Contoh : VAR a,b : INTEGER; BEGIN | Perulangan
48
FOR a := 1 TO 3 DO BEGIN FOR b := 1 TO 2 DO WRITE(a :4,b:2); WRITELN; END; END. Hasil : 11 21 31
12 22 32
Perulangan While Do Penyeleksian kondisi digunakan untuk agar program dapat menyeleksi kondisi, sehingga program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari kondisi yang diseleksi tersebut. Aksi dalam while akan dilakukan selama kondisi memiliki nilai true, dan aksi mungkin tidak dilakukan sama sekali jika di awal loop kondisi sudah bernilai false. Hal yang perlu diperhatikan dalam loop ini adalah kepastian bahwa loop akan berhenti (bahwa suatu saat kondisi akan bernilai false) atau dengan kata lain perulangan WHILE-DO tidak dilakukan jika kondisi tidak terpenuhi.
Contoh : USES CRT; VAR i : INTEGER; BEGIN i := 0; WHILE i < 5 do BEGIN WRITE(i:3); INC(i);
{ sama dengan i:=i+1 }
END; END.
Hasilnya : 0 1 2 3 4
| Perulangan
49
Perulangan WHILE-DO tersarang Perulangan WHILE-DO tersarang (nested WHILE-DO) merupakan perulangan WHILEDO yang satu di dalam perulangan WHILE-DO yang lainnya.
Contoh : USES CRT; VAR a, b : INTEGER; BEGIN CLRSCR; a:=1; b:=1; WHILE a < 4 DO { loop selama a masih lebih kecil dari 4 } BEGIN a := a+1; WHILE b < 3 DO { loop selama b masih lebih kecil dari 3 } BEGIN WRITE(a:3,b:2); b:=b+1; END; END; READLN; END.
Perulangan Repeat Until REPEAT-UNTIL digunakan untuk mengulang statement-statemen atau blok statement sampai (UNTIL) kondisi yang diseleksi di UNTIL tidak terpenuhi. Sintak dari statement ini adalah :
Contoh VAR i : INTEGER; BEGIN i:=0; | Perulangan
50
REPEAT i:= i+1; WRITELN(i); UNTIL i=5; END. hasil : 1 2 3 4 5
REPEAT-UNTIL tersarang REPEAT-UNTIL tersarang adalah suatu perulangan REPEAT-UNTIL yang satu berada didalam perulangan REPEAT-UNTIL yang lainnya. Contoh : VAR a,b,c : REAL; BEGIN WRITELN('========================================'); WRITELN(' sisi A sisi B Sisi C '); WRITELN(' ======================================='); a:= 1; REPEAT { perulangan luar } b := 0; REPEAT { perulangan dalam } c:=SQRT(a*a+b*b); WRITELN(a:6:2, b:9:2, c:9:2); b:=b+5; UNTIL b>25; { berhenti jika b lebih besar dari 5 untuk perulangan dalam } a:=a+1; UNTIL a>3; { berhenti jika a lebih besar dari 3 untuk perulangan luar } WRITELN(' ======================================='); END.
| Perulangan
51
P4.2 Contoh Kasus
Peggunaan perulangan FOR dalam blok statement untuk membuat tabel USES CRT; VAR a,b,c : INTEGER; bagi : REAL; BEGIN WRITELN('----------------------------------------------'); WRITELN(' a a*a a*a*a 1/a '); WRITELN('----------------------------------------------');
FOR a:= 1 TO 10 DO BEGIN | Perulangan
52
b:= a*a; c:=a*a*a; bagi := 1/a; WRITELN(a:4,c:10,d:10,bagi:12:3); END; WRITELN('----------------------------------------------'); END. maka hasilnya : ---------------------------------------------a a*a a*a*a 1/a ---------------------------------------------1 1 1 1.000 2 4 8 0.500 3 9 27 0.333 4 16 64 0.250 5 25 125 0.200 6 36 216 0.167 7 49 343 0.143 8 64 512 0.125 9 81 729 0.111 10 100 1000 0.100 ----------------------------------------------
P4.3 Latihan
Buatlah program untuk soal dibawah ini dengan tampilan sebagus mungkin (gunakan perintah Window, Textcolor dll). Jumlah suku sesuai dengan input dari keyboard. 1. Buat deret hitung 3,7,11,15,......................=? Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 2.Buat deret ukur 3,9,27,................................=? Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 3. Buat tabel deret bergoyang 1,-2,4,-8,...........=? Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 4. Buat deret suku harmonis 1,1/2,1/3,.............=? Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 5. Buat deret fibbonaci 1,1,2,3,5,.....................=? Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. | Perulangan
53
6. Buat deret seperti berikut 1,-2,3,-4,.............=? Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
P4.4 Daftar Pustaka 1
Ifada N, Diktat Mata Kuliah Algoritma Pemrograman, Bangkalan: Jurusan Teknik Informatika Universitas Trunojoyo, 2005.
2 Munir R, Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika, 2003. 3 Jogiyanto H, Turbo Pascal, Yogyakarta Andi, 2006.
| Perulangan
54