Что будет выведено на экран в результате работы этой программы? - Pascal

Узнай цену своей работы

Формулировка задачи:

Что будет выведено на экран в результате работы программы?Объясните эту задачу.
Листинг программы
  1. Program Main;
  2. Uses crt;
  3. Var a,b,c,d:integer;
  4. Function f(var b:integer; c:integer):integer;
  5. Var d:integer;
  6. Begin
  7. a:=2; b:=b+1; d:=3; c:=b-a;
  8. Writeln(a,b,c,d);
  9. f:=d;
  10. end;
  11. begin
  12. a:=0; b:=0; c:=0; d:=0;
  13. d:=f(a,b); Writeln(a,b,c,d);
  14. end.

Решение задачи: «Что будет выведено на экран в результате работы этой программы?»

textual
Листинг программы
  1. Program Main;
  2. Function f(var b:integer; c:integer):integer; //данные параметры согласно вызову функции (d:=f(a,b)) можно записать (для понимания только) как Function f(var a:integer; b:integer):integer;
  3. //передача параметра по ссылке означает, что мы передаём функции ссылку на исходное значение. т.е. если мы изменяем параметр внутри функции - он изменяется и "снаружи". модификатор var (есть ещё const, если что)
  4. //передача по значению означает, что мы делаем копию переменной в памяти. на деле это значит, что изменения параметра при выходе из тела функции не сохраняются
  5. Var d:integer;
  6. //теперь по области видимости: если у нас имеются глобальные переменные - они могут изменяться внутри функции. это крайне не рекомендуется. лучше передавать по ссылке как параметр.
  7. //если же мы в теле функции объявляем переменную с таким же именем, как и глобальная - в теле же функции по имени мы будем иметь доступ только к локальной переменной.
  8. Begin
  9. {здесь и далее bl - локальная (если есть), bg - глобальная}
  10. a:=2; //обращение к глобальной переменной.  - значения глобальных переменных: a = 2; bl = 2; bg = 0; cl = 0; cg = 0; dl не определено (переменная не инициализирована); dg = 0
  11. b:=b+1; //изменение ag через ссылку (bl = ag): a = 2+1=3; bl = 2+1=3; bg = 0; cl = 0; cg = 0; dl = не определено; dg = 0
  12. d:=3; //изменение dl: a = 3; bl = 3; bg = 0; cl = 0; cg = 0; dl = 3; dg = 0
  13. c:=b-a; //изменение cl: a = 3; bl = 3; bg = 0; cl = 3-3=0; cg = 0; dl = 3; dg = 0
  14. Writeln(a,b,c,d); //вывод a, bl, cl, dl: 3 3 0 3
  15. f:=d; //возвращаем dl = 3
  16. end;
  17. var
  18.     a, b, c, d: Integer;
  19. begin
  20.     a:=0; b:=0; c:=0; d:=0; //ag = 0; bg = 0; cg = 0; dg = 0
  21.     d:=f(a,b); //ag = 3; bg = 0; cg = 0; dg = 3
  22.     Writeln(a,b,c,d); //вывод ag, bg, cg, dg: 3 0 0 3
  23. end.

Объяснение кода листинга программы

  1. Объявляются глобальные переменные:
    • Название: a, Значение: 0
    • Название: b, Значение: 0
    • Название: c, Значение: 0
    • Название: d, Значение: 0
  2. Определяется функция f с параметрами b и c:
    • Название: b, Значение: значение переменной b из вызова функции
    • Название: c, Значение: значение переменной c из вызова функции
  3. В теле функции:
    • Значение a изменяется на 2.
    • Выполняется операция b + 1, результат записывается обратно в b.
    • d устанавливается в 3.
    • c устанавливается в b - a, то есть 3 - 2.
    • Выводятся значения a, b, c, d.
    • Возвращается значение переменной d.
  4. В основной программе:
    • Значение a устанавливается в 0.
    • Значение b устанавливается в 0.
    • Значение c устанавливается в 0.
    • Значение d устанавливается в 0.
    • Вызывается функция f с параметрами a и b, результат записывается в d.
    • Выводятся значения a, b, c, d.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы