KONSEP_BHS_PEMPROGRAMAN

Print Friendly and PDF

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.
 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
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)
– 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

                  
   Objek Data           10011        Variabel Terikat
                                  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: