変数について教えてください

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
御魁

変数について教えてください

#1

投稿記事 by 御魁 » 3年前

#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=とか書くよりも数字を入れた方が楽なのにわざわざ変数を使う理由は?

なんかこんな感じのことを言われたのですがさっぱりわかりません。誰か変数について詳しい人がいたら教えてください!!!

box
記事: 1745
登録日時: 9年前

Re: 変数について教えてください

#2

投稿記事 by box » 3年前

御魁 さんが書きました: というプログラムで、「for(i=1;i<=10;i++)のとこは何故変数を使用するのか?」という問題が出ました。
自分だったら、「じゃあ、変数を使わずに10回(一般にn回)ループするにはどうすればいいんですか?」って逆質問しますね。
「質問に対して質問で答えるな!」って怒られそうですけど。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

御魁

Re: 変数について教えてください

#3

投稿記事 by 御魁 » 3年前

似たような質問なら自分もしたんですよ。
先生「変数を使わないでプログラムを書いたらどうなる?」
自分「やったことないから分かんないっス!先生はどう思いますか?」
先生「どうるかね?」
自分「先生もやったことないんですか?」
先生「いや先生は答え知ってるんだけどね。ぶっちゃけプログラムは動かないんだけどね?」
自分「何でうごかないんすか?」
先生「それを今君に聞いてるんでしょ!」

って感じで誘導に失敗しました(笑)

たいちう
記事: 418
登録日時: 9年前

Re: 変数について教えてください

#4

投稿記事 by たいちう » 3年前

うろ覚えのせいなのかもしれませんが、問題の体をなしていません。
プログラムか問題か、少なくとも一方に間違いがありませんか?

御魁

Re: 変数について教えてください

#5

投稿記事 by 御魁 » 3年前

えっと、先生にしつこく質問したところ、新たな情報が得られました。
なんか、プログラムはあまり関係ないっぽいです。
うろ覚えなのでまた箇条書きします。

·if(初期値;ループ条件;増分)のかっこ内は、何故数値をそのまま入れるのではなく、変数(iとかn)を使うのか?
·「変数を使用しないとプログラムが実行できないから」という答えではない
·教科書や問題集にはのってなくて、考察?だから調べてもあまり意味がない
·C言語のセンスがある人はすぐわかる
·ヒント「人間は数値だけの方が見やすいけど、コンピューターは変数の方が分かりやすい。その理由について考えればわかる」
·ヒント2「数値だけ入れても動かないようにしてあるのには理由がある。その理由について(ry」

みたいなことをいってました。
すぐわかる人はすぐわかるそうです。もし分かったら教えてください!

かずま

Re: 変数について教えてください

#6

投稿記事 by かずま » 3年前

御魁 さんが書きました:·if(初期値;ループ条件;増分)のかっこ内は、何故数値をそのまま入れるのではなく、変数(iとかn)を使うのか?
if は for の間違いですね。
さらに、初期値ではなく「初期化」です。

for (1; 10; 1) ではなぜだめなのかという質問ですね。

私なら、次のように回答します。

for 文の構文は、
「for (初期値; 終了値; 増分値) 文」ではなく、
「for (初期化; ループ条件; 増分) 文」だからです。
もっと厳密にいうと、
for 文の構文は、「for (式; 式; 式) 文」であり、
初期化や増分などに使わなければならないということではありません。

for (1; 10; 1) と書いたら、無限ループになるだけです。
変数を使う理由は、2番目の式がループ条件に使用されるので、
0 か、0以外の値になる必要があるからです。

かずま

Re: 変数について教えてください

#7

投稿記事 by かずま » 3年前

for文の構文は、「for (式; 式; 式) 文」だけではなく、
「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 だと変数を使わなくても書けます。

コード:

10.times { print " piza" }

御魁

Re: 変数について教えてください

#8

投稿記事 by 御魁 » 3年前

かずまさんのNo.6で書いてくれたやつを答えたら口頭試問受かりました!
教えてくださった皆さん(特にかずまさん)ありがとうございました!!!

閉鎖

“C言語何でも質問掲示板” へ戻る