Dalam sains komputer, gelung for ("bagi/untuk") ialah pernyataan aliran kawalan untuk menentukan iteraasi yang membenarkan kod dilaksanakan berulang kali. Pelbagai kata kunci digunakan untuk menentukan pernyataan ini: bahasa keturunan ALGOL menggunakan "for", manakala bahasa keturunan Fortran menggunakan "do". Selain itu, terdapat kemungkinan lain seperti COBOL yang menggunakan "PERFORM VARYING".

Carta aliran gelung for.

Gelung for mempunyai dua bahagian: pengepala yang menyatakan interasi, dan badan yang dilaksanakan sekali setiap iterasi. Pengepala sering mengisytiharkan pembilang gelung atau pemboleh ubah gelung eksplisit, yang membolehkan badan mengetahui interasi yang sedang dilaksanakan. Gelung for biasanya digunakan apabila bilangan iterasi diketahui sebelum memasuki gelung. Gelung for boleh dianggap sebagai singkatan untuk gelung while yang menambah dan menguji pemboleh ubah gelung.

FOR sunting

 
Ilustrasi gelung for, dari i=0 hingga i=2, menghasilkan data1=200

Pernyataan gelung for tersedia dalam kebanyakan bahasa pengaturcaraan imperatif. Walaupun mengabaikan perbezaan kecil dalam sintaks, terdapat banyak perbezaan dalam cara penyataan ini berfungsi dan tahap ekspresi yang disokongnya. Secara amnya, gelung for jatuh ke dalam salah satu daripada kategori berikut:

Gelung for tradisional sunting

Gelung for dalam bahasa seperti ALGOL, Simula, BASIC, Pascal, Modula, Oberon, Ada, Matlab, Ocaml, F# dan sebagainya memerlukan pemboleh ubah kawalan dengan nilai mula dan akhir, yang kelihatan seperti ini:

for i = first to last do statement
(* or just *)
for i = first..last do statement

Gelung for berasaskan iterator sunting

Jenis gelung for ini ialah generalisasi jenis julat berangka bagi gelung for, kerana ia membenarkan penghitungan set item selain daripada jujukan nombor. Ia biasanya dicirikan oleh penggunaan iterator tersirat atau eksplisit, di mana pemboleh ubah gelung mengambil setiap nilai dalam urutan atau pengumpulan data lain. Contoh perwakilan dalam Python ialah:

for item in some_iterable_object:
  do_something()
  do_something_else()

Di sini, some_iterable_object ialah sama ada pengumpulan data yang menyokong iterasi tersirat (seperti senarai nama pekerja), atau mungkin iterator itu sendiri. Sesetengah bahasa mempunyai jenis ini sebagai tambahan kepada satu lagi sintaks gelung; terutamanya, PHP mempunyai jenis gelung ini di bawah nama for each, serta gelung for tiga ekspresi (lihat di bawah) di bawah nama for.

Gelung for bervektor sunting

Sesetengah bahasa menawarkan gelung untuk yang bertindak seolah-olah memproses semua lelaran secara selari, seperti kata kunci for all dalam FORTRAN 95 yang mempunyai tafsiran bahawa semua ungkapan sebelah kanan dinilai sebelum sebarang tugasan dibuat, berbeza daripada bentuk iterasi eksplisit. Sebagai contoh, dalam pernyataan for dalam serpihan pseudokod berikut, apabila mengira nilai baharu untuk A(i), kecuali untuk yang pertama (dengan i = 2) rujukan kepada A(i - 1) akan memperoleh nilai baharu yang mempunyai telah diletakkan di sana pada langkah sebelumnya. Walau bagaimanapun, dalam for all versi, setiap pengiraan hanya merujuk kepada A asal yang tidak diubah. Perbezaannya mungkin ketara.

for     i := 2 : N - 1 do A(i) := [A(i - 1) + A(i) + A(i + 1)] / 3; next i;
for all i := 2 : N - 1 do A(i) := [A(i - 1) + A(i) + A(i + 1)] / 3;

Gelung for terkumpul sunting

Diperkenalkan dalam ALGOL 68 dan diikuti PL/I, gelung jenis ini membolehkan iterasi gelung digandingkan dengan ujian, sebagai contoh:

for i := 1 : N while A(i) > 0 do etc.

iaitu, nilai diberikan kepada pemboleh ubah gelung i dan hanya jika ungkapan sementara adalah benar, badan gelung akan dilaksanakan. Jika hasilnya palsu, pelaksanaan gelung for berhenti sebentar. Diberikan bahawa nilai pemboleh ubah gelung ditakrifkan selepas penamatan gelung, maka pernyataan di atas akan mencari elemen bukan positif pertama dalam tatasusunan A (dan jika tiada, nilainya ialah N + 1), atau, dengan variasi yang sesuai, aksara bukan kosong pertama dalam rentetan, dan seterusnya.

Pembilang gelung sunting

Dalam pengaturcaraan komputer, pembilang gelung ialah pemboleh ubah kawalan yang mengawal iterasi gelung (konstruk bahasa pengaturcaraan komputer). Ia dinamakan sedemikian kerana kebanyakan penggunaan binaan ini mengakibatkan pemboleh ubah mengambil julat nilai integer dalam beberapa jujukan teratur (contoh., bermula pada 0 dan berakhir pada 10, dengan tambahan nilai sebanyak 1 setiap kali iterasi).

Pembilang gelung berubah dengan setiap iterasi gelung, memberikan nilai unik untuk setiap lelaran individu. Pembilang gelung digunakan untuk memutuskan bila gelung patut ditamatkan dan untuk aliran atur cara meneruskan ke arahan seterusnya selepas gelung.

Tatanama penamaan pengecam lazim bagi pembilang gelung for menggunakan huruf pemboleh ubah i, j, dan k (dan seterusnya jika perlu), di mana i akan menjadi gelung paling luar, j bagi gelung dalaman, dsb. Urutan terbalik juga digunakan oleh sebilangan pengatur cara. Amalan ini bermula lebih awal dalam notasi matematik, di mana indeks bagi penjumlahah dan pendaraban selalunya diwakili i, j, dsb. Konvensyen alternatif ialah penggunaan huruf digandakan untuk indeks, seperti ii, jj dan kk, kerana ini membolehkan carian dan cari ganti yang lebih mudah daripada menggunakan satu huruf.[1]

Contoh sunting

Contoh kod C yang melibatkan gelung for bersarang yang menggunakan pemboleh ubah pembilang i dan j:

for (i = 0; i < 100; i++) {
  for (j = i; j < 10; j++) {
    some_function(i, j);
  }
}

Gelung for dalam C juga boleh digunakan untuk mencetak satu perkataan secara terbalik. Sebagai:

for (i = 0; i < 6; i++) {
  scanf("%c", &a[i]);
}
for (i = 4; i >= 0; i--) {
  printf("%c", a[i]);
}

Di sini, jika input ialah epal, outputnya ialah lape.

Rujukan sunting

  1. ^ http://www.knosof.co.uk/vulnerabilities/loopcntrl.pdf Analysis of loop control variables in C