09/06/24 15:27:25
break,continueを絶対使わない、returnは関数の最後に一個だけって
癖がつくのとどっちが有害だろうか。
40:デフォルトの名無しさん
09/06/24 15:27:50
>>38
安易に禁止する事で、breakの使い方を知らない子供たちを量産するんですね
41:デフォルトの名無しさん
09/06/24 15:45:33
>>39
使い所を知ってるからそういいたいんだろうけど、相手は初心者だよ?
42:デフォルトの名無しさん
09/06/24 15:50:20
>>39
適切なbreak, continue, returnの使用は、そのうち学習すればいい。
適切じゃない使い方をさせないための制限でしょ。
break, continue, return, gotoを最初から無制限に使いまくれとでも言いたいの?
43:デフォルトの名無しさん
09/06/24 15:53:02
古き良きPascalやLispを使わせれば問題ないんだよ。
44:デフォルトの名無しさん
09/06/24 15:54:04
よくある、配列の要素をfor文で巡回する様な処理の場合も、
必要な値が見つかってもbreakしないで最後の要素まで
延々と検査するんだろうな。
それは悪い癖じゃないのかな?
45:デフォルトの名無しさん
09/06/24 15:56:23
使いながらおぼえればいいだろ。
breakとかcontinueって、そんなに危険物なのか。
たいがいに入門書にはbreakやら、省略せずに教えてるけど、
そういう教科書で勉強した初心者は、すごいことになりそうだな。
46:デフォルトの名無しさん
09/06/24 15:57:46
breakが無い言語ではプログラミング出来ないんだろうなぁ
47:デフォルトの名無しさん
09/06/24 15:58:46
>>39
一年間の講義を終えた後でbreakの存在を知った生徒はどう思うんだろうね。
独自にbreakの使い方を勉強して、結局は悪い癖を身に付けちゃう子も居るだろうね。
授業で教えてくれなかったし…
48:デフォルトの名無しさん
09/06/24 16:01:01
>>47
break禁止って言われるわけだから、一年後に存在に気づくなんてあり得ないだろ馬鹿
49:デフォルトの名無しさん
09/06/24 16:02:25
>>48
名前を知ってるのと、適切な使い方を知ってるのは雲泥の差だろ…
50:デフォルトの名無しさん
09/06/24 16:04:22
break禁止令を不自然だと思わない人間がム板にいる事が驚きだわあ
51:デフォルトの名無しさん
09/06/24 16:09:36
スポーツとかと違って、プログラミングの癖なんていくらでも修正きくんで、
どうでもいいっていえばどうでもいいけどな。
初心者のころにbreakは一般的でないって教えられて、以後、それを信じ込んで
考えを変えられないとかってのは、癖どうこう以前にダメだしな。
(じっさいそういうヤツ一杯いるけど)
こういう、怪しいスタイルを教えるやつって一杯いるんで、自分で自衛するか
ない。
52:デフォルトの名無しさん
09/06/24 16:14:52
出来る事ならば、学校の先生はそういう怪しいスタイルから
生徒を守る側に立って欲しいよな
53:デフォルトの名無しさん
09/06/24 18:33:26
こういうのは、教科書の問題も大きい。
世の中の本の中には、とりあえず、breakやgotoの文法だけ
教えればいいだろうってんで、非現実的なサンプルプログラムを
載せているものがある。極端な例だと、
for (i = 0; i < 10; i++) {
...
if (i == 7) goto label;
...
}
label:
なんてのを見たことがある。
こいうのは、break, continue, gotoだけじゃなくて、
switch, do-while もそうなんだけど、短くてしかもちゃんと
必然性のあるサンプルプログラムって作るのって、結構難しいんだよね。
54:デフォルトの名無しさん
09/06/24 18:44:43
例文はこういうので良いんじゃないの。
URLリンク(okuyama.mt.tama.hosei.ac.jp)
ちょっとググってみたけど、確かにあまり意味無いなあと思う例文も多いですね。
55:デフォルトの名無しさん
09/06/24 18:54:39
>>54
普通は、配列を習うのは制御構造の後。
56:デフォルトの名無しさん
09/06/24 20:18:26
>>18-
>>17 が見えないか?
見えてるけど、語りたいのか?莫迦のくせに。
57:デフォルトの名無しさん
09/06/24 20:40:04
>>55
講師が↓このどちらかを言えば問題無いでしょ。
『breakについては配列を勉強してから再度詳しく取り上げます』
『配列については後で詳しく説明します』
58:デフォルトの名無しさん
09/06/24 22:06:33
breakとかcontinueとか、時間がないから省略するってのは、まだしも
難しいとかクセがつくから教えないってのはありえない。
59:デフォルトの名無しさん
09/06/24 22:53:21
この教師、フラグをガンガン使いまくってでも1個のbreakを避けることの方が重要なんだろうな。
まあ実社会でそういう害毒を撒き散らさないんなら、好きにやってていいよw
60:デフォルトの名無しさん
09/06/24 23:27:42
breakって、関数型言語でループ(もどき)を回した時の
ガードに相当するんじゃないの?
61:デフォルトの名無しさん
09/06/25 11:15:06
>>44
先生!break使わずに早や抜け出来ました!
int i, targetIndex = INT_MAX;
int count = countOfArray(array);
for(i = 0; i < count; i++) {
if(a[i] == target && targetIndex != INT_MAX) {
targetIndex = i;
count = i;
}
}
62:デフォルトの名無しさん
09/06/25 15:07:43
>>61 break 使わないと 可読性がますます下がるな...
↓も break 使ってないがマダマシ?
int searchTargetIndex(int* array, int target)
{
int i;
int count = countOfArray(array);
for (i = 0; i < count; i++) {
if (array[i] == target) {
return i;
}
}
return INT_MAX;
}
targetIndex = searchTargetIndex();
63:62
09/06/25 15:09:08
すまん.
途中 return も禁止だったね.
64:62
09/06/25 15:10:13
しかも, 呼び出し
targetIndex= searchTargetIndex(array, target);
だ.
65:デフォルトの名無しさん
09/06/25 21:04:33
なんで for? while 使えばいいじゃん
66:デフォルトの名無しさん
09/06/25 21:09:29
done = 0;
while (!done) {
}
67:デフォルトの名無しさん
09/06/25 21:13:40
そして余計なフラグが一個増えた
68:デフォルトの名無しさん
09/06/25 23:17:41
break禁止よりwhileの使い方をちゃんと教えた方が有益だな、と思いました
69:デフォルトの名無しさん
09/06/26 03:18:36
break禁止ってパフォーマンスに関わってくる気がする
70:デフォルトの名無しさん
09/06/26 09:36:41
課題の評価方法として、例えばbreakは減点1、gotoは減点50、
フラグ目的の変数は減点2、などとして評価するのはどうだろう。
71:デフォルトの名無しさん
09/06/26 10:10:37
使わなかったら点数が倍とか
72:デフォルトの名無しさん
09/06/26 10:28:58
なんでbreakやフラグで減点なんだ。
73:デフォルトの名無しさん
09/06/26 10:51:47
減点最小に最適化しろってことだろ。
74:デフォルトの名無しさん
09/06/26 10:54:20
goto/break憎しでそれを避けるコードやそういうコードを書く奴って糞ばっかりなんだけど。
経験的に言って。
75:デフォルトの名無しさん
09/06/26 11:01:28
>>74
そういうコードは大きく減点するようにすればいい。
76:デフォルトの名無しさん
09/06/26 12:46:38
>>65
for-breakを使うことを知って、それで思考停止する馬鹿が多いから、break禁止にも一理あると言うことですな。
77:デフォルトの名無しさん
09/06/26 12:56:15
一理もないような気がする。
78:デフォルトの名無しさん
09/06/26 14:46:39
無駄な思考は要らんだろ
他に頭回せよ馬鹿
79:デフォルトの名無しさん
09/06/26 14:46:42
気のせい
80:デフォルトの名無しさん
09/06/26 14:47:35
>>78
君プログラマに向いてないよ
81:デフォルトの名無しさん
09/06/26 15:02:44
>>80
お前が向いてない
金にならない
82:デフォルトの名無しさん
09/06/26 15:51:59
>>80
悔しいね~
83:デフォルトの名無しさん
09/06/26 15:52:54
whileやdoを使うことを一ミリも考慮しない馬鹿
84:デフォルトの名無しさん
09/06/26 16:39:04
まだ頑張ってるのかw
break禁止が非難されると困るのはどんな人なんだろうね。
85:デフォルトの名無しさん
09/06/26 16:47:59
ifとgotoさえあれば他は要らない
86:デフォルトの名無しさん
09/06/26 16:51:33
>>85
それで各行に番号みたいのがついてれば、ラベル名考える手間がなくて便利じゃね
87:デフォルトの名無しさん
09/06/26 17:36:05
>>84
いやいや、誰かがbreakを禁止すると困る人が多いようだよ
88:デフォルトの名無しさん
09/06/26 17:41:14
>>84
別に困らないけど、breakを禁止にすることによって得られるメリットがあることを納得しない
人がさんざん反論するから相手してるだけ。
89:デフォルトの名無しさん
09/06/26 17:44:45
もうちょっとましな暇つぶししようぜ。
いくら時間をつぎ込んでも2chはお前を救ってはくれないぞ。
90:デフォルトの名無しさん
09/06/26 17:50:23
生産性の無いことするの好きなんだね
91:デフォルトの名無しさん
09/06/26 18:41:26
>>87
そりゃ困るだろ。
breakの使い方も知らない人間とコーディングするのは誰だって嫌だぜ。
歪んだ知識を持った奴がおかしな理屈を振りかざすのも面倒だし。
92:デフォルトの名無しさん
09/06/26 19:02:35
あり得ない話だが、仮にbreak禁止論が一般に広まったとしたら、
一番困るのは、>>1が行ってる短大の講師だろう。
93:デフォルトの名無しさん
09/06/26 19:20:15
break禁止論が一般に広まったとしたら、gotoで書くだけのような気がする。
goto駄目なら、例外とか、関数リターンとか、フラグ…
はっきりいって余計に悪い!
94:デフォルトの名無しさん
09/06/26 20:02:36
breakみたいなよく使われる機能は授業の中できちんと教えるべきですよね。
もしbreakの使い方で問題が起こるなら(勿論そんな事は稀ですが)、講義の中で
フォローしてあげるのが先生の仕事ではないでしょうか。
それがそんなに難しい話だとは思えません。
95:デフォルトの名無しさん
09/06/26 20:04:38
>>88
break を教えて貰えない事による、生徒の側のメリットって何よ?
96:デフォルトの名無しさん
09/06/26 20:48:26
文系短大のプログラミング入門の授業だったら、
break なんてちゃんと教えてる時間はなさそう。
禁止する理由にはならないけど。
というか、Cなんて教えるな、という話になる。
97:デフォルトの名無しさん
09/07/01 08:57:06
毎回規約が変わるのなら勉強としては良いかも知れない
今回はbreakやcontinueや途中return禁止、次回はelse禁止とか
98:デフォルトの名無しさん
09/07/01 13:19:03
勉強にはなるかも知れんが
仕事にならんなw
99:デフォルトの名無しさん
09/07/01 20:13:27
Java みたいに goto 禁止とか、
関数型言語みたいに破壊的代入禁止とか、
JavaScript みたいに sleep 禁止とか、
>>1 の話は全然レベルが違うか…
100:デフォルトの名無しさん
09/07/02 15:21:14
goto のかわりに例外投げれば良いじゃない。
break のかわりに例外投げれば良いじゃない。 throw ELoopBroken みたいな。
途中 return のかわりに例外投げて関数の最後で補足すれば良いじゃない。throw EReturn(戻り値) みたいな。
101:デフォルトの名無しさん
09/07/02 17:42:23
それ C じゃ通用しないお
102:デフォルトの名無しさん
09/07/02 17:49:03
phpだと break 2 とか break 3 って、複数ループジャンプできなかったっけ
103:デフォルトの名無しさん
09/07/02 18:47:30
もうsetjump(3)とlongjmp(3)でいいじゃない
104:デフォルトの名無しさん
09/07/02 19:47:28
Java は break や continue にラベルを指定できる
105:デフォルトの名無しさん
09/07/02 20:32:50
out:
while(1){
106:デフォルトの名無しさん
09/07/02 20:34:11
break out;
}
ミスった
107:デフォルトの名無しさん
09/08/05 19:20:01
\\
108:デフォルトの名無しさん
09/08/05 21:13:18
>>105-106
それってどんな goto
109:デフォルトの名無しさん
09/08/06 00:24:06
しかし、大学校なんて防衛大ぐらいだと思ってたけど他にもあるのか。
110:デフォルトの名無しさん
09/08/07 14:34:25
でーこーぼーこ大学校ー
はーじーまーるよー
111:デフォルトの名無しさん
09/08/08 01:43:20
>>110
NTT西日本は大学校持ってないよ。
112:デフォルトの名無しさん
09/10/08 04:58:45
つーか、学校でプログラミング教えているようなやつなんか終わってるんだよ。
優秀な人間ならどう考えたって教員なんかよりソフトウェアエンジニアリングの方が儲かるもん。
break禁止とか現場的枝葉に拘るところからして、コンピュータサイエンスとかのアカデミズムとも無縁だろう。
プログラミング教えるってそれ自体そもそも学問じゃないので大学職員としても底辺だし。
そんなダメなやつが break禁止って生意気だろ?
おまえは、Scott Mayerより偉いのか? K&Rより偉いのか?
『何様ですか?』と2chで人格攻撃されてましたと、どうかお伝えください。
113:デフォルトの名無しさん
09/10/08 10:56:45
保守すんな阿呆
114:デフォルトの名無しさん
09/10/30 16:40:45
プログラムは単なる手段です。