ユニット1

学修項目

ファイルの作成と実行

要約

  1. エディタで拡張子が.rbの名前でファイルを作成する。
  2. ターミナルでchmod +x 作成プログラム する(1回だけ)
  3. ./作成プログラム [Enter] として実行。

練習問題

レベルA

~/Ruby ディレクトリに以下の Rubyプログラムを作成して実行せよ。

  1. 以下の内容をu1a-hello.rbで作成し実行。
    #!/usr/koeki/bin/ruby
    
    print "Hello, World!\n"
    
  2. 以下の内容をu1a-japanese.rbで作成し実行。
    #!/usr/koeki/bin/ruby
    
    puts "こんにちは!"
    
  3. u1a-hello.rbu1a-japanese.rb はそれぞれどのような処理をするプログラムか。また
  4. 以下の内容をu1a-number.rbで作成し実行。
    #!/usr/koeki/bin/ruby
    
    puts 5*4
    

レベルB

~/Ruby ディレクトリに以下の Rubyプログラムを作成して実行した上で考察せよ。

  1. u1b-error1.rbの名前でファイルを開き以下の内容を 正確にコピーペーストして保存する。その上で実行するとエラーが 発生する。エラーメッセージを読み取りプログラムのどこを直せば よいか説明せよ。
    #!/usr/koeki/bin/luby
    
    prrint "Hello, World!\n"
    
  2. 同じくu1b-error2.rbの名前で以下の内容を コピーペーストして正確に打ち込んで保存し実行し、 エラーメッセージの意味と修正箇所を説明せよ。
    #!/usr/koeki/bin/ruby
    
    print "こんにちは!"
    

値(数値と文字列と真偽値)

要約

  1. プログラムで使う値には数値と文字列がある
  2. 数値は計算できるものでプログラム中にそのまま書ける:
    例: 5 123 3.5 -2
  3. 文字列は計算できない(しない)もので、プログラム中では ダブルクォートかクォートでくくって記述する:
    例: "Hello" "123" '太郎' '1+1'
  4. 条件が成り立つかどうかを表すのが真偽値 で、truefalse の2つの値がある。
  5. 「該当するものがない」ことを表すのが nil で、これも真偽値として「偽」の働きをする

練習問題

レベルA

以下に示す各値を、「数値」「文字列」「真偽値」「どれでもない」 のいずれかに分類せよ。

  1. "35"
  2. 35
  3. "42.195"
  4. false
  5. False
  6. true

レベルB

比較を表す以下の式が真ならばtrue、 偽ならばfalseを答えよ。

  1. 5>3
  2. 5<3
  3. 3<3
  4. 3≧3 (実際には≧という記号はRubyにはない)

レベルC

等式や不等式を5つ挙げ、その結果が truefalseいずれになるか示せ。

変数(命名規則・代入方法・参照方法)

要約

  1. ローカル変数(通常使う変数)は 1文字目が英小文字またはアンダースコアで始まって、 2文字目以降はそれらに数字がまざってもよい
    変数として使える例: a X _ab a_bC test
    変数として使えない例: 1x a>b
    ただし、Rubyとして特別な意味を持つ単語(putsprint, ifなど)は変数名として使えない。
  2. 1文字目が大文字の変数は定数となり一度代入したらあとから 値を変えられない
  3. 値が元々定まっている true false nil __FILE__ __LINE__ などは疑似変数という
  4. 変数に値を代入するときの書式: 変数名=
    例: x=5 sakata="酒田" ROOT2=1.41421356
  5. 変数に入っている値を参照するときは変数名をそのまま書く:
    a=5
    b=a+3		# aの中身の5が取り出されてbに5+3の結果の8が代入される
    

練習問題

レベルA

  1. 以下の一覧にある単語を「変数として使えないもの」 「ローカル変数」「定数」「疑似変数」に分類せよ。
    foo  ff7  FF10  _3x  3_14  pI  __F__  false  true0

レベルB

入出力(gets, puts, print, printf)

要約

  1. 1行入力するのは gets メソッドである
  2. gets では末尾に改行文字がついた入力文字列が得られる
  3. 改行文字を取り除くのはchompメソッド
  4. putsは値を改行とともに出力する
  5. printは値を出力する
  6. printfは値を書式付きで出力:
    %d→10進数、%x→16進数、%b→2進数、%f→浮動小数点数、%s→文字列
    %桁数[dxbfs] 桁数を確保、桁数がマイナスなら左寄せ、
    %桁数.精度f 例: %6.3f 全体5桁、小数点以下3桁の小数で表示

練習問題

レベルA

各問で指定したファイル名でプログラムを作成せよ。

  1. (ファイル名: u1a-gets1.rb) 変数x に1行入力した値を代入し、その値をそのままputs で出力する
  2. (ファイル名: u1a-gets2.rb) 変数x に1行入力した値を整数に変換したものを代入し、その値をそのままputs で出力する
  3. (ファイル名: u1a-gets3.rb) 変数x に1行入力した浮動小数点変換した値を代入し、その値を
  4. (ファイル名: u1a-gets.rb)

レベルB

レベルC

型変換(to_i, to_f, to_s)

要約

練習問題

レベルA

  1. getsで読み取った値を整数として変数xにする文を書け
  2. getsで読み取った値を浮動小数点数ととして変数yにする文を書け
  3. 変数 y に入っている整数を変数 n に入っている整数で割った結果を浮動小数点で求める式を書け

レベルB

  1. 変数 y に入っている整数を変数 n に入っている整数で割った結果を小数点以下2桁で出力する文を printfを用いて書け

演算(算術演算、論理演算)

要約

練習問題

レベルA

  1. 「変数xと変数yの値が等しいか」を 表す式を書け
  2. 「変数xが変数yの値より大きいか」を 表す式を書け
  3. 「変数xが変数yの値以上か」を 表す式を書け
  4. 「変数xが変数yの値と異なるか」を 表す式を書け

レベルB

  1. 「変数xが2に等しく、かつ変数yの値が正か」を 表す式を書け
  2. 「変数aが"no"等しいか、または変数yの値が負か」を 表す式を書け
  3. 「変数x(数値)が5以上10未満か」を表す式を書け
  4. 「整数値を持つ変数xの値が3で割り切れるか」を 表す式を書け
  5. 「整数値を持つ変数xの値が偶数か」を 表す式を書け

レベルC

制御構造(if, while, case)

要約

練習問題

レベルA

  1. 変数xの値が3より大きかったらputs メソッドでyesと出力する文を書け

  2. 変数sの値が "y" と等しかったらputs メソッドでyesと出力する文を書け

レベルB

レベルC