Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ К ЭКЗАМЕНУ МДК02.01.doc
Скачиваний:
0
Добавлен:
30.01.2020
Размер:
853.5 Кб
Скачать
  1. Локальные и глобальные переменные в программе на turbo pascal. Область их видимости, время жизни, размещение в оперативной памяти.

Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.

Основные правила работы с глобальными и локальными именами можно сформулировать так:

  • Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.

  • Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.

Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.

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

Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.

Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.

Пример.

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.

  1. Файлы в turbo pascal. Их описание в программе. Различие между текстовыми и типизированными файлами.

Большие совокупности данных, например, сведения обо всех учащихся школы или телефонный справочник, удобно иметь записанными во внешней памяти в виде последовательности сигналов. Любой сколько-нибудь развитый язык программирования должен содержать средства для организации хранения информации на внешних запоминающих устройствах и доступа к этой информации. В Паскале для этих целей предусмотрены специальные объекты — файлы. Файлом называется совокупность данных, записанная во внешней памяти под определенным именем. Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.

Целесообразность применения файлов диктуется следующими причинами.

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

2. Файл данных может быть подготовлен другой программой, становясь, таким образом, связующим звеном между двумя разными задачами, а также средством связи программы с внешней средой.

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

Описания файлового типа

Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Таким компонентом может быть любой тип Турбо Паскаля, кроме файлового. Например, допускается файл записей, но нельзя создать «файл файлов». В-третьих, длина вновь создаваемого файла никак не оговаривается при его создании и ограничивается только емкостью устройств внешней памяти. Все это позволяет считать файлы одной из наиболее фундаментальных структур данных в Турбо Паскале.

В большинстве случаев файлы состоят из текстовых строк, или записей. Для описания файла используется словосочетание File Of. Синтаксическая диаграмма для файловых типов выглядит так:

Для доступа к файлу описывается специальная файловая переменная, которая считается представителем файлов в Паскаль - программе. Если файл состоит из записей, дополнительно описывается переменная для доступа к полям записи (обозначим ее R).

Формат:

Type

<имя типа> = <тип компонентов>;

Var

<F> : file of <имя типа>;

<R> : <имя типа>;

Файл можно представить как потенциально бесконечный список значений одного и того же (базового) типа. Все элементы файла считаются пронумерованными, начальный элемент имеет нулевой номер.

В любой момент времени программе доступен только один элемент файла, на который ссылается текущий указатель (указатель обработки). Часто позицию размещения доступного элемента называют текущей позицией.

Как правило, все действия с файлом (чтение из файла, запись в файл) производятся поэлементно, причем в этих действиях участвует тот элемент файла, который обозначается текущим указателем. В результате совершения операций текущий указатель может перемещаться, настраиваясь на тот или иной элемент файла.

По способу доступа к элементам различают файлы последовательного и прямого доступа. Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они записывались. Файлом прямого доступа называется файл, доступ к элементам которого осуществляется по адресу элемента. Например, для поиска нужного элемента в последовательном файле необходимо, начиная с нулевого перемещать указатель обработки до тех пор, пока он не будет указывать на искомый элемент, а при поиске нужного элемента в файле прямого доступа достаточно указать номер его позиции. При организации данных в файле последовательного доступа нельзя одновременно читать данные из файла и записывать данные в файл, так как для чтения некоторого элемента последовательного файла указатель обработки помещен на данный элемент, а для записи нового элемента этот указатель одновременно должен быть в конце файла.

Компилятор Турбо Паскаля поддерживает три типа файлов: текстовые, типизированные, нетипизированные.

Существует несколько различий между текстовыми и типизированными фай лами:

  • При сбросе типизированного файла в нем можно выполнять считывание и запись (при сбросе текстового файла в нем можно выполнять только считы вание).

  • При выполнении считывания или записи из типизированного файла необ ходимо использовать процедуры Read и Write, а не ReadLn и WriteLn.

Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Для описания используется стандартный тип Text:

Var

F:text; {F - файловая переменная}

Типизированный файл определяется следующим образом

var FileVar: file of тип;

  FileVar: file of тип;