只今、PHPの講義を受講しています。
しかし、私は数学の頭でしかなく、「代入演算子」の理解ができません。
”なぜ、イコールに違う数字を使っちゃうの?”と、
脳みそに”?”だらけです。 講師もあまり深く突っ込んでもらわずに
「こういう物」と、覚えちゃってください。などと、言います。
私としては、理屈が成り立っていないのに、覚えられる訳がないのです。と、
少し立腹ぎみなのですが、ここは抑えて自分で解決しようと思ったのですが、
やはり、理解できません。
ちなみに、過去に他のプログラム言語を学んだことはありません。
どうか、この数学あたまに代入演算子を理解させる方法をご伝授ください。
No.11ベストアンサー
- 回答日時:
補足がついたようなので回答させて頂きます。
> しかし、、$a++や++$aと「=」が出てこない表記が出てきました。
既に書かれている方もいますが、これは数学では表せません。
数学ではプラスが二つ並んでいるという有りえないものですが、PHPなどでは「++」は インクリメント演算子という「演算子」になります。
これは理解というカテゴリのものではなく、暗記と一緒です。
結果としては $a = $a + 1 と 全く変わりませんので、覚えたくなければ覚えなくても支障は出ません。
他の人が書いたコードが読めなくなる可能性が出てくるぐらいのものです。
まぁ、これこそ 講師の言った『「こういう物」と、覚えちゃってください。』です。(* ̄∇ ̄)b
これから先、二項演算子とか三項演算子とか数学っぽい雰囲気を漂わせた単語がでて来ると思いますが、それらも暗記するしかありません。
No.10
- 回答日時:
> ++$a,$a++
それこそ、数学から離れないと一生理解できないでしょうね。
でも、コンピュータの中では基本中の基本と言える計算です。複雑に見える全ての計算も、実際には1加える/1減らすを大量に高速に行うことで実現している...というと言い過ぎかもしれませんが、それくらいの基本。
あと、思ったのですが、数学での漸化式に近いかもしれません。
実行開始から行なったすべての計算に順番に番号を付けて
$a=$a+1;
は
a_k = a_(k-1) + 1
(_は下付き、kは計算番号)という感じ。で、プログラムは現在kに対してのa_kしか利用できない。
まあ、あまり「イメージ」と結びつけすぎると、「イメージできないと覚えられない」という状態に陥るので、ほどほどにしたほうがよいでしょう。
それと、数学と違う、ということばかり言ってるようですが、コンピュータの基礎となっている「オートマトン」といった考え方は数学の一分野です。
No.9
- 回答日時:
数学という世界の文法として=は何かと定義されているだけですよね。
それが別の言語分野では別の意味を持ってもおかしくはないと思いますが...
数学の歴史からすれば、=は両辺が等しいという意味でしょうけど、それも最初にそういう決め事をした
だけであって、もし最初の定義が || という表記方法だったら、とは思えないでしょうか?
もしくは、どこかの言語世界に、=という表記が前後に出てくるものが等しくないということであったら
それがわからないとは通じませんよね。
No.8
- 回答日時:
#1のを書いてから、ふと思いついてたんだけど、誰か書くだろうと思って放置してたら、誰も書かないので 自分で書きます。
数学あたまの人なら簡単ですよね。
------------------------------
x = 5
y = 3
z = 2
v = x + y * z
vを求めよ。(数学の問題はいつも命令形)
vを求めてね。(こんな問題の出し方だったら答えてもいいかなと思う)
vを求めろっつってんだろゴラァ(( ゜д゜)…)
------------------------------
PHPが これを 求めてくれてるもんだと思ってください。
数式が大学生を こ馬鹿にした某記事と同じなのは わざとです。
PHPは 加減乗除の優先順位は知っているようです。
質問者さんはお礼率が異様に低いので、お礼なんざ期待してませんが、ネタを混入したかったので再度回答しました。(`・ω・´)
No.7
- 回答日時:
数学と言うより、言語ですので、日本語を英語に置き換えるのと同じで、
= は is 、左辺は主語、右辺は目的語です。
主語・述語・目的語の語順はまもらないと、コンピューターは翻訳出来ません。
ということで、英語あたまの方を使ってみてください。
この回答への補足
英語なのですね。分かりやすいです。
私は留学経験があり、英語は得意です。
「=」を「is」であると頭の中に「代入」すればいいのですね。
しかし、、$a++や++$aと「=」が出てこない表記が出てきました。
コレは?どう理解すればいいでしょうか?
No.6
- 回答日時:
本当は
a ← b + 1
としたかったけど、タイプライターに「←」が無かったから。
同じように、タイプライターから引きずって、
×(かける)は「*」だし、
÷は「/」だったりするし。
そういうものだと割り切るしかないと思う。
No.5
- 回答日時:
いくつかのプログラム言語を操るプログラマとして率直な感想ですが、
その程度の融通が効かず理解もできないのであれば断念したほうが幸せかと思います。
そりゃ数学の歴史から比べればコンピュータ用の高級言語の歴史は遥かに短いですが、
それでも60年以上続いてきているのですから。
現実に等号記号には複数の意味があるっていう事実を受け入れることはできませんか?
数学で言えば総和記号で使う=は初期値への代入を示すものですが、それも理解できませんか?
No.4
- 回答日時:
こんにちは、
>私は数学の頭でしかなく、「代入演算子」の理解ができません。
>”なぜ、イコールに違う数字を使っちゃうの?”と、
数学とは関係ない、全く別のものだと考えてみることはできませんでしょうか?
>「こういう物」と、覚えちゃってください。などと、言います。
「プログラミングで言うところの代入を行う際には、イコールを使用する」
と言うことを、覚えることができないのでしょうか?
理解できないとおっしゃらずに、講師が覚えてくださいと言われたら、
それを頭のどこかに置いておき、やって見てくださいと言われた事を素直に
実行して、何かを動かしてみて体験することが今の時期は大事なんじゃないかと
個人的には感じます。
質問者さんは数学が得意な様子ですが、初めて算数を学んだとき、
イコールはどういった物だと学ばれたのでしょうか?
その際にも、単なる棒が2本並んでるだけなのに…と考えられたのでしょうか?
覚えられないことを自身の問題ではないとし、憤りを感じておられるかぎり、
質問者さんが次の段階へ進むことは難しいのではないかと私は思います。
>どうか、この数学あたまに代入演算子を理解させる方法をご伝授ください。
最初に書きましたが、「数学とは全く違う物だ」「プログラミングではこうらしい」と
考えるようにしたら、悩まずにすみませんでしょうか?
受講されている講義が質問者さんのためになることを願っております。
No.3
- 回答日時:
このあたりは、言語によっても様々でして。
PHPを始めとして(「始め」にしていいかどうかはともかく) = で代入という言語は多いです。
数学とは違う、と割り切るしか無いでしょう。
既にあるように←という矢印と考えた方がいいかもしれません。
あるいは、古いBasicだと LET文というのがあって、
LET X=0
が正式な書式で、省略形として
X=0
が使える、というものでした。意味としては「Xを0とする」です。
PHPにはletは無いですが、letがあるものとして考えてもいいかもしれません。
では、数学的な=は、というと、PHPでは==になります。これを混同すると誤動作の原因になります
if ( $a == 0 ) {...}
だと、$aが0に等しいければ{...}が実行されますが、
if ( $a = 0 ) {...}
だと
$aに0が代入させる→ 「$a = 0」という式全体で 「0」と言う値になる→0は偽を表わすので {...}は実行されない
となります。
これも言語によっては両方 = で状況によって自動で使いわけてくれるものもあります(basicとか)
他にも、Pascalにように 代入は := ,比較は = という、おそらく質問者さんにとっては理解しやすいであろう記号を使っている言語もあります。
また、関数型言語と呼ばれる類のものでは、 「変数に代入」という操作自体が無く(あるいは、あるけどあまり使わず)、数学的な「等しい」という意味でのみ使われます。
興味があれば、そういう言語についても少しかじってみてはどうでしょうか?案外PHPだけやるより理解できるかもしれません。
No.2
- 回答日時:
おっしゃるとおり、なかなか 理解しがたいですね。
$hoge = 0;
の 「=」 を 「とは?」 という文字に置き換えてみてはどうでしょう。
$hoge($hogeという変数) =(とは?) 0 (0なのです) ;(以上)
$hogeという変数とは、0 なのです。以上
プログラム言語は数学とは違い、基本左から右に、上から下に コンピューターは 文字として読んでいきます。 プログラム言語は 言葉なのです。
なので 「=」も 言葉なのです。
以降 phpでの 代入演算子に >、<、>=、<= . など いろいろ出てくると思います。
それぞれ、置き換えて 文章化してみてください。
続いた文字列で、コンピュータは意味を理解し、動作していくと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 大学で物理学を学んでいる人、大学で物理を学んでいた人へ質問です。 私は現在大学1年で、物理を学んでい 2 2022/10/03 20:00
- 国家公務員・地方公務員 公務員試験の数的処理で苦戦しています。 1 2023/01/30 08:56
- その他(職業・資格) 『特別管理産業廃棄物管理責任者』修了試験の傾向と対策 1 2023/01/01 01:00
- 大学受験 大学生に保護者なんかいるの? 4 2023/08/23 16:52
- 大学受験 現在高3私立理系志望(浪人するかもです) 英数物の3科目偏差値40〜45程度共テ6割 所属高校の偏差 2 2023/02/25 09:24
- 大学・短大 大学の教科書って誤植や誤字脱字が多くないですか? 5 2022/10/29 17:29
- 大学受験 3浪しようと思うので、アドバイスお願いします。 自分としては結構メンタルきつくて後期でいいから、東京 3 2023/02/13 21:47
- 大学受験 娘の大学受験勉強 6 2022/06/30 19:58
- 大学受験 推薦入試について教えていただきたいことがあります。 私は、この春高校三年生になります。進路について考 1 2022/04/05 02:04
- 予備校・塾・家庭教師 昔の河合塾の単科(英語)について 1 2022/12/28 02:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MYSQLとSQLの違い
-
どんなプログラミング言語を使...
-
適切/効率的なプログラミング言...
-
C言語、C+、C++、C#の違い
-
COBOLで文字タイプを数字...
-
COBOLでのNOT = の AND条件
-
アセンブリ名とは??
-
プログラミング未経験者(殆ど未...
-
TO_CHARで小数点以下がある場合...
-
プログラムに書かれる"%"記号の...
-
C#とC++とJavaが学べる書籍につ...
-
C++における継続行
-
Visual Studio Codeについて
-
Linux上で動く画面拡大ソフト
-
procってなんですか?
-
C++ ってなんて読む?
-
Linux Cプログラミングを学ぶた...
-
exeファイルを作ったり改造した...
-
C言語とhtmlの違いを どな...
-
エクセルVBAでRS232Cへ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Laravelなど、フレームワークを...
-
どのプログラミング言語で作ら...
-
PHPでLinux用のCライブラリを呼...
-
PHPがあればCGIは使わない
-
html、css、JavaScript、PHP…違...
-
フレームワークは開発環境だけ...
-
サーバーサイド言語とは?
-
「楽天」で開発に使用している...
-
webアンケートを作成するための...
-
PHPでWindowsアプリを作成する...
-
なぜPerlからPHPに移行したんで...
-
検索できるリンク集システムの...
-
JAVA? FLASH? CGI?
-
PHPやPostgres、JAVAはどの...
-
PHPを習おうと思っているのです...
-
適切/効率的なプログラミング言...
-
MYSQLとSQLの違い
-
言語の効率的な学び方を、緊急...
-
C言語、C+、C++、C#の違い
-
小学1年生の子です。塾に行かせ...
おすすめ情報