next up previous contents index
: 付録: パス名 : 付録: エラー : Windows のエラー   目次   索引

Asir のエラー と Q & A

疑問 21.2        ; RETURN を入力しても Asir のプロンプトが戻って来ない. 返事がない. なぜか?

答え 21.2        " 記号や ' 記号は組にして使用する. たとえば print("Hello); としていて, Hello のあとの " を忘れている可能性がある. そのときは " ; RETURN でプロンプトが戻るはずである.

{ } も組にして使用する. これが閉じていないとやはりプロンプトがもどってこないことがある. そのときは } RETURN でプロンプトが戻るはずである. または, CTRL + C を入力して, プロンプトにもどしてもよい.

疑問 21.3        次のプログラムを実行したらいつまでも終りません. ; RETURN を入力してもプロンプトがでません.

S=0$
for (I=0; I<100; I+1) {
  S = S+I;
}
print(S)$

答え 21.3        I の値が更新されない無限ループにおちいっていて プログラムの実行中です. CTRL + C でプログラムを中断して下さい.

for (I=0; I<100; I+1) は誤りで, for (I=0; I<100; I=I+1) for (I=0; I<100; I++) に訂正して下さい.

さて、Asir の言語処理系からのエラーメッセージをみよう.

疑問 21.4       
[346] fctr(x^2-@i*y^2);
fctrp : invalid argument
return to toplevel

答え 21.4        取り扱えない引数があたえられている (invalid argument). 有理数を係数とする多項式しか因数分解できない. $ x^2 -i y^2 $ は複素数を係数としている.

疑問 21.5        次のプログラムの動作が変です.

def foo(M) {
  G1 = x+y;
  G2 = x-y;
  G = GM;
  return(G^3);
}

答え 21.5        このプログラムはもしかして,

def foo(M) {
  if (M == 1) {G = x+y;}
  if (M == 2) {G = x-y;}
  return(G^3);
}

というつもりで書いたのでないでしょうか? GM は 引数 M の値に応じて, G1, G2 と解釈されるわけではなくて, GM という新しい局所変数と解釈され, 初期値は 0 となります.

疑問 21.6        asirgui の画面で, マウスを click してそこにある入力を修正しようとしても できません.

答え 21.6        asirgui は Windows 標準の ユーザインタフェースにしたがっていない. むしろ, unix のターミナルに似せてつくってある. たとえば, Windows 版 asirgui は, 通常の Windows における慣習とは異なる 形のコピーペースト機能を提供している. Window 上に表示されている文字列 に対しマウス左ボタンを押しながらドラッグすると文字列が選択される. ボタンを離すと反転表示が元に戻るが, その文字列はコピーバッファに 取り込まれている. マウス右ボタンを押すと, コピーバッファ内の文字列が 現在のカーソル位置に挿入される. 既に表示された部分は readonly であり, その部分を改変できないことに注意して欲しい.



Nobuki Takayama 平成15年9月12日