Senin, 25 Mei 2009

Program Bahasa Assembly_Kipas

SCRIPT PROGRAM:
ORG 100H
BIL1 DB 2, 10, 4, 30
KAL0 DB 13,10,'KIPAS BERHENTI (25 < TOTAL DATA >= 50)$'
KAL1 DB 13,10,'KIPAS 1 NYALA (TOTAL DATA >= 25)$'
KAL2 DB 13,10,'KIPAS 2 NYALA (TOTAL DATA >= 30)$'
KAL3 DB 13,10,'KIPAS 3 NYALA (TOTAL DATA >= 35)$'
KAL4 DB 13,10,'KIPAS 4 NYALA (TOTAL DATA >= 40)$'
KAL5 DB 13,10,'KIPAS 5 NYALA (TOTAL DATA >= 45)$'
MULAI : XOR AX, AX
MOV CX, 3H
MOV DI, 100H
AMBIL : MOV AL, [DI]
ULANG : INC DI
MOV BL, [DI]
ADD AL, BL
LOOP ULANG
MOV AH,0H
MOV SI, AX
CMP SI, 31H
JGE CTK_KAL0
CMP SI, 19H
JGE CTK_KAL1
JL CTK_KAL0
HABIS : INT 20H
CTK_KAL0 PROC
LEA DX, KAL0
MOV AH, 09H
INT 21H
JMP HABIS
CTK_KAL0 ENDP
CTK_KAL1 PROC
LEA DX, KAL1
MOV AH, 09H
INT 21H
CMP SI, 1EH
JGE CTK_KAL2
JMP HABIS
CTK_KAL1 ENDP
CTK_KAL2 PROC
LEA DX, KAL2
MOV AH, 09H
INT 21H
CMP SI, 23H
JGE CTK_KAL3
JMP HABIS
CTK_KAL2 ENDP
CTK_KAL3 PROC
LEA DX, KAL3
MOV AH, 09H
INT 21H
CMP SI, 28H
JGE CTK_KAL4
JMP HABIS
CTK_KAL3 ENDP
CTK_KAL4 PROC
LEA DX, KAL4
MOV AH, 09H
INT 21H
CMP SI, 2DH
JGE CTK_KAL5
JMP HABIS
CTK_KAL4 ENDP
CTK_KAL5 PROC
LEA DX, KAL5
MOV AH, 09H
INT 21H
JMP HABIS
CTK_KAL5 ENDP

HASIL PROGRAM :
Data : 2, 10, 4, 30
Total Data = 46 (KIPAS 1-5 MENYALA)

Fungsi Dengan Nilai Balikan

BAB I
PENDAHULUAN

1.1. LATAR BELAKANG MASALAH
Seiring dengan perkembangan zaman, mahasiswa dituntut untuk aktif dan kreatif dalam menempuh pendidikan. Termasuk dalam bidang teknologi informatika sebab setiap harinya ada perubahan yang signifikan. Mulai dari peralatan komunikasi yang lebih efisien dan canggih sampai pembuatan software yang lebih beragam.
Untuk pembuatan software tersebut, seorang programmer dituntut untuk membuat suatu program yang baik dan diminati banyak orang, sehingga program tersebut dapat berjalan sesuai dengan konsep dan fungsi yang telah ada.
Di dalam program tersebut pasti terdapat suatu fungsi yang menghasilkan nilai balikan. Untuk mengetahui nilai balikan pada program maka kita harus terlebih dahulu memahami “apa yang dimaksud dengan fungsi”.
Pada makalah ini, kita akan menjelaskan definisi fungsi dan fungsi dengan nilai balikan agar kita dapat memahami fungsi-fungsi nilai balikan pada suatu pemrograman yang baik.
1.2. RUMUSAN MASALAH
Adapun rumusan masalah yang muncul dari latar belakang di atas adalah sebagai berikut :
1. Apakah definisi suatu fungsi itu?
2. Apa saja jenis dari fungsi?
3. Apakah definisi fungsi dengan nilai balikan?
1.3. TUJUAN
Dengan adanya rumusan masalah seperti di atas, maka tujuan dari pembuatan makalah adalah sebagai berikut :
1. Untuk mengetahui dan memahami definisi suatu fungsi
2. Untuk mengetahui dan memahami jenis-jenis dari fungsi
3. Untuk mengetahui dan memahami definisi fungsi dengan nilai balikan

BAB II
PEMBAHASAN

2.1. DEFINISI FUNGSI
Fungsi/function adalah bagian dari program yang memiliki nama tertentu, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunakan fungsi tersebut.
Keuntungan menggunakan fungsi antara lain :
• Program besar dapat dipisah menjadi program-program kecil.
• Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.
• Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
• Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.
• Mempermudah dokumentasi.
• Reusability, artinya suatu fungsi dapat digunakan kembali oleh program atau fungsi lain.
Sifat-sifat modul/fungsi yang baik adalah sebagai berikut :
 Nilai fan-in tinggi, artinya semakin sering suatu modul dipanggil oleh pengguna semakin tinggi nilai fan-in
 Fan-out rendah, artinya semakin spesifik fungsi suatu modul akan semakin rendah nilai fan-out
 Self-contained tinggi, artinya kemampuan untuk memenuhi kebutuhannnya sendiri.
2.2. JENIS-JENIS FUNGSI
Dalam suatu fungsi terdapat kategori fungsi. Adapun kategori dari suatu fungsi antara lain sebagai berikut :
• Standard Library Function
Yaitu fungsi-fungsi yang telah disediakan oleh Compiler dalam file-file header atau librarynya.
Misalnya: clrscr(), printf(), getch(),writeln(),readln()
• Programmer-Defined Function
Adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-includekan untuk penggunaanya.
Adapun jenis-jenis dari fungsi ditinjau dari adanya suatu nilai balikan pada program adalah sebagai berikut :
1. Fungsi yang Non-Void
Disebut non-void karena mengembalikan nilai kembalian yang berasal dari keluaran
Hasil proses function tersebut mempunyai ciri-ciri :
 Ada keyword return
 Ada tipe data yang mengawali deklarasi fungsi
2. Function yang Void
Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut.
Hasil proses function tersebut mempunyai ciri-ciri :
 Tidak adanya keyword return.
 Tidak adanya tipe data di dalam deklarasi fungsi.
 Tidak dapat langsung ditampilkan hasilnya
2.3. FUNGSI DENGAN NILAI BALIKAN
1. Fungsi popen()
Fungsi ini adalah bagian dari pustaka stdio.h yang berguna untuk memanggil proses. Bentuk umumnya adalah :
FILE *popen(const char *perintah, const char *tipe);
Dimana :
*perintah adalah string yang berisi perintah yang hendak dikerjakan.
*tipe adalah "r" untuk read-only dan "w" untuk write.
Fungsi popen() memiliki nilai kembalian berupa stream pointer jika sukses dan NULL untuk error. Untuk menutup fungsi ini kita bisa gunakan perintah :
pclose(FILE *stream_pointer);
Berikut adalah contoh aplikasinya :
$ edit test_popen.c
#include
main()
{
FILE *fp;
char tampil[200]; /* penampung baris-baris tampilan hasil. */

fp = popen("ls -l", "r"); /* perintah yang diberikan. */
/* pembacaan baris-baris tampilan hasil. */
while ( fgets(tampil, sizeof tampil, fp)) /* menggunakan fungsi fgets untuk mendapatkan string [tampil] dari sebuah stream [fp]*/
{
printf("%s", tampil); /* lihatlah, tipe tampil adalah string [%s] yang kita dapat dari dari stream pointer fp */
}
pclose(fp); /* penutupan */
}
2. Fungsi exit()
Untuk menghentikan sebuah proses, kita bisa menggunakan fungsi exit(). Fungsi ini berada dalam pustaka unistd.h.
Bentuk umum fungsi ini adalah :
void exit(int status)
Dimana status merupakan nilai balikan yang kita kirimkan via fungsi ini. Perjanjian yang banyak digunakan adalah 0 untuk penghentian proses yang sukses dan bukan 0 untuk penghentian proses yang bermasalah.
Daftar yang umum digunakan oleh sistem FreeBSD ada di /usr/include/sysexits.h. Namun kita bisa saja mendefiniskan status error kita sendiri.
Untuk lebih jelasnya perhatikan contoh berikut (test_exit.c yang merupakan modifikasi file test_wait.c) :
$edit test_exit.c
#include
#include /*fork() dan exit()*/
#include /*pid_t*/
int main()
{
pid_t nilai_balikan, pid;
int status;
nilai_balikan = fork();
if (nilai_balikan < 0){ perror("fork"); exit(1); /* CATATAN : perror() menghasilkan sebuah pesan kesalahan pendek pada standard error yang menjelaskan error terakhir yang terjadi ketika sebuah penggilan ke sistem atau fungsi pustaka. */ } else if (nilai_balikan == 0) execlp("/bin/ls","ls",0); else{ pid = wait(&status); printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid); exit(0); } } 3. Fungsi wait() Fungsi wait() berfungsi untuk memaksa menunggu bagi proses pemanggil [proses induk] atas selesainya eksekusi suatu proses anak sebelum melakukan aktivitas yang lain. Bentuk umum fungsi ini adalah : int wait(int *status) ; terlihat bahwa parameter fungsi ini adalah pointer integer. Untuk lebih jelasnya kita bisa melihatnya pada contoh berikut [yang merupakan modifikasi file test_fork.c] : $ edit test_wait.c #include
#include /*fork()*/
#include /*pid_t*/
int main()
{
pid_t nilai_balikan, pid;
int status;
nilai_balikan = fork();
if (nilai_balikan < 0) fprintf(stderr, "Nilai balikan : %d, berarti fork gagal dieksekusi.\n", nilai_balikan); else if (nilai_balikan == 0) execlp("/bin/ls","ls",0); else{ pid = wait(&status); printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid); } } Pada contoh di atas jelas terlihat bahwa proses induk PID 676 harus menunggu selesainya proses anak dengan PID 677 yang sedang menjalankan perintah ls sebelum bisa melakukan kegiataan yang lain [printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid);] dengan memanfaatkan fungsi wait (&status). Dan fungsi status sendiri merupakan pointer integer dari status proses anak yang dihasilkan oleh proses induk. Nilai balikannya fungsi wait (&status) adalah integer sehingga bisa dimuatkan ke variabel pid yang bertipe integer yang kemudian memungkinkan kita tampilkan nilainya dengan fungsi printf() dengan %d yang merupakan format penampilan data bertipe integer pada fungsi printf(). 4. Fungsi fork() Dengan fungsi fork() memungkinkan sebuah proses dijalankan oleh dua proses identik yang kita kenal sebagai proses parent (induk) dan proses child (anak). Fork yang sukses akan memberikan nilai balikan 0 dan memberikan nilai balikan -1 jika terjadi kegagalan eksekusi fungsi ini. Untuk lebih jelasnya perhatikan contoh berikut : #edit test_fork.c #include
#include /* pustaka dimana fungsi fork() berada */
#include /* pustaka dimana tipe data pid_t berada */
int main()
{
pid_t nilai_balikan;
nilai_balikan = fork();
if (nilai_balikan < 0) fprintf(stderr, "Nilai balikan : %d, berarti fork gagal dieksekusi\n", nilai_balikan); else if (nilai_balikan == 0) printf("Nilai balikan : %d, berarti fork berhasil dieksekusi dan membuat proses anak dengan PID : %d\n", nilai_balikan else printf("Ini proses induk dengan PID : %d\n", getpid()); } Tipe data pid_t adalah signed integer untuk merepresentasikan PID yang terdapat dalam standar pustaka GNU sys/types.h. dan fungsi getpid() bisa kita gunakan untuk mengetahui PID dari proses yang berjalan [baik proses induk maupun proses anak]. 5. Fungsi execl() Fungsi execl() bisa digunakan untuk menjalankan dan menghentikan sebuah proses. Fungsi ini berada dalam pustaka unistd.h. Bentuk umum fungsi ini adalah : execl(char *path, char *arg0,…,char *argn, 0); Dimana : - path adalah path dari sistem UNIX [baca FreeBSD] dari perintah yang akan diberikan. - arg0 adalah string yang mengacu pada path - arg1 sampai argn adalah argumen perintahnya 0 adalah NULL terminator yang merupakan argumen yang bertugas memberitahukan kepada sistem C Programming bahwa tak ada lagi argumen yang di-list. Penggunaan * pada path dan argumen menandakan bahwa string yang diinputkan pada fungsi ini ditampung dalam pointer. Berikut adalah contoh aplikasi fungsi execl() untuk menampilkan semua isi direktori aktif dalam format panjang : $edit test_execl.c #include
#include
main()
{ printf("Files in Directory are:\n");
execl("/bin/ls","ls", "-la",0);
}
Pada contoh di atas : /bin/ls adalah path, ls adalah arg0 dan 0 adalah Null terminator.

BAB III
PENUTUP

Kesimpulan
Fungsi/function adalah bagian dari program yang memiliki nama tertentu, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunakan fungsi tersebut.
Dalam suatu fungsi terdapat kategori fungsi. Adapun kategori dari suatu fungsi antara lain sebagai berikut :
• Standard Library Function
• Programmer-Defined Function
Adapun jenis-jenis dari fungsi ditinjau dari adanya suatu nilai balikan pada program adalah sebagai berikut :
1. Fungsi yang Non-Void
2. Function yang Void
Pada fungsi dengan nilai balikan terdapat 5 fungsi, yaitu:
1. Fungsi popen()
2. Fungsi exit()
3. Fungsi wait()
4. Fungsi fork()
5. Fungsi execl()

DAFTAR PUSTAKA

http://handaru.blogsome.com
http://freakeinstein.wordpress.com
http://www.freesoftwaremagazine.com
http://techno.okezone.com
http://www.cyberciti.biz
hhtp://sanyasyari.com
Pusat Pengembangan Bahan Ajar – UMB, Agra Kurnia ST, C++

Sabtu, 09 Mei 2009

Definisi Fungsi

FUNGSI
10.1 KONSEP DASAR FUNGSI
Sebuah fungsi berisi sejumlah pernyataan yang dikemas dalam sebuah nama. Nama ini
selanjutnya dapat dipanggil beberapa kali di beberapa tempat dalam program.
• Fungsi merupakan cara penggolongan program menjadi bagian-bagian kecil sehingga
lebih mudah diakses.
• Fungsi membantu menjaga aspek-aspek program yang berbeda secara logikal dipisahkan.
• Dapat dipikirkan bahwa setiap fungsi dianggap sebagai suatu rutin kecil yang
mempunyai tugas tertentu.
Konsep program dibagi menjadi sejumlah modul/rutin.
fungsi main( )
fungsi a( )
fungsi b( )
fungsi c( )
fungsi c_1( )
fungsi c_2( )
fungsi c_3( )

10.2 MENDEFINISIKAN FUNGSI
Suatu fungsi secara umum terdiri dari dua buah komponen utama, yaitu definisi fungsi
dan tubuh fungsi. Definisi fungsi berisi dengan tipe dari fungsi, nama fungsi dan argumen-argumennya
(daftar parameter) jika digunakan. Tubuh fungsi berisi dengan statemen-statemen
yang akan melakukan tugas yang diberikan kepada fungsi bersangkutan yang
ditulis di dalam tanda kurung kurawal buka dan tutup. Bentuk umum dari suatu fungsi adalah sebagai berikut :
tipehasil namafungsi (daftarparameter)
{
tubuh_fungsi
}