Anda di halaman 1dari 10

Laporan Praktikum Kom.

Data 1

JUDUL :

“Penggambaran Sinyal Analog dan Digital Menggunakan


Borland Delphi “

FLOWCHART :

start

Sumbu x,
sumbu y,
data biner

Data[i]=’1'

x2:=i*round(pnjg)-round(pnjg); x2:=i*round(pnjg)-round(pnjg);
Image1.Canvas.MoveTo(x2,y1-50); Image1.Canvas.MoveTo(x2,y1-100);
x3:=(i+1)*round(pnjg)-round(pnjg); x3:=(i+1)*round(pnjg)-round(pnjg);
Image1.Canvas.LineTo(x3,y1-50); Image1.Canvas.LineTo(x3,y1-100);

Data[i]><data[i
+1]

x3:=(i+1)*round(pnjg)-round(pnjg);
Image1.Canvas.MoveTo(x3,y1-100);
Image1.Canvas.LineTo(x3,y1-50);

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

start

Sumbu x,
sumbu y,
frekuensi,
amplitudo

(Tampilkan)
sy:=sin(sx/pi/
frek)*amp;
Image1.Canvas.Pi
xels[sx+x,150-
round(sy)]:=clblue;
Memo1.Lines.Add(
'x['+inttostr(sx)+'] =
'+formatfloat('#.##
#',(sy)));

Memo1.ScrollBars :=ssVertical;

(Bersihkan)
sy:=sin(sx/pi/frek)*amp;
Image1.Canvas.Pixels[sx+x,
150-round(sy)]:=clwhite;
Image1.Canvas.MoveTo(x,0)
;
for sx:=1 to 800 do
Image1.Canvas.Pixels[x,sx]:
=clwhite;
Image1.Canvas.MoveTo(0,y)
;
for sx:=1 to 800 do
Image1.Canvas.Pixels[sx,y]:
=clwhite;

LISTING PROGRAM :

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, ExtCtrls, StdCtrls;

type
Tfrmsinyal = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
edsumbux: TEdit;

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

3
edsumbuy: TEdit;
report: TMemo;
btsinewave: TButton;
Imgsinus: TImage;
edampl: TEdit;
Label3: TLabel;
rdfrekuensi: TRadioGroup;
btclear: TButton;
Panel2: TPanel;
Imgkotak: TImage;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
eddigx: TEdit;
eddigy: TEdit;
edbiner: TEdit;
btdigitalwave: TButton;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
procedure btsinewaveClick(Sender: TObject);
procedure reportChange(Sender: TObject);
procedure btclearClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btdigitalwaveClick(Sender: TObject);
procedure ImgkotakClick(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
frmsinyal: Tfrmsinyal;

implementation

{$R *.dfm}

procedure sumbu (ax,ay,b,c:integer);


begin
frmsinyal.Imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.Imgsinus.Canvas.LineTo(ax+b,ay);
frmsinyal.Imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.Imgsinus.Canvas.LineTo(ax,ay-c);
frmsinyal.Imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.Imgsinus.Canvas.LineTo(ax,ay+c);
end;

procedure sumbu2 (ax,ay,b,c:integer);


begin
frmsinyal.Imgkotak.Canvas.MoveTo(ax,ay);
frmsinyal.Imgkotak.Canvas.LineTo(ax+b,ay);
frmsinyal.Imgkotak.Canvas.MoveTo(ax,ay);
frmsinyal.Imgkotak.Canvas.LineTo(ax,ay-c);
frmsinyal.Imgkotak.Canvas.MoveTo(ax,ay);
frmsinyal.Imgkotak.Canvas.LineTo(ax,ay+c);
end;

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

4
procedure Tfrmsinyal.btsinewaveClick(Sender: TObject);
var sx,x,y,ampl:integer;
sy:real;
frek:double;
begin
x:=strtoint(edsumbux.Text);
y:=strtoint(edsumbuy.Text);
ampl:=strtoint(edampl.Text);
case rdfrekuensi.ItemIndex of
0: frek:=20;
1: frek:=10;
2: frek:=4;
3: frek:=2;
4: frek:=1;
5: frek:=0.5;
end;
sumbu(x,y,35,150);
for sx:=1 to 395 do
begin
sy:=sin(sx/pi/frek)*ampl;
imgsinus.Canvas.Pixels[sx+x,150-round(sy)]:=clblue;
report.Lines.Add('x['+inttostr(sx)+']='+formatfloat('#.###',(sy)));
end;
edampl.Enabled:=false;
btsinewave.Enabled:=false;
rdfrekuensi.Enabled:=false;
end;

procedure Tfrmsinyal.reportChange(Sender: TObject);


begin
report.ScrollBars:=ssVertical;
end;

procedure Tfrmsinyal.btclearClick(Sender: TObject);


var sx,x,y,ampl:integer;
sy:real;
frek:double;
begin
x:=strtoint(edsumbux.Text);
y:=strtoint(edsumbuy.Text);
ampl:=strtoint(edampl.Text);

case rdfrekuensi.ItemIndex of
0: frek:=20;
1: frek:=10;
2: frek:=4;
3: frek:=2;
4: frek:=1;
5: frek:=0.5;
end;
btsinewave.Enabled:=true;
edampl.Enabled:=true;
rdfrekuensi.Enabled:=true;
rdfrekuensi.ItemIndex:=0;
report.Lines.Clear;
report.ScrollBars:=ssNone;

// kosongkan kurva
for sx:=1 to 395 do
begin

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

5
sy:=sin(sx/pi/frek)*ampl;
imgsinus.Canvas.Pixels[sx+x,150-round(sy)]:=clwhite;
end;
// hapus Sumbu X
imgsinus.Canvas.MoveTo(x,0);
for sx:=1 to 800 do
imgsinus.Canvas.Pixels[x,sx]:=clwhite;

//hapus Sumbu Y
imgsinus.Canvas.MoveTo(0,y);
for sx:=1 to 800 do
imgsinus.Canvas.Pixels[sx,y]:=clwhite;
end;

procedure Tfrmsinyal.FormCreate(Sender: TObject);


begin
rdfrekuensi.ItemIndex:=0;
end;

procedure Tfrmsinyal.btdigitalwaveClick(Sender: TObject);


var
i,j,n,x1,y1,y2,x2,x3:integer;
data:string;
sy:real;
pjg:double;
begin
imgkotak.Picture:=nil;
x1:=strtoint(eddigx.Text);
y1:=strtoint(eddigy.Text);
data:=edbiner.Text;
n:=length(edbiner.Text);
pjg:=imgkotak.Width/round(n);
sumbu2(x1,y1,380,255);
end;
for i:=0 to n do
begin
if data[i]='1' then
begin
x2:=i*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x2,y1-100);
x3:=(i+1)*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x3,y1-100);
end
else
begin
x2:=i*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x2,y1-50);
x3:=(i+1)*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x3,y1-50);
end;
if data[i]<>data[i+1] then
begin
x3:=(i+1)*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x3,y1-100);
imgkotak.Canvas.LineTo(x3,y1-50);
end;
end;
end;

end.

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

ANALISIS DATA :

1. Menggambarkan Sumbu Koordinat maka diperlukan prosedur sumbu


seperti dibawah ini :
a.
ay-c

Ay+c Ax+b

procedure sumbu (ax,ay,b,c:integer);


begin
frmsinyal.Imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.Imgsinus.Canvas.LineTo(ax+b,ay);
frmsinyal.Imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.Imgsinus.Canvas.LineTo(ax,ay-c);
ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068
frmsinyal.Imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.Imgsinus.Canvas.LineTo(ax,ay+c);
end; // sumbu X dan Y pada gelombang
Laporan Praktikum Kom.Data 1

*Sumbu kotak sama dengan sinus.

Untuk memerintah agar gambar itu muncul maka diperlukan prosedur


seperti dibawah ini dimana

procedure Tfrmsinyal.btsinewaveClick(Sender: TObject); // double klik pada button


var sx,x,y,ampl:integer;// merupakan inisialisasi.
sy:real;
frek:double;
begin
x:=strtoint(edsumbux.Text);
y:=strtoint(edsumbuy.Text);
ampl:=strtoint(edampl.Text);// berapa nilai x,y,atau amplitudo yang diingikan
case rdfrekuensi.ItemIndex of
0: frek:=20;
1: frek:=10;
2: frek:=4;
3: frek:=2;
4: frek:=1;
5: frek:=0.5; // berapa nilai frekuensi yang diinginkan dengan pilihn yang tersedia
end;
sumbu(x,y,35,150); //posisi sumbu
for sx:=1 to 395 do // lebar pendek sumbu
begin
sy:=sin(sx/pi/frek)*ampl;
imgsinus.Canvas.Pixels[sx+x,150-round(sy)]:=clblue;
report.Lines.Add('x['+inttostr(sx)+']='+formatfloat('#.###',(sy)));
end; //Rumus untuk menggambarkan suatu nilai sinus
edampl.Enabled:=false;
btsinewave.Enabled:=false;
rdfrekuensi.Enabled:=false;
end;

procedure Tfrmsinyal.reportChange(Sender: TObject);


begin
report.ScrollBars:=ssVertical;
end; // Report/ Memo tersebut untuk menmpilkan suatu nilai sinus tersebut

frekuensi 1 Hz

frekuensi 6 Hz

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

2. Untuk tombol reset maka diperlukan prosedur seperti dibawah ini :

procedure Tfrmsinyal.btclearClick(Sender: TObject);


var sx,x,y,ampl:integer;
sy:real;
frek:double;
begin
x:=strtoint(edsumbux.Text);
y:=strtoint(edsumbuy.Text);
ampl:=strtoint(edampl.Text);

case rdfrekuensi.ItemIndex of
0: frek:=20;
1: frek:=10;
2: frek:=4;
3: frek:=2;
4: frek:=1;
5: frek:=0.5;
end;
btsinewave.Enabled:=true;
edampl.Enabled:=true;
rdfrekuensi.Enabled:=true;
rdfrekuensi.ItemIndex:=0;
report.Lines.Clear;
report.ScrollBars:=ssNone;

// kosongkan kurva
for sx:=1 to 395 do
begin
sy:=sin(sx/pi/frek)*ampl;
imgsinus.Canvas.Pixels[sx+x,150-round(sy)]:=clwhite;
end;
// hapus Sumbu X
imgsinus.Canvas.MoveTo(x,0);
for sx:=1 to 800 do
imgsinus.Canvas.Pixels[x,sx]:=clwhite;

//hapus Sumbu Y
imgsinus.Canvas.MoveTo(0,y);
for sx:=1 to 800 do
imgsinus.Canvas.Pixels[sx,y]:=clwhite;
end;

procedure Tfrmsinyal.FormCreate(Sender: TObject);


begin
rdfrekuensi.ItemIndex:=0;
end;

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

3. Untuk sinyal digital maka diperlukan biner maka prosedur yang


digunakan adalah seperti dibawah ini :

procedure Tfrmsinyal.btdigitalwaveClick(Sender: TObject);


var
i,j,n,x1,y1,y2,x2,x3:integer;
data:string;
sy:real;
pjg:double; // inisialisasi
begin
imgkotak.Picture:=nil; // reset gambar
x1:=strtoint(eddigx.Text);
y1:=strtoint(eddigy.Text);
data:=edbiner.Text;
n:=length(edbiner.Text);
pjg:=imgkotak.Width/round(n); // Input data untuk sinyal digital
sumbu2(x1,y1,380,255);
end;
for i:=0 to n do
begin
if data[i]='1' then
begin
x2:=i*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x2,y1-100);
x3:=(i+1)*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x3,y1-100);
end
else
begin
x2:=i*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x2,y1-50);
x3:=(i+1)*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x3,y1-50);
end;
if data[i]<>data[i+1] then
begin
x3:=(i+1)*round(pjg)-round(pjg);
imgkotak.Canvas.MoveTo(x3,y1-100);
imgkotak.Canvas.LineTo(x3,y1-50);
end;
end;
end;

end.

KESIMPULAN

Dari praktikum tersebut, untuk menggambarkan sinyal analog ataupun


digital diperlukan suatu prosedur yang menyatakan suatu sumbu dengan
koordinat x dan y.

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068


Laporan Praktikum Kom.Data 1

10
Gelombang sinus memilki referensi koordinat awal yaitu (0,0) dan berada
pada pojok kiri atas.

ARSIVI AZIZAH DAYANTI / 2A.06/ 0931130068

Anda mungkin juga menyukai