Ketika kita mempelajari suatu bahasa pemrograman, kita akan menjumpai element-element yang pada dasarnya serupa antara satu bahasa dengan bahasa yang lain. Hal itu dikarenakan elementelement tersebut merupakan bagian dari tata bahasa pemrograman yang bersangkutan. Berikut adalah element-element pada bahasa pemrograman:
- Aturan Leksikal
- Tipe data
- Expression
- Statement
- Function dan Procedure
Kita akan membahas satu per satu element-element yang tersebut di atas.
1. Aturan Leksikal
Yang dimaksud aturan leksikal yaitu aturan yang digunakan dalam membentuk suatu deklarasi, definisi, maupun statement hingga menjadi satu program yang utuh. Aturan ini meliputi beberapa element antara lain:
- a. Token
- b. Komentar
- c. Identifier
- d. Keywords (Reserved Words)
- e. Operator
1.a. Token
Token yaitu element terkecil pada bahasa pemrograman yang memiliki arti penting bagi compiler. Yang termasuk token antara lain: identifier, keywords(reserved words), operator, dan sebagainya. Token yang satu dengan yang lain dipisahkan dengan satu atau lebih spasi, tab, baris baru, atau komentar.
1.b. Komentar
Komentar yaitu teks (kumpulan karakter) yang diabaikan oleh Compiler. Komentar sangat berguna untuk memberi catatan mengenai bagian program tertentu sebagai referensi baik bagi programmer itu sendiri maupun orang lain yang membaca kode program tersebut. Pada bahasa Pascal, teks yang berada di antara kurung kurawal pembuka {dan kurung kurawal tutup } akan dianggap sebagai komentar. Selain itu, dapat pula menggunakan tanda ( sebagai pembuka komentar, dan tanda ) sebagai penutup. Contoh:
Pada bahasa C, teks yang berada di antara tanda / dan tanda / akan dianggap sebagai komentar. Dan untuk teks yang ada setelah tanda // juga akan dianggap komentar satu baris. Berikut adalah contoh penggunaan komentar pada bahasa C:
1.c. Identifier
Identifier merupakan kumpulan karakter yang digunakan sebagai penanda untuk nama variable, nama tipe data, fungsi, prosedur, dan sebagainya. Aturan penulisan identifier pada bahasa Pascal dan bahasa C dapat dikatakan serupa. Yaitu: suatu identifier harus diawali oleh karakter non angka sebagai berikut:
_ a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Selanjutnya boleh menggunakan karakter angka ( 0 1 2 3 4 5 6 7 8 9 )
maupun karakter non angka tersebut di atas, namun tidak boleh menggunakan karakter khusus/spesial seperti + - * / ? ! { } [ ]
dan sebagainya. Berikut adalah contoh-contoh identifier yang benar maupun salah.
- _Nama = Benar
- No_Telpon = Benar
- Bilangan2 = Benar
- 4data = Salah, karena diawali oleh karakter angka: 4data
- Teks? = Salah, karena mengandung karakter khusus/special: Teks?
Tetapi sebagai catatan yang perlu diingat, identifier pada bahasa Pascal bersifat case insensitive (huruf besar dan huruf kecil dianggap sama), sedangkan pada bahasa C, identifier bersifat case sensitive (huruf besar dan huruf kecil dibedakan). Sebagai contoh, identifier No_Telpon dan no_telpon pada bahasa Pascal dianggap sama, sedangkan pada bahasa C, dianggap sebagai dua identifier yang berbeda.
1.d. Keywords (Reserved Words)
Keywords atau Reserved words merupakan kata-kata yang telah ada/didefinisikan oleh bahasa pemrograman yang bersangkutan. Kata-kata tersebut telah memiliki definisi yang sudah tetap dan tidak dapat diubah. Karena telah memiliki definisi tertentu, maka kata-kata ini tidak dapat digunakan sebagai identifier.
Pada bahasa Pascal, yang termasuk reserved words antara lain:
Pada bahasa C, yang termasuk reserved words antara lain:
1.e. Operator
Operator digunakan untuk menyatakan suatu perhitungan/operasi. Operator yang digunakan untuk operasi yang melibatkan satu operand disebut unary operator. Jika melibatkan dua operand maka disebut binary operator, dan jika melibatkan tiga operand, operator tersebut disebut ternary operator. Di dalam suatu operasi dapat terdapat banyak operator. Urutan eksekusi dari operator-operator disebut juga operator precedence. Precedence yang lebih rendah akan dieksekusi belakangan, misalnya:
A = 10 + 5 * 2
Karena precedence operator * lebih tinggi daripada operator + maka nilai A adalah 20, diperoleh dari perkalian 5 dan 2, kemudian dijumlahkan dengan 10. Untuk mendahulukan eksekusi precedence yang lebih rendah dapat digunakan tanda ( dan ) sebagai contoh:
A = (10 + 5) * 2
Variable A akan memiliki nilai 30, diperoleh dari penjumlahan 10 dan 5, kemudian dikalikan 2. Operator dapat dikategorikan menjadi beberapa jenis antara lain:
- Arithmetic Operator
- Assignment Operator
- Bitwise dan Logical Operator
- Relational Operator
- Pointer Operator
Berikut akan dibahas lima kelompok operator tersebut di atas. Sebagai catatan, masih terdapat operator-perator yang belum tercakup pada kelompok tersebut di atas. Yang dibahas di sini hanya bagian-bagian yang sangat umum.
1.e.1. Arithmetic Operator
Yang termasuk di dalam operator arithmetic yaitu operator yang digunakan untuk melakukan operasi aritmatika, seperti:
- penjumlahan: + (pada bahasa C, terdapat juga operator ++ sebagai prefix increment. Misalnya operasi: i++ atau ++i, akan melakukan increment nilai i sebesar 1)
- pengurangan: - (seperti penjumlahan, pada bahasa C, juga terdapat operator -- sebagai prefix decrement)
- perkalian: *
- pembagian: / (pada bahasa Pascal, terdapat juga operator div yang digunakan untuk melakukan pembagian bilangan bulat)
- mencari sisa pembagian: Pada bahasa Pascal adalah operator mod, sedangkan pada bahasa C menggunakan tanda % Operator-operator yang disebut di atas termasuk binary operator karena melibatkan dua operand. Terdapat pula operator unary, yaitu tanda -- dan + yang digunakan sebagai penanda bilangan negatif atau positif.
1.e.2. Assignment Operator
Operator ini digunakan untuk memberi nilai suatu identifier. Pada bahasa Pascal, digunakan tanda titik dua dan tanda sama dengan := untuk memberi nilai pada variable. Contoh:
C := A + B; atau C := 4;
Pada bahasa C, terdapat beberapa assignment operator yaitu:
- Tanda = memiliki fungsi yang sama dengan tanda := pada bahasa Pascal
- Tanda += digunakan untuk melakukan assignment penjumlahan, misalnya terdapat dua operasi sebagai berikut:
- C = 4;
- C += 3;
- Setelah baris pertama dieksekusi, maka C bernilai 4. Setelah baris kedua dieksekusi C memiliki nilai 7.
- Tanda -= digunakan untuk melakukan assignment pengurangan. Cara penggunaannya sama seperti contoh penggunaan tanda += di atas.
- Tanda <<= merupakan left shift assignment, digunakan untuk menggeser bit ke kiri.
- Tanda >>= merupakan right shift assignment, digunakan untuk menggeser bit ke kanan.
1.e.3. Bitwise dan Logical Operator
Operator ini digunakan untuk melakukan operasi bit dan logika. Yang termasuk di dalam operator ini antara lain:
Negasi
bahasa Pascal : NOT contoh A := NOT B;
bahasa C : ! contoh A = !B;
And
bahasa Pascal : AND contoh A := A AND B;
bahasa C : && contoh A = A && B;
Or
bahasa Pascal : OR contoh A := B OR C;
bahasa C : || contoh A = B || C;
Shift Left
bahasa Pascal : shl contoh A := B shl C;
bahasa C : << contoh A = B << C;
Shift Right
bahasa Pascal : shr contoh A := B shr C;
bahasa C : >> contoh A = B >> C;
1.e.4. Relational Operator
Operator relasional digunakan untuk membandingkan nilai dua operand. Sebagai catatan, operand
yang dibandingkan harus memiliki tipe data yang sama, kecuali untuk bilangan bulat (bertipe
integer) dan bilangan pecahan (bertipe real atau float). Yang termasuk operator relasional yaitu:
- Penanda kesamaan = (Pada bahasa C, penanda kesamaan menggunakan dua tanda sama dengan, yaitu == )
- Penanda lebih besar >
- Penanda lebih besar atau sama dengan >=
- Penanda lebih kecil <
- Penanda lebih kecil atau sama dengan <=
- Penanda ketidaksamaan. Pada bahasa Pascal menggunakan tanda <> sedangkan pada bahasa C menggunakan tanda !=
1.e.5. Pointer Operator
Operator pointer digunakan untuk melakukan operasi pada operand yang berupa pointer. Pada bahasa Pascal, digunakan tanda ^ sebagai deference pointer. Sedangkan pada bahasa C, deference pointer menggunakan tanda asterisks *.