listing contoh program pemrograman terstruktur (part 2)
Embed Size (px)
DESCRIPTION
ada beberapa program yang setelah di-run hasilnya tidak sesuai dengan yang diinginkan, harap menganalasis program tersebut dan membenarkannya. selamat belajar!TRANSCRIPT

Listing Contoh Program Pemrograman Terstruktur (part 2)
Program Set 2
Unit Menghitung Huruf 4
Unit Larik Dinamis 7
Project Deviasi 11
Project Alamat 13
Project Matriks 16
Unit Segitiga Pascal 20
Project Insertion 22
Project Selection 25

program Project1_set;
{$apptype console}
uses
Forms;
{$R *.res}
type
THuruf = set of Char;
var
Terpakai, TakTerpakai : THuruf;
Huruf: char;
procedure Cetakhasil;
var h : char;
begin
for h := 'A' to 'z' do
if [h] <= Terpakai then write(' ',h);
writeln;
end;
begin
Application.Initialize;
Application.Run;
Terpakai := [];
TakTerpakai := ['A'..'Z','a'..'z'];

writeln('Tulis sebuah kalimat: ');
while not eoln do begin
read(Huruf);
if [Huruf] <= TakTerpakai then begin
Terpakai := Terpakai + [Huruf];
TakTerpakai := TakTerpakai - [Huruf];
end;
end;
Cetakhasil;
readln;
readln;
end.

unit Unit1_menghitung_huruf;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
type
THuruf = set of char;
const
cVokal = ['A','I','U','E','O','a','i','u','e','o'];
CKonsonan : THuruf = ['A'..'Z','a'..'z'] - cVokal;
var
CacahKarakter, CacahVokal, CacahKOnsonan : Integer;
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
teks : string;
begin
CacahKarakter :=0;
CacahVokal :=0;
CacahKonsonan := 0;
teks := Edit1.Text;
for i:=1 to length(teks) do begin
inc(CacahKarakter);

if teks[i] in cVokal then
inc(CacahVokal)
else if teks[i] in cKonsonan then
inc(CacahKonsonan);
end;
Edit2.Text := IntToStr(CacahKarakter);
Edit3.Text := IntToStr(CacahKonsonan);
Edit4.Text := IntToStr(CacahVokal);
end;
end.

unit Unit1_larik_dinamis;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

Data: array of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Randomize;
SetLength(Data,20);
for i:= Low(Data) to High(Data) do
Data[i]:= Random(100);
Memo1.Clear;
for i:= low(Data) to high(Data) do
Memo1.Lines.Add(IntToStr(Data[i]));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,k,t: integer;
begin
for i:=low(Data) to high(Data) do begin
k:=i;

for j:=i+1 to Memo1.Lines.Count-1 do
if Data[k] > Data[j] then k:=j;
t:=Data[i];
Data[i]:=Data[k];
Data[k]:=t;
end;
Memo1.Clear;
for i:= low(Data) to high(Data) do
Memo1.Lines.Add(IntToStr(Data[i]));
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,j,k,t: integer;
begin
for i:=low(Data) to high(Data) do begin
k:=i;
for j:= i+1 to Memo1.Lines.Count-1 do
if Data[k]>Data[j] then k:=j;
t:=Data[i];
Data[i] := Data[k];
Data[k]:=t;
memo1.Lines[i]:=inttostr(Data[i]);
memo1.Lines[k]:=inttostr(Data[k]);
sleep(500);

end;
end;
end.

program Project1_deviasi;
{$apptype console}
uses
Forms;
{$R *.res}
var
n,hitung : integer;
jumlah,rerata,deviasi: real;
x : array [1..100] of real;
begin
Application.Initialize;
Application.Run;
begin
write('berapa data yang akan direratakan? ');
readln(n);
writeln;
jumlah := 0;
for hitung := 1 to n do begin
write('i = ',hitung:3,' x = ');
readln(x[hitung]);
jumlah := jumlah + x[hitung];
end;

rerata := jumlah/n;
writeln('reratanya adalah: ',rerata:5);
writeln;
end;
begin
for hitung := 1 to n do begin
deviasi := x[hitung] - rerata;
write('i = ',hitung:3,' x = ',x[hitung]:5);
writeln(' nilai deviasi = ',deviasi:5)
end;
end;
readln;
end.

program Project1_alamat;
{$apptype console}
uses
Forms;
{$R *.res}
var
hitung, hitungnama, hitungjalan, hitungkota : 0..60;
nama, jalan, kota : array [1..60] of char;
procedure baca;
begin
write('Nama : ');
hitung := 0;
repeat
hitung := hitung + 1;
read(nama[hitung]);
until eoln;
hitungnama:= hitung;
readln;
write('Alamat : ');
hitung := 0;
repeat
hitung := hitung + 1;

read(jalan[hitung]);
until eoln;
hitungjalan:= hitung;
readln;
write('Kota : ');
hitung := 0;
repeat
hitung := hitung + 1;
read(kota[hitung]);
until eoln;
hitungkota:= hitung;
readln;
end;
procedure tulis;
begin
for hitung := 1 to hitungnama do write(nama[hitung]);
writeln;
for hitung := 1 to hitungjalan do write(jalan[hitung]);
writeln;
for hitung := 1 to hitungkota do write(kota[hitung]);
end;
begin

Application.Initialize;
Application.Run;
baca;
writeln;
tulis;
readln;
end.

program Project1_matriks;
{$apptype console}
uses
Forms;
{$R *.res}
type
matriks = array [1..3,1..3] of real;
procedure bacamatriks(var m:matriks);
var
i,j: integer;
begin
for i:= 1 to 3 do
for j:= 1 to 3 do begin
write('elemen matriks (',i,',',j,'): ');
readln(m[i,j]);
end;
end;
procedure tulismatriks(m:matriks);
var i,j: integer;
begin

writeln('isi matriks');
for i:= 1 to 3 do begin
for j:= 1 to 3 do
write(m[i,j]:8:3);
writeln;
end;
end;
procedure tambahmatriks(m1,m2:matriks; var m3:matriks);
var
i,j:integer;
begin
for i:= 1 to 3 do
for j:= 1 to 3 do
m3[i,j] := m1[i,j] + m2[i,j];
end;
procedure kalimatriks(m1,m2:matriks; var m3:matriks);
var
i,j,k:integer;
begin
for i:= 1 to 3 do
for j:= 1 to 3 do begin
m3[i,j] := 0;
for k := 1 to 3 do

m3[i,j] := m3[i,j] + m1[i,k] * m2[k,j];
end;
end;
var
a,b,c : matriks;
pilihan : char;
begin
Application.Initialize;
Application.Run;
pilihan := '1';
while pilihan <> '5' do begin
writeln('matriks');
writeln('1. baca matriks a');
writeln('2. baca matriks b');
writeln('3. matriks c = a + b');
writeln('4. matriks c = a x b');
writeln('5. selesai');
write('pilih salah satu: ');
readln(pilihan);
case pilihan of
'1' : bacamatriks(a);
'2' : bacamatriks(b);
'3' : begin
tambahmatriks(a,b,c);

tulismatriks(c);
end;
'4' : begin
kalimatriks(a,b,c);
tulismatriks(c);
end;
end;
end;
end.

unit Unit1_segitigapascal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tpascal: array of array of integer;
implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
maxn,i,j: integer;
st : string;
begin
memo1.Clear;
maxn := strtoint(edit1.Text);
setlength(tpascal,maxn);
for i := low(tpascal) to high(tpascal) do begin
setlength(tpascal[i], i+1);
tpascal[i][0] := 1;
for j := 1 to i-1 do
tpascal[i][j]:= tpascal[i-1,j-1]+tpascal[i-1,j];
tpascal[i][i] := 1;
st := ' ';
for j:= 0 to i do
st := st+format('%4d',[tpascal[i,j]]);
memo1.Lines.Add(st);
end;
end;
end.

program Project1_insertion;
{$apptype console}
uses
Forms;
{$R *.res}
type
tipearray = array [1..100] of integer;
var
arrayinteger : tipearray;
dataitem, jumlahitem : integer;
const
teks = 'Masukan bilangan (0 untuk berhenti) : ';
procedure daftararray(var arrayint:tipearray; jumlahitem:integer);
var
indeks : integer;
begin
write(' Isi Daftar ', jumlahitem, ' Item');
for indeks := 1 to jumlahitem do
write(arrayint[indeks]:4);

writeln;
end;
procedure sisip(var arrayint:tipearray; itembaru,jumlahitem:integer);
var
lokasi,indeks:integer;
begin
if jumlahitem = 1 then
arrayint[1] := itembaru
else
if itembaru > arrayint[lokasi] then
arrayint[jumlahitem] := itembaru
else
begin
lokasi := 1;
while itembaru > arrayint[lokasi] do
lokasi := lokasi + 1;
for indeks := jumlahitem downto lokasi do
arrayint[indeks] := arrayint[indeks-1];
arrayint[lokasi] := itembaru
end;
daftararray(arrayint,jumlahitem);
end;
begin

Application.Initialize;
Application.Run;
write(teks);
readln(dataitem);
jumlahitem := 0;
while dataitem <> 0 do
begin
jumlahitem := jumlahitem + 1;
sisip(arrayinteger,dataitem,jumlahitem);
write(teks);
readln(dataitem);
end;
readln;
daftararray(arrayinteger,jumlahitem);
writeln;
readln;
end.

program Project1_selection;
{$apptype console}
uses
Forms;
{$R *.res}
const
teks = 'Masukan bilangan ( masukan 0 untuk berhenti) :';
type
tipearray = array [1..100] of integer;
var
arrayinteger : tipearray;
dataitem, jumlahitem : integer;
procedure daftararray(var arrayint : tipearray; jumlahelemen : integer);
var
indeks : integer;
begin
write('Isi Daftar ',jumlahelemen, ' Item : ');
for indeks := 1 to jumlahelemen do
write(arrayint[indeks]:4);
writeln;
end;

procedure swap(var a,b : integer);
var
c : integer;
begin
c := a;
a := b;
b := c;
end;
procedure sort(var arrayint : tipearray; jumlahelemen : integer);
var
lokasi,indeks,terkecil:integer;
begin
for lokasi:= 1 to jumlahelemen - 1 do
begin
terkecil := lokasi;
for indeks:= lokasi+1 to jumlahelemen do
terkecil := indeks;
swap(arrayint[lokasi],arrayint[terkecil])
end;
end;
begin
Application.Initialize;

Application.Run;
write(teks);
readln(dataitem);
jumlahitem:= 0;
while dataitem <> 0 do
begin
jumlahitem := jumlahitem + 1;
arrayinteger[jumlahitem] := dataitem;
write(teks);
readln(dataitem);
end;
daftararray(arrayinteger,jumlahitem);
//writeln;
//readln;
sort(arrayinteger,jumlahitem);
//writeln;
daftararray(arrayinteger,jumlahitem);
//writeln;
readln;
end.
