Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция 1 Основы алгоритмизации и программиров...doc
Скачиваний:
44
Добавлен:
10.11.2019
Размер:
2.53 Mб
Скачать

Приоритет выполнения операций

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

Операции сравнения имеют один уровень приоритета и выполняются в порядке следования слева направо. Арифметические и логические опера­ции выполняются в соответствии с порядком, приведенным в таблице:

Операция конкатенации строк (&) не относится к арифметическим операЦиям> н0 по приоритету выполнения находится как раз между арифметическими операциями и операциями сравнения (т.е. выполняет­ся после арифметических операций, но перед операциями сравнения).

Арифметические операции

Арифметические операции могут применяться только к операндам целых и вещественных типов:

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

Перед вызовом функции Rnd необходимо инициировать генератор случайных чисел посредством использования оператора Randomize. Для того чтобы получить последовательность случайных чисел в заданном интервале [нижняя_граница, верхняя_граница], используют следующую формулу:

\гА({<верхняя_граница> - <нижняя_граница> + 1) * Rnd + <иижняя_граница>)

Например, чтобы сгенерировать случайные числа в интервале от 1 до 7, необходимо записать следующую последовательность действий:

Результат тригонометрической функции Atn(X) представляет собой угол, измеряемый в радианах. Чтобы преобразовать радианы в градусы, необходимо умножить значение в радианах на константу 180/Pi. (180/я) Для обратного преобразования (градусов в радианы) необходимо умно­жить величину в градусах на константу Pi/180.

Значение функции Fix(X) эквивалентно выражению:

Операции сравнения

В результате выполнения операций сравнения получается значение логического типа: true или false. Приведенная ниже таблица показывает для каждой операции, выполняемой над операндом 1 (01) и операндом 2 (02), значение результата в зависимости от значений операндов. Если хотя бы один из операндов при выполнении любой операции принимает стандартное значение Null, то результатом выполнения операции тоже будет величина, равная Null.

При сравнении операндов следует учитывать, что правила сравне­ния чисел или символьных строк всегда корректно действуют только в том случае, если сравниваемые операнды однотипны, например, оба операнда — числовые значения или оба операнда — символьные стро-

[си. Если же операнды разного типа, или один из операндов имеет тип Variant, то справедливы следующие правила выполнения операций сравнения:

  • если один из операндов числового типа, а второй — типа Variant и является числом, то сравнение проводится по правилам сравнения чисел;

  • если один из операндов числового типа, а второй — типа Variant и является строкой, не конвертируемой в число, то будет получена ошибка несоответствия типов;

  • если один из операндов типа String, а второй — типа Variant и от­ личен от Null, то сравнение проводится по правилам сравнения строк;

  • если один из операндов числового типа, а второй — Empty, то сравнение проводится по правилам сравнения чисел и значение Empty принимается равным 0;

  • если один из операндов типа String, а второй — Empty, то сравне­ ние проводится по правилам сравнения строк и значение Empty принимается равным пустой строке ("").

К операциям сравнения относят также и операции Is и Like, кото­рые имеют специфические области применения.

Операция Is применяется для сравнения двух переменных А и В ■типа object. Если обе переменные ссылаются на один физический объ-| ект в памяти, то в результате операции A Is В получается значение True. В противном случае результат равен False.

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

Логические операции

Логические операции применяются к операндам логического типа, т.е в качестве операндов выступают выражения, при вычислении дающие результат логического типа. Результат выполнения логических опера­ций тоже логического типа. Вычисление логических выражений проис­ходит в соответствии с таблицами истинности логических операций. Таблицы истинности задают соответствие между значениями операндов и результатом выполнения операции (см. табл 1.10, 1.11).

Помимо значений True и False в таблицы истинности операций до­бавлено стандартное значение Null. Результат выполнения логической операции со значением Null в одном или в обоих операндах также мо­жет быть равным значению Null.

Примеры записи логических выражений:

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

Операции с битами информации (побитовые)

Операции побитового сравнения выполняются для операндов чи­слового типа и в результате дают число, получающееся путем побито­вого выполнения операции над операндами в соответствии с правилами, приведенными в табл. 1.12.

Рассмотрим примеры выполнения операций побитового сравнения. Пусть объявлены две переменных А и В типа Integer. В переменной А находится число 12, а в переменной В — число 9. Запишем значения переменных в двоичном побитовом представлении и применим опера­ции побитового сравнения:

■ 4.5. Операторы языка

Оператор присваивания

Предназначен для присваивания переменной значения. Синтаксис:

[Let] <идентификатор> = <выражение>

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

Например:

Оператор безусловного перехода

Оператор GoTo позволяет изменить стандартный последователь­ный порядок выполнения операторов и передать управление заданному оператору, которому в этом случае должна предшествовать метка. Эта же метка должна быть указана при операторе goto.

Метка представляет собой либо целое число в пределах от 0 до 9999, либо идентификатор.

Синтаксис оператора безусловного перехода:

GoTo <Метка>

<Метка> представляет собой идентификатор или целое число — номер строки программного кода. Метка всегда должна стоять в начале строки и отделяется от первого оператора строки двоеточием. Значение метки должно быть уникально внутри модуля.

Пример:

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

В языке visual basic условный оператор реализован в двух формах: условный оператор If...Then...Else и условный оператор Select Case. Условный оператор If...Then...Else имеет следующий синтаксис:

If <логическое выражение> Then [<onepaTop_true>] [Else <onepaTop_false>]

Такая синтаксическая конструкция должна быть обязательно запи­сана в одной строке. Если в качестве оператора выступает последова­тельность операторов, то операторы при записи должны отделяться друг от друга двоеточием («:»).

Рассмотрим пример.

Пусть необходимо написать последовательность действий для ре­шения следующей задачи: присвоить переменной^ значение sinx, если х > 0, и значение cos х, если х < 0.

If х > 0 Then у = sin(x) Else у = cos (x)

Допустим, что в условии задачи необходимо еще определить зна­чение переменной z:z= 1, если х > 0, и z = 0, если х < 0:

If х > 0 Then у = sin(х) : z =1 Else у = cos(x) : z = 0

Оператор If...Then...Else имеет и другую (так называемую блоч­ную) форму записи:

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

Такую форму удобно использовать в том случае, если реализация алгоритма требует программирования вложенных условных операторов. Изменим, например, условие представленной выше задачи следующим образом: присвоить переменной у значение sin х, если х < 1, и значение cos х, если х > 2, т.е. значение переменной х рассматривается на трех интервалах: (-со, 1), [1,2) и [1,+оо).

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

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

Условный оператор для реализации алгоритма может быть органи­зован так:

Условный оператор Select Case аналогичен по действию оператору Case в языке Pascal. Синтаксис оператора Select Case следующий:

<Выражение> в заголовочной части оператора представляет собой

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

| числения которого последовательно сравнивается с константными зна-

чениями (числовыми или строковыми), заданными в Case-ветвях опера­тора. Если значение выражения совпало с одним из константных значе­ний, то выполняется оператор (или группа операторов), записанный после заголовка соответствующей Case-ветви. Если же константного значения, равного значению выражения, не найдено, то выполняется оператор (или группа операторов), записанный после Case Else.

В случае использования в заголовочной части логического выраже­ния, Case-ветвей может быть три — с константными значениями True False и Null.

Между заголовками Case-ветвей может стоять любое количество строк операторов. Операторы, записанные в одной строке, должны от­деляться друг от друга двоеточием.

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

Рассмотрим запись оператора Select Case для решения задачи, предложенной в описании оператора Case языка Pascal:

Присвоить строке S значение дня недели для заданного числа D при условии, что в месяце 31 день и 1 -ое число — понедельник.

С введением ограничений на область возможных значений пере­менной D и использованием оператора Select Case в полной форме, по­лучим следующую запись алгоритма решения задачи: