Kumpulan program latihan pemrograman struktural SI

Program InputArray;
uses wincrt;
const
mak=5;
var
A : array[1..mak] of integer;
begin
{memasukkan data dalam array}
a[1] := 10;
a[2] := 20;
a[3] := 30;
a[4] := 40;
a[5] := 50;
{menampilkan isi array}
writeln(a[1]);
writeln(a[2]);
writeln(a[3]);
writeln(a[4]);
writeln(a[5]);
readln;
end.

Program InputArray;
uses wincrt;
const
mak=5;
var

A : array[1..mak] of integer;
i : integer;
begin
{memasukkan data dalam array}
for i:=1 to mak do
begin
write('Masukkan nilai ',i,' : ');
readln(a[i]);
end;
{menampilkan isi array}
for i:=1 to mak do
writeln(a[i]);
readln;
end.

Program InputArray;
uses wincrt;
const
mak=50;
var

A : array[1..mak] of integer;
i,jml : integer;

begin
{memasukkan data dalam array}
write('Berapa jumlah data : ');
readln(jml);
for i:=1 to jml do
begin
write('Masukkan nilai ',i,' : ');
readln(a[i]);
end;
{menampilkan isi array}
for i:=1 to jml do

writeln(a[i]);
readln;
end.
Program InputArrayDgRandom;
uses wincrt;
const
mak=50;
var

A : array[1..mak] of integer;
i,jml : integer;
begin
{memasukkan data dalam array}
write('Berapa jumlah data : ');
readln(jml);
for i:=1 to jml do
a[i]:=random(30);
{menampilkan isi array}
for i:=1 to jml do
write(a[i],'

');
readln;
end.
Program mencari data terbesar dan data terkcil}
Program BesarKecil;
uses wincrt;
const

mak=100;

var
A : array[1..mak] of integer;
i,jml, besar, kecil : integer;
begin

{memasukkan data dalam array}
randomize;
write('Berapa jumlah data : ');
readln(jml);
for i:=1 to jml do

a[i]:=random(100);
{menampilkan isi array}
for i:=1 to jml do
write(a[i],'
');
besar := A[1];
kecil := A[1];
for i:=2 to jml do
begin
if A[i]>besar then
besar:=A[i];
if A[i]A[j] then
begin
tamp:=A[i];
A[i]:=A[j];
A[j]:=tamp;
end;
{menampilkan isi array}
writeln;writeln('Data setelah diurutkan');
for i:=1 to jml do

write(a[i],'
');
writeln;writeln('Data tekecil : ',A[1]);
writeln('Data terbesar : ',A[jml]);
readln;
end.

Program BilPrima;
uses wincrt;
const

mak=100;

var
A : array[1..mak] of integer;
i,j, jml,jmlbagi : integer;
begin
{memasukkan data dalam array}
randomize;
write('Berapa jumlah data : ');

readln(jml);
for i:=1 to jml do
A[i]:=random(20);
{menampilkan isi array}
writeln;writeln('Data dalam array');
for i:=1 to jml do
write(a[i],'
');
jmlbagi:=0;
writeln;writeln;writeln('Bilangan Primanya');
for i:=1 to jml do
begin
for j:=1 to A[i] do
begin
if A[i] mod j = 0 then
jmlbagi:=jmlbagi+1;
end;
writeln(A[i],' ada ',jmlbagi,' bilangan habis pembagi');
if jmlbagi=2 then
writeln(a[i],' bilangan prima')

else
writeln(a[i],' bukan bilangan prima');
writeln;
jmlbagi:=0;
end;
readln;
end.
uses wincrt;
{memanggil unit crt}
const
mak = 11;
var
pilih : char;
kotak : array[1..mak,1..mak] of char;
i,j
: integer;

begin
clrscr;
repeat

clrscr;
writeln('Menu Pilihan');
writeln('============');
writeln('1 Diagonal kebawah');
writeln('2. Diagonal keatas');
writeln('3. Silang');
writeln('4. Segitiga siku-siku kiri atas');
writeln('5. Segitiga siku-siku kanan bawah');
writeln('6. Segitiga siku-siku kiri bawah');
writeln('7. Segitiga siku-siku kanan atas');
writeln('8. Selesai');
write('Pilihan anda [1..8] : ');
readln(pilih);
case pilih of
'1' :
begin
{mengisi bintang}
for i:= 1 to mak do
for j:= 1 to mak do
if i=j then

kotak[i,j]:='*'
else
kotak[i,j]:=' ';
{menampilkan isi array}
for i:=1 to mak do
begin
for j:=1 to mak do
write(kotak[i,j]);
writeln;
end;
readln;
end;
'2' :
begin

{mengisi bintang}
for i:= 1 to mak do
for j:= 1 to mak do
if i+j=mak+1 then
kotak[i,j]:='*'

else
kotak[i,j]:=' ';

end;
'3' :

{menampilkan isi array}
for i:=1 to mak do
begin
for j:=1 to mak do
write(kotak[i,j]);
writeln;
end;
readln;

begin

{mengisi bintang}
for i:= 1 to mak do
for j:= 1 to mak do
if (i=j) or (i+j = mak+1) then
kotak[i,j]:='*'
else
kotak[i,j]:=' ';
{menampilkan isi array}
for i:=1 to mak do
begin
for j:=1 to mak do
write(kotak[i,j]);
writeln;
end;
readln;

end;
'4' :
begin

{mengisi bintang}
for i:= 1 to mak do
for j:= 1 to mak do
if i+jmak then
kotak[i,j]:='*'
else
kotak[i,j]:=' ';

end;
'6' :

{menampilkan isi array}
for i:=1 to mak do
begin
for j:=1 to mak do
write(kotak[i,j]);
writeln;
end;
readln;

begin

{mengisi bintang}
for i:= 1 to mak do
for j:= 1 to mak do
if i>=j then
kotak[i,j]:='*'
else
kotak[i,j]:=' ';
{menampilkan isi array}
for i:=1 to mak do
begin
for j:=1 to mak do
write(kotak[i,j]);
writeln;
end;
readln;

end;
'7' :
begin

{mengisi bintang}
for i:= 1 to mak do
for j:= 1 to mak do
if i=80 then
huruf:='A'
else if rt >= 70 then
huruf := 'B'
else if rt >= 60 then
huruf := 'C'
else if rt >= 50 then
huruf := 'D'
else
huruf := 'E';
end;
procedure isi;
var
nama,nim,nmmk : string;
i,sks,uts,uas,tgs : integer;
rata : real;
jw : char;
begin
gotoxy(12,3);readln(nama);
gotoxy(12,4);readln(nim);
i:=1;
repeat
gotoxy(3,8+i);write(i);
gotoxy(8,8+i);readln(nmmk);
gotoxy(28,8+i);readln(sks);
gotoxy(37,8+i);readln(uts);

gotoxy(45,8+i);readln(uas);
gotoxy(53,8+i);readln(tgs);
rata:=(uts+uas+tgs)/3;
gotoxy(61,8+i);write(rata:2:1);
gotoxy(73,8+i);write(huruf(rata));
gotoxy(40,5);write('Isi data lagi [y/t] : ');
readln(jw);
gotoxy(40,5);clreol;
i:=i+1;
until(jw = 't');
end;

{Program Utama}
begin
tabel;
isi;
end.
Program KHS mahasiswa dengan record
uses wincrt;
procedure cetak(klm,brs:integer;teks:string);
begin
gotoxy(klm,brs);write(teks);
end;
procedure cetakC(brs:integer;teks:string);
begin
gotoxy(40-length(teks) div 2,brs);write(teks);
end;
procedure tabel;
var
i:integer;
begin
cetakC(1,'KARTU HASIL STUDI MAHASISWA');
cetakC(2,'PRODI SISTEM INFORMASI - S1');
cetak(1,3,'Nama
: ');
cetak(1,4,'NIM
: ');
cetak(1,6,'===================================================================
============');
cetak(1,7,'| No |
Nama MK
|
SKS
| UTS | UAS | TGS |
Rata2 |
HURUF |');
cetak(1,8,'===================================================================
============');
for i:=1 to 10 do
cetak(1,8+i,'|
|
|
|
|
|
|
|
|');
cetak(1,9+i,'=================================================================
==============');
cetak(1,10+i,'|
IP
|
|');

cetak(1,11+i,'================================================================
===============');
end;
function huruf(rt:real):char;
begin
if rt >=80 then
huruf:='A'
else if rt >= 70 then
huruf := 'B'
else if rt >= 60 then
huruf := 'C'
else if rt >= 50 then
huruf := 'D'
else
huruf := 'E';
end;
procedure isi;
Type
mk = record
nmmk : string;
sks,uts,uas,tgs : integer;
rata : real;
end;
var
nama,nim : string;
i : integer;
jw : char;
matkul : array[1..10] of mk;
begin
gotoxy(12,3);readln(nama);
gotoxy(12,4);readln(nim);
i:=1;
repeat
with matkul[i] do
begin
gotoxy(3,8+i);write(i);
gotoxy(8,8+i);readln(nmmk);
gotoxy(28,8+i);readln(sks);
gotoxy(37,8+i);readln(uts);
gotoxy(45,8+i);readln(uas);
gotoxy(53,8+i);readln(tgs);
rata:=(uts+uas+tgs)/3;
gotoxy(61,8+i);write(rata:2:1);
gotoxy(73,8+i);write(huruf(rata));
gotoxy(40,5);write('Isi data lagi [y/t] : ');
readln(jw);
gotoxy(40,5);clreol;
i:=i+1;
end;
until(jw = 't');

end;

{Program Utama}
begin
tabel;
isi;
end.

Program IsiTabungDgProsedur;
uses wincrt;
{prosedur isi tabung}
Procedure isi_tabung(jari,tinggi:integer);
var
isi : real;
begin
isi := (3.14 * jari * jari)*tinggi;
writeln('Isi tabung jari2 ',jari:3,' tinggi ',tinggi,' adalah : ',isi:3:2);
end;

{Program Utama}
Begin
isi_tabung(3,10);
readln;
End
{program input dari keyboard}
Program IsiTabungDgProsedur;
uses wincrt;
{prosedur isi tabung}
Procedure isi_tabung(jari,tinggi:integer);
var
isi : real;
begin
isi := (3.14 * jari * jari)*tinggi;
writeln('Isi tabung jari2 ',jari:3,' tinggi ',tinggi,' adalah : ',isi:3:2);
end;
var
jari2, tinggitab : integer;
{Program Utama}
Begin
write('Masukkan jari2 : ');readln(jari2);
write('Masukkan tinggi : ');readln(tinggitab);
isi_tabung(jari2,tinggitab);
readln;
End.

Program IsiTabungDgFungsi;
uses wincrt;
{fungsi isi tabung}
function isi_tabung(jari,tinggi:integer):real;
begin
isi_tabung := (3.14 * jari * jari)*tinggi;
end;
var

jari2, tinggitab : integer;
isitab : real;

{Program Utama}
Begin
write('Masukkan jari2 : ');readln(jari2);
write('Masukkan tinggi : ');readln(tinggitab);
isitab:=isi_tabung(jari2,tinggitab);
writeln('Isi tabung jari2 ',jari2:3,' tinggi ',tinggitab,' adalah :
',isitab:3:2);
readln;
End.
{cara panggil fungsi kedua}
Program IsiTabungDgFungsi;
uses wincrt;
{fungsi isi tabung}
function isi_tabung(jari,tinggi:integer):real;
begin
isi_tabung := (3.14 * jari * jari)*tinggi;
end;
var
jari2, tinggitab : integer;
{Program Utama}
Begin
write('Masukkan jari2 : ');readln(jari2);
write('Masukkan tinggi : ');readln(tinggitab);
writeln('Isi tabung jari2 ',jari2:3,' tinggi ',tinggitab,' adalah : ',
isi_tabung(jari2,tinggitab):3:2);
readln;
End.