sedikit berbagi materi UTS K.B.P
Konsep
Bahasa Pemrograman
" Materi 1 " sumber : Yudianto Sujana, M.Kom
Bahasa Pemrograman
Komputer,
alat yang digunakan untuk melakukan komputasi (perhitungan) secara cepat, komputer juga dapat menyimpan data, dan
data tersebut dibaca kembali.
Algoritma merupakan
urutan operasi yang akan dikerjakan secara berurutan hingga menghasilkan suatu
keluaran (output) yang diinginkan.
Program merupakan algoritma yang diekspresikan pada notasi atau bahasa
tertentu.
Bahasa Pemrograman, merupakan himpunan aturan-aturan (konvensi) untuk
menyatukan
(menghubungkan) algoritma-algoritma
Horizontal, Bahasa-bahasa pemrograman dipilih dan dipelajari secara berurutan.
Horizontal, Bahasa-bahasa pemrograman dipilih dan dipelajari secara berurutan.
Vertical, Membandingkan konsep dan konstruksi dari bahasa-bahasa
pemrograman.
Jenis Bahasa
Bahasa Mesin (Machine)
Bahasa
Rakitan (Assembly)
Bahasa
Tingkat Tinggi (High-Level Language).
Bahasa Mesin
•Merupakan bahasa yang paling rendah
levelnya
(very
low-level).
• Dieksekusi secara langsung oleh
komputer.
• Proses eksekusi sangat cepat.
• Realisasi (bahasa) membutuhkan biaya
rendah
(low cost of
realization).
• Fleksible untuk membuat layer software
yang
baru.
• Tergantung pada mesin (Machine
dependent).
Bahasa Assembly
• Menggunakan Mnemonic, misalnya ADD,
ADC (Add
with Carry).
• Menggunakan nama simbolik.
• Tergantung pada mesin (Machine
dependent).
Contoh :
AX,
01h
LEA
AX, WORD PTR Number
PUSH
AX
CALL
baca_input
MOV
AX,1234h
ADD
AX, 01h
LEA
AX, WORD PTR Number
PUSH
AX
Bahasa Tingkat Tinggi
• Mendefinisikan
sebuah mesin abstrak (Abstract machine).
• Membutuhkan
proses translasi oleh translator (compiler atau interpreter).
• Lebih
mudah untuk dipelajari karena lebih sederhana.
• Lebih
lambat dibandingkan bahasa mesin dan bahasa assembly.
pendekatan yang bisa dilakukan
dalam mempelajari bahasa pemrograman
Meningkatkan
kapasitas untuk mengekspresikan ide
pemrograman.
Dapat
memilih bahasa pemrograman tertentu yang tepat
untuk
menyelesaikan suatu masalah.
Meningkatkan
kemampuan untuk belajar bahasa
pemrograman
yang baru.
Memahami
implementasi dari bahasa pemrograman.
Meningkatkan
kemampuan untuk membuat bahasa
pemrograman
yang baru.
Kriteria bahasa pemrograman
Readability: Merupakan kriteria yang terpenting
Faktor-faktor :
Simplicity
Orthogonality
Statement Kontrol
Tipe data dan Struktur data
Syntax dan Lexical convention
Writability: Faktor-faktor :
Simplicity.
Orthogonality.
Mendukung abstraksi.
Abstraksi adalah kemampuan untuk mendefinisikan
dan kemudian menggunakan struktur yang kompleks
atau operasi yang mengijinkan detail dari operasi
diabaikan.
Reliability: Faktor-faktor :
Type checking.
Exception handling.
Readability dan writability
Cost: Training programmer.
Penulisan program / Pembuatan software.
Kompilasi dan eksekusi
Maintenance
Faktor yang mempengaruhi desain suatu bahasa
✦Arsitektur
Komputer (Computer Architecture).
✦ Metodologi
Pemrograman (Programming Methodology)
Kategori Bahasa Pemrograman
•Imperative (Prosedural). Fitur utamanya adalah variable,
assignment, statement, dan iterasi.
Contoh : C, Pascal.
•Functional. Menggunakan fungsi-fungsi untuk melakukan
komputasi.
Contoh : LISP, Scheme.
• Logic. Berdasaarkan aturan (rule-based). Aturan tidak memiliki urutan khusus.
Contoh : Prolog.
• Object-oriented. Pengkapsulan data dengan proses.
Pewarisan (inheritance)
dan dynamic type binding.
Perkembangannya cepat.
Contoh : C++, Java
Metode Implementasi
✦Kompilasi (Compilation), dilakukan oleh compiler.
Menerjemahkan high-level program ke kode
mesin.
Translasi membutuhkan waktu tertentu (compiletime)
Eksekusi cepat
Contoh bahasa yang menggunakan compiler :
Pascal, C/C++
✦Interpretasi (Interpretation), dilakukan oleh
interpreter.
Tanpa proses translasi.
Eksekusi lambat.
Saat ini jarang digunakan.
Contoh bahasa yang menggunakan
interpreter : BASIC
✦HybridGabungan antara kompilasi dan interpretasi
Translation cost kecil.
Kecepatan eksekusi tidak terlalu lambat
Beberapa Bahasa Pemrograman
COBOL
– 1960
COmmon Business Oriented Language Perkembangan bahasa saat itu :
– UNIVAC menggunakan FLOW-MATIC.
– USAF menggunakan AIMACO.
– IBM mengembangkan COMTRAN.
Didasarkan pada FLOW-MATIC
– Fitur FLOW-MATIC :
• Panjang nama variable hingga 12 karakter
• Menggunakan nama dalam bahasa inggris untuk operator aritmatika.
• Data dan code terpisah.
• Kata kerja (verbs) merupakan kata pertama dalam setiap statement.
Tujuan desain :
– Harus seperti bahasa Inggris yang sederhana.
– Mudah untuk digunakan.
– Harus dapat dipergunakan secara luas.
– Harus terbebas dari masalah implementasi compiler.
Desainer terdiri dari perusahaan komputer dan DoD (U.S
Departement of Defense).
Kontribusi terhadap perkembangan bahasa pemrograman :
– Fasilitas makro yang pertama dalam bahasa tingkat tinggi.
– Struktur data hirarki (record).
– Statement kondisi bersarang (nested selection statements).
– Nama variable dapat mencapai 30 karakter.
– Pembagian data.
Digunakan secara luas untuk aplikasi bisnis.
Penggunaannya didukung oleh DoD
BASIC
– 1964
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.
ALGOL
68 – 1968
Merupakan pengembangan dari ALGOL 60.
Desain didasarkan pada konsep orthogonality.
Kontribusi
:
– User-defined data structures.
– Tipe referensi.
– Array dinamik (flex array).
Mempunyai pengaruh yang besar pada bahasa
pemrograman berikutnya, terutama Pascal, C, dan Ada.
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 benarbenar 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
Bahasa
lain yang merupakan
turunan
dari ALGOL
Modula-2 (1970 oleh Niklaus Wirth) Pascal ditambah modul untuk low-level agar dapat digunakan
untuk pemrograman sistem.
Modula-3 (1980 oleh Digital dan Olivetti) Modula-2 ditambah
class, exception handling, garbage-collection,
dan concurrency.
Oberon (1980 oleh Wirth)
Menambahkan OOP ke Modula-2, penghilangan statement for, tipe enumerasi dan
statement with).
Delphi (1994 Borland) Pascal
ditambah support untuk OOP, lebih aman (dalam hal pointer dan memori)
dibanding C++.
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 kompiler 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.
Kontribusi :
– Packages – dukungan untuk data abstraction.
– Exeception handling.
– Generic program units.
– Concurrency – melalui model tasking
Smalltalk –1972-1980
Smalltalk –1972-1980
Dikembangkan di Xerox Palo Alto Research Center (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)
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.
– Dikembangkan oleh Microsoft.
Objek Data, Variabel, dan Konstanta
Konsep Bahasa Pemrograman
" Materi 4 "
Pengantar
Penyimpanan data di komputer (memori, register, dan lainnya)
– Organisasi yang sederhana
– Barisan bit yang dikelompokkan menjadi byte dan word
Memori
komputer
– Terdiri dari sel-del dasar yang disebut alamat
– Isi sel merupakan suatu nilai
– Nilai merupakan abstraksi secara matematis yang dapat dibaca
dan dimodifikasi selama program dieksekusi
Bahasa pemrograman
– Organisasi yang kompleks
– Array, stack, string, dan lainnya
Objek
Data
Pengelompokkan satu atau lebih potongan data di dalam virtual komputer
pada saat run-time
Beberapa objek data dibuat oleh
programmer
– Variabel, konstanta, array
Objek data lainnya dibuat oleh
sistem
– Buffer, list ruang kosong, stack
Objek data menggambarkan suatu
container untuk nilai data
– Suatu tempat dimana nilai-nilai data disimpan dan dipanggil kembali
Objek data dikarakteristikkan oleh
suatu kumpulan attribute
– Attribute menentukan jumlah dan tipe nilai objek data
• Bisa berupa angka tunggal, karakter atau pointer
000000000010011
|
Nilai
Data
Variabel
Objek data yang didefinisikan dan diberi nama secara eksplisit
oleh programmer Objek data dasar dengan nama
Dilihat dari hardware
– Variabel merupakan suatu abstraksi dari sel-sel memori
– Nama variabel merupakan abstraksi dari alamat memori
– Statement assigment merupakan abstraksi dari modifikasi suatu
sel Mempunyai 4 bagian
– Nama dan Scope
– Tipe
– L-value
– R-value
Nama
dan Scope
Nama variabel merupakan string dari karakter
Scope variabel merupakan range dari instruksi
program dimana nama tersebut dikenali
Instruksi program dapat memanipulasi suatu
variabel di dalam scopenya
Variabel akan terlihat (visible) dalam scope
Variabel tidak akan terlihat (invisible) di luar
scopenya
Example
1 :
procedure coba()
var nilai : integer;
begin
nilai := 10;
end;
begin
writeln(nilai);
end.
Example
2 :
public class Coba
{
public static void main(String[] args)
{
System.out.println(nilai);
}
public int tes()
{
int nilai = 10;
return nilai;
}
}
Tipe
Kumpulan nilai-nilai yang diasosiasikan ke variabel bersama-sama
dengan operasi-operasinya yang dapat digunakan untuk menciptakan, mengakses dan
memodifikasi suatu nilai
Contoh tipe Integer
– Operasi matematis
Beberapa bahasa mengijinkan programmer mendefinisikan tipe baru
sendiri
type vector = array[1..10] of integer
L-value
Merupakan daerah penyimpanan yang di binding ke variabel selama
eksekus
i Lokasi memori yang diasosiasikan dengan variabel
Digunakan untuk menangani r-value dari variabel
R-value
Suatu nilai yang terkodekan yang disimpan di suatu lokasi yang diasosiasikan
dengan variabel (l-value)
l-value dan r-value merupakan konsep utama yang berhubungan
dengan eksekusi suatu program
X = Y
X : l-value
Y : r-value
Referensi
dan Variabel Tanpa Nama
Beberapa bahasa mempunyai fasilitas untuk mengizinkan variabelnya
dapat diakses melalui r-value dari variabel yang lain
Disebut referensi atau pointer
Kemungkinan tanpa nama
Satu-satunya cara mengakses adalah melalui variabel bernama
lainnya
Example.
3 :
type pInt = ^integer;
var pIntxx : pInt;
x : integer;
begin
x := 5;
pIntxx := @x;
pIntxx := pIntxx + 1;
end.
Assignment
Suatu aksi yang menyebabkan peletakan suatu nilai di suatu lokasi
Suatu operasi dasar untuk mengubah binding dari nilai ke objek
data
Contoh
– Pascal
• i := 3
– C family
• i = 3
– Cobol
• MOVE 3 TO i
Example
A = 2
B = 3
A = B
A 2 A
B
B 3 B 3
Assignment
Secara garis besar, operasi assignment dapat didefinisikan
sebagai
– Menghitung l-value dari ekspresi pertama operan
– Menghitung r-value dari ekspresi kedua operan
– Memindahkan r-value yang sudah dihitung ke
objek
data l-value yang sudah dihitung
– Mengembalikan r-value yang sudah dihitung sebagai hasil dari
operasi
Konstanta
Objek data dengan nama yang sudah terikat dengan suatu 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;
Operator
Fungsi yang beroperasi di konstanta,
variabel, dan nilai yang akan menghasilkan sesuatu yang baru
(hasil) Operator dibedakan tingkatan precedence
Contoh
A = 3 + 2 * 4
A = 11
Tipe Data Konsep Bahasa Pemrograman
" Materi 5 "
Tipe
Data
Kumpulan dari obyek data dan himpunan operasi yang dapat
dilakukan pada obyek tersebut
Elemen dasar dari suatu tipe data
– Atribut
• Membedakan objek-objek data dari tipe tersebut
–
Nilai
• Dimiliki oleh objek data dari tipe tersebut
–
Operasi
• Mendefinisikan manipulasi-manipulasi yang dimungkinkan oleh
objek data dari tipe tersebut
Contoh
Tipe data array
– Atribut
• Jumlah dimensi array, dan tipe data komponen array
– Nilai
• Kumpulan angka-angka yang membentuk nilai yang valid untuk
komponen array
– Operasi
• Operasi untuk memilih komponen array yang sudah terbentuk
Jenis
Tipe Data
Tipe data primitif
– Numerik
• Integer
• Floating Point
– Boolean
– Character
Tipe data String
Array
Records
Integer
Hampir selalu merupakan sebuah refleksi yang tepat dari hardware
sehingga pemetaan ke hardware mudah
Dalam sebuah bahasa bisa terdapat 8 buah tipe integer yang
berbeda
– byte 1
– shortint 1
– integer 2
– word 2
– longint 4
Operasi
yang digunakan pada integer
– Aritmatika
• +, -, *, /, DIV, MOD
– Relational
• =, <>, >, <, >=, <=
– Assigment
• =, :=
– Bit
• SHIFT (<<, >>), AND (&), OR (|)
Floating
Point
Memodelkan bilangan yang sebenarnya, tetapi hanya sebagai
pendekatan dari bilangan tersebut
Bahasa untuk scientific, sedikitnya mendukung 2 tipe
floating point
– Single 4
– Double 8
– Extended 10
– Comp 8
Biasanya tepat seperti hardware, tetapi tidak selalu
Boolean
TRUE atau FALSE
0 atau 1
Dapat diimplementasikan sebagai bit, tetapi biasanya dilakukan
dengan byte
Keuntungan : Readability
10 > 5
Operasi
– and, or, not
Character
Disimpan sebagai kode numerik (ASCII, Unicode)
Operasi yang berlaku adalah
– Relational
– Assigment
a = 97
String
Nilainya merupakan urutan dari karakter
– array of char
Operasi :
– Assignment
– Perbandingan ( =, >, dan lainnya)
– Catenation (Penggabungan)
– Substring reference
– Pattern matching
Java – String merupakan class (bukan array of char)
– StringBuffer merupakan class untuk obyek string yang dapat diubah
Array
Array adalah kumpulan elemen data yang homogen, di mana setiap elemen
datanya diidentifkasikan dengan posisinya (index) dalam kumpulan tersebut,
relatif terhadap elemen yang pertama Inisialisasi array
– Berupa daftar nilai yang diberikan pada array saat array
ditempatkan dalam memori
– Contoh Inisialisasi array :
• C dan C++ meletakkan nilai pada braces (tanda { dan } ),
dan mengijinkan compiler untuk menghitung nilai tersebut
• Contoh : int stuff [] = {2, 4, 6, 8}
• Pascal – Tidak mengijinkan inisialisasi array
Record
Record merupakan kumpulan dengan elemen-elemen yang dapat mempunyai
tipe yang berbeda (tidak homogen), setiap elemennya diidentifikasikan dengan
namanya (nama field)
Contoh bahasa C
struct tipePgw
{
int ID;
int umur;
char bagia;
float gaji;
} Pegawai;
Struktur Kontrol Konsep Bahasa
Pemrograman
Struktur kontrol adalah statement control (while, for, dan
sebagainya) beserta dengan statement-statement
(compound statement ) yang dikontrolnya
Block merupakan compound statement yang dapat
membentuk scope yang baru (dengan variable local)
Bentuk control flow :
– Kondisi
– Iterasi (Looping)
Statement
Kondisi
Single-way Selector
– Pascal
• IF kondisi Then
• IF kondisi Then
Begin
...
End;
– C Family
• if (kondisi)
• if (kondisi)
{
...
}
Two-way Selector
– Pascal
• If Kondisi Then
...
Else
...
– C Family
• if (Kondisi)
...
else
...
Nested Selector
– Pascal
• IF Kondisi Then
IF Kondisi Then
– C Family
• if (Kondisi)
if (Kondisi)
Multiple Selector
– Pascal
• Case kondisi of
nilai1 : ...
nilai2 : ...
end;
– C Family
• switch (kondisi)
{
case nilai1 : ...
break;
case nilai2 : ...
break
}
Contoh
a = 87;
if a >= 90 and a <= 100 then
writeln(“A”)
else if a >= 80 then
writeln(“B”)
else if a >= 70 then
writeln(“C”)
else
writeln(“D”);
a = 87;
Case a of
90..100 : writeln(“A”);
80..89 : writeln(“B”);
70..79 : writeln(“C”);
0..69 : writeln(“D”);
end;
Statement Iterasi
Perulangan terbatas
– Pascal
• For counter := nilawal to nilakhir do
• For i := 1 to 10 do
– C Family
• for(counter=nilawal;counter<=nilakhir;counter++)
• for(i = 1; i <= 10; i++)
Perulangan tak terbatas
– Pascal
• While
– While Kondisi do
– While i <= 10 do
• Repeat
– Repeat
...
Until Kondisi
– C Family
• while
–while (Kondisi)
• do
–do
...
while Kondisi
Contoh
for i := 1 to 10 do
writeln (i);
for(i := 1; i <= 10; i++)
print(i);
i := 1
while i <= 10 do
begin
writeln(i);
i := i + 1;
end;
i := 1
Repeat
writeln(i);
i := i + 1;
Until i >= 10;
Tidak ada komentar:
Posting Komentar