Suatu definisi wilayah bagian bahasa pemrograman yang berisi urutan statement yang executeable yang diperlukan sebagai suatu unit. Biasa juga disebut subprogram atau routine. Parameter Digunakan untuk mempermudah dan mengefisienkan subprogram maupun programnya sendiri. Parameter meningkatkan readability dan modifiability. Peningkatan tersebut terjadi karena diizinkannya transfer data yang berbeda setiap kali pemanggilan.
Ada 2 jenis parameter:
Formal Parameter, merupakan parameter yang muncul di definisi subprogram.
Actual Parameter, merupakan parameter yang muncul di program saat pemanggilan subprogram.
Passing Parameter Melewatkan actual parameter sebagai formal parameter pada subprogram. Metode passing parameter:
Call-by-Value, yaitu nilai dari actual parameter dilewatkan ke formal parameter.
Call-by-Reference, yaitu alamat dari actual parameter dilewatkan ke formal parameter.
Fungsi Merupakan sebuah blok dan mirip dengan procedure, perbedaannya adalah procedure tidak mengembalikan nilai sedangkan fungsi mengembangkan sebuah nilai.
Overloading Yaitu satu nama yang dipakai beberapa subprogram yang memiliki nama yang sama. Parameterlah yang membedakan antar subprogram. Overloading dilakukan pada bahasa pemrograman berorientasi objek.
Yaitu kumpulan dari obyek data dan himpunan operasi yang dapat dilakukan pada obyek tersebut. Elemen dasar dari tipe data:
Atribut, untuk membedakan objek-objek data dari tipe tersebut.
Nilai
Operasi, digunakan untuk mendefinisikan manipulasi-manipulasi yang dimungkinkan oleh objek data dari tipe tersebut.
Jenis tipe data: 1.Tipe data primitif: Numerik, Boolean, Character. 2. Tipe data string 3. Array 4. Records
Integer Hampir selalu merupakan sebuah refleksi yang tepat dari hardware sehingga pemetaan ke hardware mudah.
Floating point Memodelkan bilangan yang sebenarnya, tetapi hanya sebagai pendekatan dari bilangan tersebut. Ini biasanya tepat seperti hardware, tetapi tidak selalu.
Boolean Suatu ekspresi untuk menyatakan TRUE atau FALSE, 0 atau 1. Dapat diemplementasikan sebagai bit, tetapi biasanya dilakukan dengan byte. Keuntungan dari boolean adalah Readability.
Character Disimpan sebagai kode numerik. Operasi yang berlaku adalah: Relational dan Assignment.
String Nilainya merupakan urutan dari karakter(array of char). Operasi yang berlaku adalah: Assignment, Perbandingan, Catenation, Substring Reference, dan Pattern Matching.
Array adalah kumpulan elemen data yang homogen, dimana setiap elemen datanya diidentifikasikan dengan posisinya dalam kumpulan tersebut, relatif terhadap elemen yang pertama. Inisialisasi array, berupa daftar nilai yang diberikan pada array saat array ditempatkan dalam memory.
Record Merupakan kumpulan dengan elemen-elemen yang dapat mempunyai tipe yang berbeda, setiap elemennya diidentifikasikan dengan namanya.
Semua data yang akan diolah oleh komputer harus disimpan terlebih dahulu di memory komputer (memori, register, dan lainnya). Memory komputer itu sendiri terdiri dari sel-del dasar yang disebut alamat. Isi sel merupakan suatu nilai hasil olahan komputer. Bahasa pemrograman berhubungan dengan sistem operasi untuk bisa mengolah penggunaan memory.
2. Objek Data
Pengelompokkan satu atau lebih potongan data di dalam virtual komputer pada saat run-time. Lebih sederhananya objek data merupakan suatu tempat dimana nilai-nilai data disimpan dan dipanggil kembali. Sebagai contoh objek data yang dibuat oleh programer adalah Variabel, konstanta, array dan yang di buat oleh sistem adalah Buffer, list ruang kosong, stack.
3.Variable
Objek data yang didefinisikan dan diberi nama secara eksplisit oleh programmer. Variable berfungsi sebagai label atau nama wadah penyimpanan nilai. Sehingga ketika programer ingin mengolah nilai tersebut, ia hanya cukup menyebutkan nama variable tersebut. Dilihat dari hardware variable adalah :
Variabel merupakan suatu abstraksi dari sel-sel memori
Nama variabel merupakan abstraksi dari alamat memori
Statement assigment merupakan abstraksi dari modifikasi suatu sel
Variable mempunyai 4 bagian :
Nama dan Scope
Tipe
L-value
R-value
Nama dan Scope Nama variable merupakan string dari karakter.
Scope variable merupakan range dari instruksi program dimana range dari instruksi.
Instruksi program dapat memanipulasi suatu variable didalam scpoe nya.
Variable akan terlihat didalam scope, dan tidak akan terlihat jika diluar scope.
·
Type Kumpulan nilai-nilai yang diasosiasikan ke variable bersama-sama dengan operasinya yang dapat digunakan untuk menciptakan, mengakses dan memodifikasi suatu nilai.
L-Value Merupakan daerah penyimpanan yang di binding ke variabel selama eksekusi.
Lokasi memori yang diasosiasikan dengan variabel.
Digunakan untuk menangani r-value dari variabel.
R-Value Suatu nilai yang terkondekan yang disimpan di suatu lokasi yang diasosiasikan dengan variabel (l-value).
L-value dan r-value merupakan konsep utama yang berhubungan dengan eksekusi suaatu program.
4. Referensi dan Variabel Tanpa Nama
Beberapa bahasa mempunyai fasilitas untuk mengizinkan variabelnya dapat
diakses melalui r-value dari variabel yanglain
Disebut referensi atau pointer Kemungkinan tanpa nama
Satu-satunya cara mengakses adalah melalui variabel bernama lainnya
5. Assignment
Salah satu jenis operasi yang berfungsi untuk memberi suatu nilai ke dalam varible.
Pascal , i := 3;
C family, i = 3;
Cobol, MOVE 3 TO i;
6. Konstanta
Objek data dengan nama yang sudah terikat dengansuatu nilai secara permanen (tetap)Contoh
#define MAX 50
Nilai MAX tidak dapat diubah melalui assignment
MAX = 5
Tetapi dapat dilibatkan dalam operasi
int N;
N = 12;
N = N + MAX;
7. Operator
Fungsi yang beroperasi di konstanta, variabel, dan nilai yang akan menghasilkan sesuatu yang baru (hasil). Fungsi yang beroperasi di konstanta,
Verifiability (verifikasi program (konsep kebenaran)).
Kemudahan Translasi atau Mudah bagi manusia, bagi bahasa yang sulit di translasi.
Pengurangan Ambiguitas atau memilki dua arti atau bahkan lebih.
Misalnya: A(i) (array atau pemanggilan fungsi).
Ciri Syntax
Kumpulan aturan yang mendefinisikan suatu bentuk bahasa
Syntax mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar
Kata dikonstruksikan dengan karakter-karakter alfabet
Contoh keyword (reserve word) dalam bahasa C while, do, if, else, dll
Syntax mengatur cara mengkombinasikan kata-kata tersebut ke dalamsuatu statement dengan bentuk yang benar sehingga dapat disusunsuatu program yang dapat berjalan dengan benar
Syntax tidak mengerti arti atau isi dari suatu kalimat, semantic yang bisamengartikannya
Syntax menyediakan bentuk-bentuk notasi untuk kominikasi antara programmer dan pemroses bahasa pemrograman, sehingga mempermudah pembuatan suatu program
2 Kumpulan Aturan Syntax
Lexical
menspesifikasikan kumpulan karakter yang terdapat dalam alphabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan diterima
Syntactic
elemen-elemen yang mengatur bentuk suatu statement-statement dalam bahasa pemrograman.
Semantic
Mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut
int nilai [10]
Semantic akan menentukan deklarasi diatas dan menyebabkan ruang sebanyak 10 elemen integer yang diberikan kepada variabel nilai
if (a>b) max = a else max = b;
Ekspresi a>b harus dievaluasi terlebih dahulu , tergantung dari nilai ini satu dari dua statement di belakangnya akan dieksekusi
Digunakan karena terlalu sulit jika harus menggunakan machine code.
Shortcode – 1949 – BINAC- oleh Mauchly, Ekspresi dikodekan dari kiri ke kanan.
Speedcoding – 1954 – IBM 701 – oleh Backus.
Pseudo operation untuk fungsi aritmatik danmatematika.
Percabangan kondisional dan tanpa kondisi.
Autoincrement register untuk pengaksesan array.
Laning dan Zierler System –1953:
Diimplementasikan pada computer Whilwind – MIT.
Merupakan system compiler pertama.
Fasilitas translasi ekspresi dan pemanggilan fungsi.
Tidak pernah diporting ke mesin lain.
FORTRAN I – 1957:
FORTRAN 0 -1954 – tidak diimplementasi
FORmula TRANslation dibuat oleh John Backus
Didesain untuk IBM 704, yang memiliki Index Register dan hardware floating-point.
Komputer (saat itu) belum reliable.
Aplikasi terbatas pada scientific.
Tidak ada metodologi pemrograman dan alat bantunya.
Efisiensi mesin harus benar-benar diperhatikan.
Merupakan bahasa tingkat-tinggi pertama yang diterima secara luas.
FORTRAN II – 1958:
Independent compilation.
Perbaikan bug dari FORTRAN I
FORTRAN IV – 1962:
Deklarasi tipe eksplisit.
Logical selection statement (Logical IF).
Subprogram dapat menjadi parameter.
Menjadi ANSI standard pada tahun 1968.
FORTRAN 77 – 1978:
Dilengkapi dengan character-string handling.
Logical loop control statement.
IF-THEN-ELSE statement.
FORTRAN 90 – 1990:
Menggunakan modul-modul dengan akses private maupun public.
Terdapat array dinamik.
Record dan Pointer.
Rekursif.
Statement CASE, EXIT, dan CYCLE.
Pengecekan tipe parameter.
LISP – 1959:
Kepanjangannya adalah LISt Processing.
Dibuat oleh John McCarthy, MIT, 1959.
Riset Artificial Intellegence membutuhkan bahasa yang memproses data menggunakan list (bukan array).
Mendukung komputasi simbolik (bukan numeric).
LISP hanya terdapat 2 tipe data : Atom dan List.
Sintaksnya didasarkan pada Kalkulus Lambda (Lambda calculus).
Merupakan pionir dari functional programming.
Tidak membutuhkan variable atau assignment.
Control dilakukan lewat rekursi dan ekspresi kondisional.
Masih merupakan bahasa yang dominan dalam AI.
COMMON LISP dan Scheme merupakan dialek dari LISP.
Terdapat bahasa-bahasa lain yang berhubungan : ML, Miranda, Haskell.
ALGOL 58 – 1958:
Kepanjangannya adalah ALGOrithmic Language.
Perkembangan bahasa saat itu (saat ALGOL dibuat) :
FORTRAN terbatas untuk mesin IBM 70x.
Bahasa-bahasa yang lain juga dikembangkan tetapi hanya untuk mesin tertentu.
Tidak terdapat bahasa yang portable, semuanya bergantung pada mesin
Tidak terdapat bahasa yang universal.
ACM (Association for Computing Machinery) dan GAMM bertemu bertemu selama 4 hari untuk merencanakan desain bahasa.
Tujuan dari bahasa ALGOL :
•Mendekati notasi matematika.
•Baik untuk mendeskripsikan algoritma.
• Harus dapat ditranslasikan ke kode mesin.
COBOL – 1960:
COBOL kepanjangan dari COmmon Business Oriented Language
Tujuan desain :
Harus seperti bahasa Inggris yang sederhana.
Mudah untuk digunakan.
Harus dapat dipergunakan secara luas.
Harus terbebas dari masalah implementasi compiler.
BASIC – 1964:
BASIC kepanjangan dari Beginners All-purpose Symbolic Instruction Code.
Dibuat oleh John Kemeny dan Thomas Kurtz.
Mudah untuk dipelajari.
Struktur program jelek.
Dialek dari BASIC yang sekarang populer : QuickBASIC dan Visual BASIC.
PL/I – 1965:
PL merupakan kepanjangan dari Programming Language I.
Dibuat oleh IBM dan SHARE.
Menggabungkan fitur dari ALGOL 60, COBOL, dan FORTRAN.
Dikembangkan untuk aplikasi Bisnis dan Science.
Pertama kali adanya exception handling.
Early Dynamic Language:
Karakteristik : Memiliki tipe dinamik, dan dynamic storage allocation.
APL (A Programming Language) – 1962.
Didesain sebagai HDL (Hardware Description Language) oleh Ken Iverson dari IBM.
Sangat ekspresif (terdapat banyak operator).
Program sangat sulit untuk dibaca.
SNOBOL – 1964.
Didesain sebagai string manipulation language di Bell Labs oleh Farber, Griswold, dan Polensky.
Sangat baik untuk string pattern-matching.
SIMULA 67 – 1967:
SIMULA merupakan kepanjangan dari SIMULAtion.
Didesain untuk simulasi system oleh Nygaard dan Dahl (Norwegia).
Didasarkan pada ALGOL 60 dan SIMULA I
Kontribusi : Coroutine (semacam subprogram) yang diimplementasi dalam struktur yang disebut class. Class adalah struktur yang memuat data dan fungsi.
Pascal –1971:
Didesain oleh Niklaus Wirth, yang keluar dari tim ALGOL 68.
Dikembangkan dari ALGOL 68.
Didesain untuk pengajaran pemrograman terstruktur.
Kecil dan mudah, tidak terdapat hal yang benar-benar baru.
Tetap menjadi bahasa pemrograman yang digunakan secara luas untuk mengajarkan pemrograman di universitas-universitas.
C – 1972:
Didesain untuk pemrograman system oleh Dennis Ritchie dari Bell Labs.
Dikembangkan dari bahasa B dan ALGOL 68.
Memiliki operator yang banyak, tetapi dari segi pengecekan tipe data (type checking) kurang baik.
Didistribusikan bersama system operasi UNIX.
PROLOG – 1972:
PROgramming in LOGic.
Dikembangkan oleh Comeraurer dan Roussel University of Aix-Marseille).
Didasarkan pada formal logic.
Sifatnya non-procedural.
Dapat disebut sebagai Intelligent Database System yang menggunakan proses pengambilan keputusan untuk memutuskan kebenaran dari query yang diberikan.
Ada – 1983:
Dikembangkan untuk DoD.
Pengembangan melibatkan ratusan orang, biaya besar, dan waktu pengembangan sekitar 8 tahun.
Memuat semua yang akhirnya dikenal sebagai bagian dalam software engineering dan language design.
Kompiler yang pertama sangat rumit, dan compiler yang pertama dapat digunakan dirilis 5 tahun setelah desain bahasanya selesai.
Ada 95 – Mendukung OOP melalui penurunan tipe, terdapat mekanisme kontrol yang lebih baik dalam penggunaan data secara bersama-sama, library lebih flexible.
Smalltalk –1972-1980:
Dikembangkan di XeroxPalo AltoResearchCenter (Xerox PARC), oleh Alan Kay, kemudian dilanjutkan oleh Adele Goldberg.
Merupakan bahasa yang pertama kali mengimplementasikan konsep object-oriented (data abstraction, inheritance, dan dynamic type binding).
Merupakan pionir dari GUI (Graphical User Interface).
C++ - 1985
Dikembangkan oleh Bjarne Stroustrup di Bell Labs.
Dikembangkan dari C dan SIMULA 67.
Terdapat fasilitas OOP yang berasal dari SIMULA 67 dan ditambahkan ke C.
Mempunyai exception handling.
Merupakan bahasa yang besar dan kompleks karena mendukung procedural programming dan object-oriented programming.
Popularitasnya cepat berkembang bersama dengan OOP.
ANSI standard pada tahun 1997.
Eiffel – merupakan bahasa yang juga mendukung OOP, lebih kecil dan lebih mudah dari C++, didesain oleh Bertrand Meyer tahun 1992.
Java – 1995
Dikembangkan oleh James Gosling, Sun Microsystems
Didasarkan pada C++
Secara signifikan menyederhanakan C++.
Hanya mendukung OOP.
Mempunyai reference, tetapi tidak pointer.
Terdapat juga dukungan untuk applets (world wide web) dan concurrency (Java Threads).
Scripting Language untuk Web:
JavaScript
Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document.
Memepunyai syntax yang mirip dengan Java.
PHP (PHP Hypertext Preprocessor)
Digunakan pada Pemrograman Web (server-side) menghasilkan code HTML sebagai outputnya.
Mempunyai syntax yang mirip dengan C++ (support OOP).
VBScript
Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document.
Didasarkan atas Visual Basic.
Dikembangkan oleh Microsoft.
Jscript
Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document.
Memiliki syntac yang mirip dangan C++.
Dikembangkan oleh Microsoft.
ASP (Active Server Page)
Digunakan pada Pemrograman Web (server-side) menghasilkan code HTML sebagai outputnya.