5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語ですがfor文とwhile文って・・・。

1 : :02/05/12 13:59
どっちがマイナーですか?
一般参考書などではfor文から記載していて学校の先生なんかも
for文から教えています。

でも俺はwhile文からfor文にした方が分かり易いんです。
みなさんどうですか?こんな俺はC歴3ヶ月です。

2 :デフォルトの名無しさん:02/05/12 14:00
すざーーー!

3 :デフォルトの名無しさん:02/05/12 14:01
俺はwhileから教えるのが正しい姿だと思う、
だがクソスレ立て1は氏ね。

4 :デフォルトの名無しさん:02/05/12 14:02
マイナーかどうかってレベルの話じゃないと思う
for文の方がお約束が多くてめんどくさいのは確かだけど
歴史的なもんだと思って諦めるしか

5 :デフォルトの名無しさん:02/05/12 14:06
どっちも使うな!
ifとgotoがあれば事は足りる。

6 :デフォルトの名無しさん:02/05/12 14:25
>>1に質問です。
日本語の助詞の「が」と「は」はどちらがマイナーですか?
英語の前置詞の"on"と"in"はどちらがメジャーですか?

7 :デフォルトの名無しさん:02/05/12 14:32
>>6
それはチト的外れかと
forやwhileは書き方次第で無理やり相互に(まーif、gotoでもいいけど)書き換えることが可能だが
が、は、on、inでは無理でしょ

8 :デフォルトの名無しさん:02/05/12 16:38
ねぎとながねぎはどちらがまいなーですか???

9 :デフォルトの名無しさん:02/05/12 17:40
俺は
for(int i = 0; i < n; i++)
以外にforを使ったことがない。
上のより複雑になる場合はwhile使う。

10 :デフォルトの名無しさん:02/05/12 18:04
for( FooArray::iterator i = array.begin(); i< array.end(); i++ )トカ
for( char *p = strtok(str, ','); p; p = strtok(NULL, ',') )トカ
for( char *p = str; *p; p++) トカ

11 :デフォルトの名無しさん:02/05/12 18:12
for(; hogehoge ;){
}

while(hogehoge){
}

12 :デフォルトの名無しさん:02/05/12 18:34
for(;;) ;

int T_T=1;
while(T_T) ;

13 :デフォルトの名無しさん:02/05/12 18:37
for()覚えればwhile()覚える必要無し
while()覚えればfor()覚える必要無し

14 :デフォルトの名無しさん:02/05/12 19:01
>>13
ざけんなゴルァ!

15 :デフォルトの名無しさん:02/05/12 19:13
このスレに行ってくれ。

C言語なら、俺に聞け! <19>
http://pc.2ch.net/test/read.cgi/tech/1020756993/

16 :デフォルトの名無しさん:02/05/12 19:18
forは文法的に変。


17 :デフォルトの名無しさん:02/05/12 19:20
>>16
非国民

18 :デフォルトの名無しさん:02/05/12 19:37
>>1の頭にウソコぷりぷり。

19 :デフォルトの名無しさん:02/05/12 20:22
>>16
ネタと分かりきっているが、一応聞いてやる。
何が変なんだ?

20 :デフォルトの名無しさん:02/05/12 20:27
for(;;)
  ↑丸括弧の中に;が入ってるのが変

といってみる。

21 :デフォルトの名無しさん:02/05/12 20:39
>>20
だよなぁ。

22 :デフォルトの名無しさん:02/05/12 21:44
>>20
forも悲しんでいるので、許してやってください。

23 :デフォルトの名無しさん:02/05/14 04:22
>>19
for(i = 0, j = 0; i < 10; i++, j++){
}
普通一つの文はセミコロンで終わるのに、forの中ではカンマで終わる
ことがある。
この辺がキモチワルイ。

24 :デフォルトの名無しさん:02/05/15 06:18
>>1
 どっちかなあ(笑)。

 多分、BASICやFORTRANから入った人は while がマイナーだと思う。
 おいらも当初は while を使えなかった。

 しかしそれよりも、do { } while の方がマイナーと思われるが、どうか?(^^;


25 :デフォルトの名無しさん:02/05/15 14:28
構造的には
・goto label;
・do;while();
・while();
・for(;;);

の順番でやるのが正しいと思う、
ただfor教えちゃえば他のは適当に出来るから、便宜的にforを先に教えてるんだと思われ

26 :デフォルトの名無しさん:02/05/15 14:32
カンマは別にforじゃなくたって使えるが。

27 :デフォルトの名無しさん:02/05/15 14:35
n=10;
do{
}while(--n);

do{}while();大好き♪
コンパイラがプア―なときには最速!


28 :棄教者 ◆witdLTi2 :02/05/15 14:36
while( 式 ) ステートメント
for( ; 式 ; ) ステートメント
上と下は同じ動作をする?

29 :デフォルトの名無しさん:02/05/15 14:54
Cのfor文は最高だろ。
>>16みたいなマヌケは一生for文使わんでよし。

30 :デフォルトの名無しさん:02/05/15 14:56
>23
C系言語の式について勉強しなおすべき。

>28
同じ

31 :デフォルトの名無しさん:02/05/15 14:59
for(i=0;i<10;++i){};
の後にiを参照したいときって頭こんがらかりません?


32 :デフォルトの名無しさん:02/05/15 15:07
Delphiも使うのでループ終了後にそのままループカウンタを使わなくなった。


33 :デフォルトの名無しさん:02/05/15 15:09
やっぱそうなるとwhileだよね。

34 :デフォルトの名無しさん:02/05/15 15:28
全部使えるようになれよ。

35 : ◆dh.Xm/EI :02/05/15 17:26
>>34
思わずワラタ

36 :棄教者 ◆witdLTi2 :02/05/15 18:26
>>1
どんなときもどんなときもfor,while,do-whileを使わないでgotoでハックし続けたら
あなたのことを神と呼びます。

37 :棄教者 ◆witdLTi2 :02/05/15 18:27
やべ。くそスレageちゃった。ごめそ。

38 :デフォルトの名無しさん:02/05/15 18:28
そもそも>>1は何が知りたいんだろう。
マイナーだったら使わない気なのだろうか。

39 :デフォルトの名無しさん:02/05/15 18:31
>>37
ageるにしろsageるにしろ
お前の書き込みが面白かったことって一度もないよ。

40 :デフォルトの七資産 ◆N88lfDGw :02/05/15 19:55
BASICかPascalあたりで勉強すれば自明であryoe?
Cはforが強力すぎるし。

41 :デフォルトの名無しさん:02/05/15 21:08
>>1はCやってんだから初めからCで覚えろよ

42 :デフォルトの名無しさん:02/05/16 09:57
>>41
いきなりCなんて・・・せっかちさん(はぁと)

43 :デフォルトの名無しさん:02/05/16 14:49
最初はアセンブラからっすね。(素人道程)


44 :デフォルトの名無しさん:02/05/18 02:37
涙の無限ループ

for(;;);

int T_T = 1;
while(T_T);


45 :デフォルトの名無しさん:02/06/30 15:07
while があれば for はいらない

46 :デフォルトの名無しさん:02/06/30 15:22
ifとgotoがあれば何もいらない。

47 :デフォルトの名無しさん:02/06/30 15:25
>>46
if ififififif

goto if gotoifgotogoto


確かに、ifとgotoで2つの状態を表せるからコンピュータで扱える情報はすべて扱えるな。
逆に、これ以上の符号は無駄であると。なるほど。理にかなっている。

でも、これでプログラムを書けないことはないが死ぬほど非効率的。

48 :デフォルトの名無しさん:02/06/30 17:10
今、For i=1 To 10 Step 2 とかやってる漏れは逝ってよしですか?

49 :棄教者 ◆witdLTi2 :02/06/30 23:30
>>48
ifとgotoを使って

10 i = 1
30   ....
40   i = i + 2
50 if( i <= 10 ) 後藤 10

50 :デフォルトの名無しさん:02/06/30 23:33
mov EAX,1
add EAX,2
cmp EAX,10
jle 後藤さん

51 :デフォルトの名無しさん:02/06/30 23:33
#define _ true
for(;_;)printf("うわーん\n");

52 :goto嫌い:02/06/30 23:38
...

53 :デフォルトの名無しさん:02/06/30 23:38
>>52
基本的にはそのスタンスで問題ない。

54 :デフォルトの名無しさん:02/06/30 23:42
>>1
k&rの本(Cを作った奴の本)だと、whileから教えてる。
で、for を教えて、for は while でも実現できるよー。
って教えてる。forの方がwhileでやるよりエレガントに間違いが
少なく書けるみたいな感じで。
forは実際、whileのfor形を良く使うから for として定義したっぽい経緯がうかがえる。


55 :デフォルトの名無しさん:02/06/30 23:44
goto大好き。longjmpはもっと好き。

56 :デフォルトの名無しさん:02/06/30 23:45
>>55
あんた、遠足に酢昆布とか梅干しとか大量に持っていった口だろ?

57 :デフォルトの名無しさん:02/06/30 23:47
Cでgoto使わないでまともなプログラムがかけるの?

58 :デフォルトの名無しさん:02/06/30 23:51
>>57
>まともな
主観。

59 :デフォルトの名無しさん:02/06/30 23:52
goto嫌う人って何百行もある関数を書いちゃう人?

60 :デフォルトの名無しさん:02/06/30 23:52
>>57
try...catch() はどうよ?


61 :デフォルトの名無しさん:02/06/30 23:53
http://pc.2ch.net/test/read.cgi/linux/1025448524/
linux板住人との戦争がはじまったYO

62 :デフォルトの名無しさん:02/06/30 23:55
>>60
なにそれ?

63 :デフォルトの名無しさん:02/06/30 23:57
>>57
まじっすか、>>60もいまいちよく分からんし。

>>59
んじゃ、君はgoto使わないとまともに書けないのかと(略)

64 :60:02/06/30 23:59
>>62-63
構造化例外処理じゃ


65 :62:02/06/30 23:59
>>64
なんの言語だよ!!

66 :デフォルトの名無しさん:02/07/01 00:01
>>63
Cで例外時に敢えてgoto使うのは常套手段だろ。

67 :デフォルトの名無しさん:02/07/01 00:01
Cになかったっけ?
もしかC++だけかも...スンマソ


68 :デフォルトの名無しさん:02/07/01 00:02
>>67
Cって良くも悪くもそんなに高級じゃない。

69 :デフォルトの名無しさん:02/07/01 00:03
入れ子ループから一気に抜けるときはフラッグ立てるよりもgoto使った方がわかりやすいよね?

70 :デフォルトの名無しさん:02/07/01 00:05
>>69
それ以外に利用例を聞かないな。

いっそallbreakみたいなのを作れば良かったね。

71 :デフォルトの名無しさん:02/07/01 00:12
寧ろ、goto文の使い方いまいち分からないぐらいが幸せだと思います。
これ俺だけど

72 :名無しさん@カラアゲうまうま:02/07/01 00:17
>>70
途中まで抜けたいときに困るだろう。
どっちかといえばPerlみたいにブロックにラベルをつけるとか。

73 :デフォルトの名無しさん:02/07/01 00:19
try...catch()はコストがかかるからassertでお願いします。


74 :デフォルトの名無しさん:02/07/01 00:20
gotoを使ってエラー処理を後ろにまわして、関数の大部分に正常処理だけを書いていく
というスタイルを見たときは感動とともに目から鱗が落ちた。



75 :デフォルトの名無しさん:02/07/01 00:21
入れ湖ループを一気にbreakさせたいなんて
そんなないと思うんだけど…。

76 :デフォルトの名無しさん:02/07/01 00:21
>>74
じゃあ例外見たときは万々歳でしょ。
ONERRORGOTOの欠点がすべて解消されてて。

77 :デフォルトの名無しさん:02/07/01 00:21
>>75
ある。

78 :デフォルトの名無しさん:02/07/01 00:22
>>72
FF風にw

breakga(3);
ループ3つ抜ける。

みたいなw

79 :デフォルトの名無しさん:02/07/01 00:24
whileってどういう時に使う?forで事足りないか?

80 :デフォルトの名無しさん:02/07/01 00:24
gotoよりはthrowの方がsafetyなんだよなぁ
C++限定だけど。

81 :デフォルトの名無しさん:02/07/01 00:25
>>78
やだ。名前の方がわかりやすい。

82 :74:02/07/01 00:25
>76
いや、(C++の)例外は知ってたけど使い方とかいまいちぴんとこなかった時に
>>74のコード見て悟った。

あ、もちろんgotoと例外の違いは理解してるよ。

83 :名無しさん@カラアゲうまうま:02/07/01 00:26
>>78
ネスト数えんのはイヤ。

84 :デフォルトの名無しさん:02/07/01 00:26
完全に>>1がおいてけぼりです

85 :デフォルトの名無しさん:02/07/01 00:27
>>79
後置評価。

86 :デフォルトの名無しさん:02/07/01 00:27
処理系依存のTRYとかならある。

87 :デフォルトの名無しさん:02/07/01 00:27
gotoでエラー処理ってVBの書き方だね。
C++に慣れてる漏れには非常に違和感を覚えるよ


88 :デフォルトの名無しさん:02/07/01 00:28
>>79
while(File.read())
{
}

for(;File.read();)
{
}

にすりゃ言いじゃんって言うのはナンセンスかと。

89 :デフォルトの名無しさん:02/07/01 00:29
>>85
do{}while();?

90 :デフォルトの名無しさん:02/07/01 00:29
void foo(void) {
  try{
   hoge();
  } catch(const char* s) {
   printf(s);
  }
}

void hoge(void) {
  throw "エラーだゴルァ!!!";
}

91 :デフォルトの名無しさん:02/07/01 00:29
goto文なんてBASICでしか使わないよ。

92 :デフォルトの名無しさん:02/07/01 00:30
>>91
アセンブラは?大抵JUMPっていうけど。

93 :デフォルトの名無しさん:02/07/01 00:30
>>88
ナンセンスになっちゃうかー(w

94 :デフォルトの名無しさん:02/07/01 00:31
>91
自分に使う能力が無いとはっきり言えよ。

95 :デフォルトの名無しさん:02/07/01 00:31
後藤はつかわなくてよろしい。


96 :デフォルトの名無しさん:02/07/01 00:32
舞台がC言語のことなら・・・スレじゃなくてよかった。

97 :デフォルトの名無しさん:02/07/01 00:32
for(;File.read();)
{
}

こんなの書く人は変人だな

98 :デフォルトの名無しさん:02/07/01 00:33
例えば1つのプログラムの中にエラーを検知する部分が何箇所かあって
そのエラー時には全て同じ処理をする場合どうする?

1.同じ処理を書く
2.関数にする
3.gotoを使う
4.質問が良くわかりませんがなにか?

99 :デフォルトの名無しさん:02/07/01 00:34
2

100 :デフォルトの名無しさん:02/07/01 00:34
>>97
同様に
i=0;
while(i<10){
/* なにかやる */
i++;
}
もな。場合によってうまく書ける方を使えばよいとおもう。

101 :デフォルトの名無しさん:02/07/01 00:34
C++なら

for(int i = 0;i < 10;i++)

がデキルのは十分メリットだと胸を張って言えるけどね。

102 :デフォルトの名無しさん:02/07/01 00:35
>>98
フラグ立てる。

103 :デフォルトの名無しさん:02/07/01 00:35
>>100
>場合によってうまく書ける方を使えばよいとおもう。
それを逝ったらイカンザキ


104 :デフォルトの名無しさん:02/07/01 00:35
>>98
5,質問の意味はわかるが低能な俺には解決法が思い浮かばない。

105 :デフォルトの名無しさん:02/07/01 00:36
>>98
C言語だと仮定して。
関数内で確保したリソースの開放なんかを考えると、3.が楽でいいと思うがどうか?

C++だとデストラクタに任せられるけどな。

106 :デフォルトの名無しさん:02/07/01 00:37
>>98
プログラムってことは様々な関数の中に同じエラー処理をするべき検知場所があるんだよね?

107 :デフォルトの名無しさん:02/07/01 00:37
>>101
Cじゃできなかったのか…変数宣言は最初だもんな…
つーかVCが標準に準処してないから(正確には違う)

{for(int c; c < 10; c++){
}}
とか書くけどどうよ。

108 :デフォルトの名無しさん:02/07/01 00:38
>>106
いや一つの関数限定&C限定。

109 :デフォルトの名無しさん:02/07/01 00:39
>>108
じゃあgoto。

110 :デフォルトの名無しさん:02/07/01 00:39
>>107
ブロックの最初だっけ?
って言うかあのint iのスコープはforのブロック内でいいの?

111 :デフォルトの名無しさん:02/07/01 00:39
エラー地返してシランプリ

112 :デフォルトの名無しさん:02/07/01 00:39
>>107
{int c;
for(c = ?;c < 10;c++){
...
}
}
でないかい?


113 :デフォルトの名無しさん:02/07/01 00:40
>>98
何箇所(3箇所以上)かあって、
そのブロックが十行以上なら、多分俺は関数にする。

114 :デフォルトの名無しさん:02/07/01 00:42
>>112
いや、漏れC++厨だから、Cに準処させない(藁
pascalみたいな構文ならともかくな〜

115 :デフォルトの名無しさん:02/07/01 00:43
じゃあlongjmpで決まりだな

116 :デフォルトの名無しさん:02/07/01 00:44
>>115
setjmpが面倒。jmp_bufを広域変数にしないといけないし(関数の引数にするとか言うなよ)・・

117 :デフォルトの名無しさん:02/07/01 00:44
int foo(x,y,z)
int x;
int y;
char *z;
{...}
萌え〜

118 :デフォルトの名無しさん:02/07/01 00:46
>>117
最近のコンパイラではとおらない罠

119 :デフォルトの名無しさん:02/07/01 00:48
>>117 前時代的

120 :117:02/07/01 00:50
A80(不治痛)のUNIXにはこうするしかなかった...

121 :デフォルトの名無しさん:02/07/01 00:51
>>120
あんたも不治痛と書くのか。奇遇だな。

122 :117:02/07/01 00:54
>>121
仕様書にはまさか書けないけどね...


123 :名無しさん@カラアゲうまうま:02/07/01 00:54
>>118
通るだろ、Cコンパイラなら。

124 :デフォルトの名無しさん:02/07/01 00:55
腐痔痛

125 :デフォルトの名無しさん:02/07/01 00:59
>>123
gccでこけました

126 :名無しさん@カラアゲうまうま:02/07/01 01:01
バージョンは? C++としてコンパイルしてるわけじゃないよな、もちろん。

127 :デフォルトの名無しさん:02/07/01 01:03
>125
何もせずに通ったが。ちなみに2.96

128 :デフォルトの名無しさん:02/07/01 01:09
K&RスタイルがこけたらANSI非準拠。

129 :デフォルトの名無しさん:02/07/01 01:12
エラーじゃなくて警告じゃない?

130 :デフォルトの名無しさん:02/07/01 01:19
>129
-Wall で何も出なかったよん。
-ansi -pedantic -Wall でも何もなし。

131 :lisp名無しさん:02/07/09 17:22
(λ (for とか while とかってプププ。
(男は再帰だろ。))



132 :デフォルトの名無しさん:02/07/09 22:33
>>131
はっきり言ってスタック浪費のコストを考えるとバカらしい。

133 :名無しさん@カラアゲうまうま:02/07/10 07:27
>>131
閉じてない

134 :lisp名無しさん:02/07/10 12:15
;;>>132
(read-this 'http://www.shiro.dreamhost.com/scheme/docs/tailcall-j.html)

;;>>131
(sumaso)
)

22 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)