-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第二章を加筆しました #1
base: master
Are you sure you want to change the base?
第二章を加筆しました #1
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,13 @@ | |
|
||
## Perlにおける数値 | ||
|
||
... | ||
PerlではCやPythonの用に**データ型の様なものが存在しません**。 | ||
つまりPerlではある数を数値として使いたい時は数値として、文字列として使いたい場合は文字列として解釈されます。 | ||
例えば`$number = 10;`として「 `10 + $number` 」として使う場合は数値ですが、「 `print "This is a $number\n";`」として利用する場合は文字列として解釈されます。 | ||
|
||
|
||
この性質をPerlでは**コンテキスト**と呼び、以降様々なコンテキストが出現します。 | ||
先程の文字列としての解釈は「文字列コンテキスト (string context)」、数値としての解釈は「数値コンテキスト (numeric context)」などと呼ばれます。 | ||
|
||
### 数値への演算子 | ||
|
||
|
@@ -15,12 +21,12 @@ use warnings; | |
|
||
my $foo = 4; | ||
my $bar = 2; | ||
my sum = $foo + $bar; # 4 + 2 = 6 | ||
my sub = $foo - $bar; # 4 - 2 = 2 | ||
my mul = $foo * $bar; # 4 * 2 = 8 | ||
my div = $foo / $bar; # 4 / 2 = 2 | ||
my mod = $foo % $bar; # 4 % 2 = 0 | ||
my exp = $foo ** $bar; # 4の2乗は 16 | ||
my $sum = $foo + $bar; # 4 + 2 = 6 | ||
my $sub = $foo - $bar; # 4 - 2 = 2 | ||
my $mul = $foo * $bar; # 4 * 2 = 8 | ||
my $div = $foo / $bar; # 4 / 2 = 2 | ||
my $mod = $foo % $bar; # 4 % 2 = 0 | ||
my $exp = $foo ** $bar; # 4の2乗は 16 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. サッとマージするとも限らないので, この辺りの誤字修正系は別のPull Requestで切り出してもらえると良さそうでした. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. なるほどです |
||
``` | ||
|
||
このコードでは, 2つの変数`$foo`と`$bar`に数値を代入し, それらを使って`+`演算子で加算(足し算), `-`演算子で減算(引き算), `*`演算子で乗算(掛け算), `/`で除算(割り算), `%`演算子で剰余(左辺を右辺で割った余り), `**`演算子で冪乗(べき乗, 左辺の数値の右辺の数値乗)を計算しています. | ||
|
@@ -40,6 +46,20 @@ my $div = 1 / 0; | |
Illegal division by zero at prog.pl line 4. | ||
``` | ||
|
||
### 数値への演算子(省略記法) | ||
|
||
先程の様な計算はプログラミングをする上で多く利用する為,省略記法を用いる事ができます. | ||
|
||
```perl | ||
my $fuga = 100; | ||
my $hoge = 50; | ||
|
||
$fuga += 1; # $fuga = $fuga + 1;と同じ | ||
$fuga -= 1; # $fuga = $fuga - 1;と同じ | ||
$fuga *= 2; # $fuga = $fuga * 2;と同じ | ||
$fuga /= $hoge; # $fuga = $fuga / $hoge;と同じ | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 省略記法はそれこそ省略して良さそうと思っています. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 確かに入門では突飛感があるので無くしてもいいかなとは思っていたのですが、教科書的に使うなら一応書いておいても良いかななどと思っています。(入門向けのProgateというサイト代入をした後のフェーズで触れられています) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Progateが触れているのでPerl入学式でも触れる, だとちょっと説得力が弱い気がします. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. なるほどです。一旦削除してみます |
||
|
||
### インクリメント / デクリメント | ||
|
||
```perl | ||
|
@@ -58,10 +78,17 @@ print $foo; # => 4 | |
変数に格納された数値を, 1ずつ増やしたい/減らしたいときは, インクリメント/デクリメントという演算子を利用することができます. | ||
(1)のように, 変数の後ろにインクリメント演算子(`++`)を書くと, その変数に格納された数値が1増えます. | ||
同様に, (2)のように, 変数の後ろにデクリメント演算子(`--`)を書くと, その変数に格納された数値が1減ります. | ||
また、1ずつ増やす事をインクリメント,減らす事をデクリメントと呼びます. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ここで唐突に説明すると違和感がありました. そもそもインクリメント/デクリメントについては, 上の
あたりがよさそう? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. すっきりして良さそうですね!ありがとうございます! |
||
|
||
## Perlにおける文字列 | ||
|
||
... | ||
文字列とは数値とは別の**文字の並び**です。例えば「`"Perl"` 」や 「`"Perl入学式"` 」などが該当します。 | ||
プログラミングをしていく上で文字列を利用したくなることがあるでしょう。 | ||
Perlでは他の言語と同じくシングルクォート(`'`)かダブルクォート(`"`)で文字を囲むと「文字列リテラル」と解釈され、文字列として利用できます。 | ||
この文字列リテラルはスカラー変数(`$`から始まる変数)代入する事が可能です。 | ||
|
||
print文など「文字列コンテキスト」で評価をさせる場合ほとんどの変数がPerl側で文字列として解釈されます。 | ||
|
||
|
||
### 数値への演算子 | ||
|
||
|
@@ -179,7 +206,28 @@ print "Last year it was " . $last_year . ". Now it is " . $now . "\n"; | |
|
||
最後に, 改めて代入演算子について触れておきます. | ||
|
||
... | ||
代入演算子 `=` は **右辺を左辺に代入する** 演算子です。 | ||
その為右辺で同じ値を利用することが可能です。 | ||
|
||
```perl | ||
$num = 30; | ||
$num = $num + $num; | ||
``` | ||
|
||
そして代入演算子は省略することが可能です。 | ||
|
||
```perl | ||
$num = 30; | ||
$num *= 30; | ||
``` | ||
|
||
では、次の結果は何になるでしょうか。考えてみましょう。 | ||
|
||
```perl | ||
$num = 3; | ||
$num = $num * 30; | ||
$num /= 10; | ||
``` | ||
|
||
## 練習問題 2-3 | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あくまで2018年の資料を作っているので, 去年までの内容に触れる必要はないと思いました. どういう意図がありますか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wanbok以外の環境で資料として使用する場合がある事を想定しています。
教科書的に触れておく(講義では触れないで利用する)と良いかなと考えています
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
それであれば,
2017年までのお約束
というタイトルは不適切かなと思いました.ということを想定したタイトルになっていた方がわかりやすそうです.