Алгоритмизация и программирование

  • pdf
  • 10.05.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 22. Алгоритмизация и программирование.pdf

Лекция 6 (версия VBA с 2007г.)

 

1. Алгоритмизация и программирование

1. Алгоритмизация и программирование...................................................................................................... 1

1.1. Понятие алгоритма. Свойства алгоритма............................................................................................ 2

1.2. Этапы решения задач на компьютере................................................................................................... 2

1.3. Способы записи алгоритмов.................................................................................................................. 3

1.3.1. Блок-схемы алгоритмов...................................................................................................................... 3

1.3.2. Алгоритмический язык....................................................................................................................... 4

1.5. Основные принципы структурного программирования..................................................................... 4

1.6. Типы алгоритмов.................................................................................................................................... 5

1.7. Классификация языков программирования....................................................................................... 10

2. Visual Basic Application............................................................................................................................. 10

2.1. Алфавит................................................................................................................................................. 11

2.2. Классификация данных........................................................................................................................ 11

2.4. Стандартные функции.......................................................................................................................... 13

Программы на VBA.................................................................................................................................... 14

3. Основные конструкции........................................................................................................................... 14

3.1. Линейные программы.......................................................................................................................... 14

4. Встроенные диалоговые окна................................................................................................................ 15

4.1. Окно сообщения MsgBox..................................................................................................................... 15

4.2. Окно ввода InputBox............................................................................................................................ 15

5. Работа с листом Excel............................................................................................................................. 16

6. Вызов макроса по кнопке....................................................................................................................... 17

3.2. Условный оператор IF.......................................................................................................................... 17

3.3. Оператор выбора Select Case............................................................................................................... 20

3.4. Циклические алгоритмы...................................................................................................................... 21

3.4.1. Цикл с параметром For Next............................................................................................................ 22

3.4.2. Цикл Do Loop..................................................................................................................................... 23

3.4.3. Вложенные циклы............................................................................................................................. 24

3.4.4. Решение задач.................................................................................................................................... 25

3. Работа с массивами................................................................................................................................. 25

3.1. Статические массивы........................................................................................................................... 26

3.2. Динамические массивы........................................................................................................................ 28

3.3. Решение задач....................................................................................................................................... 29

3.4. Сортировка массива............................................................................................................................. 30

3.5. Двухмерные массивы........................................................................................................................... 31

4. Строковые операторы и функции.......................................................................................................... 34

5. Общие процедуры и функции................................................................................................................ 36

5.1. Процедуры Sub..................................................................................................................................... 36

5.2. Функции Function................................................................................................................................. 37

6. Объектно-ориентированное программирование.................................................................................. 39

7. Программирование приложений на VBA............................................................................................. 40

7.1. Основные определения........................................................................................................................ 40

7.2. Принципы создания и работы приложений....................................................................................... 44

7.3. Структура и сохранение простого проекта........................................................................................ 44

7.4. Форма и ее характеристики................................................................................................................. 45

Карточки для студентов. Задачи на ветвление........................................................................................... 47

Карточки для студентов. Задачи на циклы................................................................................................. 48

 

 

1.1. Понятие алгоритма. Свойства алгоритма

 

Алгоритм – строгая, полностью определенная последовательность действий с изменяемыми исходными данными, направленная на достижение поставленной цели или решение задачи.  

Термин алгоритм происходит от имени узбекского ученого IX в. Аль-Хорезми, который в своем труде «Арифметический трактат», переведенном в XII в. с арабского на латынь, изложил правила арифметических действий над числами в позиционной десятичной системе счисления. Эти правила и называли алгоритмами. Таким образом, изучающиеся в школе правила сложения, вычитания, деления, умножения чисел, правила преобразования алгебраических выражений, правила построения геометрических фигур, грамматические правила правописания слов и предложений – все это алгоритмы. Многие правила, инструкции, записанные в воинских уставах, функциональных, должностных обязанностях, представляют собой подробнейшие указания, годные во всевозможных ситуациях.

Свойства алгоритма - набор свойств, отличающих алгоритм от любых предписаний и обеспечивающих его автоматическое исполнение. Выделяют 5 основных свойства алгоритма:

1.      Понятность алгоритма для данного исполнителя – алгоритм должен быть задан с помощью заранее четко и однозначно определенных действий (команд), составляющих СКИ. 

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

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

4.      Результативность – алгоритм должен обеспечивать обязательное получения результата после конечного числа шагов, (при этом отрицательный результат – тоже результат, например, если компьютер выдает, предусмотренное алгоритмом сообщение «Решения нет, т.к. дискриминант <0», то такой алгоритм результативный, а если произошло зацикливание -  то нет), т.е.. 

5.      Массовость – алгоритм должен обеспечивать возможность его применения для решения класса однотипных задач с различными исходными данными.

1.2. Этапы решения задач на компьютере

Компьютер – универсальное средство для решения многих информационных задач, для решения которых используют различное программное обеспечение и системы программирования. 

Исходя из условия задачи, пользователю остается решить, какими средствами  воспользоваться. Например, СУБД, математический пакет, ТР и т.п. Если же подходящего ПО нет, приходится прибегать к программированию на универсальных языках, создавая свою уникальную программу. Работа по решению прикладной задачи на КП проходит через следующие этапы:

Задача → формализация → алгоритм → программа → компьютер → результат

1.      Постановка задачи. На этом этапе должно быть четко определено, что дано и что требуется найти. 

2.      Математическая формализация. Выбор модели и метода решения. Задача формулируется на обычном разговорном языке, в виде формул, соотношений, зависимостей.

3.      Разработка и запись алгоритма. Алгоритм разрабатывается и записывается на одном из формальных языков или с помощью блок-схем.

4.      Составление программы. Программа – это тот же алгоритм, но записанный на понятном компьютеру языке – языке программирования. 

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

Проверка на компьютере правильности алгоритма производится с помощью тестов. Тест – это конкретный вариант значений исходных данных, для которого известен ожидаемый результат. Главная задача программиста подобрать набор тестов таким образом, чтобы проверить все возможные ветви решения. (например, решение квадратного уравнения).

6.      Проведение расчетов и анализ полученных результатов.  

Анализ результатов. Для определения правильности решения задачи в зависимости от класса применяют разные подходы: 1) сравнивают с результат с результатом, рассчитанный в соответствии с тем же методом, но вручную, с помощью калькулятора; 2) сопоставление с экспериментальными фактами и теоретическими воззрениями. 

1.3. Способы записи алгоритмов

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

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

1.    Запись алгоритма словами.

2.    Блок-схемы алгоритмов.

3.    Алгоритмический язык.

1.3.1. Блок-схемы алгоритмов

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

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

Вид блоков и последовательность их соединения соответствует типу и последовательности действий алгоритма.

Основные блочные символы:

 

Блок начала и конца алгоритма; в овале пишут слова «начало» и «конец»

              

Блок ввода и вывода информации; в блоке ввода перечисляются имена данных, подлежащих вводу в алгоритм

            

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

                 

Выбор одного из двух направлений выполнения алгоритма в зависимости от некоторого условия, записываемого внутри ромба (ветвление) 

 

Блок изменения некоторого параметра, используется, например, в блоксхемах циклических алгоритмов со счетчиком.

 

Использование ранее созданных и отдельно описанных алгоритмов (так называемых вспомогательных алгоритмов).

Правила составления блок-схем:

1.      Все линии, указывающие на последовательность выполнения действий, должны быть замкнутыми.

2.      Линии не должны пересекаться.

3.      При передаче управления в схеме снизу вверх или справа налево линии обязательно помечают стрелками.

4.      Не допускается передача управления  «в никуда». Источник и получатель должны быть четко обозначены.

1.3.2. Алгоритмический язык

Алгоритмический язык – это язык, предназначенный для записи алгоритмов. Он включает: набор символов (алфавит), правила записи алгоритмов (синтаксис) и правила истолкования записей (семантику).

алг Название (список переменных и их типы) арг список аргументов (то, что дано) рез список результатов (что надо найти)

нач ввод вспомогательных переменных

            программа

            выв список данных, выводимых на печать кон

Типы данных: вещ, цел, нат (натуральные), стр или лит (строковый)

 

 

1.5. Основные принципы структурного программирования

Программирование – это процесс составления компьютерной программы на основе некоторого алгоритма.

Структурное программирование основывается на двух важнейших принципах:

§  Последовательной детализации алгоритма,

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

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

1) Следование

2) Ветвление

3) Цикл

 

 

 

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

1.6. Типы алгоритмов

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

Тип алгоритма

Базовая структура

1. Линейные алгоритмы

Следование

2. Ветвящиеся

Ветвление

3. Циклические

Цикл

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

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

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

Циклические алгоритмы делятся на алгоритмы с известным и неизвестным заранее числом повторений. Их условно называют «Для» и «Пока». В обоих случаях окончание циклического процесса определяется поставленным заранее условием.

3 вида циклических алгоритмов:– 

1)                       цикла с параметром – алгоритм с заранее известным числом повторений;

2)                       цикл с предусловием – условие проверяется до выполнения тела цикла; такой цикл может не выполниться ни разу;

3)                       цикл с постусловием – условие проверяется после выполнения тела цикла; такой цикл обязательно выполниться хотя бы один раз. 

Вспомогательный (подчиненный) алгоритм (процедура)алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи.

Линейные алгоритмы №1. По сторонам прямоугольника найти площадь.

алг Площадь (вещ А, B, S) арг А, B рез S

нач 

            S:=А*В              выв S

кон

Упражнение 1. Чему равны значения переменных X и Y после выполнения операторов  X:=5

Y:=X+5

X:=Y

Y:=X+Y

Упражнение 2. При каком начальном значении X результат Y , после выполнения операторов  Y:=X+5

X:=Y

Y:=X+Y

равен 14? Решение: (с конца)

X

Y

 

7

7

Т.к. X=Y и Y=X+Y=14

2

7

Y=X+5=7

Ветвление алгоритмы

Если Условие

То Действие 1

Иначе Действие 2 Все

№ 2. Из трех чисел найти максимальное.

алг Корни (вещ А, B, C) арг А, B, C рез МАX

нач 

 

 

если А>=B и A>=C 

 

то МАХ:=А

 

иначе  если В>=А и В>=C 

 

            то МАХ:=В

 

            иначе МАХ:=С

 

            все

 

все

 

кон

 

выв МАХ

Задачи на ветвление.

1.      Решить уравнение y=ax+b.

2.      Найти y, если y=корень кв. из х, если  x>0 y=10, если  x=0 y=x2 если  x<0

3.      (самостоятельно) По температуре воды, определить ее состояние – лед, вода, пар.

4.      Даны три числа. Найти максимальное.

5.      Определить к какой координатной четверти принадлежит точка с координатами (x,y).

6.      Определить, является ли т.(a,b) частью круга с центром в т. (x,y) и радиусом R.        Примечание. Лучше рассматривать не корень квадратный, а квадрат.

7.      Прямоугольник со сторонами параллельными осям координат задается координатами одной из диагоналей (x1,y1)- (x2,y2). Определить, является ли т.(a,b) частью данного прямоугольника.

             

Примечание. Сначала переставить значения координат так, чтобы x1<x2, y1<y2.  

Проверить x1<=a<=x2, y1<b<=y2.

8.      Определить, принадлежит ли т.(a,b) области, ограниченной кривыми y=x2, Y=2x+5.           x2<=y, 2x+5 <=Y

 

Король: |x1-x2| <=1 и |y1-y2| <=1

Пешка: |x1-x2| <=2 и y1= y2

Слон: |x1-x2|= |y1-y2|

Ладья: x1=x2 XOR y1= y2  ((x1=x2 и y1<> y2 или  x1<>x2 и y1= y2))

Ферзь: x1=x2 или y1= y2 или |x1-x2|= |y1-y2|

 

Конь: |x1-x2|=1 и |y1-y2| =2 или |x1-x2|=2 и |y1-y2| =1

11. Даны три числа А, В и С. Определить:

a.      Существует ли данный треугольник (Сумма ЛЮБЫХ двух сторон должна быть

БОЛЬШЕ третьей стороны)

b.      Если треугольник существует, то: тип треугольника по соотношению сторон 

-  равносторонний A=В и В=С, 

-  равнобедренный A=В или В=С  , XOR

-  разносторонний A<>В и В<>С  и A<>С  ;

c.      тип треугольника по его углам:

-прямоугольный (для ОДНОЙ из сторон выполняется a2=b2+c2)

                  a2=b2+c2 или b2= a2+c2 или c2= a2+b2 

-тупоугольный (для ОДНОЙ из сторон выполняется a2>b2+c2)

                                -остроугольный (для ВСЕХ сторон выполняется a2<b2+c2)        

                  a2<b2+c2 и b2< a2+c2 и c2< a2+b2 

 

 

Ветвление типа выбор выбор  при Условие 1: Действия 1 при Условие 2: Действия 2

Иначе Действия N все

№ 3. Определить награды участникам конференции.

алг награда (нат А, стр N) арг А рез N

нач 

 

 

выбор 

при А=1: N:=‖золото‖ при А=1: N:=‖серебро‖ при А=1: N:=‖бронза‖

Иначе N:=‖грамота участника‖ Все

 

кон

выв N

Задачи на выбор

1.    Определить награды участникам конференции (1-3 место - золото, серебро, бронза соответственно, остальным - грамота участника).

2.    По номеру месяца (1-12) определить время года.

3.    По введенному часу (1-24) определить время суток.

Циклические алгоритмы. Цикл с параметром

для k от n1 до n2 [шаг  n3]

нц тело цикла кц

№ 4. Подсчитать сумму четных целых чисел от 0 до 100.

алг сумма (цел А, S) арг А рез S

нач 

 

 

S:=0

для A от 0 до 100 шаг 2

нц S:=S+A кц

 

кон

выв S

Циклические алгоритмы. Цикл с предусловием

пока Условие нц тело цикла кц

№ 4. Подсчитать сумму четных целых чисел от 0 до 100.

алг сумма (цел А, S) арг А рез S

нач 

            S:=0

нц А:=А+2

S:=S+A

кц

            выв S

кон

 

Задачи на циклы.

Цикл с параметром

1.                  Найти сумму всех целых чисел от A до B, где А и В – целые числа, (B>=A) вводятся с клавиатуры.

2.                  Вычислить где N вводится с клавиатуры. 

3.                  (самостоятельно) Найти сумму кубов всех целых чисел от 10 до 50.

4.                  Вычислить сумму:

5.                  Найти произведение четных целых чисел от 0 до 100.

6.                  Вывести значения функции для х из промежутка [0,10].

7.                  (самостоятельно) Вывести значения функции f(x)=sin x для х из промежутка [0,6] с шагом 0,1.

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

a.      Прирост суммы вклада за 1-й, 2-й, … 6 месяцы;

b.      Сумму вклада через 6 месяцев.

9.                  (самостоятельно) Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3,6,9,…, 24 часа.

10.              Известны результаты аттестации 30 студентов – оценки 0,1,2. Подсчитать количество 0, 1, 2.

Цикл с предусловием

11.              Дано число N. 

a.      Напечатать все натуральные числа, квадрат которых не превышает N.

b.      Найти первое натуральное число, квадрат которого больше N.

12.              С клавиатуры вводится последовательность целых чисел, признаком конца является ввод 0. 

a.      Найти  среднее значение введенных чисел (0 не считать). 

b.      Найти максимальное число (0 не учитывать).

c.      Найти минимальное число (0 не учитывать).

13.              Начав тренировки, лыжник в 1-й день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить:

a.      В какой день он пробежит больше 20 км,

b.      В какой день суммарный пробег за все дни превысит 100 км.

1.7. Классификация языков программирования

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

По степени зависимости языков программирования от структуры конкретного компьютера их условно делят на: 1. Языки низкого уровня. К ним относят языки машинных команд конкретных компьютеров.  Программа представляет последовательность команд, содержащих коды выполняемых компьютером операций и адреса участвующих в этих операциях операндов. Это машинно-зависимые языки. 

Достоинства: быстродействие и малые затраты памяти.             

Недостатки: программа, записанная на машинном коде одного КП, не всегда может работать на компьютере другой структуры; программирование связано с большими временными затратами. 

Желание облегчить программирование привело к разработке языков, в которых вместо конкретных адресов и кодов операций применяется символика, используются макрокоманды, объединяющие несколько действий в одной команде. К этим языкам относят так называемые автокоды и языки ассемблера. 2. Языки программирования высокого уровня – машинно-независимые. Достаточно, чтобы компьютер имел транслятор – переводчик программ с языка программирования на машинный язык. Делятся на:

2.1. Проблемно-ориентированные языки разрабатываются с целью сделать более эффективным программирование задач одного класса, например, экономических задач (Кобол), искусственного интеллекта (Пролог), обучения (Лого), язык гипертекстовой разметки в Интернет (HTML), язык моделирования виртуальной реальности (VRML) и т.д. 2.2. Универсальные языки – позволяют решать широкий спектр задач различного характера. (Basic, Quick Basic, Visual Basic; Pascal; Delphi, Си и т.д.)

3. Одним из перспективных направлений развития технологий программирования считается создание объектно-ориентированных языков.

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

2. Visual Basic Application

Запуск :

MS Office -2003

1 способ: Сервис \ Макрос \ Редактор Visual Basic. 2 способ: Сервис \ Макрос \ Макросы: Создать.

MS Office 2007 1. На вкладке Разработчик щелкните Visual Basic.  

Примечание. Чтобы отобразить вкладку Разработчик надо: 

a.       Нажмите кнопку «Microsoft Office» , затем нажмите кнопку Параметры Excel

b.      Щелкните Основные и затем установите флажок Показывать на ленте вкладку разработчика.

2. На вкладке Разработчик выберите пункт Visual Basic (загрузится окно редактора) или Макросы (запустится мастер по созданию макроса).

 

2.1. Алфавит

Алфавит языка включает следующий набор символов:

1.      прописные и строчные буквы латинского алфавита и русского алфавитаA-Z, a-z;

2.      арабские цифры 0,1,2,…,9;

3.      знаки арифметических действий: *,-,+,/, \ (целочисленное деление), ^

4.      знаки операций отношений =, <>, и т.д.

5.      знаки препинания и разделители: .  ,  :  ; - ! ? «» ‗

6.      (), [], пробел, подчеркивание

7.      символы объявления типа: % - целое число одинарной точности, & - целое число двойной точности; ! –вещественное число одинарной точности, # - вещественное число двойной точности, $ - знак строкой величины.

2.2. Классификация данных

Некоторые задачи имеют дело с очень большими числами (например, расстояния в космосе), другие оперируют малыми (например, оценки студентов). В связи с этим для экономии памяти КП используют разные типы числовых и нечисловых данных. 

В VB выделяют следующие типы:

Имя типа

Описание

Объѐм,  байт

Диапазон

минимальное знач.

максимальное знач.

Byte

целое 

1

255

Integer

целое число одинарной точности

2

-32 768

32 767

Long

длинное целое

4

-2 147 483 648

2 147 483 647

Single

 

вещественное число с плавующей точкой одинарной

точности

4

 

-3.402823E38 

 

   3.402823E38

Double

вещественное число с плавующей точкой двойной

точности

8

 

-1.79769313486231E308

 

 1.79769313486232E308  

Currency

Вещ-ное число с фиксированной точкой 

(до 15-ти цифр перед точ. и до 4 - после), используется для фин.расчетов 

8

 -922 337 203 685

477.5808 

 

 922 337 203 685 477.5807 или 922 E12

Date

Дата и время

8

January 1, 100 

December 31, 9999

String

строка произвольной длины

10 + число символов

"" (пустая строка)

до 2 миллиардов символов 

String 

строка фиксированной длины

число символов

0 символов

65536 символов

Boolean

Логический тип

2

False

True

Variant

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

16 байт

(для чисел),

22+число символов

(для строк)

 

 

Object

Содержит адрес объекта

4

 

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

Данные, используемые в программе можно разделить на две группы:

1)                 константы – величины, значения которых задаются заранее и не изменяются при выполнении программы.

Синтаксис определения типа данных следующий:

[Private | Public] const Имя_константы [as Тип] = значение Например, 

const Золотое_сечение  = 1.618 Public const ПИ  = 3.14 const ПИ  as Double = значение

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

Синтаксис определения типа данных следующий: Dim | Private | Public Данные as Тип Требования к имени констант и переменных:

§  должно начинаться с буквы,

§  должны содержать только буквы, цифры и подчеркивание, §        должно быть уникальным внутри области видимости;

§  не должно совпадать с зарезервированными словами VB. Объявление переменных может быть:

1.       Неявное объявление – это когда переменная не объявляется заранее, но используется в программе. Программа автоматически создают переменную  типа Variant.

2.       Явное объявление -  производится с использование оператора Option Explicit в разделе General Declarations текущего модуля. В этом случае все переменные, используемые в программе должны быть объявлены.

Служебные слова Dim | Private | Public определяют область действия переменных.

Область видимости переменных определяет, какая часть кода программы «знает» о существовании данной переменной:

Оператор

Переменная

Где объявлена

Область видимости

Dim

Локальная

Внутри процедуры

Только в данной процедуре, не сохраняет значение

Static

Локальная статическая

Внутри процедуры

Только в данной процедуре,  сохраняет значение

Dim 

Или

Private

Уровня модуля

В разделе General Declarations

Во всех процедурах модуля

Public

Открытая, уровня модуля формы

В разделе General Declarations

Во всех процедурах всех модулей проекта

 

2.3. Основные математические действия 

Операция VBA

Действие

Тип операндов

Тип результат

Пример

Рез-т

+

Сложение

Числовой

Числовой

 

 

-

Вычитание

Числовой

Числовой

 

 

*

Умножение

Числовой

Числовой

х=7*а

 

/

деление

 

Числовой,

! Целые округляются

х=5/2 (x - вещ)

y=5/2 (y - цел)

х=2,5

y=3

\

Деление нацело

Числовой (дробные округляются до целых)

целый

х=19\4  y=1\4  z=8.5\4.2

х=4 y=0 z=9\4=2

mod

Остаток  от деления

Числовой (дробные округляются до целых)

целый

Х =19 mod 4 y=8.5 mod 4.2

X=3 y=9 mod 4=1

^

Возведение  в степень

Числовой

Числовой

X=2^3 y=25^(1/2)

X=8 y=5

&

Склейка строк

любой

строковый

Х= ―2‖&‖3‖ Y=5&5

Z=x & ―+‖ & Y

X=23

Y=55

Z=23+55

Приоритет операций: (), ^, (-), *, /, \, mod, +, - 

2.4. Стандартные функции

 

Инициализация генератора случайных чисел

randomize

 

 

Правила записи выражений 1. выражение записывается в одну строку;   например,     с2          записывается: 1/12 + 4/(а+с) – с*с

2.      в выражении можно использовать только круглые скобки; 

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

4.      Две последовательные операции должны разделяться круглыми скобками,  неправильно:  3*а*-2  правильно:  3*а*(-2) 

5.      нельзя пропускать знак умножения:  неправильно:  2а+4с  правильно:  2*а+4*с

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

7.      если в выражении используются переменные, то они должны получить значения до первого своего использования. 

Примеры.

Программы на VBA

Принцип работы программ, создаваемых в среде VBA, отличается от программ в обычном процедурном языке (Паскаль), где команды выполняются последовательно, оператор за оператором. Программы на VBA носят событийно-управляемый характер. Программа на VBA – это набор процедур обработки событий. Работой программы управляют события, возникающие в результате работы пользователя (работа с клавиатурой, мышью, открытие или закрытие Листа, нажатие на кнопку и т.п.).

В общем виде процедура обработки события записывается так:

[Private | Public] Sub Объект[_событие] ([параметры])

Последовательность операторов

End Sub

Private, Public – параметр, указывающий область видимости процедуры. (в модуле описания или во всех модулях соответственно),

Событие – название события, например щелчок мышью по объекту (Click)/ Параметры – аргументы процедуры.

 

3. Основные конструкции

3.1. Линейные программы

Самые простые по структуре линейные алгоритмы. Линейные алгоритмы – алгоритм, в котором команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий.

Задача 1. Вычислить по заданному радиусу (5) длину окружности и площадь круга.

Дано: R=5, радиус круга.

Найти: S, площадь круга и L, длину окружности

Блок-схема

Алгоритм

Программа на VBA

Комментарии

         

алг Пример1 (вещ L,R,S)

 аргрез L,S

нач 

L:=2*3.14 R S:=3.14*R^2 выв R,L,S  кон

Option Explicit

Sub Ex()

Const R=5

Dim L as Single, S as

Single

L=2*3.14*R

S=3.14*R^2

MsgBox ―Длина= ‖ &

L & ―Площадь = ‖ &

S

End Sub

Проверка данных Заголовок процедуры

Описание констант Описание переменных

 

Вычисление длины

Вычисление площади

Вывод ответа

 

 

Конец процедуры

4. Встроенные диалоговые окна

4.1. Окно сообщения MsgBox

Оператор MsgBox выводит простейшие сообщения для пользователя, может использоваться для вывода результатов.

Синтаксис:

MsgBox сообщение [, атрибуты] [, заголовок]       Сообщение – текст, отображаемый в диалоговом окне.

Заголовок – строка в заголовке окна.

Например, MsgBox ―Длина= ‖ & L , , «Ответ»    

Атрибуты – системные константы, которые определяют особенности окна, различные кнопки (ОК, Отмена, Да, Нет и т.п.) и значки (значок критического сообщения или ! или ?).  Список констант выдается после того, как поставлена разделительная запятая.

Например,  vbOKCancel – окно с кнопками «ОК» и «Отмена» vbOKOnly – окно с 1 кнопкой «ОК». vbCritical – отображается значок критического сообщения (красный крест).

vbInformation – отображается значок информационного сообщения (i).

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

Например, MsgBox ―Длина= ‖ & L , vbOKCancel+vbInformation, «Ответ»

Примечание. Окно MsgBox можно использовать как функцию. В этом случае аргументы пишут в круглых скобках, а результатом функции является число от 1 до 7, обозначающее какая кнопка была нажата. а=MsgBox (сообщение, атрибуты, заголовок) 

4.2. Окно ввода InputBox

Оператор InputBox используется для ввода информации пользователем.

Синтаксис:

InputBox сообщение [,заголовок] [,умолчание] 

Сообщение – текст, отображаемый в диалоговом окне.

Заголовок – строка в заголовке окна.

Умолчание – строка, которая будет по умолчанию находиться в текстовом поле.

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

Имя переменной = InputBox (сообщение [,заголовок] [,умолчание]) Задача 2. Перевести рост, заданный в см в м и см. 

Ответ вывести в виде фразы «Мой рост … м … см». Рост (Н) запрашивается с клавиатуры.

Блок-схема

Программа на VBA

              

Option Explicit

Sub Ex()

Dim h as Single, m as Single, s as single h=Inputbox(―Введите рост в см‖) m=h  \100 s = h mod 100

MsgBox ―Мой рост ‖ & m & ― м ‖ & s & « см » End Sub

5. Работа с листом Excel

Активировать рабочий лист книги Excel:

worksheets(Номер листа | «Название листа»).Activate      Например, 

если лист имеет стандартное имя (например, лист1) worksheets(1).Activate или worksheets(«Лист1»).Activate если лист имеет некоторое имя, например Квадрат, то worksheets(«Квадрат»).Activate

Обратиться к ячейке текущего листа:

1)      cells(номер строки, номер столбца)

2)      range (―адрес ячейки‖)

Например,

1) Для того чтобы переменной х присвоить значение из ячейки В2 надо записать один из операторов:

х= cells (1,2)  или х= range («В2») 2) Для того чтобы в ячейку А2 поместить число 10 надо записать:

cells (2,1)=10 или range («А2»)=10

Задача 3. Вычисление НДС. Дана процентная ставка НДС и сумма. Найти сумму без НДС.

        

 

Блок-схема

Программа на VBA (2 способа)

 

Sub Ex()

     

Dim NDS as Single, Summa as Single, SBN as single worksheets(1).Activate

NDS = range (―B3‖)

Summa = range (―B5‖)

SBN= Summa-Summa*NDS/100 range (―B6‖)=SBN

End Sub

2 способ (без использования листа).

Sub Ex()

Dim NDS as Single, Summa as Single, SBN as single

NDS =Inputbox(―Введите величину НДС в процентах‖)

Summa =Inputbox(―Введите сумму‖) SBN= Summa-Summa*NDS/100 MsgBox ―Сумма без НДС ‖ & SBN End Sub

6. Вызов макроса по кнопке

I.        Создать макрос:

1.         Вызвать окно макроса: Сервис \ Макрос \ Макросы.

2.         В появившемся окне задать имя макроса, например «Задача1».

3.         Выбрать кнопку создать.

4.         Появится окно VBA с заголовком и концом процедуры.

5.         Записать программный код.

6.         Закрыть макрос.

II.     Добавить на лист кнопку:

1.         При необходимости открыть панель инструментов Форма: Вид \ Панели инструментов: Формы. 2. На панели выбрать инструмент «Кнопка». На листе обозначить размер и положение кнопки. 

3.         После этого появится окно «Назначить макрос объекту», в котором надо выбрать название макроса (например, «Задача1»).

4.         Изменить надпись на кнопке можно выбрав в контекстном меню команду «Изменить текст».

III.  Нажав на кнопку можно выполнить тот или иной макрос.

Примечание. Изменить ранее созданный макрос: Сервис \ Макрос \ Макросы: Изменить.

3.2. Условный оператор IF

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

Условный оператор изменяет ход выполнения программы в зависимости от результата проверки условия.

 

1)                       Простой условный оператор If  записывается в виде одной строки и используется тогда, когда в случае истинности или ложности условия требуется выполнить только один оператор.

Синтаксис:

If Условие then Оператор1 else Оператор2 Например, из двух чисел выбрать большее.

If a>b then max=a else max=b

2)                       Составной условный оператор If записывается в несколько строк, может содержать несколько условий, и используется тогда, когда в случае истинности или ложности условия требуется выполнить несколько операторов. 

Синтаксис:

If Условие then 

Блок Операторов1 

[ElseIf Условие2 then Блок Операторов2]

[Else

Блок ОператоровN]

End If

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

Например,    if a>=0 then a=sqrt(a) else  После else стоит пустой оператор. В этом случае служебное слово else можно не писать. Например,    if a>=0 then a=sqrt(a) Такое ветвление называется не полным.

Примечание. Если операторы записываются в одну строку, то отделяются друг от друга двоеточием.

Условие – логическое выражение, то есть выражение, о котором можно сказать истинно оно или ложно. Условие может быть: 1.  Простое - логическая переменная, логическая функция или логическое выражение.

В логических выражениях применяют знаки отношений: < (меньше), <=(меньше или равно), = (равно), > (больше), >= (больше или равно), <> (не равно). Например,  x > 5, x + y <= z, a * 2 = 6. 

2.  Составное - состоит из простых условий, связанных между  собой логическими операциями  and (и), or (или), not (не), xor (исключающее или). Каждое простое условие в составном заключается в скобки.

Составные условия рассматриваются как единое целое. 

Правила определения истинности:

Условие 1 А

Условие 2  В

Операция И  A And B

Операция ИЛИ A Or B

Исключающее ИЛИ  A Xor B

НЕ  Not A

True

True

True

True

False

False

True

False

False

True

True

 

False

True

False

True

True

True

False

False

False

False

False

 

Приоритет операций: Not, And, Or, Xor

Задача 4. В каждый подарочный набор входят 1 блокнот, 2 карандаша и 4 ручки. Имеется А блокнотов, В карандашей и С ручек. Сколько всего получится подарочных наборов?

Блок-схема

Алгоритм

Другими словами надо найти минимальное число.

 

Sub Present()

Dim A as Integer, B as Integer, C as Integer, K as Integer

A  =Inputbox(―Введите количество блокнотов‖)

B   =Inputbox(―Введите количество карандашей‖)

C   =Inputbox(―Введите количество ручек‖)

B= B \ 2

C= C\ 4 

If A<B then K=A else K=B If C<K then K=C

MsgBox ―Всего наборов ‖ & K

End Sub

Задача 5. Найти действительные корни квадратного уравнения ax2+bx+c=0.

Дано: а,b,c.

Найти: x1,x2

Блок-схема

Программа

Sub Ex()

Dim A as Single, B as Single, C as single 

Dim D as Single, X1 as Single, X2 as Single

A  =Inputbox(―Введите A<>0‖)

B   =Inputbox(―Введите B‖)

C   =Inputbox(―Введите C‖)

D  = B^2-4*A*C

If D>=0 then

  X1 = (-B – sqr (D))/(2*A) 

  X2 = (-B + sqr (D))/(2*A) 

  MsgBox ―X1= ‖ & X1 &―      X2= ‖ & X2 Else

  MsgBox ―Действительных корней нет‖

End If

End Sub

 

Задача 6. Вычислить значение функции:

Y  =x2 при x>10, 

     = корень из х при 0<=X<=10, 

     = |х| при х<0

 

 

Блок-схема

Программа

Sub Ex()

Dim X as Single, Y as Single

Worksheets (1).activate

X = Cells (2,2)

If X>10 then

  Y=X^2

  ElseIf (X>=0) and (X<=10) then

     Y=Sqr(X)

Else

  Y=abs(X)

End If

Cells (4,2)= Y

End Sub

3.3. Оператор выбора Select Case

Оператор выбора позволяет сделать выбор среди нескольких вариантов в программе в зависимости от значения условного выражения.  Синтаксис:

Select Case Выражение для проверки

Case Список1

Блок операторов1

Case Список2

Блок операторов2

[Case else

Блок операторовElse]

End Select

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

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

Блок операторовElse–  операторы, которые выполняются, если значение  выражения для проверки не совпадает ни с одним из значений. Список – списки выражений, записанные в одной из форм:

§  Перечень значений через запятую;

§  Диапазон, записывается с помощью оператора To (например, case 1 To 10); §     С помощью неравенств – оператор Is (например, Case Is <100).

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

Задача 7. По номеру месяца определить сезон (зима, весна, лето, осень).

 

Блок-схема

Программа

Sub Ex()

Dim M as Integer, Season as String M =Inputbox(―Введите номер месяца‖)

Select Case M Case 12,1,2 Season = ―зима‖ Case 3 to 5 Season = ―весна‖ Case 6 to 8 Season = ―лето‖ Case 9 to 11 Season = ―осень‖

Case else

Season = ―Вы уверены, что такой месяц есть?‖

End Select

MsgBox Season

End Sub

3.4. Циклические алгоритмы

Циклический алгоритм – алгоритм, предусматривающий многократное повторение одних и тех  же действий, называемых телом цикла. Циклические алгоритмы отличаются наличием в структуре алгоритма обратной связи. Циклические алгоритмы делятся на алгоритмы с известным и неизвестным заранее числом повторений. Их условно называют «Для» и «Пока». В обоих случаях окончание циклического процесса определяется поставленным заранее условием.

3.4.1. Цикл с параметром For Next

Оператор For Next организует в программе выполнение группы операторов (тела цикла) заданное число раз.

Счетчик – числовая переменная.

Начало и Конец – начальное и конечное значение счетчика (значение, переменная или выражение того же типа что и счетчик).

Шаг – величина изменения значения счетчика. Ели шаг не указан, то по умолчанию принимается равным 1. При выходе из цикла переменная Счетчик=Конец+Шаг .

Оператор Exit For позволяет выйти из цикла до его завершения. Обычно используется в сочетании с условным оператором If.

Задача 8. Найти сумму целых нечетных чисел от 1 до N (где N задается с клавиатуры).

Блок-схема

Программа

Sub Ex()

Dim A as Long, S as Long, n is Integer

N=InputBox (―Введите n‖)

For a=1 To n step 2

S=S+a

Next a

End Sub

Задача 9. Написать программу, заполняющую ячейки иА2:В11 следующим образом:

 

 

Sub Cikl()

 

Dim x As Integer

Worksheets(1).Activate

For x = 1 To 10

Cells(x + 1, 1) = x

Cells(x + 1, 2) = x ^ 2

Next x

End Sub

 

Задача 10. Табулирование функции. Выполнить расчѐт К значений функции y=sin x для х от А с шагом h. А, h, К взять с листа. Результат вывести на текущий лист(ячейки листа

А6:С10)

 

 

Sub Cikl()

 

 

Dim K As Integer, x As Single, y As Single

Dim A As Single, h As Single

Dim i As Integer

Worksheets(1).Activate

K = Cells(1, 2) A = Cells(2, 2) h = Cells(3, 2) x = A

For i = 1 To K y = Sin(x)

Cells(5 + i, 1) = i

Cells(5 + i, 2) = x Cells(5 + i, 3) = y x = x + h Next i

End Sub

3.4.2. Цикл Do Loop

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

Цикл с предусловием:

Do While Условие входа

[Операторы] [Exit Do]

Loop

Do Until Условие выхода

[Операторы] [Exit Do]

Loop

Цикл с использованием ключевого слова While выполняется до тех пор, пока условием истинно. 

Цикл с использованием ключевого слова Until выполняется, пока условие не станет истинным. 

Задача 11. Решим предыдущую задачу (Табулирование функции) другими способами.

С предусловием и ключевым словом While

 

 

Sub Cikl()

 

Dim K As Integer, x As Single, y As Single

Dim A As Single, h As Single, i As Integer

Worksheets(2).Activate

K = Cells(1, 2): A = Cells(2, 2) h = Cells(3, 2) x = A : i = 0

Do While i < K y = Sin(x) i = i + 1

Cells(5 + i, 1) = i

Cells(5 + i, 2) = x Cells(5 + i, 3) = y x = x + h

Loop

End Sub

С постусловием и ключевым словом Until

 

 

Sub Cikl()

 

Dim K As Integer, x As Single, y As Single

Dim A As Single, h As Single, i As Integer

Worksheets(2).Activate

K = Cells(1, 2)

A = Cells(2, 2) : h = Cells(3, 2) x = A : i = 0

Do

y = Sin(x) i = i + 1

Cells(5 + i, 1) = i

Cells(5 + i, 2) = x Cells(5 + i, 3) = y x = x + h

Loop Until i = K

End Sub

3.4.3. Вложенные циклы

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

Задача 12. Вывести на экран таблицу умножения, размера N на N (где N запрашивается с клавиатуры).

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

 

 

Sub Table()

 

 

Dim n As Integer

Dim i As Integer, j As Integer Worksheets(1).Activate 'Размерность таблицы n = InputBox("Введите N")

'Нумерация 1-й       строки столбца

For i = 1 To n

Cells(1, i + 1) = i

Cells(i + 1, 1) = i

Next i

'Заполнение таблицы

For i = 1 To n

  For j = 1 To n

   Cells(i + 1, j + 1) = i * j

Next j, i

End Sub

и

1-го

3.4.4. Решение задач

Задача 13. Определить, является ли заданное с клавиатуры число совершенным, т.е. равным сумме всех своих делителей отличных от самого числа (например, 6 = 1+2+3). Sub Num()

Dim a As Integer

Dim S As Integer, d As Integer a = InputBox("Введите число")

For d = 1 To a \ 2

S = S + d

Next d

If a = S Then MsgBox "да" Else MsgBox "Нет" End Sub

Задача 14. Вывести на Лист таблицу значений температуры по Цельсию от 0 до 100º с дискретностью в 10º и их эквивалентов по шкале Фаренгейта, используя формулу Tф=9Тц/5+32.

3. Работа с массивами

Массив – упорядоченное множество однотипных элементов, объединенных общим именем. К основным параметрам массивов относят:

§  тип элементов (числовой, строковый, логический);

§  размерность – число измерений (одномерный, двухмерный и т.п.); §       размер - количество элементов массива в каждом измерении.

В качестве элементов массива выступают переменные с индексами – номерами элементов в массиве. 

Индексы – целые числа. По умолчанию начинаются с 0. Чтобы нумерация началась с 1, надо в разделе  General Declaration записать Option Base 1.

Массивы делятся на статические и динамические.

3.1. Статические массивы

Параметры массивов этого типа задаются в процессе проектирования и не могут изменяться во время выполнения программы.

Объявление массива:

1.  Массив из N+1 элементов, индексы от 0 до N:

Dim Имя_массива (N) as Тип_элементов_массива

Например, 

Dim Х (10) as Integer

2.  Массив из N элементов, индексы от 1 до N: Option Base 1

Dim Имя_массива (N) as Тип_элементов_массива

Например, 

Option Base 1

Dim B (5) as String

3.  Массив из (B-A)+1 элементов, индексы от A до B:

Dim Имя_массива (A To B) as Тип_элементов_массива

Например, 

Dim C (2 To 5) as Date

Задание массива, заполнение значениями:

Существует несколько способов задания массивов.

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

Пример 1. Задать массив, содержащий три фамилии  Иванов, Петров, Сидоров.

Sub Ex1()

Dim Name (2) as String

Name(0)=‖Иванов‖

Name(1)=‖Петров‖

Name(2)=‖Сидоров‖

End Sub

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

Пример 2. Задать массив чисел, являющихся степенями целого числа А от нулевой до 10-й.  Sub Ex2()

Dim X (10) as Long 

Dim i as Integer, A as Integer A=InputBox‖Введите число‖

For i = 0 To 10 

X(i)=A^i

Next i

End Sub

3.                       Ввод массива с клавиатуры. Значения вводятся в цикле по запросу функции InputBox. 

Пример 3. Ввести массив X (N), где N=10.

Sub Ex3()

Const N=10

Dim X (N) as Integer

For i = 0 To N

X(i)=InputBox‖Введите элемент массива X(‖ & I & ―)=‖ Next i

End Sub

4.                       Задание массива случайным образом. Используется для задания массива случайных чисел из заданного диапазона.

Пример 4. Задать массив 10 случайных целых чисел из диапазона (-50,50).

Sub Ex4()

Dim T (9) as Integer

Randomize

For i = 0 To 9

X(i)= Int(-50+Rnd*101)

Next i

End Sub

Примечание.

Диапазон

Тип

Запись

 

Пример

[1,B]

целое

x= Int(Rnd*A+1)

[1,100]

x= Int(Rnd*100+1)

[A,B]

целое

x=Int(Rnd*(B-A+1)+A)

[50,230]

x= Int(Rnd*181+50)

[A,B]

вещ

x=Int(Rnd*(B*10-A*10+1)+A*10)/10

[-5.0,4.9]

x= Int(Rnd*100-50)/10

5.                       Задание массива с помощью функции Array. Позволяет задавать список, состоящий из величин (необязательно одного типа), с которыми можно выполнять различные действия. 

Синтаксис: 

Переменная = Array (Список) Пример 5. Задать массив из двух фамилий и двух оценок.

Option Base 1

Sub Ex5()

Dim A(4) as Variant

A= Array (―Петров‖, 5, ―Иванов‖, 4) End Sub

6.                       Задание элементов массива на листе Excel.  Пример 6. Сформировать массив по ячейкам В2:В5 .

Option Base 1

Sub Ex6()

Dim A(4) as Integer, i as Integer

For i=1 to 4 

                                                                                               A(i) = Cells(i+1,2)

Next i

End Sub

Вывод массива

1.  Вывод массива в одну строку (например, в текстовое окно).

Пример 7. Сформированный ранее одним из способов массив A(N) вывести в окно сообщений. 

S=‖‖

For i=0 to N 

S=S & A(i)

Next i

MsgBox ―Массив: ‖ & S

2.  Вывод массива на лист Excel.

Пример 8. Заполнить ячейки В2:В5 случайными целыми числами от [1,10], образующими массив Х(4).

Option Base 1

Sub Ex7()

Dim X(4) as Integer, i as Integer ‗Формирование массива

                                                                                               Randomize

For i=1 to 4 

X(i) = Int (Rnd*11+1)

Next i

‗Вывод на лист For i=1 to 4 

Cells(i+1,2)=X(i)

Next i

End Sub

3.2. Динамические массивы

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

Объявление массива:

Dim Имя_массива () as Тип_элементов_массива

Например, 

Dim Х () as Integer

По ходу программы в массив добавляются элементы. Коррекция границ массива производится с помощью оператора ReDim внутри процедуры. Если первоначально тип элементов массива был определен как Variant, то можно переопределить и тип. 

Синтаксис: 

ReDim [Preserve] Имя (Границы) [As Тип]

Ключевое слово Preserve позволяет сохранить значения при переопределении границ массива, в противном случае массив обнуляется.

Пример 9. Заполнить массив A(n), где n запрашивается с клавиатуры.

Option Base 1

Sub Ex9()

Dim A () as Integer, i as Integer, n as Integer n=InputBox (―Введите размер массива‖) For i= 1to n

A(i) =InputBox (―Введите элемент массива‖)

Next i

End Sub

3.3. Решение задач

Задача 1. Найти среднее значение элементов массива.

Sub Ex()

Const n=5

Dim A (n) as Integer, i as Integer, S as Integer For i= 0 to n A(i) =InputBox (―Введите элемент массива‖)

S=S+A(i)

Next i S=S/n

MsgBox ―Среднее значение=‖ & S End Sub

Задача 2. Найти максимальный элемент массива. Sub Ex()

Dim A () as Integer, i as Integer, n as Integer, max as Integer n=InputBox (―Введите размер массива‖) For i= 0 to n

A(i) =InputBox (―Введите элемент массива‖)

Next i

‗ Поиск максимума

Max = A(0)

For i= 0 to n

If A(i) > max then max= A(i)  Next i

MsgBox ―Максимум=‖ & max End Sub

Задача 3. Перевернуть одномерный массив.

Sub ex()

Dim A(10) As Integer

Worksheets(1).Activate

For i = 1 To 10

A(i) = Cells(i, 1)

Next

For i = 1 To 5

R = A(i): A(i) = A(10 - i + 1): A(10 - i + 1) = R

Next

For i = 1 To 10

Cells(i, 2) = A(i)

Next

End Sub

3.4. Сортировка массива

Задача. Пусть задан массив случайных целых чисел А(N). Отсортировать его по возрастанию.

 

До процедур, чтобы были видны в обоих Const n = 5

процедурах. Dim A(1 To n) As Integer

 

Sub Sort()

Dim i As Integer, k As Integer, Index As Integer

Dim Min As Integer, R As Integer

 

'Задание массива

Randomize

For i = 1 To n

A(i) = Int(Rnd * 11)

Next i

1. Метод прямого выбора (перебора). '1 способ. Поиск минимального.

1.    Просмотреть массив, начиная от 1-го    For k = 1 To n элемента, найти минимальный и помес-       Min = A(k)

тить его на место первого, а первый на       For i = k To n

место минимального.          If A(i) <= Min Then Min = A(i): Index = i

2.    Просмотреть массив, начиная от 2-го      Next i элемента, найти минимальный и поме-     A(Index) = A(k): A(k) = Min 'меняем значения местами нять местами со 2-м элементом    Next k

3.    И т.д., пока не будет просмотрен весь InputArray массив. 

2. Метод прямого обмена (перебора). '2 способ. Обмен

1.    Просматривается весь массив от начала For i = n - 1 To 1 Step -1 до конца и в том случае, если из двух For k = 1 To i

соседних элементов «нижний» больше   If A(k) > A(k + 1) Then

«верхнего», элементы меняются места-   R = A(k): A(k) = A(k + 1): A(k + 1) = R ми. Таким образом, самый большой  End If оказывается на последнем месте.  Next k, i

2.    Операция повторяется для оставшихся InputArray элементов (от начала до предпоследне-End Sub го и т.д.) и т.д.

 

Sub InputArray()

'Вывод массива в окно сообщений

Dim i As Integer, S As String

S = ""

For i = 1 To n

S = S & " " & A(i)

Next i

MsgBox "Массив: " & S

End Sub

3.    Метод быстрой сортировки: 

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

Это означает, что на последних шагах сортировка сводится к перестановкам соседних элементов. 

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

3.5. Двухмерные массивы

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

Задача 3. Заполнить журнал данными, сформировав двумерный массив случайных чисел -оценками

(2,3,4,5).

 

Sub Ex()

Const n = 3, m = 2

Dim A(n, m) As Integer

Dim i As Integer, j As Integer

Worksheets(1).Activate

Randomize

For i = 0 To n

  For j = 0 To m

          A(i, j) = Int(Rnd * 4 + 2)     Cells(i + 2, j + 3) = A(i, j)

Next j, i End Sub

Для квадратных матриц А (1 to n, 1 to n):

Главная диагональ:   i=j

Побочная диагональ:   i+j=n+1

Выше главной диагонали: i<j

Ниже главной диагонали: i>j

 

Задача 4. Сформировать двумерный массив размерности N (N вводится с клавиатуры) и вывести его на лист по правилу: элементы главной диагонали равны 1, элементы выше главной диагонали равны сумме индексов (i+j), а элементы ниже ее – разности (i-j) .

            Sub Ex()                                                              

            Dim A() As Integer                                             

            Dim i As Integer, j As Integer, n As Integer       

Worksheets(1).Activate             n = InputBox("Введите N")            ReDim A(1 To n, 1 To n)            

            For i = 1 To n                                                      

              For j = 1 To n                                                    

               If i = j Then                                                     

               A(i, j) = 1                                                        Оператор обязательно на новую строку (всегда)!

               ElseIf i < j Then A(i, j) = i + j                         

               Else: A(i, j) = i - j                                           Если в одной строке, то через :

               End If                                                               

   Cells(i, j) = A(i, j)

Next j, i

End Sub

Задача.

Крестики-нолики на листе

 

Sub ex()

Dim M(1 To 3, 1 To 3) As String, A As Integer, B As Integer

Dim S As String, F As Boolean. Hod as Integer

 

Worksheets(1).Activate

Range("A1:C3") = ""

 

hod = 0 Do

 hod = hod + 1

 If hod Mod 2 = 1 Then S = "X" Else S = "0"

   Do

    A = InputBox("Введите номер строки 1-3", "Ход " & S)     B = InputBox("Введите номер столбца 1-3", "Ход " & S)

   Loop Until M(A, B) = ""

   M(A, B) = S

   Cells(A, B) = S

   'Проверка

   F = False

   If M(1, 1) = S And M(2, 2) = S And M(3, 3) = S Then F = True ‗главная диагональ

   If M(1, 3) = S And M(2, 2) = S And M(3, 1) = S Then F = True  ‗побочная диагональ 

   If M(A, 1) = S And M(A, 2) = S And M(A, 3) = S Then F = True ‗в строке

   If M(1, B) = S And M(2, B) = S And M(3, B) = S Then F = True ‗в столбце

Loop Until hod = 9 Or F

 If F Then

 MsgBox ("Выиграли " & S)

 Else: MsgBox ("Ничья")

 End If

 End Sub

 

 

2. Проверить, является ли заданный массив магическим квадратом.

 

 

4

9

2

3

5

7

8

1

6

 

16

3

2

13

5

10

11

8

9

6

7

12

4

15

14

1

Контрольная сумма (3) 45/3=15

Контрольная сумма (4) 34

 

Option Base 1

Sub ex()

Dim M() As Integer, i As Integer, j As Integer

Dim A() As Integer, R As Integer

Dim n As Integer, k As Integer

Dim S As String, F As Boolean

Worksheets(1).Activate

'Заполнение двумерного и одномерного массивов

n = InputBox("Введите размерность")

ReDim M(1 To n, 1 To n)

ReDim A(1 To n * n)

S = 0: k = 0

For i = 1 To n   For j = 1 To n     k = k + 1

    M(i, j) = Cells(i, j)

    A(k) = Cells(i, j)

    S = S + M(i, j)

Next j, i

S = S \ n

'проверка чисел от 1 до n, сравниваются с к,

' если равно ставится на к-тое место,

' если в результате на к-том месте такое же занчение,

' то все в порядке.

For k = 1 To n * n F = True

 For i = 1 To n * n

    If A(i) = k Then

    R = A(k): A(k) = A(i): A(i) = R

    End If

 Next i

    If A(k) <> k Then F = False

Next k

'проверка сумм s3 = 0: s4 = 0 For i = 1 To n   s1 = 0: s2 = 0   For j = 1 To n     s1 = s1 + M(i, j) 'строка     s2 = s2 + M(j, i) 'столбец

    If i = j Then s3 = s3 + M(i, j) 'главная диагональ

    If i + j = n + 1 Then s4 = s4 + M(i, j) 'побочная диагональ

  Next j

  If s1 <> S Or s2 <> S Then F = False

Next i

If s3 <> S Or s4 <> S Then F = False

If F Then MsgBox ("Магический") Else MsgBox ("Не магический")

End Sub

 

4. Строковые операторы и функции 

Строкой называется ограниченный двойными кавычками набор символов.

Пустая строка «».

Строки можно объединять с помощью + или &.

Обозначения: S – строка (тип String), х – число, k – количество (целое число), n – позиция в строке.

Asc(S)

Возвращает ASCII – код первого символа строки

Asc(«А»)=65 Asc(«Bit»)=66

Chr(x)

Возвращает символ, соответствующий  ASCII – коду.

Chr(66) = B

Hex(x)

Переводит число в 16ричную систему 

Hex(30)=1Е

Oct(x)

Переводит число в 8ричную систему

Oct(9)=11

Str(x)

Переводит число в строку

Str(5) = «5»

Val(S)

Переводит строку в число

Val(«5 лет») = 5 Val(«Лет 5») = 0

Lcase(S)

Все буквы преобразует в строчные

Lcase(«Бит») = «бит»

Ucase(S)

Все буквы преобразует в прописные

Ucase («Бит») = «БИТ»

StrConv(S,код)

Изменяет регистр в строке, код 1 – все прописные, 2- все строчные, 3- каждое слово начинается с прописной 

StrConv(«это я»,3) = «Это Я»

Len(S)

Длина строки

Len(«Экран») =5

Left (S,k)

Возвращает подстроку с начала строки, состоящую из k символов

Left («Дискета»,4) = «Диск»

Right (S,k)

Возвращает подстроку с конца строки, состоящую из k символов

Right («Экран»,4) = «Кран»

Mid (S,n[,k])

1) функция – возвращает часть строки, начиная с позиции n, длиной  k символов (если k не указано, то до конца строки) 2) оператор – заменяет часть строки подстрокой, начиная с позиции n вставляет k первых символов другой строки

A=Mid («Сокол»,2,3) = «Око»

 

 

a=‖класс‖: b=‖олово‖ Mid (a,2,3)=b (а= «колос»)

InStr([n, ]S1,S2)

Возвращает номер позиции вхождения строки S2 в S1, поиск осуществляется начиная с позиции n (если не указана, то с начала строки)

InStr(«Сокол», «око») =2 InStr(3,«Сокол», «о») =4


InStrRev(S1,S2)

Выполняет поиск подстроки с конца

InStr(«Сокол», «о») =4

LTrim (S), RTrim(S), Trim(S)

Удаляет пробелы соответственно с начала, конца и с

обеих сторон

 

StrReverse(S)

Изменяет порядок следования символов на обратный

StrReverse(«Телефон») = «нофелеТ»

Space(k)

Возвращает строку из указанного количества пробелов 

а=Space(3)  = «     » 

String(k,S)

Возвращает строку из указанного количества указанных символов

а= String(3, «а») = «ааа»

StrComp(S1,S2, Способ)

Возвращает результат сравнения двух строк:

-1, если S1<S2

0, если S1=S2

1, если S1>S2

Способ сравнения (0 – двоичное, 1 - посимвольное)

StrComp(«бал», «бак», 1) = 1

Replace (S1,S2,S3, [n, m, p])

В строке S1 

находит подстроку S2 и  заменяет ее подстрокой S3,  поиск начинается с позиции n, 

делается m замен (если опущен то все),  р – способ сравнения (0 – двоичное, 1 - посимвольное)

Replace("Мама", "м", "п", , , 1)= «папа» Регистр значения не имеет

Split (S [, p, n, m])

Преобразует строку в одномерный массив, где  p – разделитель (по умолчанию пробел), n – число элементов, m - критерий

 

Join (S , p)

Преобразует одномерный массив в строку, где  p – разделитель (по умолчанию пробел)

 

 

Задача 1. Подсчитать количество заданных символов в тексте.

Решение: просматриваем текст посимвольно с начала до конца и с появлением заданного символа добавляем к счетчику 1.

Sub Ex()

Dim S as String, a as String

Dim i as Integer, k as Integer

S=InputBox(―Введите строку‖) a=InputBox(―Введите символ‖) For i=1 to Len(S)

If Mid(S,i,1)=a then k=k+1

Next

MsgBox k

End Sub 

 

Задача 2. Создать макрос для ТР «Word», оставляющий в выделенном тексте между словами только по одному пробелу.

Комментарии. Перебираем выделенный текст по символам.  Если символ не пробел (код <> 32), то записываем его в новую переменную s2 и меняем флажок на True (т.е., есть последний обработанный символ не пробел). 

Если символ пробел, то добавляем его к s2 и меняем флажок на False, чтобы со 2, 3 и т.д. пробелом на эту ветку не попасть.

Sub Один_пробел()

' Один_пробел Макрос

' Макрос создан 18.10.2007 Kuklins s1 = Selection.Text s2 = "" For i = 1 To Len(s1) x = Mid(s1, i, 1) If Asc(x) <> 32 Then f = True s2 = s2 & x ElseIf f Then s2 = s2 & x  f = False End If

Next

Selection.Text = s2

End Sub


5. Общие процедуры и функции

В VB имеется возможность выделить неоднократно повторяющиеся фрагменты программы в отдельные подпрограмм, которые можно использовать без их повторного написания и отладки.

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

1.      Процедуры Sub

2.      Функции Function.

5.1. Процедуры Sub

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

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

Структура процедуры повторяет структуру программу.

Синтаксис:

[Private | Public] Sub Имя_процедуры ([параметры])

Операторы End Sub

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

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

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

Вызов процедуры осуществляется по одному из операторов:

                   Call Имя_процедуры ([параметры])              При наличии ключевого слова Call параметры

                   Или                                                                    заключены в круглые скобки.

Имя_процедуры [параметры]

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

Задача 1. Заданы массивы случайных целых чисел А(N) и В(N). Получить новый массив С(N), где Сi=Ai+Bi. Каждый из массивов вывести на экран с помощью оператора  MsgBox.

Option Base 1                                                                                                      !

Const n = 5

Dim A(n) As Integer, B(n) As Integer, C(n) As Integer

Sub InputArray(X() As Integer, Name As String)    Параметр Массив указы'Вывод массива в окно сообщений     вается как динамический Dim i As Integer, S As String           без указания границ. 

S = ""

For i = 1 To n

S = S & " " & X(i)

Next i

MsgBox "Массив " & Name & ":" & S End Sub

Sub Ex()                                                                                                                

Dim i As Integer, k As Integer, Index As Integer

Dim Min As Integer, R As Integer 'Формирование массивов А, В, С

Randomize

For i = 1 To n

A(i) = Int(Rnd * 101)

B(i) = Int(Rnd * 101)

C(i) = A(i) + B(i) Next i

'Вывод массивов

InputArray A, "A"

Call InputArray(B, "B")

InputArray C, "C"

End Sub

5.2. Функции Function

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

Синтаксис:

[Private | Public] Function Имя_функции ([параметры]) as Тип_результата

Операторы

End Function

Private или Public - локальная (закрытая) или открытая функция. 

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

мы.

Вызов функции осуществляется по схеме: Имя_переменной = Имя_функции ([параметры])

Отличия между процедурами и функциями:

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

2.      Функции имеют тип, как переменные.

3.      Возвращаемое функцией значение присваивается самому имени функции, поэтому внутри тела функции обязательно должна быть строка      Имя_функции = Значение

Задача 2. Треугольник задан координатами своих вершин (массивы X(3) иY(3) соответственно). Вычислить периметр треугольника.

Option Base 1                                                                                                          !

Dim X(3) As Single, Y(3) As Single

Function Storona (X1 As Single, Y1 As Single, X2 As Single, Y2 As Single)                         x2,y2

'Расчет длины по двум точкам

Storona =sqr((X1-X2)^2+(Y1-Y2)^2)

End Function

Sub Ex()                                                                                                                     x1,y1          D3       x3,y3

Dim d1 As Single, d2 As Single, d3 As Single, P as Single, I as Integer                                                             

‗Ввод координат

For i = 1 To 3

X(i)=InputBox (―Введите Х‖ & i)

Y(i)=InputBox (―Введите Y‖ & i)

Next i

D1=Storona (X(1), Y(1), X(2), Y(2))

D2=Storona (X(2), Y(2), X(3), Y(3))

D3=Storona (X(3), Y(3), X(1), Y(1))

P= D1+ D2+ D3

MsgBox "Периметр=" & P

End Sub

 

6. Объектно-ориентированное программирование

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

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

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

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

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

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

В концепции ООП выделяют три функциональные характеристики:

§  Инкапсуляция - объединение в объекте его свойств и возможных над ним операций (методов). Объект, с одной стороны, обладает определенными свойствами, которые характеризуют его состояние в данный момент времени, а, с другой стороны, над ним возможны операции, которые приводят к изменению этих свойств.  

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

         

Класс: Форма. Свойства: размер, заголовок  и т.д. Методы: Close, Open

§  Наследование – способность объекта сохранять свойства и методы класса-родителя.   Наследование определяет отношение между классами, объекты класса-потомок обладают всеми свойствами и методами класса-родителя.

§  Полиморфизм (много форм) – одна и та же операция над объектами различных классов может выполняться различными методами. 

Например, копирование файлов и копирование символов.

Наиболее распространенными системами ОО визуального П являются Visual Basic Borland Delphi.

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

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

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

7. Программирование приложений на VBA 

7.1. Основные определения

Visual Basic  позволяет создавать сложные Windows-приложения с проверенным годами пользовательским интерфейсом. 

Visual Basic — это визуализированная система программирования, работающая с объектами.

Проект в VB – совокупность всех файлов, входящих в данное приложение (файлы модулей форм, стандартных модулей, модулей классов). 

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

Объект - основное понятие объектно-ориентированного программирования – элементы управления, которые мы видим, раскрывая окна системы или приложений Windows:  §     кнопки (CommandButton), 

§  надписи (Label), 

§  текстовые окна – поля ввода  (TextBox), 

§  списки (ListBox),

§  флажки (CheckBox),

§  переключатели (OptionButton),

§  рамки (Frame),

§  изображения (Image),

§  графические поля (PictureBox), §          и т. п.  

Форма (Form), в которой размещаются эти элементы управления, — тоже является объектом. 

Одного типа объектов на форме может быть несколько. Их различают по именам и при совпадении имен — по номерам.

Объекты характеризуются свойствами, событиями и методами.

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

Значения свойствам объектов присваиваются или изменяются:

§  по умолчанию самой программой (часто оптимальные значения); §         пользователем в процессе конструирования (дизайна) приложения; §    программным путем, при выполнении кода программы:

Синтаксис:

Свойство = значение свойства

ИЛИ

Объект.Свойство = значение свойства

Примеры:

 

Forml.Fontsize = 18

- размер шрифта на форме

Command1.Caption = "Вычислить"

- надпись на кнопке

Свойства можно задавать с помощью специального окна.

Диалоговое окно Свойства  - одно из главных окон среды разработки. 

Выводится на экран или клавишей F4 или командой Вид \ Окно свойств (View \ Properties Window).

В верхней строке название объекта, свойства которого в настоящий момент отображаются в окне.

Окно свойств имеет две вкладки: Алфавит (свойства расположены по алфавиту) и Категории (свойства сгруппированы  по назначению: Внешний вид, Позиция, Масштаб, Шрифт и т.п. )

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

 

Таблица. Некоторые свойства и их описание

Свойство

Описание. «Задает…»

 

Общие

Name

Имя объекта в программном коде

Caption

Текст, отображаемый в заголовке объекта или на объекте

BackColor

Цвет фона

BackStyle

Стиль            фона    (закрашенный           (FmBackStyleOpaqe)            или           прозрачный   ( FmBackStyleTransparent)

ControlTipText 

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

ForeColor

Цвет находящегося на объекте текста или графики

Enabled

Определяет доступность объекта, может ли объект отвечать на события, сгенерированные пользователем

Font

Шрифт объекта

Height

Высота объекта в твипах

Width

Ширина объекта в твипах

Left

Расстояние между внутренним левым краем объекта и левым краем объекта, его содержащего

Top

Расстояние между внутренним верхним краем объекта и верхним краем объекта, его содержащего

Picture

Путь и имя файла рисунка, загружаемого в объект

Index

Номер, идентифицирующий объект в массиве объектов

TabIndex

Порядок перехода объектов клавишей

Tab

 на форме

DragMode

Режим перетаскивания: 0 – запрещено, 1 - разрешено

BorderStyle

Стиль границы объекта (значения зависят от типа объекта)

 

UserForm

 ShowModal 

возможность перехода пользователя к другим формам (False) или отсутствие такой возможности (True)

 

Кнопка CommandButton

Cancel

Кнопку отмены, срабатывающую на нажатие

Esc

 

Default

Кнопку по умолчанию, срабатывающую на нажатие

Enter

 

 

Надпись Label  

Aligment

Выравнивание текста внутри надписи: 0 – по левому краю, 1 – по правому краю, 2 – по центру

AutoSize

Устанавливает возможность (True) авоматического изменения размера в соответствии с длиной текста

WordWrap 

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

 

Текстовое окно TextBox

Locked

Можно ли редактировать объект

ScrollBars

Есть ли полосы прокрутки: 0- нет, 1 – горизонтальная, 2 – вертикальная, 3 -обе

Text

Текст, содержащийся в объекте

Value

 (идентично        -

Text)

 то текстовое значение, которое содержится в этом поле. 

Используется для занесения исходного значения и для приема значения, введенного пользователем, в строковую переменную.

AutoSize 

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

Использовать не рекомендуется, так как может нарушиться весь дизайн вашей формы.

ControlSource 

 ссылка на источник текстовых данных для поля. 

Может ссылаться на ячейку в Excel, на поле в Recordset и т.п. При изменении пользователем данных в текстовом поле автоматически изменится значение на источнике, определенном в ControlSource.

MaxLength 

 максимальная длина значения, которое можно ввести в поле. 

MultiLine 

 можно ли использовать в текстовом поле несколько строк или необходимо обойтись одной. 

PasswordChar 

 указать, за каким символом будут "прятаться" вводимые пользователем значения.  Используется, конечно, при вводе пароля.

ScrollBars 

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

Если текст может быть большим, без них не обойтись.

WordWrap 

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

настоятельно рекомендуется включать в тех ситуациях, когда значение MultiLine стоит в True.

 

Изображение Image

Stretch

Растягивается ли рисунок по размерам объекта

 

Таймер Timer

Enabled

Включает / отключает таймер

Interval

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

 

Переключатель OptionButton

Value

Выбран или нет объект: True – выбран, False – не выбран

 

Флажок CheckBox

Value

Выбран или нет объект: 0 – не выбран, 1 – выбран, 2 – выбран и не доступен

 

И др.

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

Каждому объекту в VB соответствует определенный набор событий.

Пример: В системе Windows щелчок мышью (событие) на кнопке Пуск открывает окно с главным меню (отклик).

Например, нажатие кнопки (событие), как правило, приводит в реальных приложениях к выполнению определенных действий (отклику на событие). 

Событием формы служит, например, щелчок на ней мышью (событие Click), на который в качестве реакции формы можно запрограммировать появление па форме текста, рисунка; окрашивание ее в другой цвет и т. п.

Таблица. События объектов и их описание

Событие

Описание, «Возникает, когда… »

Activate

форма становится активным окном

Change

содержимое объекта изменяется

Click

пользователь нажимает, а затем отпускает кнопку мыши над объектом

DblClick

пользователь дважды щелкает кнопкой

Deactivate

форма перестает быть активным окном

DragDrop

операция переташить-и-бросить завершена

DragOver

операция перетащить-и-бросить в процессе

KeyDown

пользователь нажимает клавишу клавиатуры, в то время как объект активен

KeyPress

пользователь нажимает одну из клавиш доступа к объекту

KeyUp

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

Load

при загрузке формы

MouseDown

пользователь нажимает кнопку мыши, в то время как объект активен

MouseMove

пользователь передвигает указатель мыши над объектом

MouseUp

пользователь отпускает кнопку мыши в то время как объект активен

Paint

любая часть формы или графического поля передвигается, увеличивается или уменьшается

Refresh

Приводит к полной перерисовке объекта

Resize

форма отображается впервые или размер объекта изменяется

Timer

истекает установленный таймеру интервал

Unload

форма убирается с экрана

Методы - это команды на выполнение с объектом некоторых  действий.  Например,

 UserForm – Форма метод

              

описание                                  применение

UserForm1.Show

Если форма уже была загружена в память, она просто станет видимой, если еще нет — то будет автоматически загружена (произойдет событие

Load).

1)из макроса, привязанного к кнопке или клавиатурной комбинации; 

2)                 из кода для элемента управления, расположенного в самом документе (например,

CommandButton) или на другой форме — для перехода между формами; 

3)                 поместить ее в обработчик события Open для документа Word или книги Excel, чтобы форма открывалась автоматически при открытии документа. 

UserForm1.Cls

очищает форму

 

UserForm1.Hide 

форма будет убрана с экрана, но  останется в памяти.

 

UserForm1.Unload 

Удаление формы из памяти

 

 

7.2. Принципы создания и работы приложений 

Процесс создания Windows-приложения делят на два этапа: 

1.      Этап конструирования (дизайна) – этап визуального программирования.         

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

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

В соответствии с этими этапами можно разделить на две части и программу приложения.

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

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

Таким образом, принцип работы программ Windows-приложений, написанных на Visual Basic, носит событийно-управляемый характер. Программа на Visual Basic -- это набор процедур обработки событий, возникающих в результате работы пользователя (работа с клавиатурой, мышью, воздействие на элемент управления в окнах приложений).

В общем виде процедура обработки события записывается так:

[ Private | Public ]  Sub объект_событие ( [параметры] )

Последовательность инструкций

End Sub

Private - параметр, указывающий на тип процедуры, доступной только в модуле, в котором выполняется описание (присваивается по умолчанию),  Public – доступна для всех модулей всех проектов.

Событие – название события, например, щелчок мышью (Click) и т.п.

Параметры определяют особенности события,  например то, какая кнопка мыши была нажата (левая, средняя, правая) и т. п.

Например, процедура обработки события-- щелчка на кнопке cmdВыход может иметь одну инструкцию — End, завершающую работу программы:  Private Sub cmdВыход_Click(  )

End

End Sub

7.3. Структура и сохранение простого проекта

Даже простой проект ввиду сложности своей структуры сохраняется в нескольких файлах:

§  файл проекта — Visual Basic Project (расширение vbp)   - служит для хранения связей между компонентами проекта;

§  файлы форм-- Visual Basic Form File (расширение frm) - по числу форм в проекте сохраняют полную информацию о форме и размещенных на ней управляющих элементах;

§  автоматически дописываемый файл Стили и Состояния с характеристиками рабочего пространства проекта - Visual Basic Project Workspai t (расширение vbw).

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

Сохранять проект желательно начинать на начальных этапах его конструирования, на этапе записи кода программы. Обычно проект отлаживается по процедурам обработки событий. Записаны инструкции процедуры — запуск проекта; записана новая процедура — новый запуск для проверки правильности работы и т. д. Перед запусками проект желательно сохранять. Это исключит потерю проекта при возможных зависаниях системы.

7.4. Форма и ее характеристики 

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

Форма представляет собой прямоугольник со строкой заголовка, на котором расположены оконное меню (слева), название формы (свойство Caption) и три кнопки справа: Свернуть, Развернуть/Восстановить и Закрыть.

Основные свойства:

Name, Caption, BackColor, FontSize, FillColor, WindowState  и некоторые другие (см. в Окне свойств).

Основные события:

Load, Unload, DragDrop, MouseDown, MouseMove, Resize и др. Список доступных событий можно увидеть в правом списке окна кода программы.  Основные методы:

Circlele, Cls, Hide, Line, Show и др.

 

 

 

 

 

 

 

 

Sub Латиница()

'' Латиница Макрос

' Макрос создан 03.10.2007 Учитель

Dim Lat As String, Cyr As String

Lat = "qwertyuiop[]asdfghjkl;'zxcvbnm,./QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./" & Chr(34) Cyr =

"йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ."

 

 

 

End Sub

Карточки для студентов. Задачи на ветвление.

1.      Решить уравнение y=ax+b.

2.      Найти y, если y=корень кв. из х, если  x>0 y=10, если  x=0 y=x2 если  x<0

3.      (самостоятельно) По температуре воды, определить ее состояние – лед, вода, пар.

4.      Даны три числа. Найти максимальное.

5.      Определить к какой координатной четверти принадлежит точка с координатами (x,y).

6.      Определить, является ли т.(a,b) частью круга с центром в т. (x,y) и радиусом R. 

Примечание. Лучше рассматривать не корень квадратный, а квадрат.

7.      Прямоугольник со сторонами параллельными осям координат задается координатами одной из диагоналей (x1,y1)- (x2,y2). Определить, является ли т.(a,b) частью данного прямоугольника.

Примечание. Сначала переставить значения координат так, чтобы x1<x2, y1<y2.           Проверить x1<=a<=x2, y1<b<=y2.

8.      Определить, принадлежит ли т.(a,b) области, ограниченной кривыми y=x2, Y=2x+5.     x2<=y, 2x+5 <=Y осям координат. Квадрат задается координатами левого нижнего угла (x,y) и стороной А.

10.  Клетка на шахматной доске задается парой координат. Даны две пары координат  (x1,y1), (x2,y2). Определить, каким фигурам может принадлежать данных ход.      

11.  Даны три числа А, В и С. Определить:

a.       Существует ли данный треугольник (Сумма ЛЮБЫХ двух сторон должна быть

БОЛЬШЕ третьей стороны)

b.      Если треугольник существует, то: тип треугольника по соотношению сторон 

-  равносторонний A=В и В=С, 

-  равнобедренный A=В или В=С  , XOR

-  разносторонний A<>В и В<>С  и A<>С  ;

c.       тип треугольника по его углам:

-прямоугольный (для ОДНОЙ из сторон выполняется a2=b2+c2)

                  a2=b2+c2 или b2= a2+c2 или c2= a2+b2 

-тупоугольный (для ОДНОЙ из сторон выполняется a2>b2+c2)

                                -остроугольный (для ВСЕХ сторон выполняется a2<b2+c2)        

                  a2<b2+c2 и b2< a2+c2 и c2< a2+b2 

 

Задачи на выбор

1.      Определить награды участникам конференции (1-3 место - золото, серебро, бронза соответственно, остальным - грамота участника).

2.      По номеру месяца (1-12) определить время года.

3.      По введенному часу (1-24) определить время суток.

Карточки для студентов. Задачи на циклы.

Цикл с параметром

1.                Найти сумму всех целых чисел от A до B, где А и В – целые числа, (B>=A) вводятся с клавиатуры.

2.                Вычислить где N вводится с клавиатуры. 

3.                (самостоятельно) Найти сумму кубов всех целых чисел от 10 до 50.

4.                Вычислить сумму:

5.                Найти произведение четных целых чисел от 0 до 100.

6.                Вывести значения функции для х из промежутка [0,10].

7.                (самостоятельно) Вывести значения функции f(x)=sin x для х из промежутка [0,6] с шагом 0,1.

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

 Прирост суммы вклада за 1-й, 2-й, … 6 месяцы;  Сумму вклада через 6 месяцев.

9.                (самостоятельно) Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3,6,9,…, 24 часа.

10.          Известны результаты аттестации 30 студентов – оценки 0,1,2. Подсчитать количество 0, 1, 2.

Цикл с предусловием

11.          Дано число N. 

 Напечатать все натуральные числа, квадрат которых не превышает N.  Найти первое натуральное число, квадрат которого больше N.

12.          С клавиатуры вводится последовательность целых чисел, признаком конца является ввод 0. 

 Найти  среднее значение введенных чисел (0 не считать). 

 Найти максимальное число (0 не учитывать).

 Найти минимальное число (0 не учитывать).

13.          Начав тренировки, лыжник в 1-й день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня.

Определить:

 В какой день он пробежит больше 20 км,

 В какой день суммарный пробег за все дни превысит 100 км.