MEL合宿 -7日目-

MEL合宿の7日目は、文字列を扱っていきたいと思います!(`・ω・´)ゞ

MEL合宿 -5日目-

2017.09.28

文字列

プログラムでいう文字列は、文字の並びのことです。MELで文字列を扱うには「string型」になり以下のように作ります。

string $text = “もーじーれーつー”;

数値と違い、「“(ダブルクオーテーション)」で囲まれたものが文字列になります。(一部「」で囲まれていなくてもOKな場合があります)

文字列を作ってみよう!

前回の「「x=2」「y=3」のときの「xy+xy」の値を求めろ。」の「print」を、もう少しわかりやすくしてみたいと思います。

int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;
print $z;

変数「message」に「The variable $z is 」を代入します。日本語も使うことはできるのですが、トラブルの元になりやすいのでもう少し慣れてから使いましょう!(*´ω`*)b

string $message = "The variable $z is";
int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;
print $z;

変数「message」のprintを追加します。

string $message = "The variable $z is ";
int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;
print $message;
print $z;

すると、今まで数字だけが表示されていましたが、メッセージ性のある出力になります(`・ω・´)ゞ

ただ、メッセージの最後に「ピリオド」が無いので、文章が終わっている感じがしませんね、、、実は「print」は、変数を作らなくても表示したいメッセージを書くことができます!

string $message = "The variable $z is ";
int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;
print $message;
print $z;
print ".";

文章の最後にピリオドがでたので、文章としてわかりやすくなりましたね(゚∀゚)

文字列の連結

1つのメッセージを作るのに、3回のprintをしていましたがちょっと面倒くさいですよね、、、文字列は「+(プラス)」を使うと連結していくことができます!

string $message = "The variable $z is ";
int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;

$message = $message + $z + ".";
print $message;
変数「z」はint型ですが、目で見えないところでstring型に変換されています。
キチンと正しく書く場合は以下のようにキャストします。

$message = $message + string($z) + ".";

一回のprintで目的のメッセージが出せる上に、どういった文章か見ているだけで想像しやすいですねっ(*´ω`*)

実際、実用的な書き方ですと、以下のようになります!

int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;

string $message = "The variable $z is " + $z + ".";
print $message;

変数を作らなくても可能です!

int $x = 2;
int $y = 3;
int $z = $x * $y + $x * $y;
print ("The variable $z is " + $z + ".");
printの部分では、文字列を連結したり、数値を計算する場合は「()」で囲う必要があります!もし忘れてしまうと、、、「Syntax error」が発生します(´・ω・`)

数値と混合しないように!

プログラムでは、文字としての数字と、数値としての数字は全くの別物です。例えば、コチラ!

string $a = "100";
int $b = 100;

変数「a」は文字列としての100、変数「b」は数値としての100です。もしこの2つの変数を「+」とどうなるでしょう!?2種類のパターンが考えられます。

  1. 文字「100」と文字「100」を連結して「100100」にする
  2. 数値「100」と数値「100」を足し算して「200」にする

目的に応じてキャストして、正しく目的の結果が得られるように覚えておきましょう!(`・ω・´)ゞ

string $a = "100";
int $b = 100;
string $c = $a + string(b);
string $a = "100";
int $b = 100;
int $d = int($a) + $b;

特殊な文字

文字列には「\(バックスラッシュ)」と組み合わせることで特別な意味になる文字があります。プログラムの構造上、この特殊な文字を使わないと入力できないものもあるので、覚えておきましょう!

特殊な組み合わせ 意味
\” \(ダブルクオーテーション)
文字列は「”」で囲むので、文字列の中で使いたい場合はコレを使う必要があります。
The variable $z is “12”.」としたい場合
print (“The variable $z is \”” + string($z) + “\”.”);
\n 改行
メッセージで改行させたい場合に使用します。
\t タブ
\\ \(バックスラッシュ)
バックスラッシュ自体特別な意味があるので、「\ 100 -(100円)」と表示したい場合は2回続けるます。
print “\\ 100 -“;

まとめ!

  • 文字列を扱えるのは「string型
  • 文字列を作るには「“(ダブルクオーテーション)」で囲う!
  • 文字列に「日本語」を使うのは慣れてから!
  • 文字列に対して「+」を使うと、文字列が連結する!
  • printで、文字を連結したり計算する場合は「()」で囲う!
  • 文字列と数値をごちゃごちゃに考えないこと!
  • \(バックスラッシュ)」と組み合わせて「特殊な文字」が作れる!

それでは次回もお楽しみに!!(`・ω・´)ゞ

2 件のコメント

  • 文字列の連結の項目で1行目の$messageと6行目の$messageは変数名が同じですが、中身は違いますよね。
    同じ変数名で中身が違う場合、正常に動いてるのがよくわからないです、、

    6行目のは変数型を指定してないから問題ないのでしょうか?

    • >taka様
      コメントありがとうございます!takkunです。
      1行目と6行目の$messageの中身は異なり、$zと”.”を結合した結果を上書きしています。
      変数を使いまわししているので、型の指定が不要になっております。
      もし、もう一度型を定義しようとすると、すでにある$messageが邪魔をしてエラーします。
       
      変数を使い回さない方法ですと、以下のようになります。

      string $message = "The variable $z is ";
      int $x = 2;
      int $y = 3;
      int $z = $x * $y + $x * $y;
       
      string $messageAndZ = $message + $z + ".";
      print $messageAndZ;
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です