Kode semu

**Kode semu** (bahasa Inggris: *pseudo-code*) merupakan deskripsi tingkat tinggi informal dan ringkas atas algoritme pemrograman komputer yang menggunakan konvensi struktural atas suatu bahasa pemrograman. Pembuatan kode semu ditujukan untuk dibaca oleh manusia dan bukan oleh mesin. Kode semu biasanya tidak menggunakan elemen detail yang tidak diperlukan untuk kebutuhan pemahaman manusia atas suatu algoritma, seperti deklarasi variabel, kode ataupun subrutin untuk sistem yang bersifat spesifik. Bahasa pemrograman yang digunakan lebih diperbanyak dengan deskripsi dalam bahasa natural atas sesuatu hal yang bersifat detail, atau dengan menggunakan notasi matematis. Tujuan dari penggunaan kode-semu adalah untuk mempermudah manusia dalam pemahaman dibandingkan menggunakan bahasa pemrograman yang umum digunakan, terlebih aspeknya yang ringkas serta tidak bergantung pada suatu sistem tertentu merupakan prinsip utama dalam suatu algoritma. Kode-semu umumnya digunakan dalam buku-buku ataupun publikasi karya ilmiah yang mendokumentasikan suatu algortima, dan juga dalam perencanaan pengembangan program komputer, untuk membuat sketsa atas struktur sebuah program sebelum program yang sesungguhnya ditulis.

Tidak ada satu pun standar yang berlaku atas kode-semu, sebuah program yang masih berupa kode-semu tidak dapat dijalankan. Kode-semu menyerupai pula kerangka program, termasuk *dummy code*, yang bisa dikompilasi tanpa kesalahan. Diagram alur dapat pula dimasukkan sebagai alternatif berbasis grafis sebuah kode-semu.

## Penggunaan
Buku-buku teks dan publikasi ilmiah yang membahas tentang ilmu komputer serta komputasi numerik sering menggunakan kode semu dalam mendeskripsikan suatu algoritma dengan tujuan agar programer dapat memahaminya meskipun mereka tidak memahami bahasa pemrograman yang digunakan. Dalam buku-buku teks biasanya disertakan pula pengantar yang membahas tentang notasi dan konvensi yang digunakan, termasuk di dalamnya notasi dan konvensi yang digunakan pada kode semu. Tingkat kejelasan secara lebih detail atas penggunaan suatu bahasa pemrograman kadang-kadang digunakan pula sebagai pendekatan — sebagai contoh, buku teks Donald Knuth "*The Art of Computer Programming*" menggunakan bahasa assembly untuk mikroprosesor yang sebenarnya tidak ada.

Seorang programer yang akan mengimplementasikan suatu algoritma yang bersifat spesifik, utamanya algoritma yang masih belum begitu dikenalinya, umumnya menggunakan kode semu sebagai penjelasan, kemudian ia akan dengan mudah "menerjemahkan" penjelasan tersebut ke dalam bahasa pemrograman dan mengubahsuai agar dapat berinteraksi secara benar dalam program secara keseluruhan. Programer dapat pula memulai sebuah proyek dengan membuat sketsa kode dengan menggunakan kode semu di atas kertas sebelum menulisnya dalam bahasa pemrograman yang sesungguhnya, sebagai mana dilakukan dalam pendekatan "top-down".

## Sintaksis
Kode semu umumnya tidak mengikuti aturan umum yang berlaku pada suatu bahasa pemrograman; dalam arti tidak ada suatu bentuk standar yang sistematik, namun meskipun penulis umumnya menggunakan tata cara ataupun sintaksis, contoh struktur kontrol, dari bahasa pemrograman umum yang digunakan. Umumnya sintaksis yang populer digunakan menggunakan sintaksis bahasa pemrograman Pascal, BASIC, C, C++, Java, Lisp, dan ALGOL.

Deklarasi variabel umumnya tidak digunakan, begitu pula halnya dengan blok kode yang sering kali digantikan dengan satu baris penjelasan dalam bahasa manusia (natural).

Bentuk serta corak dari kode semu bisa sangat beragam bergantung pada penulis dari masing-masing publikasi dan buku teks tersebut, dari yang model kode semu paling sederhana hingga sangat detail sehingga hampir serupa dengan bahasa pemrograman yang sesungguhnya.

### Contoh

```
<variable> = <expression>
if <condition>
    do stuff
else
    do other stuff
while <condition>
    do stuff
for <variable> from <first value> to <last value> by <step>
    do stuff with variable
function <function name>(<arguments>)
    do stuff with arguments
    return something
<function name>(<arguments>)    // Function call
```

  = 
 jika 
     lakukan sesuatu
 lain
     lakukan yang lain
 ketika 
     Lakukan sesuatu
 untuk  dari  ke  dengan 
     lakukan dengan variabel
 fungsi ()
     lakukan sesuatu dengan argumen
     hasilkan sesuatu
  = () //Pemanggilan fungsi dengan hasil ke variabel
 Atau
 () //Pemanggilan fungsi

## Pranala luar
*  A pseudocode standard
*  [Collected Algorithms of the [Association for Computing Machinery|ACM]]
*  Pseudocode Guidelines, PDF file.
*  Pseudocode Programming Process base on data from Code Complete book