Loops/Continue: Difference between revisions

added RPL
(mark Scheme example broken)
(added RPL)
 
(33 intermediate revisions by 23 users not shown)
Line 1:
{{task|Iteration}}
[[Category:Loop modifiers]]
{{omit from|EasyLang|No continue statement}}
{{omit from|GUISS}}
{{omit from|M4}}
Line 35 ⟶ 36:
{{trans|Python}}
 
<langsyntaxhighlight lang="11l">L(i) 1..10
I i % 5 == 0
print(i)
L.continue
print(i, end' ‘, ’)</langsyntaxhighlight>
 
{{out}}
Line 48 ⟶ 49:
 
=={{header|360 Assembly}}==
<langsyntaxhighlight lang="360asm">* Loops/Continue 12/08/2015
LOOPCONT CSECT
USING LOOPCONT,R12
Line 79 ⟶ 80:
XDEC DS CL16
YREGS
END LOOPCONT</langsyntaxhighlight>
{{out}}
<pre> 1, 2, 3, 4, 5
Line 103 ⟶ 104:
forgo the null statement.
 
<langsyntaxhighlight lang="ada">with Ada.Text_IO;
use Ada.Text_IO;
 
Line 117 ⟶ 118:
<<Continue>> --Ada 2012 no longer requires a statement after the label
end loop;
end Loop_Continue;</langsyntaxhighlight>
 
'''N.''' This is a more true-to-Ada strategy for 'continue' comprising of an outer iteration loop and an inner labeled single-pass loop. This is a safer strategy than using goto which could be problematic when dealing with complex nested loops.
 
<langsyntaxhighlight lang="ada">with Ada.Text_IO;
use Ada.Text_IO;
 
Line 138 ⟶ 139:
end loop Print_Element;
end loop Print_All;
end Loop_Continue;</langsyntaxhighlight>
 
=={{header|Agena}}==
Agena doesn't have a continue statement, conditional statements can be used instead.
<langsyntaxhighlight lang="agena">for i to 10 do
write( i );
if i % 5 = 0
Line 148 ⟶ 149:
else write( ", " )
fi
od</langsyntaxhighlight>
 
=={{header|Aikido}}==
<langsyntaxhighlight lang="aikido">foreach i 1..10 {
print (i)
if ((i % 5) == 0) {
Line 158 ⟶ 159:
}
print (", ")
}</langsyntaxhighlight>
 
=={{header|ALGOL 60}}==
Line 182 ⟶ 183:
{{works with|ELLA ALGOL 68|Any (with appropriate job cards) - tested with release [http://sourceforge.net/projects/algol68/files/algol68toc/algol68toc-1.8.8d/algol68toc-1.8-8d.fc9.i386.rpm/download 1.8-8d]}}
[[ALGOL 68]] has no continue reserved word, nor does it need one. The continue reserved word is only syntactic sugar for operations that can be achieved without it as in the following example:
<langsyntaxhighlight lang="algol68">FOR i FROM 1 TO 10 DO
print ((i,
IF i MOD 5 = 0 THEN
Line 190 ⟶ 191:
FI
))
OD</langsyntaxhighlight>
{{Out}}
<pre>
Line 199 ⟶ 200:
=={{header|ALGOL W}}==
Algol W doesn't have a continue statement - conditional statements can be used instead.
<langsyntaxhighlight lang="algolw">begin
i_w := 1; s_w := 0; % set output format %
for i := 1 until 10 do begin
Line 207 ⟶ 208:
else writeon( ", " )
end for_i
end.</langsyntaxhighlight>
 
=={{header|AppleScript}}==
<syntaxhighlight lang="applescript">
<lang AppleScript>
set table to {return}
repeat with i from 1 to 10
Line 220 ⟶ 221:
end repeat
return table as string
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 231 ⟶ 232:
=={{header|Arturo}}==
 
<langsyntaxhighlight lang="rebol">loop 1..10 'i [
prints i
if 0 = i%5 [
Line 238 ⟶ 239:
]
prints ", "
]</langsyntaxhighlight>
 
{{out}}
Line 244 ⟶ 245:
<pre>1, 2, 3, 4, 5
6, 7, 8, 9, 10</pre>
 
=={{header|Asymptote}}==
Asymptote's control structures are similar to those in C/C++
<syntaxhighlight lang="asymptote">for(int i = 1; i <= 10; ++i) {
write(i, suffix=none);
if(i % 5 == 0) {
write("");
continue;
} else {
write(", ", suffix=none);
}
}</syntaxhighlight>
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight lang="autohotkey">Loop, 10 {
Delimiter := (A_Index = 5) || (A_Index = 10) ? "`n":", "
Index .= A_Index . Delimiter
}
MsgBox %Index%</langsyntaxhighlight>
 
=={{header|AWK}}==
<langsyntaxhighlight lang="awk">BEGIN {
for(i=1; i <= 10; i++) {
printf("%d", i)
Line 262 ⟶ 275:
printf(", ")
}
}</langsyntaxhighlight>
 
=={{header|BASIC}}==
 
==={{header|Applesoft BASIC}}===
<langsyntaxhighlight ApplesoftBasiclang="applesoftbasic"> 10 FOR I = 1 TO 10
20 PRINT I;
30 IF I - INT (I / 5) * 5 = 0 THEN PRINT : GOTO 50"CONTINUE
40 PRINT ", ";
50 NEXT</langsyntaxhighlight>
 
==={{header|BASIC256}}===
<langsyntaxhighlight BASIC256lang="basic256">for i = 1 to 10
print string(i);
if i mod 5 = 0 then
Line 283 ⟶ 296:
next
print
end</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
BBC BASIC doesn't have a 'continue' statement so the remainder of the loop must be made conditional.
<langsyntaxhighlight lang="bbcbasic"> FOR i% = 1 TO 10
PRINT ; i% ;
IF i% MOD 5 = 0 PRINT ELSE PRINT ", ";
NEXT</langsyntaxhighlight>
 
==={{header|Commodore BASIC}}===
Commodore BASIC also doesn't have a 'continue' statement. In this example, a GOTO statement is used to simulate 'CONTINUE'. However, Commodore BASIC doesn't have a modulo (remainder) operator, so value of I/5 is check against INT(I/5). If they are the same, the remainder is zero.
<langsyntaxhighlight lang="qbasic">10 FOR I = 1 to 10
20 PRINT I;
30 IF INT(I/5) = I/5 THEN PRINT : GOTO 50
40 PRINT ", ";
50 NEXT</langsyntaxhighlight>
 
==={{header|FreeBASIC}}===
<langsyntaxhighlight lang="freebasic">' FB 1.05.0 Win64
For i As Integer = 1 To 10
Print Str(i);
Line 312 ⟶ 325:
 
Print
Sleep</langsyntaxhighlight>
 
{{out}}
Line 321 ⟶ 334:
 
==={{header|IS-BASIC}}===
<langsyntaxhighlight ISlang="is-BASICbasic">100 FOR I=1 TO 10
110 PRINT STR$(I);
120 IF MOD(I,5)=0 THEN
Line 328 ⟶ 341:
150 PRINT ", ";
160 END IF
170 NEXT</langsyntaxhighlight>
 
==={{header|Liberty BASIC}}===
<syntaxhighlight lang="lb">
<lang lb>
for i =1 to 10
if i mod 5 <>0 then print i; ", "; else print i
next i
end
</syntaxhighlight>
</lang>
 
==={{header|PureBasic}}===
<langsyntaxhighlight lang="purebasic">OpenConsole()
 
For i.i = 1 To 10
Line 350 ⟶ 363:
Next
 
Repeat: Until Inkey() <> ""</langsyntaxhighlight>
 
==={{header|QB64}}===
<langsyntaxhighlight lang="qb64">Dim i As Integer
For i = 1 To 10
Print LTrim$(Str$(i));
Line 361 ⟶ 374:
End If
Print ", ";
Next</langsyntaxhighlight>
 
==={{header|Run BASIC}}===
{{works with|QBasic}}
<langsyntaxhighlight lang="runbasic">for i = 1 to 10
if i mod 5 <> 0 then print i;", "; else print i
next i</langsyntaxhighlight>
 
==={{header|Sinclair ZX81 BASIC}}===
This probably isn't the most idiomatic way to produce the specified output—but it does illustrate ZX81 BASIC's equivalent of <code>if <condition> continue</code>, which is <code>IF <condition> THEN NEXT <loop-control variable></code>.
<syntaxhighlight lang="text">10 FOR I=1 TO 10
20 PRINT I;
30 IF I/5=INT (I/5) THEN PRINT
40 IF I/5=INT (I/5) THEN NEXT I
50 PRINT ", ";
60 NEXT I</langsyntaxhighlight>
 
==={{header|TI-89 BASIC}}===
<langsyntaxhighlight lang="ti-89">count()
Prgm
""→s
Line 391 ⟶ 404:
s&", "→s
EndFor
EndPrgm</langsyntaxhighlight>
 
Ti-89 lacks support for multi-argument display command or controlling the print position so that one can print several data on the same line. The display command (Disp) only accepts one argument and prints it on a single line (causing a line a feed at the end, so that the next Disp command will print in the next line). The solution is appending data to a string (s), using the concatenator operator (&), by converting numbers to strings, and then printing the string at the end of the line.
 
==={{header|True BASIC}}===
<langsyntaxhighlight lang="basic">FOR i = 1 TO 10
PRINT STR$(i);
IF REMAINDER(i, 5) = 0 THEN
Line 405 ⟶ 418:
NEXT i
PRINT
END</langsyntaxhighlight>
 
==={{header|VB-DOS, PDS}}===
<syntaxhighlight lang="qbasic">
<lang QBASIC>
OPTION EXPLICIT
 
Line 418 ⟶ 431:
IF (i MOD 5) THEN PRINT ","; ELSE PRINT
NEXT i
END</langsyntaxhighlight>
 
==={{header|Visual Basic .NET}}===
<langsyntaxhighlight lang="vbnet">For i = 1 To 10
Console.Write(i)
If i Mod 5 = 0 Then
Line 428 ⟶ 441:
Console.Write(", ")
End If
Next</langsyntaxhighlight>
 
=={{header|bc}}==
Line 434 ⟶ 447:
 
{{works with|OpenBSD bc}}
<langsyntaxhighlight lang="bc">for (i = 1; i <= 10; i++) {
print i
if (i % 5) {
Line 442 ⟶ 455:
print "\n"
}
quit</langsyntaxhighlight>
 
=={{header|BCPL}}==
In BCPL, the <tt>continue</tt> statement is named <tt>loop</tt>.
 
<syntaxhighlight lang="bcpl">get "libhdr"
 
let start() be
for i = 1 to 10
$( writen(i)
if i rem 5 = 0
$( wrch('*N')
loop
$)
writes(", ")
$)</syntaxhighlight>
{{out}}
<pre>1, 2, 3, 4, 5
6, 7, 8, 9, 10</pre>
 
=={{header|Befunge}}==
Befunge outputs numbers with a space after them, so the formatting is slightly off in this version.
<syntaxhighlight lang="befunge">
<lang Befunge>
1>:56+\`#v_@
+v %5:.:<
Line 453 ⟶ 484:
>" ,",,v
^ <
</syntaxhighlight>
</lang>
 
This version outputs a 'backspace' ASCII character to try to correct the format, but it may or may not work depending on if the character is accounted for by the output
<syntaxhighlight lang="befunge">
<lang Befunge>
1>:56+\`#v_@
+v5:,8.:<
Line 463 ⟶ 494:
>" ,",v
^ ,<
</syntaxhighlight>
</lang>
 
=={{header|Bracmat}}==
Bracmat has no continue statement.
<langsyntaxhighlight lang="bracmat">( 0:?i
& whl
' ( 1+!i:~>10:?i
Line 477 ⟶ 508:
)
)
);</langsyntaxhighlight>
 
=={{header|C}}==
{{trans|C++}}
<langsyntaxhighlight lang="c">for(int i = 1;i <= 10; i++){
printf("%d", i);
if(i % 5 == 0){
Line 488 ⟶ 519:
}
printf(", ");
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
{{trans|Java}}
<langsyntaxhighlight lang="csharp">using System;
 
class Program {
Line 507 ⟶ 538:
}
}
}</langsyntaxhighlight>
 
=={{header|C++}}==
{{trans|Java}}
<langsyntaxhighlight lang="cpp">for(int i = 1;i <= 10; i++){
cout << i;
if(i % 5 == 0){
Line 518 ⟶ 549:
}
cout << ", ";
}</langsyntaxhighlight>
 
=={{header|C3}}==
{{trans|Java}}
<syntaxhighlight lang="c3">for (int i = 1; i <= 10; i++)
{
io::print(i);
if (i % 5 == 0)
{
io::printn();
continue;
}
io::print(", ");
}</syntaxhighlight>
 
=={{header|Chapel}}==
<langsyntaxhighlight lang="chapel">for i in 1..10 {
write(i);
if i % 5 == 0 then {
Line 528 ⟶ 572:
}
write(", ");
}</langsyntaxhighlight>
 
=={{header|Clipper}}==
Line 534 ⟶ 578:
 
Works as is with Harbour 3.0.0 (Rev. 16951)
<langsyntaxhighlight lang="visualfoxpro">FOR i := 1 TO 10
?? i
IF i % 5 == 0
Line 541 ⟶ 585:
ENDIF
?? ", "
NEXT</langsyntaxhighlight>
 
=={{header|Clojure}}==
Clojure doesn't have a continue keyword. It has a recur keyword, although I prefer to work with ranges in this case.
<langsyntaxhighlight lang="clojure">(doseq [n (range 1 11)]
(print n)
(if (zero? (rem n 5))
(println)
(print ", ")))</langsyntaxhighlight>
 
To address the task, however, here's an example loop/recur:
<langsyntaxhighlight lang="clojure">(loop [xs (range 1 11)]
(when-let [x (first xs)]
(print x)
Line 558 ⟶ 602:
(println)
(print ", "))
(recur (rest xs))))</langsyntaxhighlight>
 
=={{header|COBOL}}==
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. loop-continue.
 
Line 581 ⟶ 625:
 
GOBACK
.</langsyntaxhighlight>
 
Note: COBOL does have a <code>CONTINUE</code> verb, but this is a no-operation statement used in <code>IF</code> and <code>EVALUATE</code> statements.
Line 587 ⟶ 631:
=={{header|ColdFusion}}==
Remove the leading space from the line break tag.
<langsyntaxhighlight lang="cfm"><cfscript>
for( i = 1; i <= 10; i++ )
{
Line 598 ⟶ 642:
writeOutput( "," );
}
</cfscript></langsyntaxhighlight>
 
=={{header|Common Lisp}}==
Line 606 ⟶ 650:
The second uses the implicit <code>tagbody</code> and <code>go</code>.
The third is a do loop with conditionals outside of the output functions.
<langsyntaxhighlight lang="lisp">(do ((i 1 (1+ i)))
((> i 10))
(format t "~a~:[, ~;~%~]" i (zerop (mod i 5))))
Line 624 ⟶ 668:
(if (zerop (mod i 5))
(terpri)
(write-string ", ")))</langsyntaxhighlight>
 
These use the <code>loop</code> iteration form, which does not contain an implicit tagbody (though one could be explicitly included).
Line 630 ⟶ 674:
the second uses <code>block</code>/<code>return-from</code> to obtain the effect of skipping the rest of the code in the <code>block</code> which makes up the entire loop body.
 
<langsyntaxhighlight lang="lisp">(loop for i from 1 to 10
do (write i)
if (zerop (mod i 5))
Line 643 ⟶ 687:
(terpri)
(return-from continue))
(write-string ", ")))</langsyntaxhighlight>
 
=={{header|Cowgol}}==
<syntaxhighlight lang="cowgol">include "cowgol.coh";
 
var n: uint8 := 0;
while n < 10 loop
n := n + 1;
print_i8(n);
if n % 5 == 0 then
print_nl();
continue;
end if;
print(", ");
end loop;</syntaxhighlight>
{{out}}
<pre>1, 2, 3, 4, 5
6, 7, 8, 9, 10</pre>
 
=={{header|D}}==
<langsyntaxhighlight lang="d">import std.stdio;
 
void main() {
Line 657 ⟶ 718:
write(", ");
}
}</langsyntaxhighlight>
{{out}}
<pre>1, 2, 3, 4, 5
Line 663 ⟶ 724:
 
===Shorter version===
<syntaxhighlight lang="d">
<lang d>
import std.stdio;
 
Line 670 ⟶ 731:
foreach(i; 1..11) i % 5 ? writef("%s, ", i) : writeln(i);
}
</syntaxhighlight>
</lang>
 
=={{header|dc}}==
Line 680 ⟶ 741:
{{works with|OpenBSD dc}}
 
<langsyntaxhighlight lang="dc">1 si # i = 1
[2Q]sA # A = code to break loop
[[, ]P 1J]sB # B = code to print comma, continue loop
Line 691 ⟶ 752:
li 1 + si # i += 1
li 10!<C # continue loop if 10 >= i
]sC li 10!<C # enter loop if 10 >= i</langsyntaxhighlight>
 
This program uses <tt>J</tt> and <tt>M</tt> to force the next iteration of a loop.
Line 699 ⟶ 760:
=={{header|Delphi}}==
 
<langsyntaxhighlight Delphilang="delphi">program DoLoop(output);
var
i: integer;
Line 713 ⟶ 774:
write(', ');
end;
end.</langsyntaxhighlight>
 
{{Out}}
Line 723 ⟶ 784:
=={{header|DWScript}}==
 
<langsyntaxhighlight Delphilang="delphi">var i : Integer;
 
for i := 1 to 10 do begin
Line 732 ⟶ 793:
end;
Print(', ');
end;</langsyntaxhighlight>
 
=={{header|Dyalect}}==
Line 738 ⟶ 799:
{{trans|Swift}}
 
<langsyntaxhighlight Dyalectlang="dyalect">for i in 1..10 {
print(i, terminator: "")
if i % 5 == 0 {
Line 745 ⟶ 806:
}
print(", ", terminator: "")
}</langsyntaxhighlight>
 
{{out}}
Line 755 ⟶ 816:
 
===Direct Approach===
<langsyntaxhighlight lang="ela">open monad io
loop n =
Line 767 ⟶ 828:
| else = ", "
 
_ = loop 1 ::: IO</langsyntaxhighlight>
 
===Using list===
<langsyntaxhighlight lang="ela">open monad io
loop [] = return ()
Line 780 ⟶ 841:
| else = ", "
_ = loop [1..10] ::: IO</langsyntaxhighlight>
 
This version is more generic and can work for any given range of values.
 
=={{header|Elixir}}==
<langsyntaxhighlight lang="elixir">defmodule Loops do
def continue do
Enum.each(1..10, fn i ->
Line 794 ⟶ 855:
end
 
Loops.continue</langsyntaxhighlight>
 
{{out}}
<pre>
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|EMal}}==
<syntaxhighlight lang="emal">
for int i = 1; i <= 10; ++i
write(i)
if i % 5 == 0
writeLine()
continue
end
write(", ")
end
</syntaxhighlight>
{{out}}
<pre>
Line 803 ⟶ 881:
 
=={{header|Erlang}}==
<langsyntaxhighlight lang="erlang">%% Implemented by Arjun Sunel
-module(continue).
-export([main/0, for_loop/1]).
Line 824 ⟶ 902:
for_loop(N+1)
end.
</syntaxhighlight>
</lang>
{{out}}
<pre>1, 2, 3, 4, 5
Line 831 ⟶ 909:
 
=={{header|ERRE}}==
<syntaxhighlight lang="erre">
<lang ERRE>
FOR I=1 TO 10 DO
PRINT(I;CHR$(29);) ! printing a numeric value leaves a blank after it
Line 842 ⟶ 920:
END FOR
PRINT
</syntaxhighlight>
</lang>
 
=={{header|Euphoria}}==
{{works with|Euphoria|4.0.3, 4.0.0 or later}}
<langsyntaxhighlight lang="euphoria">include std\console.e --only for any_key to make running command window easier on windows
 
for i = 1 to 10 do
Line 856 ⟶ 934:
end if
end for
any_key()</langsyntaxhighlight>
Version without newline after 10 below.
<langsyntaxhighlight lang="euphoria">include std\console.e --only for any_key to make running command window easier on windows
 
for i = 1 to 10 do
Line 876 ⟶ 954:
end for
any_key()
</syntaxhighlight>
</lang>
 
=={{header|F Sharp|F#}}==
Line 882 ⟶ 960:
In any case, it is not needed to complete this task.
==={{trans|Ada}}===
<langsyntaxhighlight lang="fsharp">for i in 1 .. 10 do
printf "%d" i
if i % 5 = 0 then
printf "\n"
else
printf ", "</langsyntaxhighlight>
===Using [[Comma quibbling#The Function]]===
<langsyntaxhighlight lang="fsharp">
let fN g=quibble (Seq.initInfinite(fun n ->if (n+1)%5=0 || (n+1)=List.length g then "\n" else ", ")) g
fN [1] |> Seq.iter(fun(n,g)->printf "%d%s" n g)
Line 895 ⟶ 973:
fN [1..10] |> Seq.iter(fun(n,g)->printf "%d%s" n g)
fN [1..11] |> Seq.iter(fun(n,g)->printf "%d%s" n g)
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 910 ⟶ 988:
=={{header|Factor}}==
There is no built-in <code>continue</code> in Factor.
<langsyntaxhighlight lang="factor">1 10 [a,b] [
[ number>string write ]
[ 5 mod 0 = "\n" ", " ? write ] bi
] each</langsyntaxhighlight>
 
=={{header|Fantom}}==
Line 919 ⟶ 997:
While and for loops support <code>continue</code> to jump back to begin the next iteration of the loop.
 
<langsyntaxhighlight lang="fantom">
class LoopsContinue
{
Line 937 ⟶ 1,015:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Forth}}==
Although this code solves the task, there is no portable equivalent to "continue" for either DO-LOOPs or BEGIN loops.
<langsyntaxhighlight lang="forth">: main
11 1 do
i dup 1 r.
5 mod 0= if cr else [char] , emit space then
loop ;</langsyntaxhighlight>
 
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
<langsyntaxhighlight lang="fortran">do i = 1, 10
write(*, '(I0)', advance='no') i
if ( mod(i, 5) == 0 ) then
Line 956 ⟶ 1,034:
end if
write(*, '(A)', advance='no') ', '
end do</langsyntaxhighlight>
 
{{works with|Fortran|77 and later}}
<langsyntaxhighlight lang="fortran">C WARNING: This program is not valid ANSI FORTRAN 77 code. It uses
C one nonstandard character on the line labelled 5001. Many F77
C compilers should be okay with it, but it is *not* standard.
Line 1,025 ⟶ 1,103:
5001 FORMAT (I3, ',', $)
C5001 FORMAT (I3, ',', ADVANCE='NO')
END</langsyntaxhighlight>
 
===Relying instead upon the looping features of FORMAT===
For historical reasons, 6 is often the default unit number for standard output.
<syntaxhighlight lang="fortran">
<lang Fortran>
WRITE (6,1) (I,I = 1,10)
1 FORMAT (4(1X,I0,","),1X,I0)
END
</syntaxhighlight>
</lang>
Here the break and continuation comes through the workings of the FORMAT interpreter. The feature 4(etc) means four repetitions of the format items within the brackets, and as each datum from the WRITE statement arrives, it is aligned with the next format item that can receive a datum, the I-format specifier (here I0, which means an integer of only as many digits as are needed for the value) and until such a reciever is encountered, intervening format items are acted upon - 1X means "one space", and the quotes surround a text literal. Accordingly, the first datum generates a space, a one-digit value, and a comma, as does the second and so on. When the sixth datum is received, the end of the format statement has been reached, and the convention is to write the current line and start a new line of output, and further, go back in the FORMAT specification to the first-encountered open-bracket symbol (the rightmost) which in this case is not the beginning of the FORMAT statement but the one that has a repetition count of four in front of it, and, resume interpretation. When the last datum has been accepted, naturally, the line is printed.
 
Line 1,042 ⟶ 1,120:
 
This sort of scheme facilitates a compact way of printing a table with a heading, where the WRITE statement simply pours forth the data and relies on something like FORMAT("heading",/,(complex details for one line)) - thus printing the table line-by-line with only the first line having the heading, a saving on having a write and format statement pair for the heading and a second pair for the table body.
 
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">include "NSLog.incl"
 
long num
 
for num = 1 to 10
if ( num mod 5 )
NSLog(@"%ld, \b",num)
else
NSLog(@"%ld",num)
end if
next
 
HandleEvents</syntaxhighlight>
 
=={{header|Gambas}}==
'''[https://gambas-playground.proko.eu/?gist=bf629ae9a09ffa1f5ecc95b89854b14b Click this link to run this code]'''
<langsyntaxhighlight lang="gambas">Public Sub Main()
Dim siCount As Short
 
Line 1,054 ⟶ 1,147:
Next
 
End</langsyntaxhighlight>
Output:
<pre>
Line 1,062 ⟶ 1,155:
 
=={{header|GAP}}==
<langsyntaxhighlight lang="gap">for i in [1 .. 11] do
if RemInt(i, 5) = 0 then
Print(i, "\n");
Line 1,071 ⟶ 1,164:
 
# 1, 2, 3, 4, 5
# 6, 7, 8, 9, 10</langsyntaxhighlight>
 
=={{header|GDScript}}==
{{works with|Godot|4.0.1}}
{{trans|11l}}
 
<syntaxhighlight lang="gdscript">
extends MainLoop
 
 
func _process(_delta: float) -> bool:
for i in range(1,11):
if i % 5 == 0:
print(i)
continue
printraw(i, ", ")
 
return true # Exit
</syntaxhighlight>
 
 
=={{header|GML}}==
<langsyntaxhighlight GMLlang="gml">for(i = 1; i <= 10; i += 1)
{
show_message(string(i))
Line 1,080 ⟶ 1,192:
if(i <= 10)
continue
}</langsyntaxhighlight>
 
=={{header|Go}}==
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 1,096 ⟶ 1,208:
fmt.Printf(", ")
}
}</langsyntaxhighlight>
{{Out}}
<pre>
Line 1,104 ⟶ 1,216:
 
=={{header|Groovy}}==
<langsyntaxhighlight lang="groovy">for (i in 1..10) {
print i
if (i % 5 == 0) {
Line 1,111 ⟶ 1,223:
}
print ', '
}</langsyntaxhighlight>
 
=={{header|Haskell}}==
Line 1,117 ⟶ 1,229:
The below code uses a guard (| symbol) to compose functions differently for the two alternative output paths, instead of using continue like in an imperative language.
 
<langsyntaxhighlight lang="haskell">import Control.Monad (forM)
main = forM [1..10] out
where
out x | x `mod` 5 == 0 = print x
| otherwise = (putStr . (++", ") . show) x</langsyntaxhighlight>
 
=={{header|Haxe}}==
<langsyntaxhighlight lang="haxe">for (i in 1...11) {
Sys.print(i);
if (i % 5 == 0) {
Line 1,131 ⟶ 1,243:
}
Sys.print(', ');
}</langsyntaxhighlight>
 
=={{header|HicEst}}==
<langsyntaxhighlight lang="hicest">DO i = 1, 10
IF( MOD(i, 5) == 1 ) THEN
WRITE(Format="i3") i
Line 1,140 ⟶ 1,252:
WRITE(APPend, Format=" ',', i3 ") i
ENDIF
ENDDO </langsyntaxhighlight>
 
=={{header|Icon}} and {{header|Unicon}}==
The following code demonstrates the use of 'next' (the reserved word for 'continue'):
<langsyntaxhighlight Iconlang="icon">procedure main()
every writes(x := 1 to 10) do {
if x % 5 = 0 then {
Line 1,152 ⟶ 1,264:
writes(", ")
}
end</langsyntaxhighlight>
However, the output sequence can be written without 'next' and far more succinctly as:
<langsyntaxhighlight Iconlang="icon">every writes(x := 1 to 10, if x % 5 = 0 then "\n" else ", ")</langsyntaxhighlight>
 
=={{header|Io}}==
<langsyntaxhighlight lang="io">for(i,1,10,
write(i)
if(i%5 == 0, writeln() ; continue)
write(" ,")
)</langsyntaxhighlight>
 
=={{header|J}}==
Line 1,167 ⟶ 1,279:
For example, one could satisfy this task this way:
 
<langsyntaxhighlight lang="j">_2}."1'lq<, >'8!:2>:i.2 5</langsyntaxhighlight>
 
J does support loops for those times they can't be avoided
(just like many languages support gotos for those time they can't be avoided).
<langsyntaxhighlight lang="j">3 : 0 ] 10
z=.''
for_i. 1 + i.y do.
Line 1,185 ⟶ 1,297:
end.
i.0 0
)</langsyntaxhighlight>
 
Though it's rare to see J code like this.
 
=={{header|Jakt}}==
<syntaxhighlight lang="jakt">
fn main() {
for i in 1..11 {
if i % 5 == 0 {
println("{}", i)
continue
}
print("{}, ", i)
}
}
</syntaxhighlight>
 
=={{header|Java}}==
<langsyntaxhighlight lang="java">for(int i = 1;i <= 10; i++){
System.out.print(i);
if(i % 5 == 0){
Line 1,197 ⟶ 1,322:
}
System.out.print(", ");
}</langsyntaxhighlight>
 
=={{header|JavaScript}}==
Using the <code>print()</code> function from [[Rhino]] or [[SpiderMonkey]].
<langsyntaxhighlight lang="javascript">var output = "";
for (var i = 1; i <= 10; i++) {
output += i;
Line 1,210 ⟶ 1,335:
}
output += ", ";
}</langsyntaxhighlight>
 
 
Line 1,217 ⟶ 1,342:
For example:
 
<langsyntaxhighlight JavaScriptlang="javascript">function rng(n) {
return n ? rng(n - 1).concat(n) : [];
}
Line 1,227 ⟶ 1,352:
}, ''
)
);</langsyntaxhighlight>
 
Output:
<langsyntaxhighlight JavaScriptlang="javascript">1, 2, 3, 4, 5
6, 7, 8, 9, 10
</syntaxhighlight>
</lang>
 
=={{header|jq}}==
jq does not have a "continue" statement.
In jq 1.4, the simplest way to accomplish the given task is probably as follows:
<langsyntaxhighlight lang="jq">reduce range(1;11) as $i
(""; . + "\($i)" + (if $i % 5 == 0 then "\n" else ", " end))</langsyntaxhighlight>
 
=={{header|Jsish}}==
<langsyntaxhighlight lang="javascript">/* Loop/continue in jsish */
for (var i = 1; i <= 10; i++) {
printf("%d", i);
Line 1,249 ⟶ 1,374:
}
printf(", ");
}</langsyntaxhighlight>
 
{{out}}
Line 1,257 ⟶ 1,382:
 
=={{header|Julia}}==
<syntaxhighlight lang="julia">
<lang Julia>
for i in 1:10
print(i)
Line 1,266 ⟶ 1,391:
print(", ")
end
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,275 ⟶ 1,400:
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.1.2
 
fun main(args: Array<String>) {
Line 1,285 ⟶ 1,410:
print("$i, ")
}
}</langsyntaxhighlight>
 
{{out}}
Line 1,294 ⟶ 1,419:
 
=={{header|Lambdatalk}}==
<langsyntaxhighlight lang="scheme">
{def loops_continue
{lambda {:i}
Line 1,307 ⟶ 1,432:
-> 0, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10. (end of loop)
</syntaxhighlight>
</lang>
 
=={{header|Lang}}==
<syntaxhighlight lang="lang">
$i = 0
while($i < 10) {
$i += 1
if($i % 5 === 0) {
fn.println($i)
con.continue
}
fn.print($i\,\s)
}
</syntaxhighlight>
 
{{out}}
<pre>
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|langur}}==
<syntaxhighlight lang="langur">for .i of 10 {
{{works with|langur|0.8.1}}
<lang langur>for .i of 10 {
write .i
if .i div 5 { writeln(); next }
write ", "
}</langsyntaxhighlight>
 
=={{header|Lasso}}==
<langsyntaxhighlight Lassolang="lasso">loop(10) => {^
loop_count
loop_count % 5 ? ', ' | '\r'
loop_count < 100 ? loop_continue
'Hello, World!' // never gets executed
^}</langsyntaxhighlight>
 
=={{header|LDPL}}==
<syntaxhighlight lang="ldpl">data:
i is number
n is number
 
procedure:
for i from 1 to 11 step 1 do
display i
modulo i by 5 in n
if n is equal to 0 then
display lf
continue
end if
display ", "
repeat</syntaxhighlight>
<pre>
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|Lingo}}==
<langsyntaxhighlight lang="lingo">str = ""
repeat with i = 1 to 10
put i after str
Line 1,335 ⟶ 1,501:
put ", " after str
end repeat
put str</langsyntaxhighlight>
 
=={{header|Lisaac}}==
<langsyntaxhighlight Lisaaclang="lisaac">1.to 10 do { i : INTEGER;
i.print;
(i % 5 = 0).if { '\n'.print; } else { ','.print; };
};</langsyntaxhighlight>
 
=={{header|LiveCode}}==
<langsyntaxhighlight LiveCodelang="livecode">repeat with n = 1 to 10
put n
if n is 5 then put return
if n < 10 and n is not 5 then put ","
end repeat</langsyntaxhighlight>
 
=={{header|Lua}}==
<langsyntaxhighlight Lualang="lua">for i = 1, 10 do
io.write( i )
if i % 5 == 0 then
Line 1,358 ⟶ 1,524:
io.write( ", " )
end
end</langsyntaxhighlight>
or
<langsyntaxhighlight Lualang="lua">for i = 1, 10 do
io.write( i )
if i % 5 == 0 then
Line 1,368 ⟶ 1,534:
io.write( ", " )
::continue::
end</langsyntaxhighlight>
 
=={{header|M2000 Interpreter}}==
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Module Checkit {
\\ A For {} loop
Line 1,408 ⟶ 1,574:
}
Checkit
</syntaxhighlight>
</lang>
 
=={{header|Maple}}==
<langsyntaxhighlight Maplelang="maple">for i from 1 to 10 do
printf( "%d", i );
if irem( i, 5 ) = 0 then
Line 1,418 ⟶ 1,584:
end if;
printf( ", " )
end do:</langsyntaxhighlight>
 
This can also be done as follows, but without the use of "next".
<langsyntaxhighlight Maplelang="maple">for i to 10 do
printf( "%d%s", i, `if`( irem( i, 5 ) = 0, "\n", ", " ) )
end do:</langsyntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">tmp = "";
For[i = 1, i <= 10, i++,
tmp = tmp <> ToString[i];
Line 1,435 ⟶ 1,601:
];
];
Print[tmp]</langsyntaxhighlight>
 
=={{header|MATLAB}} / {{header|Octave}}==
Line 1,441 ⟶ 1,607:
Loops are considered slow in Matlab and Octave,
it is preferable to vectorize the code.
<langsyntaxhighlight Matlablang="matlab">disp([1:5; 6:10])</langsyntaxhighlight>
or
<langsyntaxhighlight Matlablang="matlab">disp(reshape([1:10],5,2)')</langsyntaxhighlight>
 
A non-vectorized version of the code is shown below in Octave
 
<langsyntaxhighlight Matlablang="matlab">for i = 1:10
printf(' %2d', i);
if ( mod(i, 5) == 0 )
Line 1,453 ⟶ 1,619:
continue
end
end</langsyntaxhighlight>
 
=={{header|Maxima}}==
<langsyntaxhighlight lang="maxima">/* There is no "continue" in Maxima, the easiest is using a "if" instead */
block(
[s: ""],
Line 1,468 ⟶ 1,634:
)
)
)$</langsyntaxhighlight>
Using sprint and newline
<syntaxhighlight lang="maxima">
for n:1 thru 10 do (
sprint(n),
if n=5 then newline())$
</syntaxhighlight>
 
=={{header|MAXScript}}==
<langsyntaxhighlight lang="maxscript">for i in 1 to 10 do
(
format "%" i
Line 1,480 ⟶ 1,652:
) continue
format ", "
)</langsyntaxhighlight>
<nowiki>Insert non-formatted text here</nowiki>
 
Line 1,487 ⟶ 1,659:
As the [[Loop/Continue#Ada|Ada solution]], we can complete the task just with conditional.
 
<langsyntaxhighlight lang="metafont">string s; s := "";
for i = 1 step 1 until 10:
if i mod 5 = 0:
Line 1,495 ⟶ 1,667:
fi; endfor
message s;
end</langsyntaxhighlight>
 
Since <tt>message</tt> append always a newline at the end,
Line 1,503 ⟶ 1,675:
'''Note''': <tt>mod</tt> is not a built in; like TeX, "bare Metafont" is rather primitive, and normally a set of basic macros is preloaded to make it more usable; in particular <tt>mod</tt> is defined as
 
<langsyntaxhighlight lang="metafont">primarydef x mod y = (x-y*floor(x/y)) enddef;</langsyntaxhighlight>
 
=={{header|Modula-3}}==
Line 1,513 ⟶ 1,685:
 
Module code and imports are omitted.
<langsyntaxhighlight lang="modula3">FOR i := 1 TO 10 DO
IO.PutInt(i);
IF i MOD 5 = 0 THEN
Line 1,520 ⟶ 1,692:
END;
IO.Put(", ");
END;</langsyntaxhighlight>
 
=={{header|MOO}}==
<langsyntaxhighlight lang="moo">s = "";
for i in [1..10]
s += tostr(i);
Line 1,532 ⟶ 1,704:
endif
s += ", ";
endfor</langsyntaxhighlight>
 
=={{header|Neko}}==
<syntaxhighlight lang="actionscript">/**
<lang ActionScript>/**
Loops/Continue in Neko
Tectonics:
Line 1,554 ⟶ 1,726:
}
$print(", ");
}</langsyntaxhighlight>
 
{{out}}
Line 1,564 ⟶ 1,736:
=={{header|Nemerle}}==
{{trans|C#}}
<langsyntaxhighlight Nemerlelang="nemerle">using System;
using System.Console;
using Nemerle.Imperative;
Line 1,579 ⟶ 1,751:
}
}
}</langsyntaxhighlight>
 
=={{header|NetRexx}}==
<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref savelog symbols nobinary
 
Line 1,598 ⟶ 1,770:
end i_
</syntaxhighlight>
</lang>
 
=={{header|NewLISP}}==
<langsyntaxhighlight NewLISPlang="newlisp">(for (i 1 10)
(print i)
(if (= 0 (% i 5))
(println)
(print ", ")))</langsyntaxhighlight>
 
=={{header|Nim}}==
{{trans|Python}}
<langsyntaxhighlight lang="nim">for i in 1..10:
if i mod 5 == 0:
echo i
continue
stdout.write i, ", "</langsyntaxhighlight>
 
=={{header|NS-HUBASIC}}==
<langsyntaxhighlight NSlang="ns-HUBASIChubasic">10 FOR I=1 TO 10
20 PRINT I;
30 IF I-I/5*5=0 THEN PRINT :GOTO 50"CONTINUE
40 PRINT ",";
50 NEXT</langsyntaxhighlight>
 
=={{header|Nu}}==
<syntaxhighlight lang="nu">
for i in 1..10 {
print -n $i
if $i mod 5 == 0 {
print ""
continue
}
print -n ", "
}
</syntaxhighlight>
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="objeck">class Continue {
function : Main(args : String[]) ~ Nil {
for(i := 1; i <= 10; i += 1;) {
Line 1,633 ⟶ 1,817:
};
}
}</langsyntaxhighlight>
 
=={{header|OCaml}}==
There is no continue statement for for loops in OCaml,
but it is possible to achieve the same effect with an exception.
<langsyntaxhighlight lang="ocaml"># for i = 1 to 10 do
try
print_int i;
Line 1,649 ⟶ 1,833:
1, 2, 3, 4, 5
6, 7, 8, 9, 10
- : unit = ()</langsyntaxhighlight>
Though even if the continue statement does not exist,
it is possible to add it with camlp4.
 
=={{header|Octave}}==
<langsyntaxhighlight lang="octave">v = "";
for i = 1:10
v = sprintf("%s%d", v, i);
Line 1,663 ⟶ 1,847:
endif
v = sprintf("%s, ", v);
endfor</langsyntaxhighlight>
 
=={{header|Oforth}}==
 
<langsyntaxhighlight Oforthlang="oforth">: loopCont
| i |
10 loop: i [
i dup print 5 mod ifZero: [ printcr continue ]
"," .
] ;</langsyntaxhighlight>
 
=={{header|Ol}}==
We use continuation to break the execution of the inner body.
<syntaxhighlight lang="scheme">
(let loop ((i 1))
(when (less? i 11)
(call/cc (lambda (continue)
(display i)
(when (zero? (mod i 5))
(print)
(continue #f))
(display ", ")))
(loop (+ i 1))))
</syntaxhighlight>
{{Out}}
<pre>
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|Oz}}==
By using the "continue" feature of the for-loop, we bind C to a nullary procedure which, when invoked, immediately goes on to the next iteration of the loop.
<langsyntaxhighlight lang="oz">for I in 1..10 continue:C do
{System.print I}
if I mod 5 == 0 then
Line 1,683 ⟶ 1,886:
end
{System.printInfo ", "}
end</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
<langsyntaxhighlight lang="parigp">for(n=1,10,
print1(n);
if(n%5 == 0, print();continue);
print1(", ")
)</langsyntaxhighlight>
 
=={{header|Pascal}}==
Line 1,696 ⟶ 1,899:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">foreach (1..10) {
print $_;
if ($_ % 5 == 0) {
Line 1,703 ⟶ 1,906:
}
print ', ';
}</langsyntaxhighlight>
 
It is also possible to use a goto statement
to jump over the iterative code section for a particular loop:
 
<langsyntaxhighlight lang="perl">foreach (1..10) {
print $_;
if ($_ % 5 == 0) {
Line 1,716 ⟶ 1,919:
print ', ';
MYLABEL:
}</langsyntaxhighlight>
 
=={{header|Phix}}==
{{libheader|Phix/basics}}
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">10</span> <span style="color: #008080;">do</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%d"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
Line 1,729 ⟶ 1,933:
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">", "</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</langsyntaxhighlight>-->
{{out}}
The following works just as well
<pre>
<!--<lang Phix>-->
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
The following works just as well, with identical output
<!--<syntaxhighlight lang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">10</span> <span style="color: #008080;">do</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%d"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
Line 1,740 ⟶ 1,950:
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</langsyntaxhighlight>-->
 
=={{header|PHP}}==
<langsyntaxhighlight lang="php">for ($i = 1; $i <= 10; $i++) {
echo $i;
if ($i % 5 == 0) {
Line 1,750 ⟶ 1,960:
}
echo ', ';
}</langsyntaxhighlight>
 
=={{header|Picat}}==
Picat doesn't have a continue statement. So I just use a conditional that ends the body of the predicate.
 
{{trans|Prolog}}
{{works with|Picat}}
<syntaxhighlight lang="picat">
main =>
foreach (I in 1..10)
printf("%d", I),
if (I mod 5 == 0) then
nl
else
printf(", ")
end,
end.
</syntaxhighlight>
{{out}}
<pre>
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|PicoLisp}}==
PicoLisp doesn't have an explicit 'continue' functionality.
It can always be emulated with a conditional expression.
<langsyntaxhighlight PicoLisplang="picolisp">(for I 10
(print I)
(if (=0 (% I 5))
(prinl)
(prin ", ") ) )</langsyntaxhighlight>
 
=={{header|Pike}}==
<langsyntaxhighlight lang="pike">int main(){
for(int i = 1; i <= 10; i++){
write(sprintf("%d",i));
Line 1,771 ⟶ 2,003:
write(", ");
}
}</langsyntaxhighlight>
 
=={{header|PL/I}}==
<langsyntaxhighlight lang="pli">loop:
do i = 1 to 10;
put edit (i) (f(3));
if mod(i,5) = 0 then do; put skip; iterate loop; end;
put edit (', ') (a);
end;</langsyntaxhighlight>
 
=={{header|Plain English}}==
In Plain English, continue is spelled <code>repeat</code> and is the only way to specify an end of a loop.
<langsyntaxhighlight lang="plainenglish">To run:
Start up.
Demonstrate continue.
Line 1,795 ⟶ 2,027:
If the counter is evenly divisible by 5, write "" on the console; repeat.
Write ", " on the console without advancing.
Repeat.</langsyntaxhighlight>
 
=={{header|Pop11}}==
<langsyntaxhighlight lang="pop11">lvars i;
for i from 1 to 10 do
printf(i, '%p');
Line 1,806 ⟶ 2,038:
endif;
printf(', ')
endfor;</langsyntaxhighlight>
 
=={{header|PowerShell}}==
{{trans|C}}
<langsyntaxhighlight lang="powershell">for ($i = 1; $i -le 10; $i++) {
Write-Host -NoNewline $i
if ($i % 5 -eq 0) {
Line 1,817 ⟶ 2,049:
}
Write-Host -NoNewline ", "
}</langsyntaxhighlight>
 
=={{header|Prolog}}==
Prolog doesn't have a continue statement. So I just use a conditional that ends the body of the predicate.
 
{{works with|GNU Prolog}}
{{works with|SWI Prolog}}
<syntaxhighlight lang="prolog">
:- initialization(main).
 
print_list(Min, Max) :-
Min < Max,
write(Min),
Min1 is Min + 1,
(
Min mod 5 =:= 0
-> nl
; write(',')
),
print_list(Min1, Max).
 
print_list(Max, Max) :-
write(Max),
nl.
 
main :-
print_list(1, 10).
</syntaxhighlight>
{{out}}
<pre>
1,2,3,4,5
6,7,8,9,10
</pre>
 
=={{header|Python}}==
<langsyntaxhighlight lang="python">for i in xrangerange(1, 11):
if i % 5 == 0:
print (i)
continue
print (i, ","end=', ')</langsyntaxhighlight>
 
=={{header|Quackery}}==
<langsyntaxhighlight lang="quackery">10 times
[ i^ 1+ dup echo
5 mod 0 = iff
cr done
say ", " ]</langsyntaxhighlight>
 
=={{header|R}}==
{{trans|C++}}
<langsyntaxhighlight Rlang="r">for(i in 1:10)
{
cat(i)
Line 1,844 ⟶ 2,108:
}
cat(", ")
}</langsyntaxhighlight>
 
=={{header|Racket}}==
Line 1,851 ⟶ 2,115:
but an explicit <tt>continue</tt> construct is rarely used:
 
<langsyntaxhighlight lang="racket">
#lang racket
 
Line 1,866 ⟶ 2,130:
(printf "~a~n" i)))
(printf "~a, " i))
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
Line 1,872 ⟶ 2,136:
{{trans|Perl}}
{{works with|Rakudo Star|2010.08}}
<syntaxhighlight lang="raku" perl6line>for 1 .. 10 {
.print;
if $_ %% 5 {
Line 1,879 ⟶ 2,143:
}
print ', ';
}</langsyntaxhighlight>
 
or without using a loop:
 
<syntaxhighlight lang="raku" perl6line>$_.join(", ").say for [1..5], [6..10];</langsyntaxhighlight>
 
=={{header|REBOL}}==
<langsyntaxhighlight REBOLlang="rebol">REBOL [
Title: "Loop/Continue"
URL: http://rosettacode.org/wiki/Loop/Continue
Line 1,905 ⟶ 2,169:
prin ", "
]
]</langsyntaxhighlight>
 
{{Out}}
Line 1,917 ⟶ 2,181:
 
=={{header|Red}}==
<langsyntaxhighlight Redlang="red">repeat i 10 [
prin i
if i = 10 [break]
Line 1,923 ⟶ 2,187:
]
1,2,3,4,5
6,7,8,9,10</langsyntaxhighlight>
 
=={{header|REXX}}==
===version 1===
(This program could be simpler by using a &nbsp; '''then/else''' &nbsp; construct, but an &nbsp; '''iterate''' &nbsp; was used to conform to the task.)
<langsyntaxhighlight lang="rexx">/*REXX program illustrates an example of a DO loop with an ITERATE (continue). */
 
do j=1 for 10 /*this is equivalent to: DO J=1 TO 10 */
Line 1,938 ⟶ 2,202:
say /*force REXX to display on next line. */
end /*j*/
/*stick a fork in it, we're all done. */</langsyntaxhighlight>
Program note: &nbsp; the comma (<big><b>,</b></big>) immediately after the &nbsp; '''charout''' &nbsp; BIF indicates to use the terminal output stream.
 
Line 1,948 ⟶ 2,212:
 
===version 2===
<langsyntaxhighlight lang="rexx">/*REXX program illustrates an example of a DO loop with an ITERATE (continue). */
$= /*nullify the variable used for display*/
do j=1 for 10 /*this is equivalent to: DO J=1 TO 10 */
Line 1,955 ⟶ 2,219:
if j==5 then $= /*start the display line over again. */
end /*j*/
/*stick a fork in it, we're all done. */</langsyntaxhighlight>
'''output''' &nbsp; is the same as the 1<sup>st</sup> REXX version. <br><br>
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
for i = 1 TO 10
see i
Line 1,968 ⟶ 2,232:
see ", "
next
</syntaxhighlight>
</lang>
 
=={{header|RPL}}==
You need an <code>IF..THEN..ELSE</code> structure to do that in RPL.
« ""
1 10 '''FOR''' j
j +
'''IF''' j 5 MOD '''THEN''' ", " + '''ELSE''' "" '''END'''
'''NEXT''' DROP
» '<span style="color:blue">TASK</span>' STO
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">for i in 1..10 do
print i
if i % 5 == 0 then
Line 1,978 ⟶ 2,251:
end
print ', '
end</langsyntaxhighlight>
The "for" look could be written like this:
<langsyntaxhighlight lang="ruby">(1..10).each do |i| ...
1.upto(10) do |i| ...
10.times do |n| i=n+1; ...</langsyntaxhighlight>
Without meeting the criteria (showing loop continuation), this task could be written as:
<langsyntaxhighlight lang="ruby">(1..10).each_slice(5){|ar| puts ar.join(", ")}</langsyntaxhighlight>
 
=={{header|Rust}}==
<langsyntaxhighlight lang="rust">fn main() {
for i in 1..=10 {
print!("{}", i);
Line 1,996 ⟶ 2,269:
print!(", ");
}
}</langsyntaxhighlight>
 
=={{header|Salmon}}==
<langsyntaxhighlight Salmonlang="salmon">iterate (x; [1...10])
{
print(x);
Line 2,008 ⟶ 2,281:
};
print(", ");
};</langsyntaxhighlight>
 
=={{header|Sather}}==
There's no <code>continue!</code> in Sather. The code solve the task without forcing a new iteration.
<langsyntaxhighlight lang="sather">class MAIN is
main is
i:INT;
Line 2,024 ⟶ 2,297:
end;
end;
end;</langsyntaxhighlight>
 
=={{header|Scala}}==
Line 2,031 ⟶ 2,304:
 
===The intuitive way===
<langsyntaxhighlight lang="scala">for (i <- 1 to 10) {
print(i)
if (i % 5 == 0) println() else print(", ")
}</langsyntaxhighlight>
 
===Functional solution===
Line 2,043 ⟶ 2,316:
#The map makes for both elements in the List a conversion to a comma separated String, yielding a List of two Strings.
#Both comma separated strings will be separated by an EOL
<langsyntaxhighlight lang="scala"> val a = (1 to 10 /*1.*/ ).toList.splitAt(5) //2.
println(List(a._1, a._2) /*3.*/ .map(_.mkString(", ") /*4.*/ ).mkString("\n") /*5.*/ )</langsyntaxhighlight>
 
=={{header|Scheme}}==
For R7RS Scheme. In this functional solution, there is no "continue". Instead, the "loop" function is directly called in the tail end (this is [[Recursion|Tail Recursion]]).
{{incorrect|Scheme|}}
<langsyntaxhighlight lang="scheme">(defineimport (loopscheme ibase)
(scheme write))
(if (> i 10) 'done
 
(begin
(define (loop-fn start end)
(display i)
(conddefine ((zero? (moduloloop i 5))
(newline)if (loop> (+i 1end) i)))#f
(else (display ", ")begin
(loop (+ 1display i)))))))</lang>
(cond ((zero? (modulo i 5))
(newline) (loop (+ 1 i)))
(else
(display ", ")
(loop (+ 1 i)))))))
(loop start))
 
(loop-fn 1 10)</syntaxhighlight>
 
=={{header|Scilab}}==
{{works with|Scilab|5.5.1}}
<syntaxhighlight lang="text">for i=1:10
printf("%2d ",i)
if modulo(i,5)~=0 then
Line 2,066 ⟶ 2,347:
end
printf("\n")
end </langsyntaxhighlight>
{{out}}
<pre> 1 , 2 , 3 , 4 , 5
Line 2,072 ⟶ 2,353:
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">for i in (1..10) {
print i
if (i %% 5) {
Line 2,079 ⟶ 2,360:
}
print ', '
}</langsyntaxhighlight>
 
=={{header|Simula}}==
{{works with|SIMULA-67}}
<langsyntaxhighlight lang="simula">! Loops/Continue - simula67 - 07/03/2017;
begin
integer i;
Line 2,095 ⟶ 2,376:
loop:
end
end</langsyntaxhighlight>
{{out}}
<pre>
Line 2,104 ⟶ 2,385:
=={{header|Smalltalk}}==
{{works with|Pharo}} {{works with|Smalltalk/X}} actually works with all dialects &sup1;
<syntaxhighlight lang="smalltalk">
<lang Smalltalk>
1 to: 10 do: [ :i |
[ :continue |
Line 2,115 ⟶ 2,396:
] valueWithExit.
]
</syntaxhighlight>
</lang>
&sup1; if valueWithExit is not present in the Block class, it can be added as:
<langsyntaxhighlight Smalltalklang="smalltalk">valueWithExit
^ self value:[^ nil]</langsyntaxhighlight>
 
=={{header|SNOBOL4}}==
 
SNOBOL4 has no looping statements or conditional statements. Indeed the only branching facilities it has are:
 
* Unconditional branch to label. <code>:(LABEL)</code>
* Branch to label on success. <code>:S(LABEL)</code>
* Branch to label on failure. <code>:F(LABEL)</code>
 
(The success/failure labels can both be in the branching clause.)
 
Despite this, any looping structure can be performed by careful use of these.
 
<syntaxhighlight lang="snobol4">
line =
i = 1
LOOP le(i, 10) :F(LOOP.END)
line = line i
eq(remdr(i, 5), 0) :S(LOOP.OUT)
line = line ', ' :(LOOP.INC)
LOOP.OUT OUTPUT = line
line =
LOOP.INC i = i + 1 :(LOOP)
LOOP.END OUTPUT = line
 
END
</syntaxhighlight>
 
{{Out}}
 
<pre>
$ snobol4 junk.sno
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|Spin}}==
Line 2,125 ⟶ 2,441:
{{works with|HomeSpun}}
{{works with|OpenSpin}}
<syntaxhighlight lang="spin">con
<lang Spin>con
_clkmode = xtal1 + pll16x
_clkfreq = 80_000_000
Line 2,144 ⟶ 2,460:
waitcnt(_clkfreq + cnt)
ser.stop
cogstop(0)</langsyntaxhighlight>
{{out}}
<pre>
Line 2,152 ⟶ 2,468:
 
=={{header|SPL}}==
<langsyntaxhighlight lang="spl">> n, 1..10
s += n
? n%5, s += ", "
Line 2,158 ⟶ 2,474:
#.output(s)
s = ""
<</langsyntaxhighlight>
{{out}}
<pre>
Line 2,168 ⟶ 2,484:
{{works with|Db2 LUW}} version 9.7 or higher.
With SQL PL:
<langsyntaxhighlight lang="sql pl">
--#SET TERMINATOR @
 
Line 2,186 ⟶ 2,502:
END WHILE Loop;
END @
</syntaxhighlight>
</lang>
Output:
<pre>
Line 2,201 ⟶ 2,517:
See '''[https://www.stata.com/help.cgi?continue continue]''' in Stata help. Notice that the _continue option of '''[https://www.stata.com/help.cgi?display display]''' has another purpose: it suppresses the automatic newline at the end of the display command.
 
<langsyntaxhighlight lang="stata">forvalues n=1/10 {
display `n' _continue
if mod(`n',5)==0 {
Line 2,208 ⟶ 2,524:
}
display ", " _continue
}</langsyntaxhighlight>
 
=={{header|Suneido}}==
<langsyntaxhighlight Suneidolang="suneido">ob = Object()
for (i = 1; i <= 10; ++i)
{
Line 2,221 ⟶ 2,537:
}
}
Print(ob.Join(','))</langsyntaxhighlight>
 
{{Out}}
<langsyntaxhighlight Suneidolang="suneido">1,2,3,4,5
6,7,8,9,10
ok</langsyntaxhighlight>
 
=={{header|Swift}}==
<langsyntaxhighlight lang="swift">for i in 1...10 {
print(i, terminator: "")
if i % 5 == 0 {
Line 2,236 ⟶ 2,552:
}
print(", ", terminator: "")
}</langsyntaxhighlight>
{{Out}}
<pre>
Line 2,244 ⟶ 2,560:
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">for {set i 1} {$i <= 10} {incr i} {
puts -nonewline $i
if {$i % 5 == 0} {
Line 2,251 ⟶ 2,567:
}
puts -nonewline ", "
}</langsyntaxhighlight>
 
=={{header|Transact-SQL}}==
 
<syntaxhighlight lang="transact-sql">
<lang Transact-SQL>
DECLARE @i INT = 0;
DECLARE @str VarChar(40) = '';
Line 2,270 ⟶ 2,586:
SET @str = @str +', ';
END;
</syntaxhighlight>
</lang>
 
=={{header|TUSCRIPT}}==
<langsyntaxhighlight lang="tuscript">
$$ MODE TUSCRIPT
numbers=""
Line 2,283 ⟶ 2,599:
numbers=""
ENDLOOP
</syntaxhighlight>
</lang>
{{Out}}
<pre>
Line 2,291 ⟶ 2,607:
 
=={{header|UNIX Shell}}==
<langsyntaxhighlight lang="bash">Z=1
while (( Z<=10 )); do
echo -e "$Z\c"
Line 2,300 ⟶ 2,616:
fi
(( Z++ ))
done</langsyntaxhighlight>
 
{{works with|Bash}}
<langsyntaxhighlight lang="bash">for ((i=1;i<=10;i++)); do
echo -n $i
if [ $((i%5)) -eq 0 ]; then
Line 2,310 ⟶ 2,626:
fi
echo -n ", "
done</langsyntaxhighlight>
 
=={{header|UnixPipes}}==
<langsyntaxhighlight lang="bash">yes \ | cat -n | head -n 10 | xargs -n 5 echo | tr ' ' ,</langsyntaxhighlight>
 
=={{header|Ursa}}==
{{trans|Python}}
<langsyntaxhighlight lang="ursa">decl int i
for (set i 1) (< i 11) (inc i)
if (= (mod i 5) 0)
Line 2,324 ⟶ 2,640:
end if
out i ", " console
end for</langsyntaxhighlight>
 
=={{header|Vala}}==
<langsyntaxhighlight lang="vala">for (int i = 1; i <= 10; i++) {
stdout.printf("%d", i);
if (i % 5 == 0) {
Line 2,334 ⟶ 2,650:
}
stdout.printf(", ");
}</langsyntaxhighlight>
 
=={{header|VBA}}==
<langsyntaxhighlight VBlang="vb">Public Sub LoopContinue()
Dim value As Integer
For value = 1 To 10
Line 2,348 ⟶ 2,664:
End If
Next value
End Sub</langsyntaxhighlight>
 
=={{header|Vedit macro language}}==
<langsyntaxhighlight lang="vedit">for (#1 = 1; #1 <= 10; #1++) {
Num_Type(#1, LEFT+NOCR)
if (#1 % 5 == 0) {
Line 2,358 ⟶ 2,674:
}
Message(", ")
}</langsyntaxhighlight>
 
=={{header|V (Vlang)}}==
<syntaxhighlight lang="v (vlang)">fn main() {
for i in 1..11 {
print(i)
if i%5==0{
println('')
continue
}
print(', ')
}
}</syntaxhighlight>
{{Out}}
<pre>
1, 2, 3, 4, 5
6, 7, 8, 9, 10
</pre>
 
=={{header|Wren}}==
From v0.4.0 Wren has a ''continue'' keyword which works in the expected fashion.
<langsyntaxhighlight ecmascriptlang="wren">for (i in 1..10) {
System.write(i)
if (i%5 == 0) {
Line 2,371 ⟶ 2,704:
}
 
System.print()</langsyntaxhighlight>
 
{{out}}
Line 2,386 ⟶ 2,719:
The way you implement continue in X86 Assembly is the same way as how you would create a loop:
you just implement a (conditional) jump to another line of code.
<langsyntaxhighlight lang="asm">
extern _printf
 
Line 2,474 ⟶ 2,807:
pop ebx
ret
</syntaxhighlight>
</lang>
{{Out}}
<pre>
Line 2,483 ⟶ 2,816:
=={{header|XBasic}}==
{{works with|Windows XBasic}}
<langsyntaxhighlight lang="xbasic">
PROGRAM "loopcontinue"
 
Line 2,499 ⟶ 2,832:
END FUNCTION
END PROGRAM
</syntaxhighlight>
</lang>
{{Out}}
<pre>
Line 2,511 ⟶ 2,844:
Only the first three characters of a command are required.
 
<langsyntaxhighlight XPL0lang="xpl0">code CrLf=9, IntOut=11, Text=12;
integer N;
for N:= 1 to 10 do
[IntOut(0, N); if remainder(N/5) \#0\ then Text(0, ", ") else CrLf(0)]</langsyntaxhighlight>
 
{{Out}}
Line 2,524 ⟶ 2,857:
 
=={{header|Yabasic}}==
<langsyntaxhighlight lang="yabasic">for i = 1 to 10
print str$(i);
if mod(i, 5) = 0 then
Line 2,533 ⟶ 2,866:
next
print
end</langsyntaxhighlight>
 
 
=={{header|zkl}}==
<langsyntaxhighlight lang="zkl">foreach n in ([1..10]){print(n); if(n%5==0){println(); continue;} print(", ")}
// or foreach n in ([1..10]){print(n,(n%5) and ", " or "\n")}</langsyntaxhighlight>
 
=={{header|Zig}}==
<syntaxhighlight lang="zig">const std = @import("std");
 
pub fn main() !void {
const stdout_wr = std.io.getStdOut().writer();
var i: i8 = 1;
while (i <= 10) : (i += 1) {
try stdout_wr.print("{d}", .{i});
if (i == 5) {
try stdout_wr.writeAll("\n");
continue;
}
try stdout_wr.writeAll(", ");
}
}</syntaxhighlight>
1,150

edits