配列の作成方法は前の章で説明した方法だけではなく、他にも3つありますので、この章で説明します。
1つ目の配列の作成方法をみてみましょう。 初めに と言う形式で配列の要素数を指定します。
つまり、いくつのデータを作るのかを指定します。
この例ではデータを2つ入れるので要素数を2にしています。
その次に以下のように配列にデータを2つ入れます。 カラの配列を作ってから、後からデータを入れたい場合にはという形式でカラの配列を作成してから、その後にデータを入れていきます。 結果は以下の通りです。 次は2つ目の配列の作成方法をみてみましょう。 「要素数とデータ」を同時に記述したい場合はという形式で書きます。
その場合すべての要素に同じデータ(この例の場合は猫)が入ることになります。
結果は以下の通りです。
次は3つ目の配列の作成方法をみてみましょう。 と言う形式で配列を作成します。
この例では紙面の都合で配列の要素を2行で書いています。
結果は以下の通りです。 という構文で配列の複製を作成することが出来ます。
この例の場合にはanimalを複製してanimal5という新たな配列を作成しています。
結果は以下の通りです。
カテゴリー: Ruby
この章では配列について説明します。
これまでの変数は1つのオブジェクトだけを扱うことができました。
つまり、他のオブジェクトを入れようと思うと上書きされて、前のデータは消えてしまいました。
それに比べて配列は複数のデータをまとめて入れることができます。
普通の変数では と別々の変数名でそれぞれのデータを入れなければいけませんが、配列を使うとと、まとめてデータを入れることができます。
このように配列は1つの変数名で多くのデータを入れることができるのです。
上の例のように同じ目的で使用する可能性のある複数のデータは1つにまとめてしまい、1つの変数で複数のデータを管理できると便利です。
このような時に配列を使用します。
配列の基本構文は以下の通りです。 配列の要素には違う種類のオブジェクトも混ぜて入れることが出来ます。
例えばのように数値と文字列を混ぜて入れることも出来ます。
もうひとつの配列の書き方としての中に空白で区切って書く方法があります。この書き方はダブルクォートでデータを囲う必要がありません。
次に「添え字」について説明します。 上の配列を書き換えると次のようになります。 [ ]の中に入っている数値のことを添え字と言います。添え字とは配列の中のどこにデータが入っているのかを管理する番号です。
例えばコインロッカーには番号が付いていますが、番号があるからこそ、どこに自分の荷物があるのかが分かるわけです。
添え字も考え方は同じで、番号によりデータを管理します。
では先ほどの例を元に添え字の説明をしていきます。
配列の1番前の要素である0には猫が入っていて、配列の前から2番目の要素である1には犬が入っていて、配列の前から3番目の要素である2にはライオンが入っていて、配列の前から4番目の要素である3には象が入っていて、配列の前から5番目の要素である4にはネズミが入っています。
添え字は0から順番に番号が付けられていきます。1から添え字を付けていくわけではないので、注意してください。
もう一度繰り返します。
配列の1番前、つまりには猫と言う要素が入っていて、配列の前から2番目、つまりには犬と言う要素が入っていて、配列の前から3番目、つまりにはライオンと言う要素が入っていて、配列の前から4番目、つまりには象と言う要素が入っていて、配列の前から5番目、つまりにはネズミと言う要素が入っています。
次は配列の要素の出力方法について説明します。
配列のデータを出力するにはという構文で書きます。
例えばの場合には猫が出力されます。
このようにprintに配列と添え字を指定するとそれに応じた要素を配列から取り出すことができます。
次は配列の要素の上書き方法について説明します。
例えばの要素を他のデータで書き替えたいのであればのように同じ配列の添え字に新たなデータを入れます。
これでネズミと言う要素はシマウマと言う要素で上書きされたことになります。
添え字にはマイナス指定も出来ます。
例えばはと同じ意味になります。
添え字のマイナス指定の場合は配列のデータの末尾からと添え字を指定します。
一気に何個かの要素を他の要素で置き替えたい場合は以下のように書きます。 の中のは範囲演算子と言います。 「0..2」は0番目から2番目までの要素を意味します。
次はカラの配列の指定方法について説明します。
のように初めから中の要素が決まっているのならばこのように書けますが、まだ入れるデータが決まっていない時にはカラの配列を用意して、その中に後からデータを入れることも出来ます。
下の例を見てみましょう。 出力結果は以下の通りです。 では説明をしていきます。 その後に と、配列に対してデータを入れていきます。 =>先ほどは範囲演算子を使って、データを代入しましたが、範囲演算子を使って出力することが出来ます。
のように指定した範囲が配列の要素数を超えている場合は最後の要素の添え字を指定したのと同じとみなされます。
この例ですとと同じ意味を持ちます。
範囲演算子を使って出力すると配列として出力されるので、結果はのようにカッコの付いた状態で出力されます。
次は以下の箇所の説明をします。 =>p はデバッグ用で出力する時に使います。
デバックとはプログラムの途中で思った通りに出力がされているのか確認することを意味します。
この例ではp animalと書いてありますのでと出力されます。
pで文字列と数値を出力しますと以下の通り、文字列の場合にはダブルクォートで囲まれて出力されますので、変数には文字列が入っていると確認できますし、数値の場合にはダブルクォートが入っていない状態で出力されますので、変数には数値が入っていると確認できます。 出力結果は以下の通りです。
次の例は添え字にマイナス値を指定する方法について説明します。 先ほども説明しましたが、添え字に負の整数を指定した場合には配列の一番後ろの要素から添え字をと数えます。
つまり、とは同じ意味です。
この例ではネズミをタイガーに変更しています。
結果は以下の通りです。 負の添え字はデータを書き替えるときなどに使用しますので、以下のようにマイナスの添え字で最初から値を設定することはできません。 これを実行しようとすると以下のようなエラーが発生します。
ヒアドキュメントについて知ろう
この章ではヒアドキュメントについて説明します。
普通の文字列はダブルクォートやシングルクォートで囲まれたものですが、この他に以下の構文のようにから最後のまでを文字列として扱う手法もあります。 識別子名には自由に決めた名前を付けてください。
初めの識別子をダブルクォートで囲むと変数が展開され、シングルクォートで囲むと変数は展開されません。
また、ヒアドキュメントに変数を埋め込む時にはという形式で埋め込みます。
では例をみてみましょう。 「EOS」がダブルクォートで囲んであるので、ヒアドキュメントの中の変数は展開されます。
結果は以下の通りです。 次の例は先ほどの例を少し変えて、ヒアドキュメントを変数に入れてから出力しています。
このような事もできますので覚えておいてください。 次の例は最初の識別子を以下のようにシングルクォートで囲う方法で出力します。 結果は変数が展開されませんので、変数名がそのまま表示されます。 次はヒアドキュメントの注意点について説明します。 上のように最後の識別子の前後にスペースやコメントなどを置くことができません(エラーになります)。
しかし、最後の識別子の前後にスペースをおいてもエラーを起こさない方法があります。
それは「<<」と最初の識別子の間にを付けることです。
結果として、以下のように最後の識別子の前にスペースがあっても、エラーを起こさないで済みます。
では例をみてみましょう。
エスケープシーケンスについて知ろう
この章ではエスケープシーケンスについて説明します。
エスケープシーケンスとは、ダブルクォートやシングルクォートなど文字列として入力することが出来ない特殊な文字をを使って表現します。と、ダブルクォートを含めて出力させたいと思って以下のように書いてもエラーが出ます。
理由はダブルクォートがRubyでは文字を囲むという特殊な意味を持っているからです。 つまり、以下のカッコを囲んだ対応関係で解釈されてしまいます。 ダブルクォートをとして使いたい場合にはの前にを入れます。 これでと出力されます。
次の例をみてみましょう。 結果はと出力されますが、タブが挿入されているのが分かります。
次の例をみてみましょう。
シングルクォート内で使うことが出来るエスケープシーケンスはだけです。
Rubyで計算しよう2
Rubyで計算しよう1
この章では数値オブジェクトの計算について説明します。
数値オブジェクトは整数と浮動小数点数のことを言います。
整数は10進数、8進数、16進数などで表せますが、10進数は1,2などの我々が普段使っている数字です。
8進数は先頭に「0」を付けて028などと書きます、16進数は先頭に「0x」を付けて0x41などと表現します。
浮動小数点数は「3.2」などの小数点を持った数値です。
では例をみてみましょう。 では説明していきます。 では次の例をみてみましょう。 結果は以下の通りです。 では説明をしていきます。 =>浮動小数点数同士の計算を行っています。
=>足し算や引き算より掛け算や割り算を先に計算します。
どうしても足し算や引き算の方から計算したい場合はのようにカッコで囲ってください。
=>**は割り算や掛け算より先に計算されますので、当然足し算や引き算より先に計算します。
=>浮動小数点数と整数の計算の結果は浮動小数点数になります。
=>これは整数同士の計算なので結果も整数です。
この場合、小数点以下は切り捨てられるので正確な計算は出来ません。
=>浮動小数点数と整数の割り算の計算の結果は小数点まで求めることが出来ますので、正確に計算することが出来ます。
次の例は数値を変数に入れてから計算を行っています。
このように変数同士の計算も行うことができます。 結果は以下の通りです。
この章では定数について説明します。
定数は基本的には変数と同じですが、一度データを入れると変数みたいに再度データを入れ直すことは出来ません(つまり上書きできません)。
ですので、プログラムの最後までデータが変わらないのであれば定数を使います。
例えば消費税額などほとんど変わらないデータは定数に入れます。
またRubyの定数はメソッド内での定義はできません(メソッドは後ほど説明します)。 先頭文字を大文字で書くと定数と認識されますが、基本的には定数名のすべてを大文字で記述してください。
また変数と同じで予約語は使用できません。
定数に入れるデータはオブジェクトと言いますが、今のところ、オブジェクトは文字や数値などと同じであると覚えておいてください。
では例をみてみましょう。 この例ではMANSIONという定数に12というデータを入れています。
出力する時には変数と同じでprint文を使います。
ここで以下のようにのようにデータを上書きしようとするとどうなるでしょうか。 結果は以下のようなエラーになります。 自身で作る定数の他に、Rubyではあらかじめ定義されている定数があるのですが、これを組み込み定数と言います。
次の組み込み定数の幾つかはこの章以降に説明します。
この章では変数について説明します。
変数とはオブジェクトを入れることが出来る入れ物です。
オブジェクトのことはまだ説明していないので、ここではデータと思ってください(例えば文字や数値などもデータです)。
例えば携帯電話やフロッピーディスクにデータを記憶すると持ち運びが出来ますが、この携帯電話やフロッピーディスクに相当するものが変数です。
では例をみてみましょう。 後で詳しく説明しますが、nekoというデータをanimalという変数に入れて、print文で変数に入っているデータを出力しています。
このようにデータは変数に入れて、プログラム内で使っていきます。
結果は以下の通りです。 このプログラムの中のanimalが変数ですが、以下で変数の特徴について説明します。 先頭には@ や@@を使用することができますが、これらには意味がありますので、「クラスについて知ろう」の章で説明します。 予約語とはあらかじめRubyで定義済みの文字です。
例えば、「if」でしたらというRubyの内部機構で初めから装備されている機能ですので、使用することが出来ません。 「=」を代入演算子と言います。
このように書くことでnekoと言うデータをanimalと言う変数に入れることができるわけです。
データを入れる行為を代入と言います。
そして、その変数に入っているデータを出力するのが先ほど説明したprintや putsです。
つまり、はになります。
変数に格納されているデータが使用されることを変数展開と言います。
つまりデータを上書きできると言うことです。
その場合、前のデータも消えてしまいます。
では例をみてみましょう。 nekoというデータは後から入れられたdogで上書きされます。
結果は以下の通りです。 例えば のようにを入れないと以下のエラーが発生します。 もう一つの書き方としては変数をで囲みます。
その場合にはを入れる必要はありません。 animalを他の変数であるanimal2に入れていますので、animal2にもnekoが代入されています。
結果は以下の通りです。
プログラムの基礎を知ろう
この章ではRubyのプログラムの基礎について説明します。
初めに先ほどインストールしたRubyのインタプリタが正常にインストールされたかどうかを確認しますので、コマンドプロンプトを起動した後にと入力してください。
以下の画面が表示されたら、成功です。 では基礎から説明します。
文字を出力するには以下のようにを使います。
例をみてみましょう。 これをテキストエディタで書いて、保存してください。
例えばのようにという形式で保存します。
そして、C の直下にRubyというフォルダを作成して、その中にファイルを入れます。
フォルダ名は自由に付けていただいても結構ですが、この講座ではRubyと付けます。
文字コードの指定は「Notepad++」の場合は「フォーマット」からを指定してください。
この指定をしてからプログラムを書いて保存します。
どのテキストエディタを使っていても、文字コードはで保存してください。 コマンドプロンプトでファイルを実行するためにはそのファイルのある場所まで移動しなくてはいけませんので、「cd C:¥Ruby」と入力します。
つまり、と書きますとそのファイルのある場所まで移動することが出来ます。
そして、その移動した先でと入力しエンターキーを押しますと以下のように実行結果が出力されます。 では例について詳しく説明します。
① printもputsも画面に文字等を出力するための機能を持っています。
print はデータを改行しないで出力します。
printの後のカッコはあってもなくてもいいです。
puts はprintとは違ってデータを改行して出力します。
②文字列を出力する時には必ずもしくはで文字を囲んでください。
文字を出力するときにはダブルクォート、シングルクォート自体は出力されません。
ダブルクォートやシングルクォートに囲まれた文字を文字列と言います。
しかしダブルクォートの中のダブルクォートそのものを出力しようとする時には注意が必要です。
例えばと出力する場合にはのように書いてはいけません。
これを実行すると以下のようなエラーが出ます。 エラーを出さないためには以下のように書きます。 つまり、出力させたいダブルクォートの前にを付けてください。
そうするとダブルクォート自体が出力されます。 「Notepad++」を使っている場合、ではなくという表記になりますが、と同じ意味です。
シングルクォートの中にシングルクォートそのものを出力させたい場合は以下のように書きます。 つまり、シングルクォートの前にを付けてと書きます。
しかし、ダブルクォートの中にシングルクォートを含める時やシングルクォートの中にダブルクォートを含める時にはを付ける必要はありません。 結果は以下の通りです。
③ C言語などの言語は文の終わりにセミコロンを付ける必要がありますが、Rubyは1行に1文書く限り付ける必要はありません。
他の言語経験者でセミコロンを付けるのが慣れているのであればセミコロンを付けても問題ありません。
ですのでのように1行に2文書くとエラーになりますので、どうしても1行に2文書きたい場合はのように文と文の間にを付けます。
④ print(123)のようにカッコの中に数値を記述する時にはダブルクォートやシングルクォートで囲う必要はありません。
結果は「123」が出力されます。
⑤プログラムの中にはコメントが書けるのですが、以下の赤枠の箇所がコメントになります。 「#」の後にコメントを書くと行の末尾までがプログラムに反映されなくなります。
一部のプログラム自体を実行させなくすることやプログラムの意味などを書きます。
複数行のコメントを書きたい場合にはからの間にコメントを書いてください。
⑥ putsは文を改行してくれますが、printで改行したい場合は以下のようにダブルクォートの中に
を付けてください。
「Notepad++」を使っている場合、となります。 結果は以下のように改行されて出力されます。 「¥n 」を使って改行が出来るのはダブルクォートの中だけであり、シングルクォートの中でのように改行文字を書くと以下のようにそのまま改行文字が出力されて、改行の機能はなくなってしまうので注意してください。
⑦ Rubyで使われるデータをオブジェクトと言います。
例えば「”Hello”」は文字列オブジェクトです。文字列オブジェクトは詳しく言いますとstringクラスのオブジェクトになりますが、詳しい説明は「stringクラスについて知ろう」で説明します。
「123」は数値オブジェクトです。数値オブジェクトは詳しく言いますとIntegerクラスのオブジェクトになりますが、詳しい説明は「Numericクラスについて知ろう」で説明します。 =>このプログラムは文字コードにUTF-8を使ってコマンドプロンプトで出力していますが、コマンドプロンプトの文字コードはShift_JISですので、出力する時には文字化けしてしまいます。ですので、このUTF-8をShift_JISに変換してから出力しなくてはいけません。
その文字コードの変換をしてくれるのがkconvと呼ばれているライブラリです。
ライブラリとはRubyであらかじめ機能が定義されているファイルの集合体です。
例えば、kconvは文字コードの変換をしてくれる機能を持ちますが、このような便利な機能が集まっているのがライブラリです。
また、ライブラリをプログラムの中に取り込むにはrequireを使用しますが、この例ではと書いています。
⑨このプログラムはUTF-8で作成していますが、それを明記しているのがの部分です。この記述は決まりきった型なので、このまま覚えてください。
今ではUTF-8は主流の文字コードですので、この教材でもUTF-8を使用します。