Научно - Информационный портал



  Меню
  


Смотрите также:



 Главная   »  
страница 1


Министерство образования Республики Беларусь
Белорусско-Российский университет
Кафедра ‘’Автоматизированные системы управления’’

КОМПЬЮТЕРНЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ


Методические указания и задания контрольной работе №1

для студентов заочной формы обучения специальности


«Автоматизированные системы обработки информации»

Могилев 2007

УДК 519.86

Составитель: Ст. преп. Выговская Н.В.

Асс.Галинская И.Г.

Компьютерные информационные технологии. Методические указания и задания к контрольной работе для студентов заочной формы обучения специ­альности «Автоматизированные системы обработки информации»


Одобрены кафедрой “Автоматизированные системы управления”
Рецензент зав. кафедрой АСУ, канд.техн.наук, доц. С.К. Крутолевич
Редактор А.Т. Червинская

Ответственный за выпуск Крутолевич С.К.







С Составление Н.В.Выговская, 2010
Белорусско-Российский университет
Контрольная работа № 1
Номера задач выбираются в соответствии с двумя последними цифрами номера зачетной книжки студента на пересечении соответствующей строки с соответствующим столбцом из таблицы 1 – для контрольной работы № 1

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

Тексты программ должны быть приведены в виде распечаток и к ним приложены блок-схемы решения задач. Необходимо сделать распечатку копии экрана с пользовательской формой и (или) рабочего листа с исходными данными и результатами.

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



Таблица 1 – Варианты задач для контрольной работы № 1

Предпоследняя цифра номера зачетной
книжки

Последняя цифра номера зачетной книжки

9

8

7

6

5

4

3

2

1

0

9

1, 33, 73,93

11, 43, 83, 103

4, 35, 75, 95

9, 50, 70, 90

6, 39, 79, 99

7, 33, 72, 92

3, 43, 62, 102

11, 48, 68, 88

1, 36, 76, 96

6, 48, 67, 87

8

12, 50, 69,89

2, 34, 64, 104

21, 44, 74, 94

5, 37, 77, 97

11, 48, 86, 106

8, 37, 75,94

9, 34, 72, 91

10, 44, 63, 107

13, 41, 81, 101

14, 35, 72, 110

7

15, 41, 79,98

16, 48, 65, 109

17, 35, 71,89

18, 45, 65, 105

19, 39, 77,96

20, 46, 66, 104

21, 35, 70,88

22, 36, 74,93

23, 45, 64, 102

24, 40, 78, 108

6

25, 33, 81, 97

26 40, 80, 100

27 46, 77, 111

28, 36, 78, 99

29, 47, 67, 87

30, 41, 63, 105

31, 45, 67, 88

1, 33, 75, 96

2, 35, 77, 98

3, 46, 67, 109

5

4, 46, 68, 90

5, 35, 77, 99

6, 39, 81, 103

7, 44, 76, 97

8, 37, 79, 100

9, 46, 69, 92

10, 43, 65, 99

11, 44, 68, 110

12, 50, 64, 108

13, 37, 80, 100

4

14, 38, 77, 93

15, 44, 82, 100

16, 49, 69, 91

17, 38, 78, 99

18, 42, 77, 111

19, 38, 70, 98

20, 54, 66, 103

21, 45, 67, 92

22, 43, 72, 105

23, 57, 68, 104

3

24, 47, 67, 99

25, 39, 84, 100

26, 42, 85, 101

27, 47, 70, 102

28 37, 71, 87

29, 56, 72, 88

30, 39, 79, 105

31, 49, 68, 106

2, 47, 75, 91

3, 42, 82, 108

2

4, 39, 73, 109

5 48, 77, 110

6, 41, 63, 95

7, 40, 62, 90

8, 45, 64, 96

9, 36, 62, 94

10, 38, 65, 97

11, 39, 84, 106

12, 50, 68, 102

13, 49, 70,87

1

14, 34, 83, 101

15, 38, 73, 90

16 49, 77, 94

17, 40, 76, 95

18, 38, 81, 107

19, 54, 74, 94

20, 35, 66, 99

21, 36, 79, 92

25, 41, 73, 91

30, 59, 79, 110

0

7, 44, 68, 92

5, 33, 81, 105

16, 37, 67, 102

10, 40, 70, 103

2, 42, 84, 91

6, 36, 75, 88

4, 41, 64, 95

5, 46, 83, 102

23, 49, 67, 92

26 42, 63, 90


4 Варианты задач для контрольной работы № 1

4.1 Требования к выполнению задач:

1) указать какие имена (идентификаторы) были присвоены переменным. Для задач сначала следует записать расчетные формулы и сделать математическое обоснование;

2) написать программу на языке Visual Basic for Applications (VBA), где значения переменных, входящих в выражение, вводятся через пользовательскую форму (или из рабочего листа) EXCEL, а результаты счета выводятся на пользовательскую форму (если она есть) и на рабочий лист EXCEL;

3) если не указано иное, то значения переменных и элементов массива определить самостоятельно, а количество элементов в массиве должно быть не менее 15.



4) указать, какие стандартные функции и операторы языка программирования VBA были использованы.

    1. Задачи для решения на VBA

  1. В одномерном массиве подсчитать количество элементов, кратных заданному числу k.

  2. В массиве С(n) подсчитать количество отрицательных элементов и сумму положительных элементов.

  3. От каждого из m чисел отнять их среднее арифметическое (использовать только один одномерный массив).

  4. Вычислить среднее значение и дисперсию для заданного массива X(k) наблюдений: .

  5. Многочлены Pm(x) и Qn(x) заданы массивами своих коэффициентов. Найти частное и остаток от деления Pm(x) на Qn(x) (в виде массивов коэффициентов).

  6. Каждый элемент вектора A(n) (кроме двух крайних) заменить выражением: , а крайние элементы – выражениями: .

  7. Удалить из массива A(n) нулевые элементы, передвинув на их место следующие элементы без нарушения порядка их следования. В результате должен получиться массив меньшего размера, не содержащий нулей.

  8. В массиве K(n) в порядке убывания представлены достоинства денежных знаков (купюр и монет) валютной системы некоторой страны. Реализовать выдачу в этой системе заданной суммы m минимальным числом денежных знаков.

  9. В массиве A(n) наименьший элемент поместить на первое место, наименьший из оставшихся – на последнее место, следующий по величине – на второе место, следующий – на предпоследнее и так далее до середины массива.

  10. Удалить в заданном массиве X(n) «лишние» (кроме первого) элементы так, чтобы оставшиеся образовывали возрастающую последовательность (за один просмотр массива).

  11. В массиве A(n) каждый третий элемент заменить полусуммой двух предыдущих, а стоящий перед ним – полусуммой соседних с ним элементов. Дополнительный (рабочий) массив не использовать.

  12. В массиве H(t) найти первый и последний нулевые элементы.

  13. В массиве Р(t) найти наиболее длинную цепочку нулей.

  14. Даны два целочисленных массива R(m) и L(n). Найти наибольший элемент массива R, не имеющий себе равных в массиве L.

  15. В целочисленном массиве A(n) найти наиболее длинную цепочку одинаковых подряд стоящих элементов.

  16. В массиве A(n) много совпадающих элементов. Найти количество различных элементов (не упорядочивая массива).

  17. Найти все числа, встречающиеся в массиве A(m) строго два раза (не упорядочивая массива).

  18. В массиве A(n) найти самую длинную последовательность, которая является арифметической прогрессией.

  19. В массиве A(n) найти самую длинную последовательность, которая является геометрической прогрессией.

  20. В массиве A(2n+1), не содержащем одинаковых элементов, найти средний по величине элемент, т.е. такой, что в массиве А ровно n элементов меньших его и столько же элементов больше его. Массив А сохранить (не сортировать), дополнительных массивов не использовать.

  21. Задан массив, состоящий из n неотрицательных элементов. Найти в нем индекс элемента, для которого сумма элементов, стоящих до него, наименее отличается от суммы элементов, стоящих после него.

  22. Дан массив целых чисел. Найти в нем максимальный и минимальный элементы. Вывести все элементы исходного массива, расположенные (находящиеся) между этими экстремальными значениями.

  23. Дан массив целых чисел. Найти в нем максимальный (max) и минимальный (min) элементы. Вывести в порядке возрастания все целые числа из интервала (max;min).

  24. В массиве A(n) вывести номера (индексы) локальных максимумов, т.е. таких ai, что ai-1i>ai+1.

  25. В массиве A(2n) каждый элемент с четными индексами поменять местами с предыдущим.

  26. Многочлен Pn(x) задан массивом своих коэффициентов A(n+1). Найти массив коэффициентов производной этого многочлена.

  27. В массиве Z(n) найти число чередований знака, т.е. число переходов с минуса на плюс или с плюса на минус (нуль знака не имеет).

  28. В массиве А(n) каждый элемент, кроме первого, заменить суммой всех предыдущих элементов.

  29. Каждый из элементов массива X(n) xi заменить средним значением первых i элементов этого массива.

  30. Каждый из элементов массива Х(n) xi заменить минимальным среди первых i элементов этого массива.

  31. Осуществить циклический сдвиг элементов массива T(n) на m позиций влево (при этом необязательно m

  32. Элементы одномерного массива A(n2) построчно расположить в матрице B(n,n).

  33. Строки матрицы A(m,n) заполнены не полностью: в массиве L(m) указано количество элементов в каждой строке. Переслать элементы матрицы построчно в начало одномерного массива T(m·n), подсчитать их количество.

  34. Матрицу M(m,n) заполнить натуральными числами от 1 до m·n по спирали, начинающейся в верхнем левом углу и закрученной по часовой стрелке.

  35. В матрице A(m,n) каждый элемент ai,j заменить минимальным среди элементов подматрицы A/(i,j), расположенной в левом верхнем углу матрицы А.

  36. В матрице A(m,n) каждый элемент ai,j заменить суммой элементов подматрицы A/(i,j), расположенной в левом верхнем углу матрицы А.

  37. Матрицу A(m,n) заполнить следующим образом: для заданных k и l элементу akl присвоить значение 1; элементам, окаймляющим его 9соседние элементы по вертикали, горизонтали и диагоналям) – значение 2; элементам следующего окаймления – значение 3 и так далее до заполнения всей матрицы.

  38. Матрицу K(m,n) заполнить следующим образом: элементам, находящимся на периферии (по периметру матрицы), присвоить значение 1; периметру оставшейся подматрицы – значение 2 и так далее до заполнения всей матрицы.

  39. В массиве X(m,n) каждый элемент (кроме граничных) заменить суммой непосредственно примыкающих к нему элементов по вертикали, горизонтали и диагоналям.

  40. Содержимое квадратной матрицы А(n,n) повернуть на 900 по часовой стрелке, считая центром поворота центр симметрии матрицы.

  41. В каждом столбце и каждой строке матрицы P(n,n) содержится строго по одному нулевому элементу. Перестановкой строк добиться расположения всех нулей по главной диагонали матрицы.

  42. Матрица A(n,n) состоит из нулей и единиц. Найти в ней номера хотя бы одной строки, не содержащей единицы.

  43. Найти среднее арифметическое элементов каждой строки матрицы A(m,n) и вычесть его из элементов этой строки.

  44. В матрице A(m,n) все ненулевые элементы заменить обратными по величине и противоположными по знаку.

  45. Задана матрица A(k,l). Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов соответствующего столбца матрицы А.

  46. Дан массив A(n,m). Все положительные его элементы поместить в начало массива B(n·m), а отрицательные – в начало массива C(n·m). Подсчитать количество тех и других.

  47. Латинским квадратом порядка n называется квадратная таблица размером n·n, каждая строка и каждый столбец которой содержат все числа от 1 до n. Проверить является ли заданная целочисленная матрица латинским квадратом.

  48. Латинским квадратом порядка n называется квадратная таблица размером n·n, каждая строка и каждый столбец которой содержат все числа от 1 до n. Организовать создание такой матрицы.

  49. Магическим квадратом порядка n называется квадратная таблица размером n·n, состоящая из чисел 1,2,3,…,n2 так, что сумма по каждому столбцу, каждой строке и каждой из двух диагоналей равны между собой. Проверить, является ли заданная целочисленная матрица магическим квадратом.

  50. Седловой точкой в матрице называется элемент, являющийся одновременно наибольшим в столбце и наименьшим в строке. Седловых точек может быть несколько (в этом случае они имеют разные значения). В матрице А(n,m) найти седловую точку и ее координаты.

  51. Дана матрица A(m,n). Сравнить сумму элементов нижней треугольной матрицы (элементы, стоящие ниже главной диагонали) с суммой элементов главной диагонали, не вычисляя суммы всех элементов исходной матрицы.

  52. В каждой строке квадратной матрицы найти наибольший и поменять его с соответствующим диагональным.

  53. Найти все числа, каждое из которых встречается в каждой строке матрицы A(m,n).

  54. Проверить, не является ли заданная матрица A(m,n) осесимметричной.

  55. Проверить, не является ли заданная матрица A(m,n) центросимметричной.

  56. Заполнить матрицу A(m,n) числами 1,2,3,4, так, чтобы по горизонтали и вертикали не было одинаковых элементов.

  57. Результаты сессии, состоящей из трех экзаменов, для группы из n студентов представлены матрицей K(n,3). Оценка ставится по пятибалльной системе; неявка обозначена единицей. Подсчитать количество неявок, неудовлетворительных, удовлетворительных, хороших и отличных оценок по каждому предмету.

  58. Просуммировать элементы матрицы A(n,n) по каждой из линий, параллельных главной диагонали.

  59. Для матрицы A(m,n) найти ее норму: .

  60. В матрице A(m,n) найти минимальный среди максимальных элементов столбцов.

  61. Дана матрица A(m,n). Определить разность наибольшего и наименьшего элементов в каждой строке.

  62. Дан текст; найти наибольшее количество цифр, идущих в нем подряд.

  63. Дан текст; определить, содержит ли он символы, отличные от букв и пробела.

  64. Дан текст. Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из малых латинских букв, предшествующих первому вхождению символа *, заменить на цифру 3.

  65. Дан текст. Если в тексте нет символа +, то оставить текст без изменений, иначе каждую из цифр, предшествующую первому вхождению символа +, заменить символом –.

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

  67. Дан текст; выяснить, является ли этот текст десятичной записью целого числа.

  68. Дана символьная матрица размера n на т. Получить последовательно все строки матрицы, исключая те, для которых есть равные среди строк с меньшими номерами.

  69. Дан текст. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Для каждого из слов указать, сколько раз оно встречается среди всех слов, образованных символами данного текста.

  70. Дан текст. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Найти все слова, содержащие наибольшее количество гласных латинских букв (а, е, i, о, и).

  71. Дан текст. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Найти все слова, в которых доля букв a, b максимальна.

  72. Дан текст. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. В тех словах, которые оканчиваются сочетанием букв ing, заменить это окончание на ed.

  73. Дано натуральное число п. Получить символьное представление п в виде последовательности цифр и пробелов, отделяющих группы по три цифры, начиная справа.

  74. Дано натуральное число п (n≤1000). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д.).

  75. Дано натуральное число п, равное выраженной в копейках цене некоторого товара, например 317, 5005, 100 и т. д. Выразить цену в рублях и копейках, например 3 руб. 17 коп., 50 руб. 05 коп., 1 руб. 00 коп. и т. д. (число копеек записывается всегда двумя цифрами).

  76. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, –, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Выяснить, встречается ли в данном тексте группа букв one.

  77. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, –, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Выяснить, верно ли, что в данном тексте больше групп букв, чем групп знаков.

  78. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, –, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Найти число таких групп букв, которые начинаются и кончаются одной и той же буквой.

  79. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, –, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Найти все такие группы букв, в которые буква а входит не менее двух раз.

  80. Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, –, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. Найти самую длинную группу цифр. Если эту наибольшую длину имеет несколько групп, то взять первую по порядку.

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

  82. Дан текст. Найти номер первой по порядку группы цифр, начинающейся цифрой 2.

  83. Дан текст. Найти число тех групп букв, которые заканчиваются той же буквой, что и первая группа букв.

  84. В заданном тексте найти самое длинное слово.

  85. Проверить, является ли данное слово словом-палиндромом, одинаково читающееся как слева направо, так и справа налево (например, шалаш, Анна).

  86. Во введенном слове подсчитать количество различных букв и вывести сами буквы.

    1. Задачи для создания приложения с формой и заполнения табличной базы данных в EXCEL

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

  2. Картотека Интерпола. Данные по каждому зарегистрированному преступнику: фамилия, имя, кличка, рост, цвет волос и глаз, особые приметы, гражданство, место и дата рождения, последнее место жительства, знание языков, преступная профессия, последнее дело и так далее. Выборка по любому множеству признаков. Сохранение данных в текстовый файл.

  3. Бюро знакомств. База потенциальных женихов и невест: пол, регистрационный номер, дата регистрации, сведения о себе, требования к партнеру. Выбор подмножества подходящих кандидатур. Сохранение данных в текстовый файл.

  4. Биржа труда. База безработных: анкетные данные, профессия, образование, место и должность последней работы, причина увольнения, семейное положение, жилищные условия, контактные координаты, требования к будущей работе. Поиск и регистрация клиента; формирование объявлений для печати с сохранением данных в текстовый файл.

  5. Записная книжка. Анкетные данные, адреса, телефоны, место работы или учебы, должность знакомых, коллег и родственников, характер знакомства, деловые качества . Поиск по произвольному шаблону. Сохранение данных в текстовый файл.

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

  7. Справочник потребителя (служба быта). База предприятий бытового обслуживания города: название, разряд, адрес и телефоны, специализация, перечень оказываемых услуг, форма собственности, часы и дни работы. Поиск предприятий по заданной услуге с сохранение м данных в текстовый файл.

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

  9. Магазин с одним продавцом. Компьютер вместо кассового аппарата. База наличия товаров: наименование, единица измерения, цена единицы, количество, дата последнего завоза. Регистрация поступления товара (как старых, так и новых наименований). Оформление покупки: выписка чека с сохранением данных в текстовый файл.

  10. Отдел кадров. База данных о сотрудниках фирмы: паспортные данные, образование, специальность, подразделение, должность, оклад, даты поступления в фирму и последнего назначения и т. д. Сокращение штатов: выбор для увольнения лиц пенсионного и предпенсионного возраста, подготовка приказа. с сохранением данных в текстовый файл.

  11. Генеалогическое дерево. Паспортные данные членов некоторого родового клана; ссылки на детей (или на родителей). Поиск всех предков для указанного лица с сохранением данных в текстовый файл.

  12. Склад. База товаров, хранящихся на складе: наименование, единица измерения, цена единицы, количество, дата последнего завоза. Регистрация поступления товара (формирование приход ной. наклад ной) и отгрузки (расходная накладная) с сохранением данных в текстовый файл.

  13. Касса автовокзала. Расписание автобусов: номер рейса, конечный и промежуточный пункты, время отправления. Количество свободных мест на каждом рейсе. Выбор ближайшего рейса до заданного пункта (при наличии свободных мест), оформление билетов с сохранением данных в текстовый файл.

  14. Администратор гостиницы. Список номеров: класс, число мест. Список гостей: паспортные данные, даты приезда и отъезда, номер. Поселение гостей: выбор подходящего номера (при наличии свободных мест), регистрация, оформление квитанции с сохранением данных в текстовый файл. Поиск гостя по ф.и.о.

  15. Справочник меломана. База групп и исполнителей; песен; база дисков с перечнем песен (в виде ссылок). Выбор всех песен заданной группы. Сохранение данных в текстовый файл.

  16. Ежедневник. База намечаемых мероприятий — дата, время и протяженность, место проведения. Автоматическое напоминание ближайшего дела: по текущей дате и времени; планируемых дел. Просмотр дел на завтра, послезавтра и так далее. Сохранение данных в текстовый файл.

  17. Терминология. База определений какой-либо науки: вводимый термин, его толкование (определение), ссылки на используемые термины. Поиск термина с сохранением данных в текстовый файл.

  18. Шеф-повар. База рецептур блюд: раскладка, рецепт приготовления. База продуктов на складе: наименование, цена, количество. Формирование меню на день (на заданное число персон); званый ужин. Проверка достаточности запасов; формирование расходной накладной на склад, корректировка запасов. Сохранение данных в текстовый файл.

  19. Справочник лекаря. База болезней: название, симптомы, процедуры, перечень рекомендуемых лекарств с указанием требуемого количества. База медикаментов на складе: название, количество, взаимозаменяемость. Формирование рецепта после осмотра больного, проверка наличия лекарств, корректировка запасов. Сохранение данных в текстовый файл.

  20. Зачисление абитуриентов. База абитуриентов: анкетные данные, совокупность оценок на вступительных экзаменах, готовность учиться на договорной основе. Выбор для зачисления заданного количества абитуриентов; формирование для собеседования списка тех, кто набрал предельный проходной балл, но не может платить за образование. Сохранение данных в текстовый файл.

  21. Обмен жилья. База предложений по обмену: район, площадь, планировка и т. д.; требования к вариантам обмена. Регистрация клиентов, выбор подходящих вариантов, удаление при состоявшемся обмене или отказе. Развитие задачи. Возможность съезда или разъезда, в том числе «несколько на несколько»; «возможны варианты». Сохранение данных в текстовый файл.

  22. Справочник абитуриента. База вузов: наименование, адрес, перечень специальностей, конкурс прошлого года по каждой специальности {дневной, вечерней, заочной форм), размер оплаты при договорном обучении. Выбор по разным критериям: все о данном вузе; все о данной специальности, поиск минимального конкурса по данной специальности или вообще. Сохранение данных в текстовый файл.

  23. Справочник почтовой индексации. Республика, область (край), район, населенный пункт, почтовый индекс. Поиск по любой совокупности полей (кроме последнего); иерархическая связь между полями (обратите внимание, что, например, Павловск есть в Алтайском крае, Воронежской и Ленинградской областях). Сохранение данных в текстовый файл.

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

  25. Ломбард. База хранимых товаров и недвижимости: анкетные данные клиента, наименование товара, оценочная стоимость; сумма, выданная под залог, дата сдачи, срок хранения. Операции приема товара, возврата, продажи по истечении срока хранения. Сохранение данных в текстовый файл.




    1. Примеры выполнения заданий

Пример 1.
Решить задачу на VBA


Условие:

Можно ли коробку размером abc упаковать в посылку размером rst? «Углом» укладывать нельзя.


Оформление и описание решения:

  1. Построим блок-схему алгоритма. Приведена на рисунке 5.

  2. Напишем следующую программу.

Sub short13()

Dim A(1 To 3) As Integer 'массив габаритов коробки

Dim B(1 To 3) As Integer 'массив габаритов посылки

Dim i As Integer

Dim OK As Boolean 'переменная-индикатор возможности поместить ко­робку в посылку

OK = False 'изначально коробка не может быть помещена в посылку

'чтение габаритов коробки и посылки

For i = 1 To 3

A(i) = Cells(i + 2, 1) 'считывание габаритов коробки из ячеек A3:A5 рабочего листа

B(i) = Cells(i + 2, 3) 'считывание габаритов посылки из ячеек C3:C5 рабочего листа

Next i


'следующий цикл позволяет перебрать все возможные позиции того, как коробка будет «помещаться» в посылке

For i = 1 To 3

'условие, проверяющее есть ли возможность расположить коробку в посылке

'оператор Mod, остаток от деления, используется здесь для того, чтобы значения индексов

'массива габаритов коробки не выходили за допустимые пределы, т.е. не были больше трёх.

If ((B(1) > A(i) And B(2) > A(i Mod 3 + 1) And B(3) > A((i + 1) Mod 3 + 1)) Or _

(B(3) > A(i) And B(2) > A(i Mod 3 + 1) And B(1) > A((i + 1) Mod 3 + 1))) Then OK = True

Next i


If (OK = True) Then MsgBox ("Получается!") Else MsgBox ("Ничего не выходит")

End Sub


Рис. 5 – Блок-схема алгоритма программы


  1. Составим шаблон для ввода данных о размерах коробки и посылки на рабочем листе EXCEl.


Рис. 6 – Пример тестирования программы

Рис. 7 – Пример тестирования программы

Создание программы завершено. В ходе её работы требования, данные в условии, выполняются. Это подтверждает правильность составления алго­ритма. Результаты тестирования программы на рисунках 6 и 7.



  1. Описание используемых операторов:

For ... Next – оператор цикла, повторяющий последовательность дейст­вий определённое количество раз;

If … Then ... Else …– оператор условия, выполняющий одну из после­довательностей действий в зависимости от истинности/ложности условия;

Mod – оператор, возвращающий остаток от деления (x Mod y) числа x на y;

MsgBox S – оператор вывода на экран окна, содержащего значение строковой переменной S.



Пример 2.
Создание приложения с формой и заполнения табличной базы данных в EXCEL

В качестве учебного примера представлены этапы решения задачи «Касса автовокзала» с описанием используемых средств языка VBA.



Условие:

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


Подробное описание решения.

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

Начнем с разработки структуры нашего будущего меню (рисунок 8).

Рис 8 – Структурная схема меню приложения


Теперь рассмотрим подробнее алгоритм создания меню и его пунктов.

Для создания пользовательского меню используется объект CommandBar и семейство CommandBars (для программирования строк меню и панели инструментов). В семействе CommandBars хранятся все строки меню и панели инструментов конкретного приложения. Поэтому семейство CommandBars содержится в объекте Application (родительском приложении). В свою очередь каждый объект CommandBar содержит семейство объ­ектов CommandBarControls, состоящее из всех элементов управления данной панели инструментов. Свойство Controls объекта CommandBar возвращает семейство CommandBarControls, элементы которого относятся к одному из трех типов:

- CommandBarButton:

Кнопка или элемент меню, вызывающий выполнение команды или подпрограммы.

- CommandBarComboBox:

Сложно организованное меню, похожее на поле ввода, раскрываю­щийся список или поле со списком.

- CommandBarPopUp:

Вложенное меню.

В общем виде иерархию объектов CommandBars можно изобразить следующим образом (рисунок 9).


Рис 9 – Иерархия объекта CommandBar
Так как наша панель меню будет создаваться применительно ко всей активной рабочей книге, то процедуры, описывающие ее создание, следует разрабатывать в модуле «ЭтаКнига» (рисунок 10).

Начнем написание алгоритма с описания процедуры Workbook_Open, которая запускается автоматически сразу же при открытии приложения.


Private Sub Workbook_Open()

'Вызов процедуры создания

пользовательского меню

MenuBuilder

'Вызов процедуры для

пользовательского меню

UserForm4.Show 'Вызов заставочного окна UserForm4

End Sub


Рис 10 – Расположение модуля «ЭтаКнига»

При этом будет вызвана процедура создания пользовательского меню MenuBuilder. А также выведена на экран форма UserForm4 (на рисунке 11), которая пред­ставляет собой заставку-приветствие и содержит всего одну процедуру CommandButton1_Click.


'UserForm4 предназначена для использования в качестве заставки при запуске
Private Sub CommandButton1_Click()

Unload UserForm4

End Sub


Меню







UserForm4

CommёandButton1_Click

Рис 11 – Запуск приложения
Рассмотрим алгоритм процедуры MenuBuilder, необходимой для того, чтобы создать меню пользователя для данного приложения.
Private Sub MenuBuilder()

'Построение пользовательского меню

'Переменная a будет переменной объектного типа CommandBar (Панель инструментов)

Dim a As CommandBar



'Создаем свою панель меню с помощью метода Add в родительском приложении Application

'Для этого обратимся к объекту CommandBars (Панель инструментов) и к его методу Add

'!!!Помните, что обращение к нижележащим объектам производится с помощью разделителя "." (точки)!!!

Set a = Application.CommandBars.Add(Name:="m", Po­sition:=msoBarTop, MenuBar:=True, Temporary:=True)



'Создание панели инструментов, где параметр:

'Name - имя нашей панели меню

'Position - положение на окне Excel (в на­шем случае выше всех остальных панелей)

' MenuBar - замена активной строки меню нашей строкой меню (True - Да, False - Нет)

' Temporary - указатель на то, удалять ли нашу панель после закрытия разрабатываемой программы

'(Если True, то удалять, если False, то сохранить)

'Здесь под переменной скрывается наша панель меню. Конечно, к ней можно бы было обращаться непосредственно

'Application.CommandBars(Name:="m"), но проще ис­пользовать для этого переменную типа Object (Объект)

With a'Сделаем нашу панель видимой с помощью свойства Visible

.Visible = True

'Начнем создавать на нашей панели вложенные меню (семейство Controls объекта Command Bars)

With .Controls



'Добавим новое вложенное меню

With .Add(Type:=msoControlPopup)



'Добавление вложенного меню "Файл" на нашу панель меню

.Caption = "Файл" 'Название меню

With .Controls

With .Add(Type:=msoControlButton)



'Добавление пункта "Создать новый лист" в выпа­дающее меню "Файл"

.Caption = "Создать новый лист" 'Название пункта меню

.OnAction = "NewDoc" 'Запуск процедуры при вы­боре пункта "Создать новый лист" (расположена в Module1)

'Свойство .OnAction объекта Controls очень важно, так как оно по‘зволяет связать процедуру, которая Вы хотите, чтобы за­пускалась ‘при выборе (нажатии) данного пункта меню (элемента семейства ‘Controls), с этим пунктом

End With


With .Add(Type:=msoControlButton)

'Добавление пункта "Закрыть лист" в выпадающее меню "Файл"

.Caption = "Закрыть лист" 'Название пункта

.OnAction = "Close1" 'Запуск процедуры при выборе пункта "Закрыть лист" (расположена в Module1)

End With


With .Add(Type:=msoControlButton)

'Добавление пункта "Выход" в выпадающее меню "Файл"

.Caption = "Выход" 'Название пункта

.OnAction = "ExitDoc" 'Запуск процедуры при вы­боре пункта "Выход" (расположена в Module1)

End With


End With

End With


'Создадим второе всплывающее меню "Сервис" на нашей па­нели

With .Add(Type:=msoControlPopup)

.Caption = "Сервис"

'С помощью метода Controls.Add добавим к новому меню не­сколько пунктов

With .Controls

With .Add(Type:=msoControlButton)

.Caption = "Добавить запись" 'Пункт "Добавить за­пись"

.OnAction = "Enter" 'Вызов процедуры, отвечающей за ввод дан‘ных при выборе данного меню

End With


With .Add(Type:=msoControlButton)

.Caption = "Удалить запись" 'Пункт "Удалить за­пись"

.OnAction = "Remove" 'Вызов процедуры удале­ния вы‘деленной записи при выборе пункта "Удалить запись"

End With


With .Add(Type:=msoControlButton)

.Caption = "Забронировать билет" 'Пункт "Забро­нировать билет"

.OnAction = "Z_b" 'Вызов процедуры заказа би­лета

при выборе пункта "Забронировать билет"

End With

With .Add(Type:=msoControlButton)

.Caption = "Сортировка" 'ПунктСортировка

.OnAction = "Sort" 'Вызов процедуры сортировки

при выборе пункта "Сортировка"

End With


With .Add(Type:=msoControlButton)

.Caption = "Поиск" 'Пункт "Поиск"

.OnAction = "Find" 'Вызов процедуры поискапри выборепункта "Поиск"

End With


End With

End With


'Создадим последнее третье вложенное меню "Справка" на нашей

панели меню

With .Add(Type:=msoControlPopup)

.Caption = "Справка" 'Название меню

With .Controls

'Создадим в этом меню пункт "О программе"

With .Add(Type:=msoControlButton)

.Caption = "О программе"

.OnAction = "AboutProg" 'Вызов процедуры,

представляющей информацию о программе

.Style = msoButtonIconAndCaption 'Разрешим помещениекартинки рядом с названием пункта



'Создание значка для пункта меню

.FaceId = 466 'Задание значка с кодом 466

End With

End With


End With

End With


End With

End Sub
Результатом работы данной процедуры будет панель меню следующего вида (рисунки 12, 13, 14, 15).





Рис 12 – Внешний вид панели меню Рис 13 – Вложенное меню Файл


Рис 14 – Вложенное меню Сервис Рис 15 – Вложенное меню Справка
Рассмотрим работу каждого пункта меню подробно. Начнем с пункта Создать новый лист меню Файл, отвечающего за создание нового листа Excel, на котором будет расположена вся информация о рейсах.

Процедура NewDoc, расположенная в модуле Module1, необходима для запуска формы UserForm6, предназначенной для ввода имени нового листа.


Public Sub NewDoc()

'Открытие формы для создания нового листа

UserForm6.Show

End Sub

'UserForm6 используется для ввода имени нового рабо­чего листа и его создания
Private Sub CommandButton1_Click()

Dim i As Boolean, a As String, w As Work­sheet

i = False

Do

a = CStr(UserForm6.TextBox1)



For Each ws In Worksheets

'Проверим, существует ли лист с таким же именем, созданный ранее,

'и не ввели ли мы по ошибке пустую строку как имя нового листа

If ws.Name = a Or a = "" Then

MsgBox "Лист с данным именем уже существует либо был сделан некорректный ввод!", _

vbCritical, "Ошибка": Exit Sub

Else: i = True: End If

Next


Loop Until i = True

'Для добавления нового листа в текущую книгу восполь­зуемся методом

'Sheets.Add

Sheets.Add



'Присвоим новому текущему рабочему листу введенное нами имя

ActiveSheet.Name = a

create

'Вызов процедуры, отвечающей за формирования внеш­него вида базы данных на новом листе Excel

Unload Me

End Sub

Private Sub CommandButton2_Click()



Unload Me

End Sub


Private Sub UserForm_Initialize()

UserForm6.TextBox1.SetFocus

End Sub
Форма выглядит следующим образом (рисунок 16).

Создадим новый рабочий лист (рисунки 17, 18).




Рис. 16 – Внешний вид формы UserForm6

Р
ис 17 – Ввод имени нового рабочего листа


Рис 18 – Создание нового рабочего листа

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


Public Sub create()

'Задание заголовков и ширины столбцов

Range("1:1").Select: Selection.Font.FontStyle = "полужирный": Range("A1:A1").Select

Worksheets(ActiveSheet.Name).Cells(1, 1) = "№ рейса"

Worksheets(ActiveSheet.Name).Cells(1, 2) = "Промежуточный пункт"

Worksheets(ActiveSheet.Name).Cells(1, 3) = "Конечный пункт"

Worksheets(ActiveSheet.Name).Cells(1, 4) = "Время отправления"

Worksheets(ActiveSheet.Name).Cells(1, 5) = "Кол-во свободных мест"

Columns("A:A").ColumnWidth = 12: Col­umns("B:B").ColumnWidth = 27

Columns("C:C").ColumnWidth = 27: Col­umns("D:D").ColumnWidth = 25

Columns("E:E").ColumnWidth = 24

End Sub
Процедура Close1, расположенная в модуле Module1, удаляет текущий рабочий лист.
Public Sub Close1()

'Закрывает текущий рабочий лист с базой данных, путем его удаления

ActiveWindow.SelectedSheets.Delete

End Sub
Процедура ExitDoc, расположенная в модуле Module1, завершает работу приложения.
Public Sub ExitDoc()

'Закрытие программы

Application.Quit

End Sub
Перейдем к рассмотрению меню Сервис.

Рассмотрим структуру алгоритма пункта Добавить запись меню Сер­вис.

Процедура Enter, расположенная в модуле Module1, вызывает форму UserForm1, предназначенную для ввода информации о новом рейсе.
Public Sub Enter()

'Открытие формы для ввода данных

UserForm1.Show

End Sub

'UserForm1 отвечает за корректный ввод данных в базу
Private Sub CommandButton1_Click()

Dim i As Integer



'Проверим правильность ввода исходных данных

'Функция IsNumeric проверяет, является ли введенная переменная чис‘лом так как часы и минуты вводятся в виде чисел

If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox6.Text = "" Or IsNumeric(TextBox3.Text) = False _

Or IsNumeric(TextBox4.Text) = False Or IsNu­meric(TextBox5.Text) = False Then

MsgBox "Ошибка ввода.", vbApplicationModal, "Внимание": TextBox1.SetFocus: Exit Sub

End If

i = Application.CountA(Range("A:A")) + 1



'Переменной i присваивается количество непустых за­писей в базе

'Для этого мы воспользовались методом CountA объ­екта ‘Application

'"A:A" означает, что мы ищем непустые записи только в столбце A ‘(номера рейсов),так как в других столбцах непустых записей будет ‘столько же

'Прибавляем единицу, так как следующая ячейка снизу пуста, туда и внесем новую запись

'Объект Worksheets - это лист Excel, с которым мы работаем

'Чтобы указать конкретный лист, с которым ведется работа, ‘необходимо указать номер листа (например, Worksheets(1) или ‘Worksheets("лист1")) или ввести пара­метр ActiveSheet.Name, который указывает имя окрытого листа, где в нашем случае хранится база данных

'Конечно, перед этим необходимо присвоить ActiveSheet.Name имя нашего листа, что сделано в пользо­вательской процедуре NewDoc

Worksheets(ActiveSheet.Name).Cells(i, 1) = i - 1



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

Worksheets(ActiveSheet.Name).Cells(i, 2) = TextBox1

Worksheets(ActiveSheet.Name).Cells(i, 3) = TextBox2.Text

Worksheets(ActiveSheet.Name).Cells(i, 4) = TextBox6.Text +_ " в " + TextBox3.Text + "," + TextBox4.Text

Worksheets(ActiveSheet.Name).Cells(i,5)=CInt(TextBox5.Text)

End Sub
Private Sub CommandButton2_Click()

Unload Me

'Закрытие формы без сохранения в TextBox введенной информации

End Sub



Рис 19 – Внешний вид формы UserForm1


Рис 20 – Результат работы процедуры UserForm1
Процедура Remove, расположенная в модуле Module1, отвечает за удаление выбранного рейса из базы.
Public Sub Remove()

'Удаление записи со смещением строк

Dim a As Integer: Dim i As Integer: Dim k As Integer: Dim p As Integer



'Найдем номер выделенной ячейки, которую вместе со всей строкой хочет удалить пользователь

a = Application.ActiveCell.Row



'Запишем номер рейса данной строки, так как строки могутбыть отсортированы не по возрастанию номеров рейсов

p = CInt(Worksheets(ActiveSheet.Name).Cells(a, 1))



'Отсортируем в порядке возрастания номеров рейсов записи в базе для более удобного доступа

Worksheets(ActiveSheet.Name).Range("A2:" & "E" & Application.CountA(Range("A:A"))).Sort Key1:=Worksheets(ActiveSheet.Name).Range(Chr(65) & "2")

Worksheets(ActiveSheet.Name).Range("A1").Select

'Произведем сдвиг на одну строку вверх всех строк, лежащих ‘ниже удаленной

a = p + 1

If a = 1 Then: MsgBox "Заголовок нельзя удалить!", vbCritical, "Ошибка": Exit Sub

For k = a To Application.CountA(Range("A:A")) 'Цикл от текущей до последней строки

For i = 2 To 6

Worksheets(ActiveSheet.Name).Cells(k, i) = Worksheets(ActiveSheet.Name).Cells(k + 1, i)

Worksheets(ActiveSheet.Name).Cells(k + 1, i) = ""

Next i


Next k

Worksheets(ActiveSheet.Name).Cells(Application.CountA(Range("A:_A")), 1) = ""

End Sub
Результат работы процедуры Remove представлен на рисунках 19, 20.

Рис. 21 – Указание рейса, подлежащего удалению

Рис. 22 – Запись удалена
Рассмотрим создание пункта Забронировать билет меню Сервис.


Рис. 23 – Структура разработки пункта Забронировать билет
Public Sub Z_b()

'Открытие формы для бронирования билета с сохранением в файл

UserForm3.Show

End Sub
'UserForm3 предназначена для заказов билетов

Private Sub CommandButton1_Click()

If TextBox1.Text = "" Or IsNumeric(TextBox2.Text) = False Then

MsgBox "Ошибка ввода.", vbApplicationModal, "Внимание": TextBox1.SetFocus: Exit Sub

End If

If Worksheets(ActiveSheet.Name).Cells(CInt(TextBox2) + 1, 5) > 0 Then



'Для корректного поиска номера рейса, билет на который нужно заказать отсортируем сначала наши записи по возрастанию номеров рейсов (по столбцу A)

Worksheets(ActiveSheet.Name).Range("A2:" & "E" & _ Application.CountA(Range("A:A"))).Sort _ Key1:=Worksheets(ActiveSheet.Name).Range(Chr(65) & "2")_

Worksheets(ActiveSheet.Name).Range("A1").Select

Worksheets(ActiveSheet.Name).Cells(CInt(TextBox2) + 1, 5)_ = Worksheets(ActiveSheet.Name).Cells(CInt(TextBox2) + 1, 5) - 1



'Внесем информацию о забронированных билетах в текстовый файл последовательного доступа

Open "file.txt" For Output As #1

Print #1, TextBox1; Tab; "Номер рейса - "; TextBox2

Close #1


Else: MsgBox "Билетов на этот рейс больше нет или нет такого рейса!", , "Нет билетов"

End If


End Sub
Private Sub CommandButton2_Click()

Unload Me

End Sub

Рассмотрим создание пункта Сортировка меню Сервис, отвечающего за упорядочивание записей по выбранному критерию.




Рис. 24 – Внешний вид формы UserForm3



Рис. 25 – Структура разработки пункта Сортировка
Процедура Sort, расположенная в модуле Module1, предназначена для вызова формы UserForm5, где и будет происходить выбор критерия сорти-ровки.


ComdoBox1






Рис. 26 – внешний вид UserForm5 (для хранения критериев сортировки используется объект ComboBox)

Public Sub Sort()



'Открытие формы для сортировки данных

UserForm5.Show

End Sub
'UserForm5 предназначена для ввода критерия сортировки
Private Sub CommandButton1_Click()

Worksheets(ActiveSheet.Name).Range("A2:" & "E" & Application.CountA(Range("A:A"))).Sort Key1:=Worksheets(ActiveSheet.Name).Range(Chr(65 + ComboBox1.ListIndex) & "2")

Worksheets(ActiveSheet.Name).Range("A1").Select

Unload Me

End Sub

Private Sub UserForm_Initialize()



Dim i As Integer

For i = 1 To Application.CountA(Range("1:1"))



'Внесение непустых записей в объект ComboBox1 (всплывающий список) на форме из текущего рабочего листа Excel

ComboBox1.AddItem Worksheets(ActiveSheet.Name).Cells(1, i)

Next i

ComboBox1.ListIndex = -1



'Свойство ListIndex указывает на номер записи, которая будет выведена на объект ComboBox1. В данном случае -1 указывает, что на верхнюю строку ввода не будет выведено ничего (чтобы увидеть все записи, просто нажмите на стрелку, находящуюся справа от строки ввода списка)

End Sub
Рассмотрим пункт Поиск меню Сервис, отвечающего за поиск ближайшего по времени рейса до нужного пункта.


Public Sub Find()

'Открытие формы для поиска данных

UserForm2.Show

End Sub

'UserForm2 предназначена для поиска ближайшего рейса в данный город
Private Sub CommandButton1_Click()

Dim i As Integer: Dim j As Integer: Dim n As Integer

Dim flag As Boolean

If TextBox1.Text = "" Then

MsgBox "Ошибка ввода.", vbApplicationModal, "Внимание": TextBox1.SetFocus: Exit Sub

End If


n = 0

'Метод Sort позволяет отсортировать, по умолчанию, в порядке возрастания все рейсы в базе по их номерам, времени оправления и т.п.

'Для этого выбираем наш рабочий лист с базой данных Worksheets(ActiveSheet.Name)

'Указываем все заполненные ячейки от A2 до E№, где № - номер последней снизу заполненной строки, который мы найдем с помощью метода CountA(A:A)

'Key1 - это параметр сортировки, присвоим ему значение D2

'Это значит, что сортировка будет вестись по столбцу D, то есть по времени отправления

Worksheets(ActiveSheet.Name).Range("A2:" & "E" & Application.CountA(Range("A:A"))).Sort Key1:=Worksheets(ActiveSheet.Name).Range("D2")



'С помощью метода Select устанавливаем курсор на ячейку A1

Worksheets(ActiveSheet.Name).Range("A1").Select

flag = False

For i = 2 To Application.CountA(Range("A:A"))

For j = 2 To 3

If Worksheets(ActiveSheet.Name).Cells(i, j) = TextBox1.Text Then n = CInt(Worksheets(ActiveSheet.Name).Cells(i, 1)): flag = True: Exit For

Next j

If flag Then Exit For



Next i

If n = 0 Then

MsgBox "Необходимый рейс не найден!"

Else: MsgBox " Необходим рейс: №" & n & Chr(13) & Chr(10) & "Время отправления: " _

& Worksheets(ActiveSheet.Name).Cells(n + 1, 4)

End If


End Sub
Private Sub CommandButton2_Click()

Unload Me

End Sub



Рис. 27 – Внешний вид формы UserForm2

Процедура AbouProg вызывает форму UserForm7, на которой размещена краткая информация о нашей программе.

Public Sub AboutProg()

'Открытие формы "О программе"

UserForm7.Show

End Sub

'UserForm7 предназначена для вывода краткой информации о программе


Рис. 28– Внешний вид формы UserForm7
На этом создание программы завершено.

Для пояснения алгоритма работы процедур поиска и сортировки приведем блок-схемы алгоритмов и описание используемых операторов и функций.




Рис 29 – Блок-схема алгоритма сортировки


Рис 30 – Блок-схема алгоритма процедуры поиска записи
Ф
ункция проверки типа IsNumeric(x) проверяет является ли переменная (x) числовым значением, если да, то функция принимает значение True (истина), иначе– False (ложь).

Условный оператор If…Then…Else…End If.

Синтаксис:

If <Условие> Then [<операторы 1>] [Else [<операторы 2>]

Если условие принимает значение True, то выполняется оператор (или операторы) после Then, если False, то выполняется оператор (или операторы) после Else. Ветвь Else является необязательной. Допускается также использование формы синтаксиса в виде блока:



If < Условие 1> Then

[<операторы 1>]

[ElseIf < Условие-n> Then

[<операторы n>] …

[Else]

[<Иначе операторы >]]



End If
Оператор цикла For позволяет повторять группу операторов заданное число раз. Синтаксис:

For <счётчик цикла> =<начало> To <конец> [step<шаг>]

<тело цикла>

[Exit For]



Next [<счётчик_цикла>]

Здесь <счётчик_цикла>–это числовая переменная. В начале выполнения цикла она принимает значение, задаваемое числовым выражением <начало>. Числовое выражение <конец>– задает заключительное выражение счётчика цикла. Числовое выражение <шаг> не обязательно и по умолчанию равно 1. <Тело цикла>– это последовательность операторов, которая будет выполнена заданное число раз. Если шаг положителен, цикл завершится, когда впервые выполнится условие:



<счетчик_цикла> > <конец>

Если шаг цикла отрицателен, условие его завершения:



<счетчик_цикла> < <конец>

Это условие проверяется перед началом выполнения цикла, а затем после каждого прибавления шага к счётчику цикла в операторе Next. Если оно выполнено, управление передается на оператор следующий за Next, нет–выполняются операторы из тела цикла. Завершить цикл For…Next можно и с помощью оператора Exit For. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.


Функция MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис:

MsgBox (promt[, button] [, title])

Аргументы:

- promt–строковое выражение, отображаемое как сообщение в диалоговом окне;

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

- title–строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.

Or - логическая операция “или”.

And - логическая операция “и”.
Оператор цикла с постусловием DoLoop Until.

Синтаксис:



Do

<тело цикла>

[Exit Do]



Loop Until <условие>

<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do).
Оператор присоединения свойств к объекту With.

Синтаксис:



With <объект>



.<свойство>



End With
Список рекомендуемой литературы

    1. Вычислительная техника и программирование. Методические указания к выполнению контрольных работ и курсового проектирования для студентов заочной формы обучения. ГУВПО «Белорусско-Российский Университет», 2004.

    2. Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97-Русская редакция TOO “Channel Trading Ltd.” 1997 – 517 c.

    3. А.Гарнаев. Самоучитель VBA – СПб.:БХВ –Санкт-петербург, 2001.-512с.

    4. П. Санна и др. Visual Вasic для приложений (версия) в подлиннике: пер.с англ., BHV – Санкт-Петербург,1999 – 704 с., ил.

    5. Гетц К., Гилберт М. Программирование на Visual Basic 6 и VBA. Руководство разработчика/ Пер. с англ. Киев: Издательская группа BHV.2001.-2001

    6. Симонович С.В. и др. Информатика. Базовый курс. – СПб: Питер, 2000.

    7. Хомоненко А.Д. и др. Основы современных компьютерных технологий: Уч. пособие. — СПб.: КОРОНА принт, 1998.

    8. Гарнаев А.Ю. Самоучитель VBA. – СПб, БХВ –Санкт-Петербург, 2002.

    9. Гарнаев А. Ю. Excel, VBA, Internet в экономике и финансах. - СПб.: БХВ-Петербург, 2002. - 816 с: ил.

    10. Васильев А. VBA в Office 2000: учебный курс. - СПб, Питер, 2002.

    11. Кузьменко В.Г. VBA 2002. – М.: Издательство БИНОМ, 2002.

    12. MS OfficeХР: Разработка приложений / Под ред Ф.А. Новикова. СПб.: БХВ-Петербург, 2003.

    13. Харрис, Мэтью. Освой самостоятельно программирование для Microsoft Excel 2000 за 21 день. : Пер. с англ. : Уч. пос. – М. : Издательский дом "Вильяме", 2000. – 880 с. : ил. – Парал. тит. англ.




страница 1

Смотрите также: