Jumat, Januari 06, 2012

Program Invers dan Determinan Matriks

program invers_dan_determinan;
uses wincrt;
var matrik,adjoin:array[1..2,1..2] of integer;
det,i,j:integer;
begin for i:=1 to 2 do
begin writeln('masukkan baris ',i,' matrik');
readln(matrik[i,1],matrik[i,2]);
end;
writeln;
writeln;
writeln('bentuk matrik');
for i:=1 to 2 do
begin for j:=1 to 2 do

write(matrik[i,j]:5);
writeln;
end;
writeln;
writeln;
writeln('adjoin matrik');
adjoin[1,1]:=matrik[2,2];
adjoin[1,2]:=-matrik[1,2];
adjoin[2,1]:=-matrik[2,1];
adjoin[2,2]:=matrik[1,1];
begin for i:=1 to 2 do
begin write('|');
for j:=1 to 2 do
begin write(' ',adjoin[i,j],' ');
if j = 2 then write('|');
end;
writeln;
end;
writeln;

det := (matrik[1,1] * matrik[2,2]) - (matrik[1,2] * matrik[2,1]);
writeln; writeln;

writeln('determinan matrik=', det);writeln;
writeln; writeln;
begin
writeln('invers matrik');
begin
for i := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write(' ',adjoin[i,j]/det:0:0,' ');
if j = 2 then write('|');
end;
write;
writeln;
writeln;
end;
end;
end;
end;
end.
»»  READMORE...

Program Matriks di Pascal

program matrik_kali;
uses wincrt;
var a,b,c: array[1..10,1..10] of real;
i,j,k,baris1,kolom1,baris2,kolom2:integer;

begin
writeln('ukuran matrik A ');
read(baris1,kolom1);
write('masukan nilai matrik');
for i:=1 to baris1 do
for j:=1 to kolom1 do
read(a[i,j]);

write('ukuran matrik B ');
read(baris2,kolom2);
writeln('masukan nilai matrik');
for i:=1 to baris2 do
for j:=1 to kolom2 do
read(b[i,j]);


if kolom1=baris2 then
for i:=1 to baris1 do
for j:=1 to kolom2 do
begin
c[i,j]:=0;
for k:=1 to kolom1 do
c[i,j]:=c[i,j]+a[i,k]*b[k,j];
end
else
write('ukuran matrix tidak sesuai syarat');

writeln('hasil perkalian');
for i:=1 to baris1 do
begin
for j:=1 to kolom2 do
write(c[i,j]:0:0,' ');
writeln
end;
begin if (baris1=baris2) and (kolom1=kolom2) then
begin
for i:=1 to baris2 do
for j:=1 to kolom2 do
c[i,j]:= a[i,j]+b[i,j]
end
else
writeln('ukuran matrik tidak sama');

writeln('hasil penjumlahan');
for i:=1 to baris1 do
begin
for j:=1 to kolom1 do
write(c[i,j]:0:0,' ');
writeln;
end;
end;
begin if (baris1=baris2) and (kolom1=kolom2) then
begin
for i:=1 to baris2 do
for j:=1 to kolom2 do
c[i,j]:= a[i,j]-b[i,j]
end
else
writeln('ukuran matrik tidak sama');

writeln('hasil pengurangan');
for i:=1 to baris1 do
begin
for j:=1 to kolom1 do
write(c[i,j]:0:0,' ');
writeln;
end; end; end.
»»  READMORE...

Program Pascal Terapan

program kombinasi_faktorial;

uses wincrt;

var

fn,fk,fn_k,Kombinasi:real;

i,n,k:integer;

begin

write('Masukkan bilangan n =');readln(n);

write('Masukkan bilangan k =');readln(k);

fn:=1;

fk:=1;

fn_k:=1;

for i:= 2 to n do{Menghitung n faktorial}

fn:=fn*i;

for i := 2 to k do{Menghitung k faktorial}

fk:=fk*i;

for i:= 2 to (n-k) do{ menghitung n-k faktorial}

fn_k:=fn_k*i;

kombinasi:=fn/(fk*fn_k);

writeln(n,' Kombinasi ',k, ' = ',Kombinasi:0:0);

end.


 

Program Deret_mencari_suku_ke_n;

uses wincrt;

Var

i:integer;

y,jum:real;

begin

clrscr;

jum:=0;

i:=0;

while jum <= 1.9999 do

begin

i:=i+1;

y:=1/exp((i-1)*ln(2));

jum:=Jum+y;

writeln(y:0:4);

end;

writeln('Jumlah deret 1.9999 diperoleh Jika Banyak suku = ',i);

end.


 

Program Menghitung_Koefisien_Persamaan_Regresi;

uses wincrt;

type data=array[1..100]of integer;

var

x,y :data;

N,d,j :Integer;

ratax,ratay :real;

SXY,SX,SX2,SY:real;

A,B :real;

Procedure Regressi;

begin

N:=0;

repeat

write('Nilai data x= ');readln(d);

if d<>0 then begin

N:=N+1;

x[N]:=d;

write('Nilai data y = ');readln(y[N]);

end;

until d=0;

SXY:=0; SX:=0; SX2:=0; SY:=0;

for j:= 1 to N do

begin

SXY:=SXY+x[j]*y[j];

SX:=SX+x[j];

SY:=SY+y[j];

SX2:=SX2+x[j]*x[j];

end;

A:=((SX2-(SX)*SY))/N;

A:=A/(SX2-(SX*SX)/N);

ratay:=SY/N;

ratax:=SX/N;

B:=ratay-A*rataX;

writeln('N= ',N);

writeln('Jumlah x= ',SX:0:2);

writeln('Jumlah y= ',SY:0:2);

writeln('Jumlah x dikali y =',SXY:0:2);

writeln('Jumlah x kwadrat=',SX2:0:2);

writeln('Rata-rata x=',ratax:0:2);

writeln('Rata-rata y=',ratay:0:2);

writeln('Y= ', A:0:2,'X- ', B:0:2);

end;

begin

regressi;

end.

*note:untuk berhenti memasukkan data, masukkan karakter '0' pada data x


 

program mendeteksi_bil_prima;

uses wincrt;

var

bil,i,x :word;

prima :boolean;

batas :integer;

lagi :char;

begin

repeat

clrscr;

write('Masukkan bilangan :');read(bil);

batas:=round(sqrt(bil))+1;

prima:=true;

if (bil=2 ) or (bil=3) then

prima:=true

else

for i:= 2 to batas do

if bil mod i = 0 then

prima:=false;

if prima = true then

writeln(bil,' Adalah prima')

else

writeln(bil,' Bukan prima');

write('Lagi......[Y/T]');lagi:=upcase(readkey);

writeln(lagi);

until lagi <> 'Y';

end.

»»  READMORE...

Program Pascal Terapan dengan Array

Program Menghitung_Banyak_Vokal ;

uses wincrt;

var

nama :string;

i,vok :integer;

BEGIN

clrscr;

vok:=0;

write('Banyak Vokal dalam kalimat berikut =');readln(nama);

for i:=1 to length(nama) do

case nama[i] of

'A','a','U','u','I','i','E','e','O','o':vok:=vok+1;

end;

writeln('Jumlah Vokalnya :',vok);

READLN;

END.


 

program banyak_huruf_dalam_kalimat;

uses wincrt;

var n:array[1..26] of integer;

i,j:integer;

kata : String;

begin

for i:=1 to 26 do n[i]:=0;

write('Ketikkan sebuah kalimat : ');readln(kata);

for i:=1 to length(kata) do

for j:=1 to 26 do

if ord(upcase(kata[i]))=64+j then

inc(n[j]);

for i:=1 to 13 do

writeln(chr(64+2*i-1),' = ',n[2*i-1],' ',chr(64+2*i),' =

',n[2*i]);

end.


 

Program menghitung_sigma_data;

uses wincrt;

var

x:array[1..10] of integer;

i,jum,n : integer;

begin

clrscr;

jum:=0;

write('Masukkan data =');readln(n);

for i:= 1 to n do

begin

write('Data ke-',i ,'=');readln(x[i]);

jum:=jum+x[i];

end;

writeln('Jumlah = ',jum);

end.


 

Program mencari_suku_ke_i_deret_fibonacci;

uses wincrt;

var

x:array[1..100] of integer;

i,n:integer;

lagi:char;

function fibo(n:integer):integer;

begin

if (n = 1) or (n=2) then

fibo:=1

else

fibo:=fibo(n-1)+fibo(n-2);

end;

begin

repeat

write('Suku deret Fibonacci keberapa :');readln(n);

writeln('Suku ke ', n,' =', fibo(n));

write('Lagi ......[Y/T]');lagi:=upcase(readkey);

writeln(lagi);

until lagi <> 'Y';

end.


 

program mencari_mean_data;

uses wincrt;

var

x:array[1..10] of integer;

i,n,jum,njum:integer;

rata:real;

begin

clrscr;

jum:=0;

write('Masukkan banyak data =');readln(n);

for i:= 1 to n do

begin

write('Masukkan data ke-',i, '=');readln(x[i]);

jum:=jum+x[i];

njum:=njum+1;

Rata:=jum/njum;

end;

writeln('Jumlah = ',jum);

writeln('Rata-rata = ',rata:0:2);

end.


 

Program Nilai_Maximum_Minimum;

uses wincrt;

var a : array[1..100] of integer;

b,c : integer; jumlah:longint;

min,max : real;

begin

writeln('Mencari Nilai Maximum dan Minimum');

writeln('=================================');

write('Banyak Data yang akan diinput : ');read(b);

jumlah:=0;

for c:=1 to b do

begin

write('Masukkan data ke-',c,' = ');readln(a[c]);

jumlah:=jumlah+a[c];end;

begin

max:=a[1];

min:=a[1];

for c:=2 to b do

if a[c]>max then max:=a[c]

else if a[c]<min then min:=a[c];{mencari nilai maximum dan

minimum}

writeln('');

writeln('Nilai Minimum = ',min:0:2);

writeln('Nilai Maximum = ',max:0:2);

readln;

end;

end.

»»  READMORE...

Program Pascal Menggunakan Array

Mencari Deret fibonacci dengan Array

1 1 2 3 5 8 ...



program fibonacci;

uses wincrt;

var

i,n: integer;

deret: array[1..100] of integer;

begin

clrscr;

write('banyaknya suku =');

readln(n);

writeln;

for i := 1 to n do

begin

if (i = 1) or (i = 2) then

begin

deret[i]:=1;

write(deret[i],' ');

end

else

begin

deret[i]:=deret[i-2]+deret[i-1];

write(deret[i], ' ');

end;

end;    

end.



Membaca Karakter dari Belakang

program balik_nama;
uses wincrt;
Var
I : word ;
Nama : string [255] ;
Begin
Write ( 'Nama Anda ?' ) ; readln ( Nama ) ;
Writeln ;
Writeln ( 'Nama Anda jika dibaca terbalik adalah : ' );
For I := ord (Nama [0] ) downto 1 do
Write (Nama [I] ) ;
End.


Mencari Deret Segitiga Pascal dengan Array

program deret_segitiga_pascal;
uses wincrt;

var num:array[1..100] of longint;

i,j,n,batas:integer;

begin

writeln('deret segitiga pascal');

write('mencari deret segitiga pascal hingga pangkat ke n=');readln(n);

num[1]:=1;

writeln(1);

for i:=1 to n do

begin

batas:=(i+1) div 2;

if not odd(i) then

num[batas+1]:=num[batas]*2;

for j:=batas downto 2 do

num[j]:=num[j]+num[j-1];

for j:=1 to batas do

write(num[j],' ');

if not odd(i) then write(num[batas+1],' ');

for j:=batas downto 1 do

write(num[j],' ');

writeln;

end;

end.

end;    

end.


Mencari Bilangan Prima hingga bilangan n

Program Bilangan_Prima;

Uses wincrt;

Var

Prima : Array[1..100] of Integer;

i,j,n : Integer;

bil : Integer;

Begin

write ('mencari bilangan prima hingga n =');

readln (n);

ClrScr;

For i := 2 to n Do

Begin

Prima[i]:=i;

For j:= 2 to i-1 Do

Begin

bil := (i mod j);

If bil = 0 then Prima[i]:=0;

End;

If Prima[i]<> 0 Then Write(Prima[i],' ');

End;

End.



Mencari Karakter ke-i

Program mencari_karakter_ke_i;

Uses wincrt;

Var

Nama : string;

i : Integer;

Begin

write ('nama Anda: ');

readln (nama);

For i:= 1 to Length(nama) Do

Writeln('karakter ke-',i,' dari ',Nama,'= ',Nama[i]);

End.

Mencari Banyaknya Karakter

Program Hitung_Huruf;
Uses WinCrt;
Var
Teks : string;
banyak : array['A'..'Z'] of byte;
i : byte;
begin
Write('Masukkan Suatu Kalimat :');
Readln(Teks);
for i:=1 to length(teks) do
banyak[upcase(teks[i])]:=banyak[upcase(teks[i])]+1;
for i:=1 to 26 do
if (banyak[upcase(chr(64+i))]<>0) then
writeln(upcase(chr(64+i)),' banyaknya
=',banyak[upcase(chr(64+i))]);
end.
»»  READMORE...

Program Pascal Konversi Bilangan dan Nilai

Program Konversi_Bilangan_Desimal_ke_Biner;

uses wincrt;

var

des,rita :integer;

bin :string;

lagi :char;

begin

repeat

clrscr;

write('Masukkan bilangan Desimal =');read(des);

rita:=des;

bin:=' ';

repeat

if(des mod 2 =0) then

bin:='0'+bin

else

bin:='1'+bin;

des:=des div 2;

until des = 0;

writeln(' (',rita,') desimal =' ,bin,' (biner)');

write('Lagi ...... [Y/T]');lagi:=upcase(readkey);

writeln(lagi);

until lagi <> 'Y';

end.


 

Program Konversi_Bilangan_Desimal_ke_Heksadesimal;

Uses WinCrt;

Var

des,desi : integer;

Heks,temp : String;

Begin

Write('Masukkan Suatu Bilangan Desimal :');Readln(des);

desi:=des;

Heks:='';

repeat

if (des mod 16 < 10) then Heks:=chr(48+ des mod 16)+Heks

else Heks:=chr(55+ des mod 16)+Heks;

des:=des div 16;

writeln(des:4,Heks:20);

until des=0;

writeln('(',desi,') desimal =',Heks,' (Heksadesimal)');

end.


 

Program konversi_bilangan_heksadesimal_ke_desimal;

Uses WinCrt;

Var

des,desi : string;

i, z,j,jlh,jlh1,a,z1,a1,K : longint;

x,y : integer;

Begin

Write('Masukkan Bilangan Heksadesimal :');Readln(des);

desi:=des;

writeln(des);

jlh:=0;

K:=0;

for i:= length(des) downto 1 do

begin

if (des[i] in ['A','B','C','D','E','F']) THEN

begin

a:=ord(des[i])-55;

a1:=i-1;

if i= length(des) then z:=a

else

begin

z1:=1;

K:=K+1;

for j:=1 to K do

z1:=z1*16;

z:=z1*a;

writeln(z1);

end;

end

else

begin

val(des[i],x,y);

if i= length(des) then z:=x

else BEGIN

K:=K+1;

if x=0 then z:=0

else

begin

z1:=1;

for j:=1 to K do

z1:=z1*16;

z:=x*z1;

end;

end; END;

Jlh:=jlh+z

end;

writeln('(',desi,') Heksadesimal =',jlh,' (desimal)');

end.


 

Program konversi_bilangan_desimal_ke_romawi;

Uses WinCrt;

Const

Rom : array [1..13] of String =

('M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I');

Des : array [1..13] of integer =

(1000,900,500,400,100,90,50,40,10,9,5,4,1);

Var

Bil,i,Bil1 : Integer;

Roma : String;

Begin

Write('Masukkan Suatu Bilangan [1..3999] : ');

Readln(Bil);

Bil1 := Bil;

if (Bil > 0) and (Bil < 4000) then

Begin

For i:=1 to 13 do

Begin

while (Bil >= Des[i]) do

Begin

Bil := Bil - Des[i];

Roma := Roma + Rom[i]

End;

End;

Write('Desimal ',Bil1,' Romawinya ',Roma)

end

else

Writeln('Tidak Diketahui Simbol Romawinya.....');

End.


 

Program Koversi_nilai;

uses wincrt;

var

nilai :integer;

lagi :char;

begin

repeat

clrscr;

Write('Masukkan nilai :');readln(nilai);

case nilai of

81..100 :writeln('A');

61..80 :writeln('B');

41..60 :writeln('C');

21..40 :writeln('D');

0..20 :writeln('E');

else

writeln('Salah nilai');

end;

write('Lagi.....[Y/T]');lagi:=upcase(readkey);

writeln(lagi);

until lagi <> 'Y';

end.

»»  READMORE...

Program Pascal dengan Loopingan

program faktorial;

uses wincrt;

var

faktor :real;

i,n :integer;

begin

write('Masukkan bilangan n =');readln(n);

faktor:=1;

for i:= 2 to n do{Menghitung n faktorial}

faktor:=faktor*i;

writeln(n,' Faktorial = ',faktor:0:0);

end.


 


 

program pangkat;

Uses Wincrt;

Function Pkt(X :real;n : integer):real;

var t : real;

m : integer;

Begin

m:=abs(n);

if (x<>0) and (n=0) then pkt:=1

else if n >0 then

pkt:=x*pkt(x,n-1)

else if (n < 0) then pkt := 1/(x*pkt(x,m-1));

end;

var x : real;

n : integer;

begin

write('Bilangan yang dipangkatkan : ');readln(x);

write('Bilangan pangkat : ');readln(n);

writeln(x:5:2,' Pangkat ',n,' = ',Pkt(x,n):8:3);

end.


 

program kalkulator;

uses wincrt;

var n1,n2,p,h:real;

begin

writeln('Program Kalkulator');

writeln('==================');

write('Masukkan Nilai Pertama= ');readln(n1);

write('Masukkan Nilai Kedua= ');readln(n2);

writeln('Pilih Operasi:');

writeln('1 --> Perkalian');

writeln('2 --> Pembagian');

writeln('3 --> Penjumlahan');

writeln('4 --> Pengurangan');

write('Pilihan anda [1..4]= ');readln(p);

if p=1 then h:=n1*n2;

if p=2 then h:=n1/n2;

if p=3 then h:=n1+n2;

if p=4 then h:=n1-n2;

writeln('Hasil Operasinya Adalah= ',h:0:2);

readln;

end.

»»  READMORE...

Program Pascal Sederhana

Program Menghitung_Luas;

uses wincrt;

Var P, L, Luas :Real;

Begin

writeln('Program Menghitung Luas Persegi Panjang');

writeln('=======================================');

write('Panjang = ');

readln(P);

write('Lebar = ');

readln(L);

writeln;

Luas:=P*L;

writeln('Jadi Luasnya=',Luas:0:2);

readln;

End.


 

Program Menghitung_Volume_Luas_Permukaan_Bola;

uses wincrt;

Var Luas,R,V :Real;

Begin

writeln('Program Menghitung_Volume_Luas_Permukaan_Bola');

write('Jari-jari = '); {Masukan Nilai Jari2}

readln(R);

Luas:=4*pi*R*R;

V:=4/3*pi*R*R*R;

writeln('Jadi Volumenya = ',V:0:2);

writeln('Jadi Luasnya = ',Luas:0:2);

readln;

End.


 

program menentukan_positif_negatif;

uses wincrt;

var pos,neg,data : integer;

Begin

Repeat

write('Data = ');readln(data);

if (data>0) then inc(pos);

if (data<0) then inc(neg);

until (data=0);

Writeln('Nilai Positifnya = ',pos);

Writeln('Nilai negatifnya = ',neg);

end.

»»  READMORE...

Materi Array

A. Array

Array (larik) menyatakan tipe data terstruktur yang berupa kumpulan elemen-elemen

dengan tipe data yang sama. Tipe Array dapat ditulis sebagai berikut:

Array [Indeks_1,…,Indeks_n] of Tipe_Dasar


 

Array Dimensi Satu

Array berdimensi satu merupakan array dengan ciri memiliki tipe indeks hanya satu buah.

Contoh deklarasi variabel dengan tipe array berdimensi satu:

VAR X : ARRAY[1..10] of Integer;

Untuk menyimpan suatu nilai kedalam lokasi array, dapat dilakukan dengan instruksi :

D[i]:=nilai;

atau

READLN(D[i]);

Sedangkan untuk menampilkan nilai yang ada di salah satu elemen array dapat dengan cara:

WRITELN(D[i]); dimana i adalah indeks elemen array


 

Array Dimensi Dua

Array berdimensi dua merupakan array dengan ciri memiliki tipe indeks dua buah. Contoh

deklarasi variabel dengan tipe array berdimensi dua:

VAR Y : ARRAY[1..5,1..10] of Integer;

Untuk menyimpan suatu nilai kedalam lokasi array, dapat dilakukan dengan instruksi :

D[i,j]:=nilai;

atau

READLN(D[i,j]);

Sedangkan untuk menampilkan nilai yang ada di salah satu elemen array dapat dengan

cara:

WRITELN(D[i,j]); dimana i,j adalah indeks elemen array


 

Contoh :

1. Menghitung rata-rata dari n buah data

PROGRAM RATA2;

USES WINCRT;

VAR

I,N :INTEGER;

RATA:REAL;

DATA:ARRAY [1..50] OF REAL;

BEGIN

WRITE ('BANYAKNYA DATA=');

READLN(N);

FOR I:=1 TO N DO

BEGIN

READLN(DATA[I]);

END;

RATA:=0;

FOR I:=1 TO N DO

BEGIN

RATA:=RATA+DATA[I];

END;

WRITELN('RATA-RATA=',RATA/N);

END.


 

»»  READMORE...

Materi Pernyataan Perulangan

Pernyataan perulangan adalah pernyataan yang akan menjalankan pernyataan yang

mengikutinya secara berulang sampai syarat tertertentu terpenuhi. Ada 3 buah pernyataan

perulangan, yaitu FOR, WHILE dan REPEAT.


 

A. Statement FOR

Statement FOR adalah suatu perintah yang berfungsi untuk melakukan proses

pengulangan, dimana jumlah pengulangannya sudah diketahui.

Bentuk dari statement FOR adalah:

FOR {Variabel} := {Nilai Awal} TO {Nilai Akhir} DO

BEGIN

{Statement 1}

{Statement 2}

....

{Statement n}

END;

Jika Nilai Awal < Nilai Akhir gunakan statement FOR TO DO. Sedangkan jika Nilai

Awal > Nilai Akhir gunakan statement FOR DOWNTO DO.

Contoh :

Ingin dibuat program untuk menampilkan deret berikut:

1,3,5,7,.......suku ke-n


 

PROGRAM DERET;

USES WINCRT;

VAR I, N:INTEGER;

BEGIN

READLN(N);

FOR I:=1 TO N DO

WRITE(2*I-1, ' ');

END.


 

Contoh :

Ingin dibuat program untuk menampilkan huruf 'M' hingga 'A':

PROGRAM HURUF;

USES WINCRT;

VAR I:CHAR;

BEGIN

FOR I:='M' DOWNTO 'A' DO

WRITELN(I);

END.


 

B. Statement FOR Bersarang

Untuk menangani masalah tertentu, ada kemungkinan statement FOR yang digunakan

lebih dari satu dan statement FOR yang satu dapat berada didalam statement FOR yang

lain. Bentuk yang seperti ini disebut FOR Bersarang (nested FOR)

Contoh :

Ingin dibuat program untuk menampilkan bentuk seperti berikut ini:

*

**

***

****


 

PROGRAM TAMPIL;

USES WINCRT;

VAR

I,J:INTEGER;

BEGIN

FOR I:=1 TO 4 DO

BEGIN

FOR J:=1 TO I DO

WRITE('*');

WRITELN;

END;

END.


 

C. Statement WHILE

Statement WHILE adalah suatu perintah yang berfungsi untuk melakukan proses

pengulangan, dimana pengulangan akan terus dilakukan jika kondisi tertentu dipenuhi.

Jika banyaknya pengulangan diketahui tapi kenaikan atau penurunan pengulangan

tidak sebesar satu, statement IF tidak cocok untuk digunakan. Sebagai alternatif dapat

digunakan statement WHILE atau REPEAT. Sedangkan jika banyaknya pengulangan

tidak diketahui maka statement IF tidak dapat digunakan, sehingga harus digunakan

statement WHILE atau REPEAT. Bentuk dari statement WHILE adalah:

WHILE {Kondisi} DO

BEGIN

{Statement 1}

{Statement 2}

....

{Statement n}

END;

Contoh :

Ingin dibuat program untuk menampilkan deret berikut:

1,3,5,7,.......suku ke-n


 

PROGRAM DERET;

USES WINCRT;

VAR

N,I : INTEGER;

BEGIN

READLN(N);

I:=1;

WHILE I <= N DO

BEGIN

WRITE(2*I-1, ' ');

I:=I+1;

END;

END.


 

D. Statement WHILE untuk Jumlah Pengulangan Yang Diketahui

Statement WHILE dapat digunakan untuk pengulangan dengan jumlah pengulangan yang

diketahui. Selain untuk pengulangan dengan kenaikan dan penurunan sebesar 1, statement

WHILE dapat digunakan juga pada pengulangan dengan kenaikan dan penurunan tidak

sebesar 1.

Contoh:

Program untuk pengulangan dengan kenaikan sebesar 1 atau menggantikan perintah:

For i:=1 to 20 do writeln(i)

Program Ulang;

Uses Wincrt;

Var

i:integer;

Begin

I:=1; {nilai awal}

While i<= 20 do

Begin

Writeln(i);

i:=i+1; {menaikkan nilai i}

End;

End.

Yang Perlu Diingat !

• Ada nilai awal terhadap variabel penghitung, yaitu: i:=1

• Ada pertambahan nilai terhadap variabel penghitung, yaitu: i:=i+1

• Ada kondisi yang menyebabkan pengulangan berhenti, yaitu: While i<= 20 do


 

Contoh:

Program untuk pengulangan dengan penurunan sebesar 1 atau menggantikan perintah:

For i:=20 downto 1 do writeln(i)

Program Ulang;

Uses Wincrt;

Var

i:integer;

Begin

I:=20; {nilai awal}

While i>0 do {program akan berhenti jika sampai pada nilai 0}

Begin

Writeln(i);

i:=i-1; {menurunkan nilai i}

End;

End.


 

Contoh:

Program untuk menampilkan bilangan real dari 1 sampai 10 dengan kenaikan sebesar 0.5.

Program Ulang;

Uses Wincrt;

Var

i:real;

Begin

I:=1; {nilai awal}

While i<= 10 do

Begin

Writeln(i:5:2); {2 digit dibelakang desimal}

i:=i+0.5; {menaikkan nilai i}

End;

End.


 

F. Statement WHILE untuk Jumlah Pengulangan Yang Tidak Diketahui

Dalam proses pengulangan selalu ada kondisi yang mengkontrol pengulangan tersebut

untuk berhenti. Kontrol pengulangan tidak selalu melibatkan variabel penghitung.

Contoh:

Program untuk menampilkan karakter yang dimasukkan lewat keyboard secara berulangulang

hingga karakter '*' dimasukkan.

Program Ulang;

Uses Wincrt;

Var

x:char;

Begin

x:='a';

While x <> '*' do {program hanya akan berhenti jika kita masukkan karakter'*'}

Begin

Writeln('Masukkan bilangan: ');

Readln (x);

End;

End.


 

G. Statement WHILE Bersarang (Nested WHILE)

Sama halnya dengan statement FOR, untuk menangani masalah tertentu, ada kemungkinan

statement WHILE yang digunakan lebih dari satu dan statement WHILE yang satu dapat

berada didalam statement WHILE yang lain.

Contoh :

Ingin dibuat program untuk menampilkan bentuk seperti berikut ini:

*

**

***

****

…………


 

PROGRAM TAMPIL;

USES WINCRT;

VAR

I,J,B,K:INTEGER;

BEGIN

WRITE ('BANYAKNYA BARIS=');

READLN(B);

I:=1;

WHILE I <=B DO {program berjalan sesuai dengan banyaknya baris yang kita inginkan}

BEGIN

J:=1;

WHILE J <=I DO

BEGIN

WRITE('*');

J:=J+1;

END;

WRITELN;

I:=I+1;

END;

END.


 

H. Statement REPEAT

Statement REPEAT adalah suatu perintah yang berfungsi untuk melakukan proses

pengulangan, dimana pengulangan akan berhenti jika kondisi yang tertulis di akhir

pengulangan dipenuhi. Sintak dari statement REPEAT adalah:

REPEAT

{Statement 1}

{Statement 2}

....

{Statement n}

UNTIL {Kondisi};

Contoh :

Ingin dibuat program untuk menampilkan deret berikut:

1,3,5,7,.......suku ke-n


 

PROGRAM DERET;

USES WINCRT;

VAR

N,I:INTEGER;

BEGIN

READLN(N);

I:=1; {ada nilai awal yg harus diberikan}

REPEAT

WRITE(2*I-1, ' ');

I:=I+1;

UNTIL I > N;

END.


 

I. Statement REPEAT untuk Jumlah Pengulangan Yang Diketahui

Statement REPEAT dapat digunakan untuk pengulangan dengan jumlah pengulangan yang

diketahui dan nilai kenaikan atau penurunan sebesar nilai tertentu (sebesar 1 atau tidak

sebesar 1).

Contoh:

Program untuk pengulangan dengan kenaikan sebesar 1 atau menggantikan

perintah:

For i:=1 to 20 do writeln(i)

Program Ulang;

Uses Wincrt;

Var

i:integer;

Begin

i:=1; {nilai awal}

Repeat

Writeln(i);

i:=i+1; {menaikkan nilai i}

Until i > 20;

End.


 

J. Statement REPEAT untuk Jumlah Pengulangan Yang Tidak Diketahui

Jika dalam proses pengulangan tidak diketahui banyaknya pengulangan, maka dapat

digunakan statement WHILE atau REPEAT.

Contoh:

Program untuk menampilkan karakter yang dimasukkan lewat keyboard secara

berulang-ulang hingga karakter '*' dimasukkan.

Program Ulang;

Uses Wincrt;

Var

x:char;

Begin

Repeat

Writel('Masukkan bilangan: ');

Readln (x);

Until x = '*';

End.


 

K. Statement REPEAT Bersarang (Nested REPEAT)

Sama halnya dengan statement FOR dan WHILE, ada kemungkinan statement REPEAT

yang digunakan lebih dari satu dan statement REPEAT yang satu dapat berada didalam

statement REPEAT yang lain.

Contoh :

Ingin dibuat program untuk menampilkan bentuk seperti berikut ini:

*

**

***

****

PROGRAM TAMPIL;

USES WINCRT;

VAR

I,J:INTEGER;

BEGIN

I:=1; {baik loopingan I maupun J memerlukan nilai awal}

REPEAT

J:=1;

REPEAT

WRITE('*');

J:=J+1;

UNTIL J > I ;

WRITELN;

I:=I+1;

UNTIL I > 4;

END.

»»  READMORE...

Materi Pernyataan Bersyarat

Pernyataan bersyarat adalah pernyataan yang akan menjalankan pernyataan yang
mengikutinya sesuai dengan syarat tertertentu. Ada 2 buah pernyataan bersyarat,
yaitu IF dan CASE.


A. Pernyataan IF

Bentuk pernyataan IF:
IF <syarat logika> THEN <Pernyataan>;

atau
IF <syarat logika> THEN <Pernyataan-1>
ELSE <Pernyataan-2> ;

Jika syarat logika bernilai Benar maka yang akan dijalankan adalah pernyataan yang
mengikuti THEN, dan sebaliknya jika syarat logika bernilai Salah maka yang akan
dijalankan adalah pernyataan yang mengikuti ELSE. Jika pernyataan yang mengikuti
THEN atau ELSE lebih dari satu maka harus diawali oleh Begin dan diakhiri oleh End.
Statement End sebelum ELSE tidak boleh ada tanda titik koma (;).
IF <syarat logika> THEN begin

<Pernyataan-11>;
<Pernyataan-12>;
.
.
<Pernyataan-1n>;
end

ELSE begin

<Pernyataan-21>;
<Pernyataan-22>;
.
.
<Pernyataan-2m>;
end;

Contoh :
Program untuk menentukan apakah suatu bilangan itu positif atau negatif.
Program bilangan;
Uses wincrt;
Var bil :integer;
Begin
Readln(bil);
If bil >= 0 Then writeln('Positif')
Else writeln ('Negatif')
End.


B. Pernyataan IF Bersarang (nested)

Jika ada dua pernyataan IF atau lebih, dimana pernyataan IF yang satu berada di dalam
pernyataan IF yang lain, maka pernyataan tersebut disebut Bersarang (nested).
Contoh bentuk pernyat`an IF Bersarang:
IF <syarat logika-1> THEN <Pernyataan-1>
ELSE IF <syarat logika-2> THEN <Pernyataan-2>
ELSE IF <syarat logika-3> THEN <Pernyataan-3>
ElSE <Pernyataan-4>;

Contoh :
Program untuk menentukan bonus pegawai berdasarkan total penjualan. Kriteria bonus
adalah sebagai berikut:
Total Penjualan (Rp)Bonus yang Didapat (Rp)
Total ≥ 500.00030.000
250.000≤Total<500.00020.000
50.000≤Total<250.00010.000
Total < 50.0000


Program bonus;
Uses wincrt;
Var Total :real;
Begin
Readln(Total);
If Total >= 500000 Then writeln('Bonus = 30.000')
Else If Total >= 250000 Then writeln('Bonus = 20.000')
Else If Total >= 50000 Then writeln('Bonus = 10.000')
Else writeln('Tidak Ada Bonus')
End.


C. Pernyataan CASE

Bentuk pernyataan CASE:
CASE <variabel-pemilih> OF
<daftar-label-1> : <Pernyataan-1>;
<daftar-label-2> : <Pernyataan-2>;
.
.
<daftar-label-n> : <Pernyataan-n>;
ELSE <Pernyataan-lain> ;
END;

Variabel pemilih tidak boleh bertipe real. Pernyataan yang akan dijalankan sesuai
dengan daftar-label yang memuat nilai variabel pemilih. Jika nilai dari variabel pemilih
tidak ada dalam semua daftar label, maka pernyataan yang akan dijalankan adalah
pernyataan yang mengikuti ELSE. ELSE dalam pernyataan CASE boleh tidak ada.
Sama halnya dengan pernyataan IF, Jika pernyataan yang mengikuti daftar-label lebih
dari satu maka harus diawali oleh Begin dan diakhiri oleh End.


Contoh :
1. Program untuk menentukan apakah suatu Character (huruf) yang kita masukkan
adalah huruf vokal atau bukan..
PROGRAM HURUF;
USES WINCRT;
VAR DATA:CHAR;
BEGIN
READLN(DATA);
CASE DATA OF
'A','I','U','E','O' :writeln('Huruf Besar Vokal');
'a','i','u','e','o' :writeln('Huruf Kecil Vokal');
ELSE writeln ('Bukan huruf Vokal');
END;
END.


2. Program untuk menentukan apakah suatu Character yang kita masukkan adalah
huruf atau angka..
PROGRAM HURUF;
USES WINCRT;
VAR DATA:CHAR;
BEGIN
READLN(DATA);
CASE DATA OF
'A'..'Z' :writeln('Huruf Besar');
'a'..'z' :writeln('Huruf Kecil');
'0'..'9' :writeln ('Angka');
END;
END.
»»  READMORE...