Парадигмы программирования. Правило трех стаканов
— Да чё тут думать?! Взял бы еще одну пустую посуду! — нашелся бы ты.
Молодец! Именно так и поступают программисты: для обмена значениями двух переменных создают еще одну, — временную — для «перелива». Сразу же после «подлога» ее можно удалить и высвободить сверхбыструю, регистровую память.
Вот как это делается в Си-шных языках:
int a=1; //первый стакан
int b=2; //второй стакан
int temp; //третий, пустой стакан
Вариант. 1:
temp =a; // отправляем содержимое первого стакана в третий
a=b; // отправляем содержимое второго стакана в первый
b= temp; // и наконец, содержимое третьего стакана попадает во второй
Или же вот так:
Вариант. 2:
a = a + b - (b = a); //Еще один вариант обмена, но уже без третьего стакана. Результат, правда, не так очевиден, да и все ли компиляторы дадут одинаковый результат?//
Итого — минимум три инструкции. Во втором случае, хотя и записано все в одну строку, операторы сложения, вычитания и присваивания будут выполняться последовательно слева-направо и по приоритетам.
А вот что умеет Assembler:
хchg ax, bx// обмен содержимого двух регистров, и всего за одну инструкцию!
Впечатляет? Но на самом деле, хотя в отладчике промежуточных инструкций и не видно, но они (микрокоманды) все же есть, и зашиты они в АЛУ центрального процессора. Вот такие дела — без третьего стакана никак не обойтись!
Свидетельство о публикации №219082001440
А всё очень даже просто:
надо сообразить на троих,
и всё пойдёт, как по формуле:
A+B+C = истина.
Князь Серебряный, я улыбаюсь.
Всего доброго.
Альбина Кирсанова Закусова 06.03.2022 10:28 Заявить о нарушении