одновременное присвоение переменной в паскале - PullRequest
1 голос
/ 01 июля 2010

Я хочу сделать одновременное назначение переменных в Паскале.

Насколько я знаю, это невозможно. Погуглив по этому вопросу, я вижу, что многие языки программирования реализуют это, но я не могу найти, как это сделать в Pascal.

Например, в Python я могу сделать это:

(x, y) = (y, x)

В Паскале мне нужна дополнительная переменная для хранения значения x перед его удалением, что-то вроде этого:

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

Итак, есть ли в Паскале одновременное присваивание, или я должен переписать код в нечто вроде пузыря выше?

Я не просто должен делать свопы; иногда мне приходится делать такие вещи:

(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;

Ответы [ 2 ]

2 голосов
/ 01 июля 2010

PASCAL не содержит одновременного присвоения переменной.

Также не содержит предопределенной процедуры SWAP (X, Y).

Ты должен сделать это сам.

Возможно, вы захотите купить копию [Jensen & Wirth] . Это все еще лучшее справочное руководство, доступное на языке. Если вы используете одну из систем Borland PASCAL, используйте прилагаемое руководство: Borland внесла некоторые несовместимые изменения, которые, тем не менее, значительно облегчили использование языка.

0 голосов
/ 01 июля 2010

Я совсем не знаком с Паскалем, но я не могу найти какую-либо специальную функцию swap, которая делает то, что вы хотите.

В любом случае, то, что вы делаете, совершенно разумно;любая стандартная реализация swap требует, чтобы временная переменная содержала одно из заменяемых значений.Единственное, что я хотел бы изменить в коде, который вы написали выше, это переименовать переменную в temp, чтобы было ясно, что переменная существует только временно для целей обмена:

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

РЕДАКТИРОВАТЬ: Там также нет ничего плохого в том, что вы делаете при изменении x и y.Если вам нужно сохранить старое значение как часть ваших расчетов, то вполне можно назначить старое значение переменной и затем использовать его.

...