Ruby

ゲームを書いてみる

scene = 'opening' while true case scene when 'opening' puts '3本の分かれ道があります。どの道を進みますか。' puts " 1 左の道" puts " 2 真ん中の道" puts " 3 右の道" input_value = gets case input_value.to_i when 1 scene = 'left' when 2 scene…

ゲームを書いてみる その2

うまくいかない…なんでだろう これでどうですか? scene = 'opening' while true case scene when 'opening' puts '3本の分かれ道があります。どの道を進みますか。' puts " 1 左の道" puts " 2 真ん中の道" puts " 3 右の道" input_value = gets case input…

論理演算子におけるビックリマーク

!条件 条件が『偽』である場合は『真』に、『真』である場合は『偽』になる このあまのじゃくぶり。いまはいろいろ取り込んでるのでスルーする。リファレンスにも「素直じゃない」と明記されており扱いづらい子なのだろうと推測

繰り返し

2パタンある 構文で実現 メソッドで実現 構文 メソッド times - ◯ for ◯ - while ◯ - until ◯ - each - ◯ loop - ◯ timesメソッド 一定の回数だけ同じ処理をさせるという繰り返しなら timesメソッドを使うのがvenry 繰り返したい回数.times do 繰り返したい…

繰り返し-for

条件判断

入力された年の単位を西暦から平成に変換するプログラムを書く。 ヒント:入力された文字列を数値に変換し、1988を弾いた値を表示すればおk year=gets.chomp.to_i heisei=year-1988 puts heisei 正しいぽい Last login: Fri Jan 21 23:30:47 on console moom…

論理演算子

複数の条件を1つにまとめるときに使います 条件1 && 条件2 条件1 条件2とも「真」である場合 条件1 || 条件2 条件1と条件2いずれかが「真」なら全体も「真」 ん?つづく

うにゃ

変数

オブジェクトに付ける名札みたいなもん Rubyには4種類の変数があります ローカル変数 先頭がアルファベットの文字か「_ 」で始まるもの 変数の有効な範囲が局所(local)。あるところで使われている変数の名前を別のあるところで使ってもそれが無関係なところ…

オブジェクトと変数/定数-クラスってなんぞよ

クラスとはオブジェクトの種類を表すもの オブジェクトにメソッドを適用させたときになにが起こるかはオブジェクトが属するクラスによって決まる 例えば数値クラスのオブジェクトであれば四則演算がおこなえるよね 文字列クラスのオブジェクトならベルの文字…

ファイルからの読み込み-テキストデータを読み込んで表示する

ねむいp.49 ファイルの中身を表示するプログラムの流れ ファイルを開く ファイルのテキストデータを読み込む 読み込んだテキストデータを出力 ファイルを閉じる これをプログラムにするといかに # read_text.rb :ファイル名 filename = ARGV[0] fine = open…

ファイルからテキストデータを1行ずつ読み込んで表示 (p.51) While文を使って 条件が『真』の場合→「表示」するなどと指定 ファイルの中から特定のパターンの行のみ選んで出力 (p.52) 活用イメージがいまいちわかんないので必要なタイミングで勉強する

改行の巻その3

Just do it.ですね num0= ARGV[0].to_i num1= ARGV[1].to_i print num0, "+", num1, "=", num0+num1,"\n" print num0, "-", num1, "=", num0-num1,"\n" print num0, "*", num1, "=", num0*num1,"\n" print num0, "/", num1, "=", num0/num1,"\n"I did it! mo…

コマンドラインからのデータの入力-2 (計算に使う場合)

引数から取得したデータは文字列 計算に使うときは数値に変換する必要がある to_i メソッドを使います num0= ARGV[0].to_i num1= ARGV[1].to_i puts num0, '+', num1, '=', num0 + num1 puts num0, '-', num1, '=', num0 - num1 puts num0, '*', num1, '=', …

改行の巻

文字列はダブルクォートまたはシングルクォートで囲まれています。ダブルクォートで囲まれた文字列ではバックスラッシュ記法 と式展開(後述)が有効になります。シングルクォートで囲まれた文字列では、\\(バックスラッシュそのもの)と \'(シングルクォート)…

改行の巻その2

リトライ。 「1」のヒント:http://d.hatena.ne.jp/tomomii+programming/20110115/p2 の1つ目の実験 「2」のヒント:「syntax error, unexpected ○○」と言われているときは、^ で指し示されて いる位置より前(左)で何か書き忘れやゴミがないか確かめてみま…

改行の巻その2'

print と putsの違い理解しました!あーケアレスミス恥ずかしい情けない。 本当に何度もありがとうございます!! 実行 print "Hello World!", ARGV[0], "!\n" やっと!Done! moomin:ProgrammingRuby tomomi$ ruby argv.rb Ruby Hello World!Ruby!

パターンマッチ-2

名前のスペルに ow が入る人を表示しましょい names=['Geoffrey Downes', 'John Wetton', 'Steve How','Carl Palmer'] names.each{|name| if /ow/=~name puts name end } 4名の名前それぞれを見にいく > names.each{|name| (条件判断)名前にowがあるか(マ…

コマンドラインからのデータ入力

コマンドを作ろう!シリーズその1, P.47 ポイント: Unixのgrepコマンドもどきを作成しましょう ←ハァ? >「grepコマンドもどき」 今までおこなってきたことはデータを画面に出力することでした。出力があれば入力も試してみたくなるはず そもそも普通に使え…

map

写像。地図。 map array=[1, 3, 7, 11, 17] array2=array.map{|n|n*3} puts array2 moomin:ProgrammingRuby tomomi$ ruby re.rb 3 9 21 33 51

パターンマッチと正規表現

「◯◯という文字列を含んだ行を表示したい」「◯◯と××の間に書かれた文字列を抜き出したい」など特定の文字列があるパターンに当てはまるか(マッチング)しているかを調べる 正規表現オブジェクトを作る公式: /パターン/=~マッチングしたい文字列 マッチング…

ハッシュ!

なんだか使用イメージがわかないから飛ばそう。p.38参照 配列の作り方に似てる 配列 : [ ] ハッシュ:{ } ex. name= {'スライム'=> 'OK', 'キメラ'=> 'OK', 'メタルスライム'=> 'OK', 'まほうつかい'=> 'OK', 'ばくだん岩'=> 'NG'} のような使い方をするらし…

正規表現 (Regular Expression)

正規表現とは 文字列を処理するときによく使われます。正規表現を使うと以下が手軽に行なえます。 文字列パターンの一致(マッチング) 文字列パターンを使った文字列の切り出し エ…。 AWKやPerlなど Rubyの先輩格にあたるスクリプト言語で培われてきた機能…

配列と繰り返し

配列を繰り返す場合。 以下のような場合は、配列の要素すべてにアクセスする方法が必要です。 配列の要素をすべて表示したいとき 配列の要素のうち ある条件に当てはまる要素をについて××メソッドを、当てはまらない要素については△△メソッドを適用させたい …

.times 回数が決まっている作業を繰り返すときは[times」を使うとvenry. 繰り返す回数 .times { 繰り返したい処理 } All work and no play makes tomomii a dull. を5行繰り返すプログラムを書きましょう 5.times { puts 'All work and no play makes tomomi…

別のファイルを取り込む >require

requireメソッドとは プログラムの一部を別の新しいプログラムの中で使い回したいことがあります。例えば あるプログラムで作った自作メソッドを別のプログラムで利用したい場合などです。 そのように他のプログラムから読み込んで利用するためのプログラム…

-6

http://d.hatena.ne.jp/tomomii+programming/20110104/p1 ありがとうございます。 おっ、かなり正しい感じになってきましたね! あとは、例えば I=num%10/1 だと num=17 のとき I==2 ではなく I==7 となってしまう点を直すのと、文字をつなげるところですね。…

体積 x =10 y =20 z =30 volume=x*y*z puts '直方体の体積は' +volume.to_s+'です。' moomin:ProgrammingRuby tomomi$ ruby volume.rb 直方体の体積は6000です。 条件判断 変数aの値が10以上の場合はbigger, それ以外の場合はsmallerと表示するプログラムを…

-5

初期の頃のローマ数字には減算則はありませんでした。つまり「IX」で9を表したりせず素直に大きい数の次に小さい数を順に記述して「VIIII」というように書いていました。さて、1から3000の間の整数を入力してそれに相当する古いローマ数字の文字列を返すメソ…

string/配列の問題 つづき4

http://d.hatena.ne.jp/tomomii+programming/20101214/p2 1と2は同義。すごい。 1 staffs =['nanto_vi', 'motemen', 'suzak', 'r_kurain', 'nyanto_vi'] num=0 staffs.each do |e| if e[0,1]=='n' puts e num=num+1 end end puts num moomin:ProgrammingRuby…