カテゴリー
Ruby

IOクラスについて知ろう

この章ではIO クラスとファイルの入出力について説明します。
ファイルの入出力の基本はファイルを開いて、ファイルに書き込んだり、ファイルから読み込んだりして、最後にファイルを閉じます。
ファイルの入出力にはIO クラスのオブジェクト(IO オブジェクト)を使用します。
ではIO クラスを使用して、ファイルを操作する方法について説明します。9 ファイルを開いたり閉じたりする方法は2つあります。99 構文の中のアクセスモードとは「ファイルを読み込み用で開くのか」、「書き込み用で開くのか」、「読み書き両方で開くのか」を文字列で指定したものです。99999 9「ファイル操作の手順の2」のファイルに書き込んだり、ファイルから読み込んだりするには次の表のメソッドを使用します。
以下のメソッドを使って、入力したり、出力したりします。9999
では次の例で「test.dat」からデータを読み込んでみましょう。99 初めにファイルを開きますが、この例では先ほどの基本構文 2でファイルを開いています。
アクセスモードは読み込み専用の9を使用しています。
「オブジェクト.gets 」と言う形式でファイルからデータを読み込むことができます。
getsメソッドはファイルの中の1行分を読み込むことが出来ますので、「abcde」だけを読み込み、ファイルの終わり(EOF)になるとnilを返します。
最後に9という形式でファイルを閉じます。
基本構文2でファイルを開いた場合にはcloseメソッドは省略できます。
先ほどの例では1行しか取り出さないので、すべての要素を取り出したい場合はwhileを使用します。
次の例のようにwhileを使うと「abcde」「efgh」のすべてが取り出せます。
「a.gets」で取り出されたデータがbに入り、それをprintで出力しています。9
次の例をみてみましょう。99 readlineメソッドもgetsと同じでファイルの中の1行分だけ読み込むことが出来ます。
基本構文は9です。
次の例をみてみましょう。99 9と言う形式で、ファイルのすべての行を配列(この例ではb)に格納してくれます。
それを eachメソッド で繰り返し取り出しています。
結果は以下の通りです。9
次の例をみてみましょう。
9
「IOオブジェクト.getc 」という形式でファイルから1文字ずつ読み込みます。
このメソッドはファイルの終わり(EOF)になるとnilを返します。9
次の例をみてみましょう。9 基本構文は9です。
ファイルの初めから終わりまでを読み込んで出力します。
ファイルの終端に達するとnil を返します。9
次は9という構文でサイズを入力し、そのサイズ分だけファイルからデータを取り出します。9 この例では2バイト分だけ読み込んでいるので、結果は「ab」です。

次の例をみてみましょう。99 と言う基本構文でファイルの中身をすべて読み込むことが出来ます。9
次はファイルに書き込むメソッドについて説明します。
では例をみてみましょう。9 =>9と言う形式でファイルに改行を入れて書き込むことが出来ます。
これでt.datに「abcdef」「aiueo」が改行を入れて書き込まれます。
次の例をみてみましょう。9
9と言う形式でファイルに改行を入れないで書き込むことが出来ます。
結果はte.datに「abcdefaiueo」のように改行を入れないで書き込まれました。
次の例をみてみましょう。9 9と言う形式でファイルに改行を入れないで書き込むことが出来ます。
結果はt.datに「abcdefaiueo」のように改行を入れないで書き込まれました。
writeメソッドを使って、改行を入れて書き込みたい場合には以下の通り、9を入れます。9

次の例をみてみましょう。9 9と言う形式でファイルに書き込むことが出来ます。
結果はte.datに「abcdefaiueo」のように改行を入れないで書き込まれました。
次はファイルポインタについて説明します。
ファイルのデータを読み書きするには「ここまで読んだから次はここから読む」もしくは「ここまで書いたから次はここから書く」のように位置を覚えておかなくてはいけませんが、プログラマ自身が覚えている必要はなく、ファイルポインタと言う位置情報にこのデータが記録されています。
次の例をみてみましょう。9 「IOオブジェクト.pos」と言う形式で、現在のファイル位置を得ることが出来ます。
2バイト読み込んだので、現在のファイルの位置は2の箇所にあります。
例の実行結果は「ab」と「2」を出力します。
またposは現在の位置を知るだけでは無くて、任意の位置に移動することが出来ますので次の例で説明します。99 移動したい場合は9と記述します。
「i.pos=5」は5バイトだけ移動します。
5バイトで出力すると「fgh」を出力します。
「i.pos=0」は先頭まで移動します。先頭まで移動したので「abcdefgh」を出力します。
次はファイルポインタを移動するseekメソッドについて説明します
では例をみてみましょう。99 9で、ファイルポインタを自由に移動させることができます。
第 2引数のwhenceには以下の3種類から選択して、ファイルポインタの動きを決めることが出来ます。9 では例の説明をします。
「i.read(2)」で2のサイズだけ動いていて、その後に9でさらに5のサイズだけ移動しているので9で現在の位置を見ると7になります。
7進んだ位置で出力すると「h」を出力します。
9のように9に変更したとしますと、これは絶対位置なので9で現在の位置を見ると5になります。9
次はrewindメソッドについて説明します。
rewindメソッドはファイルポインタを先頭に戻します。
では例をみてみましょう。999と言う形式でファイルポインタを先頭に戻します。
puts i.posで出力すると0が出力されます。9

カテゴリー
Ruby

プログラムの基礎を知ろう

この章ではRubyのプログラムの基礎について説明します。
初めに先ほどインストールしたRubyのインタプリタが正常にインストールされたかどうかを確認しますので、コマンドプロンプトを起動した後に9と入力してください。
以下の画面が表示されたら、成功です。9 では基礎から説明します。
文字を出力するには以下のように9を使います。
例をみてみましょう。9 これをテキストエディタで書いて、保存してください。
例えば9のように9という形式で保存します。
そして、C の直下にRubyというフォルダを作成して、その中にファイルを入れます。
フォルダ名は自由に付けていただいても結構ですが、この講座ではRubyと付けます。
文字コードの指定は「Notepad++」の場合は「フォーマット」から9を指定してください。
この指定をしてからプログラムを書いて保存します。
どのテキストエディタを使っていても、文字コードは9で保存してください。9 コマンドプロンプトでファイルを実行するためにはそのファイルのある場所まで移動しなくてはいけませんので、「cd C:¥Ruby」と入力します。
つまり、9と書きますとそのファイルのある場所まで移動することが出来ます。
そして、その移動した先で9と入力しエンターキーを押しますと以下のように実行結果が出力されます。9 では例について詳しく説明します。
① printもputsも画面に文字等を出力するための機能を持っています。
print はデータを改行しないで出力します。
printの後のカッコはあってもなくてもいいです。
puts はprintとは違ってデータを改行して出力します。

②文字列を出力する時には必ず9もしくは9で文字を囲んでください。
文字を出力するときにはダブルクォート、シングルクォート自体は出力されません。
ダブルクォートやシングルクォートに囲まれた文字を文字列と言います。
しかしダブルクォートの中のダブルクォートそのものを出力しようとする時には注意が必要です。
例えば9と出力する場合には9のように書いてはいけません。
これを実行すると以下のようなエラーが出ます。9 エラーを出さないためには以下のように書きます。9 つまり、出力させたいダブルクォートの前に9を付けてください。
そうするとダブルクォート自体が出力されます。9 「Notepad++」を使っている場合、9ではなく9という表記になりますが、9と同じ意味です。
シングルクォートの中にシングルクォートそのものを出力させたい場合は以下のように書きます。9 つまり、シングルクォートの前に9を付けて9と書きます。
しかし、ダブルクォートの中にシングルクォートを含める時やシングルクォートの中にダブルクォートを含める時には9を付ける必要はありません。9 結果は以下の通りです。9

③ C言語などの言語は文の終わりにセミコロンを付ける必要がありますが、Rubyは1行に1文書く限り付ける必要はありません。
他の言語経験者でセミコロンを付けるのが慣れているのであればセミコロンを付けても問題ありません。
ですので9のように1行に2文書くとエラーになりますので、どうしても1行に2文書きたい場合は9のように文と文の間に9を付けます。

④ print(123)のようにカッコの中に数値を記述する時にはダブルクォートやシングルクォートで囲う必要はありません。
結果は「123」が出力されます。

⑤プログラムの中にはコメントが書けるのですが、以下の赤枠の箇所がコメントになります。9 「#」の後にコメントを書くと行の末尾までがプログラムに反映されなくなります。
一部のプログラム自体を実行させなくすることやプログラムの意味などを書きます。
複数行のコメントを書きたい場合には9から9の間にコメントを書いてください。

⑥ putsは文を改行してくれますが、printで改行したい場合は以下のようにダブルクォートの中に
9を付けてください。

「Notepad++」を使っている場合、9となります。9 結果は以下のように改行されて出力されます。9 「¥n 」を使って改行が出来るのはダブルクォートの中だけであり、シングルクォートの中で9のように改行文字を書くと以下のようにそのまま改行文字が出力されて、改行の機能はなくなってしまうので注意してください。9
⑦ Rubyで使われるデータをオブジェクトと言います。
例えば「”Hello”」は文字列オブジェクトです。文字列オブジェクトは詳しく言いますとstringクラスのオブジェクトになりますが、詳しい説明は「stringクラスについて知ろう」で説明します。
「123」は数値オブジェクトです。数値オブジェクトは詳しく言いますとIntegerクラスのオブジェクトになりますが、詳しい説明は「Numericクラスについて知ろう」で説明します。9 =>このプログラムは文字コードにUTF-8を使ってコマンドプロンプトで出力していますが、コマンドプロンプトの文字コードはShift_JISですので、出力する時には文字化けしてしまいます。ですので、このUTF-8をShift_JISに変換してから出力しなくてはいけません。
その文字コードの変換をしてくれるのがkconvと呼ばれているライブラリです。
ライブラリとはRubyであらかじめ機能が定義されているファイルの集合体です。
例えば、kconvは文字コードの変換をしてくれる機能を持ちますが、このような便利な機能が集まっているのがライブラリです。
また、ライブラリをプログラムの中に取り込むにはrequireを使用しますが、この例では9と書いています。
⑨このプログラムはUTF-8で作成していますが、それを明記しているのが9の部分です。この記述は決まりきった型なので、このまま覚えてください。
今ではUTF-8は主流の文字コードですので、この教材でもUTF-8を使用します。

カテゴリー
C++

puts関数について知ろう

この章ではputs関数について説明します。
puts関数はC言語で使われている関数ですがC++でも使えるので紹介します。
puts関数は文字列を出力する関数ですが、printf関数とは少し機能が違います。
puts関数とprintfとの違いはputs関数は1などの変換指定子を使用することが出来ないことです。
もう一つの違いはputs関数は文字列の1番最後に 改行文字が自動的に付けられます。つまりprintfみたいに1を付けなくても文字列を改行してくれます。
では例をみてみましょう。11 では次の例をみてみましょう。11 printfで改行したい場合には以下のように改行文字を入れます。1

カテゴリー
C言語

puts関数をもっと知ろう

この章ではputs関数について説明します。
puts関数は文字列を出力する関数ですが、printf関数とは少し機能が違います。
printf関数との違いはputs関数は%d などの変換指定子を使用することができないことです。
もう一つの違いはputs関数は文字列の末尾に改行文字が自動的に付けられます。
逆に言いますとprintf関数は改行をしないで出力されます。
では例をみてみましょう。11 次の例をみてみましょう。11 これがputs関数とprintf関数の違いです。

カテゴリー
C言語

C言語の基礎を知ろう2

この章ではputs関数について説明します。
puts関数は文字列を出力させる関数ですが、基本構文は以下の通りです。1 〇出力させたい文字列は1で囲んでください。
また、このカッコの中のデータを引数と言います。
ダブルクォート自体は出力されません。
puts関数はカッコの中の文字列を出力させる関数と言いましたが、もっと詳しく言いますと改行を入れながら文字列を表示させる関数です。
例えば以下のようにputsを2つ並べたプログラムがあるとします。1 1もし、改行しないで出力したい場合にはprintf関数を使います。1 〇 printf関数は文字列を出力する関数ですが、puts関数と違うのは改行を入れないで文字列を出力させることです。
〇出力させたい文字列をputs関数と同じようにダブルクォートで囲んで記述してください。1 1printf関数で出力する時に改行を入れたい場合には1と言う特殊な文字を使います。
HTMLの1と同じ機能を持ちます。
では例をみてみましょう。1 1次の例をみてみましょう。1 1つのprintfの中に2か所、改行文字がありますが、このように複数の箇所に1を使用することが出来ます。1