Cyklus for používáme všude tam kde předem známe počet opakování příkazu. U těchto cyklů používáme proměnnou pro řízení počtu opakování, jejíž hodnotu lze výhodně využít i uvnitř těla cyklu.
N-krát opakuj provádění příkazu.
/* - pocitani vyskytu znaku 'a' v retezci
* - pro jiny znak nutne zmenit konstantu v asm ("cmpb $97, %%al;");
*/
#include <stdio.h> /* printf() */
#include <string.h> /* strlen() */
int main(int argc, char *argv[]) {
int sum = 0;
char *str ="aaacba";
int delka = strlen(str); /* pocet znaku v retezci */
asm (
" movl $0, %%ebx ; " /* ebx = 0 */
" movl %2, %%ecx ; " /* ecx = delka */
" jecxz ENDFOR ; " /* konec cyklu pri (ecx==0) */
" push %%ds; " /* ulozeni obsahu (ds) na zasobnik */
" ldsl %1, %%esi ; " /* nacteni retezce do (ds:esi) */
" pop %%ds; " /* obnoveni obsahu (ds) ze zasobniku */
"FOR: ; "
" lodsb ; " /* (al) = str[i] */
" cmpb $97, %%al ; " /* porovnani znaku $97=='a' s (al)*/
" jnz SKIP ; "
" incl %%ebx ; " /* zvyseni poctu vyskytu o 1 (al==97) */
"SKIP: ; "
" loop FOR ; "
"ENDFOR: ; "
" movl %%ebx, %0 ; " /* sum = ebx */
:"=r" (sum) /* vystup do sum */
:"m" (str), "r"(delka) /* vstup str,delka */
:"%ebx","%eax", "%esi", "%ecx" /* pouzite registry */
);
printf("vyskyt (a) v (%s) : %d", str, sum);
return 0;
}
{ prikaz for - soucet cislic retezce }
var
i : integer; {ridici promenna for}
sum : integer; {vysledny soucet}
s : string;
begin
s := '1250';
sum := 0;
{ord(s[0]) vraci delku retezce}
for i:= 1 to ord(s[0]) do
sum := sum + ord(s[i]) - 48;
writeln('soucet cislic retezce je : ',sum);
end.
// prikaz for
#include <stdio.h> //knihovna s funkci printf()
int main (int argc, char *argv[]) {
for(int i=1; i<=5; i++) {
if(i==3)
continue; //preskoceni hodnoty 3
printf(" index %d\n", i);
}
}
/*
* testfor.java
*/
package statements;
public class testfor {
public testfor() {
}
public static void main(String[] args) {
// inicializovana promenna typu pole 3 celych cisel
int pole[] = { 1, 7, 9 };
System.out.print("Vypis prvku pole: ");
// atribut (pole.length) obsahuje pocet prvku v poli
for (int i=0; i<pole.length; i++)
System.out.print(pole[i]+", ");
}
}<html>
<head>
<title>Cyklus for</title>
</head>
<body>
<script type="text/javascript">
pole = new Array( 1, 7, 9 ); // pole 3 celych cisel
document.write("vypis prvku pole: ");
for(i=0; i<pole.length; i++) {
document.write(pole[i]+", ");
}
</script>
</body>
</html>
for identifikátor = počáteční_hodnota:inkrement:koncová_hodnota
posloupnost_příkazů
end
%prikaz for
disp('inkrement 2:');
for k = 1:2:10
disp(sprintf(' index %d',k));
end
disp('vychozi inkrement 1:');
for k = 1:5
if k == 3
continue; %preskoceni hodnoty 3
end;
disp(sprintf(' index %d',k));
end<html>
<head>
<title>Cyklus for</title>
</head>
<body>
<?php
echo "inkrement 2:<br/>";
for ($i=1; $i<=10; $i+=2) {
echo " i $i <br/>";
}
echo "inkrement 1:<br/>";
for ($i=1; $i<=5; $i++) {
if ($i==3)
continue; //preskoceni hodnoty 3
echo " i $i <br/>";
}
?>
</body>
</html>