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>