for文の()内の初期化式、条件式、継続処理方法を書いたり書かなかったりするとどうなるでしょうか
#include <iostream>
using namespace std;
int main() {
int a;
for(a=1; a<=3; a++){
cout<<"このcout出力表示は"<<a<<"回目です\n";
}
return 0;
}
てんC「このプログラムでは
for(a=1; a<=3; a++)のはたらきにより
for(a=1; a<=3; a++)につづく{}内の命令文
cout<<"このcout出力表示は"<<a<<"回目です\n";
は
a=1,a=2,a=3と値をかえながら
繰り返し実行されていきます。
つまり
cout<<"このcout出力表示は"<<1<<"回目です\n";
cout<<"このcout出力表示は"<<2<<"回目です\n";
cout<<"このcout出力表示は"<<3<<"回目です\n";
が
実行されていくのですね。
ここでa++は
for(a=1; a<=3; a++)に
継続処理方法として
かきこまれています。
a++は
a=1,a=2,a=3とaの数値を1つずつ増やしていく・・・
つまり
aの値を1つずつ変化させながら
命令を継続させるための
継続処理する方法を示すためにかかれているのです。
そして、
for(a=1; a<=3; a++)の真ん中の条件式の項の
a<=3はaの数値が3のときまで
cout<<"このcout出力表示は"<<a<<"回目です\n";
を繰り返すために記述されています。」
ソーラー 「ふっふ~ん😊
このfor文はいろいろカスタマイズできそうだね。
では、a++がない場合
for(a=1; a<=3;)とかかれた場合(一番右の項が空白になっています)
はどうなるかな。」
そうきましたか😝 solarplexussより
早速実行してみると
#include <iostream>
using namespace std;
int main() {
int a;
for(a=1; a<=3;){
cout<<"このcout出力表示は"<<a<<"回目です\n";
}
return 0;
}
プログラムの実行結果
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
・
・
・
・
・
以下ずっと
このcout出力表示は1回目です
が続いていきます
ソーラー「
このプログラムは
aの値を1つずつ増加させるa++はかかれていないけれども
a=1の場合の命令文をずっとくりかえしているね・・・
もしかして
for文は同じ命令を繰り返す機能が
🍓もともと備わっていて🍓
a++がない状態
for(a=1; a<=3; )のような状態でも
a=1の場合をずっと繰り返してしまうのじゃないかな?
つまりa++なしでも繰り返し命令をおこなうことができる。
a=1ならずっとa<=3の条件式を満たしているので
プログラムがとまることもないというわけです
では
さらに
for(a=1; )のように条件式a<=3;も書かない場合は?
for文は同じ命令文を繰り返す機能がもともと備わっているなら
a=1の場合だけを
ずっと繰り返してしまいそう?
早速
そのプログラムを実行してみると
👇
#include <iostream>
using namespace std;
int main() {
int a;
for(a=1; ){
cout<<"このcout出力表示は"<<a<<"回目です\n";
}
return 0;
}
プログラムの実行結果
エラー C2143 構文エラー: ';' が ')' の前にありません。
エラー (アクティブ) E0029 式が必要です
おおっと
なんだろう このエラー文は??
と思ったら
この場合のビルドエラーのもとになってるのは;なんだよね。
つまり
条件式と継続処理方法をかかなくてもいいのだけど
for(a=1; )ではビルドできず
for(a=1; ;)と
for文の書式のセミコロン2つ
をきちんとかかないとビルドできないんです。
つまり
for文はfor( ; ; ) この書式が基本ということ。
そこでまたもとにもどり
プログラムを
for(a=1; ;)と修正してプログラムを実行してみると
#include <iostream>
using namespace std;
int main() {
int a;
for (a = 1; ;) {
cout << "このcout出力表示は" << a << "回目です\n";
}
return 0;
}
プログラムの実行結果
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
・
・
・
・
・
以下ずっと
このcout出力表示は1回目です
が続いていきます
やっぱり
for文には
🍓もともと命令を繰り返す機能🍓
があるんだ。」
てんC「
for文の仕組みがすこしだけわかってきましたね。
どうやら条件式a<3と継続処理方法a++がないと・・・
for文の表示をとめられなさそうですね、ソーラーさん。」
ソーラー 「そうだ、こんどは
継続処理方法a++だけをかいた
for(;;a++)をビルド実行してみよっ
なんというかこんなのビルド実行できるのかな?
さあ、どうだろ
なにかさらなるfor文の仕組みがわかるかもしれない。
では プログラムを構成してっと
👇
#include <iostream>
using namespace std;
int main() {
int a;
for (; ;a++) {
cout << "このcout出力表示は" << a << "回目です\n";
}
return 0;
}
ソーラー「ビ~ル~ド~」
ビルド実行結果
エラー C4700 初期化されていないローカル変数 'a' が使用されます
ソーラー「
統合開発環境Visual Studoでは変数が初期化されていないと
ビルド失敗となるよう
設計されているので
変数aが初期化されていないこのプログラムを実行することはできません。
優秀ですね。
そこで
int a=1;
と変数aに1を代入して初期化した命令文にかきかえてみます。
#include <iostream>
using namespace std;
int main() {
int a=1;
for (; ;a++) {
cout << "このcout出力表示は" << a << "回目です\n";
}
return 0;
}
プログラムの実行結果
このcout出力表示は1回目です
このcout出力表示は2回目です
このcout出力表示は3回目です
このcout出力表示は4回目です
このcout出力表示は5回目です
このcout出力表示は6回目です
このcout出力表示は7回目です
このcout出力表示は8回目です
・
・
・
・
てんC「
aの値を1ずつ増加させながら
ずうっと
cout << "このcout出力表示は" << a << "回目です\n";
を繰り返しておられますね」
ソーラー
「それも なぜかかなり高速で(^^)
う~ん
もう元気のよさが一味ちがいます。
これも成功です。
どうしてこのようなプログラムの実行結果が表示されるのかというと
int a=1;
for (; ;a++)と記述したので
変数aが格納している数値データ
1
から
つまり
cout << "このcout出力表示は" <<1<< "回目です\n";
から
繰り返しが始まります
そして
継続処理方法a++が記述されているので
変数aが格納している数値データが
1
2
3
4
・
・
・
と増加しながら
cout << "このcout出力表示は" <<a<< "回目です\n";
の繰り返しがおこなわれているんだね。
さらに
条件式が書かれていないので
変数aの格納している値によって
cout << "このcout出力表示は" <<a<< "回目です\n";
の
繰り返しが止まるということもないわけなんだね。
では
for(;;)と 初期化式も条件式も継続処理方法も書かない場合は・・・
これはどうなるんでしょうか?みなさ~ん。」
そのプログラムはこちらです
👇
#include <iostream>
using namespace std;
int main() {
int a;
for (; ;) {
cout << "このcout出力表示は" << a << "回目です\n";
}
return 0;
}
ソーラー「ビル~ド」
プログラムの実行結果
エラー C4700 初期化されていないローカル変数 'a' が使用されます
ソーラー「
統合開発環境Visual Studoでは変数が初期化されていないとビルド失敗となるよう
設計されているので
変数aが初期化されていないこのプログラムを実行することはできません。
そこで
int a;
を
int a=1;
にかきかえてプログラムを実行してみます。」
#include <iostream>
using namespace std;
int main() {
int a=1;
for (; ;) {
cout << "このcout出力表示は" << a << "回目です\n";
}
return 0;
}
プログラムの実行結果
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
このcout出力表示は1回目です
・
・
・
・
ソーラー「
👆
このcout出力表示は1回目です
が
ずっと表示されるのはなぜかというと
変数aの初期化式が
int a=1;
で
for(; ;)と記述したため
変数aが格納している数値データ
1
から
つまり
cout << "このcout出力表示は" <<1<< "回目です\n";
から
繰り返しが始まったからなんだね。
また
継続処理方法が記述されていないので
変数aが格納している数値データは
1
のまま
cout << "このcout出力表示は" <<1<< "回目です\n";
の繰り返しがおこなわれているんだね。
さらに
条件式も書かれていないので
変数aの格納している値によって
cout << "このcout出力表示は" <<1<< "回目です\n";
の
繰り返しが止まるということもないわけなんだね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます