Вопрос Объясните этот код, я знаю что он сортирует две переменные, но не понимаю как. И так важна эта тема

Регистрация
26 Ноя 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
Program sort;
var x,y,с: real;
begin
readln(x,y);
if x>y
then begin c := x;
x := y;
y := c
end;
writeln(x, y);
end.
 
Програма сорт переменные x,y,c начать вводтекста в переменные x, y (по очереди сперва в x потом в y) если x больше y тогда c равно x x равно y н hfdyj с конец; // конец второго begin написать x, y конец.
 
Программист должен понимать как работает (что делает) программа по её исходному коду. А тема сортировки тут даже не затронута: "сортировать" два числа - это тривиальная задача.
 
Тут 2 переменные меняются значениями с использованием промежуточной переменной. Если, например, изначально были х=3 и у =2, а нам нужно, чтобы было х=2 и у=3, то мы не можем просто написать х=у и у=х, ибо написав х=у мы получим х=у=2 а значение 3 потеряется. Поэтому мы сохраняем эту тройку в переменной с.
 
Попробуй одной рукой поменять местами два предмета на столе. Сначала один предмет временно кладешь в другое место на столе. Затем... это и есть этот алгоритм :)
 
вот кстати да. тут, при кажущейся простоте, есть один тонкий методический момент, связанный с пониманием термина "переменная": Program sort; обявляется имя программы (sort) var x,y,с: real; заводятся три переменных для хранения вещественнозначных значений (что такое переменная? это некая выделенная и поименованная область памяти, в которой может храниться некое значение, в данном случае число) две переменных (x,y) нужны для хранения данных, треться (с) - вспомогательная begin начинается собственно алгоритм readln(x,y); запрашиваем у пользователя пару чисел и записываем их в переменные x и y if x>y если число, хранящееся в переменной x, больше числа, хранящегося в переменной y, нужно обменять содержимое областей памяти, выделенных для x и y then begin c := x; x := y; y := c end; простой пример: пусть у тебя в левой руке (x) - дыня, а в правой (y) - арбуз. и надо поменять содержимое рук местами. как это сделать? правильно: кладем, скажем, дыню на стол (c:=x), перекладываем арбуз в левую руку (x:=y), а освободившейся рукой берём со стола дыню (y:=c). вуаля. writeln(x, y); выводим на экран новое содержимое переменных x и y end. окончание алгоритма.
 
Назад
Сверху