17/02/14 07:14:02.78 gdLEKjA6.net
>>357
お前の悪いところは、いつまでたっても難しい、わからないしか言わないところ
わからないだけじゃなく、具体的にどうわからないのか説明して見たら?
こういう風な動作を期待しているのに、こんな結果になってしまったと
できればコード付きで
そしたら、優しい誰かが答えてくれるだろうよ
377:ぬーぶ ◆upkqfrxkrw
17/02/14 15:47:12.26 bcA2peqR.net
>>360
もう一度言っておくが、数学の関数は理解している
というか何を根拠に数学の関数を理解してないと思ったの?
378:ぬーぶ ◆upkqfrxkrw
17/02/14 15:48:46.00 bcA2peqR.net
>>361
普通の螻蛄、なんかカッコいい
379:デフォルトの名無しさん
17/02/14 15:49:16.97 s/PYCl8L.net
>>363
数学の関数とCの関数は別物だと思ってるだろ?
380:ぬーぶ ◆upkqfrxkrw
17/02/14 15:51:05.71 bcA2peqR.net
>>362
具体的にどう分からないかっていうのが
上手く言い表せないっていうか…
何を失敗してるかが分からない状態。
プロトタイプ宣言もしてるのにエラーになる、とか。
取り敢えず前のじゃんけんプログラムは没だから
また新しいコードで躓いたら上げて質問させてもらいます。
381:ぬーぶ ◆upkqfrxkrw
17/02/14 15:51:51.37 bcA2peqR.net
>>365
前に別物って言われたから完全に別物だと思ってるけど…
もうどっちなんだよハッキリしてくれよぉ…(´;ω;`)
382:デフォルトの名無しさん
17/02/14 15:55:33.15 s/PYCl8L.net
>>367
だから、関数を理解しろと何度も・・・
383:ぬーぶ ◆upkqfrxkrw
17/02/14 16:05:32.91 bcA2peqR.net
>>368
…何か話が噛みあわないみたいだからもういいや。
384:デフォルトの名無しさん
17/02/14 16:55:43.10 GstB0RWe.net
すまん、基本だと思うが教えてくれ。
URLリンク(fefnir.com)
HiMacroEx のソフトをつかってマクロを
タイマーで実行させたいが、どうもスクリーンセーバーが
かかると、マクロが実行ができないようだ。3日かけてやっと気づいた。
スクリーンセーバーは絶対にかけたい。
スクリーンセーバー中でも実行する方法がありますか?
385:デフォルトの名無しさん
17/02/14 17:00:09.40 Xqe6dJB0.net
プログラムの書き方を見てもそうだが、
意味論を理解するタイプじゃなくて、公式を暗記すればいいと思っているタイプだろう、こいつは。
その手の輩に関数というものの本質的な定義や意味論を語っても無駄。
386:デフォルトの名無しさん
17/02/14 19:28:15.69 u0s5do/i.net
>>369
色々言われることもあると思うけど情報は自分で取捨選択すれば良いよ
大事なのは穏便に済ませること
こちらに伝わるように質問を考えるのも頭の整理になるし、どんどんコードを出していって見て
387:デフォルトの名無しさん
17/02/14 19:30:11.71 WXtvn4e6.net
>>371
無駄だろうなあ。。。
とはいえ、そんな馬鹿の意識を変えないことには
プログラマーになんてできない訳で
388:デフォルトの名無しさん
17/02/14 19:31:47.49 WXtvn4e6.net
>>369
とりあえず、お前さんには適性が全く無いことが判った
早く
389:諦めた方が身のためだぞ?
390:デフォルトの名無しさん
17/02/14 19:53:57.19 s/PYCl8L.net
>>369
そういうことなら、俺から教えることは何もないな。
391:ぬーぶ ◆upkqfrxkrw
17/02/14 20:46:52.88 bcA2peqR.net
>>372
ありがとうございます。
質問は今の所特に大丈夫なので
また困ったら調べた上で質問させてもらいます。
392:ぬーぶ ◆upkqfrxkrw
17/02/14 20:53:59.13 bcA2peqR.net
>>374-375
何か勘違いされてるみたいだけど、
数学の関数を理解できない=プログラミングの関数も理解できない
っていう考え方が僕には理解できない。
数学の関数は理解できるけど、プログラミングの関数は
まだ完全には理解できないと言ってるのに
「お前は数学の関数を理解できてない!」なんてずっと言われても。
そんなに数学とプログラミングの関数が一緒って言うなら
どう一緒なのかを教えてよ。
僕は前に数学とプログラミングの関数は別物って言われて
別物としか認識できてないから分からない。
393:デフォルトの名無しさん
17/02/14 20:56:50.38 Xqe6dJB0.net
関数がわからないと、この言語における関数の書き方がわからない、はわけようぜ。
394:ぬーぶ ◆upkqfrxkrw
17/02/14 20:57:23.84 bcA2peqR.net
>>371
出来る限り理解するようにはしてるけど
最初は公式の暗記だね。形だけ。
プログラミング初心者でおまじないを完全に理解できる人なんていないでしょ。
使っていく中で理解するんじゃないの?
395:ぬーぶ ◆upkqfrxkrw
17/02/14 21:00:58.00 bcA2peqR.net
>>378
んー何て言うか基本的な関数の使い方自体は理解できるんだけど、
この前のじゃんけんのプログラムみたいに関数同士を複雑に絡み合わせると
少し難しい、というのが言いたかった。
この前のじゃんけんプログラムは>>242です。
396:デフォルトの名無しさん
17/02/14 21:04:43.08 u0s5do/i.net
もう一度だけ言うけど穏便に済ますことが大事
掲示板で勉強がしたいんなら言いたいことを飲み込むのも技術の内
397:デフォルトの名無しさん
17/02/14 21:09:55.03 bAPYpdLS.net
自分はとりあえずおまじないにしておいたとしても知らないままだと気持ち悪い派だなあ
398:ぬーぶ ◆upkqfrxkrw
17/02/14 21:10:36.31 bcA2peqR.net
>>381
そうなんだけど…苦手やね…(´・ω・`)
頑張ります。
399:ぬーぶ ◆upkqfrxkrw
17/02/14 21:12:35.69 bcA2peqR.net
>>382
C++だとヘッダーファイルだっけ、あれを持ってくるだけだけど
JavaとかなるとOS関係までおまじないあるからなぁ…。
ある程度勉強しないと理解できないもどかしさ。
400:デフォルトの名無しさん
17/02/14 21:18:57.71 Xqe6dJB0.net
程度問題だよ。
電子レンジを、他の人の見よう見まねで適当に操作して似た使い方をされたらたまらない。
生卵入れたり、アルミホイル入れたり、レンジしたいのにオーブンにしたりね。
でも、電子レンジの構造から仕組みまで何から何まで完全に理解して使う必要もない。
何事にも適切な理解の程度というものがあるんだよ。
401:デフォルトの名無しさん
17/02/14 21:24:14.57 LYU+uuAa.net
いい例えだな
402:デフォルトの名無しさん
17/02/14 22:02:19.34 gdLEKjA6.net
>>366
最低限、エラーの内容とコードさえ貼れば誰かエロい人が教えてくれると思うぞ
その前にエラー内容をググって、こう言う内容っぽいエラーですがよくわかりません位言うと、印象が多少よくなる
403:デフォルトの名無しさん
17/02/15 07:04:17.25 d4K0Q+Zj.net
>>384
javaにそんなんあったっけ?
404:デフォルトの名無しさん
17/02/15 09:03:23.62 q0sxrs09.net
>>370
> すまん、基本だと思うが教えてくれ。
>
> URLリンク(fefnir.com)
>
> HiMacroEx のソフトをつかってマクロを
> タイマーで実行させたいが、どうもスクリーンセーバーが
> かかると、マクロが実行ができないようだ。3日かけてやっと気づいた。
> スクリーンセーバーは絶対にかけたい。
>
> スクリーンセーバー中でも実行する方法がありますか?
よろしくお願いします。
板違いでしたら、お勧めの板に誘導してください。
405:デフォルトの名無しさん
17/02/15 10:07:22.45 s9IhNvgc.net
>>385
たとえ話を誰かが始めると話の流れや解釈が意味不明になることが多いけど
これはなんかすっきりしてるな
わかりやすい
406:デフォルトの名無しさん
17/02/15 12:29:32.49 q0sxrs09.net
>>370 ですが
他の板に移動します。
407:ぬーぶ ◆upkqfrxkrw
17/02/15 15:20:05.71 0l8dFlwE.net
>>385
なるほど、分かり易い
適度に知っておけば良いんやね
408:ぬーぶ ◆upkqfrxkrw
17/02/15 15:20:41.09 0l8dFlwE.net
>>387
分かった。基本自分で調べて
どう
409:しても分からなかったらそうする。
410:ぬーぶ ◆upkqfrxkrw
17/02/15 15:20:57.70 0l8dFlwE.net
>>388
なかったっけ?
411:デフォルトの名無しさん
17/02/15 19:11:35.56 JfktYUhD.net
教えてもらう態度がなってないのな
412:デフォルトの名無しさん
17/02/15 22:25:52.65 GHtkX/yp.net
スレタイにねねっち付いてるだけで糞スレが伸びてるとかびびる
413:デフォルトの名無しさん
17/02/15 23:01:55.01 7JyTf22P.net
進歩が全然ないじゃん! なんで!?
414:デフォルトの名無しさん
17/02/16 10:35:54.44 32zx6irr.net
中学生なのに高齢者並に遅い
415:デフォルトの名無しさん
17/02/16 10:38:48.00 Ram8AUll.net
まあ中身は34歳だしなぁ
416:ぬーぶ ◆upkqfrxkrw
17/02/16 15:35:16.92 inR55E2d.net
>>397-398
今は特に進展ないね…ごめん(´・ω・`)
417:ぬーぶ ◆upkqfrxkrw
17/02/16 20:45:03.84 inR55E2d.net
グーチョキパーの強さを予めプログラムしておきたいんだけど
本当言うとどうやってプログラムするかずっと悩んでて進展がない…(´;ω;`)
418:デフォルトの名無しさん
17/02/16 20:53:58.80 Ram8AUll.net
SDLフローチャートでも書いてみなよ。
419:デフォルトの名無しさん
17/02/16 21:25:11.26 OkMHwQea.net
>>401
あらかじめプログラムするために関数があるじゃん
実装は後で良いから何をもらって(引数)、何を返すか(返り値)をまず決めれば良い
420:デフォルトの名無しさん
17/02/16 21:38:32.61 MUwuyanU.net
初心者のうちは他人の書いたコードを出来るだけ沢山読むのがいい
読んで理解して、慣れてきたら改造してみるのが力がつく
421:デフォルトの名無しさん
17/02/16 23:24:55.53 UZCJcrCy.net
>>401
グーチョキパーの強さとは?予めプログラムとは?
もっとプログラマに分かるように説明頑張ろうよ。
422:デフォルトの名無しさん
17/02/17 00:49:19.51 dXXL8kgy.net
3種類の手しかない普通のジャンケン作るのに強さの定義とか不要だしセンスがない
n種類の手があるジャンケン作りたいならn×nの上三角行列作ればいいだけ
423:デフォルトの名無しさん
17/02/17 01:17:00.31 7PQNWD7y.net
パーは最弱って事だろ。
424:デフォルトの名無しさん
17/02/17 09:48:14.80 iuwmUw8O.net
最近のカードゲームよろしくフィールド効果とか補助カードとか
いろんな要素があって、古式ゆかしい三すくみではないんだろう。
425:ぬーぶ ◆upkqfrxkrw
17/02/17 15:10:21.12 zIil3epi.net
>>403
そうしたいんだけどなかなか…
上手くいかないんだねこれが…
426:ぬーぶ ◆upkqfrxkrw
17/02/17 15:11:52.29 zIil3epi.net
>>405
えーと、
グーはチョキに勝ってパーに負ける、
チョキはパーに勝ってグーに負ける、
パーはグーに勝ってチョキに負ける、
っていう強さ関係を予めプログラムしておきたい。
427:デフォルトの名無しさん
17/02/17 16:00:40.31 ZF00EycL.net
関数すら理解できない奴の思考はその程度って訳か
428:デフォルトの名無しさん
17/02/17 16:58:40.00 /AnTLUch.net
>>410
ぬーぶが書いたやつだって、その勝敗判定を「予めプログラムしてる」だろ?
自分が書いたコードとやりたい事の何が違うのか説明してみて。
関連して、>>406の内容や、優しいお兄さんが作った2つのじゃんけんプログラムは読んだ?
429:片山博文MZ ◆T6xkBnTXz7B0
17/02/17 17:16:03.67 MbV+Py5H.net
// 二人ジャンケンの勝負判定。
// 0:引き分け、1:勝ち、-1:負け
int hantei(int anata, int computer)
{
...
}
430:片山博文MZ ◆T6xkBnTXz7B0
17/02/17 17:19:35.15 MbV+Py5H.net
// n人ジャンケンの勝負判定。
int hantei(int anata, int n, int *players)
{
...
}
431:片山博文MZ ◆T6xkBnTXz7B0
17/02/17 17:29:38.33 MbV+Py5H.net
【n人ジャンケンのルール】
n人がグー、チョキ、パーの3グループに分かれたら、引き分け。
n人がグー、チョキ、パーのいずれかの1グループのみになったら、引き分け。
n人がグー、チョキ、パーのうちの2グループのみに分かれたら、その2種類の手について、二人ジャンケンのように勝負を決める。
432:デフォルトの名無しさん
17/02/17 17:32:03.95 lf/5rABj.net
>>417-418
そういう事じゃ
433:無いなら
434:デフォルトの名無しさん
17/02/17 17:33:45.29 lf/5rABj.net
ないから
435:デフォルトの名無しさん
17/02/17 17:38:42.95 1EaRXg77.net
>>401
こういう「察してよ~答え教えてよ~」みたいなレスが一番ムカつく。
しかもこういうクズは注意されると「聞いてるわけじゃないしw」みたいな
言い訳をするだけ。
自力で考えるつもりがないならプログラミングなんて辞めちまえよ。
436:デフォルトの名無しさん
17/02/17 17:41:13.48 E3U4XBZQ.net
お前ら中学生相手に容赦ないな
437:片山博文MZ ◆T6xkBnTXz7B0
17/02/17 18:01:30.53 MbV+Py5H.net
数学で言うところの行列は、コンピュータでは二次元配列で表せる。ただし、配列の要素はゼロベースの添字でアクセスしないといけない。
enum TE { GOO = 0, CHOKI = 1, PAH = 2 };
enum HANTEI { KACHI = 1, MAKE = -1, HIKIWAKE = 0 };
HANTEI hantei(TE anata, TE computer)
{
static const HANTEI niji_hairetsu[3][3] =
{{HIKIWAKE, KACHI, MAKE}, {MAKE, HIKIWAKE, KACHI}, {KACHI, MAKE, HIKIWAKE}};
return niji_hairetsu[anata][computer];
}
438:デフォルトの名無しさん
17/02/17 19:40:03.87 eYTxk1dO.net
win,loose,drawとかがいいな…
439:デフォルトの名無しさん
17/02/17 20:45:37.43 lf/5rABj.net
>>424
求められてるのはそういう事じゃ無いだろ
440:片山博文MZ ◆T6xkBnTXz7B0
17/02/17 21:05:05.81 MbV+Py5H.net
グー、チョキ、パーで一番強いものというものはない。順序関係になっていないから、
君のいう強さというのは1つの数では表せない。数学的には2つの手に関して、勝ち・負け・引き分けを決める二値
関係があるかどうかが問題だ。これをシンプルに表すなら二次配列を使うのがベストだろう。
441:片山博文MZ ◆T6xkBnTXz7B0
17/02/17 21:12:56.49 MbV+Py5H.net
アンカー間違えてるぞ、ゴルァ!
442:デフォルトの名無しさん
17/02/17 22:29:19.41 /AnTLUch.net
>>413
>>414
interface切り方センスなくない?
443:KAC
17/02/17 22:34:08.12 5IS1oOxO.net
>>423
そういう訳でもない。
じゃんけんは三つしかない世界で強さの輪を作っているんだから、
グー=G パー=P チョキ=C の三つで、G<P,P<C,C<Gの関係を表せばいいだけ。
弱い順に並べると、GPCGPCGPCGPCGPCGPCGPC・・・と繰り返す。
この並びからわかるとおり、
Gを出して相手が一つ右のPで「負け」 二つ右のCで「勝ち」 同じGで「あいこ」
Cを出して相手が一つ右のGで「負け」 二つ右のPで「勝ち」 同じCで「あいこ」
Pを出して相手が一つ右のCで「負け」 二つ右のGで「勝ち」 同じPで「あいこ」
となる。
繰り返しの表現なら、差を比べるだけで勝ち負けの判定は可能だって事。
0123456789 と増えていく数を
0120120120 と表現する方法は簡単で、3の剰余を求めれば良い。
なので、勝ち負けの判定は、
正の数だけ使うためにベースを足して差を求め、3の剰余を求めるだけ。
( 3 + computer - anata ) % 3 ;
求めた結果が0ならあいこ、1なら負け、2なら勝ちとなる。
> 君のいう強さというのは1つの数では表せない。
というのは、工夫次第でどうにでもなるってことだ。
444:デフォルトの名無しさん
17/02/17 22:48:25.90 C9lFCZn0.net
>>410
「グーチョキパーが最初から自分の強さを知っている」設計はアリだとは思うけど
正直冗長だしCっぽく書いてもこんなモンなので
関数もおぼつかない状態でやる事じゃ無いと思う
URLリンク(ideone.com)
445:デフォルトの名無しさん
17/02/17 22:56:03.34 /AnTLUch.net
>>426
答え書いちゃったのね^^。
俺は高校の時これ見てめちゃ感動した。後に群論知って奥深さ感じたな~。
これはもはやidiomだよね。
上でサンプルあげた人のコードも勿論これ。
ぬーぶには悩んで考えてコード読んで感動して欲しかった。まー、まだ無理か。
446:デフォルトの名無しさん
17/02/17 23:37:18.63 hOxi7mQ6.net
俺ももちろん解ってたよ
447:デフォルトの名無しさん
17/02/18 02:56:52.89 gmcYBKXm.net
後からなら何とでも言える罠
448:ふつけら ◆f5STnaEXUk
17/02/18 08:16:29.55 PSTKE0Se.net
stl、二次元配列、剰余、ビット演算
話題がじゃんけんプログラムしかないから解明が進んでるな
数学的には任意の2元の序列はつくのに
じゃんけんは前順序でも半順序でも全順序でもない関係なんだな
449:デフォルトの名無しさん
17/02/18 10:26:25.96 tLEefMeo.net
>>427
これ見て思ったけど、じゃんけんは3人以上でルール変わるのな。
450:デフォルトの名無しさん
17/02/18 12:24:09.43 OWfya4VJ.net
グーチョキパーをそれぞれ出した人がいればあいこになる奴か。
3人ならゲームバランスはまだ取れているけど、それ以上になるとあいこが激増して一気に糞ゲー化するよね
451:ふつけら ◆f5STnaEXUk
17/02/18 12:46:50.14 PSTKE0Se.net
p_aiko(n):=1-(2^n-2)/(3^(n-1));
for i:2 thru 10 do print(1 - p_aiko(i)); done;
等確率のじゃんけんでも8人までは勝敗が決まる確立が1割は越えてる
このぐらいの人数までなら現実でもそこそこ盛り上がる気はする
452:デフォルトの名無しさん
17/02/18 12:59:06.04 ZR9eAolI.net
>>239
5人で連続あいこ14回か
453:ぬーぶ ◆upkqfrxkrw
17/02/18 19:04:10.96 zLb7XvBC.net
>>411
こういう事言う意味不明な人がいるから
段々やる気なくなって来たくなくなるんだよなぁ…
暫く独学で勉強させてもらいます。
スレは見てるので何かあったら呼んで下さい。
454:デフォルトの名無しさん
17/02/18 19:25:48.41 VEC9TI2H.net
頑張り過ぎないようにね、ぬーぶ君。君は先が長い。
455:デフォルトの名無しさん
17/02/18 19:28:23.07 rK6OXg4U.net
>>144でも言ったけれどフェードアウトは止めてくれると嬉しい
すっぱり名無しに戻った方が気楽な時もある
456:ぬーぶ ◆upkqfrxkrw
17/02/18 19:36:01.58 zLb7XvBC.net
>>437-438
ありがとうです。
居なくなる事はないので大丈夫ですよ。
457:片山博文MZ ◆T6xkBnTXz7B0
17/02/18 22:38:13.87 MCn1lDME.net
ぬーぶさん、当たり判定は理解できたか?
458:デフォルトの名無しさん
17/02/19 00:18:28.10 L2qfhC9D.net
>>436
キミ、かっこ悪いな。ちょっとdisられただけで他人のせいにしていじけるなんて。自分も34才disりまくってたのにもかかわらずだw
本当は付いていけない自分が嫌なんだろうが、焦る必要はないよ。続けていればある日開眼する。その後また実は全然わかってなかったと落ち込むが、またさらに開眼する、この繰り返しよ。
キミには「無知の知」という言葉を贈ろう、頑張れ。
459:ふつけら ◆f5STnaEXUk
17/02/19 07:08:07.99 o7AFblAP.net
>>436
いやなレスは次々NG IDに放り込むとかいう手もある
つかれたなら休み
460:デフォルトの名無しさん
17/02/19 15:53:10.31 IydY0Dzj7
URLリンク(ideone.com)
C++のことは知らんが、clojureって言語でn人じゃんけん実装したぞ
かなり言語のトリッキーな部分つかってるから解説もするわ
まずn人じゃんけんの特性だけど、上でご指摘あるとおり、場に出された手(hands)の種類が1つまたは3つならばあいこである。
問題は場にだされた手が2つの場合なのである。
def winner部
場に出された種類が2つのとき、勝者のhandをきめる必要がある。
gooとchokiならgooの勝ちでしょ、そりゃ
:gooって感じで前に:ついてるのは気にしなくていい。別に:gooを"goo"に書き換えても動くからこれ
#{}ってのは集合を示す。この例で#{;goo :choki}ならグーとちょきが場に出ていると解釈してくれ
#{:goo :choki}って入力されたらreturn ;goo って感じね
これは実は関数じゃなくて単なる早見表みたいなもんなんだが、関数としてみてくれてもいい。
defn n-janken部
handsは引数、この関数に入れる入力、handsの例は下に書いてあるhands1からhands3を見てくれ
見てのとおりだ、アリスはグーを出し、トムはちょきを出し・・・って感じ
letは変数宣言みたいなものとみてくれてかまわない
varietyは、場に出された手の種類を覚える。
hands1を入力に突っ込んだら、varietyには#{:goo :choki :par}が入る。
win-handはwinner関数にvarietyを突っこんだときの返り値を覚える。
この場合def winnerには#{:goo :choki :par}が入力の場合の出力が定義されていない。
具体的にはnil (null pointer)を返す。
あとは、上記じゃんけんルールを適用するだけ。
varietyの数が3なら、それはあいこだ、:goo :choki :parが場に出ている。
1の場合もあいこだ、だから:evenという返り値を持ってあいこを示すことにする。
varietyが2の場合はwinner関数を用いて勝者の手を決めることができる。
だからそれを持っている人をhandsからフィルタリングして返せばいい。
C++にもたぶんboostとかSTLに似たようなシステムはあるはずだからそれに移植すればいい
個人的にはいきなりC++で書くのはおすすめしないけど、3Dゲームやるならまあ逃げられんわな
461:デフォルトの名無しさん
17/02/19 16:40:45.20 IydY0Dzj7
URLリンク(ideone.com)
ちょっと改良して、handsを自動生成する関数も追記した。
コード自体は長くなってしまったが、
結局ほとんどが出力を確認するためのテスト関数にすぎない。
そしてこの修正において一切defn n-jankenに触れる必要はなかった。
これが関数を書く意味であり、うまく関数を作るっていうのは
究極的に言えば何を入力として、何を出力とするのかをうまく決めることだ。
入出力をうまく決めてやれば、もとの関数を修正する必要がなくなる。
たぶんwinner表を他の言語で作るとなるとかなりめんどくさそうだと思う。
少なくとも書き方を調べないと俺には書けない。
だけどもしC++でこれを実装するとしたら、構文はさておき
似たような形(意味論、セマンティクス)で実装すると思う。
なおこのじゃんけんだと一人じゃんけんすると:evenを返すようだ。
これに気に食わなければ修正していいし、つまりデータの解釈ってのは
自由にやっていいってことだ。
ライブラリを使い始めるとデータの解釈や入出力がある程度取り決められる。
それは、機械と会話するためにそうせざるをえないからだ。
そうでないときにまで、機械と会話するように入出力のフォーマットを縛る必要はないし
縛ると苦しい実装しかできない。
462:デフォルトの名無しさん
17/02/19 17:05:30
463:.51 ID:zCzNbcF8.net
464:デフォルトの名無しさん
17/02/19 17:06:14.79 zCzNbcF8.net
URLリンク(ideone.com)
ちょっと改良して、handsを自動生成する関数も追記した。
コード自体は長くなってしまったが、
結局ほとんどが出力を確認するためのテスト関数にすぎない。
そしてこの修正において一切defn n-jankenに触れる必要はなかった。
これが関数を書く意味であり、うまく関数を作るっていうのは
究極的に言えば何を入力として、何を出力とするのかをうまく決めることだ。
入出力をうまく決めてやれば、もとの関数を修正する必要がなくなる。
たぶんwinner表を他の言語で作るとなるとかなりめんどくさそうだと思う。
少なくとも書き方を調べないと俺には書けない。
だけどもしC++でこれを実装するとしたら、構文はさておき
似たような形(意味論、セマンティクス)で実装すると思う。
なおこのじゃんけんだと一人じゃんけんすると:evenを返すようだ。
これに気に食わなければ修正していいし、つまりデータの解釈ってのは
自由にやっていいってことだ。
ライブラリを使い始めるとデータの解釈や入出力がある程度取り決められる。
それは、機械と会話するためにそうせざるをえないからだ。
そうでないときにまで、機械と会話するように入出力のフォーマットを縛る必要はないし
縛ると苦しい実装しかできない。
465:デフォルトの名無しさん
17/02/19 17:09:58.18 zCzNbcF8.net
あとヒューマンプレイヤーを実装したいならhandsに標準入出力から入力した手を追加して関数呼びだしするだけでいいよ、これはちょっとめんどいから保留で
466:片山博文MZ ◆T6xkBnTXz7B0
17/02/19 17:44:01.52 258Rl1AZ.net
おいおい、C++勉強中の中学生にClojureを教えるつもりか?
467:ふつけら ◆f5STnaEXUk
17/02/19 18:44:52.93 o7AFblAP.net
せっかくだからコンパイルしてみようと思ったけど名前だけで検索してインストールしたら
closure-compilerって名前のjavascript関連のツールがインストールされてた
Closureって言語は関数のクロージャともややこしくて検索でヒットしにくくて名前で損してるな
ややこしい
468:デフォルトの名無しさん
17/02/19 19:29:17.40 7wQmZFsK.net
プログラミングの理解は別にどうでもいいけどさ、普通に学校通えるようになったのか?
469:デフォルトの名無しさん
17/02/19 20:15:44.13 zCzNbcF8.net
>>448
だいたい全部のこれまでのレスを読んだわ
それで優先順位つけるとすると、中学生なら学校いけとしか思えん
470:デフォルトの名無しさん
17/02/19 20:43:07.61 zCzNbcF8.net
ガチでプログラムで飯食っていきたい、ゲームエンジンデザインしたいって言うなら
次の本は読んどけ、一線級のプログラマが何を考えているのかを知っておけ
ゲームエンジン・アーキテクチャ 第2版 ジェイソン・グレゴリー
本当に重要なのはどのようにライブラリ、パッケージを分割するかだ、つまりアーキテクチャだ
関数の分割もできないやつはアーキテクチャを作れない
次に意味論だ、アルゴリズムやデータ構造をよく知っとけ、使いこなせ
ここらへんは、言語によって呼ばれ方は様々だが
1.単方向リスト、 2.ベクタ、 3.セット(集合)、 4.連想配列(辞書、ディクショナリ、ハッシュ、マップ)
この4つだけは最低抑えとけ、C++で戦っていく気ならSTLだかboostだかに入っているであろうこれらのデータ構造を探しとけ
もっと言えば5.2分平衡木ぐらいはしっとけ
ガチで3Dのゲームエンジンをデザインするなら木構造は必須だ
これらをしっかり理解しとけばじゃんけんプログラムの実装においても
ほとんど設計で悩むことはない
事実俺はじゃんけんのルールをただ記述しただけだ
3つの手がでればあいこ1つの手がでればあいこ、
2つの手が出たならばグーとちょきはグーが勝ち、ちょきとパーは・・・(ここは表(テーブルともいう)で処理した)
華やかさのために人の名前も入れたけど、本当はいらないし省ける
ただじゃんけんのルールを記述するだけでよくなる
たかがじゃんけんのルールを記述するのに設計がどうだの議論は不要だろ?
(もちろんじゃんけんのルールを深掘りすれば使える不変量みたいなものは見つかるかもしれないが)
471:デフォルトの名無しさん
17/02/19 20:50:51.50 zCzNbcF8.net
代わりに性能はC++で真面目に書いたときに比べて比較にならんほど遅いはずだ
だから妥協することになる、妥協とは機械に歩み寄ることだ
プログラム設計とは、
1.どこまで機械に歩み寄るか、機械に歩み寄るほどデバッグが難しくなる
人間様としては、先程のclojureプログラムのように書きたい
2.プログラムのどのリソースを使うか、
CPUかメモリか、メモリ帯域か?ハードディスクかネットワーク帯域か?
場合によってはGPUにアクセスしないといけない。特に3DゲームはGPUを使えないとだめだ
じゃんけんにパフォーマンスは必要ないが、
100万回じゃんけんするプログラムを書くときはパフォーマンスが重要になるだろう
つまりは100万回じゃんけんを回す要件ができたときに書き直せばいい
最初から100%最速で、かつイケてるプログラムを書こうとしてはいけない
C++で性能を出すとするとwinner表は、二次配列で実装するだろう
みんなが書いているようにgoo choki parを0 1 2にいちいち対応させないといけないかもしれない
群論を用いてやる方法も書いてあったが、たぶん実装すると遅いはず
二次元配列で表を作ったほうがメモリアクセスだけで済むし、余計な計算はいらないからな
ただ二次元配列を定義するとメモリを少しばかり使うわけで、
場合によっては群論的アプローチをとったほうが、メモリを食わないことだってあるわけだ
もしビッグデータでじゃんじゃん配列使うとメモリオーバーフローなんてかんたんに起こすからな、3Dも同じだね
ライブラリを使いたくないってのは、理由が2つあって
1つ、ライブラリが理解できないってことだ、ありがたみもわからないから使いたくないというわけだ
2つ目は、ライブラリがいけてないと思っているからだ、自分が書きたいようにかけないと感じているからだ
そういうやつは例え間抜けなことであっても車輪の再生産をする、ライブラリを一から作る
俺もインタフェース(入出力)が気に入らなかったり信用できなかったりしたら一から作る
ただ一個人が作るオレオレライブラリより、ゲームエンジンのほうが遥かに信頼性高いからな
いけてないインタフェースってのも性能を出すためにしゃーなしでそうなってるってことも多い
472:片山博文MZ ◆T6xkBnTXz7B0
17/02/19 21:01:07.92 258Rl1AZ.net
雄弁すぎる!
473:デフォルトの名無しさん
17/02/19 21:01:12.67 7wQmZFsK.net
長い
474:デフォルトの名無しさん
17/02/19 21:04:57.43 zCzNbcF8.net
ようはプログラマの悩みっていうのは楽に書きたいところと
性能を出すために機械に寄り添って丁寧に記述しないといけないところのバランスをとることだ
それをするためにアーキテクチャが必要になる、ライブラリが必要になる
問題を本質的に記述したいっていうのであれば、
まずLand of Lispでも買ってきた方がいい、これが2つ目の参考書だ
上記で指摘したデータ構造とは何なのかを非常に簡単に勉強できる
もしC++ですべて理解します、できますっていうのならやらなくていい
Clojureは現代的lispで俺も使っているが、めんどくさいところもあるので初学者にはおすすめしない。
Lispの考え方にJavaの考え方が混ざっているので、全く初学者にはおすすめできんということだ
今のゲームエンジンは化物が作っているし、めちゃめちゃ金かかってる、それも一握りの人間だけだ
ゲームエンジンは中学生の目標として間違ってると思う
自分でゲーム作りたいよ、ってなら結局エンジン開発することになるが、いきなり3Dはきつすぎる
まあ到底達成し得ない目標を持つ前にまず学校いけやというわけだ
UnityでもUnreal Engineでもいいから試しに使ってみて
自分が作りたいゲームとやらの試作品をまず出力してみろやということだ
マッチ棒人間でも、どんな貧弱な3Dモデルでもいいから作って見て動かしてみればいい
どんなにコードは汚くてもいいから自分が欲しい出力に近いものを出してみろ
そのengineに何があれば、本当に自分がほしい出力が出るのかを考えてみろ
中学生なんで時間を多少無駄にしても許されるが、
ここらへんの答えを出せずにC++やってても仕方あらへんで
475:デフォルトの名無しさん
17/02/20 11:02:21.49 SvwDOwJX.net
中学生の人は、本体である34歳のほうが別スレでフルボッコになって
落ち込んでいるのでしばらく出てきません。
別人設定ですが常にアクティビティは連動します。
476:34歳うんぬん
17/02/20 15:58:38.18 /5CJGiw4.net
>>457
だから別人だってば。
IDも違うでしょう。
477:デフォルトの名無しさん
17/02/20 17:05:53.80 wG2rez/P.net
IDは同一人物の書き込みかどうかはわかるけど、別人かどうかの判定には使えないからなぁ
478:片山博文MZ ◆T6xkBnTXz7B0
17/02/20 20:36:03.95 1VVy2QiC.net
ねねっちはどこ?
479:デフォルトの名無しさん
17/02/20 20:40:26.71 1VVy2QiC.net
(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)(^q^)
480:デフォルトの名無しさん
17/02/20 20:50:49.73 MaezVUMf.net
片山=ねねっち
481:デフォルトの名無しさん
17/02/20 21:10:55.48 1VVy2QiC.net
(^q^)←これ、ぬーぶさんだよね?
482:ぬーぶ ◆upkqfrxkrw
17/02/20 22:33:35.23 V+LMJhmi.net
お好み焼き美味しいよね
>>463
違うよー
483:デフォルトの名無しさん
17/02/21 12:11:34.81 b2Z1gvCR.net
if(true) {
printf("ひふみんは俺の嫁/n");
}
else {
printf("りんさんは俺の嫁/n");
}
484:ふつけら ◆f5STnaEXUk
17/02/21 12:11:39.48 UIONV0tM.net
>IDは同一人物の書き込みかどうかはわかるけど
485:片山博文MZ ◆T6xkBnTXz7B0
17/02/21 13:34:46.02 FgNvmkSQ.net
当たり判定は、完全に代数幾何学と計算量削減の問題になる。
代数幾何学は、中学・高校の数学で習う。真面目に授業を受けろよ。
486:デフォルトの名無しさん
17/02/21 15:28:32.49 aFqTV30T.net
>>465
スラッシュw
487:デフォルトの名無しさん
17/02/21 21:23:18.86 fGVxTzaX.net
このスレの一番の問題点ってさ、素人がど素人に教えてるところじゃないの?
現役のゲームプログラマーなんて一人もいないっしょw
ID:zCzNbcF8の言ってることが正解でさ、まあまずはUnity+C#からはじめなよ
いきなりコンシューマーを目指すのではなく、ソシャゲのガワ部分を作ってみるといい
488:デフォルトの名無しさん
17/02/21 22:31:53.91 evhhf5Ve.net
unityとか、ツールの使い方覚えるだけでもめんどくせぇじゃねーか
489:デフォルトの名無しさん
17/02/21 23:01:01.29 RrSvXrg9.net
スマホゲーは普通にUnityで作られてるの多いよ
そもそもゲームエンジンがどういうものか理解するためにも
Unityで最低一本は作ってみるべきだね一ヶ月ぐらいで
490:デフォルトの名無しさん
17/02/21 23:15:50.89 /PEo8++7.net
返答が>>57なんだからしょうがないっしょ
491:デフォルトの名無しさん
17/02/21 23:26:24.55 PqfxL0pv.net
楽したくないならアセンブラで作るしかないな
IDEも使ったら駄目
全てコマンドラインで
492:デフォルトの名無しさん
17/02/22 00:06:09.52 LsEdYva+.net
ぬーぶの賛歌
URLリンク(www.youtube.com)
493:デフォルトの名無しさん
17/02/22 00:15:12.32 WX+0lpNL.net
>>473
さすがにそれはかなりのドMかと。
494:ぬーぶ ◆upkqfrxkrw
17/02/22 00:32:28.82 IQQW/zc9.net
>>474
かっこええやん…
495:ぬーぶ ◆upkqfrxkrw
17/02/22 00:41:57.26 IQQW/zc9.net
明日から復帰します、ちょっと休憩の時間が欲しかったのでーす…
ちょっと一気に気になるレスを明日返して行きたいんだけど
今回だけマルチレス駄目かな、分けると大変な量になる
496:ぬーぶ ◆upkqfrxkrw
17/02/22 19:02:55.65 IQQW/zc9.net
だ、誰もいない…
497:ぬーぶ ◆upkqfrxkrw
17/02/22 19:03:32.38 IQQW/zc9.net
…
498:デフォルトの名無しさん
17/02/22 19:10:43.99 Ax/NRShP.net
なんか書けや
499:ぬーぶ ◆upkqfrxkrw
17/02/22 19:22:12.49 IQQW/zc9.net
>>480
何書こう、そして今回ちょっとマルチ駄目?(´・ω・`)
500:デフォルトの名無しさん
17/02/22 19:29:43.29 TjWrUG4u.net
お前については「学校行け」で結論が出てるからな
もう飽きられてるんだよ
捨てられたんだ
501:デフォルトの名無しさん
17/02/22 19:31:18.40 izm1E/jA.net
スレ主なんて居ないんだから誰も答えようが無い
反応が気になるのは分かるけどもうちょっとしっかりしてくれんと
502:デフォルトの名無しさん
17/02/22 19:51:20.51 y2mmeNwF.net
マルチでもいいぞ
503:デフォルトの名無しさん
17/02/22 20:08:27.96 Ax/NRShP.net
マルチだめっていい出したあのおっさんは何がしたかったのか
504:デフォルトの名無しさん
17/02/22 20:44:03.42 Eqqb7Bp8.net
はわわ
505:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 21:04:27.08 mKcPOHkg.net
ゲームはどこまでできた?
506:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 21:10:33.33 mKcPOHkg.net
ゲームの開発状況をideone, github, youtubeのいずれかで提出せよ。
507:ぬーぶ ◆upkqfrxkrw
17/02/22 21:47
508::11.15 ID:IQQW/zc9.net
509:ぬーぶ ◆upkqfrxkrw
17/02/22 21:57:16.62 IQQW/zc9.net
>>437,442
有難うございます。今現在の状況だと
若干頑張りすぎるくらいが良いんだけど…
なかなか体力的な面でも精神的な面でも最近疲れててね。
>>440
当たり判定に入る前に基礎にもうちょっと時間を下さい…
プログラミング向いてないのは分かってるけど、ゆっくり理解したい。
>>441
そういうわけじゃないんですけどね…
うん、正直学習ペースは絶望的に遅いし
多分向いてないんだけど、面白いし続けたい。
無知の知か、頑張ります。
>>450-451
まだ普通に通える状況じゃないですなぁ…主に精神面で。
というか前より衰弱してる。自分だって行けるなら学校行きたいよ。
でも誰も分かってくれないし絶対に分からないし自分でも分からない。
いっそ死にたいって思う事もあるけど死ねない
>>452
ゲーム作成は趣味程度で、本当にやりたいのは
プログラミングも必要になるAIとロボット工学の研究。
…でも現状関数も満足に使えない上にアーキテクチャとか全く分かんないや。
地道に下積みしていくしかないんかな…
その本って本屋に置いてるかな、時間あったら見に行きたい
510:ぬーぶ ◆upkqfrxkrw
17/02/22 22:02:19.81 IQQW/zc9.net
>>456
全部返すのは大変なので気になった部分だけ…
今のゲームエンジン、特に自分が気になってるのが
カプコンが開発したバイオ7のREエンジンなんだけど、
もうグラフィックとかゲーム内容見ても未知の領域やったわ…
ゲームエンジンはもっともっと先の話だよ、高校3年くらいかなぁ…
自分でゲーム作るのってゲームエンジン必要なの?
UnityとかUEとか使ってみようかな、まだ基本的な事が分からないから
ちょっと厳しいかもしれないけど。
511:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 22:04:13.43 mKcPOHkg.net
基礎知識はどこまで固まった?
512:ぬーぶ ◆upkqfrxkrw
17/02/22 22:09:23.53 IQQW/zc9.net
>>492
まだ全然と思ってくれても…。
基礎範囲は自分で何とかするから
特に今の所は大丈夫だと思う。
じゃんけんのプログラム作る前に関数使いこなさないと。
特に数日間は進展ないと思うけど
定期的にレス貰えると有難いです。
513:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 22:14:35.59 mKcPOHkg.net
教員の苦労を無駄にするなよ。学校や家庭で犯罪や嫌がらせに巻き込まれてるなら、相談しなよ。
514:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 22:25:43.32 mKcPOHkg.net
ひとつ問題を出そう。
int f(int x)
{ return x + 1; }
int g(int x)
{ int n = x; return n - 2; }
のように2つの関数f,gが定義されているとき、f(g(2) + 1)はいくらでしょうか?
515:ぬーぶ ◆upkqfrxkrw
17/02/22 23:33:18.68 IQQW/zc9.net
>>494
そういう事は…
516:ぬーぶ ◆upkqfrxkrw
17/02/22 23:33:59.89 IQQW/zc9.net
>>495
んー…全く分からんけど…0?
517:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 23:46:25.49 mKcPOHkg.net
>>497
残念。ステップ実行で確認せよ。
#include <iostream>
int f(int x)
{ return x + 1; }
int g(int x)
{ int n = x; return n - 2; }
int main()
{
std::cout << f(g(2) + 1) << std::endl;
}
518:片山博文MZ ◆T6xkBnTXz7B0
17/02/22 23:59:23.78 mKcPOHkg.net
さて、
int g(int x) { int n = x; return n - 2; }
と書かれているが、これは、
int g(int x) { return x - 2; }
と同じだ。よってg(2)=2 - 2=0となる。
したがってg(2) + 1=0 + 1=1である。
つまり、(与式)=f(g(2) + 1)=f(1)である。ここで
int f(int x) { return x + 1; }
であるからf(1)=1 + 1=2、したがって(与式)=f(1)=2. 答えは2だ。
519:デフォルトの名無しさん
17/02/22 23:59:50.69 LsEdYva+.net
2が
520:ぬーぶ ◆upkqfrxkrw
2017/02/2
521:3(木) 00:00:13.68 ID:V0y6v9yA.net
522:片山博文MZ ◆T6xkBnTXz7B0
17/02/23 00:18:34.28 PU59JBmN.net
以下のプログラムを実行すると、何と出力されるか?
#include <iostream>
using namespace std;
void f() {
cout << "グラマーだ!" endl;
}
void h() {
cout << "は天";
}
void g() {
h();
cout << "才プロ";
f();
}
int main() {
cout << "俺様";
g();
}
523:デフォルトの名無しさん
17/02/23 00:20:09.62 /x8L7pzP.net
今回だけ俺様が特別にマジアドバイスしてやろう。
>ゲーム作成は趣味程度で、本当にやりたいのはプログラミングも必要になるAIとロボット工学の研究。
>ゲームエンジンはもっともっと先の話だよ、高校3年くらいかなぁ…
ぬーべがやりたいという上記のことは、本気でやるつもりならば大学専門課程レベルの数学(と物理)の知識は最低限必要です。一部の天才を除いて、普通の高校3年生がゲームエンジン作るとか常識的にありえま千円。
高校に入って理数科目が得意であれば、そのまま理工系の大学に進めばよろしい。大学で色々な課目を学ぶ内に自分が真にやりたいことが見えてくるだろう。
あと悪いことは言わないから2chから離れなさい。このスレの教えたがり君たちから習ってもプログラミングが上達するどころか、はっきり言って害悪でしかありま千円。
プログラミングの基礎を勉強したいなら以下のようなサイトが沢山ある。そしてPythonは学習コストが安く、AIで使われている言語でもあるからおススメです。
まずはここから始めてみようか。
URLリンク(prog-8.com)
524:片山博文MZ ◆T6xkBnTXz7B0
17/02/23 00:21:06.08 PU59JBmN.net
>>502
訂正。endlの前に<<を追加。
525:ぬーぶ ◆upkqfrxkrw
17/02/23 00:22:24.66 V0y6v9yA.net
>>502
うーん、文脈から考えて「俺様は天才プログラマーだ!」じゃないかな()
っていうメカニズムを理解しろって事か…難しいな。
526:ぬーぶ ◆upkqfrxkrw
17/02/23 00:26:19.17 V0y6v9yA.net
>>503
>今回だけ俺様が特別にマジアドバイスしてやろう。
→だ、誰だあああああああああ!!!!!
ぬーべーみたいに霊力強くないです、
霊感はあるけどただのプログラミング初心者のぬーぶです…
大学レベル必要か…厳しいな。
理数科は…苦手だけど、理屈は好きかな。
2ちゃんからは単にプログラミングを教えてもらう、っていう理由だけで
来てるわけじゃないから、あんまり離れる気はないかな…
AIはまだまだもっと先の話。ごめんなさい…でも有難う。見てみる。
Pythonも難しいなぁ…
527:片山博文MZ ◆T6xkBnTXz7B0
17/02/23 00:28:07.01 PU59JBmN.net
>>505
すごーい、ぬーぶはプログラマの玉子なんだね!
528:ぬーぶ ◆upkqfrxkrw
17/02/23 00:29:40.50 V0y6v9yA.net
>>507
プログラマの王子に見えて、うんそうだろそうだろーってなって
よく見たら玉子で萎えた_(:3 」∠)_
529:デフォルトの名無しさん
17/02/23 00:31:30.28 PU59JBmN.net
最近の中学生はぬ~べ~も知ってるのか?
530:デフォルトの名無しさん
17/02/23 00:34:47.71 boStFqTs.net
>このスレの教えたがり君たちから習ってもプログラミングが上達するどころか、はっきり言って害悪でしかありま千円。
>>503のアドバイスまじめに聞いたほうがいいと思うよ
531:ぬーぶ ◆upkqfrxkrw
17/02/23 00:54:44.60 V0y6v9yA.net
>>509
いや知ってるでしょw
>>510
アドバイスについてはそういう人も多いかもしれないけど
僕はそれ以外の事もここで色々学習してるし、これで良いのよ
532:デフォルトの名無しさん
17/02/23 01:20:44.58 W+FLclwO.net
>>510
ありま千円の語尾が面白いと思っているならやめた方がいいぞ。
それにこのスレのみでプログラミング学習を完結している人はいないし、モチベ維持ぐらいにしか使っている人いないから。
あと○○レベルの数学とか書いている時点でお前さんが数学を理解していないことはわかった。
533:ぬーぶ ◆upkqfrxkrw
17/02/23 01:35:01.96 V0y6v9yA.net
>>512
自分もモチベ維持と分からないとこ聞くくらいしかしてな
534:いよ。 それで何で僕が数学理解してないと思うの?不思議。
535:デフォルトの名無しさん
17/02/23 01:51:43.94 dyMY4fUi.net
まあとにかく勉強頑張るしかないな
536:デフォルトの名無しさん
17/02/23 02:07:40.46 fntMoO6R.net
>>497
だから関数を理解しろと何度も言ってるだろ
537:デフォルトの名無しさん
17/02/23 02:24:25.62 IL70tyJS.net
たとえば>>495の問題が理解できない理由が自分にはわからないけど
論理立てて物事を考えるのが極めて苦手なのかなと思う
よくわからないけどテキトーにやったらなんかうまくいったなんてのはプログラミングじゃない
538:片山博文MZ ◆T6xkBnTXz7B0
17/02/23 03:00:54.74 PU59JBmN.net
こりゃひどい。中1からすでに数学をサボっている可能性がありそうだ。
ぬーぶは中学一年の数学の教科書・参考書からやり直しだ。
今の状況は非常に厳しいぞ。
539:デフォルトの名無しさん
17/02/23 03:25:51.09 /x8L7pzP.net
>>513
ぬーぶは読解力も足りないなあw >>512 の発言は俺に向けてだよ。
>>512
>>510 は俺じゃないから彼への風評被害は控えなさいw
それから正味の話、>>512 は大学いってないよね?
一般教養課程程度の数学知識では不足で、最低でも専門課程レベルの数学が必要と言ったんだけど、お前分かってなさそうだもんね。
540:デフォルトの名無しさん
17/02/23 05:34:40.08 g6VFekbK.net
ルベーグで早々に躓いて半ばお情けで卒業させて貰ったわい登場
研究者は無理でもゲームは作れてる
が、AI専門部署は院卒だらけすな( ´Д`)y━・~~
541:デフォルトの名無しさん
17/02/23 06:57:50.79 Zgtd9m5M.net
やりたい事あるなら真面目に学校いけ
542:デフォルトの名無しさん
17/02/23 07:47:25.62 KoyZyoDT.net
学校行かなくてもいいから、高等学校卒業程度認定試験(旧大検)を取ってMARCH以上の大学に余裕で受かるくらいの学力は身につけるべき
高専に行くなら、そこから大学に編入するくらいは予定しておくべきだな
じゃないと研究とか仕事では無理だな
趣味でやっとけレベル
543:デフォルトの名無しさん
17/02/23 09:17:17.04 n+JFlMWK.net
ぬーぶも34歳もだけど、中身が同一人物かどうかは置いておいて、
アスペの人間は多対一の話ってのが出来ないんだな。ようやくわかった。
常に一対一を複数と解釈してしまうから1レスでマルチレスになるんだ。
討論番組でいきなり個人とサシの議論を始めちゃう系のおかしな奴と同類。
これは将来辛いだろうなぁ。
544:デフォルトの名無しさん
17/02/23 10:41:13.94 IVL7isfZ.net
ぬーぶからは50代無職のだめ人間と同じニオイがする
545:デフォルトの名無しさん
17/02/23 10:55:44.46 AnDfSdhr.net
関数を理解しろって奴は、関数とは何かを説明し、それが手続き型と関数型でどう解釈されているかをのべよ
こういうやつにかぎって参照透過もスタックフレームもしらねえから困るんだよ
546:デフォルトの名無しさん
17/02/23 11:01:46.65 AnDfSdhr.net
楽しくゲーム創作したいならスクリプト、かこう
547:デフォルトの名無しさん
17/02/23 11:02:22.09 n+JFlMWK.net
>>524
教えてください、お願いします。だろ?
煽って答えを聞き出すなんて、いまどき中学生ですらやらないぞ。
548:デフォルトの名無しさん
17/02/23 11:35:30.81 fntMoO6R.net
>>524
話を理解してないのか?
関数は中学で習う基礎知識
549:デフォルトの名無しさん
17/02/23 12:07:51.22 7EiXLdxe.net
お前らが「こいつは関数わかってない」って言う意味が分からなかったが>>495や>>502が解けないのを見て今更ながら解した。
私も初学者だから一緒に頑張りましょうや。まずはサンプル集的な入門書を1冊やってみるのがいいかなと思う。
そっから帰納
550:的に学べるかはまた別の問題だけど
551:デフォルトの名無しさん
17/02/23 12:32:21.05 IVL7isfZ.net
数学の関数は分かってると言ってたが、全く分かってなかったな
プログラム触ったことないそこら辺の中学生に聞いても答え出せるレベルの問題なのに・・・
552:デフォルトの名無しさん
17/02/23 12:33:46.79 AnDfSdhr.net
C++みたいなダメな言語を使うのをやめよう
シンタックス的にいけてないから関数が理解できないわけさ
俺も上の問題見たときまず思ったのが、値渡しして値が帰ってくるのって大丈夫だっけ、参照渡ししなくていいんだっけ、ってことばかりが気になった
おそらく参照をリターンせずに値をリターンしてるからセーフなんでしょうと思ったけどいちいちこんなこと気にしないといけない言語で、関数勉強しようってほうが無理じゃね。
極端な話f(a)=a×a+4a+1+bとする
このときf(4)はいくらかね、ぬーぶくん、これはおそらく中学の数学だ
これに答えられないなら、自由変数、束縛変数と僕らが呼んでいるものが理解できていないわけだ
その状態でローカル変数やスコープやスタックフレームを理解しようたって無理じゃね
553:デフォルトの名無しさん
17/02/23 12:36:11.04 AnDfSdhr.net
ちなみに君達が出題した合成関数は数学3の範疇だ、下手すると文系は知らずに一生を終えることもありうる概念だ
概念自体は単純だけど、C++みたいな手続き言語では、不適切な例示だと思うね
554:デフォルトの名無しさん
17/02/23 12:38:24.55 KoyZyoDT.net
プログラム以前にSPI(入社試験)系の問題、特にブラックボックス問題とかやるべきだと思う
URLリンク(spi)練習問題.com/category/%e3%83%96%e3%83%a9%e3%83%83%e3%82%af%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9/
あとは、フローチャートを書くとか
ぬーぷはプログラム以前に先に脳みそを鍛えるところからやらないと
555:デフォルトの名無しさん
17/02/23 12:41:25.79 AnDfSdhr.net
平均的な中学生はいきなりC++なんてやらない
せいぜいBasicかfortranでも触っとけばいい
君がしたいのはゲームデザインであって、ゲームプログラムじゃない、なぜゲームのルールをつくるのに、ハードウェアと格闘しないといけないんだ
n人じゃんけんを実装するのにすらひぃひぃ言ってるような言語で、いったいどんなゲームが作れると言うのか
556:デフォルトの名無しさん
17/02/23 12:48:01.35 fntMoO6R.net
>>530
その手の式はかなり前に出題されてる(もっと簡単なの)
理解できないから、数学の先生に教えたもらえってのが結論
557:デフォルトの名無しさん
17/02/23 12:52:18.39 KoyZyoDT.net
>>533
> せいぜいBasicかfortranでも触っとけばいい
そんな死語通り越した、化石言語なんか冗談でも紹介するもんじゃぁない
558:ぬーぶ ◆upkqfrxkrw
17/02/23 16:07:04.53 V0y6v9yA.net
>>522
多対一の話はできるけど
みんな勝手に間違った解釈で話進めるからついてけない。
ちょっと説明させておくれ。
559:ぬーぶ ◆upkqfrxkrw
17/02/23 16:08:35.19 V0y6v9yA.net
>>528-529
学校で習う数学の問題は解ける。
えっとつまり一次関数の問題出されたら普通に解けるんだよ。
でもプログラミングの関数、って言われるとf(a)とか返り値とか
意味不明な言葉が出てくるから解けない。
もしかして中3範囲の数学の事言ってる?それなら解けないよ。
560:ぬーぶ ◆upkqfrxkrw
17/02/23 16:10:16.00 V0y6v9yA.net
>>530
間違ってたらごめんだけど33+b?
自由変数とか束縛変数とか知らないんだけど…
561:デフォルトの名無しさん
17/02/23 16:35:36.74 n+JFlMWK.net
学校に行け、以外の意見は出ないだろうなこりゃ。
絶望的なまでに学力が足りない。
もっとも自分で勉強する力もなくてすぐ人に聞いてしまうような
やる気ない�
562:nの人間は、そもそもプログラミングなんて習得できんよ。 あきらめろん。
563:デフォルトの名無しさん
17/02/23 16:38:11.70 eW7yBYOi.net
数学でも教科書や問題集の例題を数字変えただけのは解けるけど
応用問題とか発展問題は苦手なタイプとみた
564:デフォルトの名無しさん
17/02/23 16:47:19.48 KoyZyoDT.net
自由変数、束縛変数なんか習ったこともねーし、言葉として使ったこともないわ
もし使うなら別な言葉で言うと思う
565:デフォルトの名無しさん
17/02/23 17:10:59.19 boStFqTs.net
Pythonスレに書いたじゃんけんゲームの仕様を見る限り
君の場合は自分の作りたいプログラムの機能仕様をわかりやすくまとめる力が圧倒的に不足してる
プログラムってのは自分の考えを表現する方法の一つだから
特定の言語でどう実装するかやどういうアルゴリズムを使えばいいかを学ぶよりも
自分の考えを深化させたり文章にまとめる能力を高めるほうが先
そのための近道は学校に行くかその代替手段で基礎学力を身につけること
文章力の低い人がいいプログラマーになれる可能性はほぼゼロだし
今の段階で可読性の低いコードゴルフみたいなプログラムを見ても害でしかないよ
じゃ
566:KAC
17/02/23 17:35:50.47 mjDzcMf0.net
>>538
少しは理解が進んでいるみたいなので
ついでにひとつ問題を出そう。
f1(x) = x + 1
f2(y) = y - 2
という二つの関数があったとしよう
この時、
f2(2) は いくつになる?
f1(0+1) は いくつになる?
では、 f1(f2(2)+1) は いくつになる?
これが解けたら、>495をもう一度見直してみ?
567:ぬーぶ ◆upkqfrxkrw
17/02/23 18:04:50.51 V0y6v9yA.net
>>539
あきらめないお
>>542
Pythonスレなんて行った事ないんだけど人違いじゃないか…
568:ぬーぶ ◆upkqfrxkrw
17/02/23 18:05:28.27 V0y6v9yA.net
>>540
うん、確かに応用問題は超苦手。
型にはまった問題ならすぐに解けるんだけどね。
アスペの痛いところ。
569:ぬーぶ ◆upkqfrxkrw
17/02/23 18:07:00.96 V0y6v9yA.net
>>543
えーと、f2が0?そんでf1が2?
全然自信ない…
570:ふつけら ◆f5STnaEXUk
17/02/23 18:08:31.20 +rmKD8dw.net
MARCH以上の大学でコンピュータサイエンスを学んでも
ラムダ計算をやらない大学があるんだな
ところでややこしくなるから前は言及しなかったが
俺が中学高校で習った関数は
xの値が決まればyの値が一意に決まるというものだった
この定義だと陰関数は関数ではない
多変数関数はどうなのか等
高校までに習う関数の定義はあまり汎用的な定義ではないよ
571:ぬーぶ ◆upkqfrxkrw
17/02/23 18:10:43.99 V0y6v9yA.net
>>547
そうそう、自分もxの値が決まればyの値が決まるって習ったけど
プログラミングの関数はなんか違うから分からんのよ…
572:KAC
17/02/23 18:20:04.07 mjDzcMf0.net
>>546
そこまでは正解。
あとは f1(f2(2)+1) が理解できるようになれば
プログラム言語で関数がどういう扱いになっているのか
想像もつきやすくなるだろうが、まだ感覚的に理解できていないのな…
まあ、じっくり考えてみ
573:ぬーぶ ◆upkqfrxkrw
17/02/23 18:27:55.71 V0y6v9yA.net
>>549
f1(x) = x + 1
f2(y) = y - 2
f1(f2(2)+1)
これを解くのか…
f1(f2(2)+1) = f1=2, f2=2
こう?
574:ぬーぶ ◆upkqfrxkrw
17/02/23 18:29:12.49 V0y6v9yA.net
ってなるとf1=3?分からん…
575:ぬーぶ ◆upkqfrxkrw
17/02/23 18:31:53.75 V0y6v9yA.net
ちょっと一旦落ちます、スンマセン。
576:デフォルトの名無しさん
17/02/23 18:42:22.81 boStFqTs.net
>>544
別人か
そりゃすまんかった
577:ふつけら ◆f5STnaEXUk
17/02/23 18:48:54.56 +rmKD8dw.net
ぬーぶの計算は謎だな
少し難しい話をする
答えをほぼ書くことになってしまうけど
f1(x) = x + 1
f2(y) = y - 2
f1(f2(2)+1)の計算を
f1((2 - 2) + 1) (f2を計算)
f1(1)
1 + 1 (f1を計算)
と計算してもいいし
f1(f2(2)+1)の計算を
(f2(2)+1) + 1 (f1を計算)
f2(2)+2
(2 - 2) + 2 (f2を計算)
と計算してもいい(数学では)
どこから計算しても結果が同じになる合流性という性質があるから
ただし
578:Cの関数としては必ず引数から評価されるので C/C++では必ず引数のf2(2)のほうから計算される でもこの合流性は数学的な関数について成り立つのであって Cの関数に副作用があると成り立たなくなる(計算順序で結果がかわる) つまり副作用があるとバグりやすくなる
579:34歳うんぬん
17/02/23 18:49:33.72 nluhxzeP.net
>>ぬーぶ
Javaの世界に来る気はない?
580:ふつけら ◆f5STnaEXUk
17/02/23 18:50:48.40 +rmKD8dw.net
うーん、でも上の例でバグりやすくなるというのはちょっと変か
581:ぬーぶ ◆upkqfrxkrw
17/02/23 20:39:47.05 V0y6v9yA.net
>>554
ますます意味が分からんくなってきた…
それ本当に中2の数学?そもそもf1(f2)みたいな
関数の中に変数があるっていうのを知らないから
そこから混乱してるんだけど…
582:ぬーぶ ◆upkqfrxkrw
17/02/23 20:41:56.02 V0y6v9yA.net
>>555
何でJava?開発環境の関係でC++から動く気はないけど…
どうしても一番使いやすいDXライブラリにしたい。
Javaの文法含めて使えそうなライブラリの少なさからも
あんまり触りたくない。
583:デフォルトの名無しさん
17/02/23 20:46:51.60 eZ3ictl+.net
f(x) = x + 1
f(f(2)) → f(3) → 4
2は内側のfの実引数
3は内側のfの返り値(結果)であり、外側のfにとっての実引数
4は外側のfの返り値
584:デフォルトの名無しさん
17/02/23 20:49:51.99 eZ3ictl+.net
このfをCで書くと
int f(int x) {
return (x + 1);
}
関数fの返り値はreturnされるもの
585:ぬーぶ ◆upkqfrxkrw
17/02/23 20:50:14.64 V0y6v9yA.net
>>559
…全く分からん。疲れてんのかな。
日本語が全く頭に入らない
586:デフォルトの名無しさん
17/02/23 20:53:44.82 OxA/2zoK.net
お前ら何やってんの?
587:デフォルトの名無しさん
17/02/23 20:54:41.16 eZ3ictl+.net
f(x) = x + 1
f(3) → 4
x は f の仮引数
3 は f の実引数
4 は f の返り値
588:KAC
17/02/23 21:14:13.64 mjDzcMf0.net
>>562
プログラムを理解する上で躓きやすい「式の評価」について
どう書けば素人でも理解できるのか試行錯誤中。
今の話題は、関数の評価についてと値の利用方法あたり。
589:デフォルトの名無しさん
17/02/23 21:17:32.38 Q++G69EO.net
y=ax+b
ってのを
f(x)=ax+b
と書くのよ。と今はざっくり考えてて良い。
fはfunction、日本語で関数の頭文字から。
590:デフォルトの名無しさん
17/02/23 21:18:47.62 OxA/2zoK.net
式の評価ねぇ…ゲームのダメージ計算式にでも例えたら分かるんじゃね
591:デフォルトの名無しさん
17/02/23 21:23:24.01 Q++G69EO.net
>>565
実は上の式と下の式で等号の意味が違ってるんだけどね。
592:デフォルトの名無しさん
17/02/23 21:32:11.60 auLzoU+G.net
>>565
この場合の=は等価というよりは定義の意味合いが強いな
「関数f(x)をax+bとする」だね
C系言語の=は等価じゃなく代入式だから注意が必要だね
c=c+1は数学的には間違いだけどプログラム的にはok
593:デフォルトの名無しさん
17/02/23 21:47:40.64 D7gpmMoW.net
f(x)というのは、xによって変化する関数という意味
g(x)だろうがh(x)だろうがxによって変化する関数を意味する
f(x)=3x+1に
例えば、x=1をいれる f(1)=4
x=2なら f(2)=7
x=4なら、...もうわかるだろう
中学生ならy=3x+1という表記のほうが見慣れているかもしれない
それと同じ、y=f(x)=3x+1という表記もおかしくはない
f(x)という表記はこれがxにたいする関数であると明記しているだけだ
次に小難しい話だが、f(a)=3a+1という関数があったとしてこれは、f(x)=3x+1と表記はちがうが意味は変わらないというのもわかるだろう
つまりこのfは入力を3倍し1足したものだ、変数がxとかかれようがaとかかれようがかわらない
594:デフォルトの名無しさん
17/02/23 21:50:43.39 eZ3ictl+.net
>>569
同一レス内で「=」の用法がブレているというのは良くないな
評価は → にしなよ
595:デフォルトの名無しさん
17/02/23 21:57:42.00 MRqzZJqE.net
取り敢えずこの辺でなんとかならんかな
URLリンク(kou.benesse.co.jp)
>>558
java使えなんて言わんけどDxlibが一番使い易いなんて誰が吹き込んだの
596:ふつけら@hipporo
17/02/23 22:04:00.73 +rmKD8dw.net
>>557
中学では習わない数学かもしれないが
>>559あたりはゆっくりでもいいから理解に挑戦してほしいところ
多分俺らもぬーぶがどこがわかってないかがわかってないから
何を説明しようかって悩んでる
f1(f2(2))が関数の中に変数がある、と思ってるならそこは誤解
f1(f2(2))ってのは関数の引数に関数呼び出しがあるって状態
自分でプログラムを書いて確かめることもできるはずだよ
597:ふつけら ◆.dmxDXVJPU
17/02/23 22:11:39.42 +rmKD8dw.net
トリップ、自滅したのでとりあえず別のを使うわ
598:デフォルトの名無しさん
17/02/23 22:12:11.58 D7gpmMoW.net
例えば円の方程式などは1つのxに対して2つの解を持ちうる。
例えばx^2+y^2=1という円の方程式を考えると
x=0としたときyは1とすると方程式が成立(0^2+1^2=1は正しい)することがわかるが、
yが-1となっても方程式が成立する(0^2+(-1)^2 =1もまた正しい)
こういうものを多価関数と呼ぶこともあるが、一般的なコンピュータ数学においては現れない。
よってこうしたものを無視するとすると、
数学的な関数(正確には写像と呼ぶべきか)というものは、
君たちが小学生のときならったように
入力i(inの略)に対して 箱fが存在し、箱を通り抜けたiは出力o(outの略)に変換される。
o = f(i)
入力i=1,2,3,4,5に対してf(i)=i×iという箱を用意すると
箱を通して出てきた出力oはそれぞれ、1,4,9,16,25となるのは中学生でもわかることだろう。
さて、プログラミングにおいてこのような入力に対して出力が一つに決まる関数を特に純粋関数と呼ぶ。
これは全く同じ入力を入れた場合、全く同じ出力が期待されるということも含んでいる。
このことを特に参照透過性ということもある。
さてC++で関数を書くときに参照透過性は常に保たれるかということに着目してみよう。
599:デフォルトの名無しさん
17/02/23 22:30:16.48 B1nbbzfD.net
難しい言葉使っても分かりにくくなるだけじゃ?
600:デフォルトの名無しさん
17/02/23 22:30:24.37 KoyZyoDT.net
>>571
2チャンネルではDxlibをつかえだなんて誰も言ってないな
プログラミングしたいならJSのキャンバスあたりが楽だと思って勧めてみたんだが、あえてC++につっこむと言う意地っ張り
601:デフォルトの名無しさん
17/02/23 22:36:39.36 D7gpmMoW.net
純粋関数にならない例は簡単に用意できる
グローバル変数gに関数が依存している場合が典型的だ
out = f(i)= i+gとする。
もしg=1がセットされていた場合
f(1) = 1+g =1+1 =2
もしg=3がセットされていた場合
f(1) = 1+g =1+3 =4
というわけで、簡単に純粋性は破られた。
このように、関数の挙動がグローバル変数によって変わると、
関数の出力値が(関数の入力だけを見ても)予測できない状態になってしまう。
これがグローバル変数が忌み嫌われる理由であり、これを特に「状態」と呼ぶ。
だがゲームを作るにあたって状態は欠かせない物となっている。
例えばキャラクターのステータスといったものは、状態そのものではないだろうか。
あるいはカメラが現時点で向いている角度といったものは状態として取り扱うべきだろう。
カメラの向きや、状況によって映し出される映像が切り替わるのであれば、
まさしくそれは状態そのものといっていい。
実際には向いているカメラの角度、カメラの位置、現在の場所、キャラクターの状態などを
引数として関数を呼び出していると解釈することもできる。
そうした場合引数の数が膨大になるだろう。
そうした対策としてオブジェクト志向というものが考え出されたわけだが、それは別の話とする。
ゲームデザインにおいてもっとも重要なのは何を状態とするか、と言っていいだろう。
例えばキャラクターの力は、レベルによって完全に決まるならば、
力を状態として保存する意味はない。すばやさや、知力においても同じだ。
それはレベル(とキャラクター名)を入力とした関数だ。
ただし力のたねや、すばやさのたねなどのランダムに増加するドーピングアイテムを
ゲームデザインとして用意する場合、力やすばやさは状態として記録するのが自然だろう。
602:デフォルトの名無しさん
17/02/23 22:40:47.42 B1nbbzfD.net
喋り始めたら相手の理解とか関係なく話続けるタイプ?
603:デフォルトの名無しさん
17/02/23 22:44:16.64 4yvbYKT4.net
プログラミング能力と人に教える能力は別物だとよく分かるスレ
604:デフォルトの名無しさん
17/02/23 22:50:37.06 D7gpmMoW.net
じゃあプログラムを簡単な用語のみで説明してみりゃいいじゃん
ようやく、ぬーぶくんが関数を理解し始めたのに
君たちはぬーぶくんが習ってもいない合成関数の問題を出したり、
ただ物事を知らないだけの中学生をぼこって喜んでるだけじゃん
俺はそういう大人たちをぼこって喜んでるんだけど、なんか文句あるの?
ここの人間は、関数とは何か、プログラムにおける関数と数学の関数の違いについて
何か一言でも"まともな"アドバイスしてあげましたかね?
わからない用語があったらググるんだよ?
ググれるように用語を使ってるわけなんだから
プログラムにおいて、状態に気を付けられないなら、まともなプログラムなんてかけるわけないじゃん。
ここから先、型システムに踏み込んだらこんな単純には行かないし
オブジェクト志向の袋小路になんて迷い込んだら1年は迷子になるわ
俺が言いたいのは極力関数でプログラムを組めということ。
グローバル変数を使うなとは言わない。状態の数を制限しろと言ってる。
グローバル変数を使うか使わないか、どの程度使うかの見極めは、
プログラム設計、及びライブラリ設計の根幹をなすものだから絶対に理解しなきゃいけない。
605:デフォルトの名無しさん
17/02/23 22:54:39.67 B1nbbzfD.net
頭の中が言葉で溢れて止まらないタイプだね
606:デフォルトの名無しさん
17/02/23 22:57:41.03 4yvbYKT4.net
スレタイのねねっちはそういう意味か
607:デフォルトの名無しさん
17/02/23 22:59:13.73 D7gpmMoW.net
そういえば合成関数の説明をしてないな
問1
y=3x+1とする。
z=5y+3とする。
xが4のときzはいくらか?
ぬーぶくんならこれはわかるはずだ。
次の問題はどうだろうか。
f(x)=3x+1とする。
g(x)=5x+3とする。
(1)g(4)はいくらか。
(2)f( g(4) )はいくらか。
確認のために次の問題もとこうか。
f(x)= x+1
g(x)= x+2
h(x)= 3x+5
h( g ( f(1) ) )はいくらか?
これがもし解けたなら、つまりはそういうことだ。
608:デフォルトの名無しさん
17/02/23 23:02:06.73 KoyZyoDT.net
>>580
円の方程式とか中学で習ってないのに例を出しても意味ないだろうし
純粋関数なんか言葉遊びとかどうでもいい
プログラムの関数と数学の関数は違うもんだとなんとなく覚えておけば十分で、小難しいこと言っても理解できるわけないだろ
状態とかそんな概念はその後の話で今することじゃない
お節介で相手を混乱させてどうするんだよ
やるなら偏差
609:値40くらいの小学生でもわかるように説明すべき
610:デフォルトの名無しさん
17/02/23 23:15:23.48 D7gpmMoW.net
偏差値40の小学生に伝わるように
コンピュータでいうところの関数を説明してみればいいんじゃないかな。
ぬーぶくんの課題はおおよそスレ全体の認識として
「関数を理解すべきだ」というとこまで来てる。
でプログラムの関数と数学の関数は同じか否かについては、
スレ住民の回答が実はわかれているわけだ。
ある人は同じだといい、ある人は違うという。
同じだという人に説明義務はないが、(だって同じなんだから)
違うという人は何が違うのかを明確に答えられない。
611:デフォルトの名無しさん
17/02/23 23:45:33.16 KoyZyoDT.net
プログラムではこう言う使い方をするもんと認識できればいいだけで、厳密に同じか違うかなんてこの際どうでもいいんだよ
違う例でいうと、数学だと引数が変わることないけどプログラムだと変わることある
ただ、初めはそんなこたぁどうでもいいんだ
なんのためにあるか、これが重要
答え:同一処理を簡単に繰り返すことができて便利
例:じゃんけんをX回やるとする。(for、whileは使わないとする)
じゃんけんの処理は以下とする
1.右手を握りしめ振りかぶる
2.左手を右手に添える
3.右手の形を変更する
4.右手を激しく突き出す
5.勝敗の判定をする
関数がない場合、これらをひたすらコピペする作業を繰り返すことになる。
2.5番目あたりに適当な高さまで空を飛ぶという処理が追加されたとすると、修正するにはこれをX回該当箇所にコピペしないと行けない。コピペミスったら、バグとなり不便。
しかし、関数化してまとめておくと修正する箇所が1箇所ですみ楽。
とかで、いいんでないかな
612:デフォルトの名無しさん
17/02/24 00:00:57.12 U59pFFqM.net
今の時点でサブルーチンとファンクションを混同するのは。。。
613:デフォルトの名無しさん
17/02/24 00:04:55.75 /c3PLVLe.net
今時、厳密に区別する意味あんの?
区別してなんの意味があるの?
614:ぬーぶ ◆upkqfrxkrw
17/02/24 00:36:39.04 1EPw9pG+.net
>>565
おー!そういう事ね、分かり易い。
でも今言われてるのって、
f1(x)=ax+b と、 f2(y)=cy+d
ってことで、それをf1(f2(2))…なんてされたらもう訳わからん…
615:ぬーぶ ◆upkqfrxkrw
17/02/24 00:37:39.66 1EPw9pG+.net
>>567
y=ax+bの「=」はイコール、
f(x)=ax+bの「=」は「ax+b」の結果を「f(x)」に代入するってこと?
616:KAC
17/02/24 00:39:19.86 xpT2l8Ie.net
>>588
少なくとも関数を設計する上では
混同するといい設計にはならないだろう。
漠然と関数を分けていくくせをつけてると
ゲームのような大きめのプログラムを組むときに破綻しやすい。
617:デフォルトの名無しさん
17/02/24 00:47:13.42 /c3PLVLe.net
>>589
int i = f2(2);
int result = f1(i);
print(result);
これは、下のようにかける
print(f1(f2(2)));
>>591
別に全部関数でいいだろ
今時サブルーチンなんて見たことないし
618:ぬーぶ ◆upkqfrxkrw
17/02/24 00:56:43.75 1EPw9pG+.net
>>569
なるほど、そういう事か
あんまりかっこの中はまだ気にしなくて良いのか
619:ぬーぶ ◆upkqfrxkrw
17/02/24 00:57:34.59 1EPw9pG+.net
ちょっと寝ないとなのでレスは明日にします、すんません
620:デフォルトの名無しさん
17/02/24 00:59:37.06 r8chwlmp.net
>>590
やっぱり混同してる
もういいから中学生は早く寝ろ
621:デフォルトの名無しさん
17/02/24 01:03:08.96 2ntlDWAY.net
なんかみんなの説明難しいんだよな
>f2(2) は いくつになる?
>f1(0+1) は いくつになる?
に対して
>えーと、f2が0?そんでf1が2?
ってちゃんと答えてるのに
>では、 f1(f2(2)+1) は いくつになる?
f2(2)が0って自分で答えてるんだから
f1(0+1)って導けるし、
f1(0+1)が2になるって答えてるんだから
もう全部自分で答え出してるのに、
「f1(f2(2)+1)だと…!?わかんねぇ…」
って言われてみんなで
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
ってなったんちゃうかとww
622:デフォルトの名無しさん
17/02/24 01:04:54.42 hcCi+TdT.net
>>586
>なんのためにあるか、これが重要
>答え:同一処理を簡単に繰り返すことができて便利
これちょっと新鮮
1~5の一連の処理を「じゃんけん」と名付けて一段高い抽象度で扱えるようにするのが関数化する時のイメージ
同じことなんだろうけど見る方向が自分とは違う気がした
623:デフォルトの名無しさん
17/02/24 01:07:19.69 r8chwlmp.net
数学の定義とか持ち出すから話がややこしくなる
確かに計算機科学は数学を基本モデルとしてるが独特な概念もある
コードの再利用化、部品化の為の基本単位、ぐらいに考えとけ
624:デフォルトの名無しさん
17/02/24 01:21:41.62 /3IvyRqo.net
ねねっちがいないことが一番の問題
625:ねねっち
17/02/24 01:31:20.02 VsGpwvoI.net
参加しま~す
626:デフォルトの名無しさん
17/02/24 01:36:33.42 z1PezhCl.net
やったー!
ペイントで頑張って作ったよ
URLリンク(i.imgur.com)
627:デフォルトの名無しさん
17/02/24 02:03:00.65 z1PezhCl.net
合成関数もできたよ!
URLリンク(i.imgur.com)
628:デフォルトの名無しさん
17/02/24 02:38:00.60 VsGpwvoI.net
URLリンク(www.phys.u-ryukyu.ac.jp)
629:ふつけら ◆.dmxDXVJPU
17/02/24 06:47:03.79 DGbB1ZNE.net
>>585
違うって言ってるのは今のところ俺だけだけど
違うことだけは>>188で具体例を出してる
同じだと言う人は>>188のCの関数群がそれぞれ
どういう数学の概念に相当するのか答えろよ
他にも数学では無限を扱えるがコンピュータは直接無限を扱えない(処理が終わらない)
コンピュータでは近似(float等)であったり
遅延評価(haskell 無限リスト)であったり特別なモデル化(領域理論等)が必要だったりする
630:デフォルトの名無しさん
17/02/24 07:35:56.26 UOjrjCC/.net
定義の場合は
f(x) : ax + b
とかBNF的に書いた方が分かりやすそうだな
631:デフォルトの名無しさん
17/02/24 07:51:38.64 UOjrjCC/.net
中学生の問題は難解なものを敢えて選択したのに基本的なことをすっ飛ばしてやろうとする所だな
複雑なものほど簡単な所を確実に押さえておかなければ先に進まないよ
632:デフォルトの名無しさん
17/02/24 08:40:54.49 tSFOJ55b.net
>>605
C言語風に書けばいいだけじゃあないかなぁ?
633:デフォルトの名無しさん
17/02/24 12:04:05.07 F/TDaiUX.net
Cのくそなところは
=が代入演算子なところ
あと*に意味が二つあるところ
634:デフォルトの名無しさん
17/02/24 15:01:21.53 IzlQUdN8.net
=が代入演算子なプログラミング言語は腐るほどあるだろ
635:デフォルトの名無しさん
17/02/24 17:57:01.58 9XZ0OXat.net
この世界には腐るほど糞が溢れてるってことだろ
636:デフォルトの名無しさん
17/02/24 23:28:44.14 r8chwlmp.net
FORTRAN, BASIC: 代入、等価ともに=
ALGOL, PASCAL: 代入は :=、等価は =
C(とその多くの子孫達): 代入は =, 等価は==
(ただし文字列はstrcmp関数やequalsメソッドなど用いる必要あり)
C系であるjavascriptは==と===と等価式が2つある
そしてCOBOLは代入がMOVE TOと、もはや記号ではなくしかも左から右という変態っぷり
(ただしCOMPUTE命令で=を代入式として使える)
637:34歳うんぬん
17/02/24 23:44:28.52 7vQ1IApu.net
>>ぬーぶ
プログラマー板に書いてあった、言いたいことって何?
638:ぬーぶ ◆upkqfrxkrw
17/02/25 00:29:53.65 gqIOXHuy.net
>>604,606
なんかもう複雑すぎてレス返そうにも返せない状態…
639:ぬーぶ ◆upkqfrxkrw
17/02/25 00:34:40.94 gqIOXHuy.net
>>612
話したい事なんだけど、
こっちのほうが言っちゃなんだけど
向こうより真面目に教えてくれる人が多いし、
暫くJavaのプログラミングをここでやりなよ。
特にこっちでは出禁されてるわけでもないし、
事情知ってる人が居ても…まあ34の態度次第っちゃ態度次第だけど。
あと紛らわしいから一応酉つけてね。
マ板の質問に対しては上のほうのレスでも言ってあるけど
二重人格というよりかは情緒不安定、躁鬱に近い状態なんかな。
攻撃的か穏やかかは殆ど機嫌次第だし、攻撃的で機嫌悪いとき
640:でも 一応穏やかなときと言ってる事はさほど変わらないよ。
641: ◆BrBq2CJg6HGd
17/02/25 00:57:22.86 5SdVEWhc.net
>>614
ありがとね。
まあ受け入れられそうな感じならいいんだけどね。
精神疾患かぁ。病院か診療所通ってる?(疑問形にしてても答えたくなければ答えなくていいから)
642:ぬーぶ ◆upkqfrxkrw
17/02/25 01:02:42.52 gqIOXHuy.net
>>615
精神疾患というか最近リアルでも色々あって気が抜けてる
病院はちゃんと通ってるよ
643: ◆BrBq2CJg6HGd
17/02/25 01:42:39.84 5SdVEWhc.net
>>616
そうかぁ。大変だね…。
人間関係的なこと?進路的なこと?
644:デフォルトの名無しさん
17/02/25 07:44:07.43 LhQh8qro.net
>>617
プログラミング以外の雑談がしたいなら余所でやれ
645:デフォルトの名無しさん
17/02/25 08:47:23.42 QMwIpXRB.net
同病相憐れむという奴だな
646:615
17/02/25 10:02:59.68 5SdVEWhc.net
>>618
失礼しました。
プログラム板だってことを忘れてました。
647:デフォルトの名無しさん
17/02/25 10:17:10.84 QMwIpXRB.net
>>550
実際に書いて動かしてみればいいだけの話じゃね?
URLリンク(ideone.com)
648:KAC
17/02/25 11:24:12.41 1Kz9yB9K.net
話が元に戻ってる…
元々は>>495(>>498)のプログラムで、
その動きが理解できないからって話
649:デフォルトの名無しさん
17/02/25 11:32:00.19 QMwIpXRB.net
まあ理解が追い付かなかったら手を動かせって話だね
IDEには便利なデバッガもあるのだし
650:デフォルトの名無しさん
17/02/25 13:00:36.03 4XU9OsB+.net
Visual Studioのデバッガは便利だと思うけどエクリプスのデバッガは不便だと思う俺がいる
651:デフォルトの名無しさん
17/02/25 14:14:08.99 QMwIpXRB.net
ハッキリ言ってC言語は高級アセンブラと揶揄されるほど難しい言語
C++はCを便利にした分言語仕様が増えさらに覚える事も多い
ハードの仕組み(電気的な話ではない)を理解したかったらアセンブラを
やってみる事だな(組める必要は無い)
652:デフォルトの名無しさん
17/02/25 14:23:39.20 HHep+tux.net
>>625
その話だと、Cやった方が良いだろ
653:デフォルトの名無しさん
17/02/25 14:50:02.11 K2WTaKqS.net
ゲームは人にプレイしてもらって初めて価値が生まれると思うんだよ
もちろん自分で作って自分だけがプレイして満足ならいいんだけど、大半のゲーム制作者は人にプレイしてもらうことを望んでるはず
C++とdxlibで作ったゲームを誰にプレイしてもらうの?
ハードウェア勉強したいんじゃなく、ゲームが目的なら
今の方法は茨の道を進んでたどり着いたゴールは過疎の村って感じだよ?
間違った方向への努力は評価できない
654:デフォルトの名無しさん
17/02/25 14:52:56.87 ALFxeD2L.net
お前に評価される意味がわからない
655:デフォルトの名無しさん
17/02/25 18:11:06.26 PB0Hr6wi.net
多分、全てを自分のコントロール下に置きたいんだよ
そして頑張れば自分に必要な機能だけ実装した自分ライブラリが完成させられると思っているはずだ
それが幻想だったと気がつくのは、実際にライブラリ作りはじめてから半年後くらいかな
何でも出来る&何でも自分でやらないとならない故に、
機能の取捨選択も出来ず何でも自分で実装しようとした果てに、途中で力尽き急激に熱が冷めるという結末まででテンプレ
656:デフォルトの名無しさん
17/02/26 00:05:20.14 WP4rX3RZ.net
熱ある奴はオレオレライブラリつくってもええんやででもcぷらぷらでおれおれしてもええことないで
大抵既存ライブラリがいまいちだと思ってる奴は自分で書きたいようにかけるようにしたいだけ
それを満たすための第一選択は動的スクリプト言語をやることなんだけど、何か変なポリシーがあるのか、最速言語ですべてを作ろうとする
そんな低遅延ハイスループットでいけてるライブラリなんて金もらわんとつくってられんような産物なの
657:デフォルトの名無しさん
17/02/26 08:49:18.14 s06OToLE.net
34歳がフェードアウトするタイミングで一緒にフェードアウトとかやっぱ同一人物だな
658: ◆BrBq2CJg6HGd
17/02/26 11:17:03.32 uiR224zO.net
>>631
まだ言ってる。
659:デフォルトの名無しさん
17/02/26 12:37:43.96 JlxiU+ns.net
>>626
レジスタやメモリ、スタックを直にイメージ出来るようになると違って来るんだよ
CASL IIのエミュレータでやってもいいしgccに-Sオプションで吐かせたアセンブラのリスト眺めるだけでも勉強になる
660:ぬーぶ ◆upkqfrxkrw
17/02/26 13:45:18.65 T6n4u/8j.net
>>617
両方。
これ以上の雑談は別スレ立てるなりして
こっちを誘導しておくれ
661:ぬーぶ ◆upkqfrxkrw
17/02/26 13:48:44.88 T6n4u/8j.net
えーと要するに関数を一回動かしてみれば良いのね…
そうしたかったけど何か自分で考えなきゃいけない気がしてw
662:ぬーぶ ◆upkqfrxkrw
17/02/26 13:49:21.77 T6n4u/8j.net
>>629
違うお
>>630
ライブラリを作る気はないけど、
ゲームエンジンはいずれ作りたいな
簡単なもので良いから。
663:デフォルトの名無しさん
17/02/26 14:12:29.38 s06OToLE.net
ゲームエンジン >= 複数のライブラリの組み合わせ
と仮定すると、ライブラリ作らんでどうやって実現するつもりなんだろうか?
664:ぬーぶ ◆upkqfrxkrw
17/02/26 14:14:38.62 T6n4u/8j.net
>>637
え、どゆこと?
665:デフォルトの名無しさん
17/02/26 14:18:49.98 JlxiU+ns.net
>>635
考えて分からなければやってみるしかないじゃん
やってみてどうしてそうなるのかまた考えればいい
誰かが自分にも分かるように説明してくれるの待つつもり?
666:デフォルトの名無しさん
17/02/26 14:20:40.27 JlxiU+ns.net
>>637
いままでゲームエンジンを何だと思ってた?
667:デフォルトの名無しさん
17/02/27 01:43:56.60 2XS/hhGQ.net
ゲームエンジン作りたい言うてるのに、それが何か知らないというのは問題やなあ
ゲーム制作に必要なゲームライブラリのことやで(プラス今は統合開発環境も含まれる)
下のPlayground概念図という図がわかりやすいから見てみるとええ
URLリンク(www.klab.com)
668:デフォルトの名無しさん
17/02/27 01:51:32.17 2XS/hhGQ.net
ちなみにわいはスマホゲーム屋さんやけどな、ゲームエンジン作ってる人たちはほんま怪物やと思うでw
669:デフォルトの名無しさん
17/02/27 05:47:24.92 rD+94B0V.net
ウディタ見てて思うけど、ゲームエンジンとしての直接の問題点は
画像素材や音声素材の有無に集約されちゃうし
それらの弱点を克服できるゲームエンジン作れば需要はあるかも
古いゲームだけどCGIで動いてたSOLD OUTみたいのを作るエンジンとか?
670:デフォルトの名無しさん
17/02/27 19:56:55.73 lIWYqwVD.net
まあ中学生は普通に学校行って普通の思考力、読解力養うのが先決みたいだな
まあ飽きてきたみたいだがw
671:デフォルトの名無しさん
17/02/27 22:55:56.94 02Yvq+V3.net
まぁ、若いうちは取り返しのつく範囲でなら遊んでてもええ
ニートになって30過ぎてからプログラマ目指すのは手遅れや
672:デフォルトの名無しさん
17/02/27 23:21:58.60 2E5i04bw.net
30代の半ばになって、中学生の振りをしたりするのなんて
もう人生の敗北者まっしぐらだからな!
誰とは言わないけど、他のみんなはこうならないようにちゃんと勉強しろよ!
673:デフォルトの名無しさん
17/02/27 23:34:51.95 dfTsPI2D.net
現実逃避し過ぎて別人格(過去の自分)が出てきたのか?
何だか漫画みたいだなw
674: ◆BrBq2CJg6HGd
17/02/28 00:17:45.61 hDpdGzmn.net
ところでぬーぶくんは何か(情報関連の)資格を取る予定はないの?
まぁもう少し先かぁ。
675:デフォルトの名無しさん
17/02/28 00:36:54.61 cPMgmf0t.net
中学生が平日のこの時間に返事すると思っている所がなあ
676: ◆BrBq2CJg6HGd
17/02/28 01:17:44.94 hDpdGzmn.net
あんまり反論すると嫌われそうですが。
別にそういう(今レスして欲しい)訳じゃありませんよ。
掲示板だからいつ書き込んでもいいじゃないですか。
677:デフォルトの名無しさん
17/02/28 01:32:59.76 QAmvnTtD.net
ニートのおじさんはプログラミングには興味が無いけど中学生に興味しんしんのようです
これ、事件になる前に通報しといたほうがいいやつ?
678:デフォルトの名無しさん
17/02/28 08:49:12.91 cPMgmf0t.net
そのあと中学生にチェンジする予定だった
679:デフォルトの名無しさん
17/02/28 09:26:05.60 AahTSViM.net
・活動時間帯が一緒
・アクティビティも連動
・マルチレスのスタイルが一緒
・一時期は引用符も独特な→で被っていた
・句読点のスタイルで違いを演出するも最近は崩れがち
・どちらも…をよく使う
・どのスレも雑談スレだと思っている
・書きたいと思ったらスレ趣旨なんて関係ない
・自分の誤りは認めないスタイル
・基本話は通じない
・どちらも並どころか底辺以下のプログラミング能力
・勉強は一切しない
・動けばそれでいいと思っている
680:デフォルトの名無しさん
17/02/28 09:41:46.87 cPMgmf0t.net
結局まだ何一つ作れていないのは同じだな
681: ◆BrBq2CJg6HGd
17/02/28 21:17:04.33 hDpdGzmn.net
もう思考放棄して、その方が面白いからというたわいもない理由で、同一人物にしとこうということで方向性まとまってるでしょ?
682:デフォルトの名無しさん
17/02/28 21:24:10.30 s9pl2JiI.net
同一人物かどうかなんてどうでもいいからやる気があるならコードを書け
やる気がないなら失せろ
683:デフォルトの名無しさん
17/02/28 21:30:45.72 cPMgmf0t.net
やる気なんて最初からないだろ
常に口だけのやるやる詐欺
684:デフォルトの名無しさん
17/02/28 21:45:11.91 yqCU2pRG.net
やる気よりも頭がよろしくないのが致命的だと思う
目指すのは自由だが研究職とかにつくよりも別な目指した方がよっぽど幸せになれる可能性が高いと思うがなぁ
どっかのターニングポイントで変わったりするもんなんだろうか?
685:デフォルトの名無しさん
17/02/28 22:05:25.80 SX/AvTMQ.net
中学生のやわらか脳みそにC++つめこむとか害悪でしかない
100歩譲ってjavascriptだろ
686:デフォルトの名無しさん
17/02/28 22:32:45.51 cPMgmf0t.net
高さ過ぎるプライドが邪魔して完全に道を踏み外したな
周りが見えず自分が見えないのがこんなに恐ろしいとはね
687:デフォルトの名無しさん
17/02/28 23:19:10.45 YrmGOSdc.net
自分は周りと違う特別だって思ってそう
その通り、周りよりも特別頭が悪いよ
688:デフォルトの名無しさん
17/02/28 23:48:57.88 ym9kvrf3.net
プログラム板トップオブトップの思考停止放棄クズ人間に
思考放棄呼ばわりされたお前らやばすぎw
689: ◆BrBq2CJg6HGd
17/02/28 23:51:25.15 hDpdGzmn.net
やんなっちゃうなぁ。こっちのスレでも叩かれるのかぁ。
やる気はありますよ。足りない頭は努力でカバーです。
690:デフォルトの名無しさん
17/03/01 00:07:17.14 w0n3ASZT.net
>>663
やる気あるならさっさとjavascriptでソースコード書いてこいや
691:デフォルトの名無しさん
17/03/01 00:09:17.75 8HxP/c9n.net
やる気はあります(やらない)
努力します(しない)
行動が伴ってないと誰も相手にせんて
692:デフォルトの名無しさん
17/03/01 00:22:34.94 oHg27y2I.net
お茶してオセロするだけの努力
693:デフォルトの名無しさん
17/03/01 00:36:37.15 CRzwIyGv.net
こいつに努力なんて言われると、言葉のほうが汚れちゃう。
健常者からしてみたら「3秒息を止める努力をしてみました」程度の
努力すらしてないクズの分際で。
694:デフォルトの名無しさん
17/03/01 00:41:05.60 w0n3ASZT.net
息を止めるのもめんどくせぇ
695:デフォルトの名無しさん
17/03/04 20:09:23.61 4ZTE1hiQ.net
最初は滑り出し良かったのに(´∀`∩)↑age↑
696:デフォルトの名無しさん
17/03/04 20:30:14.63 cGIXn+Tz.net
ぬーぶにもようやく現実が見えてきただけだ
スレはこのまま落とせ
697:デフォルトの名無しさん
17/03/05 03:42:31.63 7y+kqLc2.net
理想:ゲームエンジン使ってゲーム作るなんて嫌どす。将来はゲームエンジンそのものを作るんれす!
↓
現実:関数すら理解できずにTHE END・・・(´◉◞౪◟◉)
698: ◆BrBq2CJg6HGd
17/03/05 06:35:14.34 +xkvfAjd.net
関数って、
戻り値 関数名(仮引数) {処理内容}
で構成されるやつでしょ?
そんなに難しいかな?
使用例:足し算の和を返す関数
int sum(int a, int b){
ans = a + b;
return ans;
}
int result = sum(100, 20);
699:デフォルトの名無しさん
17/03/05 06:45:37.65 HdKtRuq3.net
関数は難しいやろ
値、ポインタ渡し、cppなら参照渡しとポインタ渡しは違うし
計算結果を帰す手段についても、Cppならポインタ渡しした変数を演算して、それを持ってして計算を終え、返り値には成功したかどうかチェックコードを返すっていう関数設計もパフォーマンスを重視すればありうる
むしろそれがCppらしいやり方で、Cを採用する理由なんだよなあ
こんな選択肢がある状態で関数を理解しろって結構複雑だろ
700:デフォルトの名無しさん
17/03/05 06:55:54.30 AwmlDDcJ.net
2つの値足すだけの関数の名前にsumとつけちゃうセンス
701:デフォルトの名無しさん
17/03/05 07:34:42.38 UiieEwKt.net
その辺は入門書にも責任あると思うよ
702:デフォルトの名無しさん
17/03/05 09:43:44.82 rgW80Bo3.net
ぬーぶがここまで考えてるとは思わないが、確かに関数は難しい
C++で関数に関わるものだけでも
関数のオーバーロード、関数ポインタ、関数テンプレート、関数オブジェクト、ラムダ式、static関数、constメンバ関数、仮想関数とそのオーバーライド、純粋仮想関数、std::function、std::bind、std::mem_fn、クラスで暗黙定義される特殊関数とそのdefault/delete宣言
ADLも知っておかねばなるまい
関数の設計も重要だ
引数や戻り値に、ポインタ、参照どれを使うのか
constを付ける必要はあるのか
ポインタは生ポインタにするのか、スマートポインタにするのか
複数の値をまとめるにはクラス/構造体にするのか、std::tupleを使うのか
エラー通知にも選択肢があり、例外を使うのか、エラーコードを使うのか、std::optionalを使うのか
単純に引数を計算して終わり、というものではない
703:デフォルトの名無しさん
17/03/05 10:06:38.97 AwmlDDcJ.net
最初からぬーぶなんて中学生はいなかったんや
704:デフォルトの名無しさん
17/03/05 10:10:20.36 AwmlDDcJ.net
>>672
ansの宣言はどこでやってるんだろ?てかans要らんやろ
こんだけ単純な関数でもセンスの無い奴
705:670
17/03/05 12:08:08.47 +xkvfAjd.net
>>678
忘れたんだよ。センス無いってうるさいなあ。
1つ書き込むとその何倍も論破されるなぁ。
706:デフォルトの名無しさん
17/03/05 13:15:35.93 eOiuh3Vb.net
34歳は嫌われてるからね
何故嫌われたのかは、マ板の過去スレを読み返して考えてみよう
今回のは
「関数なんて簡単だろ、俺でもわかるよ(ドヤァ」(意訳)
と、中学生を馬鹿にしたようなレスが鼻についたからかな
707:デフォルトの名無しさん
17/03/05 13:21:16.58 D7fXsWlm.net
>>673
>>676
その辺の事はまず動くコードが書ける様になってから改めて考えさせられる事であって
まだ動くコードが書けない人は>>672の認識からでいいんでないの
708:677
17/03/05 16:39:34.44 +xkvfAjd.net
>>680
まあ「負の遺産」は仕方無いですけど。
Javaやってると(Javaではメソッドですけど)メソッドの理解ではほとんど突っ掛かりませんよ。まあクラスを戻り値にしたり、引数にしたりと若干高度な内容もありますがね。
なんでぬーぶくんもC++なんてトップクラスに難しい言語選んじゃったんだろうなぁ。
709:デフォルトの名無しさん
17/03/05 18:57:28.05 UiieEwKt.net
C++は
言語仕様を完璧に理解しようとしたら死ぬってだけで
理解出来る仕様を理解出来る範囲で使う分にはそこまで難しいわけでもないけどな
具体的にはテンプレート辺りで止めればそこまで複雑なもんじゃない
710:デフォルトの名無しさん
17/03/05 21:17:22.55 mK1Zj6m4.net
C++が難しいとか言ってる奴はどれだけ無能なのか自覚したらいいよ
711:デフォルトの名無しさん
17/03/05 21:56:44.10 AwmlDDcJ.net
さすが自分が有能だと自覚してる人は言う事が違うねw
712:デフォルトの名無しさん
17/03/05 22:20:55.48 xpxsis4Y.net
C++の難しい部分に触らずに今まで生きてきた有能さんはさすが云うことが違いますなぁ。
713:デフォルトの名無しさん
17/03/06 01:12:10.35 4DXGuyA0.net
>>685-686
自分が無能だからって他人を巻き込むなw
714:デフォルトの名無しさん
17/03/06 01:33:00.90 LyKPfjGH.net
褒めてるのに何か気に障った?w
715:デフォルトの名無しさん
17/03/06 11:37:54.56 L7Cb7f1R.net
C++がことさら難しいとは今は思わんが、
昔は多重継承でダイヤモンド型とかになるようなことやったらあかんとか、コンストラクタで例外投げたらあかんとか、やったらダメなことって~のが結構多いのはめんどい
今は問題ないのかな?
716:デフォルトの名無しさん
17/03/06 12:30:00.84 pX6Kd1t9.net
34歳はじゃんけんもまともに作れないからセンスなんてないのよ。
あれはよくSIerの研修で24時間与えられて作らされるのよ。
そこでできないやつはテスターくらいしかできなくて開発仕事なんてできないの。
717:デフォルトの名無しさん
17/03/06 13:16:56.18 BjWb+kQy.net
>>689
そんな迷信に騙されてるから難しく考えてるだけでは?
718:デフォルトの名無しさん
17/03/06 13:25:53.67 L7Cb7f1R.net
>>691
寝言はEffectiveC++だか、MoreEffective読んでから言えよ
719:デフォルトの名無しさん
17/03/06 13:37:43.05 BjWb+kQy.net
>>692
何が問題なのか言ってみ?
ちゃんと説明してやるから
720:デフォルトの名無しさん
17/03/06 14:31:52.85 L7Cb7f1R.net
>>693
・ひし形継承問題
Aを継承しているB、Cを継承したクラスDで、クラスAのメソッドhogeをB、Cでオーバーライドした場合、クラスDでsuper.hoge();とした場合、どうなるのか?
・コンストラクタで例外投げる問題
とあるクラスを継承したクラスのコンストラクタで例外発生させた場合(コンストラク内でキャッチしないと)、メモリリークするはず。問題がないなら、いつ頃改善したのか明示してください。
721:デフォルトの名無しさん
17/03/06 14:51:43.70 BjWb+kQy.net
>>694
文法まちがってる。菱形継承にしたいなら virtual使え。
メモリリークするはずという事が認識間違ってる。
具体的にどんなコードで何がリークするのか書いてみ?指摘してやるから。
722:デフォルトの名無しさん
17/03/06 15:02:44.99 L7Cb7f1R.net
>>695
メモリリークの件は迷信ぽいようですまんかった。あなたが正しい。
おっさん、C++は2000年以降触ってなくてね。
>菱形継承
URLリンク(ja.wikipedia.org)
の例でいうと、
Mammal、WingedAnimalでeatをオーバーライドするじゃないですか。
その場合、batでsuper.eat();したらどうなるのっと?
つーか、今から第三者が書いたC++のコードを読めとか言われたら悶絶しそうだな。自分が書くのは難しくないけど、他人のだけは読みたくねぇや
723:デフォルトの名無しさん
17/03/06 15:04:10.09 BjWb+kQy.net
>>694
一応言っておくけど、複数クラスを継承した場合で
同じメソッド名が複数のクラスに存在する場合は
スコープ演算子で明示しないと書けないのは菱形問題と関係ない
724:デフォルトの名無しさん
17/03/06 15:21:42.86 L7Cb7f1R.net
>>697
なるほど、コンパイルエラーにでもなるんかな。覚えてねーや。ありがとう。
今はSwiftとObjCくらいしか触ってないが、virtualとかないから簡単な方だよな。コードにコメントなくてもなんとかなる。
725: ◆BrBq2CJg6HGd
17/03/06 15:48:15.51 KtYgjZkp.net
>>690
正規表現を使って作ってもいいですかぁ?
726:デフォルトの名無しさん
17/03/06 16:46:14.56 BjWb+kQy.net
>>698
C++が面倒なのは同意。
菱形にしないクラス継承もできるようになってるから、
その辺は「書いたとおりに動く」ってことで。
結構コーディングしたイメージどおりの展開にはなるぞ
> コンパイルエラーにでもなるんかな。
定義が曖昧だとコンパイルエラーになる
基本的にはスコープ付けて明示すればOK
↓こんなソースから適当にいじってみれば?
#include <stdio.h>
class A { public: virtual void f() = 0;};
class B : virtual public A {public: void f() { printf("b\n"); }};
class C : public A {public: void f() { printf("c\n"); }};
class D : public C, virtual public B {public: void fB() { B::f(); } void fC() { C::f(); }}
int main() {
D a;
a.fB();
a.fC();
A* pc = (C*)&a;
A* pb = (B*)&a;
pb->f();
pc->f();
return 0;
}
727:デフォルトの名無しさん
17/03/07 01:06:27.21 DXFL2p+H.net
雑談したいだけのコード書けないおじさんはいらない
728:デフォルトの名無しさん
17/03/07 01:12:59.49 TRrf8/Mo.net
菱形継承はSunが大々的にc++を叩くための方便だと思う
営業戦略って奴ですよ
729:デフォルトの名無しさん
17/03/07 03:16:12.16 wxDNQTjV.net
継承の理解が浅い人が多いから仕方ない
730: ◆BrBq2CJg6HGd
17/03/07 15:56:16.00 WdVyae2Q.net
>>701
簡単なものですが>>672にソースコードは書いたんですが。
731:デフォルトの名無しさん
17/03/07 17:16:49.74 zMAKyDZi.net
>>704
は?
732:デフォルトの名無しさん
17/03/07 17:36:30.08 dn50L2aA.net
いい加減スレタイ通りねねっちを返せよ
34歳も中学生も見たくないんだよ
733:デフォルトの名無しさん
17/03/07 18:01:54.68 HgGmzj9b.net
>>706
NG登録しておけばいいんじゃね?
あいつらはバカすぎて話にならないから読む価値もないよ。
734:デフォルトの名無しさん
17/03/07 23:14:20.40 9tNPtGWP.net
ぬーぶとかいう人は完全に消えちゃったね
前に誰か書いてたけど、プログラミング初めてならC#かPhthon辺りを学んだ方が良かったと思うな
735:702
17/03/07 23:20:23.26 WdVyae2Q.net
>>705
雑談したいだけではないって言いたかっただけです。