for循环主流有五种类型,非主流有3种
for循环的由来
旧称:für,是德国发明的。
起初的是Superplan语言,发布:1949年。
作者:海因茨·鲁蒂休瑟(1918年,水瓶座)
Superplan的前代是Plankalkül语言。
Superplan的后代是Algol58语言。
Algol58是美国德国联合,发布:1958年。
Algol58语言将für循环更改为for循环。
Algol家族:Algol58→Algol60→Algol68。
关于for循环的名称
循环体是为了给定值执行的,就是循环体给定值i变量的值。
为什么起名i的变量
其实for循环随便命为变量的名字,而习惯i的名称,指的是:increment,或者index。
对于遍历数组,也可称之为e,即:element
而遍历字符串,可以称之为c,即:char
第一代:for小括号
特点:语法有小括号,中间的是步长。
我被誉为:上古时代循环,号称”仰韶文化”
für循环语法:
Für i=1(1)5:
Ende Index i
Algol58语言for循环:
for i:=1(1)5
begin
end
注:for小括号派生是Algol60语言for-until
第二代:for-until、for-while
她是一个联合,for联合:until、while。
在Algol60语言for循环是个摇篮,发扬光大。
起初是Algol60语言,发布:1960年。
Algol60是所有的祖先:包括C和Python。
Algol60方言(可支持了for-until、for-while):
Algol W、Coral66、Simula67。
for-until循环语法(指定次数):
for i:=1 step 1 until 5 do
begin
end for i
派生循环:for-to
for-while循环(指定循环条件):
for i:=1+1 while i<5 do
begin
end for;
for-while派生循环:for循环三段式。
第三代:for-to
for-to是for-until简化版,for-to默认步长(1)
起初的是英国发明,CPL语言,发布:1963年
作者:克里斯托弗·斯特雷奇(1916年,天蝎座)
继承者:
BASIC、Algol68、BCPL、Pascal、F#
for-to倒置替换downto。
注:在Algol68语言省略起始,默认为0。
在for-to设置步长有两个关键字:by、step。
CPL语言(1963年)for循环语法:
for-to类型:for i=1 to 5
步长:for i=1 to 5 by 2
倒置:for i=5 down to 1
for-to有若干派生循环:
for箭头(2004年,Scala语言)
Scala语言for循环:for( i <- 1 to 5){……}
for循环含头不含尾:for( i <- 1 until 5){……}
for循环步长:for( i <- 1 to 5 by 2){……}
for-to非主流:
for-til(coco、LiveScript)
for-thru(Maxima)
for-to指定次数的,而不可以指定次数的,那请用改为while循环,而同一时间独立的while循环
第四代:for循环三段式
最早的发明了史蒂芬·柯蒂斯·约翰逊,而肯·汤普逊借鉴了,首次引用了B语言,发布:1969年,for循环三段式代表作C家族。
for循环三段式的原型是Algol60语言for-while
三段式的由来:有两个分号划分为三个功能:第一个初始值、第二个循环条件,第三个步长。
for循环三段式特点:代替while循环,三个可以省略,但是分号不可以省略,例外:go语言可以省略分号。
for循环三段式非主流即:逗号提换成分号。
for循环三段式逗号是非主流:Gentee、Jolie、Dragon
第五代:for-in
for-in本质是遍历循环。
其中Python的子孙三代喜欢应用了for-in:SETL(1969)→ABC(1987)→Python→Nim
作者:
雅各布·西奥多·施瓦茨(杰克,1930,摩羯座)
SETL语言首次表示法:for 起始..结束 in 变量,非常流行的,SETL语法:
for i in [1..5] loop
end loop;
for-in现在是一个趋势,就连微软公司支持了语言:F#、Q#,以及苹果公司支持了Swift语言,谷歌开发安卓应用了Kotlin语言。
for-in有若干派生循环(用于遍历):
for冒号:Java语言,Octive语言
for箭头:Scala语言
Scala语言for遍历:for( e <- Array(10,20))
for-range:go语言
for-of:Ada(ada2012)、JS(ES6(2015))
for循环搭配:foreach(列举:起始…结束)
for循环守卫
又称循环过滤器。
起初SETL语言,发布:1969年。
SETL循环守卫:
for i in [1..5] | (odd i) loop
print(i);
end loop;
Scala循环守卫:
for(i<-1 to 5 if i%2!=0){
print(i)
}
for循环五件套
命明为for循环关键字后边加点东西,有五种类型:
foreach (遍历)、forall(并发)、forever(死循环)、forvalues(Stata)、forstep(PARI/GP)
foreach:起初Logo语言(1967年)
微软系列:C#、C++/CLI、VB.NET
PHP家族:Perl、PHP
foreach和for-in没有区别:Ballerina、Aikido
增加了foreach倒置:foreach_r,C3语言
forall:Algol68S、Postscript、Ada、Chapel
for循环非主流
for-thru、for-til、for逗号、for空格
for-thru
Maxima语言(1982年)
默认开头:for i thru 5 do (……);
指定开头:for i:1 thru 5 do (……);
步长:for i:1 thru 5 step 2 do (……);
for-til
COCO语言/LiveScript语言(2011年)
开始默认0:for i til 5
指定开头:for i from 1 til 5