Bahasa Pemrograman
Manusia dapat melakukan interaksi secara efektif dengan menggunakan media bahasa. Bahasa memungkinkan penyampaian gagasan dan pemikiran, tanpa itu komunikasi akan sulit terjadi. Dalam lingkungan pemrograman komputer, bahasa pemrograman bertindak sebagai sarana komunikasi antara manusia dan permasalahannya dengan komputer yang dipakai untuk membantu memperoleh pemecahan.
Bahasa pemrograman berdasarkan tingkat ketergantungannya dengan mesin bisa meliputi:
1. Bahasa Mesin
Merupakan bentuk terendah dari bahasa komputer. Setiap instruksi dalam program direpresentasikan dengan kode numerik, yang secara fisik berupa deretan angka 0 dan 1.
2. Bahasa Assembly
Merupakan bentuk simbolik dari bahasa mesin. Setiap kode operasi memiliki kode simbolik, misalnya ADD untuk penjumlahan (Addition) dan MUL untuk perkalian (Multiplication). Pada bahasa assembly tersedia alat bantu untuk diagnostik atau debug yang tidak terdapat pada bahasa mesin. Contoh produk yang ada untuk pengembangan dan debug bahasa assembly di pasaran saat ini, misalnya Turbo Assembler dari Borland, Macro Assembler dari Microsoft, Debug yang tersedia pada DOS, dan lain – lain.
3. Bahasa tingkat tinggi (User Oriented)
Disebut tingkat tinggi karena lebih dekat dengan manusia. Memberikan fasilitas yang lebih banyak, kontrol program yang terstruktur, kalang (nested), block, dan prosedur. Contohnya : Pascal, C, Basic, dan lain – lain.
4. Bahasa yang Problem Oriented
Memungkinkan penyelesaian untuk suatu masalah atau aplikasi yang spesifik. Contohnya : SQL (Structured Query Language) untuk aplikasi database, COGO untuk aplikasi teknik sipil. Bahasa yang problem oriented kadang dimasukkan pula sebagai bahasa tingkat tinggi.
Keuntungan bahasa tingkat tinggi dibandingkan bahasa tingkat rendah adalah sebagai berikut.
1. Kemudahan untuk dipelajari.
2. Lebih mendekati permasalahan yang akan diselesaikan.
3. Pemrogram tidak perlu mengetahui bagaimana representasi data ke dalam bentuk internal di memory.
4. Memberikan banyak pilihan struktur kontrol seperti :
Kondisional (IF – THEN – ELSE)
Looping
Struktur Blok (Begin ... End)
Nested Statement
5. kompabilitas dan dokumentasi yang lebih baik dalam pengembangan program.
Translator
Sebuah translator melakukan pengubahan source code / source program (program sumber) ke dalam target code / object code / object program (program objek). Source code ditulis dalam bahasa sumber, sedang object code bisa berupa suatu bahasa pemrograman lain atau bahasa mesin pada suatu komputer. Ada beberapa macam translator.
1. Assembler
Menerjemahkan langsung dari source code ke object code. Source Code adalah bahasa assembly sedangkan object code adalah bahasa mesin. Contohnya adalah TASM.
Contoh yang menghasil .Com adalah : Debug, TASM (bila linker dilakukan dengan perintah Tlink/x/t), emu8086,
Contoh yang menghasilkan .Exe adalah : TASM dengan perintah linker Tlink, HLA, MASM32, FASM
Khusus TASM terkadang file .Com yang dihasilkan akan lebih baik daripada file
2. Kompilator (Compiler)
Source Code adalah bahasa tingkat tinggi (misal bahasa Pascal), object code adalah bahasa mesin atau bahasa assembly. Source Code dan data diproses pada saat yang berbeda. Contohnya : Turbo Pascal, C++.
3. Interpreter
Interpreter tidak membangkitkan Object Code, hasil translasi hanya dalam bentuk
Run Time Code.
Contohnya : Bahasa Basica, Dbase/Foxbase
Perbedaan antara Interpreter dengan Compile
Interpreter
1. Menerjemahkan instruksi per instruksi
2. Tidak menghasilkan objek program
3. Tidak menghasilkan executable program
4. Source program terus dipergunakan karena tidak dihasilkan executable program.
Compiler
1. Menerjemahkan secara keseluruhan sekaligus
2. Dihasilkan objek program
3. Dihasilkan executable program
4. Source program tidak dipergunakan lagi untuk menjalankan program.
Model Kompilator
Pengembangan kompilator untuk sebuah bahasa merupakan pekerjaan yang kompleks. Kompleksitas kompilator bisa dikurangi bila perancang bahasa pemrograman mempertimbangkan bermacam – macam faktor perancangan. Karena kita berhubungan dengan bahasa tingkat tinggi, bagaimanapun suatu model dasar dari kompilator dapat diformulasikan.
Sebuah kompilator umumnya memiliki 2 tugas pokok :
1. Fungsi Analisis
Fungsi analisis biasa disebut sebagai Front End. Tugasnya melakukan dekomposisi program sumber menjadi bagian – bagian dasarnya.
2. Fungsi Sintesis
Fungsi sintesis biasa disebut sebagai Back End. Tugasnya melakukan pembangkitan dan optimasi program objek.
Analisis semantik : Melakukan analisa semantik, biasanya dalam realisasi akan digabungkan dengan intermediate code generator (bagian yang berfungsi membangkitkan kode antara.
Seperti :
- Triples Notation
- Quadruples Notation
Code Generator : Membangkitkan kode objek. Bagian ini merupakan bagian yang bersifat abstrak, artinya tidak dilaksanakan oleh programmer. Tetapi dilakukan oleh bahasa pemrograman yang dilakukan oleh programmer dalam perancangan compiler. Di sini kode antara dari program biasanya ditranslasi ke bahasa assembly atau bahasa mesin.
Code Optimizer : Upaya untuk memperkecil hasil dan mempercepat proses
Tabel Informasi : Menyimpan semua informasi yang berhubungan dengan proses kompilasi.
Pada beberapa kompilator, bagaimanapun, fase – fase kompilasi tersebut bisa dikombinasikan. Bisa kita lihat, misalnya interaksi antara scanner dan parser terdapat dua kemungkinan :
1. Scanner menghasilkan suatu token untuk diproses oleh parser. Parser akan memanggil scanner bila token berikutnya diperlukan.
2. Scanner menghasilkan semua token yang berhubungan dengan source program sebelum memneruskan ke parser. Pada kasus ini scanner telah memeriksa keseluruhan source program.
Mutu Kompilator
Misalkan saja kita pernah menggunakan kompilator untuk bahasa Basic seperti Turbo Basic dan Quick Basic. Kemudian kita bisa mengatakan bahwa salah satu lebih baik dari lainnya. Tentu ada beberapa hal yang menjadi pertimbangan kita, dalam hal ini bisa kita sebut sebagai mutu dari kompilator yang bersangkutan. Mutu sebuah kompilator bergantung dari beberapa faktor, yaitu :
1. Kecepatan dan waktu proses kompilasi.
Bisa Anda bayangkan misalkan saat Anda menekan F9 (Compile) dalam kompilator Turbo Pascal untuk melakukan kompilasi suatu program. Berapa lama
Anda harus menunggu untuk memperoleh hasil kompilasi itu merupakan waktu proses kompilasi.
Mutu ini tergantung dari :
Penulisan algoritma kompilator : yaitu algoritma yang digunakan untuk menuliskan program kompilator tersebut. Misalkan saja bisa dikatakan bahwa suatu kompilator lebih cepat melakukan kompilasi dibandingkan lainnya, karena para pemrogramnya menggunakan algoritma yang lebih baik saat membuat kompilator tersebut.
Kompilator pengkompilasi : sebuah program khusus yang menghasilkan kompilator tersebut. Bisa kita bayangkan kompilator Turbo Basic, misalnya, tentu saja tidak dibuat dengan bahasa Basic, tetapi menggunakan bahasa lain dan dikompilasi.dengan kompilator lain. Kalau sebuah kompilator dibuat dengan bahasa C, misalnya , kompilator C tersebut juga ikut menentukan mutu
kompilator yang dibuat.
2. Mutu Program Objek
Mutu suatu program objek (program hasil dari proses kompilasi) ditentukan oleh ukuran dan kecepatan eksekusi dari program objek. Misalkan saja kita bisa mengatakan bahwa Turbo Pascal 6 lebih baik dari Turbo Pascal 5, bila program Objek (EXE) yang dihasilkan berukuran lebih kecil dan lebih cepat dieksekusi. Hal ini tergantung dari fungsi translasi yang digunakan oleh kompilator tersebut (cara untuk melakukan perubahan dari source code ke object code). Misalkan saja kita akan membuat suatu kompilator yang memiliki instruksi untuk menuliskan suatu kalimat ke layar, kita sebut saja instruksi writekar. Kompilator ini kita buat dengan bahasa assembly. Sementara pada assembly untuk melakukan pencetakan kalimat bisa dengan Intterupt 10 atau Intterupt 21. Maka pilihan apakah instruksi
writekar tadi akan diubah ke intterupt 10 atau intterupt 21, akan ikut menentukan ukuran object code – nya
.
3. Integrated Environtment
Merupakan fasilitas – fasilitas terintegrasi yang dimiliki oleh kompilator tersebut. Misalnya untuk melakukan editing, debugging, testing. Biasa disebut juga dengan IDE (Integrated Development Environtment). Misalkan saja dengan Turbo Pascal (Turbo.Exe) Anda bisa melakukan penyuntingan sekaligus kompilasi dan debug dalam satu lingkungan pemrograman. Sementara kalau menggunakan Clipper (Clipper.Exe) Anda harus melakukan penyuntingan dengan menggunakan suatu program editor (PE.Exe) ataupun notepad yang terpisah dari kompilatornya.
Pembuatan Kompilator
Pembuatan suatu kompilator dapat dilakukan dengan :
1. Bahasa Mesin
Tingkat kesulitannya sangat tinggi, karena bahasa mesin ini sangat dekat dengan mesin sehingga sangat tidak manusiawi, dan tingkat ketergantungannya pada mesin yang tinggi. Pembuatan kompilator dengan bahasa mesin hampir mustahil dilakukan. Bahasa mesin mungkin digunakan saat membuat assembler.
2. Bahasa Assembly
Bahasa assembly bisa dan biasa digunakan sebagai tahap awal pada proses pembuatan sebuah kompilator. Keuntungan penggunaan bahasa assembly adalah program hasil (object code) yang memiliki ukuran kecil. Kerugiannya memerlukan usaha yang besar, karena instruksi assembly pendek – pendek (sulit dimengerti) dan memiliki fasilitas yang terbatas. Sehingga masih terdapat kesulitan untuk mengembangkan sebuah kompilator yang secara keseluruhan dibuat dengan bahasa assembly.
3. Bahasa tingkat tinggi
Keuntungannya adalah proses pembuatan kompilator akan lebih mudah, karena menggunakan bahasa tingkat tinggi yang lebih mudah dimengerti dan fasilitasnya lebih baik dibandingkan assembly. Kerugiannya kompilator yang dihasilkan akan memiliki ukuran yang besar. Bisa dibayangkan kalau kita akan mengembangkan suatu kompilator untuk suatu bahasa dengan menggunakan Turbo Pascal.
4. Bootstrap
Gagasan dari Bootstrap adalah kita bisa membangun sesuatu yang besar dengan lebih dulu membuat bagian intinya. Cara ini diperkenalkan oleh Niklaus Wirth saat membuat kompilator untuk bahasa Pascal.
Detail Rancangan
Microstructure
Microstructure pada dasarnya mencakup masalah – masalah dalam perancangan bahasa yang mempengaruhi penampilan bahasa sehingga lebih mudah dimengerti. Prinsip mendasar dari suatu microstructure adalah arti dari suatu konstruksi, seperti keyword, harus jelas dari wujudnya. Dengan kata lain, token suatu bahasa harus mudah dikenali apakah itu dan apa yang dilakukan.
Keyword harus bisa diucapkan, karena akan lebih mudah diingat. Keyword harus dipilih sedemikian sehingga tidak akan sama dengan identifier yang dibuat user. Misalkan saja gunakan operator ”SIZE” ketimbang ”SIZ”. Jika mungkin jangan gunakan dua keyword yang memiliki ejaan yang mirip (misal ”PROGEND” dengan
”PROCEND”). Terdapat tiga pendekatan bagaimana memisahkan keyword dengan identifier yang didefinisikan user :
1. Keyword adalah ”reserved” dan tidak boleh digunakan sebagai identifier
Merupakan alternatif terbaik karena sederhana dan jarang menimbulkan masalah.
2. Keyword dibedakan dari identifier berdasarkan konteksnya
Menyulitkan pada tahap parser, karena jumlah keyword pada beberapa implementasi begitu besar sehingga user tidak dapat menghindarinya.
3. Keyword diawali dengan karakter khusus untuk menandainya
Memerlukan tambahan pengetikan dan membuat program lebih susah dibaca.
Aspek lain dari Microstructure adalah pengaturan komentar. Salah satu pendekatan dalam yang digunakan adalah dengan menggunakan suatu simbol untuk menandai awal komentar dan kemudian apapun sampai akhir baris dianggap sebagai komentar. Pemilihan simbol yang mendahului komentar idealnya :
1. Simbol terdiri dari dua karakter, lebih baik karakter yang sama
2. Simbol yang jarang dipergunakan
3. Terdiri dari karakter berlokasi sama pada keyboard
Contohnya simbol ’// adalah pilihan yang baik untuk menandai komentar.
Struktur Ekspresi
Salah satu topik yang berhubungan dengan ekspresi adalah urutan dari evaluasinya. Seperti dalam operasi aritmatika memiliki urutan evaluasi :
1. Operator ’(’ dan operator ’)’
2. Operator ’*’ dan ’/’
3. Operator ’+’ dan ’-’
Struktur Data
Empat aspek dari struktur data adalah :
1. Deklarasi Data
Biasanya kebutuhan bahasa pemrograman berkaitan dengan deklarasi untuk :
a. Konstanta b. Tipe
c. Variabel
2. Tipe Data
Terdapat tiga pendekatan untuk tipe data dalam bahasa pemrograman :
a. Tidak ada sama sekali. Merupakan karakteristik yang ada pada bahasa assembly
b. Soft Typing. Ditentukan suatu jenis tipe, di mana setiap variabel boleh memuat nilai apapun.
c. Hard typing. Ditentukan suatu jenis tipe, di mana setiap variabel hanya boleh memuat nilai yang menjadi domain dari tipe tersebut. Dari sudut pandang pemeriksaan kesalahan saat kompilasi hard typing lebih unggul.
Struktur Kontrol
Sering dipakai dengan menggunakan If then else dan juga perintah Case.
Struktur Kompilasi
Struktur kompilasi mencakup aspek dari bahasa yang berkaitan dengan proses kompilasi, berhubungan dengan operasi pada bahasa yang dikerjakan saat kompilasi dan bagaimana kompilasi modul yang berbeda dan terpisah dari program. Salah satu fasilitas adalah untuk menyisipkan suatu file lain (seperti include pada bahasa C ataupun uses pada bahasa Pascal).
Mengenali Huruf pada Suatu Input
Pengenalan huruf ini penting untuk mengetahui apakah suatu besaran leksik itu berupa identifier, variabel ataupun konstanta.
1) Identifier atau Keyword
Terdiri dari deretan kata kunci pada suatu bahasa pemrograman seperti : if, else, end if, then, for, while, dll
2) Konstanta
Berupa angka tetap
3) Delimiter dan Operator
Terdiri dari rangkaian operator, dalam hal ini adalah operator aritmatika dan operator pembanding seperti : +, -, <, >, dll.
Berikut ini adalah program pada Bahasa Pemrograman Visual Basic untuk mengenali apakah suatu input itu huruf atau tidak.
Private Sub Form_Load()
a = InputBox("Masukkan Input:") For i = 1 To Len(a)
d = Mid(a, i, 1)
If (d >= "A" And d <= "Z") Or (d >= "a" And d <= "z") Then
Debug.Print "Huruf"
Else
Debug.Print "Bukan Huruf"
End If
Next i
End Sub
Atau, cara lain :
Private Sub Form_Load()
a = InputBox("Masukkan Input:") For i = 1 To Len(a)
d = Mid(a, i, 1)
If (Asc(d) >= Asc("A") And Asc(d) <= Asc("Z")) Or (Asc(d) >= Asc("a") And Asc(d) <= Asc("z")) Then
Debug.Print "Huruf"
Else
Debug.Print "Bukan Huruf"
End If
Next i
End Sub
Dengan menggunakan Bahasa Pascal :
uses crt;
var
ekspresi : String; tampung:char; i:integer;
begin
clrscr;
write('Masukkan ekspresi:');
readln(ekspresi);
for i:=1 to length(ekspresi) do begin
if ((ekspresi[i]>=#65) and (ekspresi[i]<=#97)) or
((ekspresi[i]>=#97) and (ekspresi[i]<=#122)) then writeln('Huruf')
else
end.
end;
readln;
writeln('Bukan Huruf');
Dengan menggunakan bahasa C :
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
void main()
{
clrscr();
char ekspresi[100];
int i;
printf("Masukkan Ekspresi:"); scanf("%s",&ekspresi); for(i=0;i<strlen(ekspresi);i++)
{
if (isalpha(ekspresi[i]))
printf("Adalah huruf\n");
else
printf("Bukan Huruf\n");
}
getch();
}
Versi II :
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
char ekspresi[100];
int kar;
int i;
printf("Masukkan Ekspresi:"); scanf("%s",&ekspresi); for(i=0;i<strlen(ekspresi);i++)
{
kar=ekspresi[i];
if (((kar>=65) && (kar<=90)) || ((kar>=97) && (kar<=122)))
printf("Adalah huruf\n");
else
printf("Bukan Huruf\n");
}
getch();
}
Mengenali Angka pada Suatu Input
Private Sub Form_Load() Debug.Print "--------------"
a = InputBox("Masukkan Input:")
For i = 1 To Len(a)
d = Mid(a, i, 1)
If (Asc(d) >= Asc("0") And Asc(d) <= Asc("9")) Then
Debug.Print "Angka"
Else
Debug.Print "Bukan Angka" End If
Next i
End Sub
Cara lain :
Private Sub Form_Load()
a = InputBox("Masukkan Input:") For i = 1 To Len(a)
d = Mid(a, i, 1)
If (d >= "0" And d <= "9") Then
Debug.Print "Angka"
Else
Debug.Print "Bukan Angka"
End If
Next i
End Sub
Dengan menggunakan bahasa Pascal :
uses crt;
var
ekspresi : String; tampung:char; i:integer;
begin
clrscr;
write('Masukkan ekspresi:');
readln(ekspresi);
for i:=1 to length(ekspresi) do begin
if ((ekspresi[i]>=#48) and (ekspresi[i]<=#57))then writeln('Angka')
else
end.
end;
readln;
writeln('Bukan Angka');
Dengan menggunakan Bahasa C :
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
void main()
{
clrscr();
char ekspresi[100];
int i;
printf("Masukkan Ekspresi:"); scanf("%s",&ekspresi); for(i=0;i<strlen(ekspresi);i++)
{
if (isdigit(ekspresi[i]))
printf("Angka\n");
else
printf("Bukan Angka\n");
}
getch();
}
Versi :
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
char ekspresi[100];
int kar;
int i;
printf("Masukkan Ekspresi:"); scanf("%s",&ekspresi); for(i=0;i<strlen(ekspresi);i++)
{
kar=ekspresi[i];
if ((kar>=48) && (kar<=57))
printf("Angka\n");
else
printf("Bukan Angka\n");
}
getch();
}
Analisis Leksikal
Tugas utama penganalisis leksikal / Scanner adalah mengidentifikasi semua besaran yang membangun suatu bahasa pada program sumber. Scanner adalah bagian dari kompilator yang menerima input berupa stream karakter kemudian memilah program sumber menjadi satuan leksik yang disebut dengan token. Token ini akan menjadi input bagi parser.
Pekerjaan yang dikerjakannya antara lain :
1. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter.
2. Mengenali besaran leksik.
3. Membuang komentar : Komentar biasanya ditulis oleh programmer untuk mempermudah dalam mempelajari program yang dibuat. Dalam setiap bahasa pemrograman selalu disediakan simbol untuk mengawali / mengakhiri komentar. Oleh karena itu scanner pada analisis leksikal ini harus dapat mengenali bagian awal dan akhir setiap komentar supaya dapat dibuang atau tidak ikut dalam proses kompilasi.
4. Menyeragamkan huruf kapital menjadi huruf kecil atau sebaliknya : Untuk bahasa bahasa – bahasa pemrograman yang bersifat non – case sensitive, identifier arraySize dan arraysize dianggap sama. Oleh karena itu, bagian penganalisis leksikal bertugas menyeragamkan jenis huruf agar identifier semacam itu tidak dianggap berbeda.
5. Membuang spasi
6. Menangani kesalahan
Besaran Leksik
Besaran pembangun bahasa / leksik meliputi :
1. Identifier
Bisa berupa keywords atau nama. Keywords adalah kata kunci yang sudah didefinisikan oleh suatu bahasa seperti Begin, End, If, dan Else di dalam Pascal. Nama dideklarasikan sendiri oleh pemakai seperti nama pada sebuah variabel. Misal :
Var
Nama : Integer; Suhu : Real;
2. Nilai Konstanta
Adalah suatu konstanta yang terdapat pada program. Bisa berupa konstanta integer, real, boolean, character, string, dan sebagainya.
Misal : Const
N := 10;
Kata := ’Saya’
3. Operator dan Delimiter
Operator misalnya +, -, *, dan /.
Menghilangkan Blank
Dalam pengetikan suatu program, terkadang sering terjadi adanya banyak blank yang tidak diperlukan. Salah satu dari tugas scanner atau lexical analyzer ini adalah untuk mengabaikan blank yang dimaksud. Sebagai contoh adalah :
C = A + B Maksud dari pernyataan di atas, adalah C = A + B.
Jika pernyataan semacam itu tidak diantisipasi oleh compiler maka pernyataan ini tidak akan dapat dieksekusi, karena tidak dimengerti oleh compiler.
Berikut ini adalah program untuk menghilangkan blank.
Private Sub Form_Load()
c = InputBox("Masukkan Ekspresi:")
d = ""
flag = False
For i = 1 To Len(c)
If Mid(c, i, 1) = " " Then
If flag = False Then
d = d + Mid(c, i, 1) End If
flag = True
Else
d = d + Mid(c, i, 1)
flag = False
End If
Next i
Debug.Print d
End Sub
Dengan menggunakan Bahasa Pascal :
uses crt;
var
ekspresi : String; tampung:string; i:integer; flag:boolean;
begin
clrscr;
flag:=false;
write('Masukkan ekspresi:');
readln(ekspresi);
for i:=1 to length(ekspresi) do begin
if ekspresi[i]=' 'then begin
if flag=false then tampung:=tampung+ekspresi[i];
flag:=true;
end;
end else begin
end;
tampung:=tampung+ekspresi[i];
flag:=false
end.
writeln(tampung);
readln;
Dengan menggunakan Bahasa C :
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
char ekspresi[100]; char kalimat[100]; int kar;
int i;
int hitung; int flag; hitung=0; flag=0;
printf("Masukkan Ekspresi:");
gets(ekspresi);
for(i=0;i<strlen(ekspresi);i++)
{
if (ekspresi[i]==' ')
{
if (flag==0)
{
kalimat[hitung]=ekspresi[i];
hitung=hitung+1;
}
flag=1;
}
else
{
kalimat[hitung]=ekspresi[i];
hitung=hitung+1;
flag=0;
}
}
for(i=0;i<hitung;i++)
printf("%c",kalimat[i]);
getch();
}
Pemakaian Procedure
1. Pada Pascal
Pada Pascal pengiriman parameter dapat dilakukan dengan dua cara yaitu :
a. Pengiriman parameter secara nilai
Jika nilai parameter pada prosedur diubah tidak akan mempengaruhi nilai parameter nyata.
b. Pengiriman parameter secara acuan.
Jika nilai parameter pada prosedur diubah akan mempengaruhi nilai parameter nyata.
Contoh pengiriman parameter secara nilai :
uses crt;
procedure hitung(a,b:integer);
var
c:integer;
begin
end;
var
c:=a+b;
writeln('Nilai c = ',c);
x,y:integer;
begin
end.
write('Masukkan Nilai X :');
readln(x);
write('Masukkan Nilai Y :');
readln(y); hitung(x,y); readln;
Contoh pengiriman parameter secara acuan :
uses crt;
procedure hitung(var a,b:integer);
var
c:integer;
begin
end;
var
a:=10;
c:=a+b;
writeln('Nilai c = ',c);
x,y:integer;
begin
write('Masukkan Nilai X :');
readln(x);
write('Masukkan Nilai Y :');
readln(y);
end.
hitung(x,y);
writeln('Nilai variabel x=',x);
readln;
2. Pada Visual Basic
Pada VB 6, ada 4 jenis procedure yaitu :
a. Procedure Sub – procedure yang tidak mengembalikan nilai setelah tugasnya selesai. Sering disebut juga Procedure.
b. Procedure Function – Procedure yang mengembalikan nilai setelah tugasnya selesai. Sering disebut juga Fungsi
c. Procedure Event – Procedure untuk sebuah event pada suatu object. Digunakan di dalam Class Module.
d. Procedur Property – Procedure untuk mengubah (Let) dan mengambil (Get) nilai property pada sebuah object. Digunakan di dalam Class Module.
Contoh pemakaian Procedure Sub :
Private Sub Form_Load()
a = InputBox("Masukkan Panjang:") b = InputBox("Masukkan Lebar:") Call hitung(Val(a), Val(b))
End Sub
Private Sub hitung(panjang As Integer, lebar As Integer)
luas = panjang * lebar
Debug.Print luas
End Sub
3. Pada Bahasa C
# include <stdio.h>
# include <conio.h>
void hitung(int panjang,int lebar);
void main()
{
int a,b;
clrscr();
printf("Masukkan Panjang :");
scanf("%i",&a); printf("Masukkan Lebar:"); scanf("%i",&b); hitung(a,b);
getch();
}
void hitung(int panjang,int lebar)
{
int luas; luas=panjang*lebar; printf("Luas = %i",luas);
}
Pemakaian Fungsi
Berikut ini adalah contoh pemakaian fungsi pada Turbo Pascal
1. Fungsi Tanpa parameter
uses crt;
Function garis:string;
begin
garis:='----------------';
end;
begin
end.
writeln(garis); writeln('Pascal'); writeln(garis); readln;
2. Fungsi dengan Parameter
uses crt;
function luas(panjang,lebar:integer):integer;
begin
end;
luas:=panjang*lebar;
var
p,l:integer;
begin
clrscr;
end.
write('Masukkan Panjang :');
readln(p);
write('Masukkan Lebar :'); readln(l); writeln('Luas=',luas(p,l)); readln;
Pemakaian Fungsi pada Bahasa pemrograman Visual Basic
Private Sub Form_Load()
a = InputBox("Masukkan panjang :") b = InputBox("Masukkan lebar:") luas = luaspersegi(a, b) Debug.Print luas
End Sub
Private Function luaspersegi(panjang, lebar)
luaspersegi = Val(panjang) * Val(lebar) End Function
Pemakaian fungsi pada Bahasa C
# include <stdio.h>
# include <conio.h>
int hitung(int panjang,int lebar);
void main()
{
int a,b;
clrscr();
printf("Masukkan Panjang :"); scanf("%i",&a); printf("Masukkan Lebar:"); scanf("%i",&b); printf("Luas=%i",hitung(a,b)); getch();
}
int hitung(int panjang,int lebar)
{
int luas;
luas=panjang*lebar;
}
Tidak ada komentar:
Posting Komentar