Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2016, 23:54   #1
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию Вопрос по области видимости переменных.

Вопрос по области видимости переменных.
Вначале привожу цитату [как упаковать текст в спойлер? не нашел такую функцию здесь. Странно]

Любая переменная в программе характеризуется областью видимости и жизненным циклом.
По области видимости переменные можно классифицировать следующим образом:
Локальная переменная – переменная доступна только в границах отдельной процедуры или составного оператора. Из названия понятно, что такие переменные объявляют и инициализируют для решения каких-либо локальных задач, например: для хранения номера итерации цикла или промежуточного результата некоторой операции.
Параметр процедуры или функции – переменная, доступ к которой имеется из любого места процедуры или функции, аргументом которой она является. В примере, который размещен ниже, для процедуры ВЫВОД_АДРЕСА определен аргумент А типа АДРЕС. Значение аргумента в примере определяется значением локальной (в контексте основной программы) одноименной переменной. То, что имя локальной переменной и имя аргумента процедуры совпадают - не является обязательным условием, поскольку это разные элементы программы и они имеют право иметь различные имена.
Член структуры или класса
– часть составного типа. Пример – составные части адреса (смотри пример ниже). Область видимости таких элементов может совпадать с областью видимости всего экземпляра, а может быть ограничена до рамок “внутреннего” использования.
Глобальные переменные
– доступ к таким переменным есть из любой части программы в любой момент времени исполнения. Рекомендуется избегать использования глобальных переменных без особого на то резона, поскольку оно может приводить к нерациональному расходу памяти.
К отдельной категории переменных следует отнести константы, значение которым присваивается только один раз на протяжении их жизненного цикла и далее остается неизменным. Для констант справедлива вся вышеперечисленная классификация.

http://codingcraft.ru/programming_fo...ers/theory.php

Вопрос: возможно в программе создать локальную переменную/параметр процедуры и глобальную переменную одинакового наименования? Если да, то что будет первично если они расположены обе в процедуре?
Аналогичный вопрос по локальной переменной и параметру процедуры или функции.

Последний раз редактировалось nevender; 06.01.2016 в 00:05.
nevender вне форума Ответить с цитированием
Старый 06.01.2016, 00:04   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

а что, буквы закончились?
come-on вне форума Ответить с цитированием
Старый 06.01.2016, 00:09   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Тут нет спойлера.
Цитата:
возможно в программе создать локальную переменную/параметр процедуры и глобальную переменную одинакового наименования?
Да, возможно.

Цитата:
Если да, то что будет первично если они расположены обе в процедуре?
Что значит "Расположены"? Вызываются? Полагаю, локаьная будет первична, то есть, она перекроет собой глобальную переменную (если локальная объявлена дополнительно).

__________

А вообще, здесь надо смотреть какой ЯП используется. Например,
Цитата:
Локальная переменная – переменная доступна только в границах отдельной процедуры или составного оператора.
Для Java Script это неверно. Переменная, объявленная внутри составного оператора может быть доступна и после его завершения.

А вот в PHP чтобы из функции обратиться к глобальной переменной из функции, необходимо отдельно прописывать перед ней ключевое слово: global (то есть, конструкция global <переменная> пишется в начале подпрограммы и указывает, что эту переменную следует взять из глобального контекста)
----------------------------------

Цитата:
Аналогичный вопрос по локальной переменной и параметру процедуры или функции.
Этого делать нельзя. В любом случае, это ни к чему хорошему не приведёт. В языке Turbo Pascal вы получите ошибку "Дублирующийся идентификатор". Что будет в других ЯП мне неизвестно, поскольку я не проверял, поскольку нехорошо так делать.

Последний раз редактировалось Вадим Мошев; 06.01.2016 в 20:18.
Вадим Мошев вне форума Ответить с цитированием
Старый 06.01.2016, 02:15   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Автор, а чо тебе мешает смоделировать такую ситуацию, поприсваивать переменным значения и посмотреть под дебаггером, что с ними происходит?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.01.2016, 17:33   #5
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Вадим Мошев, благодарю за развернутый ответ.
Да, Вы правы, не "расположены", а "вызываются".

min@y™, резонное замечание. Приходила такая мысль в голову, её обязательно попробую. Спасибо что назвали вещи своими именами, а так дело в том, что общий замысел у меня пока таков:

1. Изучение матчасти
2. Решение простеньких задач на Pascal'е(2), который я изучал 4 года назад в школе.
3. Изучение Java и его синтаксиса решая программы которые я сделал на Pascal'е + более сложные задачи + просмотр видяшек на youtube.
4. Чтение и прорешивание задач из книги Д.Кнута "Искусство программирования" на Java
5. Изучение Android SDK по просмотру видяшек на youtube.
6. ???
7. PROFIT

Думал изначально на курсы записаться, но сейчас сложилось впечатление что лучше вначале пройти вышеописанный путь.
Цель - писать программы для мобильных приложений на платформе Android.

Последний раз редактировалось nevender; 06.01.2016 в 17:36.
nevender вне форума Ответить с цитированием
Старый 06.01.2016, 18:01   #6
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Или лучше записаться на курсы, а по-моему плану заниматься дополнительно? Что лучше поставить первичнее?
nevender вне форума Ответить с цитированием
Старый 06.01.2016, 18:14   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Или лучше записаться на курсы, а по-моему плану заниматься дополнительно? Что лучше поставить первичнее?
А чего ты хочешь: стать программистом или денег?
Как у всех – не знаю, а у меня второе – это побочный эффект первого.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.01.2016, 19:01   #8
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

В такой формулировке ответ очевиден
Предыстория: Мне 21 год, закончил стройфак+военную кафедру+по экономическому образованию осталось диплом написать. Поработал полгода менеджером проекта, свою зарплату окупаю, и сейчас продолжаю работать. Но принял решение менять профессию так как в строительстве ты накапливаешь знания, шаблоны, модели поведения а затем их просто применяешь. Почти никакого интеллектуального напряжения, которое мне нравилось во время студенчества. Мозги ржавеют, заплывают жиром, а это я очень не люблю. Решил освоить Java, так как после двухдневного серфинга в интернете сложилось мнение, что стартовать лучше всего с мобильных приложений, так как правится относительно легко и не нужно много времени как на многолетние проекты на PC. Десктопные приложения и веб привлекают меньше чем приложения для мобильных телефонов. Больше тянет к Android'у по ряду причин. В интернете пишут, что Java для андроида.
Буду работать на своей работе параллельно изучаю программирования, затем сменю профессию.
nevender вне форума Ответить с цитированием
Старый 06.01.2016, 19:07   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

удачи тебе!
хахахаха (зловещий смех)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.01.2016, 20:10   #10
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Спасибо
А так все-таки похоже, что лучше на курсы. С наставником дела все-таки получше пойдут, и профессию сменю быстрее.
nevender вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости переменных prowoke Microsoft Office Excel 6 03.02.2012 22:00
Вопрос по области видимости LMnet Общие вопросы C/C++ 2 04.04.2011 08:02
область видимости переменных Lotles Visual C++ 11 30.11.2010 23:30
область видимости переменных. С++ Prestigio Помощь студентам 10 07.07.2008 15:55