Pada bahasa Assembly ataupun bahasa mesin, percabangan maupun perulangan
adalah gabungan perbandingan(cmp / compare) dan lompatan bersyarat(jne,
je, jg, jl, jge, jle) ke suatu bagian dari program. Jika lompatan
dilakukan ke depan maka akan terjadi percabangan. Jika lompatan ke
belakang maka akan terjadi perulangan. Lompatan bersyarat harus di awali
dengan perbandingan untuk mendapatkan hasil yang diinginkan.
Selain
lompatan bersyarat ada lompatan tanpa syarat ke suatu bagian pada
program yaitu jmp (jump), jump biasanya merupakan lanjutan dan
alternatif akhir dari suatu lompatan bersyarat. Dalam bahasa C atau C++
ada perintah yang sama dengan jmp yaitu "goto". "goto" adalah sebuah
statement yang mengarahkan pada sebuah label. Nama Label diakhiri dengan
":". Di bawah ini adalah contoh penggunaan sederhananya.
#include <stdio.h>
int main(){
goto labelku;
printf("terlewati");
labelku:
printf("Ada bagian yang tidak ditampilkan?\n");
return 0;
}
Kode program yang berikutnya berisi contoh penggunaan yang lebih rumit.#include <stdio.h>
int main(){
int data[10];
char ulangi;
printf("Goto 1 : \n");
labelku:
for(int i=1;i<=3;i++){
printf("Data %d : ", i);
scanf("%d", &data[i]);
}
for(int i=1;i<=3;i++)
printf("%d ", data[i]);
printf("\n");
salah:
printf("Ulangi lagi (y/t): ");
scanf("%c", &ulangi);
if(ulangi=='y'){
printf("lanjut!\n");
goto labelku;
}else if(ulangi=='t'){
printf("selesai!\n");
}else if(ulangi!='y'||ulangi!='t'){
printf("Ketikkan y atau t!\n");
goto salah;
}
return 0;
}