1

Pascalで同時変数代入をしたいです。

私の知る限り、それは不可能です。この問題についてグーグルで調べてみると、多くのプログラミング言語がそれを実装していることがわかりますが、Pascal でそれを行う方法が見つかりません。

たとえば、Python では次のようにできます。

(x, y) = (y, x)

Pascal では、x を削除する前にその値を保持する追加の変数が必要です。次のようになります。

bubble := x;
x := y;
y := bubble;

では、Pascal には同時代入がありますか、それとも上記のバブルのようなものにコードを書き直す必要がありますか?

スワップを行うだけではありません。時々私はこのようなことをしなければなりません:

(x,y) = (x+1,y+x)

以下のようにしてもよろしいでしょうか?

old_x := x;
old_y := y;
x := x + 1; // maybe x := old_x + 1;
y := old_y + old_x;
4

2 に答える 2

2

PASCAL には同時変数割り当ては含まれていません。

また、SWAP(X,Y) 事前定義プロシージャーも含まれていません。

あなたはそれを自分でしなければなりません。

[Jensen & Wirth]のコピーを購入することを検討してください。これは、言語で利用できる最高のリファレンス マニュアルです。Borland PASCAL システムのいずれかを使用している場合は、付属のマニュアルを使用してください。Borland は互換性のない変更をいくつか加えましたが、それでも言語が大幅に使いやすくなりました。

于 2010-07-01T02:46:41.177 に答える
0

私は Pascal にまったく詳しくありませんがswap、あなたが望むことを行う特別な関数が見つかりません。

いずれにせよ、あなたがしていることは完全に合理的です。の標準的な実装でswapは、スワップされる値の 1 つを保持する一時変数が必要です。上記のコードで変更する唯一のことは、変数の名前を に変更して、変数tempがスワップの目的で一時的にのみ存在することを明確にすることです。

temp := x;
x := y;
y := temp;

編集:xとを変更するときに行っていることにも問題はありませんy。計算の一部として古い値を保持する必要がある場合は、古い値を変数に割り当ててから使用しても問題ありません。

于 2010-07-01T02:00:02.870 に答える