プログラム言語として見たLaTeXについて書いていきます。
長くなるので、今回は計算だけに内容を絞ります。
長くなるので、今回は計算だけに内容を絞ります。
1、数値を計算する
TeXとC言語の計算の書き方を比べていきます。
緑がC言語流、青字がTeX流です。
緑がC言語流、青字がTeX流です。
vC = f(vA, vB)
を考える。
float fa, fb, fc;
fa = 10.f, fb = 3.f;
fc = fa / fb;
fcには3.333333が入る(有効桁数が6のとき)。
vCには3333が入っているので、これを3333/1000とみなす。
上で見た通り、(後発のスタイルファイルがあるかもしれませんが、それを除くとすれば)TeXにはいくつかのものがありません。
- 非負整数や浮動小数点小数が無い。
- 剰余算が無い。
- returnを持たないため、関数は値を返さない。
2、スコープの違い
また、TeXにはローカル変数やスコープがないため、下のような違いがあります。
int out_of_scope;
{
}
printf("%d", out_of_scope); //書ける
printf("%d", value); //コンパイルが通らない
//out_of_scopeにはアクセスできるが、valueにはアクセスできない。
//{}を過ぎると変数は破棄される。
{
}
TeX流も便利そうだと思うかもしれませんが、これでは困ることが出てきます。
int itl, limit;
itl = 0;
limit = 300;
while (itl < limit) {
}
//C言語であれば、こんなコードでプログラムが続行不能になることはありません。
//変数valueが定義されますが、ループを一回繰り返すたびにvalueが破棄されているためです。
関数の中で\newcountを使ってしまうと、ループが原因でハングすることがあります。
そのため、グローバル変数にローカル変数らしい振る舞いをさせることで対応します。
ざっくりと以上です。それでは、また。
そのため、グローバル変数にローカル変数らしい振る舞いをさせることで対応します。
0 件のコメント:
コメントを投稿