Menulis pseudocode seperti menulis kode: Ini tidak terlalu penting standar mana yang Anda ikuti, selama Anda (dan orang-orang yang menulis dengan Anda) benar-benar mengikuti beberapa standar.
Tetapi sebagai catatan, inilah standar istimewa yang saya gunakan dalam catatan kuliah, makalah penelitian, dan buku saya yang akan datang.
Gunakan sintaks imperatif standar untuk aliran kontrol dan akses memori - jika, sementara, untuk, kembali, array [indeks], fungsi (argumen). Tuliskan "else if".
- Tetapi gunakan field(record) sebagai ganti
record.field
ataurecord->field
Gunakan standar notasi matematika untuk matematika - Menulis bukan , sebuah mod b bukan , s ≤ t bukan , bukan , bukan , bukan , bukan , dll .xyx*y
amodba%b
s≤ts <= t
¬p!p
x−−√sqrt(x)
πPI
∞MAX_INT
Tetapi gunakan untuk penugasan, untuk menghindari masalah.x←y==
Tetapi hindari notasi (dan kodesemu!) Sepenuhnya jika bahasa Inggris lebih jelas.
- Secara simetris, hindari Bahasa Inggris jika notasi lebih jelas!
Minimalkan gula sintaksis - Tunjukkan struktur blok dengan indentasi yang konsisten (à la Python). Hapus kata kunci yang manis seperti "mulai / akhir" atau "do / od" atau "fi". Hapus nomor baris. Jangan tidak menekankan kata kunci seperti "untuk" atau "sementara" atau "jika" dengan menetapkan mereka dalam berbagai typeface
atau gaya . Pernah. Hanya saja, jangan.
Tetapi nama-nama algoritma konstanta dan konstanta dalam \ textsc {Small Caps}, nama variabel dalam huruf miring , dan string literal dalam sans serif.
Tetapi tambahkan sedikit ruang "bernapas" vertikal ( \\[0.5ex]
) di antara potongan kode yang bermakna.
Jangan menentukan detail yang tidak penting. Jika tidak masalah urutan apa yang Anda kunjungi simpul, cukup katakan "untuk semua simpul".
Sebagai contoh, berikut adalah formulasi rekursif dari algoritma spanning tree minimum Borůvka . Saya sebelumnya telah mendefinisikan sebagai grafik yang diperoleh dari dengan mengontrak semua tepi di set , dan Ratakan sebagai subrutin yang menghilangkan loop dan tepi paralel.G/LGL
Saya menggunakan algorithm
lingkungan LaTeX ringan saya sendiri untuk mengeset pseudocode. (Ini hanya tabbing
lingkungan di dalam \fbox
.) Berikut kode sumber saya untuk algoritma Borůvka:
\begin{algorithm}
\textul{$\textsc{Borůvka}(G)$:}\+
\\ if $G$ has no edges\+
\\ return $\varnothing$\-
\\[0.5ex]
$L \gets \varnothing$
\\ for each vertex $v$ of $G$\+
\\ add the lightest edge incident to $v$ to $L$\-
\\[0.5ex]
return $L \cup \textsc{Borůvka}(\textsc{Flatten}(G / L))$
\end{algorithm}