Kamis, 28 April 2011

program palang parkir otomatis

#include
org 100h
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
;
pil :
jnb p0.2,buka2
jnb p0.3,tutup2
jnb p0.0,buka1
jnb p0.1,tutup1
sjmp pil
buka1 :
jnb p0.4,henti1
mov p1,#0fbh
sjmp pil
tutup1 :
jnb p0.5,henti1
mov p1,#0f7h
sjmp pil
buka2 :
jnb p0.6,henti2
mov p3,#0fdh
sjmp pil
tutup2 :
jnb p0.7,henti2
mov p3,#0feh
sjmp pil
henti1 :
mov p1,#0ffh
sjmp pil
henti2 :
mov p3,#0ffh
sjmp pil
;
end

Rekursi

Apa itu rekursi
Rekursi merupakan teknik pemrograman yang menyebabkan suatu fungsi/prosedur memanggil dirinya sendiri. Pemanggilan diri sendiri ini berlangsung terus menerus sampai batas terkecil yang nilai dari fungsi tersebut disebutkan secara eksplisit. Salah satu contoh dari penerapan rekursi adalah perhitungan faktorial.
Sesuai dengan definisinya kita dapat menuliskan fungsi faktorial seperti contoh berikut :
Function faktorial ( n: byte); longint;
begin
if (n = 0 ) or ( n=1) then
faktorial :=1
else
faktorial :=n * faktorial (n-1);
end;
pada baris pertama dari fungsi diatas, nilai n dicek dengan 0 atau 1, jika ya maka akan mengembalikan nilai 1 jika tidak fungsi mengembalikan nilai :
n * Faktorial (n-1)
Untuk memahami proses faktorial berlangsung tambahkan dua pernyataan berikut:
Function faktorial( n: byte); longint;
writeln(‘ atas:’,n );
begin
if (n = 0 ) or ( n=1) then
faktorial:=1
else
faktorial:=n * faktorial(n-1);
writeln(‘bawah; ‘ ,n);
end;


http://digg.com/news/technology/Rekursi_dalam_Pemrograman_Komputer

Subrutin

Prosedur dan Fungsi
Adadua macam subrutin pada pascal,yaitu prosedur dan fungsi.

Prosedur dan fungsi memiliki fungsi yang sama yaitu melakukan tugas tertentu,perbedaannya adalah apabilafungsi mengembalikan suatu nilai setelah dipanggil sedangkan untuk prosedur tidak.

Berikutini adalah sintak penulisan prosedur ecara umum :
Procedur
nama_prosedur(parameter1;parameter2;…)
Begin
(pernyataan-pernyataan)
End.

Berikut ini adalah sintak penulisan fungsisecara umum :
function
nama_fungsi(perameter1;parameter2;….).
tipe_kembalian
begin
(pernyataan-pernyataan)
end;

Nama procedure dan Nama fungsi merupakan nama yang anda berikan ke prosedur atau fungsi.
- Tipe kembalian adalah tipe data dari nilai yang dikembalikan oleh fungsi.
- Parameter1,parameter2…… adalah merupakan informasi yang diberikan ke prosedur
atau fungsi.
- Berikut adalah sebuah contoh prosedur dengan nama procedurku dan sebuah fungsi
dengan nama fungsiku:

Procedure prosedurku;
Begin
(pernyataan-pernyataan);
End;
Fungction fungsiku : integer;
Begin
(pernyataan-pernyataan);
End;


http://davidraja.multiply.com/reviews/item/37

struktur perulangan

A. pernyataan for
Pernyataan pengulangan yang paling sering digunakan adalah for. Pernyataan ini digunakan jika kita telah mengetahui berapa kali kita akan mengulang satu atau beberapa pernyataan. Bentuk umum pernyataan for adalah sebagai berikut:
for pencacah := nilai_awal to nilai_akhir do
Begin
(pernyataan-pernyataan yang akan diulang)
end;
Sekedar tambahan, blok berisi pernyataan-pernyataan
yang harus diulang sering disebut juga kalang
(loop).

1. Pernyataan For Positif
Contoh :
Perulangan positif untuk satu statement :
uses wincrt;
var
i : integer;
begin
for i := 1 to 5 do
writeln ('Belajar Pemrograman’);
readln;
end.
Maka bila program diatas dicompile
Hasilnya :
Penjelasan : Berati statemen Belajar pemrograman akan diulang sebanyak 5 kali yaitu dengan.
Belajar pemrograman
Belajar pemrograman
Belajar pemrograman
Belajar pemrograman
Belajar pemrograman
Modul Pemrograman Komputer Dasar, Universitas Muhammadiyah Yogyakarta, 2006 43 menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5.

2. Pernyataan For Negatif
Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil.
Statement yang digunakan adalah For-DownTo-Do
contoh:
uses wincrt;
var
i : integer;
begin
for i := 10 downto 1 do
write (i:3);
end.


B. pernyataan for bersarang
Kita juga bisa menuliskan pernyataan for di dalam penyataan for. Kontruksi semacam ini sering disebut dengan penyataan for bersarang. Perhatikan contoh berikut:
for x := 1 to 3 do
for y :=1 to 2 do
writeln (x, ‘ ‘ y);
Kalang for yang luar (dengan pencacah variabel x) akan menjalankan kalang yang dalam (dengan pencacah 10 9 8 7 6 5 4 3 2 1 Modul Pemrograman Komputer Dasar, Universitas Gunadarma,2008 y) sebanyak 3 kali. Dan pada setiap pengulangan di layar akan dituliskan nilai x dan y. Berikut ini adalah keluaran dari program di atas:
1 1
1 2
2 1
2 2
3 1
3 2
Pada saat x bernilai 1, y diulang sebanyak 2 kali.
Jadi pada layar akan tertulis 1 1 dan 1 2. Demikian juga pada saat x bernilai 2, y diulang sebanyak 2 kali. Jadi pada layar akan tertulis 2 1 dan 2 2. Hal yang sama terjadi pada saat x bernilai 3, y diulang
sebanyak 2 kali. Sehingga pada layar tertulis 3 1 dan 3 2.

C. pernyataan while
perintah bisa juga berupa blok yang berisi kumpulan perintah-perintah di antara { dan }. perintah ini disebut juga dengan inti perulangan. Inti perulangan akan terus dieksekusi selama suatu_kondisi bernilai true. suatu_kondisi ini disebut juga penguji perulangan.

Ada beberapa hal yang mungkin jadi pertanyaan. Apa yang terjadi jika suatu_kondisi sudah bernilai false sejak pertama kali komputer sampai pada pernyataan ini? Dalam hal ini blok perulangan tidak akan dieksekusi sama sekali. Program akan melompat ke perintah berikutnya di luar blok perulangan.

Lalu apa yang terjadi jika suatu_kondisi bernilai false di tengah-tengah perulangan, apakah program keluar dari perulangan saat itu juga? Dalam hal ini, tentunya tidak. Program akan mengeksekusi semua perintah hingga akhir blok selesai. Setelah itu program akan kembali ke pernyataan while, dan setelah mengevaluasi kembali suatu_kondisi, dan jika hasilnya salah, baru program akan melompat ke perintah berikutnya di luar blok.

Mari kita ubah sedikit algoritma yang kita buat di bagian sebelumnya. Kali ini kita akan membuat program yang menghitung rata-rata dengan cara menanyakan suatu bilangan kepada user, kemudian program akan berhenti jika masih ada data yang akan diproses.

Inisialisasi jumlah dengan 0
Inisialisasi n (berapa data yang dimasukkan user) dengan 0
while (masih ada data yang akan diproses):
Minta input dari user
Tambah jumlah dengan input dari user
Tambah n dengan 1
Bagi jumlah dengan n untuk menghitung rata-rata
Cetak rata-rata ke layar

Pertanyaan berikutnya, bagaimana menentukan masih ada data yang akan diproses? Cara yang paling mudah adalah melihat apakah nilai yang dimasukkan user bernilai 0. Nol di sini bukan termasuk data yang akan dijumlahkan tetapi bertugas sebagai sinyal bahwa tidak ada lagi data yang harus dimasukkan.

Lalu bagaimana kita harus menguji bahwa data yang dimasukkan bernilai 0 atau bukan? (Ingat, kita baru menanyakan data di dalam blok perulangan. Pada saat komputer pertama kali menemui perulangan while, komputer tidak tahu apa-apa.) Dalam hal ini, kita akan sedikit ubah algoritma kita seperti berikut :

Inisialisasi jumlah dengan 0
Inisialisasi n (berapa data yang dimasukkan user) dengan 0
Minta input dari user
while (input tidak sama dengan 0):
Tambah jumlah dengan input dari user
Tambah n dengan 1
Minta input dari user
Bagi jumlah dengan n untuk menghitung rata-rata
Cetak rata-rata ke layar

Pada dasarnya, kita tanyakan user terlebih dahulu sebelum perulangan while. Dengan cara ini, kita bisa mendapat nilai input untuk dievaluasi pada pernyataan while. Di dalam perulangan while, kita tempatkan pertanyaan untuk mendapat input dari user di akhir perulangan. Artinya, setelah kita memproses input dari user, kita akan tanyakan lagi kepada user untuk mendapatkan kondisi untuk mengevaluasi kondisi while berikutnya.

Perhatikan juga bahwa ketika 0 dimasukkan, program tidak akan menghitung nilai 0 lagi. Di algoritma sebelumnya, nilai 0 akan ikut dijumlahkan dan n akan bertambah 1, padahal 0 bukan data. Nol hanya berfungsi sebagai sinyal bahwa perulangan harus selesai. Masalah ini sangat amat umum ditemui oleh programmer, karena menghitung satu demi satu ternyata tidak mudah. Untuk itu debugger diperlukan untuk melihat lebih detail apa yang dilakukan oleh komputer.

D. pernyataan repeat-until
Pernyataan pengulangan ini hampir sama dengan pernyataan pengulangan while, dan biasanya digunakan bila jumlah pengulangan belum dapat ditentukan pada saat program ditulis. Perbedaan pernyataan repeat..until dan while terletak pada letak pengecekan kondisi. Jika pada pernyataan while, kondisi dicek pada awal kalang, sedangkan pada pernyataan repeat..until, kondisi dicek pada akhir kalang. Perbedaan yang lain, bila pernyataan while mengulang pernyataan selama kondisi masih terpenuhi, pernyataan repeat..until mengulang pernyataan selam kondisi belum terpenuhi. Bentuk umum penyataan repeat..until adalah sebagai berikut:
repeat
(pernyataan-pernyataan yang akan diulang)
until kondisi
Contoh :
repeat
x := x – 1;
y := y – 1;
until (x <= 0);
Program ini akan mengulang dua pernyataan (x := x -
1) dan (y := y - 1) sampai nilai x lebih kecil atau
sama dengan 0.


http://arraydalamprogram.blogspot.com/2010/05/pernyataan-while.html
http://latifrudianto.blogspot.com/2010/10/e-pernyataan-repeatuntil.html

struktur percabangan

A. pernyataan if..else
Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan.
if
Hanya melaksanakan aksi bila kondisinya adalah benar / true
if…else
Melaksanakan suatu aksi untuk kedua kondisi, baik benar / true atau salah / false
Syntaxnya seperti berikut:

if(kondisi)
{ Pernyataan yang dijalankan jika kondisi bernilai benar / true }
Else
{ Pernyataan yang dijalankan jika kondisi bernilai salah / false }

B. pernyataan if...elseif
Bentuk ini adalah salah satu perkembangan dari bentuk IF sederhana. Dengan menambahkan percabangan If..Else.. didalam pilihan percabangan Sebelumnya memungkinkan kita memiliki 3 struktur kendali atau lebih dalam sebuah program.

Syntax umumnya:
If(kondisi 1)
{ Pernyataan yang dijalankan jika kondisi 1 bernilai benar / true }
Else if(kondisi 2)
{ Pernyataan yang dijalankan jika kondisi 2 bernilai benar / true Dan kondisi 1 bernilai salah / false (karena berada didalam else IF pertama) }
Else
{ Pernyataan yang dijalankan jika kondisi 1 dan 2 bernilai salah / false }

C. pernyataan case
Bentuk Umum : Case – Of

CASE ekspresi OF
Case label list 1 : statement_1;
Case label list 2 : statement_2;

Case label list n : statement_n;
END;

Bentuk Umum : Case - Of…Else

CASE ekspresi OF
Case label list 1 : statement_1;
Case label list 2 : statement_2;

Case label list n : statement_n;
ELSE statement;
END.

Perbedaan antara CASE dengan IF adalah jika statement if menyeleksi suatu kondisi dan terpenuhi, setelah memproses statement dalam lingkungan yang terpenuhi tersebut, proses penyeleksian masih dilakukan terhadap statement if berikutnya yang lain. Sedangkan pada struktur CASE-OF bila salah satu kondisi terpenuhi dan statement tersebut telah diproses, selanjutnya statement-statement yang lainnya dalam lingkungan CASE tidak akan diseleksi lagi. Daftar case label dapat berupa sebuah konstanta, atau range dari konstanta yang bukan bertipe real.


http://lalafauzanleunisla.blogspot.com/2010/06/pernyataan-case.html
http://ajenkkartika.blogspot.com/2009/12/struktur-percabangan-dalam-program-c.html