- いままでは対話的に入力をおこなってきました。
- これからはファイルに対する入出力もおこなうことにします。
- 用語(これは MuPAD そのものではなく OS -- ex. Windows XP -- について)
- ファイル・フォルダ・ディレクトリ
- ファイルシステム
初期設定
MuPAD 固有のファイル(たぶん C:\Program Files\SciFace\MuPAD Light 2.5.3\
以下に保存されている)
と私達が学習用に作成・読み書きするファイルが混ざると、ややこしいことになるので
特定の専用フォルダ/ディレクトリに対して入出力をおこなうよう設定します。
具体的には以下の2つの変数を設定し、C:\mupad\ に対してファイルの読み出しと書き込みをおこなうようにします。
- READPATH <- ファイル読み出しのデフォルト(標準)パス
- WRITEPATH <- ファイル書き込みのデフォルト(標準)パス
- C:\mupad\ を作成します。GUI/CUI の好きな方法をとりましょう。
- [GUI] マイコンピュータ -> ハードディスク -> Cドライブ -> 右クリック -> 新規作成 ->
フォルダ -> 名前を "mupad"に変更
- [CUI] コマンドプロンプト
-> c: -> cd \ -> mkdir mupad
- ファイルの拡張子が表示されるように Windows の設定を変更します。
- C:\mupad\ のメニューバーから
ツール -> フォルダオプション -> 表示
と進み、「登録されているファイルの拡張子は表示しない」のチェックを外します。
- MuPAD Light を起動します。
- 以下のコマンドを入力します。
reset();
WRITEPATH := "C:\\mupad\\";
READPATH := "C:\\mupad\\", READPATH;
(上記がエラーになった場合のみ
READPATH := "C:\\mupad\\";
)
write(Text, "myinit.mu", WRITEPATH, READPATH);
- C:\mupad\myinit.mu というファイルが作られていることを確認します。
- テキストエディタ(ex. メモ帳)でファイル myinit.mu を開いて中身を確認します。
- MuPAD Light のメニューから
View -> Options -> Kernel
を選択します。
- User-defined start-up file に C:\mupad\myinit.mu を設定します。
- MuPAD Light を終了後、再起動します。
WRITEPATH; READPATH
の値をチェックします。
"C:\\mupad\\"
"C:\\mupad\\"
もしくは
"C:\\mupad\\"
"C:\\mupad\\",
"C:\Program Files\SciFace\MuPAD Light 2.5.3\\packages\\scilab\\modules\\MSDOS\\"
- これでファイルの読み書きをフォルダ/ディレクトリ C:\mupad\
に対しておこなうように設定できました。
ファイルの読み書き
- 例1: ファイルへの書き込み・読み出し read, write
a := 2/3; b := diff(sin(cos(x)), x)
write(Text, "ab.mu", a, b)
reset(); a; b
read("ab.mu")
a; b
- 注: write("ファイル名",...) と write(Text, "ファイル名", ...)
の違い ... 人間が直接ファイルの中身を読み書きする場合は Text オプションをつけておくのが便利です。
- 注: ファイル名について
- 文字列のエスケープ文字("\")
"\"
"\\"
- 相対パス / 絶対パス(C:\... や \...)の違いに注意
しましょう。
write("hogehoge.mu")
write("\\hogehoge.mu")
- 拡張子 (.mu) ... なくても可だが、つけておくのが便利です。
- Windows「新規作成」メニューに追加…レジストリ操作などが必要な
ので本講義では触れません。
- 日本語ファイル名 ... 使えないこともなさそうですが、トラブルを未然に防ぐためにはやめておきましょう。
write("数学と情報処理")
read("数学と情報処理")
- 例2: 変数の上書き
a := 1; b := 2
a; b
read("ab.mu")
a; b
- 例3: 直接編集したファイルの読み込み
ab.muをテキストエディタで開く
f := x^3 + x + exp(x);
g := diff(f, x);
h := int(f,x);
read("ab.mu")
f;g;h
- 例4: 全保存
write(Text, "save.mu")
reset()
read("save.mu")
うまくいかないときもあるようです <- 詳細不明
- 例5: 入出力の保存 protocol
protocol("logfile.txt")
<- ログファイルを開く
1+1;
a/b;
solve(x^2 = 2);
protocol()
<- ログファイルを閉じる
テキストエディタでlogfile.txtを開いてみる。
- 例6: 入力のみの保存 protocol
protocol("logfile.txt", InputOnly)
1+1;
a/b;
solve(x^2 = 2);
protocol()
テキストエディタでlogfile.txtを開いてみる。
出力形式の制御
- Pretty Print
- 行あたりの出力幅
TEXTWIDTH
expand((x+1)^5)
TEXTWIDTH := 10
expand((x+1)^5)
reset()
- フォーマット出力 (詳細は略)
- expr2text
expr2text(x^2+x+1)
- print
. (ピリオド) … 文字列の結合
print("PI = " . expr2text(float(PI)))
print(Unquoted, "PI = " . expr2text(float(PI)))
- fprint
DIGITS := 1000; fprint(Unquoted, Text, "p.txt", "PI = " . expr2text(float(PI)))