Perlのfor文のサンプルです。処理を繰り返す時に使用します。
目次
for文 | for文 / for文のサンプル |
For文で配列の値を取得する | |
last | ループ処理を途中で終了する(last) |
2重ループ(入れ子)のときのlast文を使用する | |
next | ループ処理で処理をスキップする(next) |
2重ループ(入れ子)のときのnext文を使用する |
for文
for (初期化式(1.値を初期化) ; 条件式(2.条件) ; 増減式(3.値を更新)){ 実行される処理 } |
- 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。繰り返しはループとも呼ばれます。
- 初期化式は、最初に1回だけ実行されます。
- 使用する変数をカウンター変数またはループ変数といいます。変数名はiやjがよく使用されます。
- 条件式がtrueの間、処理を繰り返します。
- 増減式(3.値を更新)でカウンター変数/ループ変数の値が変わります。
- 条件式がfalseになるとループ処理を終了します。
for文のサンプル
#! /usr/bin/perl
use strict;
use warnings;
for (my $i = 0; $i < 5; $i++) {
print $i; # 0 1 2 3 4 が出力される
}
5行目は、初期化式($i = 0)によりi は0から始まります。
増減式($i++)によりiの値は、1ずつ増えていきます。
条件式($i < 5)がtrueの間は処理を繰り返し、iが5になるとfalseになるので終了します。
for文で配列の値を取得する
#! /usr/bin/perl
use strict;
use warnings;
my @color = ("赤", "黄", "青");# 配列
for (my $i = 0; $i <= $#color; $i++) {
print $color[$i];# 赤黄青
}
5行目は、配列です。
7行目の$#colorは2を返します。配列の最後の要素のインデックス値です。
8行目は、変数と添字で配列の値を表示しています。配列の添字は0から始まります。
ループ処理を途中で終了する(last)
last; |
- for文でlastを使用するとループ処理から抜けます。(そのブロックから抜けます)
- 「{」(波括弧) から「}」までをブロックといいます。
- lastは、Javaのbreakにあたります。
#! /usr/bin/perl
use strict;
use warnings;
for (my $i = 0; $i < 5; $i++) {
if ($i == 3){
last;
}
print $i; # 0,1,2が出力される
}
7行目のlastでfor文を抜けます。
9行目は、0,1,2が出力されます。
2重ループ(入れ子)のときにlast文を使用する
#! /usr/bin/perl
use strict;
use warnings;
for (my $i = 0; $i < 3; $i++) {
for (my $j = 0; $j < 3; $j++) {
if ($j == 0){
last;
}
print "j=".$j; # 出力なし
}
print "i=".$i; #i=0,i=1,i=2が出力される
}
5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のlastは、内側のfor文のみ抜けます。
ループ処理で処理をスキップする(next)
next; |
- for文でnextを使用すると、ループ処理の先頭に戻ります。(ブロックの先頭位置に戻ります)
- 「{」(波括弧) から「}」までをブロックといいます。
- nextは、他言語のcontinueにあたります。
#! /usr/bin/perl
use strict;
use warnings;
for (my $i = 0; $i < 3; $i++) {
if ($i == 1){
next;
}
print $i; # 0 2が出力される
}
7行目のnextでループ処理の先頭に戻ります。
9行目は、0と2が出力されます。
2重ループ(入れ子)のときにnext文を使用する
#! /usr/bin/perl
use strict;
use warnings;
for (my $i = 0; $i < 3; $i++) {
for (my $j = 0; $j < 3; $j++) {
if ($j == 0){
next;
}
print "j=".$j; # j=1,j=2,j=1,j=2,j=1,j=2が出力される
}
print "i=".$i; # i=0,i=1,i=2が出力される
}
5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のnextは、内側のfor文の先頭の6行目に戻ります
関連の記事