Одновременное присвоение переменной в паскале
Я хочу сделать одновременное назначение переменных в Паскале.
Насколько я знаю, это невозможно. Погуглив по этому вопросу, я вижу, что многие языки программирования реализуют это, но я не могу найти, как это сделать в 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
, Если вам нужно сохранить старое значение как часть ваших вычислений, вполне нормально назначить старое значение переменной и затем использовать его.