Bahasa Pemr0graman

11

Click here to load reader

Transcript of Bahasa Pemr0graman

Page 1: Bahasa Pemr0graman

Paradigma dapat diartikan sudut pandang atau sudut serang dalam suatu persoalan, realitas dsb. Begitu pula dalam pemrograman, ada pendekatan-pendekatan untuk menyelesaikan suatu persoalan yang disebut dengan paradigma pemrograman.

Paradigma Pemrograman

Paradigma pemrograman adalah bentuk pemecahan masalah mengikuti aliran

atau “genre” tertentu dari program dan bahasa. Empat paradigma

pemrograman yang sangat mendasar dan berbeda pada tiga dekade

terakhir adalah:

• Imperative programming

• Object-oriented programming

• Functional programming

• Logic programming

Beberapa bahasa dirancang mendukung lebih dari satu paradigma. Sebagai

contoh, C++ merupakan campuran antara bahasa imperative dan object-

oriented, sedangkan Leda dirancang untuk mendukung paradigma

pemrograman imperative, object-oriented, functional, dan logic.

Imperative Programming merupakan paradigma pemrograman paling tua,

yang dirancang berdasarkan model komputasi klasik “von Neumann-Eckert”.

Pada model ini, program dan variabelnya disimpan

bersama, dan program terdiri atas perintah-perintah yang membentuk

perhitungan, penyimpanan nilai ke variabel, membaca input, menghasilkan

output, atau mengarahkan kontrol dari deret instruksi dalam program.

Abstraksi prosedural membentuk blok untuk imperative programming,

misalnya penugasan (assignment), pengulangan (loop), sekuensial,

pernyataan kondisi, dan penanganan pengecualian (exception handling).

Bahasa Pemrograman yang masuk ke dalam paradigma ini antara lain Cobol,

Fortran, C, Ada, dan Perl.

Object-Oriented Programming (OOP) menyediakan model dimana

program merupakan kumpulan obyek

yang berinteraksi satu sama lain. Program dalam OOP membungkus

(encapsulate) data dan fungsi (atau prosedur) dalam suatu obyek yang

umumnya diimplementasikan sebagai suatu kelas (class). Klasifikasi obyek,

pewarisan, dan message passing merupakan prinsip-prinsip dasar dalam OOP.

Bahasa yang mendukung OOP antara lain Smalltalk, C++, Java, dan C#.

Functional Programming memodelkan suatu masalah komputasi sebagai

kumpulan fungsi matematiks, dimana setiap input merupakan domain atau

daerah fungsi, dan output berupa range atau wilayah fungsi. Hal ini

menjadikan functional programming sebagai bagian dari bahasa yang tidak

membenarkan pernyataan penugasan, seperti x = x + 1, yang tidak berlaku

baik pada functional programming maupun dalam matematika.

Fungsi berinteraksi dengan yang lain menggunakan komposisi fungsi,

Page 2: Bahasa Pemr0graman

kondisional, dan rekursif. Bahasa pemrograman yang masuk dalam kelompok

ini adalah Lisp (List Programming), Scheme, Haskell, dan ML.

Logic Programming atau juga disebut sebagai declarative programming

memodelkan masalah dengan menggunakan bahasa deklaratif, yang

diimplementasikan dalam bentuk fakta dan aturan. Maka dari itu, bahasa ini

juga disebut sebagai rule-based languages. Contoh bahasa pemrograman

kelompok ini adalah Prolog (Programming in Logic).

Generasi Bahasa Pemrograman

Bahasa pemrograman adalah software bahasa komputer yang digunakan dengan cara merancang atau membuat program sesuai dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri. Komputer mengerjakan transformasi data berdasarkan kumpulan printah program yang telah dibuat oleh program. Kumpulan perintah ini harus dimengerti oleh komputer, berstruktur terntentu (syntax), dan bermakna. Bahasa pemrograman merupakan notasi untuk memberikan secara tepat program komputer. Berbeda dengan bahasa, misalkan Bahasa Indonesia dan Inggris yang merupakan bahasa alamiah (natural language), sintaksis dan semantik bahasa pemrograman komputer ditentukan secara jelas dan terstruktur, sehingg bahasa pemrograman juga disebut sebagai bahasa formal (formal language).Menurut tingkatannya, bahasa pemrograman dibagi menjadi 3 tingkatan, yaitu:

1. Bahasa pemrograman tingkat rendah (low level language), merupakan bahasa pemrograman

generasi pertama, bahasa pemrograman jenis ini sangat sulit dimengerti karena instruksinya

menggunakan bahasa mesin. Biasanya yang mengerti hanyalah pembuatnya saja karena isinya

programnya berupa kode-kode mesin.

2. Bahasa pemrograman tingkat menengah (middle level language), merupakan bahasa pemrograman

dimana pengguna instruksi sudah mendekati bahasa sehari-hari, walaupun begitu masih sulit untuk

dimengerti karena banyak menggunakan singkatan-singkatan seperti “STO” artinya simpan (STORE)

dan “MOV” artinya pindahkan (MOVE). Yang tergolong dalam bahasa ini adalah assembler.

3. Bahasa pemrograman tingkat tinggi (high level language) merupakan bahasa yang mempunyai ciri

lebih terstruktur, mudah dimengerti karena menggunakan bahasa sehari-hari, contoh bahasa level ini

adalah: Delphi, Pascal, ORACLE, MS-SQL, Perl, Phyton, Basic, Visual Studio (Visual Basic, Visual

FoxPro), Informix, C, C++, ADA, Java, PHP, ASP, XML, dan lain-lain. Bahasa seperti Java, PHP, ASP,

XML biasanya digunakan untuk pemrograman pada internet, dan masih banyak lagi yang terus

berkembang yang saat ini biasanya dengan ekstensi .net (baca: dot net) seperti Visual Basic.NET dan

Delphi.Net yang merupakan bahasa pemrograman yang dikembangkan pada aran berbasis internet

Sejauh ini bahasa pemrograman dikelompokkan menjadi lima generasi. Setiap generasi bahasa

pemrograman memiliki karakteristik tersendiri. Semakin maju generasinya maka orientasi bahasa

pemrograman ini akan semakin dekat ke manusia.

Gambar di atas menunjukkan terjadinya kecenderungan pergeseran orientasi dalam bahasa-bahasa

pemrograman, dari pendekatan yang berorientasi kepada mesin menuju ke pendekatan yang

berorientasi pada manusia.

Bahasa Pemrograman Generasi I

Page 3: Bahasa Pemr0graman

Bahasa pemrograman generasi pertama berorientasi pada mesin. Program disusun dengan

menggunakan bahasa mesin. Tentu saja program generasi ini sangat sulit untuk dipahami oleh orang

awam dan sangat membosankan bagi pemrogram. Pemrogram harus benar-benar menguasai operasi

komputer secara teknis. Namun bahasa generasi ini memberikan eksekusi program yang sangat cepat.

Selain itu, bahasa mesin sangat bergantung pada mesin (machine dependent), artinya, bahasa mesin

antara satu mesin dengan mesin lainnya akan berbeda.

Bahasa Pemrograman Generasi II

Bahasa pemrograman generasi kedua menggunakan bahasa rakitan (assembly). Sebagai pengganti

kode-kode biner, digunakanlah kependekan dari kata-kata. Misalkan “MOV” untuk menyatakan “MOVE”

dan JNZ yang berarti “jump non-zero”. Setiap instruksi dalam bahasa rakitan sebenarnya identik dengan

satu instruksi dalam bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin.

Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin mengingat perintah dalam bentuk kata-

kata yang dipendekkan lebih mudah daripada mengingat deretan angka biner.

Berikut adalah contoh instruksi yang ditulis dalam bahasa rakitan akan menjadi seperti berikut:

Tampak bahwa penggunaan notasi seperti MOV AH, 02 jauh lebih mudah diingat atau dipahami

daripada penulisan instruksi dalam bahasa mesin: B402 atau 1011 0100 0000 0010.

Bahasa Pemrograman Generasi III

Bahasa pemrograman generasi ketiga menggunakan pendekatan prosedural. Sebagai bahasa

prosedural, pemrogram perlu menuliskan instruksi-instruksi yang rinci agar komputer melaksanakan

tugasnya. Program ditulis dengan menggunakan kata-kata yang biasa dipakai manusia, seperti WRITE

untuk menampilkan sesuatu di layar dan READ untuk membaca data dari keyboard.

Bahasa generasi ketiga seringkali disebut sebagai high level language disebabkan bahasa ini

menggunakan kata-kata yang biasa digunakan manusia. Beberapa contoh bahasa pemrograman yang

masuk dalam kategori generasi ketiga yaitu ADA, ALGOL, C, BASIC, COBOL, FORTRAN, dan

PASCAL.

Bahasa Pemrograman Generasi IV

Bahasa pemrograman generasi keempat dirancang untuk mengurangi waktu pemrograman dalam

membuat program sehingga diharapkan produktifitas pemrogram jadi meningkat dan program dapat

dibuat dalam waktu yang lebih singkat. Alhasil, bahasa pemrograman generasi keempat yang dikenal

dengan sebutan 4GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang

pemrograman tanpa bantuan pemrogram profesional. Sebagai contoh pemrogram dapat membuat

program dengan Microsoft Access di lingkungan PC dengan mudah.

Bahasa pemrograman generasi keempat biasa disebut sebagai high level language atau bahasa

berorientasi pada masalah (problem oriented language) karena memungkinkan pemakai menyelesaikan

masalah dengan sedikit penulisan kode dibandingkan pada bahasa prosedural. Bahasa pemrograman

generasi keempat menggunakan pendekatan non-prosedural. Untuk mendapatkan suatu hasil, seorang

pemakai tidak perlu memberitahukan secara detail tentang bagaimana mendapatkannya. Gambar di

bawah ini memberikan contoh yang menunjukkan perbedaan bahasa prosedural dan non-prosedural

dalam memperoleh data tentang seorang mahasiswa.

Bahasa Prosedural dan Non Prosedural

Bahasa Pemrograman Generasi V

Bahasa pemrograman generasi kelima merupakan kelompok bahasa-bahasa pemrograman yang

ditujukan untuk menangani kecerdasan buatan (artificial intelligence). Kecerdasan buatan adalah

disiplin dalam ilmu komputer yang mempelajari cara komputer meniru kecerdasan manusia. Berbagai

aplikasi kecerdasan manusia adalah sebagai berikut:

* Pemrosesan bahasa alami (natural language processing), yakni mengatur komputer agar bisa

berkomunikasi dengan manusia melalui bahasa manusia (Indonesia, Inggris, Spanyol, Prancis, dan

sebagainya).

Page 4: Bahasa Pemr0graman

* Pengedalian robotika dan sensor mata.

* Aplikasi sistem pakar (expert system) yang meniru seorang pakar di bidang tertentu sehingga bisa

menghasilkan nasehat atau pemikiran yang setara dengan seorang pakar.

Dengan menggunakan bahasa generasi kelima dimungkinkan untuk melakukan perintah dengan cara

percakapan seperti berikut:

“Tampilkan semua nama mahasiswa yang IPK-nya di atas 3,0 dan urutkan berdasarkan IP secara

descending”

PROLOG dan LISP merupakan dua contoh bahasa pemrograman yang ditujukan untuk menangani

kecerdasan buatan

level bahasa pemrogramanLevel rendah : Level bahasa yang mendekati level bahasa mesin, instruksi yang diberikan akan langsung dipahami oleh komputer. di level ini program yang diintruksikan berupa data angka angka kode heksa atau biner. contoh bahasa mesinLevel menengah : level bahasa yang merupakan gabungan intruksi mesin dan instruksi yang mulai mendekati bahasa manusia berkomunikasi. contoh bahasa assembler dan bahasa cLevel tinggi : bahasa pemrograman yang diberikan mendekati instruksi manusia berkomunikasi. contoh bahasa pascal, delphi, visual basic, oracle.

Aturan Lexical atau Lexical Analysis (Scanner)Berhubungan dengan bahasa, sering disebut dengan scanner, bertugas sebelum proses syntax Analyzer dan Intermediate Code dilakukan dimana tugas Lexical Analysis ini mendekomposisi program sumber menjadi bagian-bagian kecil.

Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah :

a. mengidentifikasi semua besaran yang membangun suatu bahasab. mentransformasikan ke token-token (symbol terminal dari teori

bahasa automata)c. menentukan jenis dari token-tokend. menangani kesalahane. menangani tabel symbolf. scanner di desain untuk mengenali keyword, operator, identifiercontoh :

Besaran Lexical : (tergantung program)

Identifier dapat berupa keyword seperti if, else, begin .. end (pada Pascal) , integer (Pascal), int float (pada C)

Konstanta : besaran yang berupa bilangan bulat (integer), bilangan pecahan(float / real), Boolean (true/false), string, dll

Operator : operator aritmatika (+, -, *, /), operator logika(< = >)

Delimiter : berguna bagi pemisah atau pembatas, seperti kurung buka, kurung tutup, titik, koma, titik dua, titik koma, white_space

White_space : pemisah yang diabaikan oleh program, seperti : enter, spasi, ganti baris dan akhir file

Page 5: Bahasa Pemr0graman

Program sumber merupakan input dari penganalis leksikal ala scanner. Analisis leksikal mempunyai tujuan untuk memisahkan naskah program sumber yang masuk menjadi bagian leksikografis terkecil atau Token seperti konstanta, nama varibel, reserved word dan operator.

Scanner biasanya berinteraksi dengan parser melalui salah satu dari 2 cara berikut. Yang pertama, scanner dapat mengolah program sumber secara terpisah, sebagai satu fasa sebelum Parser mulai bekerja. Kemudian token disimpan dalam sebuah file atau dalam sebuah file besar. Cara kedua melibatkan antara Parser dan Scanner yang saling berinteraksi, scanner dipanggil oleh parser bila token berikut dalam program sumber diperlukan.

Token hasil pekerjaan scanner biasanya disajikan dalam bentuk Bilangan Penyajian internal berupa bilangan bulat (integer) yang unik.

Contoh :

Nama variabel           1     operator perkalian      8Konstanta               2     operator pembagian      9Label                   3     tanda baca koma         10Keyword                 4     tanda baca titik dua    11Operator penambahan     5     tanda baca titik koma   12Operator penugasan      6     dan lain-lainOperator pengurangan    7

Token tersebut disimpan dalam suatu tabel label serta nama variabel akan dimasukkan kedalam tabel identifier, sedangkan konstanta dimasukkan ke tabel konstanta dan suatu token yang tidak berkaitan dengan label (seperti operator) maka lokasinya adalah 0 (nol).

Lexical Analysis, contoh :

Statement : Fahrenheit := 32 + celcius * 1.8Maka akan diterjemahkan ke dalam token-token sebagai berikut :

Identifier              → FahrenheitOperator                → :=Integer                 → 32Operator penjumlahan    → +Identifier              → celciusOperator perkalian      → *Real / float            → 1.8

Statement : Jumlah A = A + B                   GOTO KERJA

Buatlah tabel untuk penyajian Token :

Token       Bilangan Penyajian Internal   Lokasi      KeteranganJumlah                  3                   1            Label  :                     11                  0         Delimiter  A                     1                   2         Identifier  =                     6                   0         Assignment  A                     1                   2         Identifier  +                     5                   0   Operator Penjumlahan  B                     1                   3         Identifier GOTO                   4                   0        Reserved word KERJA                  1                   4         Identifier

Page 6: Bahasa Pemr0graman

2. Pembahasan Semantics & Syntax Variabel &

Konstanta Tipe Data Data Terstruktur Ekspresi &

Pernyataan Bahasa Pemrograman – STMIK

SATYAGAMA - Ari Wibowo, S.Kom

3. Semantics & Syntax Semantics dari bahasa

pemrograman menspesifikasikan arti dari program Syntax

dari bahasa pemrograman menspesifikasikan struktur dari

program

4. Semantics If x > 2 Then z := x * 5 Else z := x; If x > 2

Then z := x * 5 Else z := x; Expression Evaluating If x > 2

Then z := x * 5 Else z := x; If x > 2 Then z := x * 5 Else z :=

x; Executing statements in TRUE condition block

Optionaly, execute statements in FALSE condition block

Mendeskripsikan bagaimana program berjalan

5. Syntax If x > 2 Then z := x * 5 Else z := x; If x > 2

Then z := x * 5 Else z := x; If x > 2 Then z := x * 5 Else z :=

x; KEYWORD EXPRESSION If x > 2 Then z := x * 5 Else

z := x; STATEMENTS Mendeskripsikan bagaimana

program ditulis

6. Semantics Dasar mekanisme abstraksi pada bahasa

pemrograman adalah penggunaan nama atau identifiers

Pada kebanyakan bahasa pemrograman, variabel,

konstanta dan prosedur dapat diberikan nama yang

didefinisikan oleh programmer

7. Atribut Arti dari nama ditegaskan oleh atribut yang

diasosiasikan oleh nama tersebut const phi = 3.14; { phi

merupakan sebuah konstanta} var x : integer; { x

merupakan sebuah variabel} procedure Cetak ; { Cetak

merupakan sebuah prosedur}

Page 7: Bahasa Pemr0graman

8. Binding Proses mengasosiasikan atribut ke nama

disebut dengan Binding const phi = 3.14; { static binding }

var x : integer; { static binding } x :=2; { dynamic binding }

9. Binding Time Language definition time : pada saat

pendeklarasian Language implementation time : pada

saat penggunaan Translation time : tipe-tipe dari variabel

Link time : pada saat pemanggilan fungsi external Load

time : lokasi global variabel Execution time : nilai dari

variabel, lokasi local variabel

10. Deklarasi Deklarasi merupakan prinsip dalam

menyediakan binding Umumnya diasosiasikan dengan

sebuah block Lokal , deklarasi yang ditempatkan didalam

block Global , deklarasi yang ditempatkan diluar block

11. Deklarasi program Test; Uses crt; var x: integer;

procedure Cetak(y: integer); var z: integer; begin z := 2 *

x; writeln (z + y); end ; begin x := 5; Cetak(x); Readln;

end . LOCAL GLOBAL

12. Ruang Lingkup ( Scope ) program Test; Uses crt;

var x: integer; procedure Cetak(y: integer); var z: integer;

begin z := 2 * x; writeln (z + y); end ; begin x := 5;

Cetak(x); Readln; end .

13. Ruang Lingkup ( Scope ) program Test; Uses crt;

var x: integer; procedure Cetak(y: integer); var z: integer;

begin z := 2 * x; writeln (z + y); end ; begin x := 5; z := 3;

Cetak(x); Readln; end . ERROR !!!

14. Syntax Lexical Structure menspesifikasikan

bagaimana kata dibentuk dari karakter Syntactic Structure

menspesifikasikan bagaimana kalimat dibentuk dari kata

characters words sentences Lexical Structure Syntactic

Structure

Page 8: Bahasa Pemr0graman

15. Lexical Structure Pada lexical structure, bahasa

pemrograman menggunakan tokens untuk membentuk

grammatical categories yang akan membentuk blok-blok

syntax Standar tokens: Keywords , seperti IF, WHILE,

REPEAT, dll Literals , seperti 10 (numeric literal) atau ‘A’

(string literal) Special Symbols , umumnya dipergunakan

untuk membentuk operator Identifiers , umumnya

dipergunakan untuk menamai routine (prosedur & fungsi)

Comments , baris program yang tidak akan dieksekusi

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 digit | integer digit digit

0 | 1 Integer : integer 1 binaryDigits 0 binaryDigits

16. Syntactic Structure Menggunakan notasi Backus-

Naur Form (BNF) untuk definisi formal Contoh : Binary :

binaryDigits

17. Parse Tree integer integer digit integer digit digit

digit digit digit 1 digit digit 1 2 digit 1 2 3 Sentential Form

Sentence 1 2 3 digit digit digit integer integer integer

Syntax adalah aturan menulis ‘kalimat’ agar mampu dimengerti dengan benar oleh bahasa

pemrograman.

Aturan syntax ini secara baku harus dipenuhi, karena saat proses compilasi setiap baris script

akan di-check dan dipastikan apakah Compiler benar2 mengerti maksud kalimat atau tidak. Jika

terdapat syntax yang salah maka compiler akan melaporkan kalo ada bagian kalimat yang dia

nggak faham atau istilahnya “error message” dan nggak bakalan meneruskan membikin

bytecode-nya.

Java memiliki syntax mirip syntax bahasa pemrograman C dan C++, itulah kenapa kalo kita

udah bisa C atau C++ maka Java akan terasa mudah sebagai contoh syntax adalah:

- Untuk menulis isi (body) suatu kelas harus di awali dengan { dan diakhir dengan }

——–

Semantics

adalah arti sebuah kalimat

Berbeda dengan bahasa sehari-hari yang sering memiliki lebih dari satu arti (ambigu), ‘kalimat’

dalam bahasa Pemrograman pasti hanya punya 1 arti!

Page 9: Bahasa Pemr0graman

contoh:

…..

————————————-

Errors

Ada 3 jenis/kemungkinan Error (kesalahan):

1. Compile-time error : kesalahan yang ditemukan oleh compiler saat di-compile! kesalahan

ini kemungkinan karena 2 hal: salah syntax! atau salah secara makna kata (semantics) misal

type data yang tidak sesuai! –> Executable file nggak bakalan dibikin.

2. Run-time error: kesalahan yang ditemukan saat program (executable file) di-eksekusi, misal

jika terhadap perhitungan pembagi nya bilangan 0 –> maka eksekusi program akan berhenti

pada titik tersebut.

3. Logical error: jika semua syntax, semantics okay tetapi lha kok hasil akhirnya salah!