Selasa, 15 Desember 2009

REKURSI

REKURSI

Merupakan prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Tidak semua bahasa menyediakan kemampuan untuk melakukan proses recursion, tetapi pascal dapat. Walaupun proses ini merupakan algoritma yang baik, tetapi membutuhkan banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkannya.
Contoh
1.Program Latihan_Rekursi_2;
uses wincrt;
Procedure Rekursi(a:integer);
var
y:integer;
begin
If a<10 then
begin
writeln('Pascal');
writeln;
a:=a+1;
Rekursi(a);
end;
end;

var
x:integer;
begin
writeln('Berapa batas awalnya?');readln(x);
Rekursi(x);
end.

2.program rekursi;
Var
I : integer ;
Procedure Rekursi ;
Begin
Writeln ( ‘Hallo saya Pascal ‘ ) ;
I : = I + 1 ;
If I < 10 Then
Rekursi ;
End ;
Begin
I : = 1 ;
Rekursi ;
End.
3.Program Faktorial;
uses wincrt;
function Faktorial(a:integer):longint;
begin
if (A=1)then
Faktorial:=1
else
Faktorial:=a*faktorial(a-1);
end;
var
x:integer;
begin
writeln('Faktorial sequence');
writeln;
write('Berapa Faktorial ?');readln(x);
writeln(x ,' faktorial ',' = ',faktorial(x));
end.

Program Fibonacci;
uses wincrt;
Var fibo: array [1..10] of integer;
A,i,hasil:integer;
begin
clrscr;
write('Masukkan suku keberapa dalam deret fibonacci : ');readln(A);
if (A=1) or (A=2) then hasil:=1 else
begin
fibo[1]:=1; fibo[2]:=1;
for i:=3 to A do
begin
fibo[i]:=fibo[i-1]+fibo[i-2];
hasil:=fibo[i];
end;
end;
writeln;
for i:=1 to A do
write(fibo[i],' ');
writeln;
writeln('Suku Ke-',A,' dari deret fibonacci adalah ',hasil);
end.

4.Program pangkat;
uses wincrt;
var A,x,i,hasil:longint;
begin
write('masukkan bilangan yang akan dipangkatkan = ');readln(A);
write('masukkan bilangan pangkat = ');readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln('hasil dari ',A,' pangkat ',x,' adalah ',hasil);
end.

SUB PROGRAM

SUB PROGRAM

Subprogram digunakan untuk:
Penghematan kode program
Menyederhanakan persoalan dengan memecahnya menjadi sub-persoalan.
Membagi program menjadi elemen-elemen yang lebih kecil.
Diperlukan mekanisme pemanggilan subprogram dari program utama.

Subprogram dalam turbo pascal ada 2 macam:

1.Fungsi

Semua fungsi mempunyai sifat memberikan nilai (disebut hasil fungsi) pada saat dipanggil.
Contoh penggunaan fungsi yang benar adalah sebagai berikut:
X:=sqrt(100)
Sqrt berkedudukan sebagai operand dari operator penugasan (:=).
Suatu fungsi umumnya mempunyai argument atau parameter. Parameter ditulis di dalam tanda kurung. Namun fungsi bisa saja tidak memiliki parameter, contohnya dalah pi dan random.
Bentuk deklarasinya adalah sebagai berikut:

FUNCTION nama_fungsi (daftar_parameter):Tipe;
Bagian_deklarasi
Bagian_pernyataan;

Contoh judul deklarasi judul fungsi:
FUNCTION Tambah (A:real; B:real):Real;
Contoh ini menunjukkan bahwa fungsi tambah mempunyai dua buah parameter yang masing-masing bertipe real. Selain itu, hasil fungsi juga bertipe real.

Parameter Formal dan Aktual, Variabel Lokal dan Global

Parameter formal (terdapat pada subprogram): parameter yang terdapat pada pendeklarasian judul subprogram, baik pada fungsi maupun prosedur.
Contoh: FUNCTION Tambah (A, B:Real)
A, B merupakan parameter formal.

Parameter aktual (terdapat pada program utama): parameter yang terdapat pada pemanggilan fungsi atau prosedur.
Contoh: Tambah (10,30)
10 dan 30 merupakan parameter aktual.

2.Prosedur

Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Diawali dengan kata cadangan “Procedure” didalam bagian deklarasi prosedur. Prosedur banyak digunakan pada program yang terstruktur karena :

- merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.

- Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

Bentuk Umum :
PROGRAM judul_program ;
PROCEDURE judul_prosedur ;
Begin
Statement prosedur ;



End ;
Begin
Statement program utama ;



end.
2.1 Parameter Dalam Prosedur
Nilai didalam modul program Pascal sifatnya adalah local, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.
Contoh program :
Procedure Tanya_hitung ;
Var
X, Y : real ;
Begin
Write (‘Nilai X =’) ;
Readln (X) ;
Y : = X * X ;
End ;
Begin
Tanya_hitung ;
Writeln (‘Nilai Y =’, Y : 6 : 2 ) ;
End.
Keterangan contoh program :
Bila program dikompilasi, akan di deteksi kesalahan oleh compiler, karena variable Y yang sifatnya local di procedure Tanya_hitung digunakan pada program utama.
Agar nilai-nilai variable dapat digunakan di modul lainnya yang membutuhkan, maka dapat dilakukan dengan beberapa cara, yaitu :

- Dibuat bersifat global.
Harus di deklarasikan diatas modul yang akan menggunakannya.
Contoh :
Procedure kesatu ;
Begin

End ;
Var
A, B : word ;
Procedure kedua ;
Begin

End ;
Procedure ketiga ;
Begin

End ;
Begin { program utama }

End.
Keterangan contoh :
Variabel A dan B dapat digunakan untuk modul Procedure kedua dan ketiga serta modul/program utama, tetapi tidak bersifat global untuk procedure kesatu.

- Dikirimkan sebagai parameter ke modul yang membutuhkannya.
Parameter yang dikirmkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan parameter passing. Parameter nyata dan parameter formal harus dengan tipe yang sama. Didalam pascal, parameter dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).


2.1.1 Pengiriman Parameter Secara Nilai

Bila parameter dikirimkan secara nilai nilai, parameter formal di prosedur akan berisi nilai yang dikirmkan yang kemudian bersifat local di prosedur. Bila nilai parameter formal di prosedur berubah, tidak akan mempengaruhi nilai parameter nyata ( nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak dikirimkan balik dari parameter formal ke parameter nyata.
Parameter – parameter yang digunakan dengan pengiriman secara nilai ini disebut dengan parameter nilai ( value parameter ).
Contoh program :
Procedure Hitung(A, B : integer ) ;
Var
C : integer ;
Begin
C : = A + B ;
Writeln (‘Nilai C =’, C ) ;
End ;
Var
X, Y : integer ;
Begin
Write ( ‘Nilai X =’ ) ; readln ( X ) ;
Write ( ‘Nilai Y =’ ) ; readln ( Y ) ;
Hitung ( X, Y ) ;
End.
Output program :
Nilai X = 2
Nilai Y = 3
Nilai C = 5
Penjelasan program :

- prosedur dimulai dengan deklarasi prosedur dengan judul prosedur hitung. Variable A dan B adalah parameter formal dan integer adalah tipe parameternya.

- Variable local yang hanya dipergunakan di prosedur dan tidak termasuk parameter formal (parameter nilai), harus didefinisikan sendiri, yaitu : variable C

- Hubungan antara parameter formal di prosedur dengan parameter nyata di modul utama adalah : nilai parameter nyata X dan Y di modul utama dikirimkan ke parameter formal A dan B di prosedur. Dengan demikian nilai parameter A dan B diprosedur akan berisi nilai yang sama dengan parameter X dan Y di modul utama.

2.1.2 Pengiriman Parameter Secara Acuan
Bila pengiriman parameter secara acuan, maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter nyata. Parameter-parameter ini disebut dengan variable parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, sebagai berikut :
PROCEDURE hitung (VAR A, B, C : integer ) ;
Contoh program :
Procedure Hitung ( var A, B, C : integer ) ;
Begin
C : = A + B ;
End ;
Var
X, Y, Z : integer ;
Begin
X : = 2 ; Y : = 3 ;
Hitung ( X, Y, Z ) ;
Writeln (‘ X = ‘, X , ‘ Y = ‘ , Y, ‘ Z = ‘ , Z ) ;
End.
Output program :
X = 2 Y = 3 Z = 5
Penjelasan program :

- pengiriman parameter secara acuan merupakan pengiriman dua arah, bolak-balik, sehingga perubahan nilai di parameter formal akan mempengaruhi nilai parameter nyata juga. Pada contoh, nilai parameter nyata Z akan mengikuti perubahan nilai dari parameter formal C.

2.1.3 Pengiriman Parameter Sebagian Secara Nilai, Sebagian Acuan
Pengiriman parameter dapat dicampur sebagian secara nilai dan sebagian secara acuan dalam suatu prosedur. Parameter yang hanya dibutuhkan pada prosedur saja dapat dikirimkan secara nilai dan yang ingin dikirimkan balik dapat dilakukan secara acuan, sebagai berikut :
PROCEDURE Hitung ( A, B : integer ; Var C : integer ) ;
Contoh program :
Procedure Hitung ( A, B : integer ; Var C ; integer ) ;
Begin
C : = A + B ;
End ;
Var
X, Y, Z : integer ;
Begin
X : = 2 ; Y : = 3 ;
Hitung ( X, Y, Z ) ;
Writeln ( ‘ X = ‘, X , ‘ Y = ‘, Y , ‘ Z = ‘, Z ) ;
End.
Output program :
X = 2 Y = 3 Z = 5
1.2 Prosedur Memanggil Prosedur Yang Lain
Prosedur dapat memanggil prosedur yang lainnya.
Contoh program :
Procedure Pro1 ( X1 : integer ) ;
Begin
Writeln ( ‘Nilai X = ‘, X1, ‘ada di prosedur Pro1’ ) ;
End ;
Procedure Pro2 (X2 : integer ) ;
Begin
Writeln ( ‘Nilai X = ‘, X2, ‘ada diprosedur Pro2’ ) ;
Pro1 (X2) ;
End ;
Var
X : integer ;
Begin
X : = 5 ;
Pro2 ( X ) ;
End.
Output program :
Nilai X = 5 ada diprosedur Pro2
Nilai X = 5 ada diprosedur Pro1
1.3 Prosedur Tersarang
Adalah prosedur yang berada didalam prosedur yang lainnya.
Bentuk Umum :
Program
Procedure
Procedure
Begin



End ;
Begin



End ;
Begin



end .
Contoh fungsi
1.Program Latihan_Function;
uses wincrt;
var
x,y:longint;
Function Tambah(a,b:longint):longint;
var
Hasil:longint;
begin
Hasil:=a+b;
Tambah:=Hasil;
end;

begin
write('Masukkan bilangan pertama: ');readln(x);
write('Masukkan bilangan kedua: ');readln(y);
write('Hasilnya adalah ',(Tambah(x,y)));
end.

2.Program Menukar_Nilai_A_dan_C;
uses wincrt;
var
A,B,C:longint;

Function Tukar(Var A1,B1,C1:longint):longint;
var
temp:longint;
begin
temp:=A1;
A1:=C1;
C1:=temp;
end;

begin
write ('Masukkan Nilai A=');readln (A);
write ('Masukkan Nilai B=');readln (B);
write ('Masukkan Nilai C=');readln (C);
Tukar(A,B,C);
writeln ('Nilai A setelah ditukar ',A);
writeln ('Nilai B setelah ditukar ',B);
writeln ('Nilai C setelah ditukar ',C);
end.
3.Program Fungsi;
uses wincrt;
var x,y:integer;
FUNCTION Tambah (A,B:real):real;
var
Hasil:real;
begin
Hasil:=A+B;
Tambah:=Hasil;
end;
begin
clrscr;
writeln (Tambah(10,30):1);
end.
Program Fungsi;
uses wincrt;
var x,y:integer;
FUNCTION Tambah (A,B:real):real;
var
Hasil:real;
begin
Hasil:=A+B;
Tambah:=Hasil;
end;
begin
write('masukkan nilai x = ');readln (x);
write('masukkan nilai y = ');readln (y);
writeln (Tambah(x,y):1);
end.
Contoh procedure
1.Program Operasi_Tambah_Kurang_Kali_Procedure;
uses wincrt;
Procedure Penjumlahan(Var a,b:longint);
var
c:longint;
begin
writeln ('Operasi yang anda pilih adalah Penjumlahan');
gotoxy (20,5); write ('Masukkan bilangan pertama=');readln (a);
gotoxy (20,6); write ('Masukkan bilangan kedua=');readln (b);
c:=a+b;
gotoxy (20,7); writeln ('Hasil Penjumlahan adalah ',c);
end;

Procedure Pengurangan(Var a,b:longint);
var
d:longint;
begin
writeln ('Operasi yang anda pilih adalah Pengurangan');
gotoxy (20,5); write ('Masukkan bilangan pertama=');readln (a);
gotoxy (20,6); write ('Masukkan bilangan kedua=');readln (b);
d:=a-b;
gotoxy (20,7); writeln ('Hasil Pengurangan adalah ',d);
end;

Procedure Perkalian(Var a,b:longint);
var
e:longint;
begin
writeln ('Operasi yang anda pilih adalah Perkalian');
gotoxy (20,5); write ('Masukkan bilangan pertama=');readln (a);
gotoxy (20,6); write ('Masukkan bilangan kedua=');readln (b);
e:=a*b;
gotoxy (20,7); writeln ('Hasil Perkalian adalah ',e);
end;

var
a,b,c,d,e,i:longint;
f,y,n:string;
begin
f:='y';
while f='y' do
begin
gotoxy (25,3); writeln ('Menu Opersai Dua Bilangan');
gotoxy (25,5); writeln ('1. Penjumlahan');
gotoxy (25,6); writeln ('2. Pengurangan');
gotoxy (25,7); writeln ('3. Perkalian');
gotoxy (25,9); write ('Masukkan Pilihan Anda= '); readln (i);
clrscr;
gotoxy (20,3); If i=1 then
begin
penjumlahan(a,b);
end
else If i=2 then
begin
pengurangan(a,b);
end
else If i=3 then
begin
perkalian(a,b);
end
else writeln ('Pilihan Anda Salah');
gotoxy (20,9); write ('Apakah anda ingin mengulang(y/n)?');read (f);
clrscr;
end;
end.
2.Program procedur1;
uses wincrt;
procedure kuadrat;
var
x,y:real;
begin
write ('nilai x = ');readln(x);
y:=x*x;
writeln ('nilai y =',y:6:2);
end;
begin
kuadrat;
end.

PROGRAM ARRAY

ARRAY (LARIK)

Array (larik) merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yang bertipe sama.
Array dibedakan menjadi :
Array berdimensi satu
Array berdimensi satu dapat digambarkan sebagai kotak panjang yang terdiri atas beberapa kotak kecil. Bentuk umum dalam pendeklarasian array : nama tipe : ARRAY [tipe ordinal] of tipe elemen
Setelah tipe dideklarasikan, berikutnya dapat digunakan dalam pendeklarasian variable. Kemudian elemen array diakses dengan menyebutkan nilai indeksnya di dalam tanda kurung.
Array berdimensi banyak
Array berdimensi dua, atau dalam halini berdimensi dua mewakili suatu bentuk table atau matriks yaitu indeks pertama dapat menunjukkan baris dan indeks kedua dapat menunjukkan kolom dari table atau matriks. Bentuk deklarasi array berdimensi 2 dapat berbentuk :
Nama array : array [tipe-indeks1] of array [tipe-indeks 2] of tipe larik

Contoh :
1. Program Matriks;
uses wincrt;
var tabel:array[1..3,1..2] of integer;
i,j:integer;
begin
tabel [1,1]:=50;
tabel [1,2]:=55;
tabel [2,1]:=21;
tabel [2,2]:=26;
tabel [3,1]:=10;
tabel [3,2]:=1;
for i:=1 to 3 do
begin
for j:=1 to 2 do
write(tabel[i,j],' ');
writeln;
end;
end.
Program Penjumlahan_Matriks;
uses wincrt;
var a,b,c:array[1..25,1..25] of integer;
i,j,k,l,m,n:byte;
begin
writeln(' PENJUMLAHAN MATRIKS ');
writeln(' ================= ');
write ('Baris Matriks Pertama = Baris Matriks Kedua = ');readln(m);
write ('Kolom Matriks pertama = Kolom Matriks Kedua = ');readln(n);
writeln;
writeln('Komponen matriks yang pertama');
for i:=1 to m do
begin
for j:=1 to n do
begin
write ('Nilai[',i,',',j,']=');readln(a[i,j]);
end;
writeln;
end;
writeln('Komponen matriks yang kedua');
for i:=1 to m do
begin
for j:=1 to n do
begin
write ('Nilai[',i,',',j,']=');readln(b[i,j]);
end;
writeln;
end;
for i:=1 to m do
begin
for j:=1 to n do
begin
c[i,j]:=a[i,j]+b[i,j];
end;
end;
writeln;
writeln('Hasil Penjumlahan Matriks');
writeln;
for i:=1 to m do
begin
writeln;
for j:=1 to n do
write(c[i,j]:4);
end;
end.
2. Program Memasukkan_Nilai_Matriks;
uses wincrt;
var tabel:array[1..100,1..100] of integer;
i,j:integer;
begin
write('masukkan baris = ');readln(i);
write('masukkan kolom = ');readln(j);
writeln('matriks anda berukuran = ',i,'x',j);
for i:=1 to i do
for j:=1 to j do
begin
write('nilai : ','');readln(tabel[i,j]);
end;
writeln;
writeln('Matriksnya:','');
for i:=1 to i do
begin
for j:=1 to j do
write(tabel[i,j]:3);writeln;
end;
end.
3.Program Menghitung_Rata_Rata;
uses wincrt;
var x:array[1..10] of integer;
i,n:integer;
jumlah,u:real;
begin
write('berapa kali data yang anda masukkan ? ');readln(n);
for i:=1 to n do
begin
write ('masukkan data = ');readln(x[i]);
end;
begin
clrscr;
for n:= 1 to i do
writeln('data = ' ,(x[n]));
end;
jumlah:=0;
for i:=1 to n do
jumlah:=jumlah+(x[i]);
u:=jumlah/n;
writeln ('u = ' ,u:2:2);
end.
4.Program Membuat_matriks_3x2;
uses wincrt;
var tabel:array[1..3,1..2]of integer;
i,j:integer;
begin
tabel[1,1]:=5;
tabel[1,2]:=25;
tabel[2,1]:=32;
tabel[2,2]:=22;
tabel[3,1]:=45;
tabel[3,2]:=11;
for i:=1 to 3 do
begin
for j:=1 to 2 do
write(tabel[i,j]:10);
writeln;
end;
end.
5.Program Membuat_matriks_baris_dan_kolom_belum_ditentukan;
uses wincrt;
var tabel:array[1..10,1..10]of integer;
i,j,m,n:integer;
begin
write('masukkan baris = ');read(m);
write('masukkan kolom = ');read(n);
clrscr;
for i:= 1 to m do
begin
for j:= 1 to n do
begin
write('nilai[',i,',',j,']?');read(tabel[i,j]);
end;
writeln;
end;
for i:= 1 to m do
begin
for j:= 1to n do
begin
write(tabel[i,j]:9);
end;
writeln;
end;
end.

PROGRAM PERULANGAN

PERULANGAN (LOOP)

1.FOR
Pernyataan for biasanya digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui sebelumnya.
Pengulangan Positif  pengulangan dengan penghitung (counter) dari kecil ke besar atau dengan kata lain pertambahannya positif.
Bentuknya : For nilai awal to nilai akhir do.
Contoh
program segitiga_pascal;
uses wincrt;
var n,i,j:integer;
begin
write('Masukkan angka untuk segitiga asyik: ');readln(n);
for j:=1 to n do
begin
for i:=1 to j do
write (2:4);
writeln;
end;
end.
Apabila program dijalankan, maka tampilannya :
Masukkan angka untuk segitiga asyik: 4 (Masukkan angka, misal 4)
2
2 2
2 2 2
2 2 2 2


Pengulangan Negatif  pengulangan dengan penghitung (counter) dari besar ke kecil atau dengan kata lain pertambahannya positif.
Bentuknya : For nilai awal downto nilai akhir do.
Contoh :
Program segitiga_pascal;
uses wincrt;
var n,i,j:integer;
begin
write('masukkan angka untuk segitiga asyik: ');readln(n);
for j:=n downto 1 do
begin
for i:=1 to j do
write (10:4);
writeln;
end;
end.


Apabila program dijalankan, maka tampilannya :
Masukkan angka untuk segitiga asyik: 5 (Masukkan angka, misal 5)
10 10 10 10 10
10 10 10 10
10 10 10
10 10
10



2.WHILE DO

Pernyataan while-do biasanya digunakan untuk melakukan pengulangan yang jumlahnya tidak diketahui dan diulang hingga kondisi salah.

While logika do pernyataan
Contoh:
Program while_do;
uses wincrt;
var x:integer;
begin
x:=1;
while (x<8) do
begin
writeln(x,'. Segitiga ajaib’);
x:=x+1;
end;
end.

Apabila program dijalankan, maka tampilannya :
1.Segitiga ajaib
2.Segitiga ajaib
3.Segitiga ajaib
4.Segitiga ajaib
5.Segitiga ajaib
6.Segitiga ajaib
7.Segitiga ajaib
8.REPEAT…UNTIL
Repeat biasa dipakai untuk menangani pengulangan yang jumlahnya belum pasti, diulang hingga kondisi benar.

Repeat
Pernyatan_1;
Pernyatan_2;

Pernyatan_n;
Until

Contoh:
Program Repeat_until;
uses wincrt;
var x:integer;
begin
x:=2;
repeat
writeln (x,'. Segitiga asik’);
x:=x+1;
until x>4;
end.

Apabila program dijalankan, maka akan menghasilkan tampilan sebagai berikut:
2.Segitiga asik
3.Segitiga asik
4.Segitiga asik

Contoh lain :

1.Program Pengulangan_for_do;
Uses Wincrt;
Var
a,b:longint;
Begin
Write ('Kita akan mengulang berapa kali : '); read (b);
For b:=1 to b do
a:=1;
For a:=1 to b do
Writeln (a,'.','Aku Suka Indonesia');
End.

2.Program For…do;
Uses Wincrt;
Var
a:longint;
Begin
For a:=1 to 5 do
Writeln (a,' . Pemrograman Komputer');
End.

3.Program Repeat_until;
Uses Wincrt;
Var
a:longint;
Begin
a:=0;
Repeat
a:=a+1;
Writeln (a,' . Pemrograman Komputer');
Until a>4;
End.

4.Program While_do;
Uses Wincrt;
Var
a:longint;
Begin
a:=0;
While a<5 do
Begin
a:=a+1;
Writeln (a,' . Pemrograman Komputer');
End;
End.

5.Program Cetak_BilGanjil;
Uses wincrt;
Var
I : Integer;
Begin
I:=1;
While I < 10 Do
begin
I:=I +2;
Write(I:6);
end;
End.
6.Program Segitiga_Asyik;
Uses Wincrt;
Var
a,b,c:longint;
Begin
Write ('Berapa baris segitiga asyik yang kamu inginkan: '); read (a);
For c:=1 to a do
Begin
For b:=1 to c do
Write (c:3);
Writeln;
Writeln;
End;
End.

7.Program Jumlah_Segitiga_Asyik;
Uses Wincrt;
Var
a,b,c,d:longint;
Begin
Write ('Berapa baris segitiga asyik yang kamu inginkan: '); read (a);
For c:=1 to a do
Begin
For b:=1 to 1 do
Write (c:2);
For b:=2 to c do
Write (' +',c:2);
For b:=1 to c do
d:=c*b;
Write (' = ');
Write (d);
Writeln;
Writeln;
End;
End.

8.Program Jumlah_Segitiga_Asik;
Uses Wincrt;
Var
a,b,c,d:longint;
Begin
Write ('Berapa baris segitiga asik yang kamu inginkan: '); read (a);
For c:=1 to a do
Begin
For b:=1 to c do
Begin
Write (c:2);
If b End;
For b:=1 to c do
d:=b*b;
Write (' = ');
Write (d);
Writeln;
Writeln;
End;
End.

9.Program Menampilkan_Bilangan_Genap;
Uses Wincrt;
Var
x,angka_awal:longint;
Begin
angka_awal:=2;
Repeat
Write (angka_awal,' ');
angka_awal:=angka_awal+2;
Until angka_awal>50
End.

10.Program Penjumlahan_Deret_Bilangan_Bulat_1_Sampai_n;
Uses Wincrt;
Var
bilangan_akhir,bilangan_awal,jumlah:longint;
Begin
bilangan_awal:=1;
jumlah:=0;
Write ('Masukkan bilangan akhir yang diinginkan = '); readln (bilangan_akhir);
Repeat
Write (bilangan_awal);
If bilangan_awal jumlah:=jumlah+bilangan_awal;
bilangan_awal:=bilangan_awal+1;
Until bilangan_awal>bilangan_akhir;
Write (' = ',jumlah);
End.

11.Program Penjumlahan_Deret_Bilangan_1_sd_12;
Uses Wincrt;
Var
bilangan_awal,bilangan_akhir,jumlah:integer;
Begin
bilangan_akhir:=12;
jumlah:=0;
bilangan_awal:=1;
Repeat
Write (bilangan_awal,' + ');
jumlah:=jumlah+bilangan_awal;
bilangan_awal:=bilangan_awal+1;
Until bilangan_awal>bilangan_akhir;
Writeln ('=',jumlah);
End.
12.Program Penjumlahan_Deret_Bilangan_Bulat;
uses wincrt;
var
bilangan_awal,bilangan_akhir,bilangan_setelah_awal,bilangan_penolong1,bilangan_penolong2:longint;
jumlah1,jumlah2,jumlah_akhir:longint;
begin
write ('Masukkan bilangan awal yang diinginkan = '); readln (bilangan_awal);
write ('Masukkan bilangan akhir yang diinginkan = '); readln (bilangan_akhir);
If bilangan_akhir=bilangan_awal then write (bilangan_awal)
else begin
jumlah_akhir:=0;
jumlah1:=0;
jumlah2:=0;
bilangan_setelah_awal:=bilangan_awal+1;
bilangan_penolong1:=0;
bilangan_penolong2:=0;
Write (bilangan_awal);
repeat
jumlah2:=jumlah2+bilangan_penolong2;
bilangan_penolong2:=bilangan_penolong2+1;
until bilangan_penolong2>=bilangan_awal;
Repeat
jumlah1:=jumlah1+bilangan_penolong1;
bilangan_penolong1:=bilangan_penolong1+1;
Until bilangan_penolong1>bilangan_akhir;
repeat
write (' + ',bilangan_setelah_awal);
bilangan_setelah_awal:=bilangan_setelah_awal+1;
jumlah_akhir:=jumlah1-jumlah2;
until bilangan_setelah_awal>bilangan_akhir;
write (' = ',jumlah_akhir);
end
End.

PENYELEKSIAN KONDISI

PENYELEKSIAN KONDISI

Tiap program yang komplek mengandung suatu penyeleksian kondisi. Dengan menyeleksi suatu kondisi, program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari hasil kondisi yang diseleksi tersebut. Untuk menyeleksi suatu kondisi, di dalam bahasa pascal dapat dipergunakan statemen if case.
Statemen (pernyataan) If dapat dibagi menjadi tiga, yaitu:
1. Statemen If-Then



2. Statemen If-then…Else





Contoh:
Program Kelulusan_Hasil_Ujian;
uses wincrt;
var a:integer;
begin
write('Nilai Mahasiswa = ');readln(a);
If a>60 then writeln('Selamat Anda Lulus!')
else writeln('Maaf Anda Tidak Lulus')
end.
3. Statemen If bersarang (Nested)
Bentuk statemen if yang mengandung pernyataan if yang lain.
If Then
Begin
If Then
Else
End.
Statemen case dapat dibagi menjadi dua, yaitu:
1.Statemen 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.
Case of
Daftar case-label1:statemen1;
Daftar case-label2:statemen2;
Daftar case-labe3:statemen3; .
Daftar case-labeln:statemenn;
End;
2.Statemen Case-Of…Else
Statemen Case-Of…Else merupakan pengembangan dari struktur case of dan juga pengembangan dari standar Pascal. Dengan struktur Case-Of…Else, bila tidak ada kondisi yang terpenuhi, maka statemen yang akan diproses di dalam lingkunagn Case-Of adalah statemen yang ada di Else.

Contoh penyeleksian kondisi :

1.Program Kelulusan_Hasil_Ujian;
uses wincrt;
var
nilai:integer;
keterangan:string[25];
begin
Keterangan:='Selamat Anda Lulus !';
write('Nilai Mahasiswa = ');readln(nilai);
If Nilai<60 then keterangan:='Maaf Anda Belum Lulus !';
write(keterangan);
end.
2.Program Bilangan_Positif_Negatif_Netral;
uses wincrt;
var bilangan:integer;
begin
write('Masukkan bilangan = '); readln (bilangan);
if bilangan>0 then write ('Bilangan Positif') else
if bilangan=0 then write ('Bilangan Netral') else
write ('Bilangan Negatif');
end.
3.Program Nilai_Terbesar;
Uses Wincrt;
Var
a,b,c:longint;
Begin
Write ('Masukkan 1: ');Readln(a);
Write ('Masukkan 2: ');Readln(b);
Write ('Masukkan 3: ');Readln(c);
If (a>b) and (a>c) then Write(a);
If (b>a) and (b>c) then Write(b);
If (c>a) and (c>b) then Write(c);
End.
4.Program Menu_Makanan;
uses wincrt;
var x:integer;
menu:string;
begin
writeln('========================');
writeln('Menu Makanan Rumah Makan');
writeln('========================');
writeln('1. Nasi Goreng');
writeln('2. Mie Goreng');
writeln('3. Nasi Gudeg');
write('Pilih Menu Favoritmu! ');readln(x);
if x=1 then write ('>>Nasi Goreng = Rp 6.000,00') else
if x=2 then write ('>>Mie Goreng = Rp 5.000,00') else
if x=3 then write ('>>Nasi Gudeg = Rp 4.500,00') else
writeln ('Pilihan anda tidak ada dalam menu kami')
end.
5.Program Menu_Makanan;
uses wincrt;
var x:integer;
menu:string;
begin
gotoxy(10,1);writeln('========================');
gotoxy(10,2);writeln('Menu Makanan Rumah Makan');
gotoxy(10,3);writeln('========================');
gotoxy(10,5);writeln('1. Ayam Bakar');
gotoxy(10,6);writeln('2. Ayam Goreng');
gotoxy(10,7);writeln('3. Ayam Panggang');
gotoxy(10,10);writeln('Pilih Menu Favoritmu!');
gotoxy(10,12);readln(x);
case x of
1: begin
clrscr;
gotoxy(10,4);writeln('>> Ayam Bakar = Rp 7.000,00 <<');
end;
2: begin
clrscr;
gotoxy(10,4);writeln('>> Ayam Goreng = Rp 7.000,00 <<');
end;
3: begin
clrscr;
gotoxy(10,4);writeln('>> Ayam Panggang = Rp 7.000,00 <<');
end;
end;
end.
6.Program Terbilang;
Uses Wincrt;
Var
a,b,c:longint;
Begin
Write('Masukkan Angka: ');readln(a);
b:=a div 10;
c:=a mod 10;
Writeln;
Begin
If (b=1) and (c=0) then write('sepuluh');
If (b=1) and (c=1) then write('sebelas');
If (b=1) and (c=2) then write('dua belas');
If (b=1) and (c=3) then write('tiga belas');
If (b=1) and (c=4) then write('empat belas');
If (b=1) and (c=5) then write('lima belas');
If (b=1) and (c=6) then write('enam belas');
If (b=1) and (c=7) then write('tujuh belas');
If (b=1) and (c=8) then write('delapan belas');
If (b=1) and (c=9) then write('sembilan belas');
Begin
If (b=0) and (c=1) then write('satu');
If (b=0) and (c=2) then write('dua');
If (b=0) and (c=3) then write('tiga');
If (b=0) and (c=4) then write('empat');
If (b=0) and (c=5) then write('lima');
If (b=0) and (c=6) then write('enam');
If (b=0) and (c=7) then write('tujuh');
If (b=0) and (c=8) then write('delapan');
If (b=0) and (c=9) then write('sembilan');
End;
Case b of
2: Write('dua puluh ');
3: Write('tiga puluh ');
4: Write('empat puluh ');
5: Write('lima puluh ');
6: Write('enam puluh ');
7: Write('tujuh puluh ');
8: Write('delapan puluh ');
9: Write('sembilan puluh ');
End;
If b>1 then
Case c of
1: Write('satu');
2: Write('dua');
3: Write('tiga');
4: Write('empat');
5: Write('lima');
6: Write('enam');
7: Write('tujuh');
8: Write('delapan');
9: Write('sembilan');
End;
End;
End.
7.Program Kelulusan;
uses wincrt;
var
a,b,c,d:real;
Ket:string[11];
begin
writeln ('Masukkan Nilai PDB=');readln(a);
writeln ('Masukkan Nilai Kalkulus=');readln(b);
writeln ('Masukkan Nilai Statistika Inferensial=');readln(c);
d:=(a+b+c)/3;
writeln ('Rata-rata Nilai',(d):5:2);
Ket:='Lulus';
if d <50 then Ket:='Tidak Lulus';
writeln(Ket);
end.
8.Program Mencari_Akar_Persamaan;
uses wincrt;
var a,b,c,d,e,x1,x2,x:real;
begin
repeat
repeat
writeln('masukkan nilai a=');readln(a);
writeln('masukkan nilai b=');readln(b);
writeln('masukkan nilai c=');readln(c);
until a<>0;
d:=sqr(b)-4*a*c;
until d>=0;
if d=0 then
begin
e :=-b/2*a;
writeln('x1=x2=',e:5:2);
end else
if d>0 then
begin
x1:=-b+sqrt(d)/(2*a);
x2:=-b-sqrt(d)/(2*a);
writeln('x1=',x1:5:2);
writeln('x2',x2:5:2);
end;
end.
9.Program Operasi_Tambah_Kurang_Kali_Bagi_Div_Mod;
Uses Wincrt;
Var
a,b,i:longint;
c,d,e,f,g,h:real;
Begin
Gotoxy (25,3); Writeln ('Menu Opersai Dua Bilangan');
Gotoxy (25,5); Writeln ('1. Penjumlahan');
Gotoxy (25,6); Writeln ('2. Pengurangan');
Gotoxy (25,7); Writeln ('3. Perkalian');
Gotoxy (25,8); Writeln ('4. Pembagian');
Gotoxy (25,9); Writeln ('5. Pembagian Bulat');
Gotoxy (25,10); Writeln ('6. Sisa Hasil Pembagian');
Gotoxy (25,12); Write ('Masukkan Pilihan Anda= '); readln (i);
Clrscr;
Gotoxy (20,3); If i=1 then
Begin
Writeln ('Operasi yang anda pilih adalah Penjumlahan');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
c:=a+b;
Gotoxy (20,7); Writeln ('Hasil Penjumlahan adalah ',(c):5:0);
End
else If i=2 then
Begin
Writeln ('Operasi yang anda pilih adalah Pengurangan');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
d:=a-b;
Gotoxy (20,7); Writeln ('Hasil Pengurangan adalah ',(d):5:0);
End
else If i=3 then
Begin
Writeln ('Operasi yang anda pilih adalah Perkalian');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
e:=a*b;
Gotoxy (20,7); Writeln ('Hasil Perkalian adalah ',(e):5:0);
End
else If i=4 then
Begin
Writeln ('Operasi yang anda pilih adalah Pembagian');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
f:=a/b;
Gotoxy (20,7); Writeln ('Hasil Pembagian adalah ',(f):5:0);
End
else If i=5 then
Begin
Writeln ('Operasi yang anda pilih adalah Pembagian Bulat');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
g:=a div b;
Gotoxy (20,7); Writeln ('Hasil Pembagian Bulat adalah ',(g):5:0);
End
else If i=6 then
Begin
Writeln ('Operasi yang anda pilih adalah Sisa Hasil Pembagian');
Gotoxy (20,5); Write ('Masukkan bilangan pertama=');readln (a);
Gotoxy (20,6); Write ('Masukkan bilangan kedua=');readln (b);
h:=a mod b;
Gotoxy (20,7); Writeln ('Sisa Hasil Pembagian adalah ',(h):5:0);
End
else Writeln ('Pilihan Anda Salah');
End.

10.Program_Rumus_ABC;
uses wincrt;
var
a,b,c,x1,x2,D,e:real;
begin
writeln(‘masukkan nilai a?’);readln(a);
writeln(‘masukkan nilai b?’);readln(b);
writeln(‘masukkan nilai c?’);readln(c);
D:=b*b-4*a*c;
If a=0 then writeln(‘tidak memiliki persamaan kuadrat’)
else if D<0 then write(‘merupakan bilangan imaginer’)
else if D=0 then
begin
e:=-b/2*a;
writeln(‘x1=x2= ‘,e:5:2);
end; else
if D>0 then
begin
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
writeln(‘x1= ‘,x1:5:2);
writeln(‘x2= ‘,x2:5:2);
end;
end.

PROGRAM BERURUT

BERURUT
Program berurut, adalah menjalankan proses secara berurutan. dari proses satu dilanjutkan proses kedua dan dilanjutkan ke proses berikutnya. tidak ada percanbangan dan tidak ada perulangan.
Contoh flowchart
Membuat algoritma dengan flowchart untuk mencari konversi jam ke detik sudah diketahui waktu dalam jam berlaku untuk sebarang waktu dalam jam, yang kita inginkan.



. 1. Luas daerah persegi panjang dan kelilingnya.

Program Luas_Persegi_Panjang_dan_Kelilingnya;
uses wincrt;
var
panjang, lebar, luas, keliling : real;
begin
write('masukkan panjang =');readln(panjang);
write('masukkan lebar =');readln(lebar);
luas:=panjang*lebar;
keliling:=2*(panjang+lebar);
writeln('Luas=',luas:10:2);
writeln('Keliling=',keliling:10:2);
end.

2. Volum Kubus dan luas permukaan kubus.

Program Volume_Kubus_dan_Luas_Permukaan_Kubus;
uses wincrt;
var
alas, volume, luas_permukaan:real;
begin
write('masukkan alas =');readln(alas);
volume:=alas*alas*alas;
luas_permukaan:=6*(alas*alas);

writeln('volume=',volume:5:2);
writeln('luas_permukaan=',luas_permukaan:5:2);
end.

3. Luas daerah lingkaran dan keliling lingkaran.

Program Luas_Lingkaran_dan_Keliling_Lingkaran;
uses wincrt;
const
phi=3.142857;
var
r, Luas, Keliling:real;
begin
write ('masukkan jari-jari lingkaran: ');readln(r);
Luas:=(phi*r*r);
Keliling:=(phi*2*r);

writeln ('luas:', Luas:10:3);
writeln ('keliling:', Keliling:10:3);
end.

4. Mempertukarkan nilai A dan B, nilai A dan B diinput.

Program Mempertukarkan_Nilai;
uses wincrt;
var
A:integer;
B:integer;
temp:integer;
begin
write('masukkan nilai A =');readln(A);
write('masukkan nilai B =');readln(B);
temp:=A;
A:=B;
B:=temp;

writeln('A =',A);
writeln('B =',B);
end.

5. Luas permukaan tabung dan kerucut.

Program Luas_Permukaan_Tabung_dan_Kerucut;
uses wincrt;
const
phi=3.142857;
var
r, t, s, luas_permukaan_tabung, luas_permukaan_kerucut:real;
begin
write('masukkan jari-jari =');readln(r);
write('masukkan tinggi =');readln(t);
write('masukkan selimut_kerucut =');readln(s);
luas_permukaan_tabung:=((2*phi*r*r)+(2*phi*r*t));
luas_permukaan_kerucut:=((phi*r*r)+(phi*r*s));
writeln('luas_permukaan_tabung=',luas_permukaan_tabung:5:2);
writeln('luas_permukaan_kerucut=',luas_permukaan_kerucut:5:2);
end.

6. Penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat, dan sisa hasil bagi dalam sebuah program.

Program Operasi_Bilangan;
uses wincrt;
var
a,b,c,d,e,h:integer;
f,g:real;
begin
write('masukkan nilai pertama = ');readln(a);
write('masukkan nilai kedua = ');readln(b);
c:=a+b;
d:=a-b;
e:=a*b;
f:=a/b;
g:=a div b;
h:=a mod b;
writeln('hasil penjumlahan = ',c);
writeln('hasil pengurangan = ',d);
writeln('hasil perkalian = ',e);
writeln('hasil pembagian = ',f:0:2);
writeln('hasil pembagian bulat = ',g:0:2);
writeln('sisa hasil bagi = ',h);
end.

7. Meghitung gaji karyawan apabila diinput nama orang, gaji pokok, tunjangan istri 15 % dari gaji pokok, tunjangan tiap anak 20 % dari gaji pokok, pajak 15 % dari gaji keseluruhan.

Program Gaji_Karyawan;
uses wincrt;
var
nama_orang:string;
gaji_pokok:real;
tunjangan_istri:real;
tunjangan_tiap_anak:real;
n:integer;
pajak:real;
total_gaji:real;
begin
write ('masukkan nama orang =');readln(nama_orang);
write ('masukkan gaji pokok =');read(gaji_pokok);
write ('masukkan banyaknya anak =');readln(n);
tunjangan_istri:=(0.15*gaji_pokok);
tunjangan_tiap_anak:=(0.2*n*gaji_pokok);
pajak:=(0.15*(gaji_pokok+tunjangan_istri+tunjangan_tiap_anak));
total_gaji:=(gaji_pokok+tunjangan_istri+tunjangan_tiap_anak-pajak);
writeln('tunjangan_istri=',tunjangan_istri:10:2);
writeln('tunjangan_tiap_anak=',tunjangan_tiap_anak:10:2);
writeln('pajak=',pajak:10:2);
writeln('total_gaji=',total_gaji:10:2);
end.

8. Koordinat titik tengah dari kedua titik yang diketahui.

Program Koordinat_Titik_Tengah;
uses wincrt;
var
x1, x2, y1, y2, a, b, titik_tengah_x, titik_tengah_y:real;
begin
write('masukkan nilai x1 =');readln(x1);
write('masukkan nilai x2 =');readln(x2);
write('masukkan nilai y1 =');readln(y1);
write('masukkan nilai y2 =');readln(y2);
titik_tengah_x:=((x1+x2)/2);
titik_tengah_y:=((y1+y2)/2);
writeln('titik_tengah_x=',titik_tengah_x:10:2);
writeln('titik_tengah_y=',titik_tengah_y:10:2);
end.

9. Konversi dari jam ke detik.

Program Konversi_Jam_ke_Detik;
uses wincrt;
var jam, detik:real;
begin
write('masukkan jam :');readln(jam);
detik:=jam*3600;
writeln('detik =',detik:10:2);
end.

10. Konversi detik ke jam.

Program Konversi_Detik_ke_Jam;
uses wincrt;
var detik, jam:real;
begin
write('masukkan detik :');readln(detik);
jam:=detik / 3600;
writeln('jam =',jam:10:2);
end.

11. Apabila diketahui waktu mulai telepon(jam,menit,detik) dan waktu selesai telepon(jam,menit,detik), berapakah lamanya telepon dalam detik.

Program Durasi_Telepon;
uses wincrt;
var j1, j2, m1, m2, d1, d2, j, m, d, sisa, durasi:integer;
begin
write ('jam mulai=');read(j1,m1,d1);
write ('jam selesai =');readln(j2,m2,d2);
Durasi:=(j2-j1)*3600+(m2-m1)*60+(d2-d1);
j:=Durasi div 3600;
sisa:=Durasi mod 3600;
m:=sisa div 60;
d:=sisa mod 60;
writeln ('durasi jam=',j);
writeln ('durasi menit=',m);
writeln ('durasi detik=',d);
end.

12. Biaya telepon apabila diinput mulai telepon dan selesai telepon, dan biaya pulsa per Rp 200,- dan 1 pulsa adalah 5 detik ( sisa < 5 detik diabaikan).

Program Menghitung_Biaya_Telepon;
Uses Wincrt;
Var
hh1,mm1,ss1,hh2,mm2,ss2,Total_Detik,Biaya_Telepon:longint;
Begin
Writeln ('Waktu mulai telepon:');
Write ('Jam =');read (hh1);
Write ('Menit=');read (mm1);
Write ('Detik=');read (ss1);
Writeln ('Waktu selesai telepon:');
Write ('Jam =');read (hh2);
Write ('Menit=');read (mm2);
Write ('Detik=');read (ss2);
Total_Detik:=(hh2-hh1)*3600+(mm2-mm1)*60+(ss2-ss1);
Biaya_Telepon:=(Total_Detik div 5)*200;
Writeln ('Lama Waktu Telepon dalam Detik adalah ',(Total_Detik), (' detik.'));
Writeln ('Biaya Telepon adalah Rp ',Biaya_Telepon);
End.

13. Konversi Suhu dari Celcius ke Kelvin dan Fahrenhet.

Program suhu;
uses wincrt;
var
celcius,kelvin:integer;
fahrenheit:real;
begin
write('Masukkan suhu dalam celcius = ');readln(celcius);
fahrenheit:=(9/5*celcius)+32;
kelvin:=celcius+273;
writeln('Suhu dalam fahrenheit = ',fahrenheit:5:2);
writeln('Suhu dalam kelvin = ',kelvin);
end.

14. Menghitung umur seseorang apabila diasumsikan dalam 1 bulan ada 30 hari dan dalam 1 tahun ada 365 hari.

Program Menghitung_Umur_Seseorang;
uses wincrt;
var
d1,d2,m1,m2,y1,y2,H,I,J,K,L:integer;
begin
writeln('Menghitung umur seseorang');
write('Masukkan tanggal lahir = ');readln(d1,m1,y1);
write('Masukkan tanggal sekarang = ');readln(d2,m2,y2);
H:=(y2-y1)*365+(m2-m1)*30+(d2-d1);
I:=H div 365;
J:=H mod 365;
K:=J div 30;
L:=J mod 30;
write('umur anda sekarang adalah = ',I,' tahun ',K,' bulan ',L,' hari');
end.

PEMOGRAMAN DALAM TURBO PASCAL

PEMOGRAMAN DALAM TURBO PASCAL

Struktur suatu program pascal dapat terdiri:
1.Judul Program
2.Blok Program
a.Bagian deklarasi.
i.Deklarasi konstanta
Penggunaan identifier yang berisi nilai-nilai konstanta harus didefinisikan terlebih dahulu pada bagian ini.
Deklarasi konstanta diawali dengan kata cadangan const diikuti oleh kumpulan identifier yang diberi suatu nilai konstanta.
Contoh : const
Gaji = 10000;
Potongan = 0,2;
ii.Deklarasi variabel
Variabel adalah identifier yang berisi data yang dapat berubah-ubah nilainya di dalam program.
Deklarasi variabel menggunakan kata cadangan var.
Contoh : var
Jumlahanak: integer;
x, y, z = integer:
iii.Deklarasi label
Apabila program menggunakan statemen Go to untuk meloncat ke suatu statemen yang tertentu, maka dibutuhkan suatu label pada statemen yang dituju dan label tersebut harus dideklarasikan terlebih dahulu pada bagian deklarasi.
Deklarasi variabel diawali dengan kata cadangan label dengan dipisahkan oleh koma dan diakhiri dengan titik koma.
iv.Deklarasi tipe
Pascal menyediakan beberapa macam tipe dari data, terdiri dari:
a)Data tipe sederhana (simple-type data)
Dihubungkan dengan sebuah identifier untuk sebuah data. Data tipe ini digolongkan menjadi dua tipe yaitu :
Tipe data standar :
Integer, real, char, string, Boolean
Tipe data yang didefinisikan pemakai
Enumerated atau scalar type, subrange type

b)Data tipe terstruktur (structured-type data)
Terdiri dari beberapa data item yang dihubungkan satu dengan lainnya. Masing-masing grup dari data item dihubungkan dengan suatu identifier tertentu. Ada 4 macam yang termasuk dalam data ini : array, record, file dan set.
c)Data tipe penunjuk (pointer-type data)
Digunakan untuk membuat data terstruktur tipe dinamik.
1.Integer
Merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadecimal. Ada 5 macam tipe data integer berdasarkan jangkauan nilai, yaitu :



Contoh (1) :
Bila nilai yang digunakan lebih besar dari 255, tetapi tidak lebih besar dari 32767, maka dapat digunakan tipe integer
Uses wincrt;
Var
Jumlah : integer ;
Begin
Jumlah:= 25000 ;
Writeln (‘ nilai jumlah = ’, Jumlah) ;
End.
Contoh (2) :
Program Tambah;
Uses wincrt;
Var a,b,c : integer;
Begin
Write(‘masukkan nilai pertama= ’);readln(a);
Write(‘masukkan nilai kedua= ’);readln(b);
c:=a+b;
Writeln(‘jumlah’,c);
End.
2 Real
Nilai konstanta numeric real berkisar dari 1E-38 sampai 1E+38. E menunjukkan nilai 10 pangkat, dan tipe data ini menempati memori sebesar 6 byte.
Contoh :
Program Pembagian;
Uses wincrt;
Var a,b,c : real;
Begin
Write(‘masukkan nilai pertama= ’);readln(a);
Write(‘masukkan nilai kedua= ’);readln(b);
c:=a/b;
Writeln(‘jumlah’,c:10:5);
End.
3 Karakter
Nilai data karakter berupa sebuah karakter yang ditulis diantara tanda petik tunggal, seperti : ‘ A ’. penggunaan variable untuk menyimpan tipe data karakter ini harus dideklarasikan dengan tipe Char.
Contoh :
Uses wincrt;
Var
Huruf : char ;
Begin
Huruf:='D';
Writeln (' Hurufnya adalah : ', Huruf ) ;
End.
Output program :
Hurufnya adalah : D
4 String
Merupakan urut-urutan dari karakter yang terletak diantara tanda petik tunggal. Nilai data string akan menempati memori sebesar banyaknya karakter string ditambah dengan 1byte. Bila panjang dari suatu string didalam deklarasi variable tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.
Contoh :
Uses Wincrt;
Var
Tanggal : string [20] ;
Hari : string [6] ;
Jarak : char ;
Begin
Tanggal:='19 Februari 2007';
Hari:=' Senin ';
Writeln (Hari , Tanggal)
End.

v. Deklarasi prosedur
Prosedur merupakan bagian terpisah dari program dan dapat diaktifkan di manapun di dalam program. Prosedur dapat berupa prosedur stándar maupun prosedur yang dibuat oleh poemakainya sendiri. Prosedur dibuat dalam program dengan cara mendekalrasikannya di dalam prosedur. Bentuknya ialah kata cadangan, identifier nama procedure , kumpulan parameter.
Contoh : Procedure Hitung ( X,Y : integer );
vi. Deklarasi Fungsi
Fungsi merupakan bagian dari program yang terpisah yang mirip dengan prosedur, tetapi ada beberapa perbedaannya. Fungsi dapat berupa fungsi stándar atau fungsi yang dibuat sendiri oleh pemakai. Bila pemakai membuat sendiri harus dideklarasikan terlebih dahulu.
Contoh : Function Pangkat ( X,Y : real ) : real
b.Bagian pernyataan
Binary Operator
Disebut dengan binary operator karena operator ini digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variable. Digunakan untuk operasi aritmatika yang berhubungan dengan tipe data integer dan real.



PENULISAN ALGORITMA

PENULISAN ALGORITMA


Penulisan algoritma dapat menggunakan 2 cara, yaitu:
a. Pseudocode (kode semu)
Dalam merancang sebuah algoritma menggunakan kode semu, komponenkomponen input, output dan proses harus terdefinisi secara jelas. Disamping itu beberapa ketentuan dan aturan pendefinisian memang secara baku tidak ditemukan dalam beberapa buku literatur, namun aturan-aturan yang di ajukan dibawah ini akan membantu mempermudah perancangan algoritma dan evaluasi serta analisis algoritma.
Aturan-aturan tersebut :
1.Kode semu harus dimulai dengan judul. Aturan ini secara mudah dapat dimengerti fungsi dan manfaatnya. Judul harus dapat menjelaskan spesifikasi masalah yang dirancang algoritmanya. Penulisannya dapat dengan huruf kapital semuanya atau tidak.
2.Kode semu harus ditulis dengan nomor yang menunjukkan urutan-urutan langkahlangkah dalam algoritma.
3.Pendeklarasian variabel, konstanta, parameter, rumus dan pernyataan harus sederhana.

Contoh: menghitung luas segitiga dengan menggunakan pseudocode
1.[masukkan/input alas dan tinggi segitiga]
read (alas, tinggi)
2.[menghitung luas segitiga]
L:= 12 * panjang * lebar.
3.[mencetak hasil]
Write (‘ Luas Segitiga : ‘, L)
4.[mengakhiri algoritma]
exit

b. Flowchart (diagram alir)
Flowchart adalah bagan yang menggambarkan arus logika dari data yang akan diproses dalam suatu program dari awal sampai akhir.



Menurut bentuknya flowchart dibedakan manjadi tiga jenis:
1.Flowchart berurut, yaitu bentuk flowchart yang bentuknya urut ke bawah dan biasanya hanya menyelesaikan satu persoalan dengan satu penyelesaian.
2.Flowchart memilih yaitu bentuk flowchart yang digunakan untuk menyelesaikan persoalan dengan penyelesaian lebih dari satu, biasa memilih satu diantara dua penyelesaian.
3.Flowchart berulang yaitu bentuk flowchart yang digunakan untuk menyelesaikan persoalan dengan bentuk berulang.
Masing –masing bentuk di atas dijelaskan secara rinci pada bab selanjutnya.

ALGORITMA

ALGORITMA

Pendahuluan

Algoritma memegang peranan penting dalam bidang pemrograman. Sebegitu pentingnya suatu algoritma, sehingga perlu dipahami konsep dasar algoritma. Apalagi untuk seorang programer, tentu diperlukan suatu algoritma sehingga dapat membuat program yang lebih efektif dan efisien. Bagi kebanyakan orang, algoritma sangat membantu dalam memahami konsep logika pemrograman.
Algoritma adalah kumpulan instruksi yang dibuat secara jelas untuk menunjukan langkah langkah penyelesaian suatu masalah. Pada umumnya algoritma kurang lebih sama dengan suatu prosedur yang sering dilakukan setiap hari, misalnya prosedur untuk mengganti ban bocor/pecah, prosedur pemakaian telepon umum, prosedur membuat kue dan lain-lain.
Dalam bidang komputer, misalnya EDP (Elektronik Data Processing) atau MIS (Management Information System), algoritma sering dimanfaatkan untuk menyelesaikan suatu masalah atau untuk proses pengambilan keputusan. Seorang sistem analisis (analisist system) tentunya menggunakan algoritma untuk merancang suatu sistem. Bagi seorang programer, algoritma digunakan untuk membuat modul-modul program. Guna memahami suatu algoritma, harus dimiliki pengetahuan dasar matematika karena pada dasarnya algoritma lahir dari konsep logika matematika. Disini yang perlu dilatih adalah kemampuan logikanya agar benar-benar bisa menyusun langkah-langkahn penyelesaian masalah dengan baik. Dalam buku ajar ini, disajikan konsep dasar dan analisis algoritma. Pada bagian konsep dasar dibahas komponen utama, desain, dan contoh pembuatan. Selanjutnya, untuk mendapatkan algoritma yang efisien serta mendapatkan rumusan matematika sebagai ukuran kerumitan (kompleksitas) maka dibahas analisis algoritma dengan menggunakan notasi O (big O).

Konsep Dasar Algoritma

Algoritma adalah kumpulan instruksi/perintah yang dibuat secara jelas dan sistematis berdasarkan urutan yang logis (logika) untuk penyelesaian suatu masalah. French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi dengan masalah rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan. Penerapan dari konsep tersebut biasanya digunakan dalam rancangan algoritma. Dalam merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau metode yaitu kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu dan flow chart, sedangkan Knuth (1973) menyarankan algoritma fundamental. Untuk keperluan matematika dan program komputer metode yang sering digunakan yaitu :
1. Diagram Alir (Flow Chart)
2. Kode Semu (Pseudo Code)
3. Algoritma Fundamental
Knuth (1973) menyatakan 5 komponen utama dalam algoritma yaitu finiteness, definiteness, input, output dan effectiveness. Sehingga dalam merancang sebuah algoritma ada 3 (tiga) komponen yang harus ada yaitu:
1. Komponen masukan (input)
Komponen ini biasanya terdiri dari pemilihan variable, jenis variable, tipe variable,
konstanta dan parameter (dalam fungsi).
2. Komponen keluaran (output)
Komponen ini merupakan tujuan dari perancangan algoritma dan program.
Permasalahan yang diselesaikan dalam algoritma dan program harus ditampilkan dalam komponen keluaran. Karakteristik keluaran yang baik adalah benar (menjawab) permasalahan dan tampilan yang ramah (Frendly).
3. Komponen proses (processing)
Komponen ini merupakan bagian utama dan terpenting dalam merancang sebuah algoritma. Dalam bagian ini terdapat logika masalah, logika algoritma (sintaksis dan semantik), rumusan, metode (rekursi, perbandingan, penggabungan, pengurangan dan lain-lain).

BAHASA PEMOGRAMAN KOMPUTER

Bahasa Pemograman Komputer

Program  intruksi – intruksi yang diberikan kepada computer agar computer dapat melakukan tugas – tugas tertentu.
Pemograman  upaya untuk membuat program.
Bahasa pemograman  bahasa yang dipergunakan dalam pembuatan suatu program.
Langkah – langkah dalam pemograman
1.Menulis program
2.Menjalankan program untuk menguji kebenaran program.
Jika ada kesalahan (logika maupun kaidah), program akan diperbaiki dan kembali ke langkah sebelumnya. Lihat langkah – langkah pemograman pada gambar 1

WORD DAN EXCEL

Aplikasi untuk Pengolah Data ( Word dan Excel )

Aplikasi word digunakan antara lain untuk membuat surat, membuat artikel, membuat publikasi sampai pada membuat soal. Dalam aplikasi Word terdapat berbagai bantuan yaitu : Mail merge, penomoran(bullet and numbering), insert picture maupun inser from file, membuat table, mengatur letak tampilan agar ukuran printing sesuai dengan aturan yang di inginkan equation editor dan simbol-simbol, garis untuk membuat bidang / benda, serta fasilitas grouping.
Sedangkan aplikasi excel digunakan dalam hal ini untuk mengolah data yang berupa angka-angka, antara lain yang dipergunakan sebagai penunjang dalam perhitungan tabel, pembuatan diagram, serta formula.
Aplikasi word dan excel bisa bekerja secara bersama-sama misalnya, tentang pecahan dan gambar yang menunjukkan pecahan. Bila kita sedang menggunakan word untuk menggambar hal tersebut mempunyai kesulitan, kita bisa mencoba untuk membuat gambarnya melalui excel. Dengan bantuan Chart (pada menu Insert-Chart…), maka kita bisa pilih type chart nya pada “Pie” type chart. Kita isi dua data yang sama, untuk membuat setengah bagian, tiga data yang sama untuk membuat tiga bagian, dan bisa kita isi empat data yang sama untuk membuta 4 bagian. Chart yang kita buat langsung bisa lihat hasilnya di excel tersebut.
Bila ingin memindahkan ke word, tinggal lakukan copy paste (copy pada excel, kemudian di word klik kanan paste) maka gambar di excel tersebut sudah ada di word.
Untuk mengubah warna kita bisa menggunakan klik kanan —edit picture. Jangan lupa ketika sudah kita edit lakukan grouping ulang, supaya gambar tidak rusak kalau kita lakukan pemidahan.
Gambar:





Dengan aplikasi Excel tentukan dahulu berapa variabelnya, misalkan dua variabel. Lihat gambar, lalu blok data tersebut kemudian cari insert  chart. Pilih chart,misalkan pie. Maka akan terbentuk diagram lingkaran. Dalam gambar diagram tersebut terbagi 3 bagian yang sama. Data A mempunyai 1 bagian, sedangkan data B 2 bagian. Copy paste ke word, selanjutnya kita dapat mengubah warna, bentuk diagram, dapat juga menambah data yang diinginkan. Excel hanya untuk memudahkan kita dalam membuat saja.

Selasa, 08 Desember 2009

Algoritma

ALGORITMA

Pendahuluan

Algoritma memegang peranan penting dalam bidang pemrograman. Sebegitu pentingnya suatu algoritma, sehingga perlu dipahami konsep dasar algoritma. Apalagi untuk seorang programer, tentu diperlukan suatu algoritma sehingga dapat membuat program yang lebih efektif dan efisien. Bagi kebanyakan orang, algoritma sangat membantu dalam memahami konsep logika pemrograman.
Algoritma adalah kumpulan instruksi yang dibuat secara jelas untuk menunjukan langkah langkah penyelesaian suatu masalah. Pada umumnya algoritma kurang lebih sama dengan suatu prosedur yang sering dilakukan setiap hari, misalnya prosedur untuk mengganti ban bocor/pecah, prosedur pemakaian telepon umum, prosedur membuat kue dan lain-lain.
Dalam bidang komputer, misalnya EDP (Elektronik Data Processing) atau MIS (Management Information System), algoritma sering dimanfaatkan untuk menyelesaikan suatu masalah atau untuk proses pengambilan keputusan. Seorang sistem analisis (analisist system) tentunya menggunakan algoritma untuk merancang suatu sistem. Bagi seorang programer, algoritma digunakan untuk membuat modul-modul program. Guna memahami suatu algoritma, harus dimiliki pengetahuan dasar matematika karena pada dasarnya algoritma lahir dari konsep logika matematika. Disini yang perlu dilatih adalah kemampuan logikanya agar benar-benar bisa menyusun langkah-langkahn penyelesaian masalah dengan baik. Dalam buku ajar ini, disajikan konsep dasar dan analisis algoritma. Pada bagian konsep dasar dibahas komponen utama, desain, dan contoh pembuatan. Selanjutnya, untuk mendapatkan algoritma yang efisien serta mendapatkan rumusan matematika sebagai ukuran kerumitan (kompleksitas) maka dibahas analisis algoritma dengan menggunakan notasi O (big O).

Konsep Dasar Algoritma

Algoritma adalah kumpulan instruksi/perintah yang dibuat secara jelas dan sistematis berdasarkan urutan yang logis (logika) untuk penyelesaian suatu masalah. French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi dengan masalah rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan. Penerapan dari konsep tersebut biasanya digunakan dalam rancangan algoritma. Dalam merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau metode yaitu kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu dan flow chart, sedangkan Knuth (1973) menyarankan algoritma fundamental. Untuk keperluan matematika dan program komputer metode yang sering digunakan yaitu :
1. Diagram Alir (Flow Chart)
2. Kode Semu (Pseudo Code)
3. Algoritma Fundamental
Knuth (1973) menyatakan 5 komponen utama dalam algoritma yaitu finiteness, definiteness, input, output dan effectiveness. Sehingga dalam merancang sebuah algoritma ada 3 (tiga) komponen yang harus ada yaitu:
1. Komponen masukan (input)
Komponen ini biasanya terdiri dari pemilihan variable, jenis variable, tipe variable,
konstanta dan parameter (dalam fungsi).
2. Komponen keluaran (output)
Komponen ini merupakan tujuan dari perancangan algoritma dan program.
Permasalahan yang diselesaikan dalam algoritma dan program harus ditampilkan dalam komponen keluaran. Karakteristik keluaran yang baik adalah benar (menjawab) permasalahan dan tampilan yang ramah (Frendly).
3. Komponen proses (processing)
Komponen ini merupakan bagian utama dan terpenting dalam merancang sebuah algoritma. Dalam bagian ini terdapat logika masalah, logika algoritma (sintaksis dan semantik), rumusan, metode (rekursi, perbandingan, penggabungan, pengurangan dan lain-lain).

Program Berurut

BERURUT
Program berurut, adalah menjalankan proses secara berurutan. dari proses satu dilanajutkan proses kedua dan dilanjutkan ke proses berikutnya. tidak ada percanbangan dan tidak ada perulangan..

1. luas daerah persegi panjang dan kelilingnya.

program Luas_Persegi_Panjang_dan_Kelilingnya;
uses wincrt;
var
panjang:real;
lebar:real;
luas:real;
keliling:real;
begin
write('masukkan panjang =');readln(panjang);
write('masukkan lebar =');readln(lebar);
luas:=panjang*lebar;
keliling:=2*(panjang+lebar);
writeln('Luas=',luas:10:5);
writeln('Keliling=',keliling:10:5);
end.

2. Volum Kubus dan luas permukaan kubus.

program Volume_Kubus_dan_Luas_Permukaan_Kubus;
uses wincrt;
var
alas:real;
volume:real;
luas_permukaan:real;
begin
write('masukkan alas =');readln(alas);
volume:=alas*alas*alas;
luas_permukaan:=6*(alas*alas);
writeln('volume=',volume:5:2);
writeln('luas_permukaan=',luas_permukaan:5:2);
end.

3. Luas daerah lingkaran dan keliling lingkaran.

Program Luas_Lingkaran_dan_Keliling_Lingkaran;
uses wincrt;
const
phi=3.141596;
var
r:real;
Luas:real;
Keliling:real;
Begin
write ('masukkan jari-jari lingkaran: ');readln(r);
Luas:=(phi*r*r);
Keliling:=(phi*2*r);
writeln ('luas:', Luas:10:3);
writeln ('keliling:', Keliling:10:3);
end.

4. Luas permukaan tabung dan kerucut.

program Luas_Permukaan_Tabung_dan_Kerucut;
uses wincrt;
const
phi=3.141596;
var
r:real;
t:real;
luas_permukaan_tabung:real;
luas_permukaan_kerucut:real;
begin
write('masukkan jari-jari =');readln(r);
write('masukkan tinggi =');readln(t);
luas_permukaan_tabung:=((2*phi*r*r)+(2*phi*r*t));
luas_permukaan_kerucut:=((2*phi*r*r)+(2*phi*r*t)/3);

writeln('luas_permukaan_tabung=',luas_permukaan_tabung:5:2);
writeln('luas_permukaan_kerucut=',luas_permukaan_kerucut:5:2);

end.

5. Penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat, dan sisa hasil bagi dalam sebuah program.

Program Operasi_Tambah_Kurang_Kali_Bagi_Div_Mod;
Uses Wincrt;
Var
a,b:longint;
c,d,e,f,g,h:real;
Begin
Write ('Masukkan bilangan pertama=');readln (a);
Write ('Masukkan bilangan kedua=');readln (b);
c:=a+b;
d:=a-b;
e:=a*b;
f:=a/b;
g:=a div b;
h:=a mod b;
Writeln ('Hasil Penjumlahan adalah ',(c):5:0);
Writeln ('Hasil Pengurangan adalah ',(d):5:0);
Writeln ('Hasil Perkalian adalah ',(e):5:0);
Writeln ('Hasil Pembagian adalah ',(f):5:2);
Writeln ('Hasil Pembaian Bulat adalah ',(g):5:0);
Writeln ('Sisa Hasil Pembagian adalah ',(h):5:0);
End.

6. Meghitung gaji karyawan apabila diinput nama orang, gaji pokok, tunjangan istri 15 % dari gaji pokok, tunjangan tiap anak 20 % dari gaji pokok, pajak 15 % dari gaji keseluruhan.

Program Gaji_Karyawan;
uses wincrt;
var
nama_orang:string;
a:real;
gaji_pokok:real;
tunjangan_istri:real;
tunjangan_anak:real;
pajak:real;
total_gaji:real;
begin
write ('masukkan nama orang =');readln(nama_orang);
write ('masukkan gaji pokok =');readln(gaji_pokok);
write ('masukkan jumlah anak=');readln(a);
tunjangan_istri:=(0.15*gaji_pokok);
tunjangan_anak:=a*(0.2*gaji_pokok);
pajak:=(0.15*(tunjangan_istri+tunjangan_anak+gaji_pokok));
total_gaji:=(gaji_pokok+tunjangan_istri+tunjangan_anak-pajak);
writeln('tunjangan_istri=',tunjangan_istri:10:2);
writeln('tunjangan_anak=',tunjangan_anak:10:2);
writeln('pajak=',pajak:10:2);
writeln('total_gaji=',total_gaji:10:2);
end.

7. Koordinat titik tengah dari kedua titik yang diketahui.

Program Koordinat_Titik_Tengah;
uses wincrt;
var
x1:real;
x2:real;
y1:real;
y2:real;
titik_tengah_x:real;
titik_tengah_y:real;
begin
write('masukkan nilai x1 =');readln(x1);
write('masukkan nilai x2 =');readln(x2);
write('masukkan nilai y1 =');readln(y1);
write('masukkan nilai y2 =');readln(y2);
titik_tengah_x:=((x1+x2)/2);
titik_tengah_y:=((y1+y2)/2);
writeln('titik_tengah_x=',titik_tengah_x:10:5);
writeln('titik_tengah_y=',titik_tengah_y:10:5);
end.

8. Konversi dari jam ke detik.

Program Konversi_Jam_ke_Detik;
uses wincrt;
var jam:real;
detik:real;
begin
write('masukkan jam :');readln(jam);
detik:=jam*3600;
writeln('detik =',detik:10:2);
end.
10. Konversi detik ke jam
Program Konversi_Detik_ke_Jam;
uses wincrt;
var detik:real;
jam:real;
begin
write('masukkan detik :');readln(detik);
jam:=detik / 3600;
writeln('jam =',(jam):10:2);
end.

9. Apabila diketahui waktu mulai telepon(jam,menit,detik) dan waktu selesai telepon(jam,menit,detik), berapakah lamanya telepon dalam detik.

Program Menghitung_Lama_Waktu_Telepon_dalam_Detik;
Uses Wincrt;
Var
hh1,mm1,ss1,hh2,mm2,ss2,Total_Detik:real;
Begin
Writeln ('Waktu mulai telepon:');
Write ('Jam =');read (hh1);
Write ('Menit=');read (mm1);
Write ('Detik=');read (ss1);
Writeln ('Waktu selesai telepon:');
Write ('Jam =');read (hh2);
Write ('Menit=');read (mm2);
Write ('Detik=');read (ss2);
Total_Detik:=(hh2-hh1)*3600+(mm2-mm1)*60+(ss2-ss1);
Writeln ('Lama Waktu Telepon dalam Detik adalah ',(Total_Detik):2:0, (' detik.'));
End.

10. Biaya telepon apabila diinput mulai telepon dan selesai telepon, dan biaya pulsa per Rp 200,- dan 1 pulsa adalah 5 detik ( sisa < 5 detik diabaikan).

Program Menghitung_Biaya_Telepon;
Uses Wincrt;
Type Jam = record
hh:longint;
mm:longint;
ss:longint;
end;
Var
J1,J2:Jam;
Total_Detik:longint;
Biaya_Telepon:longint;
Begin
Writeln ('Waktu mulai telepon:');
Write ('Jam =');read (J1.hh);
Write ('Menit=');read (J1.mm);
Write ('Detik=');read (J1.ss);
Writeln ('Waktu selesai telepon:');
Write ('Jam =');read (J2.hh);
Write ('Menit=');read (J2.mm);
Write ('Detik=');read (J2.ss);
Total_Detik:=(J2.hh-J1.hh)*3600+(J2.mm-J1.mm)*60+(J2.ss-J1.ss);
Biaya_Telepon:=(Total_Detik div 5)*200;
Writeln ('Lama Waktu Telepon dalam Detik adalah ',(Total_Detik), (' detik.'));
Writeln ('Biaya Telepon adalah Rp ',Biaya_Telepon);
End.

11. Konversi Suhu dari Celcius ke Kelvin dan Fahrenhet.

program suhu;
uses wincrt;
var
celcius,kelvin:integer;
fahrenheit:real;
begin
write('masukkan suhu dalam celcius = ');readln(celcius);
fahrenheit:=(9/5*celcius)+32;
kelvin:=celcius+273;

writeln('suhu dalam fahrenheit=',fahrenheit:5:2);
writeln('suhu dalam kelvin=',kelvin);
end.

12. Menghitung umur seseorang apabila diasumsikan dalam 1 bulan ada 30 hari dan dalam 1 tahun ada 365 hari.
Program Menghitung_Umur_Seseorang;
Uses Wincrt;
Var
yy1,yy2,mm1,mm2,dd1,dd2,Total_Hari,Umur_Tahun,Umur_Bulan,Umur_Hari:longint;
Begin
Writeln ('Masukkan Tanggal Sekarang:');
Write ('Tanggal=');read (dd1);
Write ('Bulan =');read (mm1);
Write ('Tahun =');read (yy1);
Writeln ('Masukkan Tanggal Lahir:');
Write ('Tanggal=');read (dd2);
Write ('Bulan =');read (mm2);
Write ('Tahun =');read (yy2);
Total_Hari:=(yy1-yy2)*365+(mm1-mm2)*30+(dd1-dd2);
Umur_Tahun:=Total_Hari div 365;
Umur_Bulan:=(Total_Hari mod 365) div 30;
Umur_Hari:=(Total_Hari mod 365) mod 30;
Writeln ('Umur Anda Sekarang adalah ',(Umur_Tahun),(' tahun,'),(Umur_Bulan),(' bulan,'),(Umur_Hari),(' hari.'));
End.