Лекция "Локальные и глобальные переменные."

  • Лекции
  • doc
  • 28.03.2017
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Понятие глобальных и локальных переменных введено в языке Паскаль из-за наличия в нем понятия блочной структуры. Любая программа, процедура и функция представляют собой блок со своей областью описаний и могут содержать внутри этого блока описания других процедур и функций, а также обращения к ним. Программа и совокупность описанных в ней процедур и функций образует блочную структуру. Блок, содержащий в своем разделе описаний другой блок (процедуру и функцию), называется внешним по отношению к нему. Блок, содержащийся в разделе описаний некоторого блока, называется внутренним или подблоком.
Иконка файла материала Блочно-модульный принцип организации программ в языке Турбо ..doc
Блочно­модульный   принцип   организации   программ   в   языке   Турбо   Паскаль. Локальные и глобальные переменные. Понятие глобальных и локальных переменных введено в языке Паскаль из­за наличия в нем понятия блочной структуры. Любая программа, процедура и функция представляют собой блок со своей областью описаний и могут содержать внутри этого блока описания других процедур и функций, а также обращения к ним. Программа и совокупность описанных в ней процедур и функций образует блочную структуру. Блок, содержащий в своем разделе описаний другой блок (процедуру и функцию), называется внешним по отношению к нему. Блок, содержащийся в разделе описаний некоторого блока, называется внутренним или подблоком. Объекты, описанные внутри какого­ либо подблока, являются по отношению к нему локальными и недоступны внешним блокам, т.е. на них можно ссылаться только внутри блока, в котором они описаны. Константы, переменные, типы, описанные в блоке program, называютсяглобальными. Казалось бы, проще иметь дело вообще только с глобальными переменными, описав их все в program. Но использование локальных переменных позволяет системе лучше оптимизировать программы, делать их более наглядными и уменьшает вероятность появления ошибок.При написании программ, имеющих вложенные модули, необходимо придерживаться следующих правил: 1. 2. 3. Описывать идентификаторы в том блоке, где они используются, если это возможно. Если один и тот же объект (переменная, тип, константа) используются в двух и  более блоках, то описать этот объект надо в самом внешнем из них, содержащем все  остальные блоки, использующие данный объект. Если переменная, используемая в процедуре, должна сохранить свое значение до  следующего вызова этой процедуры, то такую переменную надо описать во внешнем  блоке, содержащем данную процедуру. Локализация   переменных   дает   программисту   большую   свободу   в   выборе идентификаторов. Так, если две процедуры a и b полностью отделены друг от друга (т.е. не вложены   одна   в   другую),   то   идентификаторы   в   них   могут   быть   выбраны   совершенно произвольно,   в   частности,   могут   повторяться.   В   этом   случае   совпадающим идентификаторам соответствуют разные области памяти, совершенно друг с другом не связанные. Пример. var k: integer; procedure a;     var x, z: real;     begin         { через x, z обозначены две величины –         локальные переменные для a;         k – глобальная переменная для a }         …………………………………     end; procedure b;     var x, y: integer;     begin         { через x, y обозначены две другие величины –         локальные переменные для b;         k – глобальная переменная для b }…………………………………     end; begin { k – единственная переменная, которую  можно использовать в основной ветке программы } ………………………………… end. Если   один   и   тот   же   идентификатор   описан   в   блоке b и   второй   раз   описан   во вложенном   в b блоке c,   то   надо   помнить,   что   эти   два   одинаковых   идентификатора соответствуют разным ячейкам памяти. var     i: integer;     a: real;   procedure p(var d: real);     var i: integer;     begin         i := 3;         d := i + 10 * d;     end;   begin     a := 2.0;     i := 15;     p(a);     writeln(' i = ', i, ' a = ', a);   readln end. Глобальным  переменным i и a отводятся две ячейки памяти. Первыми  выполняются операторы   a   :=   2.0   и   i   :=   15.   Затем   вызывается   процедура p(a).   В   процессе работы p отводится ячейка для локальной переменной i и туда засылается число 3. После окончания работы процедуры p эта ячейка i программой «забывается». После возврата на оператор writeln программа   знает   только   одну   ячейку i –   глобальную,   т.е.   ту,   которая содержит число 15. Поэтому программа выдаст на печать i = 15, a = 23.0, т.к. a = 3 + 10 * 2.Если локальная и глобальная переменная принадлежат к одному и тому же сложному типу, то этот тип надо описать в разделе type, а сами переменные описывать через этот общий тип.Пример. type ab = array[1..3] of real; var a: ab; procedure q;     var b: ab;     ………………………….. end;

Скачивание материала доступно только для авторизованных пользователей.