BAB 5
Expression and Assignment
Expression adalah hal dasar untuk menentukan komputasi dalam bahasa pemograman.Ini merupakan hal yang krusial bagi programmer untuk mengerti syntax,semantic dan ekspresi dari bahasa pemograman yang dipakai.Untuk mengerti evaluasi ekspresi,penting bagi programmer untuk mengenal aturan dari evaluasi operator dan operand. Aturan evaluasi ekspresi diatur oleh hukum asosiatif dan precedence.
Expression dibagi dalam 2 jenis yaitu aritmethic expression dan relational and Boolean expression.
1.Aritmethic Expression
Aritmethic Expression pada bahasa pemograman kebanyakan diambil dari konvensi yang terdapat dalam matematika.Ekspresi aritmatika terdiri dari operator,operand,parentheses,dan function call seperti contoh berikut :
$a = $a + 8;
Keterangan :
$a = operand
+ = operator
8 = operand
Operator dalam ekspresi aritmatika berupa:
Symbol | Functionality | Example |
+ | Addition | $x =$ y + 6; |
– | Subtraction | $y =$ x – 5; |
* | Multiply | $y = $y * 3; |
/ | Division | $z = $x/$y; |
% | Modulo | $A = 10 % 3; |
++ | Increment | $x++; |
— | Decrement | $z–; |
() | Scope / Priority | $x=(2+3)*5 |
Dalam penggunaannya ,operator dapat dimodifikasi cara penulisannya menjadi sebagai berikut :
Expression | Combined Operator |
$a =$a + $b; | $a += $b; |
$a = $a – $b; | $a-= $b; |
$a = $a *$ b; | $a *= $b; |
$a = $a /$b; | $a /= $b; |
$a = $a % $b; | $a %= $b; |
$a = $a ^ $b ; | $a ^= $b; |
Operator juga bisa dibagi 3 berdasarkan operandnya yaitu :
- Unary ,yaitu dimana operator hanya terdiri dari 1 operand.
Contoh : pengunaan increment dan decrement (i++ / ++i dan i– / –i)
- Binary, yaitu dimana operator terdiri dari 2 operand
Contoh : $a= $a + 2 ;
- Ternary yaitu dimana operator terdiri dari 3 operand
Contoh : $var == 42 ? $a : $b;
Precedence merupakan aturan prioritas yang menentukan tingkatan dari suatu operator aritmatika.Semakin tinggi tingkat suatu operator ,maka operator tersebut akan dikerjakan terlebih dahulu.Sedangkan,asosiatif adalah aturan prioritas yang memiliki precedence (urutan prioritas)yang sama .Berikut adalah urutan prioritas(precedence) dari ekspresi aritmatika pada bahasa pemograman PHP yang dibagi pada 4 bagian yaitu :
- Parentheses [ tanda kurung () ]
- Operator Unary
- *, /
- +,-
Urutan prioritas dapat dijabarkan lebih lengkap pada tabel urutan prioritas dan aturan asosiatif operator aritmatika pada bahasa PHP :
- Overloaded Operator
Penggunaan sebuah operator untuk lebih dari satu tujuan disebut operator overloaded. Contoh berbahaya dari overloading operator adalah ampersand (&) misal
x= &y;
dapat menyebabkan alamat dari y ditempatkan pada x. ada masalah dengan penggunaan multiple ampersand.
– Pertama penggunaan symbol yang sama untuk 2 operasi yang berbeda dapat
menyebabkan kerugian pada proses pembacaan.
-Kedua keying error sederhana dapat meninggalkan operand pertama untuk bitwise
dan operasi dapat bepergian tanpa diketahui oleh compiler, karena diinterpretasikan
sebagai address operator.
- Type Conversion
Tipe conversion bertipe narrowing atau widening.
- Conversion narrowing mengubah nilai ke tipe yang tidak dapat disimpan bahkan semua pendekatan dari tipe original. Sebagai contoh mengubah tipe data double menjadi float adalah narrowing conversion, karena range dari double lebih besar dari float.
- Widening conversion mengubah nilai ke tipe yang dapat dimasukkan ke pendekatan dari semua nilai tipe original. Sebagai contoh mengubah tipe data int menjadi float disebut widening conversion
Jenis-Jenis Tipe Konversi :
- Implicit TypeConversion atau Type Promotion adalah Type conversion yang terjadi secara otomatis tanpa sentuhan programmer.Umumnya ,tipe konversi ini menggunakan coercion dalam bentuk widening conversion .
Coercion adalah bentuk decision yang menentukan apakah operator boleh memiliki operand dari tipe yang berbeda.Nantinya,Coercion akan diinisialisasikan oleh compiler. Ketika 2 operand dari sebuah operator tidak memiliki tipe yang sama dan legal dalam sebuah bahasa pemrogaman, compiler harus memilih diantara nya untuk dipaksa. Namun,Coercion memiliki kelemahan dalam deteksi error dari sebuah program..
Uniknya,sebuah variabel dalam PHP dapat diisi oleh berbagai tipe data. Karena,nantinya PHP akan otomatis mengkonversinya tanpa diinstruksikan menggunakan fitur Type Juggling . Type Juggling adalah sebuah proses untuk menentukan jenis tipe data yang “cocok” dengan operasi saat itu, dan PHP akan menkonversinya secara langsung (implisit).
- Explicit Type Conversion adalah Konversi tipe yang dilakukan secara manual oleh sang programmer.
Untuk kasus-kasus di mana PHP mungkin tidak biasanya mengkonversi variabel, Anda memiliki pilihan untuk secara eksplisit memaksa bahasa untuk mencoba jenis konversi dengan menggunakan apa yang disebut tipe casting.
2.Relational and Boolean Expression
Relational Expression (Operator relasi / operator pembanding )adalah operator yang digunakan untuk melakukan suatu pembanding antara 2 ekspresi atau nilai untuk mendapatkan nilai true atau false.Bahkan relasi ekspresi juga dapat dipakai untuk beberapa pernyataan Boolean.Berikut adalah pengunaan relational expression pada bahasa pemograman PHP :
Operator | Name | Example | Result |
== | Equal | $x == $y | Returns true if $x is equal to $y |
=== | Identical | $x === $y | Returns true if $x is equal to $y, and they are of the same type |
!= | Not equal | $x != $y | Returns true if $x is not equal to $y |
<> | Not equal | $x <> $y | Returns true if $x is not equal to $y |
!== | Not identical | $x !== $y | Returns true if $x is not equal to $y, or they are not of the same type |
> | Greater than | $x > $y | Returns true if $x is greater than $y |
< | Less than | $x < $y | Returns true if $x is less than $y |
>= | Greater than or equal to | $x >= $y | Returns true if $x is greater than or equal to $y |
<= | Less than or equal to | $x <= $y | Returns true if $x is less than or equal to $y |
Contoh pengunaan operator relasi/pembanding pada PHP :
<?php
$x = 100;
$y = “100”;
var_dump($x == $y); // returns true because values are equal
?>
Boolean expressions adalah pemakaian operand Boolean dan Hasil yang berupa Boolean (true atau false). Boolean expressions terdiri dari variabel boolean, konstanta Boolean, ekspresi relasional, dan operator Boolean. Berikut adalah pengunaan boolean expression pada bahasa pemograman PHP :
Operator | Name | Example | Result |
and | And | $x and $y | True if both $x and $y are true |
or | Or | $x or $y | True if either $x or $y is true |
xor | Xor | $x xor $y | True if either $x or $y is true, but not both |
&& | And | f$x && $y | True if both $x and $y are true |
|| | Or | $x || $y | True if either $x or $y is true |
! | Not | !$x | True if $x is not true |
Contoh pengunaan operator boolean pada PHP :
<?php
$x = 100;
$y = 50;
if ($x == 100 or $y == 80)
{
echo “Hello world!”;
}
?>
3.Short Circuit Evaluation
Sebuah short-circuit evaluation dari ekspresi adalah satu di mana hasilnya dapat ditentukan tanpa perlu mengevaluasi semua operand dan / atau operator.
Sebagai contoh, x=(5 * a) * (b / 5 – 1)
Ketika a=0, tidak perlu untuk mengevaluasi (b / 5 – 1) atau melakukan perkalian kedua. karena 0 * x = 0 untuk setiap x.
PHP menjalankan operasi logika dengan prinsip short-circuit, yaitu jika dengan memeriksa satu perintah saja sudah didapati hasil logikanya, maka perintah lain tidak akan dijalankan dengan operator berikut
- && (and)
- || (or)
Contoh :
$hasil = $a AND $b AND $c AND $d;
Jika pada saat program dijalankan $a sudah bernilai FALSE, maka variabel $b, $c dan $d tidak akan diperiksa lagi, karena apapun nilai variabel tersebut, hasilnya akan tetap.
Hal ini akan berguna untuk kasus-kasus tertentu, seperti contoh berikut:
<?php
$result = fopen($filename) or exit();
?>
Fungsi exit() dalam kode PHP tersebut (yang akan membuat program PHP berhenti diproses) tidak akan dijalankan selama fopen($filename) bernilai true
4.Assignment Expression
Assignment statement adalah proses untuk menyimpan sebuah value dalam suatu lokasi yang di namai sebagai variable.Syntax umum ketika menggunakan assignment statement :
$<nama_variable> <operator> <data>
Contoh penggunaan assignment statement :
$b = 1;
Dimana ‘b’ sebagai <nama_variable>, ‘=‘ sebagai <operator> dan ‘1’ sebagai <data>
- Assignment Statements: Conditional Targets
Tipe assignment statement yang memiliki syarat atau kondisi tertentu
Contoh :
- Assignment Statements: Compound Assignment Operators
Suatu metode atau cara cepat untuk menentukan apa saja yang di butuhkan dalam sebuah assignment. Bentuk dari assignment ini dapat disingkat. Contoh :
- Assignment Statements: Unary Assignment Operators
- Assignment as an Expression
Assignment statement dapat digunakan sebagai expression dan sebagai operand pada expression lainnya.
Contoh :
4.Mixed-Mode Expression
Mixed Mode Assignment adalah assignment operator yang di mixed-mode (dapat dikonversi nilainya ke dalam jenis data yang berbeda).
Berdasarkan hasilnya,mixed mode dapat dibagi menjadi 2 jenis :
- Demotion ,adalah mixed mode assignment yang mengkonversikan nilai besar menjadi nilai yang lebih kecil
- Promotion (widening),adalah mixed mode assignment yang mengkonversikan nilai kecil menjadi nilai yang besar
Mixed mode assignment hanya terdapat pada bahasa pemograman PHP :
Mixed mode diperbolehkan.Sebagai contoh dalam pemakaian array pada PHP,jenis integer dan string dapat digabung secara bersamaan karena PHP tak dapat membedakan penamaan array yang menggunakan angka ( indexted array) dan penamaan array dengan huruf (associative array ).Contoh :
Dalam semua bahasa yang memungkinkan mixed-mode assignment, coercion berlangsung hanya setelah ekspresi sisi kanan telah dievaluasi. Sebagai contoh :
int a, b;
float c;
c = a / b;
Karena c adalah float, nilai-nilai a dan b bisa dipaksa untuk diubah ke dalam bentuk float sebelum perhitungan, yang nantinya bisa menghasilkan nilai yang berbeda untuk c daripada jika pemaksaan yang tertunda (misalnya, jika yang 2 dan b adalah 3).
Oleh Kelompok 12
Referensi
- http://php.net/manual/fa/language.operators.precedence.php
- https://books.google.co.id/books?id=Y9opn9g-weEC&pg=PA15&lpg=PA15&dq=tipe+konversi+eksplisit+dan+implisit+php&source=bl&ots=VY3Rbn0pgG&sig=_6jqTq6WgidzXTsU6atN_Bc2HzQ&hl=id&sa=X&ved=0ahUKEwjwnvG16efPAhXKtY8KHUiOABQQ6AEIIjAB#v=onepage&q=tipe%20konversi%20eksplisit%20dan%20implisit%20php&f=false
- http://arcana70.blogspot.co.id/2014/03/kbp-pert-5_23.html
- https://binusmaya.binus.ac.id/newStudent/#/class/resources.COMP6060/007420/1610/LEC/9239
- Robert W. Sebesta – Concept of Programming Languages (Tenth Edition), Chapter 7