
- •Содержание
- •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
- •События
- •Свойства
- •Окна общего диалога
- •Создание меню
- •Свойства
- •Работа с несколькими формами
-
Уплотнение массива
Уплотнение массива – это удаление из него элементов, отвечающих тем или иным условиям. Образующиеся пустоты заполняются за счет сдвига всех оставшихся элементов. Так как длина массива при этом уменьшается, то при обработке массива необходимо использовать не цикл с параметром, а цикл с условием.
Алгоритм удаления элемента из массива состоит в том, что на место удаленного i-го элемента переписывается i+1-ый элемент, на место i+1-го элемента переписывается i+2-ой элемент и т.д.
Пример. Удалить из сформированного массива числа, кратные трем.
Фрагмент программного кода уплотнения массива (нумерация элементов массива начинается с единицы):
i=1 'Инициализация счетчика
'Цикл последовательного перебора имеющихся элементов. Изначально их n штук
Do While i<=n 'Пока i остается <=N тело цикла выполняется
If (a(i) mod 3 <> 0) or (a(i)=0) Then ' Проверка условия
i=i+1 'Увеличение параметра цикла, если элемент не кратен 3
Else
For j=i To n-1 'Цикл для удаление из массива элемента кратного 3
a(j)=a(j+1) 'На место элемента aj переписывается элемент aj+1
Next j
n=n-1 'Уменьшение на единицу количества элементов массива
End if
Loop 'Конец цикла While
-
Вставка элемента в массив
Вставка элемента в массив – задача обратная предыдущей. Прием используется тот же – смещение группы элементов на одну позицию. Только при уплотнении сдвиг производится влево, при вставке – вправо. При вставке возникает проблема, что делать с последними элементами? Если в дальнейшей работе с массивом участвуют только заявленные элементы, то «хвост» придется вытеснить, последние значения при этом будут утрачены. Иначе, придется создавать дополнительный массив, размерность которого будет больше исходного или объявить размер массива с учетом количества вставленных элементов. Выбор типа цикла для работы с массивом зависит от конкретного случая. Например, можно использовать цикл с параметром, если хвост подлежит вытеснению, и число элементов в массиве остается неизменным.
Пример 1. В заданный упорядоченный по возрастанию массив вставить число k, не нарушая его упорядоченности. Последний элемент вытеснить.
Фрагмент программного кода:
For i=1 To n 'Цикл для перебора элементов массива
If k < a(i) Then 'Поиск места для вставки нового значения k
'Если место найдено, то организуется цикл для смещения элементов на единицу вправо
For j=N-1 Downto i+1
a(j)=a(j-1) ' На место элемента aj переписывается элемент aj-1
Next i
a(i)=k 'Вставка нового значения на освобожденное место
Exit For 'Выход из внешнего цикла i
End if
Next i
Пример 2. В одномерный массив вставить число x после всех элементов, кратных трем. Все элементы массива сохранить.
При описании данного массива необходимо учесть, что его размер может увеличиться максимум вдвое.
Фрагмент программного кода:
kol=0; 'Счетчик количества вставок
For i=n To 1 'Цикл для перебора элементов массива c конца
If a(i) mod 3=0 Then 'Поиск места для вставки нового значения k.
'Если место найдено, то организуется цикл для смещения элементов на единицу вправо
'с учетом вставленных элементов
For j=n+kol To i+1
a(j+1)=a(j) 'На место j+1-го элемента переписывается j-ый элемент
Next j
a(i+1)=x 'Вставка нового значения на освобожденное место
kol=kol+1 'Счетчик количества вставок увеличивается на 1
End if
Next i