770 likes | 1.18k Views
Лекция 4. Арифметические операции Приоритет арифметических операций Математические функции Массивы Логические операции Приоритет операций. Кафедра Прикладной математики М-703, тел. 362-79-62 К.т.н., профессор Глаголев Виктор Борисович, комн. Ж-405б, тел. 362-73-28
E N D
Лекция 4 Арифметические операции Приоритет арифметических операций Математические функции Массивы Логические операции Приоритет операций Кафедра Прикладной математики М-703, тел. 362-79-62 К.т.н., профессор Глаголев Виктор Борисович, комн. Ж-405б, тел. 362-73-28 http://glagvik.narod2.ru/index.htm
Операции и функции VB располагает большим набором встроенных функций. Их можно разделить на несколько категорий: • Финансово-математические функции • Математические функции • Функции обработки строк • Функции преобразования типов • Прочие функции
Ознакомиться с подробным описанием функций можно в справочной системе VB. Далее мы рассмотрим лишь математические функции VB. В расположенной на следующем слайде таблице дан полный перечень операций, которые могут быть применены к числовым данным.
Приоритет операций Если в выражении использовано несколько операций, то в первую очередь выполняются операции, имеющие наивысший приоритет. Если приоритет операций одинаковый, то они выполняются слева направо. Примеры Выражение Код a + b/c + d (a + b)/(c + d)
Углы выражаются в радианах. В проекте необходимо выполнить импорт пространства имен System.Math,добавив в начало исходного кода (до объявления первого модуля или класса) строку Imports System.Math. Иначе перед именем каждой функции будет необходимо добавлять название класса, например: Math.Sin(x)
Импорт в проект пространства имен System.Math
Функции Int и Fix возвращают значение, равное целой части числа, тип которого совпадает с типом аргумента. Синтаксис:Int(число) и Fix(число) Обязательный аргумент число – это любое допустимое числовое выражение.
Различие между функциями IntиFixсостоит в том, что для отрицательного значения аргумента функция Intвозвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fixближайшее отрицательное целое число, большее либо равное указанному. Например, функция Int преобразует -8.4 в -9, а функция Fix преобразует -8,4 в -8.
Функция Rnd возвращает значение типа Single, содержащее случайное число, меньшее 1 и большее или равное 0. Перед первым вызовом функции Rnd надо использовать инструкцию Randomize() без аргумента для инициализации генератора случайных чисел.
Пример. Игра «Угадай число» Условие игры Компьютер загадывает некоторое случайное целое число k из диапазона 0 – 100. Следует угадать загаданное число, сделав как можно меньше попыток. После каждой попытки компьютер сообщает, загаданное число больше или меньше предложенного числа.
Начало p = 1 Блок-схема алгоритма Генерация случайного числа k от 0 до 100 Ввод k1 a
Нет k ≠k1 Да Нет k > k1 Да Вывод « Загаданное число меньше» Вывод « Загаданное число больше» Вывод «Вы угадали с », p, « попыток» Ввод k1 p = p + 1 Конец a
Массивы Массив - это группа переменных, содержащих элементы данных одного типа и с одним именем. Под каждый элемент массива отводится отдельная ячейка памяти. Все элементы массива имеют один и тот же тип. Возможны ссылки на отдельные элементы массива. Каждый отдельный элемент массива определяется именем массива и значениями индексов.
Например, ссылки a(7) или a1(2, 9) означают, что: а – это имя одномерного массива (вектора) с одним индексом, элемент массива имеет значение индекса равное 7. а1- это имя двумерного массива (матрицы). Об этом говорит применение двух индексов для определения элемента массива.
Первый индекс двумерного массива трактуется как номер строки, в которой находится элемент массива, а второй индекс, как номер столбца. Индексом может быть выражение целого типа с неотрицательным значением. Нижняя граница индекса всегда равна 0. Верхняя граница каждого индекса массива задается при его объявлении.
Пример массива c именем km типа Integer показаний счетчика километров на спидометре автомобиля в начале каждого месяца в течении года: Индекс (номер позиции) элемента массива km Имя массива
Как и простые переменные, массивы объявляются с помощью инструкций Dim, Static, PrivateилиPublic. Примеры объявления массивов: Dim x() As Single Dim y(,) As Single
Объявлен одномерный массив с именем x и двумерный массив y. Об этом говорят скобки в объявлении после имени каждого массива. При объявлении двумерного массива между скобок должна стоять запятая. Объявление верхних границ индексов в этих примерах отложено на потом (такие массивы называют динамическими). Одномерный массив называют вектором. Двумерный массив называют матрицей.
Для объявления верхней границы индекса и размещения в памяти массивов следует поместить инструкцию: Redim x(10), y(4,5) Здесь заданы значения верхних границ каждого индекса массивов.
Индекс массива xможет принимать значение в диапазоне от 0 до 10. Массив x имеет 11 элементов. Первый индекс массива y может принимать значение в диапазоне от 0 до 4. Второй индекс массива yможет принимать значение в диапазоне от 0 до 5. Массив y имеет 30 элементов (произведение числа строк на число столбцов).
При объявлении массива можно выполнить его инициализацию: Dim z() As Single = {1.3, -2.7, _ 14.6, -5} В этом примере объявлен одномерный массив z, имеющий 4 элемента, значения которых заданы списком инициализации. Массив, при объявлении которого верхние границы индексов не были указаны (динамический массив), можно неоднократно переобъявлять с помощью инструкции ReDim.
Среди инструкций внутри процедуры можно записать: ReDim y(5, 10) Далее этот массив может быть переобъявлен: ReDim y(5, 20)
С помощью инструкции ReDim можно изменять только верхние границы индексов. Размерность массива (количество индексов) можно задать один раз. Изменять ее нельзя. Инструкцию ReDim можно применять для изменения динамического массива столько раз, сколько потребуется. Однако при каждом ее применении данные, содержащиеся в массиве, теряются.
Инструкция ReDim Preserveможет увеличить размер массива, сохраняя при этом его содержимое. В следующем примере показывается, как можно увеличить размер массива a4 на 10 элементов без уничтожения текущих значений элементов массива. Пусть был объявлен массив: Dim a4 () As Integer Затем в программе установлен размер этого массива: ReDim a4 (n)
Далее в программе может быть, например, записано: ReDim Preserve a4(n+10) Использование инструкции ReDim Preserve позволяет изменить верхнюю границу только последней размерности массива.
Если при объявлении массива задаются верхние границы индексов, то такой массив называется фиксированным. Пример Dim s(10) As Single Dimb(4, 5) As Integer К фиксированным массивам инструкция ReDim неприменима.
Имеется возможность присвоить содержимое одного массива другому так же, как это делается для простых переменных. Но эти массивы должны иметь одинаковую размерность и одинаковое количество элементов.
Если же в левой части оператора присвоения стоит динамический массив, то совпадение числа элементов не обязательно. Число элементов массива в левой части оператора присвоения при необходимости изменится.
Пример. Dim a() As Integer = {1, 2, 3, 4}, _ b(), i As Integer b = a For i = 0 To 3 MsgBox(b(i)) Next Последовательно на экране в окне функции MsgBoxбудет выведено: 1, 2, 3, 4.
Пример 1 Вычислить среднее арифметическое k заданных чисел.
Применяемые данные Исходные данные: k– переменная целого типа, число заданных величин; a()– массив типаSingle, значения заданных величин. Результаты: s – переменная типаSingle, значение среднего арифметического.
Промежуточные: Сумма – переменная типаSingle, значение суммы первых k элементов массива a; i– переменная целого типа, значение индекса элемента массива a.
Блок-схема алгоритма (1) (2) 1
1 (3) Нет (4) (5) (6) (7) 2 (8)
2 (9) (10)
Посмотрим на эту блок-схему с точки зрения базовых структур, которыев нее входят. Блоки 1 – 2 составляют последовательную структуру (следование), которую мы назовем Структура 1. Блоки 3 – 8 относятся к циклу. Эту структуру мы назовем Структура 2. Блоки 9 и 10 – это опять последовательная структура, которую мы назовем Структура 3.
Структура 1, Структура 2 и Структура 3, рассматриваемые в совокупности также являются структурой следования. В блок-схеме любого структурированного алгоритма всегда можно ясно увидеть базовые структуры, из которых строится алгоритм.
TxtВывод BtnПуск Интерфейс проекта Текстовое поле предназначено для вывода результатов вычислений. Нажатие на кнопку приведет к запуску вычислений.