Хелпикс

Главная

Контакты

Случайная статья





begin. ifa > b then begin



begin

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;



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.