3 / 2 / 1
Регистрация: 27.10.2018
Сообщений: 58
1

Локальные и глобальные переменные

13.01.2019, 07:52. Показов 7590. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
var a,b,c,d:integer; 
procedure p(x:integer; var a:integer); 
var c:integer; 
begin 
x:=5; a:=6; c:=7; d:=8 end; 
begin
a:=1; b:=2; c:=3; d:=4; 
p(a,b);
write(a,' ',b,' ',c,' ',d) 
end.
Добрый день! В результате программа напечатает 1 6 3 8. Я знаю, что такое глобальная, локальная программа, но не знаю когда локальная изменяет значение глобальной. Объясните, пожалуйста, что к чему Заранее спасибо большое!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2019, 07:52
Ответы с готовыми решениями:

Модули и глобальные переменные
Писала курсовой проект, зная только задание. Позже выяснилось, что требуется использование модулей...

Локальные и глобальные переменные.
ОГбьясните пожалуйста чем отличаются Procedure и Function Да и что такое глобальные и локальные...

Глобальные переменные
помогите переделать программу надо убрать глобальные переменные у самого не получается=(( program...

глобальные переменные
Помогите пожалуйста избавиться от глобальных переменных! Заношу все в процедуры, программа не идет...

2
Модератор
10074 / 5415 / 3356
Регистрация: 17.08.2012
Сообщений: 16,578
18.01.2019, 02:50 2
Лучший ответ Сообщение было отмечено I LOVE MATH как решение

Решение

Объявлять глобальные переменные до подпрограмм нужно только тогда, когда это действительно необходимо, поскольку это может порождать трудно локализуемые ошибки.

Пусть блок - это программа или подпрограмма. Тогда программу можно представить как иерархию блоков. Программа (основной блок) может содержать вложенные (более низкие по иерархии) блоки (подпрограммы), которые, в свою очередь, могут также содержать вложенные (ещё более более низкие по иерархии) блоки (локальные подпрограммы), которые, в свою очередь... Ну, и так далее.

Переменная доступна ниже её описания (ниже по тексту) и до конца блока, где она описана, в том числе, и во всех вложенных блоках, которые находятся в указанном промежутке. Переменная из блока с более низкой иерархией не доступна из блока с более высокой иерархией. Переменные с одинаковыми именами, описанные в разных блоках, считаются разными.

Получается, что, если глобальные переменные описаны до подпрограммы, то они доступны и в подпрограмме, однако, если в подпрограмме есть локальная переменная или формальный параметр с тем же именем, что и глобальная переменная, то глобальная переменная из подпрограммы недоступна. В данном случае, это "a" и "c".
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//начало основного блока
var a,b,c,d:integer;
    //начало вложенного блока
    procedure p(x:integer; //формальный параметр, передаётся по значению,
                           //поэтому фактический параметр не изменяется
    var a:integer //формальный параметр, передаётся по ссылке,
                  //меняет значение фактического параметра
                  //и перекрывает видимость глобальной переменной "a"
    );
    var c:integer; //локальная переменная, доступна только в процедуре,
                   //перекрывает видимость глобальной переменной "c"
    begin
    x:=5; //значение фактического параметра (глобальной переменной "a") не изменяется
    a:=6; //значение фактического параметра (глобальной переменной "b") изменяется,
          //значение глобальной переменной "a" не изменяется
    c:=7; //значение локальной переменной "с" изменяется,
          //значение глобальной переменной "c" не изменяется
    d:=8  //глобальная переменная "d" ничем не перекрыта, и её значение изменяется
    end;
    //конец вложенного блока
//(продолжение основного блока)
begin
a:=1; b:=2; c:=3; d:=4;
p(a,b);
write(a,' ',b,' ',c,' ',d)
//конец основного блока (после "end.")
end.
1
3 / 2 / 1
Регистрация: 27.10.2018
Сообщений: 58
19.01.2019, 23:51  [ТС] 3
Спасибо большое!
0
19.01.2019, 23:51
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2019, 23:51
Помогаю со студенческими работами здесь

глобальные и локальные переменные
Как лучше реализовывать для достижения минимального кода/ максимального быстродействия? 1 вариант:...

Глобальные и локальные переменные
def func3(): print(z) z = 20 z = 10 func3() Но ведь мы присвоили глобальной...

Глобальные и локальные переменные!
Какой будет ответ?

Глобальные и локальные переменные
Более того, при попытке обратиться к переменной сначала на чтение, потом на запись, мы получим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Распознавание изображений (компьютерное зрение) на C++
InfoMaster 20.01.2025
Введение в компьютерное зрение и основы работы с изображениями Компьютерное зрение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, позволяющую. . .
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru