変数の使い方についての疑問

このQ&Aのポイント
  • Perlを勉強中の初心者が変数の使い方について疑問を持っています。
  • 特に、変数に値を代入する際に、既に値が入っている変数に再度値を代入する必要性について理解できません。
  • なぜ、変数に既に存在する値を加算した結果を再度その変数に代入する必要があるのでしょうか?
回答を見る
  • ベストアンサー

変数について

Perlを勉強し始めました。 いままでプログラミングを組むことがなかったので、全くの素人 なんですが、いきなり壁に当たりました。 変数のところを勉強してるんですが、 $a=1; $a +=2; print $a みたいな感じで書かれてるのをみて、ふと疑問が。 $aに1を代入する。 $aに、$a+2を代入して、$aを表示ってことですよね。 $b +=2;にして、print $bにしないで、なんで $aに、$a+2を代入するんでしょうか?? $aは、すでに1を代入していて、$aは『1』としてるわけじゃないですか。 その$aに、また$a+2を代入するという発想がさっぱり理解できません。 普通に、$bにすればいいじゃん、その方がすっきりするじゃん、って思うんですが、なんでこんな記述方法にするのかわかりやすく教えていただけたら助かります。

  • Perl
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • makoji
  • ベストアンサー率25% (1/4)
回答No.2

すみません。質問の意図を読み間違えていました。  $a+=2; という式において、  $a=1; と既に値を入れている$aでこの計算をしなくても、  $b+=2; とすれば$aの初期値も残せてスッキリするということをおっしゃりたいのですね。 おっしゃる通りです。 でもメモリーがもったいないので、$aの初期値を後々使わない場合は上書きするのが良いとされています。 もっともメモリーの節約のためとはいえ、やみくもに同じ変数を使いまわしすると、後でプログラムを読み返した時にその変数が何を意味しているのか分からなくなります。 ですから状況に応じて  $a=1;  $a+=2; とやったり、  $a=1;  $b=1;  $b+=2; とやったりします。

anzendai11
質問者

お礼

メモリの節約のためだったんですか。 なるほど。 ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

意味がよくわからないんだけど, そう思う人は ML みたいな関数型言語がいいかもしれない.

  • makoji
  • ベストアンサー率25% (1/4)
回答No.1

 $a=0; for($i=0;$i<$x;$i++) {  $a+=2;  }    print $a; というコードを考えてみます。 初期値が0である$aに  $a+=2; を$x回行って、その結果を表示するものです。  $a+=2; を  $b=$a+2; と記述した場合、最初のループで  $b=$a+2; ですから、2回目のループでは $c=$b+2; とでも書くべきでしょうか。以後  $d=$e+2;  $e=$f+2; という風に、ループする回数分だけ式を書かなくてはならなくなります。 コードがそれだけ冗長になるのも嫌ですが、ループする回数がプログラミングの時点で分かっているならともかく、例出のコードでは$xという変数です。$xは5回かもしれないし、10回かもしれません。それでは  print の後にどの変数を指定すればいいのでしょう。  $a+=2; という風に、常に$aを使っているからこそ、  print $a; と簡潔に記述できるわけです。

関連するQ&A

  • C# 変数を変数で指定したい

    UnityとC#でプログラミングの勉強をしている者です。 「操作する変数」を、変数を使って指定するにはどのような方法を使えば良いのでしょうか。 以下、例となります。 aという変数、およびb1、b2、b3……という変数があるとしたとき、 「a=1ならば、b1に1を代入する」 「a=2ならば、b2に1を代入する」 「a=3ならば、b3に1を代入する」…… という処理をする方法を探しています。 よろしくお願い致します。

  • perlの内容なのですがこれで合っていますでしょうか?

    print 関数は文字列や数値だけでなく、変数を指定してその値を表示することもできます。 $a=1; 1を$aに代入する。 print $a; 変数$aの値を表示させる。 $a=2; 変数$aに2を代入する。 $b=3; 変数$bに3を代入する。 print "変数\$aに変数\$bを代入\n"; 「変数$aに変数$bを代入」という文字を表示させて改行する。 $a=$b; 変数$bの値を変数$aに代入する。 print "\$a="; 「$a=」を表示させる。 print $a; 変数$aの値を表示させる。 print ",\$b="; 「,$b=」を表示させる。 print $b; 変数$bの値を表示させる。 print "\n"; 改行を表示させる。 実行結果は↓↓↓↓↓↓↓ 変数$aに変数$bを代入 $a=3,$b=3 変数の書き方 文は ; で区切るが、1行に並べることも可能。 $a=2; $b=3; ↓ $a=2; $b=3; 複数の変数に、同時に値を代入することも可能。 $a=2; $b=2; ↓ $a=$b=2;

    • ベストアンサー
    • Perl
  • 20100228000000+0900 ⇒ 2010.02.28

    perlで 変数$aに代入されている"20100228000000+0900"という文字を ($a=20100228000000+0900) 変数$bに"2010.02.28"と変換させて代入するには どのようにすればよいのでしょうか。 お忙しいところ恐れ入りますが,ご教授ください。

    • ベストアンサー
    • Perl
  • 変数の中に変数(と言う表現であってるのかな?)

    変数$aに1~10の数字が入っています。 さらに変数$b1~$b10があります。 これを$aと$b末尾の数字が同じものを変更したいです。 例えば、$aが2の場合、$b2を変更ですね。 $b"$a" =□□; こんな感じです。 この「$b"$a"」、どのように記述したらいいのでしょうか? 上の書き方であってますか?

    • ベストアンサー
    • Perl
  • Perl あっていますでしょうか?

    " " と ' ' の相違は? ""の内にある変数名は、その値に変換されます。 ''の内にあるものは、そのまま文字列として扱われます。 エスケープシーケンスは "" の内に記述した場合のみです。 $a="Hello"; 文字列Helloを変数$aに代入する。 $b="$a"; 変数$aを変数$bに代入する。 $c='$a'; $aという文字列を変数$cに代入する。 ""の内で""を使うことは出来ません。 ''の内で''も使うことは出来ません。 使うときはエスケープシーケンスを使います。 print "\"Hello\"\n"; 文字列"Hello"を表示させます。 print "'Hello'"; 'Hello'を表示させます。 ""の内で''又は''の内で""を使うことは出来ます。 $a="あいうえお"; 文字列 あいうえお を変数$aに代入する。 print "\n$a\n"; 改行して あいうえお表示して 改行する。 print '\n$a'; 文字列\n$aを表示する。 文字列の結合 . (ピリオド)を使って前後の文字列を連結することが可能です。 $a="Hello"." "."World"; 変数$aに文字列Helloと半角スペースとWorldをつないだものを代入します。 $a="c"x3; 変数$aに文字cを3回つないだものを代入します。 $a="A"; 文字Aを変数$aに代入する。 $b="B"; 文字Bを変数$bに代入する。 $c="C"; 文字Cを変数$cに代入する。 print $a.$bx3.$c; 文字Aと文字Bを3回結合したものと文字Cを表示する。 画面にはabbbcと表示されます。

    • ベストアンサー
    • Perl
  • Perlで変数に代入された文字の置き換えを行いたい

    Perlで、変数Aに代入された文字を変換し、変数Bに代入するプログラムを作りたいと思っています。 具体的には、「北海道」が変数Aに代入されると、「hokkaido」を変数Bに代入するというものです。 これを47都道府県全体でやりたいと思っています。 プログラムの都合上、 北海道 → 変数A → hokkaido → 変数B という流れで変換する必要があります。 具体的なソースを何卒ご教示いただければ幸いです。 お手数をお掛けいたしますが、アドバイスのほど、よろしくお願い致します。

    • ベストアンサー
    • Perl
  • Perlファイルのパラメータの変数名

    ----------- calc.pl -------- $a=1; $b=2; $c=$a+$b; print "$a+$b=$c"; というPerlファイルの$a,$bをcalc.pl内で固定値にするのでなく ----------- calc.bat -------- capl.pl 1 2 calc.pl 5 3 calc.pl 4 1 … のようにして、perlファイルのパラメータで任意に設定したいのですが、Perlファイルのパラメータは、どんな変数名になるのでしょうか。

    • ベストアンサー
    • Perl
  • 変数内の文字の数

    変数内に指定された単語が含まれている数を変数に 代入する方法ってありますか? 例) 変数$aには あなたの恋愛傾向を知ることから 無料・恋愛診断で深層心理を診断。 が入っている。 この中から「無料」又は「むりょう」を見つける。 結果は$bに代入する。 $b = 1 となる。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Perlです。サブルーチンについて

    以下の文はあっていますでしょうか。 # サブルーチンを呼び出して引数は 3 とする。 # そして返ってきた戻り値を変数$aに代入せよ。 $a=&a(3); # サブルーチン名aせよ。 sub a{ # $_[0]が引数 3 となりプラス1して変数$bに代入せよ。 $b=$_[0]+1; # 変数$bの内容を戻り値として返せ。 return $b; } # 変数$aの内容を表示せよ。 print "$a";

    • ベストアンサー
    • Perl
  • $_という変数は何を意味するのでしょう?

    Perlの勉強中ですが、 $_ という変数がperlの予約語だということだけは知りました。 ですが、この$_はどういった場面で使用されるものなのでしょうか? 例文を教えていただけますと助かります。

    • ベストアンサー
    • CGI

専門家に質問してみよう