Beberapa hari ini ada sedikit masalah ketika mengkonversi program yang dibuat dengan M-file menjadi berbasis Graphic User Interface (GUI). Program tersebut mengkalkulasi secara serial beberapa lahan yang akan dioptimasi. Ketika tidak semua lahan dioptimasi, tentu saja ketika sampai ke lahan terakhir, program harus keluar dari proses kalkulasi dan merangkum hasilnya.
Instruksi GOTO
Untuk rekan yang pernah belajar bahasa pemrograman jadul (BASIC, Fortran, dan sejenisnya) pasti mengenal instruksi GOTO tersebut. Matlab tidak menyediakan instruksi tersebut, tetapi beberapa volunteer berhasil membuat fungsi goto() yang mengarahkan urutan program ke lokasi tertentu (berbasis nomor baris atau dalam bentuk string label). Silahkan kunjungi situsnya, dan jalankan beberapa sample programnya.
Example 22:
-
a = 0;
-
2-
-
goto([6,6,6,6,6,6,9])
-
return
-
5-
-
6- a = a + 1;
-
7- goto(‘End’)
-
8- return
-
9- msgbox(num2str(a))
-
10-
-
11- % LABEL End
Tampak instruksi goto mengarahkan ke baris perintah 6,6,6,6,6,6, dan terakhir 9. Perhatikan juga selain dengan baris instruksi, goto juga bisa mengarahkan ke label ‘End’ di akhir program. Instruksi goto di berbagai bahasa pemrograman sudah jarang dipakai dan sangat tidak disarankan untuk digunakan.
Break, Return, dan Continue
Tadinya lumayan lega setelah mengunduh fungsi goto(). Tetapi ternyata bermasalah ketika jalan di GUI, entah mengapa. Akhirnya, setelah sedikit mengutak-atik struktur program digunakanlah satu dari tiga fungsi penghentian proses, yaitu continue. Sebenarnya fungsi ini telah saya kenal lama, tetapi jarang dipakai. Namun ketika diterapkan di fungsi serial tersebut, tidak bisa karena bukan instruksi kalang/loop.
Ternyata jawabannya sederhana. Buat saja kalang dengan iterasi berjumlah satu. Ketika dijumpai kondisi tertentu, gunakan continue untuk keluar dari kalang tersebut. Misalnya dengan instruksi berikut.
-
JPLnew=JPLnew-1
-
if JPLnew == 0
-
continue
-
end
Misalnya saya ada 10 proses dan user hanya meminta 5 saja secara berurutan, maka tiap proses harus berkurang 1 dan ketika ditemui nilai nol, program harus loncat keluar 10 proses tersebut (hanya diminta lima). Agar keluar dari kalang, gunakan saja kalang dengan satu iterasi sebelum proses.
-
iteratian=1
-
JPLnew=JPL
-
for i=1:iteration
-
…….
Perhatikan perbedaan break, return dan continue dengan cara mengetik help break/return/continue pada command window. Sekian, semoga bermanfaat.