ALGORITMA II
INFORMATIKA
UNIVERSITAS INDRAPRASTA PGRI
2020
File Pascal
Program HITUNG_RATA;
{Contoh penggunaan array dalam program}
uses crt;
var
i,k, n: integer;
Jumlah : longint;
RATA : real;
A : array [0..100] of integer;
begin
{input data}
clrscr;
while A[n] <> -9 do
begin
n := n+1;
Write ('Masukkan bilangannya : '); readln(A[n]);
end; {end of while}
n := n-1;
writeln ('Banyaknya bilangan : ', n);
{Mencetak elemen array}
write ('Elemen array-nya adalah : ');
for i := 1 to n do
write (A[i],',');writeln;
{Menghitung jumlah elemen array}
for i := 1 to n do Jumlah := Jumlah + A[i];
write('Jumlah akhir =', Jumlah);
{Menghitung rata-rata}
RATA := Jumlah/n;
writeln(' dan Rata-rata = ',RATA:2:2);
writeln(' --o SELESAI o--');
readln;
end.
Output :
Program Array_Record;
Uses crt;
Type mahasiswa = record
Nama : string;
NPM : string;
Nilai : integer;
end;
Var Mhs : array [1..10] of mahasiswa;
Jumlah : byte;
I,J : integer;
Procedure Input;
Begin
Writeln (' DATA MAHASISWA');
Write (' Jumlah Data : ');
Readln (Jumlah);
Writeln;
For I := 1 to Jumlah do
begin
writeln (' Data ke- ', I);
write(' Nama : '); readln (Mhs[I].Nama);
write (' NPM : '); readln (Mhs[I].NPM);
write (' Nilai : '); readln (Mhs[I].Nilai);
writeln;
end;
end;
Procedure Judul;
Begin
Clrscr;
Gotoxy(13,1); writeln(' DATA MAHASISWA ');
Writeln(' ------------------------------ ');
gotoxy(3,3); write('No ');
gotoxy(7,3); write('Nama ');
gotoxy(27,3); write('NPM ');
gotoxy(45,3); writeln('Nilai ');
Writeln(' ------------------------------- ');
end;
Procedure Tampil;
Begin
for I := 1 to Jumlah
do
begin
gotoxy(3,4 + I); write(I);
gotoxy(7,4 + I); write(Mhs[I].Nama);
gotoxy(27,4 + I); write(Mhs[I].NPM);
gotoxy(45,4 + I); write(Mhs[I].Nilai);
end; readln;
writeln(' ------------------------------- ');
end;
{program utama }
Begin
Clrscr;
Input;
Judul;
Tampil;
Readln;
end.
Output:
3. Program pada Halaman 13 - Matriks
Program Perkalian_Matriks;
uses crt;
Type
Larik = array [1..25, 1..25] of real;
Var
I,J,K : byte;
M,N,L : byte;
A,B,C : larik;
Begin
Clrscr;
Write('Baris matriks pertama ? ');
readln(M);
Write('Baris matriks pertama/baris matriks kedua ? ');
readln(N);
Write('Kolom matriks kedua ? ');
readln(L);
Writeln;
Output :
4. Program pada Halaman 21 - Searching
Program binary_search;
Uses crt;
begin
if bawah > atas then urutketemu := 0
else
begin
tengah := (bawah + atas) div 2 ;
if cari = x[tengah] then
urutketemu := tengah
else
if cari < x[tengah] then
caribiner(x, cari, bawah, tengah-1, urutketemu)
else
caribiner(x, cari, tengah+1, atas, urutketemu);
end;
end;
const
npm : larik = (1234, 1235, 1236, 1237, 1238, 1239, 1240,
1241);
nama_mhs : array [1..8] of nama = ('Arief','Ani','Budi','Citra','Dewi','Erni','Fanny','Ghana');
var
cari : word;
ketemu : word;
lagi : char;
begin
lagi := 'Y';
while upcase(lagi) = 'Y' do
begin
clrscr;
write('NPM mahasiswa yang dicari : ');
readln(cari);
writeln;
caribiner(npm, cari, 1, 8, ketemu);
if ketemu = 0 then
writeln('NPM Mahasiswa ini tidak ada')
else
begin
writeln('NPM mahasiswa : ', npm[ketemu]);
writeln('Nama mahasiswa : ', nama_mhs[ketemu]);
end;
writeln;
write('Cari yang lain lagi (Y/T) ? '); readln(lagi);
end;
end.
Output:
5. Program pada Halaman 27 – Faktorial A
Program Faktorial_A;
uses crt;
Procedure faktorial(n: byte; var hasil: longint);
Begin
If N <= 1 then hasil := 1
Else Begin
Faktorial(N-1, hasil);
Hasil := N*hasil;
End; end;
Var N : byte; F : longint;
Begin
Write('Berapa Faktorial? '); readln(N);
Faktorial(N,F); Writeln('Faktorial = ',F); readln;
End.
Output:
Program Faktorial_B;
uses crt;
Function faktorial (N: byte): longint;
Begin
if N <= 1 then faktorial := 1
else
faktorial := N*faktorial (N-1);
end;
var N : byte;
begin
write ('Berapa faktorial? '); readln (N);
writeln ('Faktorial = ', faktorial (N)); readln;
end.
Output:
Program Fibonacci_A;
uses crt;
function fibonacci (n:word): word;
begin
if n < 2 then fibonacci := n
else
fibonacci := fibonacci (n-2) + fibonacci (n-1);
end;
var n : word;
begin
write ('Suku ke berapa? '); readln(n);
writeln ('Nilai suku ke ',n,' adalah ',fibonacci (n));
readln;
end.
Output:
8. Program pada Halaman 28 – Fibonacci B
Program Fibonacci_B;
uses crt;
var
fibobawah, fiboatas : integer;
i,x : integer;
Function Fibonacci (n:word):word;
Begin
If n < 2 then Fibonacci := n;
Else begin
Fibobawah := 0;
Fiboatas := 1;
For i := 2 to n do
Begin
X := fibobawah; Fiboatas := fiboatas;
End; Fibonacci := fiboatas;
End; end;
Var n : word;
Begin
Write(‘Suku ke berapa? ’);readln(n);
Writeln(‘Nilai suku ke ‘,n,’ adalah ‘,Fibonacci(n));
readln;
End.
Output:
9. Program pada Halaman 28 – Hitung Rata 1
Program HITUNG_RATA_1;
uses crt;
var
k,n,bil: integer;
jumlah: longint;
Rata: real;
a : array [0..100] of integer;
begin
inputdata (a,n);
writeln ('Banyaknya bilangan : ',n);
write ('Elemen arraynya adalah : ');
cetakarray(a,n);
writeln;
hitungjumlah (a,n,jumlah);
writeln('Jumlah akhir = ',jumlah);
rata := jumlah/n;
writeln ('Rata-rata = ',rata:2:2);
writeln ('--SELESAI--');
readln;
end.
Output:
Program HITUNG_RATA2;
uses crt;
{contoh Penggunaan Procedure dan array}
var k, n : integer;
Jumlah : longint;
RATA : real;
A : array[0..100]of integer;
procedure InputData;
begin
while A[n] <> -9 do begin
n := n + 1;
write('Masukkan bilangannya : ') ; readln (A[n]);
end; {end of while}
n := n-1;
end; {end of procedure}
Output:
procedure InputData;
begin
while A[n] <> -9 do begin
n := n + 1;
write( 'Masukkan bilangannya : '); readln(A[n]);
end; {end of while}
n := n-1;
end; {end of procedure}
procedure CetakArray;
var i: integer;
begin
for i := 1 to n do write(A[i],' , ' );
end;
Output:
12.Program pada Halaman 34 – Pengurutan Bubble
Program Urut_BUBBLE;
uses crt;
var i,j,k,temp,n : integer;
A, B, C : array [1..100] of integer;
begin
clrscr; textcolor(12);
write('Banyaknya Elemen Array : ') ; readln(n); {Input Data}
for i := 1 to n do A[i]:=random(1000);
Output:
13.Program pada Halaman 37 - Pengurutan Gravitasi
Program Urut_GRAVITASI;
uses crt;
var i,j,k,temp,n : integer;
A, B, C : array [1..100] of integer;
begin
clrscr; textcolor(12);
write('Banyaknya Elemen Array : '); readln(n);
{Input Data}
for i := 1 to n do
begin
write('Elemen ke-' ,i,': '); readln(A[i]);
end;
Output:
begin
clrscr; textcolor(8);
write('Banyaknya Elemen Array: '); readln(n);
{InputData}
for i := 1 to n do begin
write( 'Elemen ke-' ,i, ': '); readln(A[i]);
end;
{Cetak Array Sebelum Pengurutan}
writeln; textcolor(9); write('Sebelum diurutkan : ');
for i := 1 to n do write(A[i],' ');
writeln; writeln; textcolor(6);
writeln('Proses Pengurutan Seleksi : ');
for i := 1 to n-1 do begin
imaks := i;
for j := i+1 to n do
if A[j] < A[imaks] then imaks := j;
Output :
15.Program pada Halaman 43 - Pengurutan Insertion
Program INSERTION_SORT;
uses crt;
var i,j,k,temp,n : integer;
A,B,C : array [1..100] of integer;
begin
clrscr; textcolor(12);
write('Banyaknya Elemen Array : '); readln(n);
{Input Data}
for i := 1 to n do
begin
write('Elemen ke-' ,i,' : ') ; readln(A[i]);
end;
Output:
{Input Data}
for i := 1 to n do
begin write( 'Elemen ke -' ,i,' :' ) ; readln(A[i]);
end;
Output:
17.Program pada Halaman 47 – Sorting Selection
Program sorting_bubble_selection;
uses crt;
Type larik = array [1..10] of byte;
objek = object
bykdata : byte;
dataawal : larik;
procedure input;
procedure tukar (var a,b : byte);
procedure bubble (data : larik);
procedure selection (data : larik);
procedure cetak (data : larik);
end;
procedure objek.input;
var I : byte;
begin
repeat
write( 'Banyak Data [max 110] ? ');
readln (bykdata);
if (bykdata > 10) then
begin
writeln ( 'Data yang dimasukkan kebanyakan ');
readkey; writeln;
end;
until (bykdata<= 10);
for i := 1 to bykdata do
begin
write( 'Data ke-' ,i,' = '); readln (dataawal[i]);
end;
end;
Output:
Program Sorting_swap_insertion;
uses crt;
Type larik = array [1..10] of byte;
Objek = object
Bykdata : byte;
Dataawal : larik ;
procedure input;
procedure tukar (var a,b : byte);
procedure swap_insertion (data : larik);
procedure cetak (data : larik);
end;
procedure objek.input;
var i : byte;
begin
repeat
write('Banyak Data [max 110] ? ');
readln (bykdata); if (bykdata > 10) then
begin
writeln ( 'Data yang dimasukkan kebanyakan ');
readkey;
writeln;
end;
until (bykdata <= 10); for i := 1 to bykdata do
begin
write( ' Data ke-' ,i,'= ' ); readln (dataawal[i]);
end;
end;
procedure objek.tukar (var a, b : byte); var temp : byte;
begin
temp := a; a := b; b := temp;
end;
procedure objek.swap_insertion (data : larik);
var i, j, lok : byte;
begin
clrscr; writeln ( 'swap insertion sort ');
write ( 'awal' ); cetak (data);
for i := 1 to bykdata-i do begin
write( 'I = ',i,' '); j := i+1;
begin while (data[j] < data [j-1]) and (j > 1) do
begin tukar (data[j], data [j-1]); j := j-1;
{gotoxy (6, wherey);}
{write ( 'J = ',j); }
Cetak (data);
end;
end;
writeln ( ' akhir = ');
cetak (data);
readkey;
end;
end;
procedure objek.cetak (data : larik); var i : byte;
begin
for i := 1 to bykdata do
begin
gotoxy (i*10, wherey); write(data[i] : 5);
end;
writeln;
end;
var sort : objek;
begin
clrscr;
sort.input;
sort.swap_insertion(sort.dataawal); writeln; readln;
end.
Output:
PROGRAM MERGING_ARRAY;
uses crt;
var i,j,k,m,n,y,Temp : integer;
A,B,C : array[1..100] of integer;
Procedure Cetak_array(A:array of integer; x:integer);
var i : integer;
begin
write(' Hasilnya : ');
for i:= 0 to x-1 do write(A[i], ' ');
end;
procedure sisip(var A : array of integer; x:integer);
var i,j,temp : integer;
begin
for i := 1 to x-1 do
begin
temp := A[i]; j := i;
while (temp < A[j-1]) and (j > 0) do
j := j-1;
for k := i downto j do
A[k] := A[k-1];
A[j] := temp;
end;
end;
procedure Gabung(A,B : array of integer; m,n : integer;
var C : array of integer; var x : integer);
var i, j, k, y : integer;
begin
i := 0; j := 0; k := 0;
while (i <= m) and (j <= n) do
begin
if A[i] < B[j] then
begin
C[k]:= A[i];
i := i + 1;
end
else
begin
C[k] := B[j];
j := j + 1;
end;
k := k + 1;
write('i=',i,' j=',j,' k=',k,' ');
cetak_array(C,k-1);
writeln;
end;
if i > m then
begin
for y := k-1 to m+n do
begin
C[y] := B[j];
j := j + 1;
end;
end
else
if j > n then
begin
for y := k-1 to m+n do
begin
C[y] := A[i];
i := i + 1;
end;
end;
write('Setelah penggabungan : '); cetak_array(C,y);
x := y;
end;
begin
clrscr;
randomize;
writeln(' M E R G I N G');
write('Banyaknya elemen array pertama : ');
readln(m);
write('Banyaknya elemen array kedua : ');
readln(n);
for i := 1 to m do
A[i] := random(100);
for i := 1 to n do
B[i] := random(100);
writeln( 'Sebelum Penggabungan : ');
sisip(A,m);
write(' Array pertama : ');
cetak_array(A,m); writeln;
sisip(B,n);
write(' Array kedua : ');
cetak_array(B,n); writeln;
writeln('Proses Penggabungan : ');
Gabung(A,B,m,n,C,y);
writeln;
write('Setelah penggabungan : ');
cetak_array(C,y);
readln;
end.
Output:
Program Type_Data_Record;
Const pi=3.14;
Type Hasil = Record
JariJari : real;
Keliling : real;
Luas : real;
End;
Var Lingkaran : Hasil;
Begin
With Lingkaran Do
Begin
Write ('Jari-Jari lingkaran? '); readln (JariJari);
Keliling := 2*PI*JariJari;
Luas := PI * sqr(JariJari);
writeln;
Writeln ('Keliling Lingkaran = ', Keliling:7:2);
Writeln('Luas Lingkaran = ', Luas:7:2);
End;
readln;
End.
Output:
Program data_mhs;
Type
DataMhs : Record
NPM : Integer;
Nama : String[20];
IP : Real;
End;
Var
JumlahMhs, I, J : Byte;
Mahasiswa : Array [1..50] of DataMhs;
Temp : DataMhs;
Begin
{masukkan data mahasiswa}
Write ('Jumlah Mahasiswa ? ');
Readln(JumlahMhs);
For I := 1 to JumlahMhs Do
Begin
Writeln;
With Mahasiswa[I] Do
Begin
Writeln;
Write('NPM ke ', I:2,' ? ');
Readln (NPM);
Write ('Nama Mahasiswa ke ', I:2,' ? ');
Readln (Nama);
Write ('IP Mahasiswa ke ', I:2, ' ? ');
Readln (IP);
End;
End;
{Mengurutkan data berdasarkan NPM mahasiswa dengan Bubble Sort}
For I:= 1 to JumlahMhs-1 Do
For J:= 1 to JumlahMhs-I do
If Mahasiswa[J].NPM > Mahasiswa[J+1].NPM then
Begin
Temp := Mahasiswa[J];
Mahasiswa [J] := Mahasiswa [J+1];
Mahasiswa [J+1] := Temp;
End;
{menampilkan hasil}
Writeln;
Writeln('---------------------------------------------------------');
Writeln(' NPM Nama Mahasiswa IP ');
Writeln('---------------------------------------------------------');
For I := 1 to JumlahMhs Do
Begin
With Mahasiswa[I] Do
Writeln (NPM:5, Nama:20, IP:8:2);
End;
Writeln('---------------------------------------------------------');
readln;
End.
Output:
Program Hal61_datamhs;Type
TglLhr = Record
Hari : 1..31;
Bulan : 1..12;
Tahun : Word;
End;
Almt = Record
Jalan : String[35];
Kota : String [25];
End;
Mhs = Record
Nama: String[25];
Alamat : Almt;
TglLahir : TglLhr;
End;
Var
DataMhs : Mhs;
Begin {masukkan data Mahasiswa}
DataMhs.Nama := 'intan';
DataMhs.Alamat.Jalan := 'Muara 2';
DataMhs.Alamat.Kota := 'Jakarta';
DataMhs.TglLahir.Hari := 19;
DataMhs.TglLahir.Bulan := 11;
DataMhs.TglLahir.Tahun := 1997;
{menampilkan hasil}
With DataMhs Do
Begin
Writeln ('Nama Mahasiswa = ', Nama);
With Alamat Do
Begin
Writeln ('Alamat = ', Jalan);
Writeln (' ',Kota);
End;
With TglLahir Do
Begin
Writeln ('Tanggal Lahir = ',Hari:2, ' -', Bulan:2, ' -', Tahun:4); readln;
End;
End;
End.
Output :
23. Program pada Halaman 64 - Fileteks
Program FileTeks;
uses crt;
var
berkasteks : text;
kodebrg : string[5];
namabrg : string[20];
unitbrg : integer;
hargabrg : real;
lagi : char;
begin
assign (BerkasTeks, 'Barang.txt'); {hubungan dengan eksternal file}
rewrite(berkasteks);
lagi := 'y';
while upcase (lagi) = 'y' do
begin
clrscr;
gotoxy(5,6); write ('kode barang : ');
gotoxy(5,8); write ('nama barang : ');
gotoxy(5,10); write ('unit barang : ');
gotoxy(5,12); write ('harga satuan barang :');
gotoxy(27,6);readln(kodebrg);
gotoxy(27,8);readln(namabrg);
gotoxy(27,10);readln(unitbrg);
gotoxy(27,12);readln(hargabrg);
writeln(berkasteks,kodebrg:5,namabrg:20,unitbrg,hargabrg:10:2);
gotoxy(5,15);
write('ada data lagi (y/t)?');
readln(lagi);
end;
close(berkasteks);
readln;
end.
Output: