カテゴリー
Ruby

テキストエディタをインストールしよう

Rubyのプログラムを書くためにテキストエディタを使用しますので、以下のいずれかのテキストエディタをインストールしてください。

9

カテゴリー
Ruby

Rubyとは何か

Rubyは まつもとゆきひろ が1995年に開発した言語です。
C言語はコンパイルを行って実行ファイルを作成してからプログラムを実行しますが、Rubyはその都度プログラムを翻訳しながら実行します。
コンパイルとはプログラムをコンピューターが理解できるように翻訳する作業のことを言います。
ではRubyを実行するための準備をします。
Rubyでプログラムを実行するにはプログラムを解釈するソフトウェアが必要です。これをインタプリタと言いますが、これを今からインストールしますので、以下の順番通りに進んでください。
〇以下のURLにアクセスしてください。1 〇以下の赤枠のダウンロードをクリックします。1 〇ダウンロードをクリックしますと以下の画面が表示されますので、その中の以下の赤線で囲まれている箇所をクリックします。1 〇 次に以下の画面に移りますので、その中のDownloadをクリックしてください。1 〇次に以下の画面に移りますので、その中の1をクリックしてください。この箇所はバージョンのアップにより変わる可能性がありますので、その時の最新のバージョンをクリックしてください。1 〇「Ruby1.9.3-p286」をクリックしますと以下の画面が表示されますので、実行をクリックしてください。1 実行をクリックしますと以下の画面が表示されますので、日本語もしくは英語を選択して、OKをクリックしてください。1 〇次に以下の画面が表示されますので1を選択して、Nextをクリックしてください。1 〇次に以下の画面が表示されますので「Add Ruby executables to your PATH 」に印を付けて、Installをクリックしてください。8 〇 Installをクリックしますとインストールが始まります。9 〇これでインストールは終わりましたので、Finishをクリックしてください。9

カテゴリー
Cシャープ

例外処理について知ろう

この章では例外処理について説明します。
例外とは、プログラムの実行過程で発生するエラーのことを言います。
0による除算や配列の添え字の数を超えて実行しようとするとエラーが起こります。
例外が起こったときに、予想外の動きをしないためには例外処理を行う必要があります。
例外処理をすることで プログラムが途中で中断されることなく続けることができるメリットがあります。
では例をみてみましょう。11 C#には例外を処理するためのクラスが備わっているのですが、それがExceptionクラスです。
このクラスを基本として、様々な例外処理が行われます。
例えばこの例のDivideByZeroExceptionクラスは Exception クラスの子クラスですが、0で除算した際の例外処理を行います。1 この例の処理の場合はcatchの引数に1と記述し、次にcatchのブロック内に1という形式で記述します。
Messageはプロパティですが、ここに例外の文字列が格納されています。
結果は以下の通りです。1 例外クラスはDivideByZeroExceptionだけではないので、他の例外も紹介します。111 この例では配列の要素数が3なのに4つ入れようとしているので、例外が発生します。
この例外を扱うクラスはIndexOutOfRangeExceptionです。
配列の要素数を超えてデータを入れようとすると、この例外クラスが実行されます。1 結果は以下の通りです。1 今まで2つの例外1 を見てきましたが、catchは1つだけしか書くことができないわけではなく、何個でも書くことが出来ます。1 以下のように複数のcatch文を書く事が出来ます。111 では次の説明に移ります。
今までは2つの例外1 を別個に書いていましたが、
これらに代わって
「Exception」を使うことで
どの例外でも補足することが
可能になります。
Exceptionクラスは今まで説明してきた例外クラスの親クラスに当たります。
では例をみてみましょう。11 結果は以下の通りです。1 次は例外をプログラマが明示的に投げる方法について説明します。
明示的に例外を投げるにはtryのブロック内に1という構文で書きます。1 では例をみてみましょう。111 この例は変数がnullであればthrowで例外をcatchに送っています。
throw 文は例外が起こる箇所に挿入します。
ArgumentNullExceptionクラスは値がnullである可能性があるプログラムに使用されます。
結果は以下の通りです。1

カテゴリー
Cシャープ

DateTime構造体について知ろう

この章ではDateTime構造体について説明します。
DateTime構造体は日付や時刻関係の出力や取得に役立つ構造体の一種です。
では例をみてみましょう。1 現在の日付と時間を得たいのであれば以下の構文で書きます。1 この例では以下の箇所です。1 例えば 
2012/05/30 22:30:55 
と現在の日付と時間が出力されます。
次は今日の日付を取得する方法について説明します。1 今日の日付を取得する構文は以下の通りです。1 例えば
2012/05/30 0:00:00 
と、出力されます。
現在の日付と時間を協定世界時(世界標準の時刻)で得たいのならば以下の形式で書きます。1 協定世界時と日本の時刻との時差は9時間です。
日本時間の方が9時間進んでいます。1 次は個別に年や時間を取得する方法について説明します。111 11次はDateTimeオブジェクトをフォーマット形式の文字列に変換するToStringメソッドについて説明します。
他にも似たようなメソッドが多数存在します。11 では例をみてみましょう。1 11この章の最後にまとめて標準日時書式指定文字列の表を載せます。
次の例をみてみましょう。11 1スペースの都合でToStringを2行で書いていますが、1行で書いても結構です。11

111111111111111111

カテゴリー
Cシャープ

列挙型について知ろう

この章では列挙型について説明します。
「列挙型」は結びつきがある要素をひとまとめにして、新しい型として定義することを言います。
詳しい説明は例の後に行います。111 列挙型は宣言を行うことが必要ですが、構文は次のようになります。1 以下の箇所がこの例の列挙型の定義ですが、配列のようにデータのまとまりを作ります。
そして、列挙型のリストには先頭から1と順番に値が与えられます。
数値だけを1と与えられても何がなんだかわかりません。
そこでcatsが0,dogsが1,tigerが2と数値を割り当てるわけです。1 列挙型の宣言をした後は列挙型の変数を宣言し、データを入れます。1 この例では以下の箇所です。1 この例では列挙型の変数に値を入れた後にswitch文で判定を行なっています。
列挙型のリストには先頭から順番に値が与えられると言いましたが、出力するには以下のように書きます。
この例は0が出力されます。この中に「(int)」という箇所がありますが、これをキャストと呼ぶことは説明しました。
この例の場合には整数型にキャストして列挙型に割り当てられている数値を出力しています。11

カテゴリー
Cシャープ

構造体について知ろう

この章では構造体について説明します。
構造体はバラバラの異なる型のデータを持つ複数の変数を1つの型として扱うことが出来ます。
それに対して配列は単一のデータ型しかまとめて扱う事はできません。
例えば、学生の情報をデータに残したい時に、成績はint型,身長はdouble型,名前はchar型など様々なデータ型を1つにまとめて扱いたい時に構造体は便利です。1 構造体型を宣言する時はstructを使います。
構造体の中には変数、メソッド、プロパティ、コンストラクタなどを書くことが出来ます。
しかしデストラクタは書けません。
では例をみてみましょう。111 構造体を基本構文の通り1のように作って、そのブロックの中に変数やメソッドなどを記述します。
変数やメソッドにアクセスするにはMainメソッドの中で1と宣言してから、1という形式で値を代入します。
構造体のメソッドに値を渡す場合には1という形式でデータを渡します。
引数は省略できます。1 1結果は以下の通りです。1 次は構造体にコンストラクタを使用した例です。1111 構造体でコンストラクタを使うためにはnewが必要です。1 この例では1です。1

カテゴリー
Cシャープ

占いプログラムを作ろう

この章では占いプログラムを作成します。1111 このプログラムはランダムな数を生成して、その数を基に占いを行います。
乱数を導き出すためにRandomクラスを使用します。
今までは自身でクラスを作成してきましたがRandomクラスはC#で定義されているクラスです。
Randomクラスのオブジェクトは以下のように作成します。1 その後に1という構文で書きますと0以上のランダムな整数を生成します。
以下の例を見るとNextの引数がカラですが、このように引数に何も書かないと「1394375729」のようなランダムな乱数を生成します。1 1のように引数に数値が入っている場合にはその数までの乱数を生成します。
気を付けないといけないのは1の場合には1から7ではなくて0から6までの乱数を生成することです。
その他に「ここからここまで」と指定したい場合には1のようにカンマを挟んで数値を記述します。
この例の場合には「1から100」です。
「1から101」ではありません。

カテゴリー
Cシャープ

名前空間について知ろう

この章では名前空間について説明します。
C#で機能が定義されているクラスライブラリ(クラスが保管されているファイル)には多くのクラスがあります。
さらには自身で作ったクラスもあります。
そして、自身のクラスやクラスライブラリにはメソッドが多数ありますが、その中にはクラス名が同じで、さらに同じ名前のメソッドがあるわけです。
その名前の衝突を防ぐために名前空間が存在します。111

カテゴリー
Cシャープ

インターフェイスについて知ろう

インターフェイスは抽象クラスと使い方がほとんど同じなのですが、インターフェイスもメソッドの宣言だけをして、メソッドの中身は受け継いだクラスで書きます。 
抽象クラスは中身のある普通のメソッドも書けましたが、インターフェイスは中身のあるメソッドやstaticメソッドを一切書くことは出来ません。1 実装とは何らかの機能を加えていく作業のことを言います。
では例をみてみましょう。1111111 抽象クラスの章で説明した例をインターフェイスを使って書き換えた例です。
以下がインターフェイスを定義した箇所です。1111 結果は以下の通りです。1

カテゴリー
Cシャープ

抽象クラスについて知ろう

この章では抽象クラスについて説明します。
抽象クラスとは親クラスで大まかなことだけを定義するクラスのことを言います(だから抽象と言う名前が付いています)。
具体的なことはその抽象クラスを引き継いだ各クラス内で決めます。
抽象クラスは親クラス名の前に1が付いたクラスであり、抽象クラスの中のメソッドは名前だけ決めて(中身は何も書きません)、メソッドの内容はこれを継承したクラスに書きます。
このようなメソッドを抽象メソッドといいます。
では例をみてみましょう。111111 抽象クラスの基本構文は以下の通りです。1 抽象クラスにしたいクラスには「abstract」を「class」の前に付けます。
さらに中身が決まっていない抽象メソッドの宣言にも「abstract」を付けます。
この例の中では以下の2行が抽象メソッドになります。1 抽象メソッドが1つでも含まれているクラスは抽象クラスになります。
また、抽象クラスには普通のメソッドも記述出来ます。
つまり、抽象クラスには抽象メソッドでないメソッドも書くことができます。
抽象メソッドでない普通のメソッドは継承するクラスでもわざわざクラスごとに内容を変える必要が無いメソッドなので、普通のメソッドにしているわけです。
この例ではsleepメソッドを抽象メソッドにしないで、普通のメソッドにしていますが、「夜に寝る」は継承されたクラスで変える必要が無いので普通のメソッドにしています。
抽象メソッドのeatは動物ごとに食べるものが違うので、eatと言うメソッド名だけ決めて、後の具体的な内容は抽象クラスを継承したクラスの中で書くという形を取ります。
抽象クラスを継承したクラスは、この抽象メソッドを必ずオーバーライドしなければなりません。オーバーライドしないとコンパイルエラーとなります。
ですので1 のように抽象メソッドの宣言をしましたら、以下のように継承したクラスで実際の具体的な内容を記述してください。11 抽象メソッドを受け継いだメソッドにoverrideを付けるのを忘れないでください。また、抽象メソッドにvirtualを付ける必要はありません。1 抽象クラスについて補足します。
この例の場合 Animalクラスを継承してCatsクラスやDogクラスを定義していますが、この他にもTigerクラスなど他にもクラスが増える可能性もあります。
このように拡張する可能性があるのでAnimalクラスですべてメソッドの中身などを決める必要はないわけです。
つまり、それぞれ動物には特色があるのでAnimalクラスですべての具体的な動きなどを決められないわけです。
Animalクラスで抽象的な名前だけ決めて、後の具体的なことは継承したクラスに任せるとした方が大きいプログラムの場合には使い勝手が良くなります。
他の例を挙げますが、ゲームのプログラムを作るとします。
その時に魔法メソッドを抽象メソッドにして、具体的な魔法の動きは抽象クラスを受け継いだクラスに書くという使い方も出来ます。
結果は以下の通りです。1