laporan praktikum ii
DESCRIPTION
PengkodeanTRANSCRIPT
LAPORAN PRAKTIKUM IIKOMUNIKASI DATAPENGKODEAN DATA DIGITAL( RZ, NRZ-L, D-MANCHESTER, AMI )
Oleh :Ridho Wicaksono ( 18 / TT 2D )1331130035
PROGRAM STUDI TEKNIK TELEKOMUNIKASIJURUSAN TEKNIK ELEKTROPOLITEKNIK NEGERI MALANG2015
BAB IPENDAHULUAN
1.1 Tujuan1.1.1 Tujuan Umum(1.) Memahami macam-macam pengkodean data digital ( RZ , NRZ-L , D-MANCHESTER , AMI )(2.) Memahami teknik pengkodean data digital(3.) Mampu melakukan simulasi pengodean data digital
1.1.2 Tujuan Khusus(1.) Membuat program untuk mensimulasikan karakteristik pengkodean data digital ( RZ , NRZ-L , D-MANCHESTER , AMI )(2.) Membuat flowchart teknik pengkodean data digital.
1.2 Teori Penunjang1.2.1 Pengkodean sinyal digital
Data digital merupakan data yang memiliki deretan nilai yang berbeda dan memiliki ciri-ciri tersendiri. Contoh data digital adalah teks, deretan bilangan, dan karakter-karakter yang lain. Data digital dalam bentuk karakter yang dapat dipahami manusia tidak dapat langsung ditransmisikan dalam sistem komunikasi, data harus terlebih dahulu diubah ke dalam bentuk biner. Jadi, data digital ditransmisikan dalam bentuk deretan biner. Sedangkan sinyal digital merupakan sinyal untuk menampilkan data digital. Deretan pulsa yang berbeda dan tidak terjadi secara terus-menerus merupakan contoh sinyal digital.Pengkodean data digital ditujukan untuk membangun sinyal digital, yang meliputi: unipolar, polar dan bipolar. Unipolar merupakan pengkodean paling sederhana dimana data digital yang telah berbentuk biner di diubah ke bentuk pulsa, biner 1 diwujudkan dalam suatu tegangan positif dan biner 0 sebagai tanpa tegangan atau nol volt. Gambar 2.1 menampilkan contoh sinyal digital sederhana dari suatu data 101100110B.
Gambar 1. Sinyal digital unipolar dari data 101100110B
Pengkodean polar bercirikan menggunakan dua level tegangan positif dan negatif sehingga dapat mengeliminasi timbulnya komponen DC. Pengkodean polar terdiri atas NRZ (non return to zero), RZ (return to zero) dan biphase.
Faktor yang menentukan sukses dari receiver dalam mengartikan sinyal yang datang : 1. Data rate (kecepatan data) : peningkatan data rate akan meningkatkan bit errorrate (kecepatan error dari bit). 2. S/N : peningkatan S/N akan menurunkan bit error rate. 3. Bandwidth : peningkatan bandwidth dapat meningkatkan data rate.
Lima faktor yang perlu dinilai atau dibandingkan dari berbagai teknik komunikasi : 1. Spektrum sinyal : disain sinyal yang bagus harus mengkonsentrasikan kekuatantransmisinya pada daerah tengah dari bandwidth transmisi; untuk mengatasi distorsi dalam penerimaan sinyal digunakan disain kode yang sesuai dengan bentuk dari spektrum sinyal transmisi. 2. Clocking : menentukan awal dan akhir dari tiap posisi bit dengan mekanisme synchronisasi yang berdasarkan pada sinyal transmisi. 3. Deteksi error : dibentuk dalam skema fisik encoding sinyal. 4. Interferensi sinyal dan Kekebalan terhadap noise 5. Biaya dan kesulitan : semakin tinggi kecepatan pensinyalan untuk memenuhidata rate yang ada, semakin besar biayanya.
Gambar 2. Jenis-jenis sinyal digital
1. NRZ (Non-Return To Zero)Format yang paling mudah dalam mentransmisikan sinyal digital adalah dengan menggunakan dua tingkat tegangan yang berlainan untuk dua jenis digit biner. Kode-kode biner dikonversikan ke level tegangan tertentu sesuai dengan nilainya. Tingkat tegangan tetap konstan sepanjang interval bit yang ditransmisikan. Format pengkodean ini dibagi menjadi dua tipe, yaitu:Nonreturn-to-Zero-Level (NRZ-L) yaitu suatu kode dimana tegangan negatif dipakai untuk mewakili suatu binary dan tegangan positif dipakai untuk mewakili binary lainnya.
Nonreturn to Zero Inverted (NRZI) yaitu suatu kode dimana satu transisi (low ke high atau high ke low) pada awal suatu bit time akan dikenal sebagai binary '1' untuk bit time tersebut; tidak ada transisi berarti binary '0'. Sehingga NRZI merupakan salah satu contoh dari diferensial encoding.
Keuntungan differensial encoding : lebih kebal noise, tidak dipengaruhi oleh level tegangan. Kelemahan dari NRZ-L maupun NRZI : keterbatasan dalam komponen dcdan kemampuan synchronisasi yang buruk
Gambar 2.2 menampilkan perbedaan kedua tipe pengkodean tersebut.
Gambar 3. Perbedaan NRZ-L dan NRZ-I
2. Return To Zero (Multilevel Binary)Format pengkodean selalu menuju ke level nol pada setengah periodenya. Biner 0 diwakili oleh perubahan level dari negatif ke nol sedangkan biner 1 diwakili oleh perubahan dari positif ke nol. Gambar 2.3 menampilkan contoh sinyal hasil pengkodean return to zero (RZ).
Gambar 4. Sinyal Return To Zero
3. BiphaseBiphase merupakan format pengkodean yang dikembangkan untuk mengatasi keterbatasan kode NRZ. Dikenal dua teknik pengkodean biphase, yaitu Manchester dan Differensial Manchester.Manchester yaitu suatu kode dimana ada suatu transisi pada setengah dari periode. tiap bit : transisi low ke high mewakili '1' dan high ke lob mewakili '0'. Differential manchester yaitu suatu kode dimana binary '0' diwakili olehAdanya transisi di awal periode suatu bit dan binary '1' diwakili oleh ketiadaan transisi di awal periode suatu bit.
Keuntungan rancangan biphase : 1. Synchronisasi : karena adanya transisi selama tiap bit time, receiver dapat men-synchron-kan pada transis tersebut atau dikenal sebagai self clocking codes. 2. Tidak ada komponen dc. 3. Deteksi terhadap error : ketiadaan dari transisi yang diharapkan, dapat dipakai untuk mendeteksi error.
Kekurangannya : 1. memakai bandwidth yang lebih lebar dari pada multilevel binary.
Gambar 2.4 menampilkan perbedaan kedua tipe pengkodean tersebut.
Gambar 5.Perbedaan Manchester dan D-Manchester
4. B8ZS dan HDB3 Bipolar with 8-Zeros Substitution (B8ZS ) yaitu suatu kode Diana :
Jika terjadi oktaf dari semua nol dan pulsa tegangan terakhir yangmendahului oktaf ini adalah positif, maka 8 nol dari oktaf tersebut di- encode sebagai 000+-0- +Jika terjadi oktaf dari semua nol dan pulsa tegangan terakhir yang mendahului oktaf ini adalah negatif, maka 8 nol dari oktaf tersebut di- encode sebagai 000-+0+ -
High-density bipolar-3 zeros (HDB3 ) yaitu suatu kode dimana menggantikan string-string dari 4 nol dengan rangkaian yang mengandung satu atau dua pulsa atau disebut kode violation, jika violation terakhir positive maka violation ini pasti negative dan sebaliknya (lihat tabel 3.3).
Tabel 3.3. Aturan subsitusi HDB3
Gambar 6. Aturan pengkodean B8ZSHDB3 (High-Density Bipolar-3 Zero) memiliki prinsip yang sama dengan B8ZS, hanya pada HDB3 digunakan untuk menggantikan deretan bit 0 sebanyak 4 buah. Gambar 2.6 menampilkan aturan penggantian bila ditemukan deretan bit 0 lebih dari 4 buah. Contoh hasil pengkodean menggunakan B8ZS dan HDB3 ditampilkan pada Gambar 2.7.
Gambar 7.Aturan pengkodean HDB3
Gambar 8. Contoh pengkodean untuk B8ZS dan HDB3
1.2.2. Teknik Penggambaran Sinyal di Delphi Menggambar Sinyal RZ0,0abyxc101
Gambar 9. Penggambaran sinyal RZ pada umumnya
Untuk menggambarkan sinyal RZ, koordinat 0,0 terletak pada perpotongan antara sumbu x dan sumbu y. Langkah pertama untuk menggambar adalah melalui koordinat 0,0, sinyal RZ memiliki 2 kondisi sinyal yang ditandai dengan adanya bit 1 dan bit 0. Dimana untuk bit 1 di wakili oleh gambar sebagai berikut : a1
b2b1
a2
Gambar 10. Kondisi sinyal RZ pada posisi bit 1
Pada gambar di atas dapat dilihat bahwa kondisi bit 1 diwakili oleh 4 garis dimana terdapat 2 garis yang mempunyai panjang yang sama (a1=a2, b1=b2). Sedangkan untuk bit 0 diwakili oleh gambar sebagai berikut :a2b1
b2
a1
Gambar 11. Kondisi sinyal RZ pada posisi bit 0Sama halnya untuk menggambarkan sinyal RZ bit 1, bit 0 juga memiliki 4 garis dimana terdapat 2 garis yang mempunyai panjang yang sama.
Penggambaran sinyal RZ di Komputer0,0tbyxc101a
Gambar 12. Penggambaran sinyal RZ di komputer
Untuk menggambarkan sinyal RZ di komputer sangat berbeda dengan menggambarkan sinyal RZ pada umumnya. Ini dikarenakan adanya perbedaan referensi koordinat (0,0), untuk penggambaran di komputer koordinat (0,0) terletak di pojok kiri atas. Langkah pertama penggambaran sinyal RZ adalah dengan menarik garis setinggi t menuju koordinat (0,0) pada penggambaran sinyal RZ pada umumnya. Setelah itu dilihat kondisi dari bit yang akan kita gambar, misalnya, bit 1 maka penggambarannya sebagai berikut :
y0,0
a1
t
b2b1
a2
1
Gambar 13. Penggambaran bit 1 pada komputer
Setelah menuju titik setinggi t dari koordinat (0,0) penggambaran sinyal RZ pada umumnya, dilanjutkan dengan membuat garis sepanjang b1 ke arah sumbu (0,0) penggambaran sinyal RZ dengan komputer, setelah itu, dari ujung garis b1, buat garis sepanjang garis a1 ke arah kanan, selanjutnya dari ujung garis a1 buat garis sepanjang b2 ke arah bawah (berlawanan dengan arah garis b1 / menuju koordinat (0,0) penggambaran sinyal RZ pada umumnya), setelah itu tarik garis sepanjang a2 dengan arah sesuai dengan garis a1.Untuk menggambarkan bit 0 sinyal RZ pada komputer mempunyai cara yang sama dengan penggambaran sinyal RZ dengan bit1. Yang membedakan hanyalah bentuk dari sinyal RZ bit 0 yang berlawanan arah dengan bit 1.
1.3 Alat dan bahan (1) PC : 1 Buah(2) Aplikasi Borland Delphi 7: disiapkan
BAB IIPEMBAHASAN
2.1 Prosedur PraktikumAdapun prosedur pada praktikum ini adalah :(1) Merangkai setiap komponen dipanel borland delphi sesuai dengan konsep tata letak komponen.
Gambar 14. Tata letak dari setiap komponen RZ
Gambar 15. Tata letak dari setiap komponen RZ
Gambar 16. Tata letak dari setiap komponen D-Manchester
Gambar 17. Tata letak dari setiap komponen AMI
(2) Membuat program untuk pengkodean data digital(3) Membuat Flowchart dari program yang telah dibuat(4) Membuat Tugas Praktikum
2.2 Tugas Praktikum(1) Merangkai setiap komponen dipanel borland delphi sesuai dengan konsep tata letak komponen.
Gambar 18. Tata letak dari setiap komponen
Keterangan settingan property dari setiap komponenKomponenPropertySetting
Form1CaptionEncoding By Ridho Wicaksono
Nameform1
Label1CaptionTeknik Telekomunikasi 2013
Label2CaptionPraktikum Komunikasi Data Semester 4
Label4CaptionRidho Wicaksono / TT- 2D / 1331130035
Label3CaptionButton Configuration
Label5CaptionRZ
Label6CaptionNRZL
Label7CaptionD-MANCHESTER
Label8CaptionAMI
Image1NameImage1
Image2NameImage2
Image3NameImage3
Image4NameImage4
Edit1Text101010110
Nameedbiner
Button 1Caption0
Namebtnnol
Button 2Caption1
Namebtnsatu
Button 3CaptionDel
Namebtndel
Button 4CaptionClear
Namebtnclear
Button 5Captionexit
Namebtnexit
Button 6CaptionRZ
Namebtnrz
Button 7CaptionNRZL
Namebtnnrzl
Button 8CaptionD-MANC
Namebtnman
Button 9CaptionAMI
Namebtnami
Button 10CaptionALL
Namebtnall
Panel 1Caption-
NamePanel1
2.3 Program Tugas Praktikumunit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; btnnol: TButton; btnsatu: TButton; edbiner: TEdit; btndel: TButton; btnclear: TButton; btnexit: TButton; btnrz: TButton; btnnrzl: TButton; btnman: TButton; btnami: TButton; btnall: TButton; Label1: TLabel; Label2: TLabel; Panel1: TPanel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; procedure btnnolClick(Sender: TObject); procedure btnsatuClick(Sender: TObject); procedure btnexitClick(Sender: TObject); procedure btndelClick(Sender: TObject); procedure btnclearClick(Sender: TObject); procedure btnrzClick(Sender: TObject); procedure btnnrzlClick(Sender: TObject); procedure btnmanClick(Sender: TObject); procedure btnamiClick(Sender: TObject); procedure btnallClick(Sender: TObject);
private { Private declarations } public { Public declarations } end;
var Form1: TForm1; x,y,ax,ay,a,b,c,n,i,k:integer; edbiner:string;
implementation
{$R *.dfm}// Prosedur Sinyal RZ //procedure rz_1(ax,ay,a,b,n:integer);begin form1.image1.Canvas.Pen.Color:=clred; form1.image1.Canvas.Pen.Width:=2; form1.image1.Canvas.MoveTo(ax+(n-1)*(b+b),ay); form1.image1.Canvas.LineTo(ax+(n-1)*(b+b),ay-a); form1.image1.Canvas.LineTo(ax+b+(n-1)*(b+b),ay-a); form1.image1.Canvas.LineTo(ax+b+(n-1)*(b+b),ay); form1.image1.Canvas.LineTo(ax+b+b+(n-1)*(b+b),ay);end;
procedure rz_2(ax,ay,a,b,n:integer);begin form1.image1.Canvas.Pen.Color:=clred; form1.image1.Canvas.Pen.Width:=2; form1.image1.Canvas.MoveTo(ax+(n-1)*(b+b),ay); form1.image1.Canvas.LineTo(ax+(n-1)*(b+b),ay+a); form1.image1.Canvas.LineTo(ax+b+(n-1)*(b+b),ay+a); form1.image1.Canvas.LineTo(ax+b+(n-1)*(b+b),ay); form1.image1.Canvas.LineTo(ax+b+b+(n-1)*(b+b),ay);end;
// Prosedur Sinyal NRZL //procedure NRZL_1(ax,ay,a,b,i:integer);begin form1.image2.Canvas.Pen.Color:=clred; form1.image2.Canvas.Pen.Width:=2; form1.image2.Canvas.MoveTo(ax+(i-1)*b,ay+a); form1.image2.Canvas.LineTo(ax+b+(i-1)*b,ay+a);end;
procedure NRZL_0(ax,ay,a,b,i:integer);begin form1.image2.Canvas.Pen.Color:=clred; form1.image2.Canvas.Pen.Width:=2; form1.image2.Canvas.MoveTo(ax+(i-1)*b,ay-a); form1.image2.Canvas.LineTo(ax+b+(i-1)*b,ay-a);end;
procedure NRZL_tegak(ax,ay,a,b,i:integer);begin form1.image2.Canvas.Pen.Color:=clred; form1.image2.Canvas.Pen.Width:=2; form1.image2.Canvas.MoveTo(ax+(i-1)*b,ay+a); form1.image2.Canvas.LineTo(ax+(i-1)*b,ay-a);end;// Prosedur Sinyal D-Manchester //procedure dmncstr_1(ax,ay,a,b,i:integer);begin form1.image3.Canvas.Pen.Color:=clred; form1.image3.Canvas.Pen.Width:=2; form1.image3.Canvas.MoveTo(ax+(i-1)*b+((i-1)*b),ay+a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b))+b,ay+a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b))+b,ay-a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b))+2*b,ay-a);end;
procedure dmncstr_0(ax,ay,a,b,i:integer); begin form1.image3.Canvas.Pen.Color:=clred; form1.image3.Canvas.Pen.Width:=2; form1.image3.Canvas.MoveTo(ax+(i-1)*b+((i-1)*b),ay-a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b))+b,ay-a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b))+b,ay+a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b))+2*b,ay+a); end;
procedure dtegak(ax,ay,a,b,i:integer);begin form1.image3.Canvas.Pen.Color:=clred; form1.image3.Canvas.Pen.Width:=2; form1.image3.Canvas.MoveTo((ax+(i-1)*b+((i-1)*b)),ay-a); form1.image3.Canvas.LineTo((ax+(i-1)*b+((i-1)*b)),ay+a);end;
// Prosedur Sinyal AMI //
procedure ami_1(ax,ay,a,b,i:integer);begin form1.image4.Canvas.Pen.Color:=clred; form1.image4.Canvas.Pen.Width:=2; form1.image4.Canvas.MoveTo(ax+(i-1)*b,ay); form1.image4.Canvas.LineTo(ax+(i-1)*b,ay-a); form1.image4.Canvas.LineTo(ax+b+(i-1)*b,ay-a); form1.image4.Canvas.LineTo(ax+b+(i-1)*b,ay);end;
procedure ami_2(ax,ay,a,b,i:integer);begin form1.image4.Canvas.Pen.Color:=clred; form1.image4.Canvas.Pen.Width:=2; form1.image4.Canvas.MoveTo(ax+(i-1)*b,ay); form1.image4.Canvas.LineTo(ax+(i-1)*b,ay+a); form1.image4.Canvas.LineTo(ax+b+(i-1)*b,ay+a); form1.image4.Canvas.LineTo(ax+b+(i-1)*b,ay);end;
procedure ami_tegak(ax,ay,a,b,i:integer);begin form1.image4.Canvas.Pen.Color:=clred; form1.image4.Canvas.Pen.Width:=2; form1.image4.Canvas.MoveTo(ax+(i-1)*b,ay); form1.image4.Canvas.LineTo(ax+b+(i-1)*b,ay);end;
//PROCEDURE UTAMA---------------------------------------------------------------procedure sumbu;var edbiner:string;beginedbiner:=form1.edbiner.Text;
//REFRESH PICTURE & Sumbu RZ form1.image1.Picture:=nil; form1.image1.Refresh;
form1.image1.Canvas.Pen.Color:=clBlack; form1.image1.Canvas.Pen.Style:=pssolid; form1.image1.Canvas.MoveTo(10,200); form1.image1.Canvas.LineTo(10 ,200-145); form1.image1.Canvas.TextOut(10,200-155,'Amplitudo'); form1.image1.Canvas.MoveTo(10,140); form1.image1.Canvas.LineTo(10+370,140); form1.image1.Canvas.TextOut(10+370,140+5,'Time'); form1.image1.Canvas.Pen.Color:=clBlue; form1.image1.Canvas.Pen.Style:=psDot; form1.Image1.Canvas.TextOut(200-200,200-100,'5V+'); form1.image1.Canvas.TextOut(200-200,200-70,'0V'); form1.Image1.Canvas.TextOut(200-200,200-40,'5V-');
//REFRESH PICTURE & Sumbu NRZL form1.image2.Picture:=nil; form1.image2.Refresh;
form1.image2.Canvas.Pen.Color:=clBlack; form1.image2.Canvas.Pen.Style:=pssolid; form1.image2.Canvas.MoveTo(10,200); form1.image2.Canvas.LineTo(10,200-145); form1.image2.Canvas.TextOut(10,200-155,'Amplitudo'); form1.image2.Canvas.MoveTo(10,140); form1.image2.Canvas.LineTo(10+370,140); form1.image2.Canvas.TextOut(10+370,140+5,'Time'); form1.image2.Canvas.TextOut(200-200,200-100,'5V+'); form1.image2.Canvas.TextOut(200-200,200-70,'0V'); form1.image2.Canvas.TextOut(200-200,200-40,'5V-');
//REFRESH PICTURE & Sumbu D-Manchester form1.image3.Picture:=nil; form1.image3.Refresh;
form1.image3.Canvas.Pen.Color:=clBlack; form1.image3.Canvas.Pen.Style:=pssolid; form1.image3.Canvas.MoveTo(10,200); form1.image3.Canvas.LineTo(10,200-145); form1.image3.Canvas.TextOut(10,200-155,'Amplitudo'); form1.image3.Canvas.MoveTo(10,140); form1.image3.Canvas.LineTo(10+370,140); form1.image3.Canvas.TextOut(10+370,140+5,'Time'); form1.image3.Canvas.TextOut(200-200,200-100,'5V+'); form1.image3.Canvas.TextOut(200-200,200-70,'0V'); form1.image3.Canvas.TextOut(200-200,200-40,'5V-');
//REFRESH PICTURE & Sumbu AMI form1.image4.Picture:=nil; form1.image4.Refresh;
form1.image4.Canvas.Pen.Color:=clBlack; form1.image4.canvas.Pen.Style:=PsSolid; form1.image4.Canvas.MoveTo(10,200); form1.image4.Canvas.LineTo(10,200-155); form1.image4.Canvas.TextOut(10,200-155,'Amplitudo'); form1.image4.Canvas.MoveTo(10,140); form1.image4.Canvas.LineTo(10+370,140); form1.image4.Canvas.TextOut(10+370,145+0,'Time'); form1.image4.Canvas.TextOut(200-200,200-100,'5V+'); form1.image4.Canvas.TextOut(200-200,200-70,'0V'); form1.image4.Canvas.TextOut(200-200,200-40,'5V-');
end;//PROGRAM----------------------------------------------------//Program RZprocedure rz;
var ax,ay,a,b,n,q:integer; edbiner:string;beginedbiner:=form1.edbiner.Text;q:=length(edbiner);ax:=10; ay:=140; a:=30; b:=30;for n:=1 to q doif edbiner[n]='1' then begin rz_1(ax,ay,b,a,n); end else if edbiner[n]='0' then begin rz_2(ax,ay,b,a,n); end;end;
//Program NRZLprocedure nrzl;var tnd,ax,ay,a,b,n:integer; edbiner:string;beginedbiner:=form1.edbiner.Text;ax:=10; ay:=140; a:=30; b:=30;tnd:=0; for n:=1 to length(edbiner) do if edbiner[n]='1' then if tnd=0 then begin NRZL_1(ax,ay,b,a,n); NRZL_tegak(ax,ay,b,a,n); tnd:=1; end else NRZL_1(ax,ay,b,a,n) else if tnd=1 then begin NRZL_0(ax,ay,b,a,n); NRZL_tegak(ax,ay,b,a,n); tnd:=0; end else NRZL_0(ax,ay,b,a,n);end;
//Program D-Manchesterprocedure dmanchester;var tnd, ax,ay,a,b,n:integer; edbiner:string;beginedbiner:=form1.edbiner.Text;ax:=10; ay:=140; a:=30; b:=30;tnd:=0; for n:=1 to length(edbiner) do begin if edbiner[n]='1' then if tnd = 0 then begin dmncstr_1(ax,ay,b,a,n); tnd:= 1; end else begin dmncstr_0(ax,ay,b,a,n); tnd:=0; end else if tnd = 0 then begin dtegak(ax,ay,b,a,n); dmncstr_0(ax,ay,b,a,n); end else begin dtegak(ax,ay,b,a,n); dmncstr_1(ax,ay,b,a,n); end end;end;
//Program AMIprocedure ami;var tnd,ax,ay,a,b,n:integer; edbiner,start:string;beginedbiner:=form1.edbiner.Text;ax:=10; ay:=140; a:=30; b:=30;tnd:=0;start:='atas'; if start='bawah' then tnd:=0 else if start='atas' then tnd:=1; for n:=1 to length(edbiner) do if edbiner[n]='1' then if tnd=1 then begin ami_1(ax,ay,b,a,n); tnd:=0; end else begin ami_2(ax,ay,b,a,n); tnd:=1; end else ami_tegak(ax,ay,b,a,n);end;
//Tombol Tambahanprocedure TForm1.btnnolClick(Sender: TObject);varedbiner:string;beginedbiner:=form1.edbiner.Text;if length(edbiner)