- •Содержание
- •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
- •События
- •Свойства
- •Окна общего диалога
- •Создание меню
- •Свойства
- •Работа с несколькими формами
-
Преобразование двумерных массивов
Преобразование матриц заключается, как правило, в изменении порядка следования его элементов без изменения значений самих элементов.
Пример 2. Сформировать массив из n*m элементов. Получить новый массив, повернув исходный на: 1800 и 900 по часовой стрелке и на 900 против часовой стрелки.
Фрагменты кодов программы :
'Поворот на 1800 градусов
For i=1 To n 'Цикл по строкам
For j=1 To m 'Цикл по столбцам
b(i,j)=a(n-i+1,m-j+1)
Next j
Next i
'Поворот на 900 градусов по часовой
For i=1 To n
For j=1 To m
b(i,j)=a(n-j+1,i)
Next j
Next i
'Поворот на 900 градусов против часовой
For i=1 To n
For j=1 To m
b(i,j)=a(j,m-i+1)
Next j
Next i
Пример 3. Сформировать массив из n * m элементов. Зеркально отразить (повернуть) его относительно горизонтальной оси и вертикальной оси. Дополнительных массивов не создавать..
|
|
При повороте массива относительно горизонтальной оси внешний цикл по строкам организуется только до целой части от деления n на 2 (горизонтальной оси массива).
Фрагмент кода программы:
'Относительно горизонтальной оси
For i=1 To n\2 'Цикл по строкам
For j=1 To m 'Цикл по столбцам
tmp=a(i,j)
a(i,j)=a(n-i+1,j)
a(n-i+1,j)=tmp
Next j
Next i
При повороте массива относительно вертикальной оси внутренний цикл по столбцам организуется только до целой части от деления m на 2 (вертикальной оси массива).
Фрагмент кода программы:
'Относительно вертикальной оси
For i=1 To n 'Цикл по строкам
For j=1 To m \ 2 'Цикл по столбцам
tmp=a(i,j)
a(i,j)=a(i,m-j+1)
a(n-i+1,j)=tmp
Next j
Next i
Пример 4. Сформировать массив из n * m элементов. Преобразовать его в одномерный массив.
Первый способ решения этой задачи состоит в том, что для формирования индекса очередного элемента одномерного массива задается независимый счетчик k.
Фрагмент кода программы:
'Использование независимого счетчика k для формирования одномерного массива
Dim a(1 To 30,1 To 30) As Single 'Описание статического двумерного
'массива, индексы элементов которого будут начинаться с 1
Dim b() As Single 'Описание динамического массива
Dim i As Integer,j As Integer,n As Integer,m As Integer
ReDim(n*m); 'Задание размера массива b, индексы элементов которого
'будут начинаться с 0!}
k=0 'Инициализация независимого счетчика
For i=1 To n Do 'Цикл по строкам
For j=1 To m Do 'Цикл по столбцам
Begin
b(k)=a(i,j)
k=k+1 'Значение счетчика увеличивается на 1
End;
Второй способ решения этой задачи состоит в том, что индекс очередного элемента одномерного массива вычисляется по формуле:
b(m * (i-1)+j-1) = a(i,j).
Фрагмент кода программы:
'Использование независимого счетчика k для формирования одномерного массива
Dim a(1 To 30,1 To 30) As Single 'Описание статического двумерного
'массива, индексы элементов которого будут начинаться с 1
Dim b() As Single 'Описание динамического массива
Dim i As Integer,j As Integer,n As Integer,m As Integer
ReDim(n*m); 'Задание размера массива b, индексы элементов которого
'будут начинаться с 0!
For i=1 To n Do 'Цикл по строкам
For j=1 To m Do 'Цикл по столбцам
b((i-1)*m +j-1)=a(i,j)