Одновременное присвоение переменной в паскале

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

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

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

(x, y) = (y, x)

В Паскале мне нужна дополнительная переменная для хранения значения 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;

2 ответа

Решение

PASCAL не содержит одновременного назначения переменных.

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

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

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

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

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

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

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

Другие вопросы по тегам