はじめてのRmakeスクリプト / 第02回 変数と文字列をマスターしよう

投稿者:Cdv30200 aoi icon mini aoihikawa 投稿日:2012/06/09 19:12

はじめてのRmakeスクリプト

 第02回 変数と文字列をマスターしよう


こんにちは 簸川 葵(ひかわ あおい)と申します

こんにちは 剣 芽優(つるぎ めゆ)です

この連載ではスクリプトの基礎を、じっくりとお話していきます

よろしくお願いしまーす



02-01 変数と文字列


前回では変数と数値についてお話しました

今回は文字列についてお話しましょう

「ハローRmakeわーるど」っていう、あれのことかな・・・

有名な例文のひとつですね

それでは、変数に文字列を入れてみましょう

#「s」という名前の変数に、文字列「ハローRmakeわーるど」を入れる
s = "ハローRmakeわーるど"

#「t」という名前の変数に、変数「s」の中身を入れる
t = s

#変数「t」の中身を表示する
speak(t)

基本的には数値を入れたときと同じです

「=」を使って、右から左に入れるのね

違う点は、変数名と文字列が区別できるように

文字列は「"」(ダブルコーテーション)で囲みます

speak関数は変数の中身の表示ね

そのとおり 数値の場合と同じですね

なお、文字列の中には特殊な記号があり、

「\n」と書くと改行、「%Wait%」と書くとクリックするまで一時停止の動作になります

長文の会話に便利そうね



02-02 文字列の連結


文字列同士を「+」でつなぐと、連結することができます

数値の場合は足し算だったような

そうですね 変数の中身が数値か文字列かによって、動作が変わるわけです

#「s」という名前の変数に、文字列「ハロー」を入れる
s = "ハロー"

#「t」という名前の変数に、変数「s」の中身と文字列「Rmake」を連結させて入れる
t = s + "Rmake"

#「t」という名前の変数を、変数「s」の中身と文字列「わーるど」を連結させて上書きする
t = t + "わーるど"

#変数「t」の中身を表示する
speak(t)

変数「s」に文字列「ハロー」が入って、

変数「t」に「ハローRmake」が入って・・・

変数「t」に「ハローRmake」と「わーるど」が連結した

「ハローRmakeわーるど」が入ります

なお、speak関数では直接文字列を渡すこともできます

#文字列「ハローRmakeわーるど」を表示する
speak("ハローRmakeわーるど")

#文字列「ハロー」「Rmake」「わーるど」を連結して表示する
speak("ハロー", "Rmake", "わーるど")

こっちの方が分かりやすい

必ず同じメッセージが表示される場合は、こちらの方が見やすいですね

状況によってメッセージを変えたい場合は変数を利用した方が便利です

また、「,」を使用した文字列連結はspeak関数による動作なので

それ以外での使用には注意が必要です



02-03 文字列と数値


文字列と数値で「+」の動作が変わると、思ったとおりに動作しないかも・・・

そういった場合はtoString関数toNumber関数を使います

新しい関数ですね

実際にスクリプトを見てみましょう

#「x」という名前の変数に、数値「10」を入れる
x = 10

#「s」という名前の変数に、変数「x」をtoString関数で文字列にして入れる
s = toString(x)

#「s」という名前の変数に、変数「s」と文字列「ポイント」を連結して上書きする
s = s + "ポイント"

toStringの前には、変数に入れる「=」があるのね

toString関数やtoNumber関数は、speak関数と違い『戻り値』があるからです

『戻り値』・・・?

動作のあと、実行した結果の値を返す関数があります

toString関数では数値を渡すと文字列にして返しています

この返ってきた値を『戻り値』といいます

つまり、toString関数の『戻り値』を変数「s」に入れているわけね

そのとおり ここで変数「x」の中身の数値は、文字列として変数「s」に入ります

文字列同士になるから、連結の動作になり「10ポイント」となるのね

ちなみにtoNumber関数では文字列を渡すと数値にして『戻り値』に返します



02-04 第02回 まとめ問題集


それでは、今回のまとめ問題です

よーっし がんばるよ

なお、回答は記載しておりません

スクリプトをコピーして、実際に動作させることでチェックしてください


問題01
 次のスクリプトに実行結果が「こんにちは」と表示されるよう、1行を追加してください

#ここに追加する

speak(s)


問題02
 次のスクリプトに変数「x」を使用して実行結果が「70点」と表示されるよう、2行を追加してください
x = 70

#ここに追加する

speak(s)


問題03
 次のスクリプトに変数「s」を使用して実行結果が「50」と表示されるよう、2行を追加してください
s = "25"

#ここに追加する

speak(x)

できた! 上手く動くと楽しいね

なお、理解したかどうかの確認なので、コメントに回答を書かないでください




 <連載一覧>

第01回 変数と数値をマスターしよう

第02回 変数と文字列をマスターしよう

第03回 変数とフラグをマスターしよう

第04回 配列変数をマスターしよう

第05回 通常変数をマスターしよう

第06回 数値の応用をマスターしよう

第07回 時間の動作をマスターしよう

第08回 ユーザ定義関数をマスターしよう

第09回 スクリプト用語のまとめ

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Material 110912 1 mini アイネ・レグルス(投稿日:2012/07/05 21:14, 履歴)
あれ…最後の問題、
2行ではなくて1行で成功したのですが、これで良かったのでしょうか?

↑回答のネタバレになりそうなのでドラッグしないと見られないようにしておきました
User icon mini 退会したユーザー(投稿日:2012/07/05 22:22, 履歴)
確かに1行でも可能ですね。
というか、『;』を使えば行なんていくらでも減らせますが、
まあそれは反則ですよね(^^ ;)
Material 110912 1 mini アイネ・レグルス(投稿日:2012/07/05 22:39, 履歴)
やはり…2行と指定されているので1行では答えが同じでもダメですよね…
難しいですね…当たっていても指定の条件を満たさないと意味がないですからね
もう一度2行やって成功できるように頑張ってきます!
Material 86479 3 mini qhqh123(投稿日:2012/06/10 22:08, 履歴)
ここらへんでもう分からなくなってきた(´;ω;`)
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/06/10 22:26, 履歴)
どの辺りが分かりにくいか
ご指摘いただけましたら
より詳しい解説を返答いたします。
Material 86479 3 mini qhqh123(投稿日:2012/06/11 21:47, 履歴)
ようやく自己解決しました。
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2012/06/10 08:32, 履歴)
文字って連結できるなんて知らなかった・・・

とても勉強になります^^
Logo1 mini fmy(投稿日:2012/06/10 02:24, 履歴)
先生ーお疲れ様でございますー
基礎を教えるって難しいものですよねー
無意識に使えるくらいになってからが実務コーディングの本番ですものねー

読まれてる方達には、この辺りはRmake(Ruby?)だけじゃなく
他の言語でのプログラミングでも共通して通用するお話ばかりなので
将来を目指している方には是非!って感じですよー
1万行のコードも普通に1行の基礎のイージーミスで泣きますからねー

アゲアシとるつもりじゃないけど関数リファレンスのページでは
「戻り値」のことを「返り値」という用語で、
「関数に渡したいもの」や「関数に渡す値」のことを「引数」、
複数ある場合は左から順に「第1引数」「第2引数」…
という形で表記されている模様でございますー

あ、でももちろん話し言葉と書き言葉があるように
プロでも人によりけり色んな使い方してるので正解とか誤りとかではないですみょーん
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/06/10 05:07, 履歴)
ご指摘の通り、
関数のお話のところに出てくる用語で
「戻り値」=「返り値」
「関数に渡す値」=「引数」
と同義です。

伝えやすい用語として
本文中は前者を選んでおりますが、
どちらも覚えておくと良いですね。
Material 71926 1 mini なとおとき(投稿日:2012/06/09 19:53, 履歴)
変数を使用して数値か文字列を表示することはあったけど、
数値と文字列の変数を連結させて表示することがなかったので、
あの2つの関数は使ったこともなくて、使い方もわかりませんでした。
あぁやって使うんですね、ここでやっと理解しました。
User icon mini 退会したユーザー(投稿日:2012/06/09 19:43, 履歴)
(文字列)+(数値)=(文字列)になることを知ってから、
自分の中ではtoString関数が空気同然でしたけど(w
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/06/09 19:49, 履歴)
文字列が先に来ている場合、
その後に続く数値も文字列として扱われますね