Untuk membuat interface pada file 'FORM' lihat gambar dibawah ini
bila belum bisa membuka file 'FORM' bisa dilihat disini

Gambar pada angka 1 berisi 'Panjang, Lebar, dan Luas' yang berasal dari menu 'LABEL'  bisa dilihat dari panah yang segaris dengan angka 1.
gambar pada angka 2 berisi 'kotak' yaitu kotak untuk mengisi angka-angka pada program, dan kotak tersebut berasal dari menu 'EDIT' bisa dilihat dari panah yang segaris dengan angka 2.
gambar pada angka 3 adalah Button 'Hitung' untuk memproses penghitungan program, dan Button tersebut berasal dari menu 'BUTTON' bisa dilihat dari panah yang segaris dengan angka 3.


Untuk gambar disamping berikut penjelasannya.
untuk membuat 'DATA NAMA PESERTA dan JUMLAH DATA' bisa dilihat pada garis merah dan kuning yang mengarah pada menu 'LABEL'
selanjutnya untuk membuat Button 'Input, Clear, dan Close' bisa dilihat pada garis hijau yang mengarah pada menu 'BUTTON'
dan yang terakhir adalah 'Listbox' (kotak besar berwarna abu-abu) yaitu untuk menampilkan keluaran data yang telah diproses, bisa dilihat pada garis biru yang mengarah pada menu 'LISTBOX'.  dan untuk kotak berwarna putih adalah kotak 'EDIT' yang sudah dijelaskan pada gambar diatas.




**********Selamat Mencoba**********
Latihan 7 Quick Sort (pengurutan cepat)

buat interface seperti gambar dibawah ini.
Petunjuk pembuatan interfacenya coba disini
interface program
komponen yang terdapat didalamnya yaitu :
- Button1
- Button2
- Button3
- Edit1
- Label1
- Label2
- Label3
- Label4
- Listbox1
- Listbox2
listing program1

listing program 2

listing program 3
Keterangan :
pada BUTTON1 berisi ;
var 
nilai:integer
begin
  //menambahkan nilai ke listbox____________tanda // atau remark menunjukkan 
  if TryStrToInt(Edit1.Text,Nilai) then     penjelasan rumus bisa diganti
  ListBox1.Items.Add(IntToStr(nilai));      dengan tanda {}
  //membersihkan komponen inputan nilai
  Edit1.Clear;
  //focus kursor ke inputan nilai
  Edit1.SetFocus;___________________SetFocus membuat kursor berpindah dan
end;                                tampak

pada BUTTON2 berisi ;
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;

pada BUTTON3 berisi ;
begin
  close;

running program
Pada gambar 1 menunjukkan awal program yang sedang berjalan. pada gambar 2 mulai memasukkan angka yang akan diurutkan. pada gambar 3 terdapat angka 3, 9, dan 1 yang telah dimasukkan di kotak 'Data' untuk diproses pada program. pada gambar 4 telihat hasil pengurutan data dari yang terkecil ke terbesar pada kotak 'Hasil'.



**********Selamat Mencoba**********

Berikut cara membuat program untuk menghitung penjumlahan deret dengan rumus d=a+b/c, dengan menggunakan function-faktorial. nilai a, b ,c adalah hasil penjumlahan deret 1+2+3 . . .
nilai a, b, c minimal 1
contoh
jika :
a=3, b=5, c=6
maka :
a=1+2+3=6
b=1+2+3+4+5=15
c=1+2+3+4+5+6=21

d = 6+15/21
d =. . .

berikut langkah-langkahnya.
pertama buat dulu interface program seperti gambar dibawah ini. kemudian klik 2 kali button 'PROSES' selanjutnya lihat gambar Listing Program 1 dan 2.


tulis Listing Program seperti gambar dibawah ini.

Listing Program1

Listing Program 2

Listing Program 3
rumus program :
-----------------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  DA,DB,DC,A,B,C:integer;
  D:real;
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;
-----------------------------------------------------------------------------------------

Running Program
Gambar 1 menunjukkan awal program yang sedang berjalan, gambar 2 menunjukkan angka telah dimasukkan dan gambar 3 menunjukkan tombol 'PROSES' sedang dijalankan.



_________________________________________________________________________________

Dan berikut ini adalah program yang sama dengan rumus yang berbeda yaitu menggunakan Function dan berpangkat jadi hasilnya pun akan berbeda.

berikut tampilan programnya.

interface

Listing Program 1

Listing Program 2
Perbedaannya terletak disini :
-------------------------------------------------------------------------------------------------
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);           -------> nilai 'A' berpangkat 2
  B3:=pangkat(B,3);           -------> nilai 'B' berpangkat 3
  C3:=pangkat(C,3);           -------> nilai 'C' berpangkat 3
  D:=(A2+B3)/C3;
  txtD.Text:=floattostr(D);

end;
-------------------------------------------------------------------------------------------------

Function Pangkat(m,n:integer):integer;
m mewakili bilangan bernilai integer/bilangan bulat
n mewakili pangkat bernilai integer/bilangan bulat
sedangkan Function Pangkat adalah hasil perpangkatan itu sendiri yang bernilai integer/bilangan bulat

Setelah selesai, jalankan program dengan tekan "F9" dan running program berjalan seperti gambar dibawah ini.

Running Program
Gambar 1 menunjukkan awal program yang sedang berjalan, gambar 2 menunjukkan  kotak a, b, dan c diisi dengan angka masing-masing 2 dan gambar 3 menunjukkan button 'PROSES' menghasilkan keluaran d menjadi 1,5





**********Selamat Mencoba**********


Latihan 5 mencoba membuat program pangkat 1, 2, 3, dan 4
berikut langkah-langkah programnya.

buat interface seperti gambar disamping
lalu klik 2 kali pada button 'PANGKAT 1'
kemudian akan muncul lembar Listing program dan tulis perintah program seperti gambar dibawah ini.



Listing 1

a
Listing 2
pada 
public
{Public declarations}
Procedure pangkat1(p,l:string);         -----> mewakili program
function pangkat2(p,l:string):string;   -----> mewakili variabel
function pangkat3(m,n:integer);integer; -----> mewakili variabel

Listing 3

Listing 4

Listing 5
Saat klik 2kali pada BUTTON1 ;
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;

Saat klik 2kali pada BUTTON2 ;
procedure TForm1.btnPANGKAT2Click(Sender: TObject);
begin
  pangkat1(edit2.Text,edit1.Text);
end;

Saat klik 2kali pada BUTTON3 ;
procedure TForm1.btnPANGKAT3Click(Sender: TObject);
begin
  edit3.Text:=pangkat2(edit2.Text,edit1.Text);
end;

Saat klik 2kali pada BUTTON4 ;
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;  

Saat klik 2kali pada BUTTON CLEAR ;
procedure TForm1.btnCLEARClick(Sender: TObject);
begin
  edit1.Text:='';
  edit2.Text:='';
  edit3.Text:='';
end;      

Setelah selesai menulis perintah-perintah seperti gambar Listing 1 s.d 5 lalu lakukan running program dengan menekan "F9" pada keyboard. berikut adalah hasil running programnya.

hasil running program
           Pada gambar 1 adalah tampilan awal yang masih kosong, gambar 2 pada kotak 'bilangan' diisi angka 4, gambar 3 pada kotak 'pangkat' diisi angka 3, gambar 4 button 'pangkat 3' di tekan dan kotak 'hasil' menghasilkan angka 64, gambar 5 adalah button 'hapus' dan semua angka menjadi terhapus.


Gambar disamping menunjukkan fungsi tombol pangkat 1, 2, 3, dan 4.
gambar 1 menunjukkan saat memproses angka dengan tombol 'PANGKAT1' dan menghasilkan keluaran 64
gambar 2 menunjukkan saat memproses angka dengan tombol 'PANGKAT2' dan menghasilkan keluaran 64
gambar 3 menunjukkan saat memproses angka dengan tombol 'PANGKAT3' dan menghasilkan keluaran 64
gambar 4 menunjukkan saat memproses angka dengan tombol 'PANGKAT4' dan menghasilkan keluaran 64
ini menunjukkan button memiliki fungsi yang sama tetapi setiap tombol memiliki rumus yang berbeda





**********Selamat Mencoba**********


Latihan 4 (Listing Program tombol PROSES [btnProses])
membuat aplikasi Deret sampai Suku ke-n, berikut tampilan interface dan Listing Program.


pertama buat interface seperti gambar disamping












setelah interface selesai, klik 2 kali tombol/button 'PROSES' 






kemudian akan muncul Lembar kerja untuk menulis Listing Program, tulis perintah-perintahnya seperti gambar 1 dan 2  dibawah ini

gambar 1


gambar 2
hasil Running Program

Pada hasil running program disamping pada gambar no-1 menunjukkan awal tampilan, pada gambar no-2 menunjukkan tampilan diisi dengan angka 6 setelah itu klik tombol/button 'PROSES' dan gambar no-3 menunjukkan hasil proses program.

_________________________________________________________________________________

Pada Tugas kali ini saya akan mengubah Listing program ini menghasilkan deret angka dengan pola -1, 3, -5, 7, -9 . . .

tampilan/interface tidak berubah yang berubah hanya hasil proses program karena perintah program akan saya ubah sehingga menghasilkan pola seperti diatas

berikut Listing programnya.


gambar a





gambar b

           Pada gambar a tidak mengalami perubahan, yang mengalami perubahan adalah gambar b yaitu pada bagian 'var dan begin 1 & 2'. rumus yang semula :
begin
a:=strtoint(Edit1.Text);
Memo1.Clear;  ----------------> Untuk membersihkan kotak memo saat nilai 
i:=1;                           dimasukkan
while i<=a do
begin
b:=i;
Memo1.Lines.Add(inttostr(b)); ------> Untuk mencetak isi variabel (b) [tipe string] 
i:=i+1;                               dan hasilnya terletak pada kotak memo
menjadi 
begin
a:=strtoint(Edit1.Text); ----> variabel 'a' yang bernilai string akan diubah menjadi  
Memo1.Clear;                   integer pada kotak edit1 dan berbasis text
i:=-1;
c:=-2;
while i<=a do
begin
b:=i;
Memo1.Lines.Add(inttostr(b));
i:=(b+c)*-1;
c:=c*-1;


hasil running setelah mengalami perubahan perintah
           Pada gambar no-1 adalah awal interface, gambar no-2 diisi angka 6, dan gambar no-3 hasil 'PROSES' dan menghasilkan pola angka deret -1, 3, -5 karena angka 6 tidak termasuk angka deret maka yang muncul adalah angka sebelum 6 yaitu -5 bukan 7.





**********Selamat Mencoba**********


Rekursi atau recursion adalah proses dari suatu subprogram (dapat berupa fungsi/prosedur) yang memanggil dirinya sendiri. Proses rekursi untuk beberapa kasus merupakan algoritma yang baik dan dapat membuat pemecahan masalah lebih mudah. Akan tetapi sebagai imbalannya, proses rekursi ini harus dibayar mahal dengan memori yang banyak digunakan dikarenakan setiap kali suatu subprogram dipanggil, maka diperlukan sejumlah tambahan memori.
Jika kita menulis suatu fungsi/prosedur rekursi, yang perlu diperhatikan adalah fungsi/prosedur tersebut harus mengandung suatu kondisi akhir dari proses rekursi. Kondisi ini diperlukan untuk mencegah terjadinya proses rekursi yang tidak berujung (indefinite), yaitu proses rekursi akan dilakukan tanpa henti.

berikut ini program rekursi dengan menggunakan Console Aplication. (rekursi mengurutkan data dengan metode quick sort dalam bentuk procedure). gambar dibawah ini adalah listing program rekursi



lanjutan listing program rekursi


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;

Keterangan : 
Procedure Quicksort(var x:Larikurut;bawah,atas:word);
menggunakan Procedure Quicksort karena pada program ini adalah program mengurutkan data
sementara:Tipelarik;
data bertipe Array
Bagian yang menunjukkan unsur rekursi adalah :
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;



saat menjalankan program, maka akan muncul gambar seperti dibawah ini. pengurutannya dari yang terkecil ke terbesar







**********Selamat Mencoba**********
_________________________________________________________________________________

Tugas [Carilah literature lain tentang Rekursi]

Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi. Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern mendukung keberadaan proses rekursif ini.
Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan menambahkan langkahlangkah sejenis.
Bentuk rekursif :
a. suatu subrutin/fungsi/ prosedur yang memanggil dirinya sendiri.
b. Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin
c. Dengan rekursi, program akan lebih mudah dilihat
Bentuk rekursi bertujuan untuk : 
  • menyederhanakan penulisan program 
  • menggantikan bentuk literasi 

Syarat bentuk rekursif: 
  • ada kondisi terminal (basis) 
  • ada subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal (recurrence)

Kelebihan perulangan rekursif
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi
Kekurangan perulangan rekursif
Tidak bisa melakukan nested loop atau looping bersarang.
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum).
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.


 Sumber : https://zaharaahyesa.wordpress.com/2014/04/10/algoritma-rekursif/




Latihan 2 Program Input nama dengan Array



apa itu array, sudah dijelaskan pada penjelasan yang lalu.. bisa dilihat disini
kenapa menggunakan Array? karena penginputan data dilakukan lebih dari 1kali.

buat aplikasi dengan interface seperti disamping
Petunjuk pembuatan interface coba disini











dan mengubah Properti dari Object Inspector

...Obeject Inspector...











pada Caption Form1 diisi Array
pada Caption Label1 diisi Data Nama Peserta
pada Caption Label2 diisi Jumlah Data
pada Caption Button1 diisi Input (seperti gambar disamping)
lakukan pada semua komponen seperti gambar disamping.







lalu tulis perintah program seperti gambar disamping









lanjutan perintah program













=====>      
setelah klik 'INPUT' masukkan jumlah data seperti diatas (3) lalu 'ok'


pada data ke-1 nama awal : Qonita,  nama belakang : Syarif
pada data ke-2 nama awal : M,          nama belakang : Adam
pada data ke-3 nama awal : Qonita,  
nama belakang : Hasnaini
seperti gambar disamping






hasil input program

Running program





bila 'Clear' diklik maka data diatas akan terhapus dan tampilan akan seperti awal lagi

dan 'Close' akan mengakhiri/menutup program.




















**********Selamat Mencoba**********

Latihan 1 (mengubah listing program dengan menggunakan struktur IF then Else)




Berikut ini cara membuat aplikasi menghitung gaji dengan buat interface                 seperti berikut , , ,
untuk petunjuk membuat interfacenya coba disini

 
 
Aktifkan button/tombol 'Mulai' dengan klik 2 kali




lalu ketik / tulis perintah seperti gambar disamping













Gambar disamping adalah lanjutan perintah gambar diatas.













begin
gaji:=StrToInt(tGaji.Text); ---> nilai gaji akan mengonversi yang bernilai                                                                           string menjadi integer
if tGol.Text='A' THEN Tunjang:=10000 ELSE
if tGol.Text='B' THEN Tunjang:=20000 ELSE
if tGol.Text='C' THEN Tunjang:=30000 
tunj.Caption:=IntToStr(Tunjang); ---> nilai tunj akan mengonversi yang                                                                                      bernilai integer menjadi string
tot:=Tunjang+Gaji;
Total.Caption:=IntToStr(tot); ---> nilai total akan mengonversi yang bernilai                                                                         integer  menjadi  string 
end;



kemudian tekan "F9" dan program akan berjalan seperti gambar disamping kiri

ketikkan nama : ana dan gaji : 200.000 pada golongan isi A, B atau C seperti gambar dibawah ini. kemudian 'tunj' dan 'total' akan tampak seperti gambar dibawah ini.

Running Program







**********Selamat Mencoba**********
Qonita Syarif. Diberdayakan oleh Blogger.