Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задачник VBA_ II

.pdf
Скачиваний:
302
Добавлен:
10.06.2015
Размер:
1.17 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ЭНЕРГЕТИЧЕСКИЙ УНИВЕРСИТЕТ»

Н.К. ПЕТРОВА, Л.Р. БЕЛЯЕВА

ПРОГРАММИРОВАНИЕ НА VBA В ПРИМЕРАХ И ЗАДАЧАХ

ЧАСТЬ II. РАБОТА С СИМВОЛЬНЫМИ ДАННЫМИ И МАССИВАМИ

Практикум

Казань 2011

2

УДК 681.3 ББК 32.973 П30

Рецензенты:

кандидат физико-математических наук, доцент Казанского государственного энергетического университета Т.Р.Абдульмянов;

кандидат педогогических наук, доцент Казанского государственного энергетического университета С.М. Куценко

П30 Петрова Н.К., Беляева Л.Р.

Программирование на VBA. Часть II. Работа с символьными переменными и массивами. Практикум / Н.К. Петрова, Л.Р. Беляева. – Казань: Казан. гос. энерг. ун-т, 2011. – 50 с.

Предлагается своего рода «Задачник» по программированию, ориентированный на обучение студентов основам алгоритмизации математических и инженерных задач средствами языка VBA в приложении к Excel.

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

Типовые задачи даются с подробными решениями. Имеется большое количество задач для самостоятельной работы. Наряду с типовыми задачами, практикум содержит большое количество задач повышенной сложности. Задания делятся на 2 типа: 1 – умение «читать» готовые программы, 2 – разрабатывать программы по шаблонному алгоритму и программы с неявным алгоритмом.

Практикум предназначен для студентов всех специальностей КГЭУ, изучающих «Информатику», «Информационные технологии».

УДК 681.3 ББК 32.973

© Казанский государственный энергетический университет, 2011

3

“Года работы над искусственным интеллектом достаточно,

чтобы заставить поверить в Бога.” Перлис Алан

Предисловие

Вучебной литературе имеется не так много пособий по практической работе на языке VBA (Visual Basic for Application), ориентированных на решение математических, инженерных задач. Данный практикум разработан

сцелью восполнить существующий пробел. Он предназначен для обучения – самостоятельно или под руководством преподавателя – основам алгоритмизации с использованием языка VBA в приложении к одному из самых популярных приложений MS Office – MS Excel.

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

Многие задачи на «чтение программ» снабжены ответами.

Втексте практикума приняты такие соглашения:

1.Элементы языка VBA в текстовой части практикума выделены

таким стилем.

2.Курсивом выделены новые термины, имена переменных в текстовой части практикума, в комментариях к операторам программ. “Таким

шрифтом” записаны значения для ввода или вывода данных.

3.Тексты программ приводятся, как правило, копией листа модуля.

4.При описании структуры операторов [необязательные операнды] взяты в квадратные скобки, альтернативные параметры – Yes | No – написаны через вертикальную черту.

5.В тексте используются следующие сокращения:

ОП – оперативная память; ПК – компьютер; п/п – программа-процедура; п/ф – программа-функция.

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

4

I.ОБРАБОТКА СИМВОЛЬНЫХ ПЕРЕМЕННЫХ

1.Средства VBA для работы с символьными переменными

1.1.Символьные переменные, строковые функции

Компьютер работает не только с числами, но и с символами. Последовательность символов, используемых программе, называется строкой. Символьные или строковые константы представляют собой набор произвольных символов, принадлежащих языку Basic. Строковые константы на VBA помещаются в кавычки, например Лунаили X=12”. Для описания строковых переменных используется опция String или постфикс $. В табл. 1 показаны параметры двух разновидностей опции String.

 

Строковые типы данных

Таблица 1

 

 

 

 

 

 

String

Текстовая информация

10 байт + 1 байт

От 0 до

на каждый

приблизительно

 

(строка) переменной длины

символ

2 миллиардов

 

 

символов

 

 

 

 

Строка постоянной длины

 

От 1 до

String*n

Длина строки

приблизительно

в n символов

 

 

 

65 400

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

Объединение строк (конкатенация) выполняется с помощью опера-

тора & (можно также использовать +). При объединении двух строк вторая помещается в конец первой, например, в результате команды “пример “ & “№1” получим строку “пример №1”, а по команде

“25” & “693” получим строку “25693”..

Кроме указанного оператора, в VBA используется большое количество

встроенных строковых функций. Рассмотрим некоторые из них.

Функция Len( ) используется для определения длины строки. Общий вид команды:

n% = Len(строка).

Например, функция Len(файл) возвращает число 4.

5

Функция Instr([номер позиции], строка, подстрока) – осуществляет поиск подстроки в строке, начиная с символа, указанного [номером позиции]. Если [номером позиции] не указан, то поиск осуществляется с 1-го символа. Например:

В приведенном примере сочетание “форма” встретилось в слове “Ин форматика”, начиная с позиции номер 3.

Функции UCase( ) и LCase( ) используются, чтобы изменить регистр символов заданной строки на верхний или нижний соответственно. Например:

a$ = Информатика: b$ = Ucase(a$) : c$ = LCase(a$).

В результате переменная b$ = ИНФОРМАТИКА, а c$ = информатика“.

Функции Left( ), Right( ) и Mid( ) используются для выделения части строки. Общий вид команд Left или Right:

Новая строка = Left | Right (Исходная строка, число символов).

Например, в результате команды Left(самолет, 3) получим строку «сам», а по команде Right (пароход, 3) получим строку «ход».

Функция Mid( ) является более универсальной и часто заменяет собой Left( ) и Right( ). Общий вид команды:

Новая строка = Mid (Исходная строка, начальная позиция, [число символов]).

Например, в результате команды Mid (информатика, 3, 5) получим строку «форма». Если необязательный параметр [число символов] опущен, то выделяются символы, начиная с с начальной позиции до конца строки, например, по команде Mid (подберезовик, 4) получим строку «березовик». Если начальная позиция указана равной нулю или больше длины строки, то результатом выполнения функции будет пустая строка. Например, если строка программы содержит операторы:

a$ = Mid (“процессор”, 10, 2): b$ = Mid (“процессор”, 0, 3),

то результатом их выполнения будет значение ”” (пусто) для обеих переменных a$ и b$.

6

Функции LTrim ( ), RTrim ( ) и Trim ( ) отсекают пробелы с начала, конца или с обеих сторон строки соответственно.

В VBA используются также встроенные функции преобразования ти-

пов данных.

Функция SPACE (n) – формирует строку из n пробелов.

Функция STRING (n, строка_символов) – формирует строку из n одинаковых символов, равных первому символу в строке_символов:

1.2. Функции преобразования типов данных и прочие полезные функции

Функция Str( ) преобразует число в строку текста. Если число положительное, то первым символом в полученной строке будет пробел. Общий вид команды:

Строка = Str(число)

Например, в результате команды Str(895) получим строку « 895», а по команде Str (-5678) получим строку « 5678».

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

Number$ = Str (Строка)

Например, в результате команды Val(45Т89) получим число 45, а по команде Val (К593) получим число 0.

Функция Date возвращает текущую дату компьютера в формате “дд.мм.гггг” значением типа Variant.

7

Функция Chr( ) преобразует ASCII-код символа в соответствующий символ. Например, в результате команды Chr(72) получим символ H, а по команде Chr (65) получим символ А. Одним из распространенных символов при формировании строк является Chr (13) – переход к началу новой строки:

Функция Asc ( ) выполняет обратную задачу: преобразует символ в соответствующий ему ASCII-код. Например, в результате команды Asc(0) получим код 48, а по команде Asc (”a“) получим код 97.

2. Пример решения типовых задач и задачи для самостоятельного решения

2.1.Пример решения типовых задач

На листе Excel вызвана определенная пользователем функция text, фактические параметры которой указаны в приведенной ниже палитре функции. Какой результат появится на листе?

Решение:

1. Сопоставляем формальные (a$, b$) и фактические параметры:

8

a$ = "Kazan Power Engineering University" b$ = "U"

2.nl равно числу символов в строке a$ – считаем, получается nl = 34.

3.Открываем цикл по i:

Проверяем i = 1 < nl?, Да! Следовательно, приступаем к выполнению функции Instr: начиная с первой позиции, просматривается строка a$ и в ней ищется позиция, на которой стоит заглавная U – это позиция № 25. Значит k = 25.

4.k не равно нулю, следовательно переходим на оператор с меткой 20, досрочно покидая цикл For … Next.

5.Рассчитываем величину nl – k + 1 = 34 – 25 + 1 = 10.

6.Берем 10 правых символов из строки a$, получаем строку

“University”.

Заканчиваем программу.

Ответ: На листе Excel появится слово “University”.

2.2. Задания для самостоятельного чтения программ

Задание 1. Какое сообщение появится после выполнения предложенной программы?

Текст программы:

Задание 2. Какие данные появятся на листе Excel при вызове пользовательской функции test2, фактические параметры которой указаны на палитре функции?

9

Задание 3. На компьютере установлена дата 12 июля 2010 г. Какое сообщение появится после выполнения предложенной программы?

Текст программы:

Задание 4. Какие данные появятся на листе Excel при вызове пользовательской функции test4 при вводе данных, показанных на палитре функции? Какое сообщение будет выведено оператором Msgbox? Как вы ответите на вопрос программы?

Задание 5.Какое сообщение появится после выполнения предложенной программы?

Текст программы:

10

Задание 6. Какой результат будет показан в окне сообщения программы? Как вы ответите на вопрос программы?

Текст программы:

Задание 7. В ячейке А2 листа вызвана функция test7 с указанными фактическими параметрами. Какой результат появится после ввода функции? Как вы ответите на вопрос программы?

Задание 8. Какой результат будет показан в окне сообщения программы test8, если в диалоговом окне ввода ввести слово “SALUTE!”?

Текст программы: