HOME->講習会->プログラミングセミナー->C++セミナー(初級)
あらかじめ用意されたデータを順に参照して計算するなどといったときに,すべてを手打ちするのはソースコードが膨大となり,また,データ数が変わったときに柔軟に対応させることができません.今回はループ回数がわかるときに用いられるfor文について紹介します.
目次
for文
for文の基本文法は以下のようになっています.
for(処理1; 条件式; 処理3){
// 条件式がtrueの時に実行される
処理2;
}
for文では,まず初めに処理1で記述した内容が実行されます.その後,条件式による判定が行われ,trueであれば,処理2が実行されます.処理2が終了後,処理3が実行され,再度条件式を確認し,trueであれば処理2,falseであれば,ループから抜けるというような流れとなっています.
通常,処理1にはループを回すための変数の初期化,処理3にはループを回すための変数の更新を行います.
例えば,0から10までを出力するプログラムは以下のようになります.
#include <iostream>
int main()
{
for(int i=0; i<=10; i++){
std::cout << i << std::endl;
}
}
このように,ループ回数があらかじめわかるような処理で用いられます.
for文の中断
場合によっては,ループを途中で中断したいことがあります.そのような場合には,break文を使用します.例えば,上記の0から10までを出力するプログラムで,5になったらループを途中で中断したいとしましょう.そのような場合には,以下のように記述します.
#include <iostream>
int main()
{
for(int i=0; i<=10; i++){
if(i==5){
break;
}
std::cout << i << std::endl;
}
}
if文を用いて,変数iが5になったらループを抜けるようにbreak文を入れることで中断することができます.しかし,break文を使用することはソースコードを可読性を下げてしまう場合があります.どうしてもbreak文を使わないと書けないというような場合は除き,できるだけ使用しないようにしましょう.上記の例でいえば,条件式を「i<=5」にすることでbreak文を使用を回避することができます.
ループのスキップ
場合によっては,このような場合は次のループにスキップしたいというようなことがあります.そのような場合には,continue文を使用します.for文の中断と同様に0から10までを出力するプログラムで奇数の時だけ処理をスキップしたいとしましょう.そのような場合は以下のようになります.
#include <iostream>
int main()
{
for(int i=0; i<=10; i++){
if(i%2==1){
continue;
}
std::cout << i << std::endl;
}
}
if文を用いて,変数iの2で割った余りが1のときにcontinueを入れることで処理をスキップすることができます.しかし,break文と同様にcontinue文もソースコードの可読性を下げてしまう場合があります.どうしてもcontinue文を使わないと書けないというような場合は除き,できるだけ使用しないようにしましょう.上記の例でいえば,「i++」と記述しているところを「i+=2」とすることでcontinue文を使用を回避することができます.
演習
・入力された値\(a\)より,\(\sum_{k=0}^{a} k\)を表示するプログラムを作成してください.
・九九表を表示するプログラムを作成して下さい(Hint:for文の中にfor文を入れる)