当前位置首页 > 百科> 正文

for循环

2019-07-23 15:13:19 百科
for循环

for循环

for循环是程式语言中一种开界的循环语句,而循环语句由循环体及循环的终止条件两部分组成,for循环其在各种程式语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。

C语言中的for循环如下

1.语句最简形式为:

for( ; ; )

2.一般形式为:

for(单次表达式;条件表达式;末尾循环体)

{

中间循环体;

}

其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。

for循环小括弧里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变数的初始化赋值语句, 用来给循环控制变数赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。

俩“;”号之间的条件表达式是一个关係表达式, 其为循环的正式开端,当条件表达式成立时执行中间循环体。

执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括弧{}可以省略,执行完中间循环体后接着执行末尾循环体。

执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重複上述循环,当条件不成立时则跳出当下for循环。

Pascal语言中的for循环:

for 循环变数:=初值 to/downto 终值 do

begin

循环体

end;

循环变数从起点到终点每次加1或减1(to 为加1,downto为减1)

基本介绍

  • 中文名:for循环
  • 外文名:For cycle
  • 类别:程式语言
  • 功能:循环执行

基本模型

C语言的四种运行模型(箭头表示循环方向):
(1)三角基本模型:
for循环
例子:
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;b=c){c=a;a=b;}printf("由大到小排序:%d,%d",a,b);}
(2)中间循环体被省略得只剩下“;”空语句时的左右往返模型:
条件表达式↹末尾循环体
例子:
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;c=a,a=b,b=c);printf("由大到小排序:%d,%d",a,b);}
(3)末尾循环体被省略后的上下往返模型:
条件表达式
↓↑
中间循环体
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;)c=a,a=b,b=c;printf("由大到小排序:%d,%d",a,b);}
(4)条件表达式被省略得只剩下“;”空语句时,中间循环体或末尾循环体带有跳出语句时的模型:
例子:
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(c=a;;){break;}if(a<b)a=b,b=c;printf("由大到小排排序:%d,%d",a,b);}
看完上面四个模型后,你会发现其实它的完成的都是同一个问题,但可以写成这幺多种模型,当然了,这只是省略其中一个语句的模型,你也可以仿照着侵略得只剩下一个语句都可以,前提是不要搞成死循环!
可以代替while与do~while语句
认真看完的朋友,你会发现(2)与(3)两种模型与while循环如出一辙!完全可以将其取代。
而(4)中的一种情况则与do~while语句如出一辙,也完全可以取代。
for语句的例子:
#include<stdio.h>int main(){int a=1,b,c;for(;;){b=3*a++;if(b>10)break;}printf("%d",a);}
把上述语句用do~while语句实现如下:
#include<stdio.h>int main(){int a,b,c;do{a=1,b=3*a++;}while(b>10);}printf("%d",a);}
是不是发现表达效果一样啊!

注意事项

1.for循环中的变数可以是一个也可以是多个,不要局限于一个变数处理到底,那样有时会很单调,当程式适合把多个变数组成循环时,用多个for语句来表示就是有些浪费了!
2.for循环中语句可以为语句体, 语句体外加大括弧"{}"将参加循环的语句括起来。 for循环的三个表达式都是逗号表达式,这样来说,其实每个分号表达式可以由几个逗号表达式构成,中间用",”隔开,最后以“;”结束。
3. for循环中的"单次表达式"、"条件表达式"和"循环体语句"都是选择项, 即可以预设成只剩下“;”的空语句, ";"不能预设的原因是编译格式如此,预设了编译器不认识而会报错。
省略了用来初始化的单次表达式时, 表示不对循环控制变数赋初值。
省略了条件表达式, 若不做其它处理则成为死循环。
省略了所有循环体, 则for语句不被其它形式处理时不产生任何作用。

C语言

1. for循环可以有多层嵌套。
例:
#include<stdio.h>int main(void){int i,j,k;printf("ijk\n");for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++)printf("%d%d%d\n",i,j,k);return 0;}
输出结果为: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
2. for循环中的变数生存周期为一次循环叠代。
例:
#include<stdio.h>int main(void){int i;for(i=0;i<9;i=i+1){//printf("%d\n",a);int a=i;printf("%d\n",a);}return 0;}
若第一个printf("%d\n",a);不注释掉,会有"error C2065: 'a' : undeclared identifier"的错误提示,即是说第一次执行时,C语句中变数必须声明在前才能使用,在定义语句之前使用变数是不合法的,第二次执行时,因大括弧{}中的a变数为一次循环叠代,执行完一次后会被立即销毁,第二次执行时将重新定义,故也不存在重複定义问题。

C#语言

C#中for语句的语法:
for(initialization;Boolean expression;update control variable)
statement
其中,statement(语句)是for循环主体,要幺是一个语句,要幺是用大括弧{}封闭的代码块。
例子1:
static void Main(string[] args)
{

for (int i=0;i< 10; i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
运算结果:0
1
2
3
4
5
6
7
8
9
例子2:
static void Main(string[] args)
{
int i=0;
for ( ;i< 10; i++)
{
Console.WriteLine(i);
Console.ReadLine();
}

}
例子2运算得到例子1相同的结果。
Pascal语言中的for循环
循环次数已知时,可以用for语句实现循环结构。
for语句有两种格式:递增型和递减型。
(1)递增型for语句格式
for<循环变数>:=<初值>to<终值>do<语句>;
(2)递减型for语句格式 ,
for<循环变数>:=<初值>downto<终值>do<语句>;
其中,“循环变数"为一个有序类型的数据,
在第一种形式中,使用的是保留字to,循环变数则从“初值"开始逐一增加到“终值";
在第二种形式中,使用的是保留字downto,“循环变数"则从“初值"开始逐一递减到“终值",每次执行一次循环体语句。
下面继续改写上述求1~1 O之和的程式代码如下:
var i,s:integer;
begin
s:=0;
for i:=1 to 10 do
s:=s+i;
end;

程式循环

J2SE 1.5提供了另一种形式的for循环。藉助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。
在Java程式中,要“逐一处理”——或者说,“遍历”——某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词的含义和这种操作比较配,在这种时候for循环比其它循环常用得多)。
对于遍历数组,这个循环一般是採取这样的写法:

数组

/* 建立一个数组*/
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
而对于遍历Collection对象,这个循环则通常是採用这样的形式:

Collection

/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Iteratoritr= stringList.iterator(); itr.hasNext();) {
Object str = itr.next();
System.out.println(str);
}
而在Java语言的最新版本——J2SE 1.5中,引入了另一种形式的for循环。藉助这种形式的for循环,现在可以用一种更简单地方式来进行遍历的工作。
1. 第二种for循环
不严格的说,Java的第二种for循环基本是这样的格式:
for (循环变数类型 循环变数名称 : 要被遍历的对象) 循环体
藉助这种语法,遍历一个数组的操作就可以採取这样的写法:

简单方式

/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int i : integers) {
System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */
}
这里所用的for循环,会在编译期间被看成是这样的形式:

等价代码

/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int变数名甲 = 0; 变数名甲 < integers.length; 变数名甲++) {
System.out.println(integers[变数名甲]);/* 依次输出“1”、“2”、“3”、“4” */
}
这里的“变数名甲”是一个由编译器自动生成的不会造成混乱的名字。
而遍历一个Collection的操作也就可以採用这样的写法:

Collection方式

/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection list = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Object str : list) {
System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */
}
这里所用的for循环,则会在编译期间被看成是这样的形式:清单6:遍历Collection的简单方式的等价代码 /* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Iterator 变数名乙 = list.iterator(); 变数名乙.hasNext();) {
System.out.println(变数名乙.next());/* 依次输出“A”、“B”、“C”、“D” */
}
这里的“变数名乙”也是一个由编译器自动生成的不会造成混乱的名字。
因为在编译期间,J2SE 1.5的编译器会把这种形式的for循环,看成是对应的传统形式,所以不必担心出现性能方面的问题。

PHP中

<?php
//PHP中FOR循环基本和C语言保持一致,具体如下:
for($i=1;$i<=100;$i++){
echo '这是第'.$i.'次';
}
//利用FOR循环,可以循环输出简单数组
$array=Array('0'=>'a0','1'=>'b1','2'=>'c2','d'=>'d3');
for($i=0;$i<=count($array);$i++){
echo $array[$i];
}
//需要注意的是,对于脚标不为数字的数组,建议使用FOREACH循环来遍历数组。
?>
for 循环是 php 中最複杂的循环结构。它的行为和 C 语言的相似。 for 循环的语法是:
for (expr1; expr2; expr3) statement
第一个表达式(expr1)在循环开始前无条件求值一次。
expr2 在每次循环开始前求值。如果值为TRUE,则继续循环,执行嵌套的循环语句。如果值为FALSE,则终止循环。
expr3 在每次循环之后被求值(执行)。
每个表达式都可以为空。expr2 为空意味着将无限循环下去(和 C 一样,php 认为其值为TRUE)。这可能不像想像中那样没有用,因为经常会希望用 break 语句来结束循环而不是用 for 的表达式真值判断。
考虑以下的例子,它们都显示数字 1 到 10:
<?php/* example 1 */for ($i = 1; $i <= 10; $i++) { echo $i;}/* example 2 */for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i;}/* example 3 */$i = 1;for (;;) { if ($i > 10) { break; } echo $i; $i++;}/* example 4 */for ($i = 1; $i <= 10; echo $i, $i++);?>
语法:for( ;true; ){
}
在不知道初始值,并且不知道叠代条件的时候使用。

代码循环

JavaScript for循环

在编写代码时,你常常希望反覆执行同一段代码。我们可以使用循环来完成这个功能,这样就用不着重複地写若干行相同的代码。

for..in..区别

for是用于循环一个集合等里面的元素的,但是for..in不仅会遍历集合中的元素,同时也会遍历与集合相关的属性和方法。

JavaScript 循环

for将一段代码循环执行指定的次数while当指定的条件为 true 时循环执行代码 在脚本的运行次数已确定的情况下使用 for 循环。

语法

for (变数 = 开始值;变数 <= 结束值;变数 = 变数 + 步进值) {需执行的代码 }
C 语言中for循环的语法:
for ( init; condition; increment ){ statement(s);}

实例

解释:下面的例子定义了一个循环程式,这个程式中 i 的起始值为 0。每执行一次循环,i 的值就会累加一次 1,循环会一直运行下去,直到 i 等于 10 为止。
注释:步进值可以为负。如果步进值为负,需要调整 for 声明中的比较运算符。
<html>
<body>
<script type="text/javascript">
var i = 0for(i = 0; i <= 10; i++)
{
document.write("The number is " + i)
document.write("<br />")
}
</script>
</body>
</html>

结果

The number is 0The number is 1The number is 2The number is 3The number is 4The number is 5The number is 6The number is 7The number is 8The number is 9The number is 10
The number is 0The number is 1The number is 2The number is 3The number is 4The number is 5The number is 6The number is 7The number is 8The number is 9The number is 10

易语言

易语言为中文程式语言,所以把包括for在内的循环语句如下分三种计次循环、判断循环和循环判断
计次循环
循环体内的命令重複执行指定的次数。提供的整数参数值决定将重複执行的次数。
计次循环首 (循环次数, 已循环次数变数)
计次循环尾 ()
判断循环
根据提供的逻辑参数的值,来决定是否进入循环。如果提供的逻辑参数值为真,程式顺序执行下一条命令进入循环,否则跳转到本命令所对应的“判断循环尾”命令的下一条命令处以跳出循环。
判断循环首(条件)
判断循环尾 ()
循环判断
循环判断尾为循环的条件所在,根据提供的逻辑参数的值,来决定是否返回到循环首部继续进行循环。如果提供的逻辑参数值为真,程式返回到对应的“循环判断首”命令处继续进行循环,否则顺序执行下一条命令退出本程式循环。
循环判断首 ()
循环判断尾 (条件)
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net