Konsep Bahasa Pemograman – BAB 5 – Expression dan Assignment

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.

5

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 :

6

  • 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 :

7

 

  • Assignment Statements: Unary Assignment Operators

8

  • Assignment as an Expression

Assignment statement dapat digunakan sebagai expression dan sebagai operand pada expression lainnya.

Contoh :

9

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 :

10

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

 

 

Leave a Reply

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