
- •Технология программирования
- •Технология программирования
- •Оглавление
- •§1. Классификация и эволюция программного обеспечения
- •§2. Модульное и объектно-ориентированное программирование
- •Основные понятия ооп
- •Составные части объектного подхода
- •Инкапсуляция. Свойства
- •Наследование. Методы
- •Полиморфизм
- •§3. Визуальная среда программирования Структура проекта Delphi
- •Библиотека компонентов Delphi
- •Класс tButton (кнопки)
- •Класс tShape (фигуры)
- •§4. Основные типы данных в языке Паскаль
- •Класс tLabel (надписи)
- •Класс tEdit
- •Класс tMemo
- •Класс tMainMenu
- •Стандартные диалоги
- •Классы tOpenDialog и tSaveDialog
- •Класс tFontDialog
- •Инструкция case
- •§6. Программирование циклических алгоритмов
- •Цикл с параметром. Инструкция for
- •Цикл с предусловием. Инструкция while
- •Цикл с постусловием. Инструкция repeat … until
- •§7. Простейшие вычислительные методы
- •Метод прямоугольников
- •Метод Монте-Карло
- •Метод деления пополам
- •§8. Процедуры и функции
- •§9. Одномерные массивы
- •Класс tListBox
- •Класс tComboBox
- •§10. Двумерные и многомерные массивы
- •Класс tStringGrid
- •Алгоритмы поиска наименьшего и наибольшего элемента
- •§11. Алгоритмы поиска и сортировки. Понятие вычислительной сложности алгоритма
- •Алгоритм простого перебора
- •Алгоритм бинарного поиска
- •Алгоритм сортировки методом «пузырька»
- •Алгоритм сортировки включением
- •Понятие вычислительной сложности алгоритма
- •§12. Обработка исключительных ситуаций
- •§13. Программирование процессов реального времени
- •Класс tTimer
- •§14. Графическая подсистема Delphi Класс tImage
- •Класс tCanvas
- •§15. Динамическое создание компонентов. Конструкторы и деструкторы
- •§16. Тестирование и отладка программ
- •Методы тестирования программ
- •Средства отладки программ в Delphi
- •Трассировка программы
- •Точки останова программы
- •Наблюдение значений переменных
- •§17. Жизненный цикл программного обеспечения
- •Последовательный (каскадный) тип
- •Эволюционный (спиральный) тип
- •Библиографический список
- •Технология программирования
- •Редактор с.В.Пилюгина
- •620034, Екатеринбург, ул. Колмогорова, 66, УрГупс Редакционно-издательский отдел
§13. Программирование процессов реального времени
Для разработки программ, работающих в реальном времени, компьютер имеет встроенный системный таймер, который показывает дату и время текущего момента. Этот таймер имеет автономный источник питания и не отключается при выключении компьютера.
Для использования показаний системного таймера в системе Delphi имеется специальный тип данных TDateTime и ряд специальных фукнций.
Данные типа TDateTime содержат величины, связанные с датой и(или) временем. Такие величины возникают, например, при использовании стандартных функций Date – получение текущей даты и Time – получение текущего времени. Эти функции не имеют входных параметров и возвращают показания системного таймера.
При необходимости отображать значения типа TDateTime в текстовых объектах их нужно переводить в текстовую форму (подобно тому, как это делалось для числовых данных). Возникает и обратная задача. Для этого в языке Object Pascal имеются специальные функции:
DateToStr – перевод даты в String;
TimeToStr – перевод времени в String;
StrToDate – перевод из String в дату;
StrToTime – перевод из String во время.
Например, если нужно показать текущее время на экране, можно воспользоваться надписью (объект класса TLabel) и следующей инструкцией: Label1.Caption := TimeToStr(Time);
Другой пример: для того чтобы содержимое окна ввода (объект класса TEdit) перевести в форму даты, следует описать в блоке var переменную а:TDateTime; и написать инструкцию: a:=StrToDate(Edit1.Text); Разумеется, если дата введена не в нужном формате, возникнет исключительная ситуация, которую нужно корректно обработать (см. § 14).
Имеются также функции, переводящие дату и время в числовой вид, выделяя элементы из даты или времени.
Процедура DecodeTime(time,h,m,s,ms) выделяет из текущего времени часы, минуты, секунды и миллисекунды.
Процедура DecodeDate(date,year,month,day) выделяет из текущей даты год, месяц и день.
У этих процедур первый параметр входной, а остальные – выходные.
Функция EncodeTime(h,m,s,ms)возвращает время, составленное из числовых значений часов, минут, секунд и миллисекунд в виде величины типа TDateTime.
Функция EncodeDate(year,month,day)возвращает дату, составленную из числовых значений года, месяца и дня в виде величины типа TDateTime.
Отметим, что переменные h, m, s, ms, year, month, day должны иметь тип word (целые неотрицательные числа).
Класс tTimer
Объекты класса TTimer служат для фиксации событий, связанных с течением времени. Свойства объектов этого класса:
Свойство |
Тип |
Пояснение |
Пример |
Interval |
Integer |
Интервал времени в миллисекундах, проходящий между наступлениями события |
Timer1.Interval:=1000; Событие наступает каждую секунду |
Enabled |
Boolean |
Активность |
Timer1.Enabled:=false; Таймер не работает |
Событие у объектов этого класса одно – onTimer, заключается оно в истечении указанного интервала, т. е. наступает с определенной частотой без участия пользователя.
С помощью таймера можно моделировать движение объектов на экране. Например, для моделирования движения фигуры Shape1 по горизонтали нужна такая программа обработки события onTimer
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Shape1.Left:=Shape1.Left+1;
end;