|
|||
begin. ifa > b then beginbegin m: =a; a: =b; b: =m; writeln(a, b); end; begin writeln ('Введите 2 числа: '); readln(c, d); obmen(c, d); writeln(c, ' ', d); end. После запуска программы видно, что поменялись местами формальные параметры (в процедуре), а фактические (которые используются в лавной программе) – не поменялись. Рассмотрим рисунок, на котором приведена часть оперативной памяти: 1) при вызове процедуры obmen с двумя параметрами 5 и 7, в переменные a и b помещаются тоже числа 5 и 7 соответственно: 2) далее в процедуре осуществляется перестановка значений ячеек памяти a и b: 3) но в переменных c и d данные не поменялись, т. к. они находятся в других ячейках памяти. Для того чтобы переменные c и d, a и b ссылались на одни и те же ячейки памяти (если изменятся значения a и b, то изменятся значения и c, d) необходимо при описании формальных параметров, перед нужными переменными добавить слово VAR: procedure obmen (var a, b: integer);
Измените программу obmenDan: obmen (1, 4); => ошибка из-за var. Числа – константы, которые нельзя изменять в процедуре. Пишут программу. Затем разбирают как работает программа. Практическая работа за компьютером Задача 4. Написать программу с использованием процедуры для обмена двух значений переменных. От вас требуется ввести два числа. Эти значения должны быть присвоены двум переменным, причем значение первой должно быть меньше второй. var k, l: integer; procedure exchange ( var a, b: integer); var c: integer; begin ifa > b then begin c: = a; a: = b; b: = c; end; end;
|
|||
|