組み込みC言語プログラマのためのmruby入門(中編) ―― mrubyをお手軽に体験する!

邑中 雅樹

tag: 組み込み

技術解説 2012年11月 7日

●数値演算

 続けて,組み込みシステムなら避けて通れない数値演算を行ってみましょう.

> 1+1
=> 2
> 1 + 2 * 2
=> 5
> (1 + 2) * 2
=> 6

 四則演算は,一般的な演算子の優先順位で計算されます.かっこも使えます.

> 3 / 4
=> 0.75
> Math.cos(1.0)
=> 0.54030230586814

 整数同士の割り算で余りが出る場合は,浮動小数点に変換されます.浮動小数点の精度は,mrubyをコンパイルした処理系のfloatまたはdoubleに準じます.floatとdoubleのどちらにするかは,mrubyをコンパイルする際にマクロで選択できます.

 また,算術関数は,mrubyのコンパイル時にマクロで無効にできます.その際には,算術関数の呼び出しはエラーになります.

> Math.cos(1.0)
NameError: uninitialized constant Math

 ゼロ除算では,inf(無限大)値が返ります.

> 3 / 0
=> inf
> 3.0 / 0.0
=> inf

 なお,ISO標準のRubyでは,ゼロ除算時にはZeroDivisionErrorという例外が返ります.この点でmrubyの挙動は独特ですので,ほかのRuby実装で動作しているアプリケーションを移植する場合には注意してください.

 

●行の区切り

 C言語と異なり,行末にセミコロン(;)を入れる必要はありません.ただし,1行に複数の式を入れる場合には,セミコロンが必要になります.

> 1 + 1 print "hello mruby!"
line 1: syntax error, unexpected tIDENTIFIER, expecting $end
> 1 + 1; print "hello mruby!"
hello mruby! => nil

 上記の最初の入力行では,セミコロンが入っていないためエラーとなりました.その次の入力行では,文の間にセミコロンを入れたため,実行されました.

 一般に,Rubyには1行に詰め込むと構文解釈があいまいになるケースがいくつかあります注1. mrubyの活用場面では,セミコロンを使って1行に詰め込む必要があることはまれなはずです.セミコロンが不要なコーディング・スタイルを心がけることをお薦めします.

注1:ただし,本稿執筆時点におけるmrubyは正規表現に対応していないので,リスクは低い.


●変数と値の型

 ほかの多くの言語と同じように,Rubyにも変数があります.C言語と異なるのは,値に型があるのに対し,変数には型がないことです.よって,同じ変数にさまざまな値を入れることができます注2.以下のように,変数aに数値や文字列,配列などを代入することができます.

> a = 1
=> 1
> a = "hoge"
=> "hoge"
> a = 3.3
=> 3.3
> a = [ 1, 2, 3 ]
=> [1, 2, 3]     #配列

注2:実は,Rubyの変数には,メソッドなども含めてRubyに存在するあらゆるモノを入れることができる.そこまで説明すると混乱の元なので,ここでは割愛する.

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日