#include<stdio.h>
int main(void)
{
int i;
for(i=1;i<=10;i++){
printf("ピザ");
}
return 0;
}
というプログラムで、「for(i=1;i<=10;i++)のとこは何故変数を使用するのか?」という問題が出ました。
口頭試問なのでうろ覚えなのですが、言われたことを下に箇条書きしときます。
·ループ条件をiを使わずに数字を入れたらどうなるか?
·また、何故そうなるのか?
·i=とか書くよりも数字を入れた方が楽なのにわざわざ変数を使う理由は?
なんかこんな感じのことを言われたのですがさっぱりわかりません。誰か変数について詳しい人がいたら教えてください!!!
変数について教えてください
Re: 変数について教えてください
自分だったら、「じゃあ、変数を使わずに10回(一般にn回)ループするにはどうすればいいんですか?」って逆質問しますね。御魁 さんが書きました: というプログラムで、「for(i=1;i<=10;i++)のとこは何故変数を使用するのか?」という問題が出ました。
「質問に対して質問で答えるな!」って怒られそうですけど。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 変数について教えてください
似たような質問なら自分もしたんですよ。
先生「変数を使わないでプログラムを書いたらどうなる?」
自分「やったことないから分かんないっス!先生はどう思いますか?」
先生「どうるかね?」
自分「先生もやったことないんですか?」
先生「いや先生は答え知ってるんだけどね。ぶっちゃけプログラムは動かないんだけどね?」
自分「何でうごかないんすか?」
先生「それを今君に聞いてるんでしょ!」
って感じで誘導に失敗しました(笑)
先生「変数を使わないでプログラムを書いたらどうなる?」
自分「やったことないから分かんないっス!先生はどう思いますか?」
先生「どうるかね?」
自分「先生もやったことないんですか?」
先生「いや先生は答え知ってるんだけどね。ぶっちゃけプログラムは動かないんだけどね?」
自分「何でうごかないんすか?」
先生「それを今君に聞いてるんでしょ!」
って感じで誘導に失敗しました(笑)
Re: 変数について教えてください
うろ覚えのせいなのかもしれませんが、問題の体をなしていません。
プログラムか問題か、少なくとも一方に間違いがありませんか?
プログラムか問題か、少なくとも一方に間違いがありませんか?
Re: 変数について教えてください
えっと、先生にしつこく質問したところ、新たな情報が得られました。
なんか、プログラムはあまり関係ないっぽいです。
うろ覚えなのでまた箇条書きします。
·if(初期値;ループ条件;増分)のかっこ内は、何故数値をそのまま入れるのではなく、変数(iとかn)を使うのか?
·「変数を使用しないとプログラムが実行できないから」という答えではない
·教科書や問題集にはのってなくて、考察?だから調べてもあまり意味がない
·C言語のセンスがある人はすぐわかる
·ヒント「人間は数値だけの方が見やすいけど、コンピューターは変数の方が分かりやすい。その理由について考えればわかる」
·ヒント2「数値だけ入れても動かないようにしてあるのには理由がある。その理由について(ry」
みたいなことをいってました。
すぐわかる人はすぐわかるそうです。もし分かったら教えてください!
なんか、プログラムはあまり関係ないっぽいです。
うろ覚えなのでまた箇条書きします。
·if(初期値;ループ条件;増分)のかっこ内は、何故数値をそのまま入れるのではなく、変数(iとかn)を使うのか?
·「変数を使用しないとプログラムが実行できないから」という答えではない
·教科書や問題集にはのってなくて、考察?だから調べてもあまり意味がない
·C言語のセンスがある人はすぐわかる
·ヒント「人間は数値だけの方が見やすいけど、コンピューターは変数の方が分かりやすい。その理由について考えればわかる」
·ヒント2「数値だけ入れても動かないようにしてあるのには理由がある。その理由について(ry」
みたいなことをいってました。
すぐわかる人はすぐわかるそうです。もし分かったら教えてください!
Re: 変数について教えてください
if は for の間違いですね。御魁 さんが書きました:·if(初期値;ループ条件;増分)のかっこ内は、何故数値をそのまま入れるのではなく、変数(iとかn)を使うのか?
さらに、初期値ではなく「初期化」です。
for (1; 10; 1) ではなぜだめなのかという質問ですね。
私なら、次のように回答します。
for 文の構文は、
「for (初期値; 終了値; 増分値) 文」ではなく、
「for (初期化; ループ条件; 増分) 文」だからです。
もっと厳密にいうと、
for 文の構文は、「for (式; 式; 式) 文」であり、
初期化や増分などに使わなければならないということではありません。
for (1; 10; 1) と書いたら、無限ループになるだけです。
変数を使う理由は、2番目の式がループ条件に使用されるので、
0 か、0以外の値になる必要があるからです。
Re: 変数について教えてください
for文の構文は、「for (式; 式; 式) 文」だけではなく、
「for (宣言 式; 式) 文」もあります。だから、
for (int i = 0; i < 10; i++) と書けるのです。
for文の中に変数を書かないで済ます方法を考えてみました。
追加した関数の中で変数を使っていますが。
余談ですが、Ruby だと変数を使わなくても書けます。
「for (宣言 式; 式) 文」もあります。だから、
for (int i = 0; i < 10; i++) と書けるのです。
for文の中に変数を書かないで済ます方法を考えてみました。
#include <stdio.h>
int times(int i)
{
static int k = -1;
if (k < 0) k = i;
return k--;
}
int main(void)
{
for (; times(10); )
printf(" piza");
puts("\n--");
for (; times(3); )
printf(" piza");
return 0;
}
余談ですが、Ruby だと変数を使わなくても書けます。