
Лекция2_3_4_vb.ppt
- Количество слайдов: 86
Программирование в среде Visual Basic 6. 0. Основные элементы программирования Лекция 2
Переменные Переменная – зарезервированное место в оперативной памяти компьютера для временного хранения данных. – – Каждая переменная имеет собственное имя. После того, как переменной присвоено значение, она может использоваться в программе вместо самого значения. Правила формирования имен переменных: содержит не более 255 символов, l используются любые буквы, цифры и знаки подчеркивания, l первый символ в имени должен быть буквой, l нельзя использовать пробелы, l имя должны быть уникальным. l не может быть ключевым словом Примеры: Current. Num, Data_of_birth l 2
Простые типы данных Данные Арифметические n n n Byte Integer Long Single Double Currency Логические n Boolean Символьные n String
Типы данных Тип данных Описание Объем памяти Диапазон значений Integer Целые числа 2 байта От -32786 до 32767 Long Целые числа 4 байта От -2147483648 до 2147483648 Single Десятичные числа с плавающей точкой 4 байта От -3, 438 до -1, 4 -45 для отрицательных чисел и от 1, 4 -45 до 1, 438 для положительных чисел Double Десятичные числа с плавающей точкой 8 байта От -1, 7 -308 до -4, 9 -324 для отрицательных чисел и от 4, 9 -324 до 1, 7308 для положительных Currency Числа с фиксированной точкой 8 байта Целая часть числа до 15 цифр, дробная до 4
Типы данных Тип данных Описание Объем памяти Диапазон значений String Строки фиксированной (до 216 символов) и переменной длины (до 231 символов) ASCCII -1 байт на символ UNICODE -2 байта на символ + 10 байт для строки в целом Строка дополняется пробелами или обрезается (при использовании фиксированной длины) Date Хранение даты и времени 8 байт Byte Хранение двоичных данных 1 байт Boolean Логический тип 2 байта Variant Универсальный тип (для любого типа данных) Переменная длина не менее 16 байт Object Хранение ссылок на объекты 4 байта True False по умолчанию присваивается значение False
Объявление переменных Явное объявление переменных Операторы: Dim имя. Переменной [As тип. Данных] Private имя. Переменной [As тип. Данных] Static имя. Переменной [As тип. Данных] Public имя. Переменной [As тип. Данных] Dim, Private, Static, Public – определяют область действия переменной:
Объявление переменных Рекомендуется использовать такой режим трансляции программ, который допускает только явное объявление переменных. Оператор Option Explicit – в начале модуля. Автоматическое добавление оператора во все модули – команда Tools/Options
Объявление переменных Dim Name As String*15 Dim Sur. Name As String, A As Single, I As Integer Dim Money As Currency, Alfa As Boolean Name-строка фиксированной длины (15 симв. ); Sur. Name-строка переменной длины (любое количество символов); A, вещественный; I-целый; Money-арифметическое данное для коммерческих расчетов, Alfa-логическое
Область действия переменных l l Глобальные и локальные переменные. Глобальные – доступны из любой части программы. Для локальных можно задать область действия в рамках модуля или отдельной процедуры. Public – глобальная (уровень проекта, доступна из всех модулей и процедур, описание в разделе General Declarations главного модуля приложения). Dim – локальная (уровень модуля или процедуры описание в разделе General Declarations модуля или формы; уровень процедуры - описание внутри процедуры). Private - локальная (уровень модуля или процедуры) Static – статическая (не обнуляется при выходе из процедуры, локальная)
Выражения l l Выражение - это набор операндов, объединенных между собой знаками операций. Операнд - это объект, над которым выполняется операция. Операндом может быть константа, переменная, выражение, вызов функции, обращение к элементу массива. Набор допустимых операций определяется типом операндов. Выражения делят на арифметические, логические, выражения отношения и символьные.
Арифметические выражения – – – – + - сложение (5+2); - - вычитание (34 -2); * - умножение (5*5); / - деление (3/5 = 0. 6); - деление нацело (52 = 2); Mod - остаток от деления ( 7 Mod 2 = 1); ^ - возведение в степень (2^2 = 4, 25 ^ (1/2) = 5); Приоритет операций в порядке убывания: 1. 2. 3. 4. ^ */ Mod + -. Операнды арифметического выражения могут быть следующих типов: Integer, Long, Currency, Double, Single, Variant. Примеры выражений: A^2+2*A*B+3. 5 I+1 (1+RT)*0. 5 (P 21*SIN(X)-B)/(D+C)
Оператор присваивания переменная = выражение Переменной присваивается значение выражения (т. е. в область памяти, выделенной для переменной записывается значение выражения). При использовании оператора присваивания должны соблюдать следующие правила: – тип переменной должен соответствовать типу выражения (если переменная типа String, то и выражение должно быть типа String); – если в правой и левой частях оператора используются числовые типы данных, то тип правой части преобразуется к типу левой части (для I типа Integer результатом оператора I=2. 5 будет 2, т. е. в области памяти, выделенной под I будет хранится значение 2).
Логический тип данных Boolean l l Переменные логического типа принимают только два значения : Да (Истина) Нет (Ложь) Для обозначения логических значений в языке программирования Vbasic используются константы: True (Истина) и False (Ложь) В операторе описания типа используется ключевое слово Boolean Dim F 1 As Boolean, F 2 As Boolean - переменные F 1, F 2 логического типа
Логический тип данных Boolean l l l Логические значения могут являться результатом вычисления логических выражений или, например, операций сравнения. 5>2 = True является истинным утверждением и результатом такого неравенства является значение «Да» (True). 4>12 = False является ложным утверждением и результатом такого неравенства является значение «Нет» (False).
Логический тип данных Boolean l l l Выражение А<B называется предикатом и при одних значениях переменных А и В является истинным (например, А = 5 и В = 11) и результатом такого неравенства является значение «Да» (True). При других значениях переменных А и В оно является ложным утверждением (например, А = 15 и В = 1) и результатом такого неравенства является значение «Нет» (False). Предикат – логическое выражение содержащее переменные
Логическое сложение «ИЛИ» l В этом примере областью значений переменной является Х<=-2. 5 ИЛИ Х>= 5, т. е. два неравенства связаны условием «ИЛИ» . Если переменная Х принадлежит одному из диапазонов, то значением одного неравенства будет «Да» (например, Х=-4. 2 и результатом неравенства 4. 2 <= 2. 5 будет «Да» ) и значение двойного неравенства тоже равно «Да» . l Условие «ИЛИ» называется логическим сложением. l
Логическое умножение «И» l l областью значений переменной является Х>=-5. 3 И X<=2. 87, т. е. два неравенства связаны условием «И» . Чтобы такое двойное неравенство давало результат «Да» , оба входящих неравенства должны иметь результат «Да» (например, при Х=1, которое принадлежит показанному диапазону, неравенство 1>=-5. 3 и неравенство 1<=2. 87 имеют результат «Да» . Т. е. двойное неравенство, объединенное условием «И» , дает результат «Да» , если оба неравенства имеют результат «Да» . Условие «И» называется логическим умножением.
Логическое выражение l l Данные, над которыми производятся операции, называются операндами; Для логических данных определено множество логических операций; Для логических операций операнды должны принимать значения или «истина» True или «Ложь» False. Вообще, логическим выражением называется выражение составленное с использованием логических операций и результатом вычисления которого является или TRUE или FALSE.
Логические операции l l l Not - логическое отрицание (НЕ); And - логическое умножение (И); Or - логическое сложение (ИЛИ); Xor - логическое исключающее ИЛИ; Eqv - логическая эквивалентность; Imp - логическая импликация.
Логические операции l Также как для чисел существует таблица умножения, так же для любой логической операции существует таблица значений ( «таблица истинности» ) , показывающая значение операции в зависимости от значений операндов, которую необходимо выучить.
Таблица истинности Значения операндов Результат операций A B Not A A AND B A OR B A XOR B A EQV B A IMP B True True False True False True False False True
Основные логические операции в порядке убывания приоритета l l l Not - логическое отрицание (НЕ); And - логическое умножение (И); Or - логическое сложение (ИЛИ); Xor - логическое исключающее ИЛИ; Eqv - логическая эквивалентность; Imp - логическая импликация. 2 1 3 True And Not False Or False = True
Операции сравнения n l l l > больше >= больше или равно < меньше <= меньше или равно = равно <> не равно n n Операции сравнения генерируют логические значения Операции сравнения имеют больший приоритет чем логические операции Ещё большим приоритетом обладают арифметические операции
Операции сравнения l l l "А" < "B" = True (сравнение строк) чем ближе буква к началу алфавита(кодовой таблицы), тем она меньше 2>4 = False Двойные неравенства записываются с помощью логических операций: A > 5 And A < 10 соответствуют математической записи (5 < A < 10). True = -1, False = 0, поэтому 5 < A < 10 всегда равно True
Свойства элементов управления логического типа l l l Некоторые свойства формы и элементов управления принимают значения True или False. Например, если свойство Visible (Видимость) имеет значение True, то форма или элемент управления видимы. При значении False – не видимы. Свойство Enabled (Доступна) также принимает значение True (форма или элемент управления имеют бледный цвет и не реагируют на какие-либо события (щелчок мыши и т. п. ). Есть и другие свойства элементов управления Boolean Свойства могут использоваться как операнды логического выражения.
Использование логических выражений при конструировании алгоритма l l Логические значения используются при конструировании и программировании управляющих структур алгоритмов решения задач. В алгоритмических языках программирования существуют семь базовых управляющих структур: – – – – последовательность, ветвление, обход, выбор, цикл с параметром, цикл с предусловием цикл с постусловием.
Алгоритмы l l l Последовательность - это цепочка операторов, выполняющихся один за другим. Ветвление - это структура, в которой в зависимости от некоторого условия выполняется одна или другая часть программы (реализуется оператором If ). Обход - это структура, в которой в зависимости от некоторого условия выполняется некоторая часть программы или не выполняется (реализуется оператором If ).
Алгоритмы l l Выбор - это структура, позволяющая "разветвить" программу на несколько частей (а не на две части, как в операторе If), в зависимости от значения некоторого выражения (реализуется оператором Select Case). Цикл с параметром - это структура, позволяющая повторить некоторую часть программы определенное, заранее известное, количество раз (реализуется оператором For-Next).
Алгоритмы l Цикл с предусловием - это структура, позволяющая повторять некоторую часть программы пока соблюдается некоторое условие (реализуется оператором Do – Loop). l Цикл с постусловием - это структура, позволяющая повторять некоторую часть программы до тех пор, пока не выполнится некоторое условие (реализуется оператором Do - Loop).
Оператор безусловного перехода 1. l 1. 2. 3. 4. 5. l Go. To {метка | номер строки} Вызывает переход к оператору, помеченному меткой или номером. Go. Sub {метка | номер строки} … {метка: | номер строки} … Return Переход к выделенной группе операторов (внутренней процедуре). Последний оператор этой группы Return возвращает управление на оператор, следующий за Go. Sub.
Условный оператор IF (ветвление, обход , выбор) 1. 2. If A > 10 Then A = A+1 : B = B + A : Go. To Vstavka (обход) If Name = "Иван" Then Go. To 555(обход) или 1. 2. 3. 4. 5. 6. 7. 8. 9. If Answer = "No' Then (ветвление) Mark = Mark - 1 Else If Num_Answer = Max_Num Then Topic = Topic + 1 Else Result = Mark end if
Условный оператор IF (ветвление, обход , выбор) 1. 2. 3. 4. 5. 6. 7. If Answer = "No' Then Mark = Mark - 1 Else. If Num_Answer = Max_Num Then Topic = Topic + 1 Else Result = Mark End if
Условный оператор IF (ветвление, обход , выбор) 1. 2. 3. If Х>=-5. 3 And X<=2. 87 Then. . . end if 4. If Command 1. Visible Then 5. . . Else. . . end if 6. 7.
Элемент управления Option. Button l l l Многие элементы управления используют логический тип данных для задания значения свойств Наиболее типичным представителем является элемент управления Option Button (переключатель), который служит элементом пользовательского интерфейса для выбора одной из нескольких альтернатив. Выбран ли переключатель определяется состоянием его свойства Value. Если Value=true, то переключатель выбран, если равно false то не выбран. Состояние свойства меняется синхронно с состоянием переключателя.
Символьные данные l l Символьные данные или строка символов - любая последовательность символов. В Visual Basic строка символов заключается в кавычки. “ 12345678” ; “Иванов” ; “Фамилия И. О. ”; В операторе описания типа используется ключевое слово String. В Visual Basic символьные данные (строки символов) могут быть постоянной или переменной длины. Это определяется в операторе описания типа. Примеры: Dim Name As String*15, Sur. Name As String Для работы с символьными данными используется оператор конкатенации (объединения) и встроенные функции.
Операции со строками. Объединение строк Операция & - соединение строк (конкатенация ). Строка - "Иванов " & "Иванович" Результат - "Иванович" (пробелы между словами вставлены в исходные строки). Dim Sur. Name As String*15 Dim Name As String Dim Author As String*30 Sur. Name = "Иванов" ‘В Sur. Name - "Иванов " -15 Name = "Иван" ‘длина равна 4 символам Author = Sur. Name & Name В переменной Author будет храниться значение "Иванов Иван " - длина равна 30 символам. До заданной длины строка дополняется пробелами.
Операции со строками. Объединение строк В качестве операции соединения можно использовать и +. Разница в результате проявляется тогда, когда один из операндов число, а другой – строка. l l При соединении с помощью & старшим типом считается строка. При соединении с помощью + старшим типом считается число. Пример: "12" & 4 "12" + 4 ‘Результат "124" ‘Результат 16
Встроенные функции для работы со строками. Преобразование данных Строка S Число X Val Str$ Число X Строка S X = Val("12. 5") ‘Результат: число 12. 5 S = Str$(12. 5) ‘Результат: строка "12. 5" Чаще всего такие преобразования необходимо использовать при работе с элементами управления (Label, Text. Box, …) и с функциями Msg. Box или с Input. Box. Dim x As Integer x = Val(Input. Box("Введите x")) Text 1. Text = str$(x)
Встроенные функции для работы со строками. Удаление пробелов LTrim (строка) – удаление пробелов, расположенных в начале символьной строки, RTrim(строка) – удаление пробелов, расположенных в конце символьной строки, Trim (строка) – удаление пробелов, расположенных в начале и в конце символьной строки. Dim My. String, Trim. String My. String = " <-Trim-> " ' Инициализирует строку. Trim. String = LTrim(My. String) ' Trim. String = "<-Trim-> ". Trim. String = RTrim(My. String) ' Trim. String = " <-Trim->". Trim. String = LTrim(RTrim(My. String)) ' Trim. String = "<-Trim->". ' Тот же результат можно получить с помощью одной функции Trim. String = Trim(My. String) ' Trim. String = "<-Trim->"
Встроенные функции для работы со строками. Выделение подстроки Left (строка, число. Символов) - возвращает значение типа Variant (String), содержащее указанное число первых символов строки. l l строка - строковое выражение, из которого извлекаются символы. Если string имеет значение Null, возвращается значение Null. число. Символов - значение типа Variant (Long). Числовое выражение, указывающее число возвращаемых символов. Если 0, возвращается пустая строка (""). Если число больше либо равняется числу символов в строке, возвращается вся строка. В данном примере функция Left используется для извлечения указанного числа первых символов строки. Dim Any. String, My. Str Any. String = "Всем привет" ' Задает строку My. Str = Left(Any. String, 1) ' Возвращает "В" My. Str = Left(Any. String, 4) ' Возвращает "Всем" My. Str = Left(Any. String, 20) ' Возвращает "Всем привет"
Встроенные функции для работы со строками. Выделение подстроки Right (строка, число. Символов) Возвращает значение типа Variant (String), содержащее указанное число последних символов строки. В данном примере функция Right используется для извлечения указанного числа последних символов строки. Dim Any. String, My. Str Any. String = "Всем привет" My. Str = Right(Any. String, 1) My. Str = Right(Any. String, 7) My. Str = Right(Any. String, 20) ' Инициализирует строку ' Возвращает "т" ' Возвращает " привет" ' Возвращает "Всем привет"
Встроенные функции для работы со строками. Выделение подстроки Mid(строка, начало, [число]) l строка - строковое выражение, из которого извлекаются символы. Если строка имеет значение Null, возвращается значение Null. l начало - значение типа Long. Позиция символа в строке, с которого начинается нужная подстрока. Если начало больше числа символов в строке, функция Mid возвращает пустую строку (""). l число - значение типа Variant (Long). Число возвращаемых символов. Если этот аргумент опущен или превышает число символов, расположенных справа от позиции начало, то возвращаются все символы от позиции начало до конца строки. 1. Возвращает значение типа Variant (String), содержащее указанное число символов строки. Используется в правой части оператора. 2. Используется в левой части оператора для замены части строки подстрокой 1. В данном примере функция Mid используется для извлечения указанного числа символов из строки. Dim My. String, First. Word, Last. Word, Mid. Words My. String = "Пример функции Mid" 'Инициализирует строку First. Word = Mid(My. String, 1, 6) ' Возвращает "Пример". Last. Word = Mid(My. String, 16, 3) ' Возвращает "Mid". Mid. Words = Mid(My. String, 8) ' Возвращает "функции Mid « 2. Пример замены подстроки. Mid в правой части оператора присваивания. Mid(My. String, 1, 6) = "Замена" ' My. String = "Замена функции Mid"
Встроенные функции для работы со строками. Преобразование строки l l LCase (строка) -Возвращает значение типа String, представляющее строку, преобразованную к нижнему регистру. Обязательный аргумент строка представляет любое допустимое строковое выражение. Если строка имеет значение Null, возвращается значение Null. К нижнему регистру преобразуются только прописные буквы; строчные буквы и прочие символы остаются неизмененными. В данном примере функция LCase используется для преобразования строки к нижнему регистру. Dim Upper. Case As String, Lower. Case As String Upper. Case = "Всем Привет 1234" Lower. Case = Lcase(Upper. Case) ' всем привет 1234
Встроенные функции для работы со строками. Преобразование строки UCase (строка) - возвращает значение типа Variant (String), содержащее строку, преобразованную к верхнему регистру. – Обязательный аргумент строка представляет любое допустимое строковое выражение. Если строка имеет значение Null, возвращается значение Null. – К верхнему регистру преобразуются только строчные буквы; прописные буквы и прочие символы остаются неизменными. В данном примере функция UCase используется для преобразования строки к верхнему регистру. Dim Upper. Case As String, Lower. Case As String Lower. Case = "Всем привет 1234" Upper. Case = UCase(Lower. Case) ' ВСЕМ ПРИВЕТ 1234
Встроенные функции для работы со строками. Преобразование строки Str. Reverse(строка) Изменяет порядок следования символов в строке на обратный str = Str. Revers("телефон") ' str = "нофелет" Replace(строка, подстрока 1, подстрока 2, [начало], [число. Строк], [критерий]) Находит в строке подстроку1 и заменяет ее построкой 2. Поиск начинается с позиции начало (по умолчанию= 1). Заменяется число. Строк, по умолчанию – все. Способ сравнения (критерий): 0 – посимвольное; 1 – двоичное. str = Replace("Телефон", "Теле", "Мега", , , 1) ' str = “Мегафон”
Встроенные функции для работы со строками. Определение положения одной строки в другой In. Str ([начало, ] строка 1, строка 2 [, критерий]) Возвращает значение типа Variant (Long), указывающее позицию первого вхождения одной строки внутри другой строки. Результатом поиска является значение позиции, с которой искомая строка 2 входит в строку1. Если искомая строка 2 не входит, то результат поиска равен 0. l Начало - числовое выражение, задающее позицию, с которой начинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки. Если start имеет значение Null, возникает ошибка. Указание аргумента начало является обязательным, если указан аргумент критерий. l строка 1 - строковое выражение, в котором выполняется поиск. l строка 2 - искомое строковое выражение. l критерий - указывает способ сравнения строк. Чтобы выполнить двоичное сравнение, следует указать 0 (это значение используется по умолчанию). Чтобы выполнить посимвольное сравнение без учета регистра, следует указать 1. Возвращаемые значения: 1. Позиция обнаруженной подстроки - строка 2 найдена в строка 1 2. 0 - строка 2 не найдена 3. 0 - строка 1 является пустой строкой 4. Пустое значение - строка 1 имеет значение Null 5. start - строка 2 является пустой строкой 6. Пустое значение - строка 2 имеет значение Null 7. 0 - начало > строка 2 l
Встроенные функции для работы со строками. Определение положения одной строки в другой Пример 1: Dim Search. String, Search. Char, n As Long Search. String = "XXp. XXPXXP" ' Исходная строка Search. Char = "P" ' Следует найти "P" n = Instr(4, Search. String, Search. Char, 1) ' Посимвольное сравнение, начиная с позиции 4. Возвращает 6 n = Instr(1, Search. String, "P", 0) ' Двоичное сравнение, начиная с позиции 1. Возвращает 9 Пример 2: n=In. Str ("abcdefghijklmuvwxyz", "efg") ' результат 5 n=In. Str ("abcdefghijklmuvwxyz", "123") ' результат 0
Константы – элементы выражения, значения которого не меняется в процессе выполнения программы. Примеры 76. 33 – числовая константа, “Ошибка доступа к БД” – символьная константа False –логическая константа VB содержит огромное количество встроенных констант (цвета, клавиши, сообщения и т. д. ). Имеют префикс vb.
Объявление констант Аналогично объявлению переменных. Можно объявлять на уровне модуля или процедуры. Область их действия определяется теми же правилами, что и для переменных. На уровне процедуры: Const имя. Константы [As тип. Данных] = выражение Пример Const str. DBError As String = “Ошибка доступа к базе данных” На уровне модуля (можно указать область действия) [Public | Private] Const имя. Константы [As тип. Данных] = выражение Пример Public Const str. DBError As String = “Ошибка доступа к базе данных”
Массивы 10 12 44 77 46 78 3 Различные данные часто представляются таблицами. В языках программирования несколько однотипных и одноразмерных данных, обозначенных одним именем, называется массивом. – – – Каждый элемент массива имеет порядковый номер (индекс), по которому его можно выбрать. Каждый массив содержит данные только одного типа. Все используемые в программе массивы должны быть определены с помощью оператора Dim. Синтаксис: Dim имя (нижняя_граница To верхняя_гр) As тип
Массивы Примеры: l Dim Tab(1 To 10) l Dim AA 2(1 To 5) l Dim C(1 To 25) l Dim Crab(1 To 5) As Single As Integer As Boolean As String * 10 'длина строки - 10 символов В этом примере определены: l массив с именем Tab, состоящий из 10 элементов и каждый элемент арифметического типа Single; l массив с именем AA 2, состоящий из 5 элементов и каждый элемент арифметического типа Integer, т. е. может иметь только целые значения; l массив с именем С, состоящий из 25 элементов и каждый элемент логического типа, т. е. может иметь только значения True или False; l массив с именем Crab, состоящий из 5 элементов и каждый элемент типа строки символов длиной 10 символов.
Массивы При использовании в программе некоторого элемента определенного массива указывается имя массива и в скобках индекс элемента этого массива. Примеры: – Tab(7) - используется 7 ой элемент массива Tab; – AA 2(3) + AA 2(4) - сложение 3 -го и 4 -го элемента массива AA 2; – С(I) - используется I-ый элемент массива С (значение I должно быть определено и не может быть более 25); – Crab(J+1) - в качестве значения индекса используется арифметическое выражение (его значение не может быть более 5).
Массивы В VB bспользуются массивы фиксированного размера и динамические массивы (могут менять размер в процессе выполнения программы). Позволяют эффективно управлять памятью. Порядок использования динамического массива: 1. Объявляется массив с помощью ключевых слов, используемых при создании массива фиксированного размера. Список размерностей остается пустым. Dim int. Count () As Integer 2. С помощью выполняемого оператора Re. Dim указывается размерность массива в виде числа или выражения. Re. Dim int. Count (х) Re. Dim int. Count (20) Re. Dim int. Count (1 To 20) При выполнении оператора Re. Dim данные, размещенные в массиве теряются. Для изменения размера массива без потери данных Re. Dim используется с ключевым словом Preserve Re. Dim Preserve int. Count (х+1)
Управляющие конструкции. Операторы следования и ветвления Управляющие конструкции определяют последовательность выполнения фрагментов алгоритма. К их числу относятся операторы, выполняющиеся последовательно сверху-вниз, операторы ветвления (условные операторы) и операторы цикла. S 1 S 2 Следование предписывает последовательное выполнение операторов. Первой выполняется оператор S 1, а после ее завершения – оператор S 2, далее S 3 и т. д. К таким оператором относятся операторы присваивания и вызова процедур. Пример: count = 2*a+b N=N+1
Управляющие конструкции. Операторы ветвления l l Ветвление предписывает выбор одного из двух блоков (операторов) в зависимости от того, выполняется условие P или нет. В приведенной конструкции при положительном результате выполняется блок (оператор) S 1, а при отрицательном – S 2. В VB ветвление реализуется с помощью операторов IF и Select Case. да нет P? S 1 S 2
Условный оператор IF (ветвление, обход , выбор) 1. IF «логическое выражение» THEN «then – последовательность» [ELSE «else – последовательность» ] или IF логическое выражение THEN 2. [блок операторов - 1] 3. [ELSEIF логическое выражение THEN 4. [блок операторов - 2]] 5. [ELSE 6. [блок операторов - n]] 7. END IF Блок операторов - это один оператор или последовательность операторов, расположенных на одной строке и разделенных": ". 1.
Операторы ветвления. Если в качестве оператора S 2 также используется оператор ветвления, то два ключевых слова Else и If можно объединить в одно Else. If. Получим конструкцию If. . . Then. . . Else. . . End If Пример If A>B And C=1 Then count = 2*a+b N=N+1 Else. If A<B And C=0 Then count = (a-b)/3 N=N-1 Else N=0 End If
Сокращенное ветвление предписывает выполнить блок S при положительном результате проверки условия P. Пример: If A>B And C=1 Then count = 2*a+b N=N+1 End If нет P? да S
Множественное ветвление (переключатель) определяет выбор одного из n блоков (n>2). Для исполнения выбирается тот блок, условие которого совпадает со значением переключателя. На рисунке показана блоксхема для выбора одного из трех блоков. Select Case управляющая_переменная Case список_значений 1 [операторы_1] [Case список значений_2 [операторы_2] ]. . . [Case Else [операторы_n] ] End Select Переключатель P 1 S 1 P 2 S 2 Pn Sn
Оператор множественного выбора Select Case 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Select Case выражение [ Case список выражений 1 [блок операторов 1] [ Case список выражений 2 [блок операторов 2] … [ Case список выражений n [блок операторов n] [Case Else [блок операторов n+1] End Select l l Select Case позволяет обрабатывать в программе несколько условий и аналогичен блоку конструкций if… Then…Else. Состоит из анализируемого выражения и набора операторов Case на каждое возможное значение выражения. Сначала вычисляется значение выражения, затем она сравнивается со значениями, заданными в операторах Case. Если найдено искомое значение, выполняются блок операторов, приписанных соответствующему Case. Затем управление передается оператору, следующему за оператором End Select.
Примеры использования оператора Select Case Dim x As Integer x = Val(Input. Box("Введите x")) Select Case x Case 1 To 9 Label 1. Caption = "Значение больше нуля" Case 0 Label 1. Caption = "Значение равно нулю" Case -9 To -1 Label 1. Caption = "Значение меньше нуля" End Select Выражение - выражение арифметического или символьного типа. Список выражений может иметь одну из следующих форм: выражение; выражение To; выражение Is знак отношения выражение.
Оператор множественного выбора Select Case X=3 Select Case X^2+1 Case 8, 4*x ‘(X^2+1 = 8 или X^2+1 = 12) блок операторов 1 Case 7, 10, 84 To 90 ‘(X^2+1 = 7 или X^2+1=10 или 84 < = X^2+1 <= 90) блок операторов 2 Case 100, Is <0 ‘(X^2/3 = 100 или X^2+1 <0) блок операторов 3 Case Else ‘(в противном случае) блок операторов 3 End Select Case может выполнить нем более одной последовательности операторов (блоков), после тога, как одно из логических условий оказалось равно True.
Циклы Для выполнения повторяющихся действий используются циклы. l При работе с массивами типичным алгоритмом является: l последовательный перебор элементов массива, l выполнение для каждого элемента какого-либо действия, l прекращение перебора при достижении конца массива. Начало Взять первый элемент массива (индекс равен 1) Выполнить действие над элементом нет Проверить достижение конца массива да Конец Перейти к следующему элементу (увеличить индекс а 1)
Циклы. Пример организации цикля с помощью оператора IF…Then Dim Massiv(1 To 5) As Single Dim S As Single Dim I As Integer I=1 ‘Начинаем с первого элемента, его индекс равен 1 Povtor 1: ‘Это метка оператора, который стоит следующим Massiv(I) = Input. Box("Введите элемент массива " & I) If I<5 Then ‘Проверка достижения конца массива I=I+1 ‘Переход к следующему элементу (индекс увелич. на 1) Go. To Povtor 1 ‘Это оператор перехода End. If I=1 ‘ Начинаем с первого элемента, его индекс равен 1 S=0 ‘ Начальное значение суммы элементов массива равно 0 Povtor 2: ‘Это метка, определяет место перехода S = S + Massiv(I) ‘ Суммирование If I<5 Then ' Проверка достижения конца массива I=I+1 ' Переход к следующему элементу Go. To Povtor 2 ‘ Это оператор перехода End. If Msg. Box "Сумма элементов массива равна " & S, , "Ответ"
Циклы. Пример организации цикля с помощью оператора IF…Then Циклы В этой программе используется оператор перехода (синтаксис: Go. To метка), который изменяет последовательность выполнения операторов программы (после перехода выполняется оператор, стоящий следующим за соответствующей меткой). Метка обозначает следующий за ней оператор программы и может включать не более 40 символов (первый обязательно буква), заканчивается двоеточием (: ). В данном фрагменте программы используются так называемые «ручные циклы» , т. е. явно текущему индексу элемента массива вначале присваивается значение 1, далее это значение увеличивается на 1 и проверяется достижение конца массива. Так как циклические вычисления очень распространены, то в языках программирования существуют специальные средства для организации циклических вычислений - операторы цикла. В Visual Basic существует несколько операторов цикла.
Операторы циклы Так как циклические вычисления очень распространены, то в языках программирования существуют специальные средства для организации циклических вычислений операторы цикла. В Visual Basic существует несколько операторов цикла: l For … Next l For Each … Next l Do … Loop
Цикл с использованием конструкции For … Next Конструкция For … Next выполняет последовательность команд определенное количество раз. Синтаксис: For параметр_цикла = начальное_знач To конечное_знач [Step шаг] Операторы Next [параметр_цикла] l l l параметр_цикла – имя переменной, которая «считает» количество повторов. начальное_знач – числовое значение, которое присваивается переменной – параметру цикла перед первым проходом цикла. конечное_знач – числовое значение переменной – параметра цикла, после превышения которого выполнение цикла прерывается. шаг – величина, на которую меняется значение параметра цикла при каждом проходе цикла (если шаг не задан, меняется на 1, может быть отрицательным). Операторы - это тело цикла, которое выполняется несколько раз.
Пример использования оператора For…Next Суммирование элементов массива: Dim M(1 To 5) As Single Dim S As Single Dim I As Integer For I=1 To 5 'Step 1 M(I) = Input. Box("Введите элемент массива " & I) Next S=0 For I=1 To 5 S = S + M(I) 'Этот оператор выполняется 5 раз Next Msg. Box "Сумма элементов массива равна " & S, , "Ответ"
Цикл с использованием конструкции Do … Loop Цикл выполняется до тех пор, пока истинно заданное в цикле условие. Синтаксис: Do While условие Операторы Loop Условие – логическое выражение, значение которого проверяется перед каждым проходом цикла. Цикл с предусловием – может не выполняться ни разу. Do Операторы Loop While условие Цикл с постусловием выполняется хотя бы один раз.
Цикл с использованием конструкции Do … Loop Цикл выполняется до тех пор, пока ложно заданное в цикле условие. Синтаксис: Do Until условие Операторы Loop Условие – логическое выражение, значение которого проверяется перед каждым проходом цикла. Цикл с предусловием – может не выполняться ни разу. Do Операторы Loop Until условие Цикл с постусловием выполняется хотя бы один раз.
Пример использования оператора Do…Loop Dim M(1 To 5) As Single Dim S As Single Dim I As Integer I=1 Do While I<=5 'Этот оператор выполняется, если I<=5 - истина M(I) = Input. Box("Введите элемент массива " & I) I=I+1 Loop
Пример использования оператора Do…Loop l l l Dim M(1 To 5) As Single Dim S As Single Dim I As Integer S=0 I=1 Do Until I>5 'Этот оператор выполняется до тех пор, пока I>5 не станет Истина ' (то есть при I<=5) M(I) = Input. Box("Введите элемент массива " & I) S = S + M(I) I=I+1 Loop
Оператор Exit Прерывание выполнения цикла до его завершения выполняется с помощью команды безусловного перехода Exit. Оператор Exit – завершает выполнение цикла и передает управление следующей за циклом конструкции. Синтаксис: For параметр_цикла = начальное_знач To конечное_знач [Step шаг] [Операторы] [Exit For] [Операторы] Next [параметр_цикла] Do [{While|Until} условие] Операторы [Exit Do] Операторы Loop Пример For n=100 to 1 step -1 W (n)= n*2 If W (n) < 20 then Exit For Next
Примеры циклических вычислений Вычисление факториала N! N!=1 * 2 * 3 *. . . * (N-1) * N; 0! = 1 Умножаем числа с конца к началу, используя While. Dim N As Integer Dim N 2 As Integer Dim Nf As Long N = Input. Box("Введите N для вычисления факториала") N 2 = N Nf = 1 If N 2 >1 Then Do While N 2>1 Nf = Nf * N 2 = N 2 - 1 Loop End If Msg. Box "Факториал " & N & " равен " & Nf ' с начала к концу + For Dim N As Integer Dim i As Integer N = Input. Box(. . . ) Nf = 1 If N >1 Then For i = 1 To N Nf = Nf * i Next End If
Примеры циклических вычислений Поиск максимального элемента в массиве: Dim M(1 To 8) As Single, Max As Single Dim i As Integer, i. Max As Integer For i=1 To 8 'Step 1 M(i) = Input. Box("Введите элемент массива " & i) Next Max = M(1) i. Max = 1 For i=2 To 8 If Max < M(i) Then Max = M(i) i. Max = i End If Next Msg. Box "Максимальный элемент " & i. Max & " массива равен " & Max, , "Ответ"
Примеры циклических вычислений Отсортировать массив по возрастанию значений. Алгоритм всплывающего пузырька: берем i-ый элемент и сравниваем его со всеми следующими. При этом, если i-ый элемент оказывается больше какого-либо, то меняем значения местами. В результате в позиции i оказывается самый маленький элемент из сравниваемых. Dim M(1 To 8) As Single, Temp As Single, i As Integer, j As Integer For i=1 To 8 M(i) = Input. Box("Введите элемент массива " & i) Next For i=1 To 7 For j=i+1 To 8 If M(i) > M(j) Then ' Поменять местами Temp = M(j) = M(i) = Temp End If Next Label 1. Caption = "" For i=1 To 8 Label 1. Caption = Label 1. Caption & M(i) & " " Next Здесь демонстрируются вложенные циклы. Первый цикл перебирает элементы массива от первого до предпоследнего, а второй – сравнивает выбранный элемент со всеми следующими.
Процедуры и функции Процедуры позволяют разбивать программные коды на небольшие программные блоки (это упрощает отладку, можно использовать при создании других процедур). Visual Basic позволяет выделить повторяющиеся, функционально законченные фрагменты программы и сделать из них подпрограммы. Подпрограммы можно использовать без их повторного написания и отладки, собирая из них требуемую программу. Любая подпрограмма является процедурой или функцией. Пример использования функции: Y = Sin(X) + 8 Особенностью функции является то, что вычисленное значение подставляется вместо ее вызова. Как правило, функция используется в правой части оператора присваивания.
Процедуры и функции Для вызова процедуры используется оператор Call. Пример вызова процедуры: Call Min. Max(massiv, min, max) Такое различие связано с тем, что, если функция возвращает только одно значение, которое подставляется вместо вызова, то процедура может возвратить несколько значений (или ни одного), которые вместо вызова подставить невозможно. Эти значения присваиваются переменным, указанным в спиcке параметров. В вызове функции и процедуры указываются аргументы. Список аргументов определяет данные, которые передаются в процедуру и функцию из другой программы (входные аргументы) или наоборот передаются из нее в другую программу (выходные аргументы).
Процедуры и функции Синтаксис процедур и функций Функция содержит в первой строке ключевое слово Function и имеет вид: Function имя_функции (список_параметров) As тип операторы имя_функции = выражение End Function Процедура содержит в первой строке ключевое слово Sub и имеет вид: Sub имя_процедуры (список_параметров) операторы End Sub
Процедуры и функции пользователя помещается в раздел general кода формы или в отдельный модуль кода. Bas Для создания процедуры или функции используется команды меню (Tools / Add procedure. . . ).
Процедуры и функции Процедуры Sub подразделяются на общие процедуры и процедуры событий. l Общие процедуры – служат для размещения повторяющихся операторов, используемых процедурами по обработке событий (разгружают процедуры событий, исключают дублирование программного кода, облегчается поддержка приложения). Private Sub Proc(X 1 as single, X 2 as single, Y as single) l Процедуры обработки событий связаны с объектами (элементами управления), размещенными в формах VB. Выполняются при наступлении события, с которым они связаны. Private Sub имя. Элемента. Управления_имя события(агрументы) Private Sub Form_Load()
Процедуры и функции Пример процедуры: Sub. Demo (Rlen As Single, Rwid As Single, Area As Double) ' заголовок процедуры Sub. Demo с тремя ' аргументами- Rlen-длина, Rwid-ширина и Area-площадь Area = RLen * Rwid ' расчет площади End Sub Пример функции: Function Fun. Demo (RLen As Single, Rwid As Single) As Double 'заголовок функции Fun. Demo с двумя аргументами- Rlenдлина и Rwid-ширина Fun. Demo = RLen * Rwid ' расчет площади и ' присвоение имени функции вычисленного значения End Function
Процедуры и функции В процедуре для вычисления и записи результата используется выходной аргумент. В функции для записи результата используется имя функции. Создав один раз такую процедуру или функцию, ее можно использовать в различных местах программы для вычислений (один раз написали и много раз используем). В процедуре и функции могут быть определены и локальные переменные: Function Fun. Demo (RLen As Single, Rwid As Single) As Double 'заголовок функции Fun. Demo с двумя аргументами- Rlen-длина и Rwid-ширина Dim S As Double S = RLen * Rwid ' расчет площади Fun. Demo = S End Function
Процедуры и функции Пример обращения к процедуре: Private Sub Command 1_Click() Dim A As Single, B As Single, C As Double A = Input. Box("Введите значение длины прямоугольника") B = Input. Box("Введите значение ширины прямоугольника") Call Sub. Demo (A, B, C) Msg. Box "Площадь прямоугольника равна " & C End Sub Пример обращения к функции: Private Sub Command 2_Click() Dim A As Single, B As Single, C As Double A = Input. Box("Введите значение длины прямоугольника") B = Input. Box("Введите значение ширины прямоугольника") C = Fun. Demo (A, B) * 2 Msg. Box "Удвоенная площадь прямоугольника равна " & C End Sub
Процедуры и функции Имена аргументов при обращении могут быть любыми и не совпадать с именами списка параметров при записи процедуры или функции. Пример: Call Sub. Demo (10. 5, 23. 0, S) Как происходит передача аргументов в процедуру (функцию): Rlen = 10. 5 Rwid = 23. 0 S = Area
Процедуры и функции Правила вызова процедур и функций: 1. Количество значений аргументов при обращении равно количеству параметров при записи процедуры или функции (При записи процедуры было 3 параметра - Rlen, Rwid, Area; при обращении тоже 3 - A, B, C. При записи функции было 2 параметра - Rlen, Rwid; при обращении тоже 2 - A, B). 2. Соответствие значений аргументов и параметров определяется их последовательностью в списках (А соответствует Rlen, В - Rwid, С - Area). 3. Тип значений аргументов при обращении к процедуре и функции должен совпадать с типом аргументов при записи процедуры и функции (При записи процедуры и функции параметры Rlen, Rwid определены типа Single. Параметр Area и тип функции определены как Double. Используемые при обращении значения A, B также определены как Single, а C как Double).
Лекция2_3_4_vb.ppt