![](/user_photo/2706_HbeT2.jpg)
- •Содержание
- •17.2.2. Свойства 130
- •17.6.2. Свойства 133
- •17.7.2. Свойства 134
- •18. Меню 139
- •Основные понятия ооп
- •Объекты
- •Классы объектов
- •Свойства
- •События
- •Три основных принципа ооп
- •Инкапсуляция
- •Наследование
- •Полиморфизм (имеющий много форм)
- •Визуальное проектирование интерфейса
- •Событийно-управляемое программирование
- •Процесс создания приложений
- •Интегрированная среда разработки (иср) visual basic
- •Общая организация программы в vb
- •Структура проекта vb
- •Структура событийной процедуры
- •Общее описание среды vb
- •Краткая характеристика элементов управления, используемых при создании простых приложений
- •Основные свойства, методы и события объектов vb
- •Основные элементы языка Vb
- •Типы данных
- •Переменные
- •Объявление переменных
- •Explicit-объявление
- •Константы
- •Выражения и операции
- •Стандартные подпрограммы
- •Математические функции vb
- •Функции преобразования данных vb
- •Операторы
- •Простые операторы
- •Оператор присваивания
- •Операторы вызова процедур
- •Оператор безусловного перехода
- •Системные диалоговые окна
- •Диалоговое окно ввода информации InputBox
- •InputBox(Приглашение,Заголовок,НачЗначение),
- •Окно сообщения MsgBox
- •Ввод и вывод данных в vb
- •Ввод данных
- •Вывод результатов
- •Функция Format
- •Структурные операторы
- •Условные операторы
- •Оператор выбора Select … Case
- •Операторы повтора
- •Циклы с параметром
- •Элемент управления Slider
- •Циклы с условием
- •Использование рекуррентной формулы для вычисления суммы ряда
- •Использование функции Timer
- •Подпрограммы пользователя
- •Пользовательские процедуры
- •Способ передачи аргументов
- •Функции пользователя
- •Массивы
- •Оператор Option Base
- •Динамические массивы
- •Функции lBound и uBound
- •Функция Rnd
- •Оператор Erase
- •Типовые задачи на обработку одномерных массивов
- •Формирование массива с помощью функции Split
- •Линейная сортировка массива
- •Уплотнение массива
- •Вставка элемента в массив
- •Изменение положения элементов на некотором отрезке
- •Кольцевой сдвиг элементов массива
- •Двумерные массивы
- •Ввод и вывод двумерных массивов
- •Формирование двумерного массива с помощью диалогового окна InputBox и функции Split
- •Вывод двумерного массива с помощью элемента управления msFlexGrid
- •Типовые задачи на обработку двумерных массивов
- •Преобразование двумерных массивов
- •Типовые задачи с квадратными матрицами
- •Массивы в качестве формальных параметров в процедурах и функциях пользователя
- •Данные строкового типа
- •Операции над строками
- •Функции, предназначенные для работы со строками
- •Функция Split
- •Функция Join
- •Оператор Mid
- •Типовые задачи на обработку строк
- •Анализ символьных строк
- •Изменение строк (замена, удаление, вставка символов)
- •Функции и операторы для работы с файлами
- •Открытие файлов
- •Закрытие файлов
- •Работа с файлами последовательного доступа
- •Чтение данных
- •Запись данных
- •Элемент управления CommonDialog
- •Графика в vb
- •Методы графики в vb
- •Задание цвета
- •Свойства объектов, влияющих на графические методы:
- •Применение метода Scale
- •Построение графика функции
- •Некоторые дополнительные элементы управления, которые часто используются в проектах.
- •Объект управления Shape (Фигура)
- •Свойства
- •Объект управления Timer
- •События
- •Свойства
- •Окна общего диалога
- •Создание меню
- •Свойства
- •Работа с несколькими формами
-
Изменение положения элементов на некотором отрезке
При решении задач такого типа очень важен контроль за границами диапазона изменения индексов: они должны быть целыми, не выходить за пределы диапазона, кроме того, нижняя граница диапазона должна быть меньше верхней.
Пример. В одномерном массиве a1, a2, a3, …, an , состоящем из n элементов, изменить порядок следования значений элементов на обратный от позиции n1 до позиции n2 (n1<n2<n).
Алгоритм изменения порядка следования элементов в массиве на обратный состоит в следующем:
n1-ый элемент меняется местами с n2-ым,
(n1+1)-ый элемент меняется местами с (n2-1)-ым,
…………………………………………………….
(n1+i)-ый элемент меняется местами с (n2-i)-ым,
Цикл выполняется лишь до половины диапазона от n1 до (n1+n2) div 2, иначе в массиве ничего не изменится.
Фрагмент программного кода:
For i=n1 To (n1 + n2) div 2 'Цикл по количеству перестановок
tmp=a[i] 'Обмен местами элементов ai и an1+n2-i
a(i)=a(n1+n2-i)
a(n1+n2-i)=tmp
Next i
-
Кольцевой сдвиг элементов массива
Кольцевой сдвиг – это смещение элементов массива вправо либо влево, причем вытесненные элементы занимают освободившиеся в результате смещения позиции в противоположном конце массива – так, словно массив представляет собой кольцо (первый и последний элементы смыкаются). Порядок следования элементов при этом сохраняется.
Пример. В одномерном массиве, состоящем из n элементов произвести кольцевой сдвиг элементов на k позиций. Значение k задается, оно может быть как положительным, так и отрицательным, но должно быть целым.
Фрагмент программного кода:
'Анализ числа k, сдвиг будет происходить только если k отлично от 0
If k <> 0 Then
'Формирование переменной sdvig
If k >0 Then sdvig=k Else sdvig=n+k
'Кольцевое смещение осуществляется на 1 позицию sdvig раз
For i=1 To sdvig
'Смещение начинается с последнего элемента, который помещают во вспомогательную
'переменную tmp, чтобы его значение не потерялось, откуда его затем извлекают и 'отправляют в первую позицию после выхода из внутреннего цикла.
tmp=a(n);
For j=n-1 To 1 Do a(j+1)=a(j)
a(1)=tmp
Next i
End if
-
Двумерные массивы
Для обработки двумерных массивов чаще всего используют два вложенных друг в друга цикла For…Next, каждый из них позволяет перебирать элементы в массиве по соответствующему индексу строки или столбца. Формат описания двумерного массива в разделе объявления переменных:
Dim Имя_массива ([Тип_индекса, Тип_индекса]) [As Тип_данных]
Например,
Dim A[1 To 10, 1 To 10] Of Single
Описывается двумерный массив вещественных чисел A, который максимально может состоять из 10 строк и 10 столбцов. Нижняя граница индексов по обоим измерениям равна 1, верхняя равна 10.
-
Ввод и вывод двумерных массивов
-
Формирование двумерного массива с помощью диалогового окна InputBox и функции Split
-
Использование функции Split для формирования двумерного массива аналогично одномерному. В приведенном ниже примере каждая строка двумерного массива заполняется с помощью диалогового окна InputBox. Элементы строки массива разделяются пробелом, далее с помощью функции Split строка разделяется по пробелу на массив подстрок. Подстрок будет столько, сколько было введено элементов. Массив полученных подстрок индексируется с нуля!
Значения массива выводятся на PictureBox.
Option Base 1 Dim a(30,30) As Single Dim av As String
Private Sub Command1_Click() n = Val(Text1.Text) 'Ввод количества строк m = Val(Text2.Text) 'Ввод количества столбцов 'Формирование строки подсказки для пользователя в окне InputBox txt = "Введите", + Text2.Text +"элементов строки" For i = 1 To n 'Цикл по количеству строк x=InputBox(txt, "Ввод данных") 'Вывод окна InputBox av = Split(x, " ") 'Ввод строки, состоящей из n значений 'элементов массива в переменную av For j = 1 To n 'Цикл по количеству элементов в строке a(i,j) = Val(av(j - 1)) 'Заполнение i-ой строки массива Picture1.Print a(i,j) Next j Next i End Sub |