連載
» 2014年04月25日 10時45分 UPDATE

無償ソフトで技術計算しよう【プログラミング基礎編】(1):プログラミングでもっと自在にFreeMatを操ろう (1/2)

無償の工学計算ソフト「FreeMat」について解説するシリーズ、プログラミング基礎編では、各種コマンドやサブルーチンに相当する「関数mファイル」について説明する。

[伊藤孝宏,MONOist]

 無償の工学計算ソフト「FreeMat」はコマンドウィンドウに入力し、電卓のように使ってもかなりのことができますが、プログラムを作成・動作させて本来の能力を発揮します。今回から、プログラミング編として9回にわたって、プログラムの作成方法について説明します。最初は基礎編として、各種コマンドやサブルーチンに相当する「関数mファイル」について3回にわたって説明します。次いで、処理編として、ファイルの入出力や標準的なアルゴリズムについて3回にわたって説明します。最後に応用編として3回にわたって、MATLABにあってFreeMatにはない関数の作成と、プログラミングコンテストの問題を解いてみます。

筆者注:FreeMatはコマンド入力後にエンターキーを押すとコマンドを実行します。本連載ではエンターキーの記述を省略しますが、操作の際にはコマンド入力後にエンターキーが必要です。



FreeMatでエンジニアリング計算:
入門編
グラフィックス編

プログラミングの方法

 FreeMatのプログラムは、ファイル拡張子がmのテキスト形式なので、エディタでも作成できますが、FreeMat内蔵のエディタを用いるのが便利です。エディタの起動方法と作成したプログラムの実行方法を説明します。

 エディタウィンドウを表示させるには、図1に示すコマンドウィンドウのツールバー左から1〜3番のアイコンをクリックします。

yk_FreeMat_g04_01.jpg 図1 エディタウィンドウ関連のアイコン(赤枠):左から新規作成、既存のプログラムファイルを開く、は前回終了時に開いていたプログラムファイルを開く
yk_FreeMat_g04_01_2.jpg 図1-2 エディタの新規作成画面

 左端のアイコンは新規作成でエディタを開きます(図1-2)。これは、メニューの「File→NewFile」あるいは「Ctrl+N」でも同じです。左から2番目のアイコンは既存のプログラムファイルを開いてエディタを起動します。これは、メニューのFile→OpenFileあるいはCtrl+Oでも同じです。左から3番目のアイコンは前回終了時に開いていたプログラムファイルを開いてエディタを起動します。やりかけの作業を継続する際に便利です。メニューのTools→EditorあるいはCtrl+Eでも同じです。

 作成したプログラム(以降、mファイルを呼びます)を実行するには、コマンドウィンドウで拡張子(.m)を除いたファイル名を入力してエンターキーを押します。この際、カレントディレクトリをmファイルの保存したフォルダにしておく必要があります。エディタから実行させる場合は、左から2番目のアイコンをクリック、メニューのFile→Open File、Ctrl+Oのいずれかでex01.mファイルを開き、エディタの左から10番目の右向き三角のアイコンをクリックするか、メニューのDebug→Execute Current Bufferとするか、F5キーを押すのいずれでも実行してくれます。

入出力コマンド

 キーボードから数値を入力させるには、variable=input('comment');とします。commentが表示された後に、入力待ちの状態となるので、数値を入力すると、variableに数値が格納されます。例えば、変数xに数値を入力させるには、x=input('x= ');とします。プログラムを動作させると、コマンドウィンドウには、x=と表示され、入力待ちとなります。この時点でプログラムは一時停止していて、キーボードからの数値入力とエンターキーで、変数xに数値が格納され、次の行からプログラムが動作します。

 文字列を入力させるには、variable=input('comment','s')とします。例えば、変数yに文字列を入力させるには、y= input('word? ','s');とします。コマンドウィンドウには、「word? 」と表示され、入力待ちとなります。キーボードから文字列入力とエンターキーで、変数yに文字列が格納されます。

 FreeMatのコマンドはコマンドウィンドウに入力した場合でも、エディタに記載してプログラムとして動作させた場合でも同じように動作します。試しに使ってみる場合などは、コマンドウィンドウに入力してみることをお勧めします。本連載では短いコマンドはコマンドウィンドウに入力した場合で説明しています。

 ディスプレイに表示させるには、コマンドの後ろに何もつけない、あるいは複数のコマンドをつないでいる場合はカンマにすると、その変数あるいは処理結果がディスプレイに表示されます。ただし、ans=という形で表示されます。これをコメント付きや複数の結果を表示させたい場合は、dispコマンドを用います。disp(a,b,c)と入力します。

yk_FreeMat_g04_cap01.jpg

 書式を指定して表示させるにはprintfコマンドを用います。printf('format',a,b,c)とすると、formatで指定したコメントや出力書式に、変数a,b,cが出力されます。printfだけでは改行しないので、formatの最後に改行コマンド\nを入れる必要があります。代表的な出力書式を上げると、「%d」は「整数表記」、「%f」は「小数点以下6桁の小数表記」、「%e」は「小数点以下6桁の指数表記」です。小数点以下の桁数を指定する場合は、nを小数点以下の桁数として、「%.nf」あるいは「%.ne」とします。文字列を表示するには「%s」とします。

 例えば、a=1;printf('decimal %d floating %.2f exponential %.2e \n',a,a,a)とすると、decimal 1 floating 1.00 exponential 1.00e+000と表示されます。

コメント文

 プログラム中にコメント文を入れるには、コメント文の先頭に「%」を付けます。%はプログラム内の変数や動作を説明する文をコメント文とする使い方の他に、特定の行を一時的に行わせないようにすることにも使われます(コメントアウト)。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.