- •Содержание
- •Основные понятия ооп
- •Объекты
- •Классы объектов
- •Свойства
- •События
- •Инкапсуляция
- •Наследование
- •Полиморфизм (имеющий много форм)
- •Визуальное проектирование интерфейса
- •Процесс создания приложений
- •Структура проекта
- •Событийно-управляемое программирование на vb
- •Типы данных, константы и переменные
- •Типы данных
- •Особые значения
- •Переменные
- •Объявление переменных
- •Константы
- •Выражения, операторы, встроенные функции Выражения
- •Операторы
- •Операции и выражения
- •Встроенные функции vb Математические функции vb
- •Функции преобразования данных vb
- •Функция InputBox
- •Функция MsgBox
- •Некоторые константы аргумента Кнопки
- •Ввод и вывод данных в vb
- •Ввод данных
- •Вывод результатов
- •Функция Format
- •Управляющие операторы
- •Основные логические операции
- •Условные операторы
- •Однострочный синтаксис
- •Блочный синтаксис
- •Select Case(оператор выбора)
- •Циклы с параметром
- •Циклы «Делать пока»
- •Массивы
- •Одномерные массивы
- •Многомерные массивы
- •Оператор Option Base
- •Оператор Erase
- •Ввод и вывод массивов Одномерные массивы
- •Двумерные массивы
- •Процедуры и функции
- •Событийные процедуры
- •Процедуры пользователя
- •Вызов процедур
- •Аргументы
- •Функции-процедуры
- •Данные символьного типа
- •Функция Split
- •Функция Join
- •Оператор Mid
- •Функции и операторы для работы с файлами
- •Открытие файлов
- •Закрытие файлов
- •Работа с файлами последовательного доступа
- •Чтение данных
- •Запись данных
- •Элемент управления CommonDialog
- •Графика в vb
- •Методы графики в vb
- •Задание цвета
- •Свойства объектов, влияющих на графические методы:
- •Применение метода Scale
- •Построение графика функции
- •Некоторые дополнительные элементы управления, которые часто используются в проектах. Объект управления Shape (Фигура)
- •Свойства
- •Объект управления Timer
- •События
- •Свойства
- •Окна общего диалога
- •Создание меню
- •Свойства
- •Работа с несколькими формами
Циклы с параметром
Цикл с параметром: For To Next применяется, когда известно количество проходов.
Цикл «Делать пока»: Do ... Loop с вариациями – цикл с постусловием и цикл с предусловием. Используют, когда число проходов зависит от условия.
Синтаксис For To Next
For Счетчик = Начальное_значение To Конечное_значение [Step Шаг]
Тело цикла
Next [Счетчик]
В начале выполнения цикла значение Счетчик устанавливается в Начальное_значение. При каждом проходе переменная Счетчик увеличивается на 1 или на величину Шаг. Если Счетчик достигает или становится больше Конечное_значение, то цикл завершается, и выполняются следующие за циклом операторы.
Разные конструкции оператора:
For i = 1 To 10
Print i * 100
Next i
For L = 100 To 5 Step -0.5
x = y * L
Next
For i = 1 To 5
For j = 10 To 20
Print i + j
Next j
Next i ‘ Или Next j, i
Для безусловного выхода из цикла используется оператор Exit For.
Пример 1. Напечатать 10 чисел ряда Фибоначчи (каждое последующее число равно сумме двух предыдущих), начиная с 11 числа.
Private Sub Command1_Click() Dim f1, f2 As Integer Dim i As Byte f1 = 1: f2 = 1 For i = 1 To 20 If i > 10 Then Print f1 f2 = f1 + f2 f1 = f2 - f1 Next i
End Sub |
Пример 2. Вычислить произведение
Private Sub Command1_Click() n = Slider1.Value m = Slider2.Value p = 1 For i = 1 To n For j = 1 To m p = p * i / (1 + j ^ 2) Next j Next i Text1.Text = Str(p) End Sub
Private Sub Command2_Click() Unload Me End Sub |
Иногда для ввода данных удобно пользоваться элементом управления Slider (ползунок), его свойство Value отвечает за перемещение указателя ползунка во время работы программы, свойства min и max задают диапазон значений ползунка (по умолчанию min=0, max =10).
Пример 3. Протабулировать функцию sin(x) на отрезке [–π, π] с шагом 0,1.
Private Sub Command1_Click() Const pi = 3.1415926 Dim n As Integer: Dim h As Single Dim x As Single: Dim y As Single Dim sa As String: Dim sf As String h = Val(Text1.Text) n = Int(2 * pi / h) + 1 x = -pi: sa = "": sf = "" For i = 1 To n y = Sin(x) sa = sa + Format(x, "0.000") + Chr(13) + Chr(10) sf = sf + Format(y, "0.000") + Chr(13) + Chr(10) x = x + h Next Text2.Text = sa: Text3.Text = sf End Sub
Private Sub Command2_Click() Unload Me End Sub |
При проектировании данного проекта необходимо для TextBox –ов, предназначенных для вывода, установить следующие свойства Multiline = true и Scrollbars=Vertical
Циклы «Делать пока»
Синтаксис Do ... Loop
Do While <условие> <операторы> Loop |
Условие проверяется до того, как выполняется группа операторов, образующих тело цикла. Цикл продолжает свою работу, пока это условие остается истинным. |
Do <операторы> Loop While <условие> |
Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы 1 раз. Цикл работает, пока это условие остается истинным. |
Do Until <условие> <операторы> Loop |
Условие проверяется до того, как выполняется группа операторов, образующих тело цикла. Цикл продолжает свою работу до тех пор, пока это условие не выполнится (то есть до тех пор, пока условие является ложным) |
Do <операторы> Loop Until <условие> |
Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы один раз. Цикл работает до тех пор, пока это условие не выполнится (то есть до тех пор, пока условие является ложным). |
Для безусловного выхода из цикла используется оператор Exit Do.
Пример 1. Определить количество цифр в целом числе N. Для этого нужно делить число N на 10 до тех пор, пока в целой части числа не будет 0. Число делений равно числу цифр. K– число делений или цифр, INT – выделение целой части числа.
Private Sub Command1_Click() n = Val(Text1.Text) : k = 0 Do n = Int(n / 10) : k = k + 1 Loop While n > 0 Text2.Text = Str(k) Text2.Visible = True : Label2.Visible = True End Sub
Private Sub Command2_Click() Unload Me End Sub
Private Sub Form_Load() Text1.Text = "" : Label2.Visible = False Text2.Text = "" : Text2.Visible = False End Sub |
ЗАМЕЧАНИЕ. Иногда возникает необходимость переделать цикл типа For…Next на цикл Do…Loop (наоборот не всегда получается).
For…Next |
Do…Loop с предусловием |
Do…Loop с постусловием |
For I = text1 to text2 <тело цикла> Next |
I = text1 Do While I <= text2 <тело цикла> I=I+1 Loop |
I=text1 Do <тело цикла> I=I+1 Loop Until I > text2 |