Programming Language Concept : Semester 1

LAPORAN
PROGRAMMING LANGUAGE CONCEPT
Nama Kelompok :
1. Kelvin Zulfian Bay (2001621504)
2. M. Rosyad Syamil (2001624405)
3. Rahman Nur Hisyam (2001622116)
4. Roven (2001622684)
5. Yusuf Wahyu Perdana (2001624310)

UNIVERSITAS BINA NUSANTARA
2016
Laporan Programming Language Concept

Pertemuan : 1 (Introducing)

Reasons for Studying Concepts of Programming Languages
• Increased ability to express ideas
• Improved background for choosing appropriate languages
• Increased ability to learn new languages
• Better understanding of significance of implementation
• Better use of languages that are already known
• Overall advancement of computing

Programming Domains
• Scientific applications
• Business applications
• Artificial intelligence
• Systems programming
• Web Software

Language Evaluation Criteria
• Readability: the ease with which programs can be read and understood
• Writability: the ease with which a language can be used to create programs
• Reliability: conformance to specifications (i.e., performs to its specifications)
• Cost: the ultimate total cost

Implementation Methods
• Compilation
– Programs are translated into machine language; includes JIT systems
– Use: Large commercial applications
• Pure Interpretation
– Programs are interpreted by another program known as an interpreter
– Use: Small programs or when efficiency is not an issue
• Hybrid Implementation Systems
– A compromise between compilers and pure interpreters
– Use: Small and medium systems when efficiency is not the first concern
Laporan Programming Language Concept

Pertemuan : 2 (Describing Syntax and Semantics)

Syntax
Syntax merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa; syntax mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar.
Sebuah script PHP selalu Dimulai dengan blok. <?Php dan Diakhiri dengan ?> . A PHP scripting blok dapat ditempatkan di manapun dalam dokumen.
Untuk kompatibilitas maksimum, disarankan menggunakan formulir standar (<? Php) bukan pada bentuk singkatan .
<?php
?>
Sebuah file PHP biasanya berisi tag HTML, seperti sebuah file HTML, dan beberapa kode PHP scripting.

Contoh :
<html>
<body>

<?php
echo “Inilah kode phpku”;
?>

</body>
</html>

Semantic
Semantic Tag atau Semantic Markup, adalah sebutan untuk tag-tag HTML yang memiliki ‘arti‘ atau ‘makna’. Kata semantic berasal dari kata yunani yang berarti ‘mempelajari arti‘ (the study of meaning).
HTML ditujukan untuk membuat struktur halaman web. Tag <p> misalnya, digunakan untuk membuat paragraf, tag <h1> untuk membuat judul/header, dan tag <table> untuk membuat tabel, kesemua tag ini memiliki ‘arti‘ yang jelas, karena itu termasuk kedalam semantic tag.
Sedangkan tag seperti <div> dan <span> tidak memiliki arti apa-apa, namun sering dijumpai untuk membuat struktur halaman. Jika anda pernah merancang web menggunakan CSS, tag <div>adalah tag yang sangat sering digunakan. Untuk membuat bagian header yang berisi menu navigasi atau logo, biasanya kita menggunakan tag <div id=”header”>, untuk membuat footer biasanya menggunakan <div id=”footer”>, sedangkan untuk menu utama bisa menggunakan <div id=”menu”> atau <div id=”nav”>.
Walaupun dari atribut id kita bisa melihat ‘arti‘ dari tag-tag tersebut, akan tetapi tag <div> itu sendiri tidak memiliki arti apa-apa (non semantic tag). Web browser seperti screen reader untuk teman kita yang bekebutuhan khusus, tidak bisa menentukan apakah tag ini adalah header, atau konten dari website. Kita bisa saja membuat header halaman menggunakan <div id=”head”>, <div id=”header”>, atau <div id=”atas”>.
HTML5 memperkenalkan tag-tag baru yang ditujukan untuk mengatasi hal ini. Daripada menggunakan <div id=”header”>, kita bisa menggunakan tag <header> sebagai penanda bagian atas halaman HTML, dan tag <footer> untuk penanda bagian bawah halaman web.
Beberapa semantic tag yang dibawa oleh HTML5 adalah sebagai berikut:
 <article>
 <aside>
 <figcaption>
 <figure>
 <footer>
 <header>
 <main>
 <mark>
 <nav>
 <section>
 <summary>
 <time>
Sebagian besar dari semantic tag tersebut digunakan untuk membuat struktur halaman.
Laporan Programming Language Concept

Pertemuan : 3 (Name, Bindings, and Scope)

Scope
Variabel Scope (atau ruang lingkup variabel) adalah jangkauan kode program dimana perintah program masih bisa mengakses sebuah variabel.
Jika kita mendefenisikan sebuah variabel pada satu file PHP, maka variabel tersebut dapat diakses oleh seluruh kode program pada halaman yang sama. Namun jika variabel tersebut di defenisikan di dalam sebuah fungsi, variabel itu belum tentu bisa diakses dari luar fungsi tersebut. Hal inilah yang dimaksud dengan Variabel Scope.
Variabel yang didefenisikan di dalam sebuah fungsi, secara default tidak dapat diakses oleh kode program di luar fungsi tersebut. Dan begitu juga sebaliknya, variabel yang didefenisikan di luar fungsi, tidak bisa diakses dari dalam fungsi.

Bindings
Late Static Bindings
As of PHP 5.3.0, PHP implements a feature called late static bindings which can be used to reference the called class in a context of static inheritance.
More precisely, late static bindings work by storing the class named in the last “non-forwarding call”. In case of static method calls, this is the class explicitly named (usually the one on the left of the :: operator); in case of non static method calls, it is the class of the object. A “forwarding call” is a static one that is introduced by self::,parent::, static::, or, if going up in the class hierarchy, forward_static_call(). The function get_called_class() can be used to retrieve a string with the name of the called class and static:: introduces its scope.
This feature was named “late static bindings” with an internal perspective in mind. “Late binding” comes from the fact that static:: will not be resolved using the class where the method is defined but it will rather be computed using runtime information. It was also called a “static binding” as it can be used for (but is not limited to) static method calls.

Name
Variables are “containers” for storing information.
In PHP, a variable starts with the $ sign, followed by the name of the variable:
Example
<?php
$txt = “Hello world!”;
$x = 5;
$y = 10.5;
?>
After the execution of the statements above, the variable $txt will hold the value Hello world!, the variable $x will hold the value 5, and the variable $y will hold the value 10.5.
Note: When you assign a text value to a variable, put quotes around the value.
Note: Unlike other programming languages, PHP has no command for declaring a variable. It is created the moment you first assign a value to it.
Think of variables as containers for storing data.
A variable can have a short name (like x and y) or a more descriptive name (age, carname, total_volume).
Rules for PHP variables:
• A variable starts with the $ sign, followed by the name of the variable
• A variable name must start with a letter or the underscore character
• A variable name cannot start with a number
• A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ )
• Variable names are case-sensitive ($age and $AGE are two different variables)
Remember that PHP variable names are case-sensitive!

Laporan Programming Language Concept

Pertemuan : 4 (Data Types)

Data Types
Sebuah variabel atau konstanta merupakan ‘tempat‘ dari data. Di dalam bahasa pemograman (dan juga PHP), data yang diinput kedalam variabel atau konstanta akan memiliki tipe tertentu. Tipe-tipe ini nantinya menentukan bagaimana cara kita memprosesnya. Beberapa tipe data terdengar familiar, seperti tipe data angka, desimal dan text. Namun kita juga akan menemukan tipe data lain seperti boolean dan array.
Setiap bahasa mempunyai tipe data yang hampir selalu sama, salah satu nya adalah Integer, di PHP juga terdapat tipe data Integer, selain itu di PHP juga terdapat tipe data lain, yaitu :
– Integer
Tipe data angka bulat, atau disebut dengan tipe data Integer. Tipe data integer adalah tipe data yang berupa angka bulat seperti: 1, 22, dan -172. Tipe data integer umum digunakan untuk data dengan angka bulat, seperti harga barang, jumlah stock dan jumlah mahasiswa. Jika data yang kita miliki kemungkinnan akan mengandung pecahan, maka tipe data yang digunakan adalah float (akan dibahas dalam tutorial berikutnya).
Nilai integer dapat bernilai positif (+) maupun negatif (-). Jika tidak diberi tanda, maka diasumsikan nilai tersebut adalah positif.

Karena PHP tidak memerlukan pendeklarasian variabel, maka ketika sebuah variabel berisi angka bulat, maka secara otomatis variabel tersebut di sebut sebagai variabel integer.

– Float
– Tipe data float (disebut juga tipe data floating point, atau real number) adalah tipe data angka yang memiliki bagian desimal di akhir angka, atau memiliki floating point (floating point adalah istilah dalam bahasa inggris untuk menyebut tanda “titik” yang menandakan bilangan desimal). Contoh angka float adalah seperti: 0,9 atau 3,14.
– Tipe data float cocok digunakan untuk variabel yang akan berisi angka pecahan, seperti nilai IPK, hasil pembagian, atau hasil komputasi numerik yang angkanya tidak bisa ditampung oleh data integer.

Sama seperti tipe data integer, jangkauan angka float bergantung kepada komputasi prosessor yang digunakan, walaupun pada umumnya berupa angka mulai dari 1.7 x 10^-308 sampai dengan 1.7^+308 dengan 15 digit keakuratan. Anda tidak perlu khawatir dengan limit angka float ini, karena selain untuk membuat aplikasi matematis tingkat tinggi, kita tidak akan menggunakan angka float sampai 15 digit.

– String
Tipe data string adalah tipe data yang berisi text, kalimat, atau kumpulan karakter. Sebagai contoh, “a”, “saya sedang belajar PHP” atau “tUT0r1al pHp?!” semuanya adalah string.
Tipe data string mungkin adalah tipe data yang paling sering digunakan, dan memiliki banyak fitur yang disediakan PHP. Karakter yang didukung saat ini adalah 256 karakter ASCII. List karakter ASCII tersebut dapat dilihat di http://www.ascii-code.com.

– Boolean
Tipe data boolean adalah tipe data paling sederhana dalam PHP dan juga dalam bahasa pemograman lainnya. Tipe data ini hanya memiliki 2 nilai, yaitu true (benar) dan false (salah).
Tipe data boolean biasanya digunakan dalam operasi logika seperti kondisi if, dan perulangan (looping). Untuk penggunaan tipe data boolean akan kita pelajari pada waktu membahas tentang struktur pemograman PHP.

– Array
Array (atau larik dalam bahasa indonesia) bukanlah tipe data dasar seperti integer atau boolen, Array adalah sebuah tipe data bentukan yang terdiri dari kumpulan tipe data lainnya. Menggunakan array akan memudahkan dalam membuat kelompok data, serta menghemat penulisan dan penggunaan variabel.

– NULL
– Resource
– Object

Laporan Programming Language Concept

Pertemuan : 5 (Expression and Assignment Statements)

Expression and Assignment Statements
Expression
Expressions are the most important building stones of PHP. In PHP, almost anything you write is an expression. The simplest yet most accurate way to define an expression is “anything that has a value”.
The most basic forms of expressions are constants and variables. When you type “$a = 5”, you’re assigning ‘5’ into $a. ‘5’, obviously, has the value 5, or in other words ‘5’ is an expression with the value of 5 (in this case, ‘5’ is an integer constant).
After this assignment, you’d expect $a’s value to be 5 as well, so if you wrote $b = $a, you’d expect it to behave just as if you wrote $b = 5. In other words, $a is an expression with the value of 5 as well. If everything works right, this is exactly what will happen.

Assignment Statements
Operator assignment adalah operator untuk menambahkan, atau memasukkan sebuah nilai kedalam variabel. PHP memiliki 3 jenis operator assigment, dan kita telah menggunakan 2 diantaranya, yaitu tanda = untuk mengdefenisikan variabel, dan tanda => untuk mengisi nilai dari array.

Jenis-jenis Operator Assigment dalam PHP
PHP mengenal 3 jenis operator assigment, yaitu Assigment dengan Nilai (Assignment by Value), Assigment Array, dan Assigment dengan Referensi (Assignment by Reference).
• Assignment by Value
Assigment dengan Nilai atau dalam istilah pemograman dikenal dengan Assignment by Value , adalah proses pemberian nilai kedalam sebuah variabel dengan meng-copy nilai atau value dari variabel lain.
PHP menggunakan tanda sama dengan (=) untuk Assignment by Value. Secara tidak sadar, kita telah banyak menggunakan operator ini dalam berbagai contoh pada tutorial sebelumnya. Pada saat menggunakan operator “=”, PHP meng-copy nilai (atau value), dari sisi kanan operator ke sisi kiri.

• Assignment Array
Operator Assigment array adalah operator assigment untuk menginput nilai kedalam array. Operator ini menggunakan tanda panah (=>). Contoh dan penggunaannya ada pada tipe data array

• Assignment by Reference
Assigment dengan referensi atau dalam istilah programmingnya: Assignment by Reference, adalah operator assigment khusus yang digunakan untuk men-copy nilai referensi dari sebuah variabel.
Laporan Programming Language Concept

Pertemuan : 6 (Control Structures Statement)

Struktur kontrol
Struktur kontrol dalam PHP hampir sama dengan bahasa pemrograman yang lain. Struktur kontrol berfungsi sebagai pengatur arah / tujuan dari suatu aliran program yang berbentuk rangkaian perintah dan ditulis untuk memenuhi beberapa keadaan seperti :
1. Untuk mengulang suatu perintah apabila suatu kondisi (iteration) telah terpenuhi
2. Melanjutkan sebuah pernyataan apabila suatu konsidi telah terpenuhi (sequence)
3. Memilih sebuah pilihan dari beberapa alternatif bila kondisi telah terpenuhi (selection)
Struktur kontrol dalam PHP ada 2 jenis, yaitu :
a. Struktur Percabangan (pengambilan keputusan)
b. Struktur Pengulangan

Struktur Percabangan (pengambilan keputusan)
Struktur percabangan adalah suatu perintah yang memungkinkan pemilihan atas perintah yang akan dijalankan sesuai dengan kondisi tertentu. Ada tiga perintah percabangan dalam PHP, yaitu :
a. If
If digunakan untuk menjalankan satu atau lebih perintah setelah mengecek kondisi yang diberikan, Jika kondisi yang diberikan bernilai benar maka serangkaian pernyataan akan dijalankan, namun apabila kondisi yang diberikan bernilai salah maka pernyataan untuk kondisi bernilai salah akan dijalankan.
Standar penulisan if :

If (kondisi)
{
Pernyataan yang dijalankan bila kondisi bernilai benar
}
pernyataan yang dijalankan bila kondisi bernilai salah

<?
$nilai = 90;
if ($nilai>50)
echo “Anda lulus, nilai anda$nilai”;
?>

b. If-Else
Perintah ini mirip dengan perintah IF diatas. Namun perintah IF ELSE ini dapat digunakan untuk banyak blok perintah dan dengan kondisi yang berbeda beda.
Standar penulisannya adalah :

if(kondisi)
{
Pernyataan yang dijalankan bila kondisi1 bernilai benar;
}
else if
{
Pernyataan yang dijalankan bila kondisi2 bernilai benar;
}
else
{
pernyataan yang dijalankan bila kondisi1&2 bernilai salah;
}

<?
$umur = 35;

if ($umur > 50){
echo “Termasuk kategori TUA”;
} else if ($umur > 25) {
echo “Termasuk kategori DEWASA”;
} else if ($umur > 15) {
echo “Termasuk kategori REMAJA”;
} else {
echo “Termasuk kategori ANAK ANAK”;
}
?>

c. Switch
Perintah switch ini digunakan sebagai alternatif untuk pengganti dari struktur if … else dimana terdapat else lebih dari satu. Dengan menggunakan perintah switch ini program dapat semakin mudah untuk dibuat dan dipelajari.
Untuk standar penulisannya adalah sebagai berikut :

switch (kondisi)
{
case konstanta1 : pernyataan1;
break;
case konstanta2 : pernyataan2;
break;
default : pernyataan default;
}

<?
$hari = date(“D”);
switch ($hari)
{
case ‘Sun’ : $hari = “Minggu”;
break;
case ‘Mon’ : $hari = “Senin”;
break;
case ‘Tue’ : $hari = “Selasa”;

break;
case ‘Wed’ : $hari = “Rabu”;
break;
case ‘Thu’ : $hari = “Kamis”;
break;
case ‘Fri’ : $hari = “Jumat”;
break;
case ‘Sat’ : $hari = “Sabtu”;
break;
default : $hari = “Kiamat”;
}
echo “Hari ini adalah hari <b>$hari</b>”;
?>

Struktur Pengulangan
Struktur pengulangan biasanya digunakan untuk mengulang suatu perintah. Dalam PHP ada tiga macam pengulangan, yaitu :
a. For
For digunakan untuk mengulang suatu perintah dengan jumlah pengulangan yang telah diketahui.
Untuk penulisannya adalah :
for (nilai awal, nilai akhir, peningkatan/penurunan)
{
Pernyataan yang dijalankan;
}
<?
$awal = 1;
$akhir = 10;

for ($i = $awal; $i<=10; $i++){
echo “<h3>data ke $i<br></h3>”;
}
?>

b. While
Perulangan while digunakan untuk mengulangi sebuah perintah hingga jumlah yang ditentukan. Untuk menghentikan perulangan tersebut dibutuhkan suatu kondisi atau syarat tertentu. Seperti pada perintah if … else, nilai kondisi dari while memiliki nilai akhir yang bernilai salah atau benar dimana perulangan akan terus berlangsung selama kondisi bernilai benar dan akan berhenti apabila kondisi bernilai salah.
Standar penulisannya adalah :

while (kondisi berhenti)
{
Pernyataan yang dijalankan;
}
<?
$count = 1;
while ($count <= 10)
{
echo “$count “;
$count += 2;
}
?>

c. Do-While
Pengulangan ini fungsinya hampir sama dengan fungsi dari perintah while namun yang membedakannya adalah perulangan ini akan dilakukan terlebih dahulu dan baru akan berhenti apabila telah mencapai pada suatu kondisi untuk berhenti.
Untuk standar penulisannya dalah :

do
{
Pernyataan yang dijalankan;
}
while (kondisi berhenti);
<?
$i = 1;
do {
echo “$i “;
$i++;
}
while ($i <= 10);
?>
Laporan Programming Language Concept

Pertemuan : 7 (Subprograms)

Subprogram
Subprogram merupakan program bagian dengan blok terpisah dan didalam program utama, dan akan dipanggil pada program utama jika subprogram itu diperlukan untuk dijalankan.
Terdiri dari :
– Procedure
Suatu program yang terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian)

– Function
Fungsi secara garis besar sama dengan prosedure baik parameter maupun pemanggilan parameternya hanya yang membedakannya adalah nama fungsi harus dideklarasikan dengan type datanya

Procedure digunakan untuk subprogram yang nilai outputnya boleh ada ataupun tidak ada tetapi untuk Function nilai inputnya dan outputnya ada dan dapat dipanggil langsung seperti sebuah variabel sehingga untuk function harus langsung dideklarasikan tipe datanya.

Laporan Programming Language Concept

Pertemuan : 8 (Abstract Data Type)

Abstract Data Type
Pengertian dari ADT adalah Abstract Data Type sekumpulan operasi dasar atas type tersebut. selain itu, dalam sebuah ADT yang lengkap, disertakan pula definisi invarian dari TYPE dan aksioma yang berlaku.
ADT merupakan definisi STATIK. Definisi type dari sebuah ADT dapat mengandung sebuah definisi ADT lain. Jadi fungsi dari ADT kita bisa mendefinisikan sebuah Type Data Sesuai Keinginan Kita. Misalnya kita membuat Type Data Buah-buahan yang terdiri dari macam buah.

This package implements a set of abstract data types as pure PHP classes. It provides many classes that implement algorithms or act as containers to manage sets of values. Currently it implements the following data types :
– Restrictions (An OOP Typing Predicate)
– Graphs and vertex or edge nodes
– Stacks, Queues, Lists
– Tagged Union, Structure
– Map (Object Keys and Values)

Two basic abstract data types – stack and queue – which have their origins in everyday usage.

Stack
In common usage, a stack is a pile of objects which are typically arranged in layers – for example, a stack of books on your desk, or a stack of trays in the school cafeteria. In computer science parlance, a stack is a sequential collection with a particular property, in that, the last object placed on the stack, will be the first object removed. This property is commonly referred to as last in first out, or LIFO.

In abstract terms, a stack is a linear list of items in which all additions to (a “push”) and deletions from (a “pop”) the list are restricted to one end – defined as the “top” (of the stack). The basic operations which define a stack are:
• init – create the stack.
• push – add an item to the top of the stack.
• pop – remove the last item added to the top of the stack.
• top – look at the item on the top of the stack without removing it.
• isEmpty – return whether the stack contains no more items.

Queues
If you’ve ever been in a line at the supermarket checkout, then you’ll know that the first person in line gets served first. In computer terminology, a queue is another abstract data type, which operates on a first in first out basis, or FIFO. Inventory is also managed on a FIFO basis, particularly if such items are of a perishable nature.

The basic operations which define a queue are:
• init – create the queue.
• enqueue – add an item to the “end” (tail) of the queue.
• dequeue – remove an item from the “front” (head) of the queue.
• isEmpty – return whether the queue contains no more items.

Laporan Programming Language Concept

Pertemuan : 9 (Object-Oriented Programming)

Object-Oriented Programming
Pemrograman Berbasis Objek atau Object Oriented Programming (OOP) adalah sebuah tata cara pembuatan program (programming paradigm) dengan menggunakan konsep “objek” yang memiliki data (atribut yang menjelaskan tentang objek) dan prosedur (function) yang dikenal dengan method.
Dalam studi pemrograman, pembuatan program dalam PHP tanpa menggunakan objek disebut juga dengan pemrograman prosedural atau pemrograman fungsional. Dikenal dengan pemrograman prosedural, karena kita memecah kode program menjadi bagian-bagian atau fungsi-fungsi kecil, kemudian menyatukannya untuk menghasilkan nilai akhir.
Keempat ‘keyword’ inilah yang menjadi pondasi dasar dari Pemrograman Berbasis Objek, yaitu :
• Class
Class adalah ‘cetak biru’ atau ‘blueprint’ dari object. Class digunakan hanya untuk membuat kerangka dasar. Yang akan kita pakai nantinya adalah hasil cetakan dari class, yakni object.
Sebagai analogi, class bisa diibaratkan dengan laptop. Kita tahu bahwa laptop memiliki ciri-ciri seperti merk, memiliki keyboard, memiliki processor, dan beberapa ciri khas lain yang menyatakan sebuah benda tersebut adalah laptop.

Contoh :
<?php
class laptop {
// isi dari class laptop…
}
?>

• Object
Object atau Objek adalah hasil cetak dari class, atau hasil ‘konkrit’ dari class.
Jika menggunakan analogi class laptop, maka objek dari class laptop bisa berupa: laptop_andi, laptop_anto, laptop_duniailkom, dan lain-lain. Objek dari class laptop akan memiliki seluruh ciri-ciri laptop, yaitu property dan method-nya.

Contoh :
<?php
class laptop {
//… isi dari class laptop
}

$laptop_andi = new laptop();
$laptop_anto = new laptop();
?>

• Property
Property (atau disebut juga dengan atribut) adalah data yang terdapat dalam sebuah class.
Melanjutkan analogi tentang laptop, property dari laptop bisa berupa merk, warna, jenis processor, ukuran layar, dan lain-lain.

Contoh :
<?php
class laptop {
var $pemilik;
var $merk;
var $ukuran_layar;
// lanjutan isi dari class laptop…
}
?>

• Method
Method adalah tindakan yang bisa dilakukan didalam class.
Jika menggunakan analogi class laptop kita, maka contoh method adalah : menghidupkan laptop, mematikan laptop, mengganti cover laptop, dan berbagai tindakan lain.

Contoh :
<?php
class laptop {
function hidupkan_laptop() {
//… isi dari method hidupkan_laptop
}

function matikan_laptop() {
//… isi dari method matikan_laptop
}

… //isi dari class laptop
}
?>
Laporan Programming Language Concept

Pertemuan : 10 (Concurrency)

Concurrency
Concurrency adalah kondisi dimana dua pekerjaan dilakukan bersamaan dalam satu proses. Concurrency dapat diselesaikan dengan Synchronization.
Jenis Concurrency :
a. Physical, CPU/hardware, jika ada lebih dari 2 instruksi
b. Logical, 1 proses 2 instruksi dijalankan sedikit demi sedikit

Level Concurrency :
a. Machine instruction, terjadi pada bahasa mesin
b. High level language statement, terjadi pada bahasa pemrograman
c. Unit / Subprogram, terjadi pada subprogram
d. Program, terjadi pada program (multitask)

Tasks :
a. Heavyweight  masing-masing mempunyai address
b. Lightweight  mempunyai satu address
c. Disjoint  tidak terjadi communication

Critical Region adalah melarang 2 pekerjaan dilakukan bersamaan
Jenis Critical Region :
a. Mutual exclusion, 1 proses menunggu/tidak interrupt
b. Continuously progress, 1 proses ga boleh di stop
c. Bounded waiting, 1 proses mencapai limit, stop proses
d. Parallel somputing, masing-masing di waktu yang sama
e. Concurrency, dikerjakan 2 pekerjaan sekaligus dalam 1 proses

Synchronization :
a. Cooperation = jika suatu pekerjaan belum selesai, pekerjaan lainnya tidak bisa dikerjakan
b. Competition = hasil suatu pekerjaan tertimpa oleh pekerjan lain yang keduanya dilakukan bersamaan

Task Execution States : New >> Ready >> Running >> Blocked >> Dead

Race Condition :
a. Competition & Cooperation
b. Controlling Task Schedule
c. Application Influence Task Scheduling
d. Task Start & End Execution

Liveness adalah program yang diyakini selesai dengan baik

Deadlock adalah program yang diyakini tidak bisa bekerja dengan baik

Metode Providing Sync :
a. Semaphore  cooperation – competition
b. Monitors  program yang mengawasi program utama
c. Message passing  communication
Laporan Programming Language Concept

Pertemuan : 11 (Exception Handling and Event Handling)

Exception Handling
Exception merupakan kondisi pengecualian pada program. Exception akan mengubah alur program ke mode normal jika terjadi error. Dengan kata lain, exception mengabaikan error yang terjadi dan mengerjakan proses tertentu saat exception tertangkap. Untuk menggunakan exception dilakukan dengan perintah try dan catch. Perintah try berisi kode-kode yang berisi pengecualian program dan perintah catch berfungsi menangkap kode kode yang dikirim oleh pengecualian pada try. Proses pengiriman kode exception ini biasa disebut dengan throw (melempar).

Ketika exception terjadi karena dipicu oleh error, status kode program akan aman karena eksekusi program akan dialihkan ke kode program penanganan exception (exception handler). Jadi pada kondisi ini exception handler akan meresume eksekusi dari status kode yang tersimpan lalu menghentikan eksekusi script dan melanjutkannya dengan kode pada lokasi lain didalam program.
function new_function($variable) {
if_condition(condition){
throw new Exception(“Message”);
} return true;
}

try {
new_function(value);
non_error_statement…;
}

catch(Exception $e) {
error_message…;
}
Event Handling
The way how events are raised and how listeners are attached on the events is a part of a core in many modern applications. It plays an important role in some enterprise design patterns (MVC, for example). This article intoduces the basics of the event model and describes sample implementation of the event systems, suitable for PHP.
The basic event terminology includes the following terms:
• Publisher or provider or source – an object that fires the event.
• Event object – a set of data that represents fired event and which is sent to event subscribers by the publisher.
• Subscriber or listener or consumer or handler or callback – An object that is being notified or informed when the publisher fires an event.
• Firing or trigging or notifying – A process of notifying subscribers by the publisher about the event.
• Attaching/detaching or (un)subscribing or (un)registering – a process of binding/unbinding event subscribers with the publisher, so that they could be notified about the particular event when it is fired.
The most common way of the event-driven object collaboration is the following:
• There is a host object that fires an event. This object contains the list of event consumers, which are registered as event callbacks. The event callbacks may be either functions or methods.
• Under some conditions (database reading started or completed, user clicks on a button), host object prepares an event data (creates an event object) and executes all callbacks, which are registered as event consumers. In other words, which are in the corresponding array-like structures.
The class in the following code fragment shows a basic PHP callback usage for notifying consumers about the event.
class MyEventSource {

protected $_eventCallbacks = array();

function registerEventCallback($callback) {
$this->_callbacks[] = $callback;
}

function fireEvent() {
foreach ($this->_callbacks as $callback) {
call_user_func($callback);
}
}
}

$source = new MyEventSource();
foreach (range(1, 5) as $i) {
$source->registerEventCallback(‘myFunction’);
}
// will execute myFunction 5 times
$source->fireEvent();

When defining a new class event, the following conventions should be followed:
• Define protected or private $Callbacks array.
• Define protected or public registerCallback method.
• Define fire method.

Laporan Programming Language Concept

Pertemuan : 12 (Functional Programming Language)

Functional Programming Language
PHP supports first-class functions, meaning that a function can be assigned to a variable. Both user-defined and built-in functions can be referenced by a variable and invoked dynamically. Functions can be passed as arguments to other functions and a function can return other functions a feature called higher-order functions). Recursion, a feature that allows a function to call itself, is supported by the language, but most of the PHP code focus is on iteration. Anonymous functions (with support for closures) have been present since PHP 5.3 (2009).
PHP 5.4 added the ability to bind closures to an object’s scope and also improved support for callables such that they can be used interchangeably with anonymous functions in almost all cases. The most common usage of higher-order functions is when implementing a strategy pattern. The built-in array_filter() function asks both for the input array (data) and a function (a strategy or a callback) used as a filter function on each array item.
<?php
$input = array(1, 2, 3, 4, 5, 6);

// Creates a new anonymous function and assigns it to a variable
$filter_even = function($item) {
return ($item % 2) == 0;
};
// Built-in array_filter accepts both the data and the function
$output = array_filter($input, $filter_even);
// The function doesn’t need to be assigned to a variable. This is valid too:
$output = array_filter($input, function($item) {
return ($item % 2) == 0;
});
print_r($output);

Laporan Programming Language Concept

Pertemuan : 13 (Logic Programming Language)

Logic Programming Language
Logic programming is a type of programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, Answer set programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses:
H :- B1, …, Bn.
and are read declaratively as logical implications:
H if B1 and … and Bn.
H is called the head of the rule and B1, …, Bn is called the body. Facts are rules that have no body, and are written in the simplified form:
H.
In the simplest case in which H, B1, …, Bn are all atomic formulae, these clauses are called definite clauses or Horn clauses. However, there exist many extensions of this simple case, the most important one being the case in which conditions in the body of a clause can also be negations of atomic formulae. Logic programming languages that include this extension have the knowledge representation capabilities of a non-monotonic logic.
In ASP and Datalog, logic programs have only a declarative reading, and their execution is performed by means of a proof procedure or model generator whose behaviour is not meant to be under the control of the programmer. However, in the Prolog family of languages, logic programs also have a procedural interpretation as goal-reduction procedures:
to solve H, solve B1, and … and solve Bn.
Consider, for example, the following clause:
fallible(X) :- human(X).
based on an example used by Terry Winograd [1] to illustrate the programming language Planner. As a clause in a logic program, it can be used both as a procedure to test whether X is fallible by testing whether X is human, and as a procedure to find an X that is fallible by finding an X that is human. Even facts have a procedural interpretation. For example, the clause:
human(socrates).
can be used both as a procedure to show that socrates is human, and as a procedure to find an X that is human by “assigning” socrates to X.
The declarative reading of logic programs can be used by a programmer to verify their correctness. Moreover, logic-based program transformation techniques can also be used to transform logic programs into logically equivalent programs that are more efficient. In the Prolog family of logic programming languages, the programmer can also use the known problem-solving behaviour of the execution mechanism to improve the efficiency of programs.

Leave a Reply

Your email address will not be published. Required fields are marked *