Программирование в среде Visual Basic for Applications (1082430), страница 5
Текст из файла (страница 5)
д. По умолчанию строковая или текстовая переменная (В1г[пй) является массивом переменной длины, который содержит символы. Однако текстовая переменная может быть определена и фиксированной длины. В следующем примере объявляется символьный массив размером в 20 символов: Шт Ятт Ая Бтт1пд*20 В этом случае, если вы присвоите переменной В1г строку длиной более 20 символов, то она будет усечена. Ключевое слово Туре позволяет описать собственные типы данных, созданные на основе стандартных. Тип переменной в 1!ВА можно описать с помощью следующей конструкции: [Рттиате/Рп)о11о] Туре ИМЯ ПЕРЕМЕННОЙ ИМЯ ЭЛЕМЕНТА [ ( [ИНДЕКСЫ])] Ая ТИП Имя ЭЛЕМЕНТА [ ( [ИНдЕКСЫ])] Ая тИП Епс] Туре Например, информация о некотором служащем может быль представлена так: Как и в других языках программирования, в Ъ'ВА можно использовать массивы.
Примеры объявления массивов: 01т А(19) Ая тптедет 0[и В (5, 5) Ая Я 1пд1е Туре Иот)тет Рттятнаие Ая Ятттпд*20 йаятнаие Ая Ятттпд*20 Втттпдау Ая Рата Риопе Ая Ятт1пд*7 Ба1ату Ая Я1пд1е Епс( Туре 01т Меи Иот)тет Ая Истает фамилия имя дата рождения телефон зарплата 4. Простейшие функции и процеДуры. Типы переменных 33 Первая строка объявляет одномерный массив (вектор), состоящий из 20 целых чисел, причем по умолчанию первый элемент массива будет А10), а последний — А(19).
Вторая строка объявляет двумерный массив бхб (матрицу), состоящий из действительных чисел. При этом говорят, что 0 — базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля оператор Ор11оп Вазе 1. После этого индексы массивов А и В будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова То при объявлении массива, например В1т В(1 То б, 1 То б) Аа 51пд1е Пьв А(1 То 20) Аа тпседег Массив в программе определяется поэлементно, например Рта Му Аггау(1 То 2, 1 То 2) Аа Бьпд1е Му Аггау(1, 1)=2 Му Аггау(1, 2)=4 Му Аггау(2, 1)=1 Му Аггау(1, 2)=б Удобным способом определения одномерных массивов является функция Аггау, преобразующая список элементов, разделенных запятыми, в вектор из этих значений и присваивающая ему тип Уаг)ап$, например Шт А1 Аа Чагьапс А1 = Аггау(15, 25, 35) В1 = А1(2) Иногда в процессе выполнения программы требуется изменить размер массива. В этом случае его объявляют как динамический.
Для этого при объявлении массива не нужно указывать размерность, например Пью Н с)ьпав[ ) Аа Яьпд1е Затем в программе следует вычислить необходимый размер массива, присвоив его некоторой переменной, например п, и указать размер динамического массива с помощью оператора КеПпп. Весты Н сШааы(п, и) 34 Программирование в среде гтвиа( Вав(сУогАррйсанопв При описании типов переменных, являющихся параметрами функций или процедуры, Рпп опускается.
В примере, приведенном в разд. 4.1, параметр х функции функция н вычисляемое в функции значение по умолчанию имеют тип Уаг]апт. Так как по смыслу задачи х и функция являются действительными числами, то данную функцию пользователя можно также записать следующим образом (с явным указанием типов): РцЬ11о Гцпоетоп Функция (х Ав РоцЬ1е) Ая ПоцЬ1с функция = Яап(лрр11сас1оп.рт(]*х)*Ехр(-2*х] Епс] Рцпос1оп Знак «=» является оператором присваивания, который предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части.
Например, в результате действия следующей пары операторов; х=2 х=х+2 переменной х будет присвоено значение 4. Часто при написании программ необходимо использовать одни и те же постоянные значения: числа, строки, даты и т. д. В этом случае вместо них лучше использовать имена, которые обозначают эти значения. В ЧВА можно задать постоянную (константу) с помощью одной из следующих конструкций: Сопвс ИМя ПОСтсяННОй = ВЫРАЖЕНИЕ Сопво ИМя ПОСтсяННОй Ав тИП ПОСтсяННОй -- ВЫРАЖЕНИЕ Приведем примеры возможного определения констант. Сопвс Р11енаее = "Ма1п Воо]я.х1я" Сопвс Рт Ае ПоцЬ1е = 2.14155 СопяТ МуАде Ая Ятпд1е = 21.5 4.3. Процедуры В приложении ЧВА можно создавать следующие типы процедур: ° Процедура ЯнЬ. Содержит набор команд, с помощью которого можно решить некоторую задачу.
4 Простейшие функции и процедуры. Типы переменных 35 ° Процедура Рппсйоп (Функция). Содержит набор команд, который решает некоторую задачу и при этом возвращает некоторое значение. ° Процедура Ргорегту. Предназначена для ссылки на свойство объекта. Используется для установки или получения значения пользовательских свойств и модулей. На листе модуля можно записывать процедуры (подпрограммы). Процедуры имеют стандартное оформление: ЯнЬ ИМЛ ПРОЦЕДУРЫ (СПИСОК ПАРАМЕТРОВ) ТЕЛО ПРОЦЕДУРЪ| Ела ЯнЬ Процедура — это совокупность операторов ЧВА, выполняющих определенные действия. Например, процедура Сигнал использует оператор Веер для синтеза звукового сигнала: ЯнЬ Сигнал Веер Епд ЯнЬ Досрочное завершение процедуры возможно с помощью оператора Ехй ВпЬ.
Следует отметить, что, кроме выполнения определенных действий, процедура, так же как и функция, может возвращать значения, которые присваиваются параметрам внутри процедуры. В отличие от функций пользователя процедуры нельзя вызывать из ячеек рабочего листа. Укажем некоторые общие сведения об организации программ в ЧВА. Программа ЧВА состоит из одного или нескольких модулей. Модуль — это лист с текстом программы, вставленный в рабочую книгу. Обычно текст программы ЧВА начинается с опций, которые управляют описанием переменных, способом сравнения строк и т. д. Затем следует объявление глобальных переменных или констант для данного модуля, т. е.
таких переменных, которые используются во всех процедурах модуля. Далее располагается непосредственно текст функций пользователя и процедур, составляющих саму программу. При написании программ удобно внутрь текста помещать комментарии. 36 Программирование в среде Угвиа( Вая(с(ос Арр!(са(1олв Комментарии — это пояснительный текст, который можно записать в любом месте программы. Каждая строка комментариев начинается со знака апострофа. Комментарии игнорируются компилятором, и поэтому никакого влияния на программу не оказывают. Комментарии удобно использовать также при отладке операторов для их временного отключения.
Для более компактной записи программы используется символ двоеточия в качестве разделителя операторов в одной строке. Рассмотрим пример организации модуля )21. Оре1оп Ване 1 Оретоп Ехр11сте Сопяп Р1 Ая РонЫе = 3.14159 Р1 — глобальная постоянная Ртщ х Ая РонЬ1е х — глобальная переменная Рнпсоаоп Ргяс(К Ая РонЫе) Ая РопЫе Ртяс вычисляет площадь круга х = 2 Рьяс = Р1 * Р.
2 Епд Рппсс1оп ГнпсС1оп Кес(а, Ь, с Ая РопЬ1е) Ая РопЬ1е Кес вычисляет площадь треугольника Ртщ р Ая РонЫе р — локальная переменная р=(ааЬас)/2 Кес = Яс(г(р * (р — а) * (р " Ь) * (р — с) ) Епд Рппсптоп ЯнЬ Кеян1ся () Ртщ К 1, К 2, а, Ь, с Ая РонЬ1е К 1, К 2, а, Ь, с — локальные переменные К 1 = Р1яс (2 .5) х = х + 2 мячвох("площадь круга =" а Ояьг(к 1) а ",х=" а сясг(х)) а = 1: Ь =1: с- Яс(г (2) К 2 = Кес(а, Ъ, с) Мядвох (" Площадь треугольника а Сваг(К 2)) Епд ЯнЬ 4.
Простейшие функции и процедуры. Типы переменных 37 Здесь инструкция Орг)оп Ехрйсй указывает на необходимость описания типов всех переменных, используемых на данном листе модуля. Функция Ся(г переводит числовой формат в строковый. (Функция Б1г также переводит числовой формат в строковый, но только для чисел с десятичной точкой.) Другие функции преобразования типов: Функция Б()г вычисляет квадратный корень аргумента. Процедура МЕЕВох выводит текстовую информацию в окно вывода (подробнее см. разд. 4.4).
В результате работы программы появятся сообщения, представленные на рис. 4.4. В общем случае при вызове процедур передаваемые параметры не надо заключать в скобки. Приводимый ниже пример показывает основные способы передачи параметров в процедуры. ЯаЬ Ехаа1рХе (А, В) С = А а В мадвох свахе Епс( ЯаЬ ЯаЬ МАХИ ( ) Рта Ах, Ву Аа РоаЬХе Ехапрте 5, 35 Ах = 5: Ву = 35 ЕхапрХе Ах, Ву ЕхазпрХе А;=5, В:=35 Еас( ЯаЬ 38 Программирование в среде кива! ВавГс~от Аррисаноов В данном примере при третьем вызове процедуры Ехапзр1е передача параметров осуществляется присвоением значений именам параметров с помощью оператора присваивания «: =» (который применяется только по отношению к параметрам процедуры, в отличие от ранее описанного оператора присваивания «=»). При таком способе передачи параметров порядок присваивания значений не важен, так как все определяется именами параметров.
Рнс. 4.4. Результаты работы программы «Кевийв» 4.4. Функции МянВох и 1прп1Вох Функция МяяВох осуществляет вывод информации в окне сообщений. В простейшем случае функция МзяВох имеет следующий синтаксис: Мвовок(текстовая строка, кнопки, заголовок) где ° текстовая строка — это обязательный аргумент, задающий в окне выводимое информационное сообщение; может состоять из нескольких текстовых строк, объединенных знаком «г»; использование в этом аргументе СЬг(13) приводит к переходу на новую строку при выводе информации; ° кнопки — значения этого аргумента определяют категории появляющихся в окне кнопок. От значения аргумента кнопки зависит также, появляется ли в окне какой-либо значок.
Если не указано, какие кнопки необходимо отображать в окне сообщений, то используется значение по умолчанию, соответствующее кнопке ОК; в табл. 4.2 приведены возможные комбинации кнопок и значков в окне сообщений; 4. Простеишие функции и проиедураа Типы переменных Таблица 4.2. Допустимые значения переменной кнопки 39 Отображение Аргумент ЧЬОКОп1у Кнопка ОК ЧЬАЬогенеегу1дпоге Кнопки Прекратить, Повторить и Игнорировать Кнопки Повторить и Отмена ЧЬнепгуСапсе1 ЧЬтпйогпаейоп Информационный знак ЧЬЯцеясйоп Знак вопроса ЧЬСгхгхса1 ЧЬЕхс1апасйоп Знак «Критическое сообщение» Знак восклицания ° заголовок — задает заголовок окна; по умолчанию используется заголовок МБ Ехсе1.