>> '); GotoXY(10,4);Writeln(' 1. Menghitung Luas Lingkaran '); GotoXY(10,6);Writeln(' 2. Menghitung Luas Segitiga '); GotoXY(10,8);Writeln(' 3. Menghitung Luas Bujur-Sangkar '); GotoXY(10,10);Writeln('0. S e l e s a i '); pilihan := 9; while (Pilihan <0 ) or (Pilihan > 3 ) Do begin GotoXY(10,20);Write('Pilih Nomor (0-3) ?'); Readln(Pilihan); end; clrscr; if pilihan = 1 then begin write('Jari-jari lingkaran ? ');Readln(R); Luas := Pi * R*R; 6
writeln('Luas Lingkaran = ',Luas:9:2); end; if pilihan = 2 then begin write('Panjang sisi alas ? ');readln(L); write('Tinggi Segitiga ? ');readln(T); Luas := 0.5 * L * T; writeln; writeln('Luas Segitiga = ',Luas:9:2); end; if pilihan = 3 then begin write('Panjang bujur sangkar ? ');readln(T); write('Lebar bujur sangkar ? ');readln(L); Luas := T * L; writeln; writeln('Luas bujur sangkar = ',Luas:9:2); end; readln; end. Program 2.3 Program yang menggunakan sejumlah statemen IF - Then Bila program ini dijalankan, akan ditampilkan : <<
>> 1. Menghitung Luas Lingkaran 2. Menghitung Luas Segitiga 3. Menghitung Luas Bujur Sangkar 0. S e l e s a i Pilih Nomor (0 – 3) ? 1 Jari-jari Lingkaran ? 45 Luas Lingkaran = 6361.73
2.3.1.
Statemen If Then .. Else
Struktur If –Then …Else merupakan pengembangan dari struktur If – Then dengan struktur sebagai berikut : 7
If Kondisi Then Statemen 1 Else Statemen 2; Statemen 1 atau dapat dapat berupa blok statemen akan diproses bilamana kondisi yang diseleksi benar (terpenuhi) sedang statemen 2 atau dapat berupa blok statemen akan diproses bilamana kondisi yang diseleksi tidak terpenuhi. Bila struktur ini digambarkan dalam bentuk bagan alir akan tampak sebagai berikut :
Gambar 2.6 Bagan alir struktur If-Then-Else Contoh 4 : program contoh_4; uses crt; var NilaiUjian : real; begin clrscr; write('Nilai yang didapat ? '); readln(Nilaiujian); {*Seleksi nilai yang didapat, Lulus atau Tidak lulus*} If NilaiUjian > 60 then writeln('Lulus') else writeln('Tidak Lulus'); readln; end. Program 2.4 Penggunaan Struktur If Then Else 8
Bila program ini dijalankan : Nilai yang didapat ? 67 Lulus Bila proses program digambarkan dalam bentuk bagan alir akan berupa :
Gambar 2.5 Bagan alir program yang menggunakan struktur If-Then-Else 2.3.2.
Statemen If Tersarang
Struktur If tersarang (nested IF) merupakan bentuk dari suatu statemen If berada didalam lingkungan statemen If yang lainnya. Misalnya bentuk statemen If tersarang sebagai berikut : atau If Kondisi 1 THEN
If Kondisi 1 THEN BEGIN
IF Kondisi 2 THEN Statemen 1 ELSE Statemen 2;
IF Kondisi 2 THEN Statemen 1 ELSE Statemen 2; END;
Bnetuk statemen If terssarang tersebut bila digambarkan dalam bentuk bagan alir akan berupa :
9
Gambar 6.6 Bagan alir Struktur IF Tersarang Struktur If Tersarang dapat juga berbentuk sebagai berikut : If Kondisi 1 THEN IF Kondisi 2 THEN Statemen 1 ELSE Statemen 2; Else Statemen3;
Bila digambarkan dalam bentuk bagan alir :
Gambar 2.7 Bagan alir struktur IF Tersarang bentuk lain.
10
Atau dengan bentuk bagan alir lain
Gambar 2.8 Bagan alir struktur Iftersarang tersarang bentuk yang lain lagi. Contoh 5: Penyelesaian suatu persamaan kuadrat AX2 + BX + C = 0 mempunyai syarat utama, yaitu nilai A tidak boleh sama dengan nol. Nilai diskriminan adalah sebesar : D = B2 – 4 x A x C Nilai akar-akar persamaana kuadrat ini tergantung dari nilai diskriminannya dan bisa terjadi 3 kemungkinan akar, yaitu : 1. Bila D = 0, berarti akan terjadi dua akar kembar
X1 = X2 =
−𝐵 2.𝐴
2. Bila D = 0, berarti akan terjadi dua akar real berlainan
X1 = X2 =
−B+ √D 2.𝐴 −B−√D 2.A
3. Bila D, berarti akan terjadi dua akar imaginair berlainan : −B
√−D 𝑖 2.𝐴
−B
√−D 𝑖 2.𝐴
X1 = 2.𝐴 + X2 = 2.𝐴 −
11
program contoh_5; uses crt; var A,B,C,D,Z1,z2,x1,x2 : real; Lagi : char; Begin clrscr; Lagi := 'Y'; while (Lagi='Y') or (Lagi='y') do Begin A := 0; while A=0 Do Begin writeln; write('Nilai A ? ');Readln(A); end; write('Nilai B ? ');readln(b); write('Nilai C ? ');readln(C); writeln; {8hitung nilai diskriminasi*} D := B*B - 4*A*C; {*Selesksi nilai diskriminan*} If D=0 Then {*Akar Kembar*} Begin X1 := -B/(2*A); writeln('Ada 2 Akar kembar, yaitu : '); writeln('X1 = X2 = ',X1:9:2); end else Begin if D > 0 Then {*Dua akar real berlainan*} begin X1 := (-B + Sqrt(D))/(2/A); X2 := (-B - sqrt(D))/(2*A); writeln('Ada 2 Akar real berlainan, yaitu : '); writeln('X1 = ',X1:9:2); writeln('X2 = ',X2:9:2); end 12
else {*Dua akar imaginair berlainan8*} Begin Z1 := -B / (2*A); Z2 := Sqrt(-D) /(2*A); Writeln('ada 2 akar imaginar berlainan, yaitu : '); writeln('X1 = ',Z1:9:2,'i'); writeln('X2 = ',Z2:9:2,'i'); end; end; writeln; write('Menghitung Lagi (Y/T) ? ');readln(Lagi); end; readln; end. Program 2.5 Penggunanaa Struktur If Tersarang untuk menyelesaikan persamaan kuadrat. Bila program ini dijalankan : Nilai A ? 1 Nilai B ? 2 Nilai C ? 3 Ada 2 akar imaginair berlainan, yaitu : X1 = -1.00 + 1.41i X2 = -1.00 1.41i Menghitung Lagi (Y/T) ? T 2.4. Statemen Case Statemen Case dapat berbentuk struktur Case-of atau Case of ..else. 2.4.1. Struktur Case – Of 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. Bentuk dari struktur Case-of adalah sebagai berikut : Program contoh_6; Uses crt; 13
var Nilai : char; Begin clrscr; write('Nilai huruf yang didapat ? ');readln(Nilai); Case Nilai Of 'A' : Writeln('Sangat Baik'); 'B' : Writeln('Baik'); 'C' : Writeln('Cukup'); 'D' : Writeln('Kurang'); 'E','F' : Writeln('Gagal'); end; readln; end. Program 2.6 Penggunaan Struktur Case-Of untuk menyeksi nilai Ujian 2.4.2.
Struktur Case –Of ..Else
Struktur Case-of ..else merupakan pengembangan dari struktur case-of..else dan juga merupakan pengembangan struktur pascal.pada struktur ini bila tidak ada kondisi yang terpenuhi berarti tidak ada statemen didalam lingkungan case-of yang diproses. Dengan struktur case-of ..else, bila tidak ada kondisi yang terpenuhi maka statemen yang akan diproses didalam lingkungan case-of adalah statemen yang ada di else. program contoh_7; uses crt; var pilihan : byte; R,L,T,Luas : Real; begin clrscr; GotoXY(10,2);Writeln(' <<
>> '); GotoXY(10,4);Writeln(' 1. Menghitung Luas Lingkaran '); GotoXY(10,6);Writeln(' 2. Menghitung Luas Segitiga '); GotoXY(10,8);Writeln(' 3. Menghitung Luas Bujur-Sangkar '); GotoXY(10,10);Writeln('0. S e l e s a i '); pilihan := 9; while (Pilihan <0 ) or (Pilihan > 3 ) Do begin GotoXY(10,20);Write('Pilih Nomor (0-3) ?'); Readln(Pilihan); end; 14
clrscr; case Pilihan Of 1:begin write('Jari-jari lingkaran ? ');Readln(R); Luas := Pi * R*R; writeln('Luas Lingkaran = ',Luas:9:2); end;
2:begin write('Panjang sisi alas ? ');readln(L); write('Tinggi Segitiga ? ');readln(T); Luas := 0.5 * L * T; writeln; writeln('Luas Segitiga = ',Luas:9:2); end; 3:begin write('Panjang bujur sangkar ? ');readln(T); write('Lebar bujur sangkar ? ');readln(L); Luas := T * L; writeln; writeln('Luas bujur sangkar = ',Luas:9:2); else begin writeln(‘Pilihannya hanya 1,2 atau 3’); writeln(‘Anda tadi pilihan nomer berapa ? …. Ngawur !!!’); end; end; readln; end. Program 2.7 Penggunaan Struktur Case-of ..Else untuk menyeleksi pilihan menu
15
BAB III UJI KOMPETENSI
3.1. Penilaian Kompetensi Praktek 1. Tulislah program yang menampilkan ‘Genap’ jika suatu bilangan adalah bilangan genap atau ‘Ganjil’ jika bilangan tersebut adalah bilangan ganjil. Jika bilangan tersebut adalah bilangan ganjil. Masukan dari program ini adalah bilangan bulat, yaitu x, dimana 0 ≤ x ≥ 65535. Keluaran dari program ini adalah ‘Bilangan genap’ atau ‘Bilangan ganjil’ 2. Tulislah program untuk mengecek suatu tahun merupakan tahun kabisar atau bukan Masukkan dari program ini adalah tahun bertipe bilangan bulat, dimana 0 ≤ tahun ≤ 3000. Keluaran dari program ini adalah Tahun adalah tahun kabisat atau bukan tahun kabisat. 3. Tulislah program untuk memangkatkan sauatu bilangan real dengan bilangan real lainnya ? sebagai contoh, jika pengguna me-masukkan 5.0 dan 1.5, program akan menampilkan 11,18 yang tidak lain adalah 5.01.5. Masukkan dari program ini adalah dua bilangan real, yaitu x dan y. keluaran dari program ini adalah bilangan real hasil pemengakatan x dengan y. 4. Tulislah program untuk menghitung sudut terkecil yang terbentuk antara jarum panjang dan jarum pendek saat menunjuk jam tertentu. Sebagai contoh, jika pengguna memasukkan jam 3:30, program akan menampilkan keluaran 75 derajat. Masukkan dari program ini adalah dua bilangan bulat yang melambangkan jam dan menit. Keluaran Dari program ini adalah sudut terkecil yang dibentuk oleh jam tersebut. 5. Tulislah program untuk mencari nilai maksimun dan minimum dari sekumpulan data yang dimasukkan pengguna. Masukkan dari program ini adalah satu bilangan bulat yang menyatakan jumlah data (=N) serta bilangan real sejumlah N. Keluaran dari program ini adalah nilai maksimum dan minimum dari masukan diatas.
16
3.2. Kunci Jawaban 1. program kompetensi1; uses crt; var x : word; begin clrscr; write('Masukkan suatu bilangan : ');readln(x);
2.
if (x mod 2 = 0) then writeln('Bilangan genap') else writeln('Bilangan ganjil'); readln; end. Suatu tahun dikatakan tahun kabisat apabila habis dibagi 4 atau habis dibagi 400 jika tahun tersebut habis dibagi 100. Sebagai contoh, 1996 adalah tahun kabisat karena habis dibagi 4. Contoh lain 1900 bukan tahun kabisat karena habis dibagi 100 tetapi tidak habis dibagi 400. Contoh terakhir, 2000 adalah tahun kabisat karena habis dibagi 400. Dengan demikian algoritma pengecekan tahun kabisat ini dapat dituliskan sebagai berikut : 1. Masukkan tahun 2. Jika (Tahun tidak habis dibagi 4) tulis ‘Bukan tahun kabisat’. Selesai. 3. jika(tahun habis dibagi 100) dan ( tahun tidak habis dibagi 400). Tulis ‘Bukan tahun kabisat ‘, selesai 4. Tulis ‘Tahun Kabisat’. program komp2; uses crt; var tahun : integer; begin clrscr; write('Masukkan tahun = ');readln(tahun); if (Tahun mod 4 <> 0) then writeln (Tahun , ' bukan tahun kabisat') else if (tahun mod 100 = 0) and (tahun mod 400 <> 0 ) then writeln(tahun , ' bukan tahun kabisat') else writeln(tahun , ' adalah tahun kabisat'); 17
3.
readln; end. Untuk menghitung pemangkatan suatu bilangan real dengan bilangan real lainnya. Anda dapat memanfaatkan logaritma natural. 1. Masukkan x,y 2. Jika (X < 0 ) maka kerjakan baris 3 sampai dengan 6; jika tidak kerjakan baris 7 3. Jika (y adalah bilangan bulat) maka kerjakan baris 4 sampai dengan 5; jika tidak kerjakan baris 6. 4. Jika( y habis dibagi 2 ) maka z exp(y * In(-x)). Kerjakan baris 9. 5. Jika (y tidak habis dibagi 2) maka z -exp(y * In(x)). Kerjakan baris 9 6. Tulis (‘Tidak dapat diselesaikan’); selesai 7. Jika ( x > 0) maka z exp(y*In(x)). Kerjakan baris 9 8. Jika (x=0) maka z 0. 9. Tulis z program komp3; uses crt; var x,y,z : real; begin clrscr; write('Masukkan x : '); readln(x); write('Masukkan y : '); readln(y); if (X < 0 ) THEN begin if (round (y) = y) then begin if (round (y) mod 2 = 0) then z := exp(y * ln (-x)) else z := -exp (y * ln (-x)); end else begin writeln('Tidak dapat diselesaikan'); halt; end; end else if (x > 0) then z:= exp (y * ln(X)) else 18
4.
z := 0; writeln('x^y : ', z:1:3); readln; end. program komp4; uses crt; var jam,menit : integer; sdjam, sdmenit : real; begin write('jam : '); readln(jam); write('Menit : ');readln(menit); sdjam := menit * 0.5 + jam * 30.0; sdmenit := menit * 6.0; write('sudut terkecil yang terbentuk : '); if (abs (sdjam - sdmenit) < 180) then writeln(abs (sdjam - sdmenit):1:2) else writeln(360.0 - abs (sdjam - sdmenit):1:2); readln; end.
5.
program komp5; uses crt; const Maxdata = 100; var data : array[1..maxdata] of real; var N : byte; i : byte; max,min : real; begin clrscr; write('masukkan jumlah data : '); readln(N); for i:= 1 to N do begin write('Data ke - ', i, ' : '); 19
readln(data[i]); end; max := data[1]; min := data[1]; for i := 2 to N do begin if(data[i] < min) then min := data[i]; if (data[i] > max) then max := data[i]; end; writeln('Data terkecil : ',min:1:3); writeln('Data terbesar : ',max:1:3); readln; end.
20
DAFTAR PUSTAKA Anthony Pranata, 2000, Algortima dan Pemograman, J & J Learning Yogyakarta Prof. Dr. Jogiyanto HM, MBA, Akt, 2005, Turbo Pascal Versi 5.0 Teori dan Aplikasi Program Komputer Bahasa Turbo pascal Termasuk Database Toolbox Jilid 1, Penerbit Andi Yogyakarta.
21