Struktur Data Dinamis Pascal


Ini kuliah ALgo Struk dat Zaman Kuliah Dolo di sharing aja dari pada di ilang ke delete mending di bagi 2

Permasalahan Struktur Data Statis

X = ARRAY [ 1 … 100] of real;

beginilah nilai itu disimpan di memori

|1|2|3|4|5|6|7|8|..|100|

adapun permasalahan tersebut :

  • Ada tempat yang tidak terpakai ( umumnya yang diisi tidak penuh ), atau biasa disebut WASTE SPACE.
  • Keterbatasan Komputer yang digunakan ( tetapi yang berbasis windows sudah diatasi ).
  • Tempat tidak mencukupi , misalkan sudah dialokasikan 50 tempat tetapi yang diperlukan 75 maka tempat kurang.
  • Array yang diinginkan dinamis tidak statis

Dari dasar tersebut diatas dibuat struktur data yang alokasinya dinamis, alokasi yang disesuaikan dengan kebutuhan pada saat program dijalankan ( di dalam body )

Penerapan dalam Program

  • Digunakan Pointer ( penunjuk ), yaitu penunjuk ke data yang akan dialokasikan
  • Pointer merupakan address dari data

Bagaimana Penerapan dalam Program?

Macam Pointer :

  • Linked List (Daftar Berantai)
  • Queue (Antrian)
  • Stack  (Tumpukan)
  • Tree ( Pohon)

Untuk memudahkan pengertian Pointer, Pointer dapat divisualisasikan sebagai Perumahan :

Pointer =>Nomor Kapling
Data => Rumah

Jadi bisa saja Datanya Kosong => Rumahnya belum dibangun
Jadi Pointer tidak memuat data yang akan dialokasikan

Pointer biasanya dianggap suatu Integer ( Ukurannya / Size )
Perintah membuat Initial Pointer pada languange :
Pascal => NEW
C => Malloc

Pointer dalam bahasa Pascal

Cara pembentukan Type pada pascal :
Pointer = ^Tipe Data

Contoh :
Ptr = ^titik;
Titik = Record
X,Y : integer;
End;
T : Ptr;
T1 : Titik;
NEW(T);
……. T^.X
……… T^.Y

Gambaran nya :

Pemahaman Variabel Pointer dan Variabel Biasa

T : ptr; P : ptr;
NEW(T);
T^.X := 5; T^.Y := 7;
P^ := T^;
P^.X := 10;

Sering diasumsikan T^.X = 5 , padahal 10

Catatan :
P^ := T^ merupakan penyederhanaan dari :
P^.X := T^.X
P^.Y := T^.Y

Bagaimana kalau datanya Banyak ?

tidak bisa gunakan ARRAY of Pointer pada bahasa pascal,

maka salah satu caranya adalah dengan memasukkan type pointer ke dalam struktur data yang ditunjuk
contoh :
ptr = ^T;
T = record
x,y : integer;
p : ptr;
end;

Berikut struktur code dalam pascal untuk windows

Program Pemrograman_Linked_List;
Uses
WinCrt;
Type
TChar = Char;
PtrData = ^RecordData;
RecordData = RECORD
Karakter : TChar;
Lanjutan : PtrData;
END;
Var
PtrKepala : PtrData;
(* ------ Main Program ------ *)
BEGIN
PtrKepala := NIL;
ProsesPilihan(PtrKepala);
END.

Kita coba Membuat Program record Mahasiswa

Program Program_Hitung_IPK;
(*
-----------------------------------------------------
Nama Program : IPK3list.prg
Kasus : Hitung IPK dengan Record & List
Mata Kuliah : Algoritma & Struktur Data
Dosen : Winarno Sugeng

Teknik Informatika ITENAS Bandung
-----------------------------------------------------
*)

Uses
WinCrt;
Type
PtrData = ^Record_Mhs;

Record_Mhs = RECORD
Nama : String[20];
Nim : String[10];
MK : array [1..10] of String[20];
Sks: array [1..10] of Byte;
CNilai : array [1..10] of Char;
Nilai, TNilai : array [0..10] of real;
JSks : Byte;
JTNilai, IPK : Real;

Lanjutan : PtrData;

END;
Var
i,n,p : Byte;
PtrData_Mhs : PtrData;

Procedure IsiData(VAR PtrData_Mhs: PtrData);
var
PtrBaru : PtrData;
Jawaban : Char;

begin

i:=1;

NEW(PtrBaru);

(* ----------------------------- Reset Variabel ------------------------ *)

PtrBaru^.JSks:=0; PtrBaru^.JTNilai:=0.0;

for p:=1 to 10 do
begin
PtrBaru^.MK[i]:=' '; PtrBaru^.Sks[i]:=0;
PtrBaru^.CNilai[i]:=' '; PtrBaru^.Nilai[i]:=0.0;
PtrBaru^.TNilai[i]:=0.0;
end;
(* ----------------------------- Reset Variabel ------------------------ *)

WriteLn('Data Nilai Mahasiswa');
WriteLn('--------------------');
Write('N a m a : '); ReadLn(PtrBaru^.Nama);
Write('Nim : '); ReadLn(PtrBaru^.Nim);
REPEAT
ClrScr;
Write(' Nama MK : '); ReadLn(PtrBaru^.MK[i]);
Write(' Sks MK : '); ReadLn(PtrBaru^.Sks[i]);
Write('Nilai MK : '); ReadLn(PtrBaru^.CNilai[i]);

If UpCase(PtrBaru^.CNilai[i])='A' then
PtrBaru^.Nilai[i]:=4.0
else if UpCase(PtrBaru^.CNilai[i])='B' then
PtrBaru^.Nilai[i]:=3.0
else if UpCase(PtrBaru^.CNilai[i])='C' then
PtrBaru^.Nilai[i]:=2.0
else if UpCase(PtrBaru^.CNilai[i])='D' then
PtrBaru^.Nilai[i]:=1.0
else
PtrBaru^.Nilai[i]:=0.0;

PtrBaru^.TNilai[i]:=PtrBaru^.Sks[i]*PtrBaru^.Nilai[i]; { (Nilai x Sks) }
PtrBaru^.JTNilai:=PtrBaru^.JTNilai+PtrBaru^.TNIlai[i]; { Jumlah (Nilai x Sks) }
PtrBaru^.JSks:=PtrBaru^.JSks+PtrBaru^.Sks[i]; { Jumlah Sks }

INC(i);

GotoXY(10, 10); Write ('Menambah data lagi (Y/T)? ');
Repeat
Jawaban := ReadKey;
Until Jawaban IN ['Y','y','T','t'];
UNTIL UpCase(Jawaban)='T';
Write (UpCase(Jawaban));
n:=i;
PtrBaru^.IPK:=PtrBaru^.JTNilai/PtrBaru^.JSks; { Hitung IPK }

PtrBaru^.Lanjutan := PtrData_Mhs;
PtrData_Mhs := PtrBaru;

end;

Procedure TampilData(VAR PtrData_Mhs: PtrData);
var
PostY : byte;
PtrSementara : PtrData;

begin
ClrScr;

PtrSementara := PtrData_Mhs;

GotoXY( 2, 2); Write('Nama : ', PtrSementara^.Nama);
GotoXY( 2, 3); Write('Nim : ', PtrSementara^.Nim);

GotoXY( 2, 5); Write('===============================================');
GotoXY( 3, 6); Write('N a m a');
GotoXY(20, 6); Write('Sks');
GotoXY(25, 6); Write('Nilai');
GotoXY(35, 6); Write('(NilaixSks)');
GotoXY( 2, 7); Write('===============================================');

For i:=1 to n do
begin
GotoXY( 3, i+7); Write(PtrSementara^.MK[i]);
GotoXY(20, i+7); Write(PtrSementara^.Sks[i]:2);
GotoXY(27, i+7); Write(UpCase(PtrSementara^.CNilai[i]));
GotoXY(37, i+7); Write(PtrSementara^.TNilai[i]:5:2);
end;
PostY:=WHEREY;
GotoXY( 2,PostY); Write('===============================================');

GotoXY( 5,PostY+1); WriteLn(' Total SKS : ',PtrSementara^.JSks:2);
GotoXY( 5,PostY+2); WriteLn('Total (Nilai x Sks) : ',PtrSementara^.JTNilai:5:2);
GotoXY( 5,PostY+3); WriteLn;
GotoXY( 5,PostY+4); WriteLn(' IPK : ',PtrSementara^.IPK:5:2);

PtrSementara := PtrSementara^.Lanjutan

end;

(* ---------- Main Program -------------- *)

BEGIN
IsiData(PtrData_Mhs);
TampilData(PtrData_mhs);

END.


Untuk Menjalankannya install borland turbo pascal for windows copas and run

Sumber : Kuliah Algoritma Dan stukturdata

Yah nama juga Mahasiswa ada ujian nya gan
ane mikir mikir buat tugas proyek akhir mata kuliah ini apa yah , hehe kebetulan ane sering nyuci baju di londry jadi ane bikin program buat ngerecord client laondry ini cekidot
yang paling berkesan adalah menikmati code pointer , yah lumayan gan seminggu begadang tapi alhamdulilah hasil nya baek :D , …
ini program nya:

Sour code ma dokumentasi
http://cid-4583f23bbe8b0f42.office.live.com/self.aspx/.Public/Loundry%5E_prog.zip

sekian dulu tulisannya , hehe moga bermanfaat untuk mengenal pointer, yah walau pemerograman sudah jamannya pake Visual dan sql gak salah kalo mau mencoba.

Pengantar Delphi Object Pascal


Object Pascal mengacu pada cabang turunan berorientasi objek Pascal, lebih dikenal sebagai bahasa pemrograman utama Embarcadero Delphi. kompilator Pascal, termasuk untuk Object Pascal, umumnya berjalan sangat cepat sambil menghasilkan kode yang sangat optimal.

Object Pascal merupakan pengembangan dari bahasa Pascal yang dikembangkan di Apple Computer oleh tim yang dipimpin oleh Larry Tesler dalam konsultasi dengan Niklaus Wirth, penemu Pascal. Ini adalah keturunan dari versi sebelumnya berorientasi obyek yang disebut Pascal Clascal, yang tersedia pada komputer Lisa.

Object Pascal diperlukan dalam rangka mendukung MacApp, sebuah Macintosh diperluas kerangka aplikasi yang sekarang akan disebut perpustakaan kelas. Object Pascal ekstensi dan MacApp sendiri dikembangkan oleh Barry Haynes, Ken Doyle, dan Larry Rosenstein, dan diuji oleh Dan Allen. Larry Tesler mengawasi proyek, yang dimulai sangat awal pada tahun 1985 dan menjadi produk pada tahun 1986.

Apple menjatuhkan dukungan untuk Object Pascal ketika mereka pindah dari Motorola 68K chip untuk arsitektur PowerPC IBM pada tahun 1994.

Sebuah Object Pascal ekstensi juga diimplementasikan dalam Pascal IDE Pikirkan. IDE termasuk compiler dan editor dengan Syntax menyoroti dan memeriksa, debugger kuat dan perpustakaan kelas. Banyak pengembang disukai Pikirkan Pascal atas pelaksanaan Apple Object Pascal karena Pikirkan Pascal menawarkan integrasi ketat alat tersebut. pembangunan berhenti setelah versi 4.01 karena perusahaan ini dibeli oleh Symantec. Para pengembang kemudian meninggalkan proyek.
[Sunting] Tahun-tahun dan CodeGear Borland

Pada tahun 1986, Borland diperkenalkan ekstensi yang sama, juga disebut Object Pascal, dengan produk Turbo Pascal untuk Macintosh, dan pada tahun 1989 untuk Turbo Pascal 5.5 untuk DOS.

Ketika Borland kembali fokus dari DOS ke Windows pada tahun 1994, mereka menciptakan penerus Turbo Pascal, yang disebut Delphi dan memperkenalkan set baru ekstensi untuk menciptakan apa yang sekarang dikenal sebagai bahasa Delphi.

Perkembangan Delphi dimulai pada tahun 1993 dan Delphi 1.0 secara resmi dirilis di Amerika Serikat pada tanggal 14 Februari 1995. Sementara kode menggunakan model objek Turbo Pascal masih bisa dikompilasi, Delphi menampilkan sintaks baru menggunakan kata kunci class dalam preferensi untuk objek, Buat konstruktor dan destructor Hancurkan virtual (dan meniadakan harus menghubungi Baru dan prosedur Buang), sifat, metode pointer, dan beberapa hal lainnya. Ini terinspirasi oleh draft ISO bekerja untuk ekstensi berorientasi objek, tetapi banyak perbedaan dengan dialek Turbo Pascal (seperti kebutuhan draft bahwa semua metode akan virtual) diabaikan.

Bahasa Delphi terus berkembang selama bertahun-tahun untuk mendukung konstruksi seperti array dinamis, generik dan metode anonim.

* Borland menggunakan nama Object Pascal untuk bahasa pemrograman di Delphi versi pertama, tetapi kemudian diganti ke bahasa pemrograman Delphi. Namun, kompiler yang mengklaim kompatibel dengan Object Pascal sering mencoba untuk menjadi kompatibel dengan kode sumber Delphi. [Rujukan?]

* CodeGear, anak perusahaan mantan Borland dan sekarang menjadi bagian dari Embarcadero Technologies, menjual lingkungan pengembangan terpadu (IDE) yang mengkompilasi kode Object Pascal ke Windows.

* NET dukungan ada dari Delphi 8 sampai Delphi 2005, Delphi 2006 dan Delphi 2007, yang kini telah digantikan oleh bahasa lain, Oxygene (lihat di bawah), yang tidak sepenuhnya kompatibel mundur-..

* The Oxygene bahasa pemrograman yang dikembangkan oleh RemObjects Software target Common Language Infrastruktur semata-mata. Oxygene compiler telah dimasukkan ke dalam pengembangan solusi Delphi baru milik Embarcadero, bernama Delphi Prism, yang berbasis Microsoft Visual Studio.

* The Morfik Pascal bahasa pemrograman yang dikembangkan oleh Morfik menargetkan Ajax-aplikasi Web. Compiler Morfik adalah dimasukkan ke dalam perusahaan AppsBuilder IDE dan memungkinkan kode Object Pascal yang akan digunakan dalam menerapkan kode yang akan menjalankan baik di browser dan di server. Ia menggunakan compiler Free Pascal untuk menghasilkan binari asli dari Object Pascal.

* Sumber proyek open Free Pascal memungkinkan bahasa yang akan dikompilasi untuk berbagai sistem operasi-termasuk Linux (32-bit dan 64-bit), FreeBSD, Mac OS / Mac OS X, Win32, Win64 dan Windows CE-sebagai juga untuk beberapa arsitektur hardware yang berbeda. Versi pertama dari Free Pascal untuk iPhone SDK 2.x diumumkan pada tanggal 17 Januari 2009. [1] Sekarang ada juga dukungan untuk embedded (ARM).

* The MIDletPascal bertujuan untuk platform byte-kode Java.

* Sumber kompilator GNU open Pascal tersedia sebagai sebuah front-end untuk koleksi kompilator GNU, yang menerapkan standar ISO 7185 Pascal, dan “sebagian besar” standar 10206 ISO Extended Pascal.

* Juga, sebuah kompiler gratis, Turbo51, tersedia untuk menghasilkan kode untuk Intel 8051 chip.

* WDSibyl, open source Delphi seperti IDE dan compiler yang tersedia untuk Microsoft Windows dan OS / 2, sebuah Borland Pascal lingkungan komersial yang kompatibel dirilis oleh sebuah perusahaan bernama Speedsoft, yang kemudian dikembangkan menjadi Delphi seperti RAD bernama Sybil dan kemudian open source di bawah GPL ketika perusahaan yang ditutup. Wolfgang Draxler (WD) sekarang memelihara perangkat lunak.

Compiler

Ada banyak kompiler yang sebagian besar kompatibel dengan bahasa Pascal Objek dari Delphi. Banyak dari ini diciptakan untuk mengaktifkan Object Pascal kompilasi pada platform yang berbeda dan di bawah berbagai lisensi.

* CodeGear Delphi mungkin adalah compiler paling dikenal. Ini target Win16 (Delphi 1), Win32 (Delphi 2) dan NET 1.x, 2.0 (8 Delphi, Delphi 2005 – 2007)..
* Borland Kylix adalah varian Linux dari Delphi yang hanya target Intel 32-bit Linux dengan menggunakan Qt. Hal ini tidak lagi diperbarui. distribusi modern sering tidak bekerja out-of-kotak dengan itu.
* Free Pascal adalah sebuah kompiler command-line yang ditujukan untuk kompatibilitas sumber dengan fitur inti set kedua Pascal Turbo dan Delphi dialek. Versi saat ini, 2,4, sangat Delphi 6 -. Atau 7-kompatibel [rujukan?] FPC menghasilkan kode untuk x86, x86-64, PowerPC, SPARC dan prosesor ARM bawah berbagai sistem operasi, termasuk Win32, Win64, Linux, FreeBSD, Mac OS dan Mac OS X (termasuk kit integrasi Xcode). Selain penggunaan command-line, beberapa lingkungan pengembangan yang tersedia untuk Free Pascal, khususnya Lazarus IDE.
* GNU Pascal (A bagian terpisah-didistribusikan dari GNU Compiler Collection) Meskipun secara resmi tidak dimaksudkan sebagai dialek CodeGear Pascal, itu tidak mengandung modus kompatibilitas Borland Pascal, dan sangat perlahan dilengkapi beberapa fitur Delphi bahasa. Hal ini tidak cocok untuk mengkompilasi ulang badan besar kode Delphi secara langsung, namun dicatat sebagai memiliki dukungan produktif untuk sistem operasi dan arsitektur perangkat keras.
* Virtual Pascal adalah sebuah x86 32-bit Turbo Pascal dan kompilator Delphi kompatibel ditujukan terutama pada OS / 2 dan Windows, meskipun juga mengembangkan Extender DOS dan Linux eksperimental cross-compiler. pembangunan compiler berhenti di tentang tingkat Delphi V2; situs yang telah turun sejak tahun 2007, dan pengembangan Virtual Pascal telah berhenti.
* Oxygene (sebelumnya dikenal sebagai Chrome) adalah Object Pascal compiler dari RemObjects Software yang terintegrasi ke Microsoft Visual Studio. Hal ini juga tersedia sebagai kompiler command-line bebas yang berjalan pribumi di CLI. Hal ini menargetkan NET dan. Platform Mono.
* MIDletPascal adalah alat pengembangan aplikasi mobile yang menghasilkan bytecode Java ME.
* PocketStudio adalah IDE berbasis Pascal untuk Palm OS.
Sumber : http://en.wikipedia.org/wiki/Delphi_programming_language
Berikut Contoh Syntak pascal


Turbo Pascal’s Object Pascal


program ObjectPascalExample;
type
PHelloWorld = ^THelloWorld;
THelloWorld = object
procedure Put;
end;
var
{ this is a pointer to a THelloWorld }
HelloWorld: PHelloWorld;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
begin
New(HelloWorld);
HelloWorld^.Put;
Dispose(HelloWorld);
end.

Delphi and Free Pascal’s Object Pascal


program ObjectPascalExample;
type
THelloWorld = class
procedure Put;
end;
procedure THelloWorld.Put;
begin
Writeln('Hello, World!');
end;
var
HelloWorld: THelloWorld { init pointer }
begin
HelloWorld := THelloWorld.Create;{ constructor d }
HelloWorld.Put;
HelloWorld.Free; { deallocates the THelloWorld object pointed to by HelloWorld }
end.