Selasa, 26 Mei 2015

Deret.. Deret... Deret....

Hai teman - teman semua.. ngeblog lagi neh guys karena ada tugas
tugas kali ini tentang deret lagi
yuk langsung aja kita coba programnya... gausah panjang lebar yha guys...

1. Buat tampilan interface berikut
2. ini syntaxnya
unit deret;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function deret(x:integer):integer;
  end;

var
  Form1: TForm1;
  hasil:integer;
  D:real;

implementation

{$R *.dfm}

function TForm1.deret(x:integer):integer;
var
  i:integer;
begin
  i:=1;
  hasil:=0;
  while i<=x do
  begin
    hasil:=hasil+i;
    i:=i+1;
  end;
  deret:=hasil;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  DA,DB,DC,A,B,C:integer;
begin
  A:=strtoint(Edit1.Text);
  B:=strtoint(Edit2.Text);
  C:=strtoint(Edit3.Text);
  DA:=deret(A);
  DB:=deret(B);
  DC:=deret(C);

  D:=(DA+DB)/DC;
  Edit4.Text:=floattostr(D);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
  Edit4.Text:='';
end;

end.
3. kalo udah, yuk langsung aja kita coba guys...



Deret Pola -1, 3, -5, 7, -9

Disini ratih akan memberi tahu bagaimana cara mencari rumus deret bilangan, bukan cara mencari suku ke-n. Oke tadi di awal ratih udah jelasin contoh-contoh barisan bilangan, nah di setiap barisan mempunyai rumusnya masing-masing untuk menemukan rumus itu ada dua cara yang bisa di kerjakan, pertama kamu bisa mencoba dan memikirkan bagaimana rumusnya yg memakan waktu cukup lama atau yang kedua kamu pake cara yang udah pasti kebenarannya Cuma kamu harus menghafal rumusnya aja tapi ingat cara ini hanya bisa dipakai di barisan bilangan yang memiliki pola. Nah kali ini ratih bakal nerangin bagaimana cara untuk membuat deret pola pada program delphi. Bagi yg butuh langsung liat aje dan bagi yang ada kesulitan matematika bisa langsung coment aja. Oke ga usah nungu lama langsung tengok kebawah aja masbro
Berikut scriptnya ......
unit deretpola;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c,i:integer;
begin
  a:=strtoint(Edit1.Text);
  Memo1.Clear;
  i:=-1;
  c:=-2;
  while i<=a do
  begin
    b:=i;
    Memo1.Lines.Add(inttostr(b));
    i:=(b+c)*-1;
    c:=c*-1; 
  end;
end;

end.

Tampilan script

 
Form

 
Hasil ketika di run

Selasa, 19 Mei 2015

Algoritma Quick Sort

Algoritma quicksort diperkenalkan pertama kali oleh C.A.R. Hoare pada tahun 1960, dan dimuat sebagai artikel di Computer Journal 5 pada April 1962. Bentuknya yang sederhana, efisien dan efektif dengan cepat membuatnya menjadi algoritma pengurutan (sorting) yang paling banyak digunakan, terutama dalam bahasa pemrograman. Berbagai penelitian dan pengembangan telah banyak dilakukan hingga saat ini. Tercatat peneliti seperti Sedgewick, Bentley, McIlroy, Clement, Flajolet, Vallee, hingga Martinez, membuat analisis dan implementasi dari quicksort.

Beberapa hal yang membuat quicksort unggul:
  • Secara umum memiliki kompleksitas O(n log n).
  • Algoritmanya sederhana dan mudah diterapkan pada berbagai bahasa pemrograman dan arsitektur mesin secara efisien.
  • Dalam prakteknya adalah yang tercepat dari berbagai algoritma pengurutan dengan perbandingan, seperti mergesort dan heapsort.
  • Melakukan proses langsung pada input (in-place) dengan sedikit tambahan memori.
  • Bekerja dengan baik pada berbagai jenis input data (seperti angka dan karakter).
Namun terdapat pula kelemahan quicksort:
  • Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak beraturan (hasilnya tidak benar atau tidak pernah selesai).
  • Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam kasus terburuk memiliki kompleksitas O(n2).
  • Secara umum bersifat tidak stable, yaitu mengubah urutan input dalam hasil akhirnya (dalam hal inputnya bernilai sama).
  • Pada penerapan secara rekursif (memanggil dirinya sendiri) bila terjadi kasus terburuk dapat menghabiskan stack dan memacetkan program.
Pada bahasa pemrograman, quicksort ada dalam pustaka stdlib.h untuk bahasa C, dan class TList dan TStringList dalam Delphi (Object Pascal) maupun FreePascal.

Nah, sekarang yuk kita coba programnya...
1. Buat tampilan interface seperti gambar di bawah ini
2. Klik pada proses button
dan ketikkan syntaxnya...
unit quicksorta;

interface

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

type
  TFQuickSort = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
    Data:array of integer;
  public
    { Public declarations }
  end;

var
  FQuickSort: TFQuickSort;

implementation

{$R *.dfm}

procedure QuickSort(var A:array of integer;iLo,iHi:integer);
var
  Lo,Hi,Pivot,T:integer;
begin
  Lo:=iLo;
  Hi:=iHi;
  Pivot:=A[(Lo+Hi) div 2];
  repeat
    while A[Lo]<Pivot do Inc(Lo);
    while A[Hi]>Pivot do Dec(Hi);
    if Lo<=Hi then
    begin
      T:=A[Lo];
      A[Lo]:=A[Hi];
      A[Hi]:=T;
      Inc(Lo);
      Dec(Hi);
    end;
  until Lo>Hi;
  if Hi>iLo then QuickSort(A,iLo,Hi);
  if Lo<iHi then QuickSort(A,Lo,iHi);
end;

procedure TFQuickSort.Button1Click(Sender: TObject);
var
  nilai:integer;
begin
  //menambahkan nilai ke listbox
  if TryStrToInt(Edit1.Text,Nilai) then
  ListBox1.Items.Add(IntToStr(nilai));
  //membersihkan komponen inputan nilai
  Edit1.Clear;
  //focus kursor ke inputan nilai
  Edit1.SetFocus;
end;

procedure TFQuickSort.Button2Click(Sender: TObject);
var
  indek:Word;
begin
  //menentukan panjang array
  SetLength(Data,ListBox1.Items.Count);

  //pemasukan nilai ke array
  for indek:=0 to ListBox1.Items.Count-1 do
  Data[indek]:=StrToInt(ListBox1.Items[indek]);
  //proses pengurutan/sorting
  QuickSort(data,Low(Data),High(Data));
  //kosongkan hasil
  ListBox2.Items.Clear;
  //memasukkan nilai hasil
  for indek:=0 to ListBox1.Items.Count-1 do
  ListBox2.Items.Add(IntToStr(data[indek]));
end;

procedure TFQuickSort.Button3Click(Sender: TObject);
begin
  close;
end;

end.
3. Setelah selesai, Cek hasil program tersebut...


 

Selasa, 12 Mei 2015

Exam --> Program perpangkatan

Halloooo guys,...
Kali ini, ratih bakal ngeshare contoh program yang tadi dikasih sama dosen neh...
lumayan bikin pusing juga waktu ngecobain ini program, tapi berkat semangat 45 dan kerja keras akhirnya aku berhasil,... hahahaha...,
Yuk, mari kita mulai belajarnya

1. Pertama kita buat dulu tampilan interface pada program yang mau kita buat yaaa... kek gini neh..
2. Nah, kalo udah buat tampilan interface nya.. coba kalian kik button proses untuk membuat listing programnya. dan ketikkan teks dibawah ini...
unit tugas4;

interface

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

type
  TForm1 = class(TForm)
    txtA: TEdit;
    txtB: TEdit;
    txtC: TEdit;
    txtD: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function pangkat(x,y:integer):integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.pangkat(x,y:integer):integer;
var
  i,c:integer;
begin
  i:=1;
  c:=1;
  while i<=y do
  begin
    c:=c*x;
    i:=i+1;
  end;
  pangkat:=c;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  A2,B3,C3,A,B,C:integer;
  D:real;
begin
  A:=strtoint(txtA.Text);
  B:=strtoint(txtB.Text);
  C:=strtoint(txtC.Text);

  A2:=pangkat(A,2);
  B3:=pangkat(B,3);
  C3:=pangkat(C,3);

  D:=(A2+B3)/C3;
  txtD.Text:=floattostr(D);
end;

end.
3. and the last, yuk kita coba cek hasil program ini...
Dan,,...... berhasil.... berhasil.... berhasil....



Selasa, 05 Mei 2015

Program perpangkatan

Halo temen-temn semua. dah lama gk ngeblog kangen juga. kali ini saya mau ngasi tutorial tentang Operator pada delphi, mungkin temen2 delphier dah sangat menguasai tentang ini, tapi mungkin ada temen2 yang lupa ato yang baru belajar bisa gabung disini dah...

Okey sebelum kita mulai, temen mesti tau dulu jenis Operator pada Delphi, di delphi ada 3 jenis Operator yaitu : Operator Aritmatika, Operator Perbandingan dan Operator Logika;

Untuk Operator Aritmatika, ada banyak jenis antara lain :
  1. ^ : Operator pemangkatan,
  2. * : Operator pengalian.
  3. / : Operator pembagian dengan hasil bilangan pecahan.
  4. Div : Operator pembagian dengan hasil bilangan Bulat.
  5. Mod : Operator Sisa Bagi.
  6. + : Operator Penjumlahan.
  7. - : Operator pengurangan. 
Oke kalo gitu mari kita mulai aja yuk....

1. Tampilan interface pada form 
2. coba kalian klik pada button pangkat 1..
dan ketikkan teks dibawah ini...
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    btnPANGKAT1: TButton;
    btnPANGKAT2: TButton;
    btnPANGKAT3: TButton;
    btnPANGKAT4: TButton;
    procedure btnPANGKAT1Click(Sender: TObject);
    procedure btnPANGKAT2Click(Sender: TObject);
    procedure btnPANGKAT3Click(Sender: TObject);
    procedure btnPANGKAT4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure pangkat1(p,l:string);
    function pangkat2(p,l:string):string;
    function pangkat3(m,n:integer):integer;
  end;

var
  Form1: TForm1;
  c:integer;

implementation

{$R *.dfm}

procedure TForm1.btnPANGKAT1Click(Sender: TObject);
var
  a,b,i,c:integer;
begin
  i:=1;
  c:=1;
  a:=strtoint(edit2.Text);
  b:=strtoint(edit1.Text);
  while i<=a do
  begin
    c:=c*b;
    i:=i+1;
  end;
  edit3.Text:=inttostr(c);
end;

procedure TForm1.pangkat1(p,l:string);
var
  a,b,i:integer;
begin
  i:=1;
  c:=1;
  a:=strtoint(p);
  b:=strtoint(l);
  while i<=a do
  begin
    c:=c*b;
    i:=i+1;
  end;
  edit3.Text:=inttostr(c);
end;

function TForm1.pangkat2(p,l:string):string;
var
  a,b,i:integer;
begin
  i:=1;
  c:=1;
  a:=strtoint(p);
  b:=strtoint(l);
  while i<=a do
  begin
    c:=c*b;
    i:=i+1;
  end;
  pangkat2:=inttostr(c);
end;

function TForm1.pangkat3(m,n:integer):integer;
var
  i:integer;
begin
  i:=1;
  c:=1;
  while i<=n do
  begin
    c:=c*m;
    i:=i+1;
  end;
  pangkat3:=c;
end;

procedure TForm1.btnPANGKAT2Click(Sender: TObject);
begin
  pangkat1(edit2.Text,edit1.Text);
end;

procedure TForm1.btnPANGKAT3Click(Sender: TObject);
begin
  edit3.Text:=pangkat2(edit2.Text,edit1.Text);
end;

procedure TForm1.btnPANGKAT4Click(Sender: TObject);
var
  a,b,c:integer;
begin
  a:=strtoint(edit1.Text);
  b:=strtoint(edit2.Text);
  c:=pangkat3(a,b);
  edit3.Text:=inttostr(c);
end;

end.



3. Nah, yuk kita coba jalankan guys....
Jreng..... jreng..... ternyata hasil begadang ku malam ini ga sia - sia guys..
ini hasil program yang tadi disampaikan sama dosen gue...:)



 

Rabu, 22 April 2015

Program deret bilangan pada program delphi

Salam Statistika!!!! Di laman ini anda akan disajikan beberapa hasil keringat saya dan hasil ketidaktiduran saya untuk mengerjankan tugas...

Deskripsi Program

Program ini adalah program perhitungan deret aritmetika dan geometri. Program ini menghitung bilangan suku ke-n yang ingin diketahui, barisan dari suku pertama hingga suku ke-n, dan jumlah deret yang dihasilkan. Program ini menggunakan logika perulangan dan logika percabangan. Logika percabangan yang dipakai adalah case-of pada penentuan perhitungan deret aritmetika atau geometri dan if-then pada penentuan rumus jumlah deret geometri berdasarkan rasionya. Logika perulangan yang dipakai adalah for-to-do pada penulisan deret bilangan dalam listbox. Program ini dibuat dengan menggunakan Delphi 7. Komponen yang digunakan pada program ini adalah  ListBox (1), button (3), edit (3), dan label (8).

1. Interface program
2. Kemudian klik pada proses button dan ketikkan teks di bawah ini :

unit deret;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  a,i,b:integer;
begin
  a:=strtoint(Edit1.Text);
  Memo1.Clear;
  i:=1;
  while i<=a do
  begin
    b:=i;
    Memo1.Lines.Add(inttostr(b));
    i:=i+1;
  end;
end;

end.
3. setelah mari kita coba jalankan program tersebut
Hasil ketika di run
Oke, uah dulu yah postingan ratih kali ini, semoga bermanfaat guys...:)

Selasa, 14 April 2015

REKURSI

Helloooo Guys........
Pada tulisan ratih kali ini, ratih bakal ngeshare buat kalian semua tentang rekursi..
Sebelum ratih aplikasikan dalam program delphi, pasti banyak yang penasaran neh.. sebenarnya rekursi itu apa siiiiih????
Okeh deh, ini ratih kasih penjelasan sedikit tentang rekursi biar kalian gak pada bingung liat postingan ratih..
let's cekidot..:D

Rekursi adalah proses pengulangan sesuatu dengan cara kesamaan-diri. Sebagai contohnya, saat dua cermin berada paralel antara satu dengan yang lain, gambar yang tertangkap adalah suatu bentuk rekursi tak-terbatas. Istilah ini memiliki makna beragam bergantung kepada ragam disiplin mulai dari linguistik sampai logika. Penggunaan paling umum dari rekursi yaitu dalam matematika dan ilmu komputer, yang mengacu kepada suatu metode mendefinisikan fungsi yang mana fungsi tersebut menggunakan definisinya sendiri. Secara spesifik hal ini mendefinisikan suatu instansi tak-terbatas (nilai fungsi), menggunakan ekpresi terbatas dengan beberapa instansi bisa merujuk ke instansi lainnya, tapi dengan suatu cara sehingga tidak ada perulangan atau keterkaitan tak-terbatas dapat terjadi. Istilah ini juga digunakan secara umum untuk menjelaskan suatu proses pengulangan objek dengan cara kesamaan-diri.

Definisi formal dari rekursi

Rekursi dalam program perekaman layar, dengan suatu jendela paling kecil mengandung foto keseluruhan layar.
Dalam matematika dan ilmu komputer, kelas dari objek atau metode memperlihatkan perilaku rekursif bila mereka dapat didefinisikan oleh dua properti berikut:
  1. Sebuah kasus (atau beberapa kasus) dasar sederhana
  2. Sejumlah aturan yang mengurangi kasus-kasus lainnya sampai ke kasus dasarnya.
Sebagai contoh, berikut ini adalah definisi rekursif dari leluhur seseorang:
  • Orang tua seseorang adalah leluhur seseorang (kasus dasar).
  • Orang tua dari suatu leluhur juga merupakan leluhur-nya (langkah rekursi).
Bilangan Fibonacci adalah contoh klasik dari rekursi:
  • Fib(0) adalah 0 [kasus dasar]
  • Fib(1) adalah 1 [kasus dasar]
  • Untuk semua integer n > 1: Fib(n) adalah (Fib(n-1) + Fib(n-2)) [definisi rekursif]
Banyak aksioma matematika berdasarkan aturan-aturan rekursif. Sebagai contohnya, definisi formal dari bilangan asli pada Aksioma Peano dapat dideskripsikan sebagai: 0 adalah bilangan asli, dan setiap bilangan asli memiliki sebuah suksesor, yang juga merupakan bilangan asli. Dengan kasus dasar ini dan aturan rekursif, seseorang dapat membuat himpunan dari semua bilangan asli.
Gambaran humornya berbunyi: "Untuk memahami rekursi, pertama anda harus memahami rekursi." Atau mungkin yang lebih akurat, dari Andrew Plotkin: "Jika anda telah mengetahui apa itu rekursi, cukup ingat jawabannya. Kalau tidak, cari orang yang berdiri paling dekat dengan Douglas Hofstadter selain anda; lalu tanya dia rekursi itu apa."
Objek matematika yang didefinisikan secara rekursif termasuk fungsi, himpunan, dan terutama sekali fraktal.

Oke guys, kalo kalian sekarang udah ngerti apa itu rekursi.. Yuk mari kita coba dalam aplikasi delphi nya..

1. Kalian bisa buka form worksheet kalian seperti biasanya, kek gini neh gambarnyaaa...
 
2. Setelah udah, bisa kalian coba ketikkan teks berikut :
program rekursi;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
  Tipelarik=string[20];
  Larikurut=array[1..1000] of Tipelarik;

Procedure Quicksort(var x:Larikurut;bawah,atas:word);

var
  i,j:word;
  sementara:Tipelarik;

begin
  while atas>bawah do
  begin
    i:=bawah;
    j:=atas;
    sementara:=x[bawah];
    {memecah larik menjadi 2 bagian}
    while i<j do
    begin
      while x[j]>sementara do
      j:=j-1;
      x[i]:=x[j];
      while(i<j) and (x[i]<=sementara) do
      i:=i+1;
      x[j]:=x[i];
    end;
    x[i]:=sementara;
    {urutkan rekursi}
    Quicksort(x,bawah,i-1);
    bawah:=i+1;
  end;
end;

var
  nama:Larikurut;
  n,i:word;

begin
  write('Jumlah data yang akan diurutkan ? ');readln(n);
  writeln;
  writeln('Masukkan data : ');
  for i:=1 to n do
  begin
    write('Data ke ',i,'? ');readln(nama[i]);
  end;
  {urutkan dengan procedure quick sort}
  Quicksort(nama,1,n);
  {tampilkan data yang diurut}
  writeln;
  writeln('Data yang telah diurut : ');
  for i:=1 to n do
    writeln(nama[i]);
    readln;
end.

3. Nah, kalo udah capek ngetik nya.. sekarang yuk kita coba run hasil kerja keras kita..
Taraaaaa.... ini lah hasilnya...

Dan, inilah hasil mata kuliah rekursi dari Bapak Hedi hari ini yang ratih coba guys,..
semoga bermanfaat...