Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

14.1.2. Язык Basic

<программа>:=<файл> [<файл>]...

<файл>:=[<объявления>][<процедура>]...

<процедура>:=<подпрограмма>|<функция>

<подпрограмма>:=<инструкция sub>[<объявления>]<исполняемые_инст-рукции>end sub

<функция>:=<инструкция function>[<объявления>]<исполняемые_инструк-ции>end function

Замечания.

1. Объявления не могут располагаться между текстов процедур.

2. Внутри тела процедуры объявления должны предшествовать первой исполняемой инструкции. Исполняемые инструкции не могут находиться вне тела процедуры.

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

14.2. Область видимости (действия) и время жизни переменных

Объекты, объявленные вне процедур, называются внешними, объекты, объявленные внутри процедур и блоков, - внутренними.

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

Область видимости имени (определения или описания) внутреннего объекта – это процедура или блок, в которой(ом) находится это определение или описание.

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

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

Пример. Приводится на языке C, поскольку он имеет больше уровней структуры. Стрелками с номером показаны области видимости соответствующего объекта по имени a.

#define SIZE 100

float a[SIZE]; _______ /* 1-й объект */

.............. |

|  1

void main(void){ |

int a,b; _____| /* 2-й объект */

........ |  2

{double a,c; __| /* 3-й объект */

........... |  3

} _|_

........ |  2

} /* End main */ ___|

int func1(...){ _______

int k,l; |

........ |  1

{char a,e; _____| /* 4-й объект */

......... |  4

} __|___

........ |  1

} /* End func1 */ |

|

int func2(...){ |

.......... |  1

} /* End func2 */ ______|

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

Пример.

Первый объект с именем a предыдущего примера глобален по отношению к другим областям локализации, но локален в файле.

Второй объект с именем a глобален для блока, содержащего определение третьего объекта с именем a, но локален в функции main.

Третий объект с именем a локален в блоке.

В языке C файл может содержать одни объявления, которые затем могут быть включены в нужные места программы с помощью директивы препроцессора #include.

Рекомендация. Если в программе используются сложные структуры, то их тип разумно описать с помощью инструкции typedef и объединить в один .h файл.

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

И в языке C, и в языке Basic есть средства, которые управляют областью видимости и временем жизни объектов программы. Механизм управления в них, однако, различен, поэтому рассмотрим эти средства по отдельности.