プログラミング基礎
II
第二回
(2010年10月4日)
Ruby の数と演算
http://www.sw.it.aoyama.ac.jp/2010/PB2/lecture2.html
Martin J. Dürst
© 2006-10 Martin
J. Dürst 青山学院大学
目次
- Moodle への登録確認
- 前回のまとめ・演習・宿題
- (演算) 式の構成、評価
- 優先度、結合規則
- 四則演算、べき乗演算、剰余演算
- Ruby の数値の種類: 整数、浮動小数点数
- 簡単なプログラムの組み方
- 演習
演習の場所
Ruby は次の部屋にインストールされている:
演習、宿題に使ってください
Moodle の登録の確認
- 履修登録と Moodle へ授業登録が授業の前提条件
- Moodle の授業登録がまだの学生は要連絡
- 残念ながら履修登録の追加が不可能
前回のまとめ
- プログラムでは様々なデータを自由自在に操れる
- Ruby は入り口が広くて、奥が深い
- Ruby が世界中に幅広く使用
- Ruby をちょっとだけ試すには Interactive Ruby
(
irb
) が便利
- Ruby のプログラムは
ruby program.rb
で
Command Prompt with Ruby から実行
演習 1: Ruby のインストール
(個人パソコン限定)
演習 2: データの収集
- 有名人など (最低五名) のデータ
(名前、年齢、生年月日、身長、体重) を収集
- 自分の身の回り、専門分野などにあるデータを調査
数式の構成
例: 3 + 5
+
: 演算子 (operator)
3
, 5
: 被演算子 (operand)
Ruby は数式をそのまま評価 (evaluate)
演算子の種類: 四則演算
+
: 足し算 (addition)
-
: 引き算 (subtraction)
*
: 掛け算 (multiplication)
/
: 割り算 (division)
評価の順番: 優先度
- 二つ以上の演算子のある式では評価の順番は?
- 評価は優先度 (priority) の高い演算子から
- 例:
3 + 4 * 5
掛け算は足し算より優先度が高いので、結果は:
- 四則演算について、Ruby は数学と同様
評価の順番: 結合
- 演算子の優先度が同じ場合、評価の順番は?
- 例:
10 - 5 - 3
- 順番は演算子の結合規則 (associativity)
によって決まる
- 左の演算子を先に評価する場合は左結合 (left
associative)
- 右の演算子を先に評価する場合は右結合 (right
associative)
- 引き算は左結合か、右結合か? 他の四則演算は?
演算の順番の変更
(
と )
で囲まれている演算が先に計算
例: 7 * (5 + 9 / 3) - 10
- 式が分かりにくいと思ったら、余分に括弧を使ってもよい
例: (3 * 12) - 20
- スペースで優先度を分かりやすくすることもある
例: 3*12 - 20
注意: 3 * 12-20
でも計算結果が同じ
べき乗演算
- べき乗演算 (冪乗演算; exponentiation) は Ruby で
**
と表現
- べき乗の優先度は?
5 + 3 ** 2
(5+32)
7 * 2 ** 3
(7×23)
- べき乗は左結合か、右結合か?
2 ** 2 ** 2 (222)
剰余演算
- Ruby の割り算の特徴:
20 / 3
⇒ 6
- 剰余演算 (modulo) で残りを計算:
20 % 3
⇒ 2
- 剰余演算の優先度は?
- 剰余演算は左結合か、右結合か?
- 剰余演算はプログラミングで幅広く応用:
偶数・奇数判断から暗号まで
Ruby の数値の種類 (基礎編)
Ruby は主に二つの数値の種類を区別:
- 整数 (integer):
4
, 0
, 2223214
,
-33
,...
- 浮動小数点数 (floating point number):
3.333
,
10.0
, 0.0
, -37.83562
,
3.14159265358979
- 整数だけの割り算の結果は整数 (剰余は別)
- 浮動小数点数の割り算の結果はできるだけ正確
(剰余無し)
- 実数を使った剰余演算は?
プログラムの組み方
演習 1: プリント中の質問の確認
3 + 4 * 5
の結果:
- 引き算は左結合か、右結合か? 他の四則演算は?
- べき乗の優先度は?
- べき乗は左結合か、右結合か?
- 剰余演算の優先度は?
- 剰余演算は左結合か、右結合か?
- 実数を使った剰余演算は?
演習 2: 米粒の計算
- インドに由来する話によるとチェスの発明者は王さまからお願いした米の量は、
ひとマス目に1粒、次のマス目にその倍、次のマス目に更に倍、...
(合計は 264-1)
- 粒の総数 (number of grains)、総重量 (kg で、一千粒が 22g;
total weight)、
俵の総数 (一俵が 60kg; number of
bales)、日本の人口を養える年数を計算
- 上記の計算と分かりやすい出力をするプログラムを作成
- プログラムをMoodle にアップロード (10月8日 (金曜日)
22:00 必着、ファイル名は
grains.rb
)
演習 3:
- この授業で習った演算子などを使う計算問題を作成
- この授業で習ってない演算子などが必要でしたらその旨を指摘
- 複数の学生から同様又は類似の問題の場合、減点対象
calculation.txt
のファイル名でMoodle
にアップロード (10月8日 (金曜日) 22:00 必着
今日のまとめ
- (演算) 式の構成、評価、優先度、結合規則
- 四則演算、べき乗演算、剰余演算
- Ruby の数値の種類: 整数、浮動小数点数
- 簡単なプログラムの組み方
次回のための準備
注意: 来週の月曜日 (10月11日)
は体育の日だが授業実施日
- (Moodle の授業登録の完了)
- (自分のパソコンへ Ruby をインストール)
- 演習 1 の完了
- 演習 2 (
grains.rb
) をMoodle にアップロード
(10月8日 (金曜日) 22:00 必着)
- 演習 3 (
calculation.txt
) をMoodle にアップロード
(10月8日 (金曜日) 22:00 必着)