Professional Documents
Culture Documents
Mendefinisikan masalah dan menganalisanya Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja yang akan disediakan oleh program. Kemudian menentukan metode atau algoritma apa yang akan diterapkan untuk menyelesaikan masalah tersebut dan terakhir menentukan bahasa program yang digunakan untuk pembuatan program. 2. Merealisasikan dengan langkah-langkah berikut :
Start
Menulis program
Dokumentasi
Secara umum, struktur suatu program terdiri dari beberapa bagian yaitu : 1. Input Bagian ini merupakan proses untuk memasukkan data ke komputer melalui device yang ada misalnya keyboard, mouse, scanner dll. Program melakukan proses membaca data yang akan diolah dari device tersebut. 2. Output Bagian ini merupakan proses untuk menampilkan data yang telah diolah, melaporkan hasil pegolahan data melalui device seperti monitor, printer dll. Program melakukan proses mencetak data ke device tersebut. 3. Proses Pengolahan Data Bagian ini merupakan proses mengolah data yang diinputkan dengan nenerapkan metode-metode, teknik-teknik, algoritma-algoritma yang ada. Proses ini menghasilkan data output yang akan dioutputkan kepada pengguna program. 4. Penyimpanan Data Bagian ini merupakan proses menyimpan data dalam memori atau device penyimpanan data seperti disket, harddisk, CD dll. Berikut ini adalah blok diagram struktur dari suatu program secara umum.
Input Proses Pengolahan Data Output
Arsip
Memory
Algoritma
Algoritma adalah urutan langkah-langkah logika yang menyatakan suatu tugas dalam menyelesaikan suatu masalah atau problem. Contoh : Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan ganjil atau bilangan genap. Algoritmanya : 1. Bagi bilangan dengan bilangan 2 2. Hitung sisa hasil bagi pada langkah 1. 3. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan ganjil.
Flowchart Flowchart adalah gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program, yang menyatakan arah alur program tersebut. Berikut adalah beberapa simbol yang digunakan dalam menggambar suatu flowchart : SIMBOL NAMA TERMINATOR FUNGSI Permulaan/akhir program
Arah aliran program Proses inisialisasi/pemberia n harga awal Proses perhitungan/proses pengolahan data Proses input/output data, parameter, informasi Permulaan sub program/proses menjalankan sub program Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk langkah selanjutnya Penghubung bagianbagian flowchart yang berada pada satu halaman Penghubung bagianbagian flowchart yang berada pada halaman berbeda
PREPARATION
PROSES
DECISION
ON PAGE CONNECTOR
Dari contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah bilangan ganjil atau bilangan genap, flowchart dari program adalah sebagai berikut :
Start
Input Bilangan
Apakah Sisa = 0
Y
Cetak Genap Cetak Ganjil
End
Soal Latihan 1. Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan prima atau bukan, kemudian buat flowchart untuk program tersebut ! 2. Buat algoritma untuk mencetak N buah bilangan prima yang pertama, kemudian buat flowchart untuk program tersebut ! 3. Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat, kemudian buat flowchart untuk program tersebut ! 4. Buatlah Algoritma dan Flowchart program untuk menampilkan bilangan genap antara 1 100, berikut jumlah bilangannya 5. Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan, kemudian buat flowchart untuk program tersebut ! 6. Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan antara X dan Y memenuhi persamaan Y = X3 2X +1 dan nilai x berubah dari 10 sampai 10 ! 7. Buatlah algoritma dan flowchart untuk menghitung luas dan keliling lingkaran ! 8. Buatlah algoritma dan flowchart untuk mengecek bilangan diantara 2 bilangan masukan, apakah sama ataukah lebih besar salah satunya, dan tampilkan hasilnya. 9. Buatlah algoritma dan Flowchart program yang dapat mengetahui apakah suatu bilangan yang dimasukkan merupakan sebuah bilangan genap, ganjil dan nol ? 10. Buatlah algoritma dan Flowchart program untuk menghitung dan menampilkan volume balok dengan rumus (panjang x lebar x tinggi) sedangkan panjang, lebar dan tinggi balok diinputkan melalui keyboard pada saat program dieksekusi.
Struktur dari suatu program Pascal terdiri dari sebuah judul program(program heading) dan suatu blok program(program block) atau badan program (body program). Blok program dibagi lagi menjadi dua bagian, yaitu : bagian deklarasi(declaration part) dan bagian pernyataan( statement part). Bagian deklarasi dapat terdiri dari deklarasi label (labels declaration), deklarasi Kodedeklarasi warna konstanta(constants Warna Kodedeclaration), warna Warna tipe(type declaration), deklarasi variable (variables declaration), 0 Black deklarasi 8 prosedur (procedures Dark Grey declaration), dan deklarasi 1 Green declaration). Secara 9 ringkas Light Blue fungsi(function dapat digambarkan sebagai berikut : 2 Blue 10 Light Green 1. Judul Program 3 Blok Program Cyan 2. 4 a. Bagian Red Deklarasi 5 - Magenta deklarasi label 6 7 - Brown definisi constanta - Light definisi tipe Gray - deklarasi variabel - deklarasi prosedur - deklarasi fungsi b. Bagian pernyataan. Tipe Data Jangkauan 2 MENAMPILKAN TULISAN DI LAYAR Numerik 0 255 Byte program tulisan; judul program Word 0 65535 uses crt; deklarasri fungsi Longint 2147483648 2147483647 begin awal memulai program Integer -32768 32767 clrscr; membersihkan layar writeln('SELAMAT DATANG); menampilkan tulisan SELAMAT DATANG Shortint -128 127 -39 38 write('SEMOGA ANDA PUAS); menampilkan tulisan SEMOGA ANDA PUAS -2.9E 1.7E Real readln; menyetop utk sementara eksekusi program Logika True or False end. Akhir dari program Karakter 1 karakter Char yang dicetak tebal (dari #bagian begin end.) adalah bagian pernyataan (statement) String 1 255 karakter 3 TIPE DATA 11 12 13 14 15 Light Cyan Light Red Light Magenta Yellow White
4 TEXTCOLOR DAN TEXTBACKROUND Berfungsi untuk memberikan warna pada text dan warna background text, warna yang ditampilkan tergantung pada kode warna yang digunakan (lihat tabel warna berikut ini)
CONTOH1 program hello; uses crt; begin textcolor(6); textbackground(11); clrscr; write('AAAkuuuuuuuuuuu); write('Kaaaaaanggggggggggennn); write('Ama Kamuuuuuuuuuuuuuuu'); end.
CONTOH2 program hello; uses crt; var nama:string; gender:char; umur:byte; begin clrscr; textcolor(6); textbackground(11); write('Masukkan nama anda : ');readln(nama); write('Masukkan gender : ');readln(gender); textcolor(7); textbackground(11); write('Masukkan Usia : ');readln(umur); writeln('Nama anda : ',nama,', gender : ',gender,', berusia : ', umur,' tahun'); readln; end.
Var a,b:integer; mendeklarasikan variabel untuk angka pertam(a)dan angka kedua(b) yg berjenis integer Hasil:integer; mendeklarasikan variabel hasil untuk menampung hasil dari penjumlahan a dan b Begin Clrscr; Write(Masukkan angka pertama : ); readln(a); menampilkan text dan membaca masukan sebagai variabel
a
Write(Masukkan angka kedual : );readln(b); menampilkan text dan membaca masukan sebagai variabel b Hasil:=a+b; memproses variable hasil dengan rumus a+b Write(Hasil penambahan adalah : ,hasil); menampilkan hasil dari proses yg sudah dilakukan Readln; memberhentikan sementara proses pembacaan program agar tidak langsung keluar dr layar End.
Program nilai; Uses crt; Var nim,nama:string; Utk,uak,tugas:integer; mendeklarasikan variabel yang digunakan N_akhir:real; Begin Clrscr; write('NIM :');readln(nim); menampilkan text NIM dan memasukkan isiannya ke variabel nim write('nama :');readln(nama); menampilkan text NAMA dan memasukkan isiannya ke variabel nama write('Nilai UTK : ');readln(utk); write('Nilai UAK : ');readln(uak); write('Nilai Tugas: ');readln(tugas); N_akhir:=(0.2*utk)+(0.4*uak)+(0.4*tugas); memproses n_akhir dengan rumus yg sdh ditentukan write('Nilai Akhir yang diperoleh adalah :',N_akhir:10:2); memunculkan nilai akhir readln; memberhentikan sementara proses pembacaan program agar tidak langsung keluar dr layar end.
*:10:2 di belakang variabel n_akhir maksudnya n_akhir yg berjenis real ditampilkan maksimal 10 digit dan 2 angka di belakang koma
Kita bisa mengatur peletakan/ posisi dari text yang ditampilkan (seperti di FoxPro) dengan menggunakan perintah GOTOXY(x,y), untuk lebih jelasnya lihat contoh berikut : (perintah ini hanya bisa anda gunakan jika anda mengaktifkan crt unit(uses crt) ) program tulisan; uses crt; begin clrscr; gotoxy(10,2);writeln('SELAMAT DATANG DI PIKMI); gotoxy(10,3);writeln('SEMOGA ANDA PUAS); readln; end
kondisi
PERNYATAAN
T
Dalam program ini jika jumlah beli dimasukan dengan angka lebih dari atau sama dengan 20 maka akan muncul tulisan Anda dapat Diskon jika tidak tidak akan memunculkan apa -apa Dalam program ini jika jumlah beli dimasukan dengan angka lebih dari atau sama dengan 20 maka akan muncul tulisan Anda dapat Diskon dan Anda dapat voucher belanja Rp.5000, jika tidak tidak akan memunculkan apa-apa
F
PERNYATAAN
II.2 PERNYATAAN IF-ELSE Struktur Logika IF-ELSE adalah sbb: Sintax IF-ELSE dalam PASCAL IF <kondisi> THEN <pernyataan1> ELSE <pernyataan2>; Bila pernyataan yang dihasilkan, lebih dari satu maka sintaxnya menjadi : IF <kondisi> THEN BEGIN <pernyataan_1>; <pernyataan_2>; <pernyataan_n>; END ELSE BEGIN <pernyataan_A>; <pernyataan_B>; <pernyataan_n>; END; II.2.1 CONTOH PROGRAM IF-ELSE
Contoh 1 Program cth_if; uses crt; var nama1,nama2:string; j_kel1,j_kel2:char; begin clrscr; Write('Masukkan nama anda : ');readln(nama1); write('Jenis kelamin anda [l/p] : ');readln(j_kel1); write('Masukkan nama pasangan : ');readln(nama2); write('Jenis kelaminnya [l/p] : ');readln(j_kel2); IF j_kel1<>j_kel2 THEN Write('Anda berdua sangat berjodoh') ELSE Write('Anda berdua tidak cocok'); readln; end.
Jika syarat yang ditentukan terpenuhi( T ) maka pernyataan akan dijalankan, jika syarat tidak terpenuhi ( F ) maka pernyataan2 yang dijalankan Dalam program ini jika jenis kelamin yang dimasukkan berbeda(tidak sama) maka akan memunculkan tulisan ANDA BERDUA SANGAT BERJODOH jika tidak maka tulisan yang muncul adalah ANDA BERDUA TIDAK COCOK kondisi PERNYATAAN 1PERNYATAAN 2F T
Contoh 2 Program cth_if; uses crt; var nama1,nama2:string; j_kel1,j_kel2:char; begin clrscr; Write('Masukkan nama anda : ');readln(nama1); write('Jenis kelamin anda [l/p] : ');readln(j_kel1); l write('Masukkan nama pasangan : ');readln(nama2); write('Jenis kelaminnya [l/p] : ');readln(j_kel2); L
IF upCase(j_kel1) <> upCase(j_kel2) THEN BEGIN Write('Anda berdua sangat berjodoh'); Write(Teruskan hubungan anda); END ELSE BEGIN Write('Anda berdua tidak cocok'); Write(Anda berdua edannnnnn); END; readln; end.
tetapi jika syarat tdk terpenuhi akan menghasilkan syarat yang lain agar pernyataan yang ditentukan bisa terpenuhi. Bisa juga kondisinya berbeda. Melewati Babak
Babak final T T T F F F Syarat 1 T F Syarat 2 Pernyataan syarat/ pernyataan yg lain ............................ T F Husnan Sarofi 20066 Pengenalan Pemrograman Pascal
semifinal
program nest_if; uses crt; var a,b,c:integer; begin clrscr; write('Masukkan angka pertama : ');readln(a); write('Masukkan angka kedua : ');readln(b); write('Masukkan angka ketiga : ');readln(c);
IF a>b THEN IF a>c THEN WRITE('Yang terbesar adalah angka pertama') ELSE WRITE('Yang terbesar adalah angka ketiga') ELSE IF b>c THEN WRITE('Yang terbesar adalah angka kedua') ELSE WRITE('Yang terbesar adalah angka ketiga');
READLN; END.
END;
Di atas adalah program untuk mencari angka terbesar dari 3 angka yang dimasukkan. Pertama jika angka pertama lebih besar dari angka kedua, maka akan angka pertama akan dibandingkan lagi dengan angka ketiga untuk kemudian ditentukan mana yang terbesar jika tidak maka angka kedua yang akan dibandingkan dengan angka ketiga kemudian ditentukan mana yang terbesar. Dalam hal ini golongan dapat dikatakan sebagai sebagai expresi utama sedangkan A,B,C,D dapat dikatkan sbg pembnding1,2,3 atau 4 sedangkan banyaknya Gaji pokok dikatakan sebagai keputusan yang diperoleh menurut golongannnya masing-masing
Looping ada dua jenis 1. Counted Loop(pengulangan pasti) 2. Conditional Loop(pengulangan berkondisi) 3. Nested Loop(pengulangan bersarang)
FOR <counter_1> TO <counter_2> DO BEGIN <proses /code program yang diulang>; END;
CONTOH 1
PROGRAM for_do; uses crt; var a:integer; begin clrscr;
for a:=1 to 5 do begin writeln('PIKMI Jember'); writeln('For The Real World'); end;
readln; end.
III.1.2 Pernyataan FOR-DOWNTO-DO FOR <counter_1> DOWNTO <counter_2> DO BEGIN <proses /code program yang diulang>; END;
CONTOH 1
PROGRAM for_down; uses crt; var a:integer; begin clrscr;
SINTAX :
for a:=5 downto 1 do begin writeln('PIKMI Jember'); writeln('For The Real World'); end; Contoh disamping untuk mengulangi proses secara sederhana. Dimana yang diulang adalah tulisan PIKMI Jember dan For The Real World
Dalam perintah FOR-TO -DO jumlah counter akan bertambah 1 tiap pengulangan proses terjadi
Dalam contoh disamping counternya menggunakan variable a, dimana counter pertama a bernilai 1 dan counter kedua bernilai 5, jadi jumlah pengulangan adalah 5 dihitung dari angka 1 sampai 5 (1,2,3,4,5) Dalam perintah FOR-DOWNTO-DO jumlah counter akan berkurang sebanyak 1 angka, tiap proses pengulangan terjadi.
readln;
end.
Repeat Until adalah sebuah bentuk pengulangan dimana proses pengulangan akan terus terjadi sampai syarat yang telah ditentukan terpenuhi. Misal : seorang anak mendapat perintah untuk mengelilingi lapangan sampai pingsan. Dalam keadaan tersebut yang dimaksud dengan syarat adalah sampai pingsan, jadi jika si anak belum pingsan maka ia akan terus mengelilingi lapangan. Baru setelah dia pingsan maka proses mengelilingi lapangan akan langsung berhenti . SINTAX :
program demo_repuntil; uses crt; var Nilai:char; begin repeat write('Nilai Anda(x-berhenti):');readln(Nilai); until (Nilai='x') or (Nilai='X'); end.
CONTOH 2
program demo_repuntil; uses crt; var Nilai:char; begin clrscr; repeat writeln('Aku sayang kamu'); writeln('Dan selalu merindumu');
Pada contoh di samping. Jika password yang dimasukkan salah maka akan mengulang untuk menanyakan password lagi. Dan akan terus mengulang sampai 3 kali jika password yang dimasukkan masih salah. Namun jika password yang dimasukkan benar maka akan menampilkan tulisan SELAMAT ANDA BERHASIL dan pengulangan langsung dihentikan. Untuk menghentikan pengulangan, langsung dimasukkan angka counter terakhir(lihat syntax yg tebal) dimana dalam contoh disamping jika password yang dimasukkan benar(PIKMI), maka angka counter langsung berubah menjadi 3(pengulangan terakhir). Sekaligus menampilkan tulisan SELAMAT ANDA BERHASIL Pengenalan Pemrograman Pascal
III.2.2 WHILE - DO
Dalam pernyataan WHILE DO, sebuah proses akan terus diulang selama syarat yang ditentukan masih terpenuhi. Bisa dikatakan bahwa perintah WHILE DO adalah kebalikan dari perintah REPEAT- UNTIL SINTAX :
SMA 2 SEMARANG
WHILE <syarat yang ditentukan> DO BEGIN <proses yang akan diulang>; END; Pada CONTOH 1 tulisan Nilai Anda(x-berhenti): akan terus ditampilkan sampai anda memasukkan huruf x atau X pada inputan Sedang pada CONTOH 2, tulisan AKU SAYANG KAMU dan DAN SELALU MERINDUMU akanditampilkan lagi jika anda memasukkan huruf selain t dan T pada inputan. Dan pada saat memasukkan huruft atau T maka langsung keluar dari proses pengulangan dan karena tidak ada perintah lagi di bawahperintah pengulangan maka, program pun langsung berakhir. CONTOH 1 program demo_whiledo; uses crt; var Nilai:char; begin clrscr; while(Nilai<>'x') and (Nilai<>'X') do begin write ('Nilai Anda(x-berhenti:'); readln(Nilai); end; end. CONTOH 2 program while_do1;
10 IPA 1
7 ARINDRA MARTHA S 19
SMA 2 SEMARANG
uses crt; var ulang:char; begin clrscr; while (ulang<>'T') and (ulang<>'t') do begin writeln('Aku sayang kamu'); writeln('Dan selalu merindumu'); write('Mau ngulang[y/t]? : ');readln(ulang); end; end. III.2.3 CONTOH LAIN REPEAT UNTIL program repeat_until; uses crt; var ulang:char; pass,nama:string; begin clrscr; repeat clrscr; write('Masukkan Nama Anda');readln(nama); write('Masukkan Passwordnya');readln(pass); IF (nama='Asep') and (pass='supernova') then begin writeln('Selamat Memasuki Program kami'); sound(1467); delay(1000); sound(4563); delay(100); NoSound; ulang:='t'
10 IPA 1
7 ARINDRA MARTHA S 20
SMA 2 SEMARANG
end else begin writeln('Sorry men'); writeln('Cek lagi nama dan password anda'); sound(1004); delay(1000); sound(6666); delay(100); ulang:='y'; NoSound; end; until (ulang='T') or (ulang='t'); end.
Contoh diatas adalah sebuah contoh program password Dalam contoh tersebut jika nama dan password yang dimasukkan sesuai persyaratan( dalam contoh tersebutnama memakai Asep dan passwordnya supernova). Maka akan memunculkan tulisan SELAMAT ANDAMEMASUKI PROGRAM KAMI dan mengeluarkan bunyi tertentu (lihat perintah SOUND(.) dan DELAY(..) yang berwarna merah), sekaligus keluar dari perulangan. Tapi jika salah, maka tampilan yang muncul adalahtulisan SORRY MEN dan CEK LAGI NAMA DAN PASSWORD ANDA, dan juga mengeluarkan bunyi sepertiyang dideklarasikan pada
10 IPA 1
7 ARINDRA MARTHA S 21
SMA 2 SEMARANG
perintah SOUND. Sekaligus melakukan pengulangan (karena variable ULANG diberinilai y, dimana syarat mengakhiri perulangan ialah jika variable ULANG bernilai t atau T).
10 IPA 1
7 ARINDRA MARTHA S 22
SMA 2 SEMARANG
III.2.4 CONTOH LAIN WHILE - DO program demo_whiledo; uses crt; var ulang:char; r,t:integer; vol,luas:real; begin clrscr; while (ulang<>'t') and (ulang<>'T') do begin clrscr; writeln('MENGHITUNG VOLUME dan LUAS PERMUKAAN TABUNG'); writeln('**************************************** ***'); write('Masukkan panjang jari-jari : ');readln(r); write('Masukkkan tinggi tabung : ');readln(t); vol:=3.14*r*r*t; luas:=(2*3.14*r*r)+(2*3.14*r*t); writeln('**************************************** ***'); writeln('Volume tabung adalah : ',vol:10:2); writeln('Luas permukaan tabung adalah :',luas:10:2); writeln('**************************************** ***'); write('Mau mengulang [y/t]: ');readln(ulang); end; end.
10 IPA 1
7 ARINDRA MARTHA S 23
SMA 2 SEMARANG
III..3 NESTED LOOP Adalah sebuah perulangan (looping) yang berada di dalam perulangan yang lainnya. Perulangan yang lebih dalam akan diulang terlebih dahulu sampai habis, kemudian perulangan yang lebih luar akan diproses selanjutnya. Perulongan seperti ini bisa terdiri dari beberapa perulangan yang jenisnya sama ataupun berbeda. Misal didalam perulangan menggunakan FOR DO terdapat perulangan FOR-DO lagi atau di dalam perulangan FOR DO terdapat perulangan menggunakan REPEAT UNTIL atau yang lainnya. III.3.1 Beberapa contoh penggunaaan NESTED LOOP CONTOH 1 program NESLOOP1; uses crt; var a,b:integer; BEGIN CLRSCR; for a:=1 to 5 do BEGIN for b:=1 to 3 do begin writeln('Kutunggu kedatanganmu'); writeln('Karena aku selalu merindukanmu'); writeln; end; end;
10 IPA 1
7 ARINDRA MARTHA S 24
SMA 2 SEMARANG
readln; end.
10 IPA 1
7 ARINDRA MARTHA S 25
SMA 2 SEMARANG
CONTOH 2 program nestedloop1; uses crt; var ulang:char; i:integer; begin clrscr; repeat for i:=1 to 5 do begin writeln('Aku tak bisa memiliki'); writeln('Kamu tak sendirian'); end; write('Mau ngulang lagi[y/t] : ' );readln(ulang); until (ulang='t') or (ulang='T') end. CONTOH 3 program nestedloop1; uses crt; var ulang:char; i:integer; begin clrscr; repeat writeln('Belajar Pascal'); writeln('Ueeenak tenannn'); repeat write('Mau ngulang lagi[y/t] : ' );readln(ulang);
10 IPA 1
7 ARINDRA MARTHA S 26
SMA 2 SEMARANG
until (ulang='t') or (ulang='T') or (ulang='y') or (ulang='Y') until (ulang='t') or (ulang='T') end. CONTOH 3 program nestedloop; uses crt; var ulang:char; i:integer; nama,cita:string; begin clrscr; repeat clrscr; gotoxy(2,4);write('Nama : ');readln(nama); gotoxy(2,5);write('Cita-cita : ');readln(cita); repeat gotoxy(2,7); write('Mau ngulang lagi[y/t] : ' );readln(ulang); until (ulang='t') or (ulang='T') or (ulang='y') or (ulang='Y') until (ulang='t') or (ulang='T') end.
10 IPA 1
7 ARINDRA MARTHA S 27
SMA 2 SEMARANG
10 IPA 1
7 ARINDRA MARTHA S 28