From 4f6bab5724fc78be8d609088b031e9dd7ea7dc0b Mon Sep 17 00:00:00 2001 From: AnaTofuZ Date: Mon, 19 Mar 2018 17:22:54 +0900 Subject: [PATCH 1/2] =?UTF-8?q?shebang=E3=81=AE=E3=82=B3=E3=83=A9=E3=83=A0?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/chapter1/wandbox.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/chapter1/wandbox.md b/docs/chapter1/wandbox.md index f1c7591..87f6704 100644 --- a/docs/chapter1/wandbox.md +++ b/docs/chapter1/wandbox.md @@ -114,3 +114,17 @@ print "Hello, world!\n"; - ヒント - 文字列を出力する関数は`print`です - 文字列は`"`で囲みます + +### コラム 2017年までのお約束 + +昨年までのPerl入学式ではお約束として**3点セット**を受講生の皆さんにお伝えてしていました。 + +```perl +#!/usr/bin/env perl +use strict; +use warnings; +``` + +この1番上の行は「シェバング (shebang)」または「シェバン」などと呼ばれるものです。 +これは実際にプログラムを実行するOSが「このプログラムは `#!/usr/bin/env` に設定されている`perl` を実行するんだな」と解釈する為に必要となっています。 +今年のPerl入学式ではWanboxを利用して行いますのでシェバングは必要となっておりませんが、ご自身でPerlプログラムを書く際は3点セットを忘れずに付けてみましょう。 From 29fa0a570a2187b329650afc34b70ab18d0d7ca3 Mon Sep 17 00:00:00 2001 From: AnaTofuZ Date: Mon, 19 Mar 2018 18:05:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E6=95=B0=E5=80=A4=E3=81=A8=E6=96=87?= =?UTF-8?q?=E5=AD=97=E5=88=97=E3=81=AB=E3=81=A4=E3=81=84=E3=81=A6=E6=9B=B8?= =?UTF-8?q?=E3=81=84=E3=81=A6=E3=81=BF=E3=81=BE=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/chapter2/numeric_and_string.md | 66 +++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/docs/chapter2/numeric_and_string.md b/docs/chapter2/numeric_and_string.md index 400ac2f..6ae248a 100644 --- a/docs/chapter2/numeric_and_string.md +++ b/docs/chapter2/numeric_and_string.md @@ -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 ``` このコードでは, 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;と同じ +``` + ### インクリメント / デクリメント ```perl @@ -58,10 +78,17 @@ print $foo; # => 4 変数に格納された数値を, 1ずつ増やしたい/減らしたいときは, インクリメント/デクリメントという演算子を利用することができます. (1)のように, 変数の後ろにインクリメント演算子(`++`)を書くと, その変数に格納された数値が1増えます. 同様に, (2)のように, 変数の後ろにデクリメント演算子(`--`)を書くと, その変数に格納された数値が1減ります. +また、1ずつ増やす事をインクリメント,減らす事をデクリメントと呼びます. ## 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