forとwhile
forとwhile
学校の課題でforとwhileでプログラムを実行するのにどちらが最適か?という問題です。
そのうち4つわからないのがありました。
というか、片方ができればもう片方でも実行できるんだから
答えはどっちでもいいんじゃないんですか?という疑問もあります。
問題は
1.変数xを「100」から「0」まで「1」づつプログラム制御して「OK」と画面表示させる場合
2.「繰り返し」処理をすることは確定であるが、「何回」繰り返すかはキーボードから入力される値しだいである場合
3.変数xの初期値を「1」とし「2」ずつ加算して変数xが値「100」となったら繰り返しを終了する場合
4.変数xの初期値は任意だが「1」づつ減算して変数xが値「0」となれば、確実に繰り返し処理が終了する場合。
このうち特に1.4は自分で見た瞬間に大方の検討はつくと思うのです。
ああ、0になるまでは-1×(回数)だなと、大体の数字はわかるんじゃないか?とおもうのです。
どなたか回答よろしくお願いします。
そのうち4つわからないのがありました。
というか、片方ができればもう片方でも実行できるんだから
答えはどっちでもいいんじゃないんですか?という疑問もあります。
問題は
1.変数xを「100」から「0」まで「1」づつプログラム制御して「OK」と画面表示させる場合
2.「繰り返し」処理をすることは確定であるが、「何回」繰り返すかはキーボードから入力される値しだいである場合
3.変数xの初期値を「1」とし「2」ずつ加算して変数xが値「100」となったら繰り返しを終了する場合
4.変数xの初期値は任意だが「1」づつ減算して変数xが値「0」となれば、確実に繰り返し処理が終了する場合。
このうち特に1.4は自分で見た瞬間に大方の検討はつくと思うのです。
ああ、0になるまでは-1×(回数)だなと、大体の数字はわかるんじゃないか?とおもうのです。
どなたか回答よろしくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: forとwhile
こちらの掲示板では、課題の丸投げはご遠慮いただいております。
http://dixq.net/board/board.html
で、1から4までのプログラムをforとwhileで組んでみたらどうしょう。
その上で、それぞれの考察をますちゃんさんなりにお願いします。こちらはソースコードと考察についてコメントしたいと思います。
プログラムを掲示板に貼るときはcodeタグをご利用ください。
http://dixq.net/board/board.html
で、1から4までのプログラムをforとwhileで組んでみたらどうしょう。
その上で、それぞれの考察をますちゃんさんなりにお願いします。こちらはソースコードと考察についてコメントしたいと思います。
プログラムを掲示板に貼るときはcodeタグをご利用ください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: forとwhile
これって「まず」ですよねsoftya(ソフト屋) さんが書きました:こちらの掲示板では、課題の丸投げはご遠慮いただいております。
http://dixq.net/board/board.html
で、1から4までのプログラムをforとwhileで組んでみたらどうしょう。
その上で、それぞれの考察をますちゃんさんなりにお願いします。こちらはソースコードと考察についてコメントしたいと思います。
プログラムを掲示板に貼るときはcodeタグをご利用ください。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: forとwhile
お名前ですので、そのままコピペしただけですが?naohiro19 さんが書きました:これって「まず」ですよねsoftya(ソフト屋) さんが書きました:こちらの掲示板では、課題の丸投げはご遠慮いただいております。
http://dixq.net/board/board.html
で、1から4までのプログラムをforとwhileで組んでみたらどうしょう。
その上で、それぞれの考察をますちゃんさんなりにお願いします。こちらはソースコードと考察についてコメントしたいと思います。
プログラムを掲示板に貼るときはcodeタグをご利用ください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: forとwhile
僕はこの掲示板で始めて投稿しましたますちゃんです。
まずさんは存じ上げませんが、失礼なようでしたら、名前を変えます。
1.プログラム制御の意味がよくわかりませんでしたがデクリメントを使いました。
すべてwhileが上でforが下です。
2.繰り返しでaを入力した数だけ表示します。どちらでもできます。
3.どちらもあまりかわらない印象です。
4.入力した数字からxを1づつ減らし0に近づけます。どちらでもいい気がします。
まずさんは存じ上げませんが、失礼なようでしたら、名前を変えます。
1.プログラム制御の意味がよくわかりませんでしたがデクリメントを使いました。
すべてwhileが上でforが下です。
#include "stdafx.h"
int main(void)
{
int x;
x=100;
while(x<0){
x--;
}
printf("OK\n");
return 0;
}
#include "stdafx.h"
#include "stdlib.h"
int main(void)
{
int x,y;
char buffer[2];
gets(buffer);
y = atoi(buffer);
x=1;
while(y>=x){
printf("a\n");
x++;
}
printf("OK\n");
return 0;
}
#include "stdafx.h"
#include "stdlib.h"
int main(void)
{
int x,y;
char buffer[2];
gets(buffer);
y = atoi(buffer);
for(x=1;x<=y;x++){
printf("a\n");
}
printf("OK\n");
return 0;
}
#include "stdafx.h"
int main(void)
{
int x;
x=1;
while(x<100){
x=x+2;
}
printf("OK\n");
return 0;
}
#include "stdafx.h"
int main(void)
{
int x;
x=1;
for(x=1;x<100;x=x+2){}
printf("OK\n");
return 0;
}
#include "stdafx.h"
#include "stdlib.h"
int main(void)
{
int y;
char buffer[2];
gets(buffer);
y=atoi(buffer);
while(y>0){
y--;
}
printf("OK\n");
return 0;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: forとwhile
出題した先生の性格がよく分かりませんが、「最適か?」と言うことなので、よりコンパクトに表現できる方を選べという意味だと私は解釈します。
とすれば、ますちゃんさんは、1から4までそれぞれどちらを選びますか?
ただ、1から4までwhileの特性が生かされている良い問題がありません。
※ これら以外に問題が有ったのかもしれませんが提示されていません。
ちなみに1のプログラムの答えは間違っていますよ。
とすれば、ますちゃんさんは、1から4までそれぞれどちらを選びますか?
ただ、1から4までwhileの特性が生かされている良い問題がありません。
※ これら以外に問題が有ったのかもしれませんが提示されていません。
ちなみに1のプログラムの答えは間違っていますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: forとwhile
コンパクトという点からみると初心者の私としてはすべてforを選ぶと思います。
すべて初心者から見たみためのコンパクトですが。
1のまちがいはx<0ではなくx>0ですね。すみません。
ほかの問題は
5.変数xの初期値も最終値も任意であるが、繰り返し処理を「100」回事項することが確実に決まっている場合
6.プログラムの中で「乱数」を発生させ、一定の値になった時点で繰り返し処理を終了する場合
です。
私は5はfor6はwhileだとおもいます。
理由はwhileは回数が決まってないときforは回数が決まっているときつかう。というふうに習ったからです。
これにのっとると5は回数が指定されているのでfor
6は乱数がいつ一定の値になるかわからず回数がわからない
と思ったためです。
すべて初心者から見たみためのコンパクトですが。
1のまちがいはx<0ではなくx>0ですね。すみません。
ほかの問題は
5.変数xの初期値も最終値も任意であるが、繰り返し処理を「100」回事項することが確実に決まっている場合
6.プログラムの中で「乱数」を発生させ、一定の値になった時点で繰り返し処理を終了する場合
です。
私は5はfor6はwhileだとおもいます。
理由はwhileは回数が決まってないときforは回数が決まっているときつかう。というふうに習ったからです。
これにのっとると5は回数が指定されているのでfor
6は乱数がいつ一定の値になるかわからず回数がわからない
と思ったためです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: forとwhile
そうですね。考え方としては私はそれで良いと思います。
一つ言い忘れましたが、コードのコンパクトさと同時にコードが読みやすいも考慮に入れる必要があると思います。
まぁ先生の性格によるので100%正解は他人にはわからないです。
> 理由はwhileは回数が決まってないときforは回数が決まっているときつかう。というふうに習ったからです。
そう先生が言ったのなら、その法則に則っていれば問題無いと思いますよ。
結局実務ではバグの少なくなる書き方をfor/whileなどから、その時に応じて選ぶわけですが回数が決まっているからと言う理由だけで選べない時もあります。
学校の課題だと限定されたルールの中で先生の求める答えを書くのが正解ですからね。
一つ言い忘れましたが、コードのコンパクトさと同時にコードが読みやすいも考慮に入れる必要があると思います。
まぁ先生の性格によるので100%正解は他人にはわからないです。
> 理由はwhileは回数が決まってないときforは回数が決まっているときつかう。というふうに習ったからです。
そう先生が言ったのなら、その法則に則っていれば問題無いと思いますよ。
結局実務ではバグの少なくなる書き方をfor/whileなどから、その時に応じて選ぶわけですが回数が決まっているからと言う理由だけで選べない時もあります。
学校の課題だと限定されたルールの中で先生の求める答えを書くのが正解ですからね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: forとwhile
すべてforであるという回答をいただきましたが、4番もそうでしょうか。
任意の数というのは乱数というふうにも考えられるとしたら、whileが妥当だとおもいます。
ほかの問題も回数なんかいかなと数えなかったらwhileになる気がします。
もはやこれは日本語の問題と捉えたほうがいいのでしょうか…
任意の数というのは乱数というふうにも考えられるとしたら、whileが妥当だとおもいます。
ほかの問題も回数なんかいかなと数えなかったらwhileになる気がします。
もはやこれは日本語の問題と捉えたほうがいいのでしょうか…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: forとwhile
ループ前にループ条件(開始値、終値、回数)が確定してるのならforで良いと思います。
終了値やループ回数が確定できないのならwhileを選択すべきでしょう。
なので乱数を使ってもループ前に確定するならforですね。
終了値やループ回数が確定できないのならwhileを選択すべきでしょう。
なので乱数を使ってもループ前に確定するならforですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: forとwhile
ここでも他の人に聞いてみれば良いと思います。
> 上の問題文によると2番以外whileに思えてしまうのです。
2. for 1.3.4 while だと思うってことですよね。
そう思う理由を書かないと解決に至らないと思いますよ。
> 上の問題文によると2番以外whileに思えてしまうのです。
2. for 1.3.4 while だと思うってことですよね。
そう思う理由を書かないと解決に至らないと思いますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。