学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

C++ | 06 | for

↓↓クリックして頂けると励みになります。



05 | if】 << 【ホーム】 >> 【07 | 標準入力cin

for文を使用したプログラム
for文を使用したプログラム



C++のfor文は、反復処理(ループ)を行うための制御構造の一つです。
主に、ある条件が真である間、ブロック内のステートメントを繰り返し実行します。


Visual Studio Codeで以下のcppファイルを作成して下さい。


新規作成 【ForTest1.cpp】

#include <iostream>

int main() {

	int i;

	for ( i=0; i<10; i=i+1 ) {
		std::cout << "こんにちは" << std::endl;
	}
}



このサンプルプログラムでは「for文」とよれる構文を使用しています。
与えられた条件になるまで繰り返しの処理を行います。

for ( 初期条件; 繰り返し条件; 繰り返し実行文) {

     実行文;

}



初期条件は繰り返し処理が行われる前に読み込まれます。
ループに入る前の最初の一回だけ処理される条件になります。
もちろん初期条件がなくても良いという場合は空白でもかまいません。


例えばすべてを空白にする記述もできます。

for ( ; ; ) {}

この記述は無限ループになってしまいますが、あえて無限ループにする場合もあります。


繰り返し条件ではfor文内の処理が終わるたびに読み込まれ、この条件に当てはまっていればまたループに入ります。
この条件をきちんと考えないと思わぬエラーが出ますので気をつけてください。


最後の繰り返し実行文は、for文内の処理が終わって繰り返し条件が処理される前に読み込まれます。


では実際のプログラムを見ながら流れを見ていきましょう。

  • まず初期条件の 「i=0」が処理され、変数i の値は0になります。
  • 次に繰り返し条件の「i<10」が処理され、変数iの値が条件の範囲内に入っているのでfor文のループに入ります。
  • std::cout文が処理されて画面に「こんにちは」と出力されます。
  • 繰り返し実行文「i=i+1」が読み込まれ、変数i の値は1になります。(この記述についてはこの後もう少し詳しく説明します。)
  • 変数iの値は1になり繰り返し条件「i<10」と比べられ、まだ条件の範囲内なのでループに入ります。
  • このループが繰り返され、変数 i の値が10になった時点でfor文のループが終了します。
  • その結果、「こんにちは」が画面に10個出力されます。


    最後に「i=i+1」の記述について説明します。
    左辺の変数iは新しい値のiになります。
    右辺の変数iは今までの値のiを指しています。


    この式は次のようにも書き換えられます。
  • i += 1;
  • i++;


    どちらの記述も同じ処理をします。


    i++」はインクリメントといい、読み込まれると変数 i に1を足します。


    それとは逆に「i--」とすれば、読み込まれると変数i から 1を引いていきます。
    デクリメントといいます。


    ではサンプルプログラムを実行してみましょう。
    「こんにちは」 とターミナルに10個表示されます。

    ~/Desktop/Programming/CPP $ cd "/Users/**/Desktop/Programming/CPP/" && g++ tempCodeRunnerFile.cpp -o tempCodeRunnerFile 
    && "/Users/**/Desktop/Programming/CPP/"tempCodeRunnerFile
    
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    こんにちは
    



    Visual Studio Codeで以下のcppファイルを作成して下さい。


    新規作成 【ForTest2.cpp】

    #include <iostream>
    
    int main() {
    
    	int i;
    
    	for ( i=1; i<=20; i=i+1 ) {
    
    		int a = i*11;
    
    		if ( a >=200 ) {
    			break;
    		}
    		std::cout << a <<  std::endl;		
        }
    }
    



    11の倍数で1以上200以下のものを全て表示するプログラムです。
    break文を使っています。

    for ( 初期条件; 繰り返し条件; 繰り返し実行文) {
    
         実行文;
         break;
    
    }
    



    for文の中で「break」が読み込まれるとそこでループから強制的に抜けます。


    このサンプルプログラムでは11に 1,2・・・と順番にかけていき、std::cout文でその値を出力していきます。
    if文で「a >=200」の条件に当てはまると「break」が読み込まれてループが終了し、プログラムも終了します。


    ではサンプルプログラムをビルドして実行してみましょう。
    「11・22・33・44 ・・・198」とターミナルに表示されます。

    ~/Desktop/Programming/CPP $ cd "/Users/**/Desktop/Programming/CPP/" && g++ tempCodeRunnerFile.cpp -o tempCodeRunnerFile 
    && "/Users/**/Desktop/Programming/CPP/"tempCodeRunnerFile
    
    11
    22
    33
    44
    55
    66
    77
    88
    99
    110
    121
    132
    143
    154
    165
    176
    187
    198
    




    Visual Studio Codeで以下のcppファイルを作成して下さい。


    新規作成 【ForTest3.cpp】

    #include <iostream>
    
    int main() {
    
    	int a = 0;
    
    	for ( int i=0; i<=100; i=i+1 ) {
    
    		a = i + a;
    
    		if ( i == 100 ) {
    			std::cout << a << std::endl;
    			break;
    		}
    	}
    }
    



    1から100までを全て足すプログラムです。


    サンプルプログラムを実行してみましょう。
    「5050」とターミナルに表示されます。

    ~/Desktop/Programming/CPP $ cd "/Users/**/Desktop/Programming/CPP/" && g++ tempCodeRunnerFile.cpp -o tempCodeRunnerFile 
    && "/Users/**/Desktop/Programming/CPP/"tempCodeRunnerFile
    
    5050
    



    Visual Studio Codeで以下のcppファイルを作成して下さい。


    新規作成 【ForTest4.cpp】

    #include <iostream>
    
    int main() {
    
    	double x = 500000;
    
    	for ( int i=1; i<=24; i=i+1 ) {
    
    		x = x * 1.1;
    
    		if ( i == 24 ) {
    
    			std::cout << "返済金額は" << x << "円です。" << std::endl;
    			break;
    		}
    	}
    }
    



    金利が10%で50万円を2年滞納した場合の金額を表示するプログラムです。


    ここでの金利とは毎月にかかる利息のことをいい、毎月借りた金額の一割が加算されていきます。(x = x * 1.1


    1年12ヶ月で2年間なのでループは24回繰り返されます。
    最後にif文が読み込まれ、出力とberakが実行されます。


    ここでは変数の型にdouble型を使用しています。
    int型では50万円に1.1をかけ続けたときの小数値を表すことができません。


    そこで小数点型のdouble型を使用しました。
    もう一つの小数型としてfloat型がありますが、double型のほうがより多くの桁数を格納できます。


    サンプルプログラムを実行してみましょう。
    「返済金額は4.92487e+006円です。」とターミナルに表示されます。

    ~/Desktop/Programming/CPP $ cd "/Users/**/Desktop/Programming/CPP/" && g++ ForTest4.cpp -o ForTest4 && "/Users/**/D
    esktop/Programming/CPP/"ForTest4
    
    返済金額は4.92487e+06円です。
    



    Visual Studio Codeで以下のcppファイルを作成して下さい。


    新規作成 【ForTest5.cpp】

    #include <iostream>
    
    int main() {
    
    	double year, car, maitsuki, hensai;
    
    	car = 600000;
    	maitsuki = 20000;
    
    	for (year=1; ; year=year+1) {
    
    		car = car * 1.03;
    		hensai = car/(year*12);
    
    		if (hensai <= 20000) {
    
    		std::cout << "返済年数は " << year << "年です。" << std::endl;
    		std::cout << "返済金額は" << hensai << "円です。" << std::endl;
    		
    		break;
    		}
    	}
    }
    



    60万円の中古車を金利3%で毎月2万円以下で返済するには何年かかるかを表示するプログラムです。


    車の金額に毎月1.03の金利がかかります。
    返済金額は毎月の金額なので「year*12」となり、ループするたびにyearに1が加算されます。


    返済金額「hensai」が2万円以下になったらそのときの返済金額と返済年数を表示します。


    サンプルプログラムを実行してみましょう。
    「返済年数は 3年です。返済金額は18212.1円です。」とターミナルに表示されます。

    ~/Desktop/Programming/CPP $ cd "/Users/**/Desktop/Programming/CPP/" && g++ ForTest5.cpp -o ForTest5 && "/Users/**/D
    esktop/Programming/CPP/"ForTest5
    
    返済年数は 3年です。
    返済金額は18212.1円です。
    


    05 | if】 << 【ホーム】 >> 【07 | 標準入力cin




    ↓↓クリックして頂けると励みになります。