Getting Started with Delphi and C++Builder 2009

Bila anda relatif baru dengan pemrograman Delphi, sekarang ada materi training baru untuk anda.  Banyak sumber-sumber materi bagi yang telah berpengalaman dengan Delphi, tetapi bagi para fresh graduate yang biasanya mendapat mata kuliah C atau Java di kampus sulit menemukan tutorial tentang RAD Studio versi terbaru.

Tunggu apa lagi, silakan download buku PDF secara gratis di docs.embarcadero.com. Buku ini juga berguna bagi Delphi old timer yang coding style-nya masih kayak programmer Java he.. he..

Delphi Basics 2: Pengenalan Class dan Object

Dalam rangka menyambut kedatangan Delphi 2009, saya akan menulis beberapa artikel tentang dasar-dasar Delphi. Ide kode-kode yang ditampilkan diambil dari buku C# How To Program. Susah lagi cari ide sendiri :) . Ini adalah bagian kedua.

1. Membuat Sebuah Class yang Memiliki Satu Method:

unit GradeBook;

interface

type
  // Class declaration with one method
  TGradeBook = class(TObject)
  public
    procedure displayMessage();
  end;

implementation

procedure TGradeBook.displayMessage();
begin
  Writeln('Welcome to the Grade Book!');
  Readln;
end;

end.

2. Membuat Instan Obyek dari Class No. 1 di Atas.
Ingat bahwa kode no. 2 dan no. 1 di atas berada di dalam satu project.

program GradeBookTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  GradeBook in 'GradeBook.pas';

var
  GradeBook : TGradeBook;
begin
  // Creating an object of class GradeBook and
  // calling its displayMessage method
  try
    GradeBook := TGradeBook.Create;
    GradeBook.displayMessage();
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

3. Membuat Sebuah Class dengan Satu Method yang Memiliki Parameter:

unit GradeBook;

interface

uses SysUtils;

type
  // Class declaration with a method that has a parameter
  TGradeBook = class(TObject)
  public
    procedure displayMessage(courseName: String);
  end;

implementation

procedure TGradeBook.displayMessage(courseName: String);
begin
  Writeln(Format('Welcome to the grade book for' + #13#10
    + '%s' ,[courseName]));
  Readln;
end;

end.

4. Membuat Instan Obyek dari Class No. 3 di Atas.
Ingat bahwa kode no. 4 dan no. 3 di atas berada di dalam satu project.

program GradeBookTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  GradeBook in 'GradeBook.pas';

var
  GradeBook : TGradeBook;
  NameOfCourse : String;
begin
  // Create GradeBook object and pass a string to
  // its DisplayMessage method
  try
    GradeBook := TGradeBook.Create;

    Write('Please enter the course name: ');
    Readln(NameOfCourse);

    GradeBook.displayMessage(NameOfCourse);
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

5. Membuat Sebuah Class dengan Sebuah Property.

unit GradeBook;

interface

uses SysUtils;

type
  // GradeBook class that contains a property
  // to get (read) and set (write) its value.
  TGradeBook = class(TObject)
  private
    FCourseName: String;
    procedure SetCourseName(const Value: String);
  public
    property CourseName: String read FCourseName write SetCourseName;
    procedure displayMessage();
  end;

implementation

procedure TGradeBook.displayMessage();
begin
  Writeln(Format('Welcome to the grade book for' + #13#10
    + '%s' ,[CourseName]));
  Readln;
end;

procedure TGradeBook.SetCourseName(const Value: String);
begin
  FCourseName := Value;
end;

end.

6. Menggunakan Property dari Class No. 5 di Atas.
Ingat bahwa kode no. 6 dan no. 5 di atas berada di dalam satu project.

program GradeBookTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  GradeBook in 'GradeBook.pas';

var
  GradeBook : TGradeBook;
  NameOfCourse : String;
begin
  // Create and manipulate a GradeBook object.
  try
    GradeBook := TGradeBook.Create;

    WriteLn(Format('Initial course name is:' + #13#10 +
      '%s', [GradeBook.CourseName]));

    WriteLn('Please enter the course name: ');
    Readln(NameOfCourse);

    GradeBook.CourseName := NameOfCourse;

    GradeBook.displayMessage();
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

7. Inisialisasi Obyek dengan Constructor.

unit GradeBook;

interface

uses SysUtils;

type
  // GradeBook class with a constructor
  // to initialize the course name
  TGradeBook = class(TObject)
  private
    FCourseName: String;
    procedure SetCourseName(const Value: String);
  public
    constructor Create(Name :String);
    property CourseName: String read FCourseName write SetCourseName;
    procedure displayMessage();
  end;

implementation

constructor TGradeBook.Create(Name: String);
begin
  CourseName := Name;
end;

procedure TGradeBook.displayMessage();
begin
  Writeln('Enjoy the Courses');
  Readln;
end;

procedure TGradeBook.SetCourseName(const Value: String);
begin
  FCourseName := Value;
end;

end.

8. Menggunakan Constructor dari Class No. 7 di Atas.
Ingat bahwa kode no. 8 dan no. 7 di atas berada di dalam satu project.

program GradeBookTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  GradeBook in 'GradeBook.pas';

var
  GradeBook1 : TGradeBook;
  GradeBook2 : TGradeBook;
begin
  // GradeBook constructor used to specify the course name at the
  // time each GradeBook object is created
  try
    GradeBook1 := TGradeBook.Create('D101 Introduction to Delphi Programming');
    GradeBook2 := TGradeBook.Create('D102 Data Structures in Delphi');

    WriteLn(Format('GradeBook1 course name is::' + #13#10 +
      '%s', [GradeBook1.CourseName]));

    WriteLn('');

    WriteLn(Format('GradeBook1 course name is::' + #13#10 +
      '%s', [GradeBook2.CourseName]));

    WriteLn('');

    GradeBook1.displayMessage;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

9. Class dengan Constructor yang Membatasi Nilai Inisialisasi.
Diperkenalkan pula penggunaan decimal type atau currency type.

unit Account;

interface

type
  // Account class with a constructor to
  // initialize instance variable balance
  TAccount = class(TObject)
  private
    FBalance: Currency;
    procedure SetBalance(const Value: Currency);
  public
    property Balance : Currency read FBalance write SetBalance;
    constructor Create(InitialBalance: Currency);
    procedure Credit(Amount: Currency);
  end;

implementation

{ TAccount }

constructor TAccount.Create(InitialBalance: Currency);
begin
  // Constructor will use method SetBalance to write the
  // initial balance. If InitialBalance < 0 then balance = 0.
  Balance := InitialBalance;
end;

procedure TAccount.Credit(Amount: Currency);
begin
  Balance := Balance + Amount;
end;

procedure TAccount.SetBalance(const Value: Currency);
begin
  if Value >= 0 then
    FBalance := Value;
end;

end.

10. Menggunakan Class No. 9 di Atas.
Ingat bahwa kode no. 10 dan no. 9 di atas berada di dalam satu project.
Diperkenalkan pula memformat angka ke dalam bentuk currency dan number.

program AccountTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Account in 'Account.pas';

var
  Account1 : TAccount;
  Account2 : TAccount;
  DepositAmount : Currency;
begin
  try
    Account1 := TAccount.Create(50.25);
    Account2 := TAccount.Create(-1.50);

    // Use %.2m format to display currency symbol
    WriteLn(Format('Account1 balance: %n', [Account1.Balance]));
    WriteLn(Format('Account2 balance: %n', [Account2.Balance]));
    WriteLn('');

    WriteLn('Enter deposit amount for Account1: '); // example: 34.54
    ReadLn(Currency(DepositAmount));
    WriteLn(Format('Adding %n to Account1 balance', [DepositAmount]));
    Account1.Credit(DepositAmount);
    WriteLn('');

    WriteLn('Enter deposit amount for Account2: '); // example: 34.54
    ReadLn(Currency(DepositAmount));
    WriteLn(Format('Adding %n to Account2 balance', [DepositAmount]));
    Account2.Credit(DepositAmount);
    WriteLn('');

    WriteLn(Format('Account1 balance: %n', [Account1.Balance]));
    WriteLn(Format('Account2 balance: %n', [Account2.Balance]));

    ReadLn;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

Delphi Basics 1 : Pengenalan Delphi

Dalam rangka menyambut kedatangan Delphi 2009, saya akan menulis beberapa artikel tentang dasar-dasar Delphi. Ini adalah bagian pertama.

1. Program Mencetak Text

program Welcome1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  // Text-printing program
  try
      Writeln('Welcome to Delphi Programming!');
      Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

2. Mencetak Satu Baris Text dengan Beberapa Statement

program Welcome2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  // Printing a line of text with multiple statements
  try
    Write('Welcome to ');
    Writeln('Delphi Programming!');
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

3. Mencetak Beberapa Baris Text dengan Satu Statement

program Welcome3;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  // Printing multiple lines of text with a single statement
  try
    Write('Welcome' + #13#10 + 'to' + #13#10 +
     'Delphi' + #13#10 + 'Programming!');
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

4. Mencetak Beberapa Baris Text dengan Method

program Welcome4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  // Displaying multiple lines with method
  try
    Write(Format('%s' + #13#10 + '%s',
      ['Welcome to','Delphi Programming!']));
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

5. Penjumlahan

program Addition;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  number1 : Integer;
  number2 : Integer;
  sum : Integer;
begin
  // Addition program that displays the sum of two numbers
  try
    Write('Enter first integer: ');
    Readln(number1);

    Write('Enter second integer: ');
    Readln(number2);

    sum := number1 + number2;

    Write(Format('Sum is %d' + #13#10 ,[sum]));
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

6. Perbandingan

program Comparison;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  number1 : Integer;
  number2 : Integer;
begin
  // Equality and relational operators
  try
    Write('Enter first integer: ');
    ReadLn(number1);

    Write('Enter second integer: ');
    ReadLn(number2);

    if (number1 = number2) then
      WriteLn(Format('%d == %d',[number1, number2]));

    if (number1 <> number2) then
      WriteLn(Format('%d != %d',[number1, number2]));

    if (number1 < number2) then
      WriteLn(Format('%d < %d',[number1, number2]));

    if (number1 > number2) then
      WriteLn(Format('%d > %d',[number1, number2]));

    if (number1 <= number2) then
      WriteLn(Format('%d <= %d',[number1, number2]));

    if (number1 >= number2) then
      WriteLn(Format('%d >= %d',[number1, number2]));

    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.


Common Data Types

Anda harus paham dengan data type yang akan anda gunakan di dalam variable. Saya beri contoh vulgar untuk memudahkan pemahaman tentang data type. Misalnya:

    • Anda membuat 2 variables yaitu ruang_toilet_lelaki dan ruang_toilet_wanita.
    • Jenis data (data type) yang boleh masuk ke ruang_toilet_lelaki adalah tipe data lelaki.
    • Jenis data (data type) yang boleh masuk ke ruang_toilet_wanita adalah tipe data wanita.
    • Kalau tipe data lelaki ingin masuk ke ruang_toilet_wanita maka dia harus dikonversi dulu. :)

    Bahasan kali ini memang bakal sedikit pusing bagi pemula yang nggak pernah pegang C# maupun Delphi. Tapi jangan diambil pusing dulu, lain kali akan saya kasih contoh penggunaannya satu persatu. Tapi nggak janji ya…

    C# Delphi Keterangan
    bool boolean  
    byte byte  
    char char  
    decimal currency dalam ruang lingkup perhitungan
    keuangan
    double double  
    enum type / var jangan ngomel dulu, kapan-kapan
    akan saya beri contoh penggunaannya
    float single  
    int integer  
    long int64  
    sbyte shortint  
    short smallint  
    struct record pusing..! idem lagi.
    uint cardinal / longword  
    ulong - waa… delphi belum punya unsigned
    64-bit integer. Tapi tanya google deh,
    ada solusinya kok.
    ushort word  

    Sebenarnya masih ada yang lain yang bisa diperbandingkan, Tapi MSDN hanya menyebutkan apa yang sudah aku masukkan ke dalam tabel di atas.

    Blocks

    Blocks berguna untuk mengumpulkan beberapa statements menjadi satu kelompok. Alasan untuk pengelompokan biasanya adalah untuk memproses beberapa statements di dalam loop, menjalankannya bila memenuhi kondisi tertentu (conditional execution), atau ingin membentuk sebuah function. Mari kita lihat bentuk block baik di C# dan di Delphi.

    C# :

    {
       // C# code statement 1
       // C# code statement 2
    }
    

    Delphi :

    begin
       // Delphi code statement 1
       // Delphi code statement 2
    end
    
    

    Paham adik-adik? :)