• ベストアンサー

続・URLから任意の数字を取得して演算後、一定の条件をもとにグラフ化するプログラムを作りたいです。

 以前にperlでのプログラミングに関して大変丁寧で分かりやすく説明して頂けまして本当に助かったのですがまた問題に当たってしまいました。。自分で質問を締め切ったのですから、できれば自分の手で解決したかったのですがどうもできません。どなたかまたお力をお貸しして頂けないでしょうか。何卒よろしくお願い致します。ちなみに以前に質問させて頂きましたURLはhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1505451です。  さてその問題と言いますのは、以前質問させて頂きました時の回答No7のtasekiさんのプログラムに関してです。あの時はできた喜びに大変満足して大事な事を検証するのを忘れていました。そう、それは演算をする事です。具体的に申し上げますと、足したり割ったりしたいのですが自分で試してみても全く検討違いな答えが返ってきます。 (例 print ($data_table[2][4]+$data_table[1][4])/2; print $data_table[1][3]*100-3; etc...) どうも足し算だけの場合は上手くいくようなのですが割り算などをした場合は全然上手くいきません。どなたかアドバイスして頂けないでしょうか。

  • Dbl
  • お礼率71% (10/14)
  • Perl
  • 回答数5
  • ありがとう数4

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

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.3

もしかしてコンテキストの評価で問題ということかな? print (($data_table[2][4]+$data_table[1][4])/2); というように、全体をカッコで囲んでみてください。 あるいは、 $result = ($data_table[2][4] + $data_table[1][4]) / 2; print $result; というように、printする場合は一度変数に入れてからのほうが無難な場合があります。

Dbl
質問者

お礼

 自分で考えていることを上手く言葉に表さない限り相手には決して伝わることはないと以前から熟知していたにも関わらず今回の質問はエスパーでないと答えられないような質問になってしまった事をまず謝らなければなりません。申し訳ありませんでした。  回答につきましてはこれまたしっかりと思うことができました。有り難うございます。ところで、これでも自分でいろいろと調べたつもりなのですが自分の検索力(あるいは理解力、検索力と理解力の両方)では限界があるようです。以前にお答えして頂いた回答と今回お答えして頂いた回答といいますのはtasekiさんの総合的なプログラミング力に他ならないと確信しておりますが、こんな自分(以前質問させて頂いた時に書いた通り、C言語の分岐条件くらいまでの経験しかありません)でも今回のようなプログラミングを作るために読んでおいた方がよいような書籍をもし知っていましたらお教えして頂けないでしょうか。やはり他の方の力を借りることは最終手段にするほうが実力も伸びると思います。あくまでも知っていた場合にのみで結構ですのでよろしくお願い致します。

その他の回答 (4)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.5

> CGIに関しての書籍と言いますのは総合力としてはやり必要なものなのでしょうか? 「総合力」とは、体系的に関連知識を学習する、というような意味ですか? とりあえずそう仮定して、「プログラミングの」という範疇では、別にCGIが必要と言うことはないと思いますよ。 と言うより、勘違いしてはいけないのは、CGIはプログラム言語などとは全く別のものを指し、「プログラムを動かす環境」というように考えればいいと思います。 perlであろうとPHPであろうとCであろうと、何かしらのプログラムがあって、それをWebサーバー上で動かす、あるいはWebサーバーとプログラムの「橋渡し役」をするのがCGIです。 なので、その必要がなければ、CGIを使うことも勉強することも、別に必須ではありません。ただし便利ではあるので、特にperlと組み合わせるとWebサイトでいろいろ使えるのは確かです。 なので、CGIを勉強する・しない、いずれの場合でも、とりあえずプログラムの勉強とは切り離して考えたほうがいいと思います。 ちなみに、CGIそのものは前述したように単なる(?)動作環境に過ぎないので、それほど複雑でもなく大まかな仕組みさえ分かれば難しくないと思います。

Dbl
質問者

お礼

 総合力と抽象的な言葉であいまいになってしまいましたがお察しの通り体系的に学習するとの事を意味していました。またエスパーものに。。何度もすみません。  CGIについては勘違いしておりましたです。てっきりperlの中の一部にCGIが含まれているのだと思っていました。アドバイスにより、どの書籍を買うのが適切かと言うことがかなり絞れました。有り難うございます。そして何から何までお世話になったことについて最後にもう一度お礼を言わせて頂きたいと思います。本当に有り難うございました。

  • taseki
  • ベストアンサー率66% (155/233)
回答No.4

書籍と言いましても、それぞれのレベルや目的や、もっと言えば読みやすさ・相性、などなどに応じて違うとは思いますが、perlに限って言えば、最も有名でperlの原典のような本が「プログラミングPerl」(オライリー・ジャパン出版)でしょう。 おそらくperlをある程度使いこなす人のほとんどが読んでいるのでは、というほどの、バイブル、ある意味で公式マニュアルのようなものです。実際、perl開発者のLarry Wall氏が著者の一人です。 表紙にラクダの絵が描かれているので通称「ラクダ本」と呼ばれています。プログラマーの世界ではラクダ本で通じると思います。 しかし、確かにこの本はperlのすべてを網羅した公式マニュアルのようなものですが、得てしてこういう本は、初心者が勉強に使うには適していないと思います。たとえるなら広辞苑のように、何かを調べるときのために本棚に一冊置いておくような、リファレンスのように考えるといいと思います。 ちなみに、同社からラクダ本の他に「赤ラクダ」、「青ラクダ」「ナッツ本」(ラクダの頭=ナッツだけの表紙)など紛らわしいので、間違えないよう注意(赤ラクダは旧版なので大丈夫とは思いますが)。 それぞれperl関連の本で、「初めてのPerl」というのもありますが、名前が意図する初心者の学習向けとしては、イマイチという声もあります。 ちなみに私は、前述の通称ナッツ本などと呼ばれる「PERLクイックリファレンス」を大変重宝しています。名前のとおりちょっと調べたり確認するにはちょうどいいのと同時に、モジュールに関して詳しいので、拡張と言いますか次のステップに進む際には役立つと思います。 ちょっと解りにくくなってしまいましたね。まとめると、通称ラクダ本と呼ばれる「プログラミングPerl」(オライリー・ジャパン出版)が、正確で網羅されていてリファレンスとしては最高峰のもので、最終的には手元に置いておいたほうが良さそうなものです。 初心者の学習用としては、やはり人それぞれ適したものを探すのが一番と思います。「すぐわかるPerl」(技術評論社)が良いというのはよく聞きます。 初心者向けのいわゆる入門本は、そもそもプログラミング全般において初心者なのか、そうではなくperlにおいて初心者なのか、などによっても違うと思うので、本屋でパラパラとめくってみて、そのレベルや解説の詳しさや、さらには読みやすさなどで選ぶと良いと思います。 なんだかあまり参考にならない回答になってしまいましたが…。 ようは、基礎的な部分をしっかり押さえておけば、あとは各言語、各関数などの仕様を知るだけでいいわけですから、逆に言えば、取っ掛かりになる初心者向けは自分にあったものを選び、必要に応じて「初めてのPerl」など正確で網羅されたもので補い、そのあとは、ラクダ本やナッツ本などを手元に、いろいろ試しながら何かを作っていけば、自ずと身につくのではないでしょうか。 あるいは極端な話、基礎さえしっかりしていれば、ラクダ本などなくても必要に応じて調べる、というのも手の一つ、とも言えると思います。もちろんあれば便利なのは間違いないですが。 たとえば今回のprintの件で言えば、これは仕様に関するミスをされただけです。しかし基礎的な部分でもあります。リファレンスなど調べるとprint文はリストコンテキストであることが解るはずで、そして解決されたのは、ANo.2の方の方法はリスト部分を打ち消す方法、私のは全体をリストとして渡すことで、解決されたということです。 これは、仕様を見ただけでは具体的な解決につなげるには難しい、ということを意味すると思います。なぜリストなのか、リストとはどのような場合にそうなるのか、などは、やはり基礎の部分で、順に勉強していく必要があると思います。

Dbl
質問者

お礼

 いつもいつも丁寧なお答え本当に有り難うございます。僕はプログラミング事態が初心者なので『初めてのperl』でも理解できるか少し不安でありますが本やさんで一度見てみたいと思います。そしてご指摘の通り他に自分にあうものがあるのか調べたいと思います。  それにしてもやはりやりたい事をしたければプログラミング(他の事についてでも言えると思うのですが)の総合力が必要であると再認識させて頂きました。有り難うございます。実は、書籍につきましては以前に調べたことがあるのですがCGIについて書いてある物も多々ありました。CGIに関しての書籍と言いますのは総合力としてはやり必要なものなのでしょうか?(今のところやりたい事をするためには恐らくCGIは不必要です。(教えて頂いたプログラミングみたいな事をCGIと言うのであれば、とんだ勘違いですが))  最後にもう一言アドバイスして頂けますと大変助かります。よろしくお願い致します。

  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.2

print ($data_table[2][4]+$data_table[1][4])/2; print $data_table[1][3]*100-3; を print +($data_table[2][4]+$data_table[1][4])/2; print +($data_table[1][3]*100-3); ・・ということではなく?

Dbl
質問者

お礼

 できました!説明不足で大変申し訳なかったと今、非常に後悔しておりますがまさにやりたかった事ができました。つまり+をつけないと思うように演算ができないと言うことなのですね。また1つ勉強になりました。有り難うございました。

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

「全然上手くいきません」とは、具体的にどういうことですか?

関連するQ&A

  • URLから任意の数字を取得して演算後、一定の条件をもとにグラフ化するプログラムを作りたいです。

     みなさん、はじめまして。僕は最近あるプログラムを作りたいためにプログラミングを始めました。C言語からプログラミング始めたのですがC言語の途中(本によって進行の違いが若干ありますが条件分岐くらいまでやりました。)で、「本当に自分の好きなプログラムがつくれるようになるのかな?」と疑問に感じ、いろいろ調べていくうちにどうやらやりたい事はPerlのほうが適しているとわかりましたのでPerlの勉強に変えようと思いました。  しかし、いざPerlの勉強をしようと思ったのはいいものの実際に何をすれば(どんな書籍を購入して勉強すれば)思うようなプログラムを作れるのかが全然わかりません。努力は決して惜しみませんが方法をお教えして頂けますと非常に助かるのですがどうでしょうか。よろしくお願い致します。 ※申し訳ありません。なんか次数制限でひっかかっちゃったのでやりたい動作についてはタイトルに一様あるのですがタイトルではやはり言葉足らずかと思いますのでどなたかのなんらかの回答の後に補足の欄に追記させて頂きます。ほんとに申し訳ありません。恐縮です。。

    • ベストアンサー
    • Perl
  • 確率の問題

    例えば先生がプリントと全く同じ問題を50問出すテストをすると予告しました。 プリントは足し算10問、引き算20問、掛け算30問、割り算40問の全100問で構成されています。 このときにテストで足し算が1問出る確率は単純に100問中1問なので1%、2問は2%・・・10問は10%でしょうか? それとも全部で50問出るという事で計算が変わってくるでしょうか?

  • 演算を集合としてみると

    演算を集合の要素として見ると、足し算-引き算、掛け算ー割り算、微分-積分、指数ー対数を御互いに逆元と呼べますか。このように考えた場合、逆元が見つからないような演算はないのですか。また演算の数は無限にあるのでしょうか?

  • この歳でかけ算・わり算があやふや

    最初に、質問内容は算数なのにカテゴリを数学にしたことをお許しください。 僕は現在高校1年生の者です。 最近数学の問題を解いていると恥ずかしながらも思うことがあります。 それは、小学生レベルの足し算・引き算・掛け算・割り算の四則演算があやふやになってきているということです。 25×34などは筆算を使ってできるのですが、25×1006とか、筆算のさいに25に0をかけるとなるとやり方が思い出せずにつまづいたりします(でも、1006×25ならできます) あとは小数点・分数を含む掛け算とか、同じく小数点・分数を含む割り算などです。 中学時代や高校入学したて(半年前)の頃はいつもどおり難なくできたのですが、最近はどうやるんだっけ?と忘れた状態になり自信を持って筆算できません。 そこで、その解消方法や四則演算の筆算のやり方などが書かれてある小学生向けの参考書などを教えていただきたいのです。 僕自身Amazonで探してみましたが、『小4の算数』など学年別に分かれていました。僕が小学生のときは1年生で足し引き算、2年生で掛け算、3年生で割り算・・・など四則演算を学年で分割(?)してしまっていたので、もし仮に「小4の算数」を購入したとしても割り算しか演習できないのでは、と思ってしまいます。 しかもゆとり教育のせいで当時○学年で習っていた単元はどの学年へ移ったのかさえもわからないので参考書を選ぶのにも困ってしまいます。 どなたか、教えていただきたいですm(_ _)m

  • 小5、少数の割り算筆算について

    小5の子供が算数で少数の割り算、掛け算の筆算をやっているのですが、どうも繰り上げや繰り下がりの足し算、引き算の部分で間違えることが多く困っています。 たぶん、少数の問題でなくても、同じような間違いはよくしています。 この場合、割り算、掛け算の筆算をたくさんやらせた方がいいのでしょうか。 それとも、レベルを下げて足し算、引き算の筆算をやり直させたほうがいいのでしょうか。 何事も繰り返しやることが一番なのでしょうが、 効率のよい勉強の仕方がありましたらどうか教えてください。

  • log2の「正確な」計算方法

    perlでlog2を計算するにはどのようにしたらよいのでしょうか。 perldocによると sub log2 { my $n =shift; return log($n)/log(2); } でよいはずですが、log2 が「正しく整数を返すかどうか」は保証されていないので、時として問題があるようです。 通常、log2 の結果 $a を単に print $a などとして出力する分には Perl が適当? に判断して丸め処理をしてる傾向があるようですが、これを printf "%d", $a とすると、本当に整数部だけが出力され、演算精度によっては意図 しない数値になる場合があるとのこと、計算機環境にインストール した Perlで、演算精度を上げるオプションを追加した場合などで、実際に出力結果が異なる、との報告を受けました。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 江戸時代の筆算

    私たちが計算をするのにはアラビア数字を使って計算するのを小学校で学びましたね。しかし、ふと疑問に思ったのですが、江戸時代にはアラビア数字は一般的には使われていなかったと思います。それでも 江戸時代だって 足し算、引き算、掛け算、割り算の基本的な演算はおろか、乗とか根、更には歩合とか確率の計算も、方程式にあたる演算とか、円周率を求める計算とかされていたと思います。確かに その時代には算盤が主に使われていましたよね。 そこで 質問なんですが、江戸時代の人はどのように して筆算していたのでしょうか?乗とか根は算盤で 計算できたのでしょうか?あと、今だったら簡単な 方程式で解けるものも そのころは鶴亀算を用いたと 思いますが、鶴亀算とはどうのようなものだったでしょうか?

  • エクセルで 足し算や割り算のミックス

    こんばんは。  エクセルの計算で分からない所があるので質問させていただきます。お時間ある方答えていただければとても助かります。 ^○^/ 例 5+4+9÷10 などの計算はどうやってするのでしょうか?  足し算は +  引き算は -  掛け算は ×  割り算は ÷ などの基本的な事は知っていますが上記のような組み合わせが分かりません・・・・・・・・。 誠に申し訳ありませんがよろしくお願い致します。

  • cgi-perlでテーブルのセルに色を付ける場合

    cgi-perlでテーブルのセルに色を付ける場合 print "<td bgcolor="#ffffe8">"; とすると#以降はコメントアウトされてしまいますがこの場合どのように対処すればいいのでしょうか?

    • ベストアンサー
    • CGI
  • Perlのリファレンスとアロー演算子について

    Perlの勉強をしています. リファレンスとアロー演算子について教えて下さい. ■質問 下記のうち,(4)がどのように評価されるか教えて下さい. 先頭のシャープはプロンプトです. (1) よくある配列要素の指定方法 # perl -e '@a = (0,1,2,3); print($a[1]);' →1 (2) あまりよろしくないが,スライスを使っても,print文では@a[1]がリストのコンテキストで評価されるので同じ結果にはなる # perl -e '@a = (0,1,2,3); print(@a[1]);' →1 (3) よくあるリファレンス/デリファレンスの方法 # perl -e '$a = [0,1,2,3]; print($a->[1]);' →1 (4) 下記が成り立つ意味が分からない # perl -e '@a = (0,1,2,3); print(@a->[1]);' →1 @aは配列であってリファレンスでは無いと思うのですが,配列にアロー演算子が使えてしまっていいんでしょうか? Perl5のマニュアルによれば(http://www.namazu.org/~tsuchiya/perl/info/perl-ja_20.html),アロー演算子は「右側が [...] か {...} の形の添字であれば、左側は配列かハッシュへのハードリファレンスかシンボリックリファレンス」と書かれているので,左側が配列そのものであるときは,エラーになるのではないかと思うのですが... 分かる方,どなたかご教授いただければ幸いです. ■環境 # perl -v This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int (with 13 registered patches, see perl -V for more detail) Copyright 1987-2009, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.