DIM x AS integer, s AS long
Пользовательские типы записей
Очень часто в программах требуется хранить и обрабатывать информацию о нескольких объектах одной и той же структуры. Например, информацию о студентах: фамилию, имя, отчество, год рождения и т.д. Можно хранить эту информацию в виде отдельных массивов. Но в современных языках программирования существуют специальные средства, позволяющие работать со сложными типами данных, которые содержат фиксированное число элементов – полей. Каждое поле имеет имя, которое задается ему при описании, и может иметь свой тип.
Структура данных, состоящая из определенного числа разнотипных компонент (полей), называетсязаписью.
В Visual Basic для описания записей можно использовать тип, определяемый пользователем, это так называемый пользовательский тип, с помощью которого можно описать свой достаточно сложный тип данных и в дальнейшем работать с ним как с базовым типом (т.е. целый, строковый и т. д.);
Создание нового типа осуществляется следующей конструкцией:
TYPE<имя типа>
<имя 1 поля> AS <тип 1 поля >
<имя 2 поля> AS <тип 2 поля >
. . .
<имя n поля> AS <тип n поля >
END TYPE
Например, пользовательский тип, предназначенный для хранения Фамилии, имени и года рождения студентов может быть объявлен следующим образом:
TYPE Student
fam AS STRING
name AS STRING ’Фамилия
dsinger AS STRING ’Имя
bdate AS DATE ’Дата рождения
END TYPE
Созданный тип данных может быть использован в программе. Для этого в разделе объявлений переменных надо объявить переменную этого пользовательского типа.
Например, DIM starosta AS Student
Пользовательский тип данных может в свою очередь содержать структурные элементы, тип которых также является пользовательским.
2. Описание переменных
Объявление переменных можно осуществлять на двух уровнях – на уровне процедуры (т.е. только в процедуре, в которой они объявлены) и на уровне модулей (т.е. только в процедурах модуля, в котором они объявлены, но не в других модулях проекта).
Область программы, в которой может быть использована переменная, называется областью видимости переменной.
Область видимости переменной задается при ее объявлении одним из ключевых слов:
Dim – объявляет локальные переменные, существующие только во время вызова процедур, в которых они объявлены. Если переменная объявляется в разделе глобальных объявлений модуля, то она доступна для всех процедур этого модуля. Для других модулей будет не видна.
Private – не может объявлять переменную внутри процедуры. При объявлении в разделе глобальных объявлений модуля Dim и Private равнозначны.
Public – объявленная таким образом переменная является глобальной на уровне приложения и доступна из всех его модулей.
Static – для объявления статических переменных, т.е. при выходе из процедуры их значения сохраняются, хотя являются недоступными, пока процедура не будет вызвана вновь.
Перед использованием переменных в программе их требуется описать (объявить, декларировать). Объявление переменных может быть явным или неявным. Для явного описания переменных существуют специальные операторы описания. Синтаксис оператора описания:
[Static/Private/Public] DIM <имя переменной> [AS <тип>]
Примеры:
DIM a AS string
Private DIM y1, y2 AS integer
DIM x AS integer, s AS long
Другим способом явного объявления переменных является указание типа с помощью суффикса – специального символа в конце имени. В этом случае использование ключевого слова As не требуется:
[Static/Private/Public] DIM <имя переменнойСуффикс>
Ниже в таблице приведены типы переменных и соответствующие им суффиксы.
Суффикс % & ! # $ @ | Тип integer long single double string currency |
Например:
DIM Fam$
Static N%
Хороший стиль программирования предполагает использование явного объявления переменных, поэтому неявное объявление рассматривать не будем.
Использование констант
Различают именованные и неименованные константы.
Именованныеконстанты должны быть описаны в программе в разделе описания. Обращение к ним в программе осуществляется по имени:
[Public/Private] Const <имя константы> [As <тип>]=<выражение>
Например:
ConstPiAs Single =3.1415
Однажды определив константу, ее нельзя будет случайно изменить.
Неименованная константа (литерал) представляет собой значение константы, записанное непосредственно в операторе программы.
Числовые константы:
- целые со знаком (-123) или без знака (54);
- вещественные (с десятичной точкой) – -57.09.
Символьные константы заключаются в двойные кавычки – ”10 кг”
3. Программирование линейных процессов
Самые простые алгоритмы представляют собой так называемые линейные процессы. Линейные алгоритмы – наборы команд, выполняемые последовательно во времени друг за другом.
a. Оператор присваивания
Одной из основных операций в таких алгоритмах является операция присваивания. Присваивание – одно из основных действий, выполняемых компьютером. С помощью операции присваивания записывают действия, которые позволяют изменять значения переменных. Синтаксис этой операции в общем виде можно записать следующим образом:
<имя переменной>=<выражение>
Знак «=» здесь читается «присвоить» (не путайте со знаком «равно»). Суть этой операции заключается в том, что вычисляется результат выражения, стоящего в правой части от знака «=», и этот результат записывается в ячейку памяти, обозначенную идентификатором переменной, стоящей слева от знака «=». Поэтому операция X=X+1 означает, что к значению переменной X прибавляется 1 и результат снова записывается в ячейку X, т.е. значение переменной X увеличилось на 1.
Для того чтобы правильно записывать выражения в программе, необходимо знать некоторые правила записи выражений:
1. Все выражения записываются в одну строку с учетом порядка выполнения операций.
2. Для изменения порядка выполнения операций используют круглые скобки.
3. Порядок выполнения операций в выражении определяется приоритетом арифметических операций. Ниже в таблице записаны операции в порядке убывания их приоритета и обозначение этих операций в программе. Операции, имеющие равный приоритет, записаны в одной строке таблицы.
Название операции | Обозначение | Пример |
Возведение в степень | ^ | X2 → X^2 |
Остаток от деления (только для данных целого типа) | XmodY где X – делимое, Y – делитель | 7 mod 3 Ответ: 1 |
Целочисленное деление (целая часть результата деления) | X\Y где X – делимое целого типа, Y – делитель целого типа | 7 \ 3 Ответ: 2 |
Умножение, деление | *,/ | 2*X+Y/3 |
Сложение, вычитание | +, - | X+Y-5.3 |
Пример. Записать оператор для вычисления y по формуле: .
Оператор присваивания записывается следующим образом:
y=(3*x+2)*4/(5*x)
B. Использование функций
Любой язык программирования имеет определенный набор стандартных встроенных функций. Среди таких функций обязательно есть группа числовых функций – функций, которые имеют числовые аргументы и возвращают числовые значения. Ниже в таблице представлены наиболее популярные числовые функции.
Обозначение функции | Назначение функции | |
ABS(X) | Абсолютная величина числа | |
ATN (X) | Арктангенс | |
COS(X) | Косинус, где X – угол в радианах | |
EXP(X) | Экспоненциальная функция, где e=2.71828 | |
FIX(X) | Целая часть аргумента | |
INT(X) | Максимальное целое число, не превышающее Х | |
LOG(X) | Натуральный логарифм, где X – положительное число | |
RND(X) | Формирование случайного числа | |
SGN(X) | Определяет знак аргумента, возвращает: +1 при X>0, 0 при X=0, -1 при X<0 | |
SIN(X) | Синус, где X – угол в радианах | |
SQR(X) | Корень квадратный из X, где X – положительное число | |
TAN(Х) | Тангенс, где X – угол в радианах |
Пример. Записать оператор присваивания для вычисления функции: : z=SQR(ABS((x^2+6)/SIN(x)))
4. Разветвляющиеся алгоритмы
a. Программирование разветвляющихся процессов
Разветвляющиеся алгоритмы реализуются в программе с помощью оператора условия If … Then и переключателя, реализуемого оператором Select Case.
Оператор условного перехода IF. Этот оператор изменяет порядок дальнейших действий в зависимости от результата проверки значения некоторого выражения или логического условия.
Оператор IF может использоваться в программе как в полном, так и в сокращенном виде (без ELSE). В общем виде формат этого оператора:
IF <условие> THEN < оператор 1> [ELSE <оператор 2>]
<оператор 3>
В полном виде оператор IF используется для реализации в программе алгоритма типа «Разветвление». Действие этого оператора заключается в следующем:
• проверяется условие ( или значение логического выражения);
• если условие выполняется (т.е. значение логического выражения «истинно»), то далее будет выполняться оператор 1, а после его выполнения оператор 3;
• если условие не выполняется (т.е. значение логического выражения «ложно»), то далее будет выполняться оператор 2, а после его выполнения оператор 3.
Оператор IF в сокращенном виде реализует в программе алгоритм типа «Обход» и работает следующим образом:
• проверяется условие (или значение логического выражения);
• если условие выполняется (т.е. значение этого выражения «истинно»), то далее будет выполняться оператор 1, а после его выполнения оператор 3;
• если условие не выполняется (т.е. значение этого выражения «ложно»), то сразу же будет выполняться оператор 3.
b. Логические выражения
Логические выражения используют в операторе IF для записи условий, определяющих дальнейший ход выполнения программы.
Простые логические выражения используют для записи простых условий, включающих одну операцию отношения. Напомним, что операции отношения – это одна из шести операций:
Операция отношения | Знак отношения | Обозначение операции в программе |
равно | = | = |
не равно | ≠ | < > |
больше | > | > |
больше или равно | ≥ | >= |
меньше | < | < |
меньше или равно | ≤ | <= |
Примеры:
x | y | Логическое выражение | Значение логического выражения |
-7 | x>0 x>0 y=x y=x x+y<100 x+y<100 | истина (TRUE) ложь (FALSE) ложь (FALSE) истина (TRUE) ложь (FALSE) истина (TRUE) |
Сложные логические выражения используют для записи сложных условий, которые представляют собой простые условия (логические выражения), соединенные логическими операциями.
В сложных логических выражениях операции отношения имеют больший приоритет, чем логические операции. Следовательно, первыми выполняются операции отношения, а их результаты (TRUE – истина или FALSE – ложь) являются операндами для логических операций.
Для логических операций строят так называемые таблицы истинности, в которых рассматриваются все возможные сочетания значений операндов, соединенных логическими операциями, и результаты логических операций для соответствующих операндов.
Наиболее часто используются следующие логические операции (по убыванию приоритетов):
Обозначение операции | Название операции |
NOT | НЕ – логическое отрицание |
AND | И – конъюнкция (логическое умножение) |
OR | ИЛИ – дизъюнкция (логическое сложение) |
XOR | Исключающее ИЛИ |
Таблица истинности основных логических операций
Обозначение операции в программе | Значение операндов | Результат операции | |
X | Y | ||
NOT x | ложь (FALSE) истина (TRUE) | истина (TRUE) ложь (FALSE) | |
x AND y | ложь (FALSE) ложь (FALSE) истина (TRUE) истина (TRUE) | ложь (FALSE) истина (TRUE) ложь (FALSE) истина (TRUE) | ложь (FALSE) ложь (FALSE) ложь (FALSE) истина (TRUE) |
x OR y | ложь (FALSE) ложь (FALSE) истина (TRUE) истина (TRUE) | ложь (FALSE) истина (TRUE) ложь (FALSE) истина (TRUE) | ложь (FALSE) истина (TRUE) истина (TRUE) истина (TRUE) |
x XOR y | ложь (FALSE) ложь (FALSE) истина (TRUE) истина (TRUE) | ложь (FALSE) истина (TRUE) ложь (FALSE) истина (TRUE) | ложь (FALSE) истина (TRUE) истина (TRUE) ложь (FALSE) |
Примеры:
x | y | Запись логического выражения | Значение логического выражения |
-1 | -5 | x>0 AND y>0 | FALSE TRUE FALSE |
-5 | x>=y OR x<=0 | TRUE TRUE FALSE | |
x>0 AND x<=25 | FALSE TRUE FALSE |
Если в операторе IF в случае выполнения (или невыполнения) условия необходимо выполнить несколько операторов (т.е. если оператор занимает более одной строки), то он должен заканчиваться END IF:
If<условие> Then
<Оператор 1>
<Оператор 2>
. . .
Else
<Оператор n>
End If
Оператор IF может использоваться для создания так называемых многоуровневых проверок: когда одна из ветвей разветвления в свою очередь также имеет разветвление. То есть один оператор IF содержит внутри себя еще операторы IF. Такая конструкция называется «вложенные операторы IF»:
При использовании вложенных операторов If нужно помнить правило: альтернатива Else считается принадлежащей ближайшему оператору If, не имеющему ветви Else.
Пример. Вывести сообщение о том, достиг ли гражданин пенсионного возраста, проанализировав его пол и возраст.
IF pol = ”м” THEN
IF wozrast >= 60 THEN
Text1.Text = ”Пенсионер”
ELSE
Text1.Text = ” Моложе 60 лет ”
END IF
END IF
Если необходимо проверить дополнительное условие в случае невыполнения исходного условия, то используется такая синтаксическая конструкция:
IF <условие 1> THEN
<Оператор 1>