- •Курс лекций
- •Лекция 1. Технология программирования - основа разработки качественных программных средств
- •1.1. Программа как формализованное описание процесса обработки данных. Понятие «программное средство».
- •Определение требований к программному средству.
- •1.3. Спецификация качества программного средства.
- •Технология программирования как технология разработки качественных программных средств.
- •. Этапы развития технологии программирования.
- •2.1. Специфика разработки программных средств.
- •Виды программных продуктов и специализация программистов
- •Лекция 2. Общие принципы разработки программных средств
- •2.2. Основные этапы решения задач на эвм и их характеристика.
- •Основные этапы решения задач на эвм и их характеристика
- •Постановка задачи.
- •Формализация задачи.
- •Построения алгоритма
- •Составление программы на языке программирования.
- •Отладка и тестирование программы
- •Разработка документации.
- •Сопровождение опытной эксплуатации.
- •2.3. .Источники ошибок в программных средствах
- •2.3.1. Интеллектуальные возможности человека
- •2.3.2. Неправильный перевод как причина ошибок в программных средствах.
- •Модель перевода.
- •Основные пути борьбы с ошибками.
- •Лекция 3. Разработка структуры программы и модульное программирование.
- •3.1. Основные классы архитектур программных средств.
- •Структура программы. Методы разработки структуры программы. Блок - схема программы
- •Модульное программирование. Основные характеристики модуля.
- •Основные характеристики программного модуля.
- •Спецификация программного модуля содержит,
- •Порядок разработки программного модуля.
- •Контроль структуры программы.
- •Лекция 5. Представление основных структур программы в языках высокого уровня
- •Основные языки программирования и их характеристика.
- •Структура данных в языках программирования высокого уровня
- •Типы данных
- •6. Лекция 6. Стандартные типы данных в языках программирования Visual Basic.
- •Простые целые и вещественные типы переменных. И операции с ними
- •Логические типы данных и операции с ними.
- •7. Лекция 7. Представление строковых типов данных, типы данных Date и Variant.
- •Строковые типы данных и функции работы сними.
- •7.1.1. Операции со строковым типом данных.
- •Переменные типа Data и стандартные функции работы с ними.
- •Лекция 8. Структуры ветвления (операторы условного перехода) и повторения ( циклы) и особенности их использования в программах.
- •Операторы ветвления
- •8.2. Структуры повторения (Циклы).
- •Лекция 9. Структурированные типы данных. Массивы и пользовательские типы данных, их использование в программах
- •Типы данных, определяемые пользователем.
- •9.1. Массивы. Статические массивы.
- •9.2. Динамические массивы
- •9.3. Функции, предназначенные для работы с массивами.
- •9.4. Типы данных, определяемые пользователем.
- •Лекция 10. Основные строительные блоки программы, процедуры и функции.
- •Процедуры, назначение, написание, размещение.
- •10.2. Процедуры обработки событий.
- •Процедуры общего назначения.
- •Вызов процедуры.
- •Выход из процедуры до ее завершения.
- •Лекция 11. Функции . Области видимости переменных, функций и процедур
- •Функции. Стандартные функции
- •Функции, создаваемые пользователем
- •Модульная конструкция программы. Модули, формы. Стандартные модули, модули класса.
- •Области видимости переменных, процедур и функций
- •Лекция 12. Хранение информации в файлах.
- •12.1. Файлы с последовательным доступом.
- •12.1. Открытие файла с последовательным доступом.
- •12.3. Чтение данных из файла с последовательным доступом.
- •12.3. Запись информации в файл с последовательным доступом.
- •12.4. Работа с файлами произвольного доступа.
- •12.5. Ввод и вывод информации записями
- •Лекция 13. Операции с файлами.
- •13.1. Операции работы с файлами
- •13.2. Установка атрибутов файлов
- •Стандартные объекты для работы с файлами.
- •13.4. Вывод информации на печать
- •Лекция 14. Методы структурного программирования. Методы доказательства и отладки программ. Вопросы:
- •Методы структурного программирования
- •14.2. Пошаговая детализация и понятие о псевдокоде.
- •Пример пошагового составления программы
- •Доказательство свойств программы.
- •14.3.1. Обоснования программ. Формализация свойств программ.
- •Свойства простых операторов.
- •Свойства основных конструкций структурного программирования.
- •14.4.4. Завершимость выполнения программы.
- •Пример доказательства свойства программы.
- •Лекция 15 Отладка программы
- •15.1. Типы ошибок в программе
- •15.2. Программные средства для обнаружения ошибок.
- •Ошибки в структуре программы.
- •Перехват и устранение ошибок
- •15.5. Инструменты отладки
- •6. Отображение значений переменных и функций.
- •Лекция 16. Обьекто - ориентированное программирование.
- •16.1. Основные понятия объекто – ориентированного программирования.
- •16.2. Стандартные объекты управления, свойства, методы, события
- •16.3. . Пользовательские элементы управления
- •Лекция 17. Применение технологии ole в программировании и завершение проекта.
- •17.1.. Применение технологии ole в программировании на языках высокого уровня
- •Объект управления ole Container
- •Технология ole Automation.
- •17.4. Состав проекта
- •Создание дистрибутива программного средства
- •Документирование программных средств
- •Аттестация программного средства.
9.2. Динамические массивы
Иногда при объявлении массива его размер еще не известен. В этом случае следует объявлять динамический массив, в котором можно изменять его размер или размерность во время выполнения программы.
В VB динамический массив создается в два этапа. На первом этапе массив описывают без указания размера ( в скобках) в секции (General) ( Declarations) формы, стандартного модуля или модуля класса , в зависимости необходимой видимости его в программе (глобальной, локальной).
(General) ( Declarations)
Dim name Array ( ) As String
На втором этапе с помощью оператора ReDim устанавливают фактический размер массива. Синтаксис оператора ReDim имеет вид
ReDim [Preserve] <имя массива>(Границы) [Тип данных]
Пример:
(General) ( Declarations)
Dim nameArray ( ) As String
Private Sub Cjmmand Click ( )
ReDim nameArray (50, 10)
Операторы
End Sub
В отличие от обычного Dim, оператор ReDim используется только при применении динамического массива в процедурах. При этом тип данных указывать не обязательно, особенно если он уже определен оператором Dim. Можно использовать оператор ReDim для изменения числа элементов или размерности массива, однако нельзя изменять тип элементов массива, за исключением случая , если массив содержит переменные типа Variant. В этом случае приведение массива к явному типу данных допустимо.
При изменении размерности массива возможно потерять содержимое массива, так как после изменения размерности массива элементам массива присваиваются значения по умолчанию.
Для того, чтобы изменять размерность массива без потери содержимого, следует использовать DeDim вместе с ключевым словом Preserve.
Пример:
(General) ( Declarations)
Dim nameArray ( ) As String
Private Sub Cjmmand Click ( )
ReDim nameArray (50, 5)
ReDim Preserve NameArray (50, 10)
Операторы
End Sub
Следует помнить, что для многомерных массивов можно изменять только последнее измерение.
При изменении размерности массива можно изменять только последнее измерение, При изменении размерности можно также изменять верхнюю и нижнюю границы индекса. Но если при этом используется ключевое слово, Priserve, то разрешено изменять только верхнюю границу.
Пример:
(General) ( Declarations)
Dim name Array ( ) As String
Private Sub Cjmmand Click ( )
ReDim nameArray (10 to 20)
ReDim Preserve nameArray (10 to 5) ‘ оператор записан верно
ReDim Preserve nameArray (15 to 10) ‘ оператор записан с ошибкой
Операторы
End Sub
Область видимости динамических массивов (глобальных, контейнерных) определяется способом их объявления – если с помощью оператора Pablic, то массив будет глобальным, если с помощью Private, то контейнерным.
9.3. Функции, предназначенные для работы с массивами.
Иногда при объявлении динамического массива при задании границ массива переменными его фактический размер неизвестен.
Поэтому для определения нижней и верхней границ массива используются функции LBound и Ubound. Синтаксис этих функций имеет вид:
LBound ( Имя массива, Размерность)
Ubound ( Имя массива, Размерность)
Пример:
(General) (Declarations)
Dim nameArray ( ) As Variant
Private Sub Command1_Click ( )
Static iCount As Integer
iCount = iCount + 1
ReDim Preserve (10, ICount)
nUBound = Ubound ( nameArray, 2 )
nLBound = Ubound ( nameArray, 2 )
End Sub
В данном примере после каждого щелчка мышью на кнопке Command1 верхняя граница второго измерения массива nameArray увеличивается на единицу и для её определения достаточно вызвать функцию Ubound.
Элементы управления как и переменные, также могут объединяться в массивы.
Начиная с Visual Basic 6.0, вы имеете возможность присвоить содержимое одного массива другому так же, как вы присваиваете значение одной переменной другой.
Пример:
Sub SyteCopy ( oldCopy ( ) As Byte, newCopy( ) As Byte)
newCopy = oldCopy
End Sub
В этом примере элементам массива newCopy присваиваются элементы массива oldCopy
Существуют определенные правила присвоения массивов которые не следует забывать. Например. если присвоение переменной , объявленной как Long, значения переменной типа Integer осуществляется без всяких проблем, то присвоение переменной типа Integer значения переменной типа Longe вызовет ошибку переполнения . В дополнение к правилам работы с типами данных, при присвоении массивов необходимо учитывать размерности массивов, количество элементов в массивах разных размерностей и тип массива – статический или динамический.
Попытка присвоения массивов различных размерностей и типов данных может быть успешной или неуспешной в зависимости от следующих факторов:
типа массива, используемого в левой части оператора присваивания (статический или динамический) ;
совпадения или несовпадения количества размерностей массивов в левой и правой части оператора присваивания;
совпадения или несовпадения количества элементов в каждой размерности массива;
типов данных элементов массивов ( типы должны быть совместимыми).
Результаты присвоения массивов приведены в таблице
Тип массива в левой части оператора присваивания |
Совпадают ли Значения размерностей? |
Совпадает ли число элементов массивов? |
Результат присваивания |
Динамический |
Нет |
Да или нет |
Успешно. Размерность и число элементов массива в левой части оператора присваивания при необходимости изменяется |
Динамический |
Да |
Нет |
Успешно. Размерность и число элементов массива в левой части оператора присваивания при необходимости изменяется |
Динамический |
Да |
Да |
Успешно |
Статический |
Да или нет |
Да или нет |
Неуспешно с ошибкой компиляции |
Ошибки могут возникнуть как при компиляции, так и во время выполнения приложения, поэтому вам следует позаботиться об их обработке.
