【初心者歓迎】C/C++室 Ver.103【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
171デフォルトの名無しさん
垢版 |
2018/08/11(土) 08:50:14.12ID:eZwdztat
>>168
キャプチャしてません。(あまりよくわかってないが、、)
オブジェクトをグローバルで定義してるからだろうか?
組み込みなので頭で定義してる。

fpfunc funclist[] = {
[](bool tf ){ Seqif.ledon1( tf ) },
[](bool tf ){ Seqif.ledon12( tf ) },
[](bool tf ){ Seqif.ledon21( tf ) },
[](bool tf ){ Seqif.ledon35( tf ) }
}
2018/08/11(土) 10:06:46.89ID:WNr/dTgn
>>165
> PointerPareList[]={
> {this1, メンバー関数のローカルポインター1},
> {this2, メンバー関数のローカルポインター2},
> {thisn, メンバー関数のローカルポインターn},
> };
そのメンバー関数って要素ごとに異なるの?
異なるならこんな感じでやればいい
#include <stdio.h>
class Abc {
private:
int n;
public:
Abc(int n_) : n(n_) {}
int meas0() { return n + 0; }
int meas1() { return n + 1; }
};
int main() {
Abc aa(10);
Abc bb(20);
struct {
Abc& This;
int (Abc::*Func)();
} list[] = {
{ aa, &Abc::meas0 }, { aa, &Abc::meas1 }, { bb, &Abc::meas0 }, { bb, &Abc::meas1 }
};
for (auto x : list) {
auto n = (x.This.*x.Func)();
printf("n = %d\n", n);
}
}
2018/08/11(土) 18:31:52.91ID:WnJNWI2T
>>170
メンバ変数に直接アクセス出来ないから値だけを返す関数作ってるのかな?って
URL先見て理解したんですが間違えてますか;
2018/08/12(日) 09:04:38.07ID:0uSju4C4
メンバ変数を外部から書き換えさせないためのprivate指定と、
書き換えさせないけど値の読み出しはさせてやるためのget〜関数、
と考えるのが宜しいかと。
175デフォルトの名無しさん
垢版 |
2018/08/12(日) 21:42:22.35ID:zeMljtXN
>>172
凄い。そういうことができるんですね。
メンバー関数のタイプはすべて同じなのだがクラスのタイプがことなるものが混在するばあいはどうすればいいだろ。
Abc aa(10);
Efg bb(20);
こんな場合。
2018/08/14(火) 03:08:53.25ID:nTdTTFHr
size_tを戻り値に使った関数が定義されてるんですけど、size_tはどういう型なんですか?
この入門書で、何の説明もなく使われてるんですが…
2018/08/14(火) 06:59:55.91ID:EPC9iky2
>>176
サイズを表すのに充分な unsigned な整数型
2018/08/14(火) 07:39:25.77ID:sy/JHgHD
何のサイズか書かないと意味が無い
2018/08/14(火) 08:07:02.01ID:nTdTTFHr
>>177
ありがとうございます。照らし合わせたら何とか理解できました;
それとなんですが……ロベールってプログラミング初めてやるのに向いてる書籍ではないんでしょうか?
書籍スレで聞いたら噛みつかれたりしてまともじゃなかったので、、もしもっと簡単な本あれば教えてほしいです;
2018/08/14(火) 10:46:11.90ID:EPC9iky2
>>179
入門者向けというのは内容が簡単という意味ではない。
入門的なことを根本的な理屈から説明している本は難しいかもしれないが入門者にとっては有用だし、
でもそういうのはモチベーションが続かないっていう人にとっては理屈はともかく動作するものを中心に
した方が良いかもしれないし、学習のスタンスによるんじゃないの。
良いか悪いかというスカラ的な軸では評価できないよ。

俺はロベールの本とやらを読んだことが無いので具体的な評価はできないけども、
古いという点でややマイナス評価かな。
C++11 (C++ の仕様の 2011 の改定) が大きなターニングポイントなので、
それよりも古い仕様を想定した書籍は現代作法的にちょっと微妙な箇所があったりする。
2018/08/14(火) 11:13:21.53ID:5K5qKv3G
>>180
C++11 or later をあからさまにターゲットにした和書は
https://www.amazon.co.jp/dp/4774174084/
しか持っていない、これも辞典形式で右辺値参照とかは詳しくない、いまはもうちょっと増えているかと期待するが
2018/08/14(火) 18:10:42.27ID:TB9AjC50
>>175
基本クラスを作って各々派生させるくらいしか思いつかなかった
#include <stdio.h>
class Base {
public:
iint n;
Base(int n_) : n(n_) {}
virtual int meas0() = 0;
virtual int meas1() = 0;
};
class Abc: public Base {
public:
Abc(int n) : Base(n) {}
int meas0() override { return n + 0; }
int meas1() override { return n + 1; }
};
class Def : public Base {
public:
Def(int n) : Base(n) {}
int meas0() override { return n + 10; }
int meas1() override { return n + 20; }
};
... 続く
2018/08/14(火) 18:12:17.45ID:TB9AjC50
int main() {
Abc abc(100);
Def def(200);
struct {
Base& This;
int (Base::*Func)();
} list[] = {
{ abc, &Base::meas0 }, { abc, &Base::meas1 },
{ def, &Base::meas0 }, { def, &Base::meas1 }
};
for (auto x : list) {
auto n = (x.This.*x.Func)();
printf("n = %d\n", n);
}
}
2018/08/14(火) 22:59:32.77ID:nTdTTFHr
>>180
いいお値段する本なので中々乗り換える決心が付きませんでしたが
これを機にもっと簡単なコードが沢山載ってて手で動かしながら直感的に覚えられる新しい版の本探してみます。
スレチにも関わらずアドバイス頂きありがとうございます(´ω`)
入門書≠簡単ではないんですね…苦しんで覚えるCみたいにいい意味でタイトルに偽りある本があればいいんですが
185デフォルトの名無しさん
垢版 |
2018/08/15(水) 02:59:09.35ID:gGWJA2ph
>>182
参考になります。ありがとう。
186デフォルトの名無しさん
垢版 |
2018/08/15(水) 03:01:14.65ID:gGWJA2ph
namespace Name1{
void func1(){}
}
namespace Name2{
void test{
Name1::func1(); //error になる。
}
}
vs2017でテストするとコンパイルOKなのだが、TIのccsコンパイラだとエラーになる。
TIの場合はNamespaceはクラスにたいしては有効だけれども、グローバル関数に関してはエラーになる。
これは正しい文法なのだろうか?
187デフォルトの名無しさん
垢版 |
2018/08/15(水) 03:30:10.43ID:JotEkZGJ
pubgはUE4で作られてる
そのUE4はC++
銃弾の反動とかゲーム中にどんな計算されてるのか知りたいんだけどどうやったら知れますかね?
2018/08/15(水) 04:36:03.80ID:WdeJX/bN
>ロベールってプログラミング初めてやるのに
まず、プログラミングの初心者が、C++ を学ぶには数年以上掛かる!
Ruby など数言語を数年いじくりまわした人が、やっと、C++ を学ぶスタート地点に立てる

各言語の入門書は、決してプログラミング初心者向けではない!
数言語をいじくりまわした人が、その言語に関しては、知らないというだけ。
既に数年のコンピューターリテラシーを学んだ人が、各言語の入門書を学べる

つまり、プログラミング初心者と、各言語の初心者は違う。
まず、Ruby, Python, JavaScript など、軽量言語を数年やるべき

C++ は最難関!
20年以上、C で開発している中高年でも、ほとんどの人は出来ない!

それでも、やりたいのなら、ロベールしかない。
他の本では、絶対に無理だから!

漏れらみたいに、10言語を何十年もやってれば、速習でも読めるけど。
初心者がC++ なんて、時間の無駄
2018/08/15(水) 05:34:32.93ID:zJa27iMm
そこまですごいもんでも無いと思うがな
ストラウプスのネタ本を読んでからまったりと覚えれば良いと思うがな
190188
垢版 |
2018/08/15(水) 05:36:14.55ID:WdeJX/bN
例えれば、プログラミングの初心者は、小学生だろ。
一方、C++ は高校生

小学生が、高校生の教科書を理解するには、10年掛かる。
読んでも理解できない

小・中・高と、簡単なものから順序よく理解していかないといけない

だから、プログラミングの初心者が、C++ から始めるのが根本的に間違い!
それとも誰か、プログラミングの初心者は、C++ から始めろって勧めた奴でもいたか?
2018/08/15(水) 05:38:50.07ID:fSWxnCwv
>>188
> プログラミングの初心者が、C++ を学ぶには数年以上掛かる
> Ruby など数言語を数年いじくりまわした人が、やっと、C++ を学ぶスタート地点に立てる

こマ?


> 20年以上、C で開発している中高年でも、ほとんどの人は出来ない!

新しいことを覚える気がないK&RかC89脳おじさんなだけじゃないの?


> 各言語の入門書は、決してプログラミング初心者向けではない!
> 既に数年のコンピューターリテラシーを学んだ人が、各言語の入門書を学べる
> まず、Ruby, Python, JavaScript など、軽量言語を数年やるべき

RubyやPythonやJavaScirpt の入門書も同様ではないの?
2018/08/15(水) 05:40:47.64ID:fSWxnCwv
そうしたら、RubyやらPythonの入門書の読み方、勉強の仕方を覚えるための

学習用擬似言語みたいなものが必要になってくるな
2018/08/15(水) 05:41:40.20ID:fSWxnCwv
C++も11より前とそれ以降じゃ随分話が違うと思うが…
2018/08/15(水) 05:42:01.75ID:fSWxnCwv
ネタにガチレズすまそ…ついな…
2018/08/15(水) 06:37:16.69ID:NmCQr9eE
プログラミン
2018/08/15(水) 06:46:30.99ID:2ovpzQjs
>>189
「ストラウプスのネタ本」とは具体的にはどんな本なの?
言葉だけ見るとハゲ先生がC++に関して面白おかしく書き綴った
軽く読める本に思えて興味をそそられるんだが。

ネット検索できる程度の情報(タイトルとか)を教えて下さいな。
197188
垢版 |
2018/08/15(水) 07:21:49.59ID:WdeJX/bN
禿の本は、小難しいだけ。
ロベールよりも遥かに難しいから、読んでも無駄

「苦しんで覚えるC」は、内容がない。
手順書だから、1〜2時間ぐらいで読める。
こう打ち込んだら、こう表示されるという内容

「たのしいRuby 第5版、2016」を3回読んだ方が、遥かにためになる。
Ruby は、C/C++ みたいに余計な儀式がない。
処理が、ソースコードそのままで表現される

スクエニなど、社員が数千人いても、募集しているだろ。
C++ なんて、千人中1人も出来ない

20年開発していても、資格を取れないとか、そんな奴ばっかりだろ。
そういう連中がどうやって、C++ の本を理解できるのか?w
無理や

Rubyの女神・女優の池澤あやかも言ってる。
初心者が大学で、Cから始めるから、皆プログラミングが嫌いになる。
Rubyから始めれば良いのにって
198デフォルトの名無しさん
垢版 |
2018/08/15(水) 08:16:14.36ID:gGWJA2ph
でもCから始めるというのはそんなに間違っていないと思う。特に情報や電気、電子工学系など
本格的にプログラミングをやろうとする人に関しては正しい入門方法だと思う。
Cからの入門が適切な人にとっては、次はC++でもよいと思う。もともとC++はCを含んでいるので
初心者がC++から始めるというのはある意味正当な方法だろう。
具体的には、たとえばハードウエア割り込み信号を捉えるプログラミングは、他の言語では非常に
理解しずらいと思う。C++なら直接割り込みが起こったところをステップ動作で観測できる。
こんな言語は他にはないだろう。しかもそのデータをメモリーに蓄積して、適切に処理したのちに
さらにデータベースに格納するなど。微細な部分から非常に大規模な部分までをトータルにカバー
できるというダイナミックレンジにおいてもC++以外の言語はないのではないだろうか?

とはいえ自分もC++は毛嫌いしていままで使ったことはなかったが、使ってみればかなり便利だ。
2018/08/15(水) 08:22:05.96ID:zJa27iMm
>>196
C++の設計と進化
2018/08/15(水) 11:19:42.54ID:PzLkDuyq
>>188
細かく道筋教えていただきありがとうございます
使いこなせるようになりたい言語はC++C#と決まってるので出来れば
この2つを覚えるのに有用な言語がいいんですがruby,python,javascriptの3つのうちどれが有用ですか
出来れば実行環境を用意するのに手こずらない言語がいいです。一度何処かのスレでjava勧められて環境変数が云々で挫折してるので‥
201188
垢版 |
2018/08/15(水) 11:34:53.13ID:WdeJX/bN
この本を薦める。
たのしいRuby 第5版、2016

オブジェクト指向を学びたいなら、
スッキリわかる Java入門 第2版、2014

どの言語でも、環境構築が難しい。
だからプログラマではない、Excel エンジニアが多い

どの企業でもプログラマ募集ではなく、
コンピューターリテラシーがある人を求めているのは、そういうこと

数十のLinux コマンド・PowerShell のコマンドを知っている人とか、
環境変数PATH を知っている人とか

1. Ruby, Python, JavaScript,
2. Java, Kotlin, C#,
3. C, C++

言語の順番で言えば、C# は6番目。
5年後ぐらいw

1は軽量・動的言語、2は静的言語、3はポインターを扱う言語。
だから大学教育で、7番目のCから教えるのは、明らかな間違い
202188
垢版 |
2018/08/15(水) 11:49:34.58ID:WdeJX/bN
ロベール1冊を読む時間よりも、以下の3冊の方が、
はるかに短時間で読めるし、身につく。

それぐらい、C++ は難しい・ややこしい。
C/C++ のようなポインタのある言語は、必要に迫られるまで避けるべし!

たのしいRuby 第5版、2016
みんなのPython 第4版、2017
スッキリわかる Java入門 第2版、2014
2018/08/15(水) 11:50:30.19ID:a3nr9Eye
>>200
Java は「pathを通す」―環境変数 path を設定するだけで使えるようになりますよ
OS はなんですか?

私は Java を推薦します。
Ruby は癖があり、python はオブジェクト指向が徹底されず(private 変数を外から触れる)いまひとつ
2018/08/15(水) 12:17:21.11ID:h98LWHBZ
C++ を使えるようになりたいなら C++ を学ぶのが当たり前の道筋じゃん。
何言ってんの?
2018/08/15(水) 12:25:41.44ID:o8lgioa7
Ruby厨とかJava爺の相手するなよ…
2018/08/15(水) 12:39:19.21ID:PzLkDuyq
C++はたくさん動画とかも上がってるし初心者にとっつきやすい言語と思ってたんですが
そうでもないんですか…
綺麗なゲーム作りたいから早くC++C#やりたいんですが厳しいですか;
>>スッキリわかる Java入門 第2版、2014
お薦めしてもらったスッキリjavaは買ったんですが前述の通りsdkが説明どおりにやってもインストール出来なくて…
C++やるためにvisualstudioはインストールしたんですけど、visualstudioあればRubyとかpythonも出来るんですか?
>>203
OSはwin10の64bitです。dokojava筆者の説明どおりにやってなんどもインストール・アンインストール繰り返しましたが駄目でした
とことん相性が悪いようです;;
2018/08/15(水) 12:43:35.59ID:a3nr9Eye
>>206
https://techacademy.jp/magazine/8998
で Java インストールを試してみてください
以前トラブっているのを読んでいた限りでは、この方法が有効なはずです、Windows7, WindowsXP 時代からこうしてきました
2018/08/15(水) 13:31:25.14ID:PzLkDuyq
>>207
コマンドプロンプトでjavac10.0.2って出てきたんですがこれは成功いけてますか?
以前教えてもらった時はpowershellとか色々やっても
全然駄目だったのに……今回一発で出来たっぽいです
なんと感謝していいのやら;ありがとうございます…!
脱線してスレ違いになってすいません。
2018/08/15(水) 13:48:16.33ID:a3nr9Eye
>>208
コマンドプロンプトで「javac -version」を入力後、enter で
https://static.techacademy.jp/magazine/wp-content/uploads/2016/08/java014-620x403.jpg
の画面が出ればOKです
210196
垢版 |
2018/08/15(水) 17:02:04.76ID:2ovpzQjs
>>199 ありがとう。『C++の設計と進化』はタイトルは知ってるけど
読んだことはない(お高いのでなかなか買う踏ん切りがつかない)。
『プログラミング言語C++』第4版の中でも何回か言及されてるから
いつか読もうとは思ってる。

…とか言いつつ、先刻まで「進化と設計」と覚えていた。
確かに「設計と進化」、設計して作ってさらに進化、じゃないと
話が合わないね。
2018/08/15(水) 17:32:30.42ID:zJa27iMm
何故そうなっているか?を書いているから良書だよ
丸暗記以外はしない人には不要かも知れないけど
2018/08/15(水) 21:50:43.50ID:VaT5tlrt
noexceptについてなんですが、標準ライブラリのコンストラクタとかって
実装が勝手にnoexceptを付けたりできますか?

cppreferenceによるとunordered_map()のデフォルトコンストラクタはnoexceptが付かないことになってますが
noexcept(unordered_map<string, int>()) の値を見てみたら、ideone.comではtrueになっていました。
Visual C++だとfalseです。
安全側、制約の強い側になるので実装によって異なっていても問題ないということですか?
213188
垢版 |
2018/08/15(水) 23:40:56.26ID:WdeJX/bN
>>207 のリンクにあるような、
ユーザー・システム環境変数の画面のPATH をわからない人は、プログラマーにはなれない。
プログラマーになれない、Excel エンジニアが多いのは、PATH の仕組みがわからないから

数十ある、基本コマンドを勉強していないから

シェル(PowerShell・コマンドプロンプト)で、
「ruby 引数」のようなパス無しの「コマンド名 引数」でなぜ、
実行ファイルが探し出されるのか?

ruby で起動される実行ファイルは、ruby.exe, ruby.dll, ruby.sh なのか?
それらが同じフォルダにあれば、どれが起動されるのか?

こういう質問に答えられない人は、何十年プログラミングしていても環境構築できない

こういう人は、単なる土方プログラマーで、
コンピューターリテラシーがないから、企業が採用したくない人!

土方プログラマーはいらない!
コンピューターリテラシー、つまりシステムの知識がある人が求められている
2018/08/15(水) 23:43:45.10ID:NFQKBcxz
土方も重要だ
BIOS, ドライバ, OSのカーネル, ...
2018/08/16(木) 01:14:30.13ID:HRLpvjxW
>>212
問題ない。
https://timsong-cpp.github.io/cppwp/n4659/res.on.exception.handling#5
> An implementation may strengthen the exception specification for
> a non-virtual function by adding a non-throwing exception specification.
2018/08/16(木) 01:20:15.04ID:l9CntSK6
ポインタって言うほど難しいの?
2018/08/16(木) 01:24:16.82ID:IiF9TGTT
詳説 Cポインタ、2013、オライリー・ジャパン

ポインタの仕組みだけで、1冊出てるぐらいに難しいw
2018/08/16(木) 02:00:08.68ID:5ZuBlO3L
>>216
よく、スレで宗教戦争を起こしているでしょ

C言語がポインタの表記について混乱しているから、難しい。
に一票かなぁ
2018/08/16(木) 02:07:17.83ID:HU9VHWiC
そんなに難しくないだろう
何で悩むのか分からない
220デフォルトの名無しさん
垢版 |
2018/08/16(木) 04:05:41.81ID:QPt6nAZj
>C言語がポインタの表記について混乱しているから、難しい。

混乱してるようには思えないんだが、どう混乱してるの? まあ確かに関数のポインターの型表記
などは難しいといえば難しいな。それを言うならC#だってラムダの型表記などはautoしてみないと
分からないようなことがある。ラムダもポインターに似たようなものだからね。
221デフォルトの名無しさん
垢版 |
2018/08/16(木) 04:33:02.52ID:QPt6nAZj
Cは凄くいい言語だと思う。シンプルで綺麗で分かりやすい。ただC++は失敗作だ。しかし
C11あたりからその駄目部分をカバーしてきている。つまり使い方を選んで使えばC++は
非常に便利に使えるようになってきている。
本を読んでもC++の作者が書いた本は混乱していて分かりずらい。物事を複雑に考え過ぎて
混乱している。こういう人には綺麗な言語を作るのは難しいだろうと思う。今のC++はC#やJava
が作り出した成果を取り込んで、精神を叩き直されたC++だから元々のC++とは違うものだと思う。
2018/08/16(木) 04:33:34.49ID:IiF9TGTT
ヌル文字、ヌルポ、0

これらの違い
2018/08/16(木) 08:01:51.77ID:ubCBwXZI
DBのNULLみたいな
2018/08/16(木) 08:51:18.80ID:E47+EAA3
>>215
ありがとうございます。
明示的に許されていたのですね。
今回はVisual C++でコンパイルできないコードをideone上でミニマムに
再現しようとしたところコンパイルできてしまって躓いていました。
2018/08/16(木) 08:52:51.92ID:kykuKPql
ミニマムすき
2018/08/16(木) 20:00:17.55ID:G1RQbz/X
>>221
>C11あたりからその駄目部分をカバーしてきている。
私は C++11 以降は「進んで追わない」と決心してしまった敗者ですが、
そういう敗者であっても、C++11 が以前の欠点をカバーしている、というのなら、それをおききしたいです
C++11 later の改良点をひとことでいうと、何なんでしょうか?
2018/08/16(木) 20:08:00.52ID:x8SR5C2S
【C++11の改良点のおさらい】
autoキーワードにより、イテレータの型名の指定を省略できるようになった。
std::map, std::setの高速版のstd::unordered_map, std::unordered_setが使えるようになった。
初期化リストにより、初期化が楽になった。
ムーヴにより、所有権の移動を高速化できる。
2018/08/16(木) 20:09:53.56ID:vFdeRwht
高速なの?
安全じゃなくて?
2018/08/16(木) 20:11:14.15ID:x8SR5C2S
範囲for文が使えるようになった。
constexprキーワードにより、さらなるコンパイル時計算の最適化が可能になった。
例外の扱いが改善された。
2018/08/16(木) 20:18:14.73ID:G1RQbz/X
>>229
>例外の扱いが改善された。
kwsk
2018/08/16(木) 20:21:54.14ID:x8SR5C2S
https://cpprefjp.github.io/lang/cpp17/remove_deprecated_exception_specifications.html

noexceptキーワードを使う方法が推奨されている。
2018/08/16(木) 20:29:08.37ID:x8SR5C2S
noexceptがブロック単位で指定できると面白いかも。

noexcept {
int f(int n) {
return n + 1;
}
}
2018/08/16(木) 20:34:07.08ID:x8SR5C2S
Javaのsynchronizedみたいなキーワードが使えないかなあ。
2018/08/16(木) 20:38:48.53ID:x8SR5C2S
C++11の改良点は、性能と使いやすさを両立させるものである。

例えば、初期化リストを使えば、要素をまとめて確保できるので高速化が期待できる。
ムーヴは、コピーよりも高速である。
2018/08/16(木) 20:59:23.33ID:x8SR5C2S
>>228
何が?
236デフォルトの名無しさん
垢版 |
2018/08/17(金) 01:09:51.00ID:z0QZs6fU
>>226
素人考えだけど
vector<int> vec = {1, 2, 3};
for (auto elem : vec) {
cout << elem << endl;
}
みたいなことが出来るのは実用的にはものすごくありがたいよ
濫用して読みにくくなるのは問題だけど、決まりきった処理を簡潔に書きたい場合はむしろ読みやすくなるわけだし
237デフォルトの名無しさん
垢版 |
2018/08/17(金) 02:58:27.01ID:dtoRpN7Z
>>236
そういうところが凄く便利になったね。
でも過去の負の遺産も引きづっている。なかでもcoutは特に嫌いだ。
coutは使わないことにしている。コードが汚くなって台無しだ。
2018/08/17(金) 05:02:15.06ID:xjFqJl5K
coutすきなぼくは異端児か
2018/08/17(金) 08:17:38.10ID:vsbGGS7B
スレ頭なんだけど
ルート2っていうのがそもそも代数的に定義されたもので、有理数の加減乗除で表すのは不可能
じゃあルート2が何で存在するかっていうと、その代数的性質を満たす仮の数(!)にどこまでも近づけるから
どこまでも近づくっていうのは、好きなオーダーで誤差を小さくすることが出来ることを言う

結局ルート2っていうのは任意の誤差で二乗して2になるような性質に近づく手続きのこと

誤差のオーダーを与えればそれを満たす数をただひとつ返す関数があれば
それはルート2 と数学的に同値

あんま役にたたないけど
2018/08/17(金) 08:58:23.19ID:KaaDwp63
そういう妄想ってなんか楽しいの?
2018/08/17(金) 09:58:04.64ID:6wrElEJt
>>3
sqrt(2.);

>>4
何か問題?
2018/08/17(金) 10:00:04.25ID:6wrElEJt
>>239
√2の定義くらい中学で習うから
2018/08/17(金) 10:02:47.15ID:PZZ50riP
直角二等辺三角形の斜辺以外が1の場合の斜辺な
2018/08/17(金) 10:56:33.19ID:IY1i+MSt
要するに数表だろ
実用的なのはデータベースで100TBくらいじゃねえの
0.0から6.24...まで0.00000000000000000000000000000001刻みで計算しとくんだろ
あとはルックアップテーブルに丸投げ
2018/08/17(金) 11:00:24.73ID:IY1i+MSt
計算速度は、CPUが計算するか、
CPU近くの独自回路のハードウェアで計算させるか、
CPUが三角関数の値を欲しがって遥か遠方のDBに問いかけて遥か遠方のDBから数表の値が返ってくる莫大な時間か
2018/08/17(金) 12:22:41.67ID:6wrElEJt
6.24...てなんだ?

ルートの計算なんて除算と同程度に速いんだから
タイムクリティカルな場所じゃなければ
毎回計算すれば良いよ

少なくともわざわざ>>13みたいにプログラマが計算しなくて良い
2018/08/17(金) 14:19:37.82ID:5jlDcaCQ
const WCHAR* const p = L"aaaa";
というconst WCHAR*を指すポインタ定数があるとき、

typedef const WCHAR* LPCWSTR;
と型宣言がされていると、

const LPCWSTR p = L"aaaa";
と書けるけど、このときなぜ後ろのconstが前に出てくるんでしょうか。
2018/08/17(金) 14:47:24.43ID:gx59GpAN
後ろでもいいはずだけど
なぜ前に出て“これる”か、ということなら
ポインタを修飾してることが明確だからかな
typedefしてないと*の後にしか書けない
2018/08/17(金) 15:33:34.55ID:5jlDcaCQ
>>248
これ後ろのままでもコンパイル通るんですか。
で、前でもコンパイラが理解できるからどっちでもOKと。

ただそれなら、
const const WCHAR* p = L"aaaa";
という記述も特別OKにしてもらいたかったです。
2018/08/17(金) 20:08:44.29ID:+Gr68LyD
>>239
え?
一辺の長さが 1 の正方形を書けば、その対角線 √2 が静的に可視化されている、のですけれども
2018/08/17(金) 20:49:46.47ID:F1d5KQ2B
>>249
それだと*が2つ以上の時に困る
const const WCHAR** p

const WCHAR * const * p
const WCHAR * * const p
WCHAR * const * const p
のどれになるか分からん。
2018/08/17(金) 23:10:43.03ID:1w8Ax1c9
>>250
スレチだしレスするの迷ったんだけど

1辺が1の正方形を本当にかけるのか、対角線を引いたときに本当にルート2なのか、可視というが何が見えてるのか
って感じで、1を正確に測りとれるとか三平方の定理とか、対角線の長さを測りとれるとか
いろんな仮定が入ってる

結局仮のルート2に収束する数列とか、>>244の言う数表(ただし無限に続く)とかと同じ議論が起きちゃう
2018/08/17(金) 23:14:50.81ID:6wrElEJt
おまいら何百年前にされ尽くしたような議論をはじめるつもりか?
ルートなんて学校で習っただろ
2018/08/17(金) 23:17:45.37ID:uIPUTYG+
1/3というのはどうなんだろう
正確に三等分なんて、分子レベル素粒子レベルまでたどり着いても不可能だってことにならない?
2018/08/17(金) 23:19:38.08ID:6wrElEJt
コンピューターで扱う上では除算と非常に近い
(一般的には)近似値しか計算出来ないのも同じ
実は計算方法までそっくり
2018/08/17(金) 23:20:05.42ID:6wrElEJt
あ、先に書かれてしまった
2018/08/17(金) 23:30:57.65ID:+Gr68LyD
>>252
スレチも山の賑わい…

正方形も、その対角線も、静的に存在しており無限の過程を認識する必要はないでしょう?
その対角線を、例えば 10 進法表記に対応させるときに、無限の過程が発生するだけで

アキレスと亀の話と似ている気がします
2018/08/18(土) 00:14:18.80ID:lTbYGycG
もちろんデータとして扱う時は十進対応させなきゃ行けないので、有理数の加減乗除の届く範囲で近似が必要になる

ただ実数と有理数の間には実際にでかい隔絶があって、自然数からの加減乗除による拡大は有理数で止まる

あと本物の正方形を誰が見たこともないように、正方形や円っていうのは仮定の上にあるもの
実数の存在を正方形や円(パイ)に求めるのは、結局その仮定を無意識のうちに使用しているだけ
2018/08/18(土) 00:14:34.27ID:lTbYGycG
もちろんデータとして扱う時は十進対応させなきゃ行けないので、有理数の加減乗除の届く範囲で近似が必要になる

ただ実数と有理数の間には実際にでかい隔絶があって、自然数からの加減乗除による拡大は有理数で止まる

あと本物の正方形を誰が見たこともないように、正方形や円っていうのは仮定の上にあるもの
実数の存在を正方形や円(パイ)に求めるのは、結局その仮定を無意識のうちに使用しているだけ
2018/08/18(土) 00:28:57.66ID:9sBD2gG5
大事なことなので
2018/08/18(土) 00:36:22.64ID:gititOy1
脱線ついでに、
3次元の立方体はイメージ出来るけど、
4次元の立方体ってイメージ出来る物なのかな?
訓練を積んだ数学者なら出来るの?
例えば3次元立方体を2次元平面で切断したときに出来る図形と同様に
4次元立方体を3次元空間で切断wしたときに出来る立体をイメージ出来るの?
2018/08/18(土) 00:49:01.48ID:lTbYGycG
>>261
イメージ出来るって言うのを、頭のなかで回転したり任意の方から光を当てて影を見たり切断面かいたり
出来ることだとすれば四次元は比較的いける。その辺が専門の大学院生ならイメージできる
正多胞体(多面体、多角形の四次元ばーじょん)も発見されてるし、だいぶ見えてると思う

五次元もいける数学者が数人いるという噂もある
2018/08/18(土) 00:55:50.62ID:9sBD2gG5
高次元だとイメージよりアナロジーが先行するかな自分の場合
立方体より単体のほうがイメージしやすいが
立方体だと[0,1]^nに微分同相とかきっとそんなん
2018/08/18(土) 01:07:54.17ID:gititOy1
>>262
やはりスゴイと言うしかない
そういう人なら、ゴムボールを切らずに裏返しにする事も出来そうだ
勿論、頭の中でだけど
2018/08/18(土) 04:51:32.26ID:bmeyL4DX
>>261
切断wという予測変換に驚き
266デフォルトの名無しさん
垢版 |
2018/08/18(土) 16:12:57.62ID:sAtTg2RR
>>239
√2は手続きではないだろう。
1に1を足した数に2ってラベルがついてるのと同じで、
(√2)^2=2となるような無理数にラベルがついてるだけ。当然2の平方根に完全に一致する。
そして誤差のオーダーを必要とする時点で近似的な取り扱いしかできないということになるのだから、
√2が必要であれば√2として持つしかないだろう。
10進小数点表記で任意精度で表すためにはその手続きが必要となるだろうけど。
2018/08/18(土) 16:29:04.35ID:H8XUQRKC
2は自然数の加減乗除で表せる(というかそれが定義)けど、ルート2はかけない
じゃあルート2の定義はっていうと、方程式の解であって、1と2の間に存在しそうだけど本当にあるの?って話
結局新しい仮定が必要になってきて、それが収束有理数列と同値で、この列は手続き=関数と同値

なんかスレチで荒らしてすまんな
困難わかってても実際はあまり役にたたたないし
268デフォルトの名無しさん
垢版 |
2018/08/18(土) 17:52:26.48ID:sAtTg2RR
>>267
それは正の数の平方根数が実数上に確かにある存在の証明の手続きでしかないよね
実際に任意精度で√2を求められる関数を使って(√2)^2が2になるか確認するには無限の時間がかかるよね
正の数の平方根数が実数上に確かにあるという前提に基づけば単に√2は(√2)^2が2になる性質を持った無理数、
といった形で取り扱えば十分だし、「√2は手続きだ」は言い過ぎじゃないかな。
それを言い出したらほぼ全てが手続きになってしまう。「数学的に同値」というのは「√2は手続きでも表せる」ってだけでしょ。
269デフォルトの名無しさん
垢版 |
2018/08/18(土) 19:07:39.30ID:Ruc+zSzi
>>264
4次元の立方体なんてイメージとしての意味をなさないだろ。w というか各辺が4mの
4次元立方体なら「各辺の長さ=4m」且つ「各々の辺が互いに直行する」というだけの話だから、
Leng(a,b,c,d) =(4,4,4,4)
cross(a,b) =true ; cross(a,c,)=true:  cross(a,d)=true;
ってことだけだろ。
性質として体積は4^4 とか表面積は=ん?になるとか
一寸考えれば誰でもイメージを膨らませることはできる。
2018/08/18(土) 19:51:41.56ID:gititOy1
>>269
一応ね、
4次元超立方体同士がすれ違うときに
接空間を頭の中に描けるかどうかかな
さらにそれらが自転していたらどうかとか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況