• ベストアンサー

サルでもわかる 代入演算子 PHP

只今、PHPの講義を受講しています。 しかし、私は数学の頭でしかなく、「代入演算子」の理解ができません。 ”なぜ、イコールに違う数字を使っちゃうの?”と、 脳みそに”?”だらけです。 講師もあまり深く突っ込んでもらわずに 「こういう物」と、覚えちゃってください。などと、言います。 私としては、理屈が成り立っていないのに、覚えられる訳がないのです。と、 少し立腹ぎみなのですが、ここは抑えて自分で解決しようと思ったのですが、 やはり、理解できません。 ちなみに、過去に他のプログラム言語を学んだことはありません。 どうか、この数学あたまに代入演算子を理解させる方法をご伝授ください。

  • PHP
  • 回答数11
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.11

補足がついたようなので回答させて頂きます。 > しかし、、$a++や++$aと「=」が出てこない表記が出てきました。 既に書かれている方もいますが、これは数学では表せません。 数学ではプラスが二つ並んでいるという有りえないものですが、PHPなどでは「++」は インクリメント演算子という「演算子」になります。 これは理解というカテゴリのものではなく、暗記と一緒です。 結果としては $a = $a + 1 と 全く変わりませんので、覚えたくなければ覚えなくても支障は出ません。 他の人が書いたコードが読めなくなる可能性が出てくるぐらいのものです。 まぁ、これこそ 講師の言った『「こういう物」と、覚えちゃってください。』です。(* ̄∇ ̄)b これから先、二項演算子とか三項演算子とか数学っぽい雰囲気を漂わせた単語がでて来ると思いますが、それらも暗記するしかありません。

その他の回答 (10)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.10

> ++$a,$a++ それこそ、数学から離れないと一生理解できないでしょうね。 でも、コンピュータの中では基本中の基本と言える計算です。複雑に見える全ての計算も、実際には1加える/1減らすを大量に高速に行うことで実現している...というと言い過ぎかもしれませんが、それくらいの基本。 あと、思ったのですが、数学での漸化式に近いかもしれません。 実行開始から行なったすべての計算に順番に番号を付けて $a=$a+1; は a_k = a_(k-1) + 1 (_は下付き、kは計算番号)という感じ。で、プログラムは現在kに対してのa_kしか利用できない。 まあ、あまり「イメージ」と結びつけすぎると、「イメージできないと覚えられない」という状態に陥るので、ほどほどにしたほうがよいでしょう。 それと、数学と違う、ということばかり言ってるようですが、コンピュータの基礎となっている「オートマトン」といった考え方は数学の一分野です。

  • kachansa
  • ベストアンサー率44% (30/67)
回答No.9

数学という世界の文法として=は何かと定義されているだけですよね。 それが別の言語分野では別の意味を持ってもおかしくはないと思いますが... 数学の歴史からすれば、=は両辺が等しいという意味でしょうけど、それも最初にそういう決め事をした だけであって、もし最初の定義が || という表記方法だったら、とは思えないでしょうか? もしくは、どこかの言語世界に、=という表記が前後に出てくるものが等しくないということであったら それがわからないとは通じませんよね。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.8

#1のを書いてから、ふと思いついてたんだけど、誰か書くだろうと思って放置してたら、誰も書かないので 自分で書きます。 数学あたまの人なら簡単ですよね。 ------------------------------ x = 5 y = 3 z = 2 v = x + y * z vを求めよ。(数学の問題はいつも命令形) vを求めてね。(こんな問題の出し方だったら答えてもいいかなと思う) vを求めろっつってんだろゴラァ(( ゜д゜)…) ------------------------------ PHPが これを 求めてくれてるもんだと思ってください。 数式が大学生を こ馬鹿にした某記事と同じなのは わざとです。 PHPは 加減乗除の優先順位は知っているようです。 質問者さんはお礼率が異様に低いので、お礼なんざ期待してませんが、ネタを混入したかったので再度回答しました。(`・ω・´)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.7

数学と言うより、言語ですので、日本語を英語に置き換えるのと同じで、 = は is 、左辺は主語、右辺は目的語です。 主語・述語・目的語の語順はまもらないと、コンピューターは翻訳出来ません。 ということで、英語あたまの方を使ってみてください。

skyliner33typem
質問者

補足

英語なのですね。分かりやすいです。 私は留学経験があり、英語は得意です。 「=」を「is」であると頭の中に「代入」すればいいのですね。 しかし、、$a++や++$aと「=」が出てこない表記が出てきました。 コレは?どう理解すればいいでしょうか?

回答No.6

本当は a ← b + 1 としたかったけど、タイプライターに「←」が無かったから。 同じように、タイプライターから引きずって、 ×(かける)は「*」だし、 ÷は「/」だったりするし。 そういうものだと割り切るしかないと思う。

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.5

いくつかのプログラム言語を操るプログラマとして率直な感想ですが、 その程度の融通が効かず理解もできないのであれば断念したほうが幸せかと思います。 そりゃ数学の歴史から比べればコンピュータ用の高級言語の歴史は遥かに短いですが、 それでも60年以上続いてきているのですから。 現実に等号記号には複数の意味があるっていう事実を受け入れることはできませんか? 数学で言えば総和記号で使う=は初期値への代入を示すものですが、それも理解できませんか?

  • g_p_
  • ベストアンサー率53% (28/52)
回答No.4

こんにちは、 >私は数学の頭でしかなく、「代入演算子」の理解ができません。 >”なぜ、イコールに違う数字を使っちゃうの?”と、 数学とは関係ない、全く別のものだと考えてみることはできませんでしょうか? >「こういう物」と、覚えちゃってください。などと、言います。 「プログラミングで言うところの代入を行う際には、イコールを使用する」 と言うことを、覚えることができないのでしょうか? 理解できないとおっしゃらずに、講師が覚えてくださいと言われたら、 それを頭のどこかに置いておき、やって見てくださいと言われた事を素直に 実行して、何かを動かしてみて体験することが今の時期は大事なんじゃないかと 個人的には感じます。 質問者さんは数学が得意な様子ですが、初めて算数を学んだとき、 イコールはどういった物だと学ばれたのでしょうか? その際にも、単なる棒が2本並んでるだけなのに…と考えられたのでしょうか? 覚えられないことを自身の問題ではないとし、憤りを感じておられるかぎり、 質問者さんが次の段階へ進むことは難しいのではないかと私は思います。 >どうか、この数学あたまに代入演算子を理解させる方法をご伝授ください。 最初に書きましたが、「数学とは全く違う物だ」「プログラミングではこうらしい」と 考えるようにしたら、悩まずにすみませんでしょうか? 受講されている講義が質問者さんのためになることを願っております。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答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だけやるより理解できるかもしれません。

  • noris02
  • ベストアンサー率74% (56/75)
回答No.2

おっしゃるとおり、なかなか 理解しがたいですね。 $hoge = 0; の 「=」 を 「とは?」 という文字に置き換えてみてはどうでしょう。 $hoge($hogeという変数) =(とは?) 0 (0なのです) ;(以上) $hogeという変数とは、0 なのです。以上 プログラム言語は数学とは違い、基本左から右に、上から下に コンピューターは 文字として読んでいきます。 プログラム言語は 言葉なのです。 なので 「=」も 言葉なのです。 以降 phpでの 代入演算子に >、<、>=、<= . など いろいろ出てくると思います。 それぞれ、置き換えて 文章化してみてください。 続いた文字列で、コンピュータは意味を理解し、動作していくと思います。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

> 「こういう物」と、覚えちゃってください。 まぁ、それは 仕方がないかもしれません。 数学式のイコールとは 全く別物ですからね。(*´Д`) 俺の大昔の知り合いも同じ勘違いをしてましたし。 考え方としては、二つあります。 一つは 全く同じ形をしているけど、イコールだと思わない事。 記号としては「←」とするのが妥当だと思うのですが、プログラム言語が出来た時代に、そんな記号は存在しなかった為、イコールを使用したものと思います。 まぁ、今でも 半角で表示される矢印なんて存在しませんが。(キャラクターコード &H1D は別モンなので) もう一つは、左辺は解、右辺は式が入るものと思うこと。 最近のものは知りませんが、日本の算数で一般的な問題の出し方は 1+1=?と「左辺が式、右辺が解」という感じだと思います。 これの、右辺と左辺がひっくり返ったものとお考えください。 まぁ、正直 その講師も そういわれて覚えてきたんだと思いますよ。

skyliner33typem
質問者

補足

「←」すごく分かりやすいです。 「=」を「←」であると頭の中に「代入」すればいいのですね。 しかし、、$a++や++$aと「=」が出てこない表記が出てきました。 コレは?どう理解すればいいでしょうか?

関連するQ&A

  • 文理選択

    ただいま高校2年の男子です。 もう少しで3年に進級するのですが、その時に文理選択があります。自分の志望はできれば理系に進みたいのですが、数学が全くできません。数学がきらい!というわけではないのですが、どうしても理解できないのです。 友人には素質がないとか、脳みそが文系向きなどと言われるのですが(確かに文系科目は得意です)本当に素質のあるなし、または脳の影響などはあるのでしょうか。 どうかアドバイスよろしくお願いいたします!

  • ネット通信教育を利用したいと思いますか

    ネット上での通信教育に需要はあると思いますか? 講義スタイルはスカイプなどを使った通話による受講です。 例えば、「○○資格講座」「ワード・エクセルの使い方」 などをネット上の講師が教えてくれるようなサービスです。 魅力的な価格、内容であれば受講したいと思いますか?? 独学で参考書を読んで理解するよりも 時間の短縮になると思いますか? もし受講したいという場合には、単位時間でどれぐらいまで 出せますか?

  • 大学の講義で悩んでいます。助けてください。(長文)

    大学のある講師についてです。その講師の態度に理解できないのです。今日、その講師はこんなことを言いました。 「授業中の質問は評価に+10点をする。でも、授業終了後の質問は評価から-10点をする。」  授業中の質問については理解が出来ます。しかし、質問に減点するのには納得が出来ません。なぜ授業でわからないところを授業後に聞いてはいけないのでしょうか。その講師は「みんなの前で質問することに意味がある、授業後に何度も同じ質問をされるのは困る」と言いました。それって自分の都合にしか聞こえません。  また、今日課題を出したとき「この回答は間違っている。出すのを辞めるか?」と聞かれました。沢山の学生の前で言うのです。恥ずかしかったし、腹も立ちました。だって、先週その課題が出たとき、わからないからと講師に質問をしたのです。どうしてもわからないので何度も聞いたのです。するとその講師は「深く考えなくて良いから」と私をおいて教室から出て行ってしまいました。そして私は課題は間違えました。もちろん課題は出しました。提出して意味があると思ったからです。    もうこの講義は出たくありません。けど受講辞退期間は終わってしまったし、親に高い授業料を払ってもらっている以上、授業をサボるという罪悪感もあります。しかし、その講師から学ぶことはもう無いと思います。その時間を使って別の勉強をしたほうが自分のためになるとも思ってもいます。でも、その講義を選んだ自分の責任と、サボるという罪悪感があってどうしていいのかわかりません。しかし、もうその講義のことを考えると精神的に負担が・・・。  サボることってやっぱり悪いことですか?我慢するべきなのでしょうか。私がその講師に対して、気にしすぎなのでしょうか。助けてください。よろしくお願いします。

  • ゲーム理論の参考書・問題集

    私は現在大学一回生の者です 必修の教養科目としてゲーム理論の講義を受講しているのですが、教授が一回目からいきなり問題を解き始めてしまい、なんの予備知識もない私は置いてけぼりを喰らっています もともと数学が苦手だったこともあり、板書される式が何を表しているのかさっぱり把握できなくて講義が苦痛でなりません 教授も教授でよく間違えるので、式に修正や書き足しが散りばめられ、最終的にはグチャグチャになってしまい余計理解が遠のきます しかし単位評価はテストということなので、理解をしないわけにはいかないのです そこで ・完全な初心者向け ・数学が苦手でもある程度理解できる ・あまり重厚でなく、導入としてさらっと終えられる こんな参考書・問題集はありますでしょうか?

  • 代入演算子?

    すいません、自分の調べ方が悪いのだとは思いますが、 出てこないので意味を教えてください。 if (100 <= $z) { $this->_s_A1 = 3000; } Trueだった場合の、「$this->_」(ハイフンも含む)の意味が良く分からないのです。 配列の代入だったかなあ?と思ったのですが…正確にわかっていません。

    • ベストアンサー
    • PHP
  • 代入演算子の%=について

    JavaScriptを勉強中なのですが、ものすごくアホな質問をしているな~とは思うのですが、どーしても理解出来ないので、質問します。 <script type="text/javascript"> num = 4; a = 9; b = (a %= num); document.write(b); </script> 結果は1です。 この、なんで1になるのかが分かりません。 9を4で割ったら2.25ですよね? %=は余りを代入するって事だから25になるのではないのですか?? %=(←こいつ)がどんなふうに計算して、1 になっているのかを教えて下さい。よろしくお願い申し上げます。

  • 受験に勝つ強い脳

    受験で勝ち上がっていく人の脳と負け組の脳はどう違っているのでしょう? 脳は筋肉と同じと聞いたことがあります。 勉強で脳トレしている人は思考力、暗記力などの地頭が強い。してない人、それが嫌いな人は弱い脳だから受験にも勝てない。 この定義は本当なんでしょうか? 最近、嫌い数学や英語の基本である語彙増強に取り組んでいます。 数学は問題と解答を見て解説を見ます。その時、なぜこういう答えになるのかというを理解しようとするので、すごく頭が疲れます。難しい問題に取り組むと、考えまくるので頭の中がめちゃめちゃで30分と持ちません。 だるいとかではないです。しかもその後それが頭痛にかわります。 そのままベッドに寝込んだりして「痛い痛い」とうなることもあります。でもちょっと気持ちいい感じもあります。 筋トレはきついけど気持ちいいという感覚に似ています。 数学に強い人って一日5,6時間数学勉強したりするそうですが、僕には想像できません。 頭つかれませんか?筋トレ5時間とか誰もできないと思います。。 僕は数学に向いていないのでしょうか。 最初に数学の勉強をしてしまうと、頭が疲れ果てているので単語の暗記などのとき余力がありません。 勉強した気持ちは山々なのに脳がついていきません。 どうすればよいでしょう。

  • 「怒りの矛先は、母親に」 理解できません

    私は以前、電話相談員の講習を受けた事があるのですが 講義の中で、講師の方が言われた言葉が理解できませんでした。 手を挙げて、その解説を求めたのですが、言及されないまま 講義の時間が終わってしまい、他の受講者の方も首を傾げていました。 結局私は、理解できないので、相談員の役目を辞退しました。 その問題の言葉ですが 「子供が受けたストレスの反動や怒りの矛先は全て母親に向けられる」 という内容です。 これには何か、母と子において、根源的なことがあるのでしょうか? あるいは母という偶像に対する日本文化の背景が潜んでいるのでしょうか? よろしくお願いします。

  • 大学の微分積分について

    こんにちは、大学数学についていくつか質問させていただきます。 私は現在大学で微分積分学の講義を受講しているのですが、テストで、この線形微分方程式を解け。とでたら、もちろん解けるのですが、それが何を意味するのかわからないまま、ただ解き方を覚えてるという状況になってしまっています。 微分するということは、どういうことなのか?微分方程式はどう組み立てるのか?などが、詳しく解説されている書籍などありましたら、教えてください。 あと、三重積分についてなのですが、 こちらは解き方すら理解できてません。 こちらについても、詳しい解説がされているものがあれば、教えてください。 長々と申し訳ありませんが、どうかよろしくお願いします。

  • 三角関数の演算(三角比)

    皆様のお知恵を拝借したいです。 三角形ABCがある時、 sin^2 A + sin^2 B + sin^2 C = 2 がどんな三角形か考える、という問題があります。 (1)パッと見て、このままではイメージが掴めないので、2乗は避けたい、という意識を持ちました。 (2)最終的には A、B、Cに関する三角比の積 = ±1 、 あるいは A、B、Cに関する三角比の積 =0 になってくれればいいなぁ、という感じのイメージで計算を始めました。 最終的にはcosA・cosB・cosC=0となり、直角三角形が条件を満足することは分かるのですが、 この式に導くための演算に合理性が感じられません。 まず、(1)の方針で整理すると、cos2A+cos2B+cos2C=-1 という形で整理できます。(これはこれでとても綺麗な形です。)しかし、これでは左辺が和の形式なので、積に直したいというのが考えるところです。 ここで手詰まりになりました。積の形に組み合わせようとすると、右辺がうまくいきません。 (3)最終的に、2角の倍角の余弦を左辺に、1角の正弦の二乗を右辺に持って行くと、 例えば、 cos2A+cos2B = 2(sin^2 c -1 ) となり、 2(-cosC)・cos(A-B) = -2(cosC・cos(A+B)) 右辺を左辺に移行して和積の形で変形することで cosA・cosB・cosC=0とまとめることができました。 (3)はどうやって思いつくのでしょうか?(私はがむしゃらに色々試した結果、偶然出てくる、という盲撃ちのような形で導出しました。) 三角関数の演算でありがちなのですが、与式は様々な形に変形することができ、本質的には全て同じ値のはずです。しかし、演算者のちっぽけな脳みそのせいで、理解できる/利用できる値が限られてしまいます。理解できる/利用できる値に誘導するための方針が「計算テクニック」の類だとは思いますが、(1)、(2)はすぐに思いつくものの、(3)の考えには至りませんでした。 経験知の部分を問うような抽象的な質問で大変申し訳無いのですが、皆様のご意見をご教授頂ければ幸いです。

専門家に質問してみよう