- •Представление информации
- •Представление символов
- •Представление целых чисел (способ с фиксированной точкой)
- •Представление чисел с дробной частью (способ с плавающей точкой)
- •Некоторые важные итоги
- •О Visual Basic (далее vb) в сравнении с другими языками.
- •Основные типы данных vb
- •Типы Byte/Integer/Long
- •Типы Single/Double/Currency
- •Структура проекта
- •Переменные
- •Область видимости переменных
- •Время жизни переменных
- •Константы
- •Преобразование и совместимость типов
- •Ввод и вывод значений переменных Ввод данных с помощью функции InputBox
- •Вывод данных с помощью инструкции Print
- •Форматирование вывода
- •Лекция 6 Вывод данных с помощью функции MsgBox
- •Управление порядком выполнения инструкций
- •Условная инструкция If ... End If
- •Однострочный синтаксис
- •Блочный синтаксис
- •Инструкция выбора Select Case (выбрать в случае)
- •Инструкции цикла
- •1. Параметрический цикл For… Next
- •Лекция 7
- •2. Итерационный циклDoWhile...LoopилиDo...LoopWhile
- •3. Итерационный цикл Do Until...Loop или Do...Loop Until
- •Операции и функции
- •Лекция 8 Массив
- •1. Описание массива фиксированного размера
- •2. Описание динамического массива
- •3. Присвоение массивов
- •Лекция 9
- •Логические операции
- •Лекция 10 процедуры и функции
- •Виды процедур и функций
- •Вызов процедур и функций
- •Объявление процедур и функций
- •Именованные аргументы
- •Область действия имен процедур и функций
- •Пример 1.
- •Пример 2.
- •Лекция 11
- •Лекция 12
- •Перечень подзадач
- •Блок-схема алгоритма функции Проверка
- •Разработка программы
- •Лекция 13 Пример 4
- •Передача аргументов по ссылке и по значению
- •Лекция 14 Отладка
- •1. Режим отладки
- •2. Точка останова
- •3. Пошаговое выполнение программы
- •3.1. Шаг с заходом (Step into)
- •3.2. Шаг с обходом (Step Over)
- •3.3. Шаг с выходом (Step Out)
- •3.4. Выполнить до текущей позиции (Run To Cursor)
- •3.5. Список вызовов
- •4. Окна режима отладки
- •4.1. Окно подсказки Data Tips
- •4.2. Окно контрольного значения (WatchWindow)
- •4.3. Окно локальных переменных (LocalWindow)
- •4.4. Окно отладки (ImmediateWindow)
- •4.5. Инструкция Print
- •5. Обработка ошибок времени выполнения
- •5.1. Перехват ошибки
- •5.2 Проверка и устранение ошибки
- •5.3 Продолжение выполнения программы
- •Лекция 15 Пользовательский тип данных
- •ИнструкцияWith
- •Использование в качестве аргументов процедур и функции имен форм и элементов управления
- •Знаки типов
- •Графика
- •1. Система координат
- •1.1 Свойство ScaleMode
- •1.2. СвойстваScaleLeftиScaleTop
- •Лекция 16
- •1.3. СвойстваScaleWidthиScaleHeigt
- •1.4. МетодScale
- •2. Графические изображения
- •3. Графические управляющие элементы
- •4. Работа с рисунками
- •5. Графические методы
- •6. Построение графиков функций
- •Лекция 17 Файлы
- •Номер файла
- •Типы доступа к файлам
- •Последовательный доступ
- •Чтение из файла последовательного доступа
- •Запись в файл последовательного доступа
- •Произвольный доступ
- •Открытие файла
- •Ввод и вывод (Get- чтение,Put- запись)
- •Двоичный доступ
- •Открытие файла для двоичного доступа
- •Ввод и вывод
- •Лекция 18 События
- •События клавиатуры
- •Объекты, классы, коллекции
- •Экзаменационные вопросы
Лекция 12
Пример 2
Усложним условиепримера, рассмотренного на предыдущей лекции. Заданы те же два одномерных массива. Требуется центрировать и вывести массив, у которого меньше среднее значение элементов, величина которых большеh. Новое условие полностью выглядит так:
Заданы два одномерных массива a(1),a(2), … ,a(k) иb(1),b(2), … ,b(l). Центрировать и вывести массива, если среднее значение его элементов, имеющих значение большеh, меньше среднего значения элементов массиваb, имеющих значение большеh. В противном случае центрировать и вывести массивb. Каждый элемент центрированного массива получается как разность значения соответствующего элемента исходного массива и среднего значения его элементов, имеющих значение большеh.
Изменения в перечне подзадач.
Изменения коснуться только подзадачи вычисления для одномерного массива x, имеющегоimaxэлементов, среднего значения тех его элементов, значение которых большеh. Применим функцию:Function Среднее (x() As Single, imax As Integer, _ h As Single, Сигнал As Boolean) As Single
Новшество состоит в том, что если не окажется ни одного элемента массива x, значение которого большеh, то среднего вообще не существует. Обращение к функцииСреднееможет привести к двум ситуациям:
а) среднее значение существует (при этом аргумент Сигналдолжен получить значениеTrue.
б) среднее значение не существует (при этом аргумент Сигналдолжен получить значениеFalse).
Изменению подлежат только текст процедуры Command1_Clickи функцииСреднее.
Блок-схема алгоритма функции Среднее
Рис. 12.1. Блок-схема алгоритма вычисления среднего значения вектора |
Изменения в основном алгоритме
Рис. 12.2. Блок-схема измененного участка основного алгоритма |
Здесь saиsb– переменные типаBooleanвычисляются при обращениях к функции Среднее для вектораaиbсоответственно. Их значение говорит о том, существует или не существует среднее значение для соответствующего вектора.
Исходный текст программы
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim k As Integer, l As Integer, h As Single
Dim a() As Single, b() As Single
Cls
k = InputBox("k=?")
l = InputBox("l=?")
h = InputBox("h=?")
Print "k= "; k; " l= "; l; " h= "; h
ReDim a(k), b(l)
Print "Ввод вектора а"
Ввод_вектора a
Print "Ввод вектора b"
Ввод_вектора b
Dim СреднееА As Single, СреднееВ As Single
Dim sa As Boolean, sb As Boolean
СреднееА = Среднее(a, k, h, sa)
СреднееВ = Среднее(b, l, h, sb)
If sa And sb Then
If СреднееА < СреднееВ Then
ЦентрированиеВектора a, k, СреднееА
Print "Центрированный вектор а"
Вывод_вектора a
Else
ЦентрированиеВектора b, l, СреднееВ
Print "Центрированный вектор b"
Вывод_вектора b
End If
Else
Print "Решения нет "
End If
End Sub
Private Sub Ввод_вектора(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x)
5: i_max = UBound(x)
For i = i_min To i_max
x(i) = InputBox("Элемент вектора (" _
& i & ")=?",”Ввод вектора”)
Print x(i),
Next
End Sub
Private Function Среднее(x() As Single, imax As _
Integer, h As Single, Сигнал As Boolean) As Single
Dim sum As Single, kol As Integer, i As Integer
sum = 0
kol = 0
For i = 1 To imax
If x(i) > h Then
sum = sum + x(i)
kol = kol + 1
End If
Next
If kol <> 0 Then
Среднее = sum / kol
Сигнал = True
Else
Сигнал = False
End If
End Function
Private Sub ЦентрированиеВектора(x() As Single, _
imax As Integer, Вычитаемое As Single)
Dim i As Integer
For i = 1 To imax
x(i) = x(i) - Вычитаемое
Next
End Sub
Private Sub Вывод_вектора(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x, 1)
5: i_max = UBound(x, 1)
For i = i_min To i_max
Print x(i),
Next
End Sub
Пример 3
Заданы три одномерных массива a(1),a(2), … ,a(k),b(1),b(2), … ,b(l) иc(1),c(2), … ,c(m). Найти у скольких из этих массивов значения всех элементов больше заданной величиныh.