4621

Разработка тестов и устранение ошибок в программах

Практическая работа

Информатика, кибернетика и программирование

Цели лабораторной работы: приобретение практических навыков работы с визуальными и невизуальными компонентами Задание № 1. Создание программы Будильник с помощью компонента TTimer Написать программу, отображающую текущее и вы...

Русский

2012-11-23

244.5 KB

6 чел.

Цели лабораторной работы:

приобретение практических навыков работы с визуальными и невизуальными компонентами

2. Задания

Задание № 1. Создание программы „Будильник” с помощью компонента TTimer

Написать программу, отображающую текущее и выводящее сообщение в заданное пользователем время.

Краткие теоретические сведения

компонент Timer

Компонент Timer позволяет производить определенные действия через заданные интервалы времени. Таймер — невизуальный компонент, который может размещаться в любом месте формы. Он имеет два свойства, позволяющие им управлять: Interval — интервал времени в миллисекундах и Enabled — доступность. Свойство Interval задает период срабатывания таймера. Через заданный интервал времени вызывается событие OnTimer. В обработчике этого события записываются необходимые операции.

Остановка и запуск таймер осуществляется установкой свойства Enabled  в true или false соответственно.

Например, если требуется, чтобы через 5 секунд после запуска приложения закрылась форма — заставка, отображающая логотип приложения, на ней надо разместить таймер, задать в нем интервал Interval = 5000, а в обработчик события OnTimer вставить оператор Close, закрывающий окно формы.

План выполнения работы

  1.  Создайте проект типа Application.
  2.  В раздел подключения внешних модулей USES добавьте модуль DateUtils
  3.  Создайте интерфейс приложения как показано на рисунке

  •  Рамки можно создавать с помощью компонента Shape на закладке Additional
    •  Форма рамки определяется свойством Shape 
    •  Цвет – свойством Color из раздела Brush
  •  Для подписей и вывода времени используйте компонент Label на закладке Standard.
    •  Для определения размера и цвета надписей используйте свойства из секции Font
  •  Для включения будильника используйте компонент CheckBox из закладки Standart
  •  Для установки времени срабатывания будильника используйте компонент UpDown из закладки Win32
    •  Для установки минимального (0) и максимального значений (23 для часов и 59 для минут) используйте свойства Min и Max
  •  Для выбора типа сообщения используйте компонент ComboBox из закладки Standart
    •  Определение списка возможных сообщений производите с помощью редактора свойства Items компонента ComboBox. Каждая строка свойства Items соответствует отдельной строке в объекте ComboBox

  1.  Для возможности задания времени срабатывания будильника необходимо определить обработчик события OnClick для объектов UpDown. Примерный листинг:

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

begin

  if UpDown1.Position < 10 then

      Label3.Caption := '0' + IntToStr(UpDown1.Position)

  else

      Label3.Caption := IntToStr(UpDown1.Position);

end;

Обратите внимание что число, изменяемое с помощью объекта UpDown храниться в его свойстве Position

  1.  Для выбора сообщения, которое будет выдаваться при срабатывании будильника:
    1.  объявите глобальную строковую переменную (например S)
    2.  определите обработчик события OnChange для ComboBox таким образом, чтобы переменной S присваивалось значение свойства Text объекта ComboBox
      1.  Примечание: Событие OnChange вызывается каждый раз, когда пользователь выбирает любую позицию из списка ComboBox
  2.  Разместите на форме объект Timer из закладки System
  3.  Задайте интервал срабатывания таймера 1000 мс.
  4.  Свойство Enabled таймера установите в True
  5.  Написание кода обработчика события OnTimer
    1.  Для получения текущего системного времени в формате TDataTime используются функции Time, GetTime или Now 
    2.  Для перевода формата TDataTime в текстовое представление используется функция TimeToStr (аналогично уже знакомым нам IntToStr и StrToInt)

procedure TForm1.Timer1Timer(Sender: TObject);

begin

  Label1.Caption:=TimeToStr(Now);

end;

  1.  Очевидно необходимо дополнить обработчик события OnTimer кодом для сравнения текущего времени с установленным в будильнике и проверкой включен ли будильник.
    1.  Для проверки установки отметки в объекте CheckBox используется его свойство Checked
      1.  Для выделения текущего часа из формата TDataTime  используется функция HourOf, а для выделения минут – MinuteOf
      2.  Пример кода:

if CheckBox1.Checked then

    if (HourOf(Now)=UpDown1.Position) and (MinuteOf(Now)=UpDown2.Position) then begin

       CheckBox1.Checked:=False;

       ShowMessage(S);

    end;

  1.  Сохраните проект и проврете работу приложения

Задание № 2. Обработка исключительных ситуаций

Необходимо создать программу - калькулятор, предусмотрев обработку ошибок деления на ноль.

Краткие теоретические сведения

Конструкция try .. except работает следующим образом: если в операторах блока try возникает исключительная ситуация, то управление передается первому оператору блока except. Если же исключительная ситуация не возникла, то операторы секции except не выполняются. В случае проявления ошибки операторы блока except могут ликвидировать ошибочную ситуацию и восстановить работоспособность программы. Для исключений, обрабатываемых в конструкции try .. except, глобальный обработчик не вызывается, а обработку ошибок должен обеспечить программист.

Блок except может быть разбит на несколько частей с помощью конструкций on .. do, позволяющих анализировать класс исключительной ситуации для более удобной и полной ее обработки. Конструкция on .. do применяется в случаях, когда действия по обработке исключительной ситуации зависят от класса исключения, и имеет следующую форму:

on {Идентификатор: класс исключения} do

{Оператор обработки исключения этого класса};

else {Оператор};

В конструкции on .. do, применяемой для анализа исключительной ситуации на ошибку преобразования, может быть использован идентификатор ео — ссылка на объект исключения, который позволяет обращаться по имени. Например, для доступа к сообщению о характере ошибки необходимо указать ео.Message

План выполнения работы

Внешний вид приложения:

  1.  Создайте проект типа Application
  2.  Разместите на форме необходимые объекты для ввода чисел и вывода результата
  3.  Разместите на форме объект RadioGroup из закладки Standart
  4.  Создание объектов RadioButton и их количество определяется с помощью редактирования свойства Items компонента RadioGroup (аналогично подобному свойству ComboBox в предыдущем задании). Расположение их регулируется свойством Colomns объекта ComboBox
  5.  Какая из кнопок выбрана, можно определить по свойству ItemIndex компонента ComboBox. Если не выбрана ни одна кнопка – ItemIndex имеет значение «-1».
  6.  Определите обработчик нажатия кнопки «ОК» с обработкой исключительной ситуации, возникающей при делении на ноль. Часть листинга приведена ниже. Вместо комментариев напишите действия для сложения, умножения и т.д. Для перевода целого числа в строку используйте функцию IntToStr, для перевода строки в число – функцию StrToInt, а для перевода вещественного в строку – FloatToStr

procedure TForm1.Button1Click(Sender: TObject);

begin

 case RadioGroup1.ItemIndex of

    0: // Сложение содержимого первого и второго поля и вывод результата в поле № 3

    1: // Вычитание

    2: // Умножение

    3: try

        // Деление

       except

          on EO: Exception do begin

             MessageDlg(EO.Message, mtError, [mbOK], 0);

             Edit3.Text:='Ошибка';

          end;

          else begin

             MessageDlg('Ошибка не идентифицирована', mtWarning, [mbOK], 0);

             Edit3.Text:='Ошибка';

          end;

       end;

 else

    ShowMessage('Действие не определено');   

 end;

end;

  1.  Для проверки работы приложение выберете пункт «Build All Projects» из меню Project среды разработки. Затем, с помощью проводника Windows, найдите созданный исполняемый файл проекта, запустите его и проверьте правильность работы.

Помните, что если вы запустите приложение в среде разработке, то компилятор Delphi не даст возможности отработать вашему обработчику исключительных ситуаций.

Задание № 3. Проигрывание видеофайлов

Создать приложение для проигрывания видеофрагментов.

Краткие теоретические сведения

В Delphi (начиная с Delphi 2) имеется компонент MediaPlayer — универсальный проигрыватель аудио- и видео-информации. Этот медиа-плеер расположен на странице System библиотеки компонентов.

Компонент можно использовать в двух режимах. Во-первых, можно предоставить пользователю возможность управлять воспроизведением информации с помощью кнопочного интерфейса, напоминающего панель управления различными проигрывателями. Во-вторых, можно сделать сам компонент невидимым и управлять воспроизведением информации с помощью его методов.

Пользовательский интерфейс медиа-плеера имеет ряд кнопок, управляемых мышью или клавишей пробела и клавишами со стрелками.

Каждой кнопке медиа-плеера соответствует метод, осуществляющий по умолчанию требуемую операцию: Play, Pause, Stop, Next, Previous, Step, Back, StartRecording, Eject.

Тип устройства мультимедиа, с которым работает медиа-плеер, определяется его свойством DeviceType. Если устройство мультимедиа хранит объект воспроизведения в файле, то имя файла задается свойством FileName. По умолчанию свойство DeviceType имеет значение dtAutoSelect. Это означает, что медиа-плеер пытается определить тип устройства исходя из расширения имени файла FileName.

Еще одно свойство MediaPlayerAutoOpen. Если оно установлено в true, то медиа-плеер пытается открыть устройство, указанное свойством DeviceType, автоматически во время своего создания в процессе выполнения приложения.

Воспроизведение видео информации по умолчанию производится в окно, которое создает само открытое устройство мультимедиа. Однако это можно изменить, если в свойстве Display указать оконный элемент, в котором должно отображаться изображение. Это может быть, например, форма или панель. Можно также задать в свойстве DisplayRect типа TRect (свойство только времени выполнения) прямоугольную область этого окна, в которую должно выводиться изображение. Для задания свойства DisplayRect можно использовать функцию Rect.

Свойства Notify и Wait действуют только на один очередной метод. Поэтому их значения надо каждый раз восстанавливать в обработчиках событий OnClick или OnNotify.

В обработчиках событий можно читать свойство Mode, характеризующее текущее состояние устройства мультимедиа. Можно также читать и устанавливать ряд свойств, характеризующих размер воспроизводимого файла и текущую позицию в нем.

План выполнения работы

Внешний вид приложения:

  1.  Создайте проект типа Application 
  2.  Разместите на форме объекты Panel и Button из закладки Standart
  3.  Разместите на форме объект OpenDialog из закладки  Dialogs
  4.  Разместите на форме объект MediaPlayer из закладки  System
  5.  Выберите в свойстве Display для MediaPlayer  - Panel
  6.  Определите обработчик события OnClick для кнопки:

procedure TForm1.Button1Click(Sender: TObject);

begin

  if OpenDialog1.Execute then begin

    MediaPlayer1.FileName:=OpenDialog1.FileName;

    MediaPlayer1.Open;

    MediaPlayer1.Play;

  end;

end;

  1.  Запустите приложение и проверьте его работу

Задание № 4. Работа с графическими изображениями

Создать приложение выводящее на экран изображение из файла формата JPG и сохраняющее его в формат BMP.

План выполнения работы

Внешний вид приложения:

  1.  Создайте проект типа Application 
  2.  Разместите на форме объекты Image из закладки Additional, PopupMenu  и два объекта Button (Open и Save) из закладки Standart, OpenDialog и SaveDialog из закладки Dialogs
  3.  Добавте в секцию uses модуль Jpeg
  4.  Объявите две глобальных переменных типа TJpegImage и TBitmap. Пример:

var  

 jpg   :TJpegImage;

 bmp   :TBitmap;

  1.  Для объекта OpenDialog установите фильтр, позволяющий открывать только картинки в формате jpg
  2.  Определите обработчик события OnClick для кнопки «Open»

if OpenDialog1.Execute then begin

      jpg:=TJpegImage.Create;

      jpg.LoadFromFile(OpenDialog1.FileName);

      bmp:=TBitmap.Create;

      bmp.Assign(jpg);

      Image1.Picture.Bitmap:=bmp;

      bmp.Free;

      jpg.Free;

  end;

  1.  Для кнопки «Save», напишите код, сохраняющий картинку в формате BMP:

procedure TForm1.Button2Click(Sender: TObject);

begin

   if SaveDialog1.Execute then

      if Pos('.',SaveDialog1.FileName)<>0 then

        Image1.Picture.SaveToFile(SaveDialog1.FileName)

      else

        Image1.Picture.SaveToFile(SaveDialog1.FileName+'.bmp');

end;

  1.  В свойстве PopupMenu объекта Image выберите PopupMenu1
  2.  С помощью двойного щелчком на объекте PopupMenu создайте три пункта меню:
    1.  Save to BMP
    2.  Cancel
    3.  Exit
  3.  Определите действия OnClick для пункта «Save to BMP» такие же, как и для кнопки «Save»
  4.  Для позиции меню Exit напишите код для завершения работы приложения
  5.  Позицию Cancel оставьте  без обработчика событий
  6.  Запустите проект и проверьте правильность работы.

Контрольные вопросы

  1.  Что такое таймер?
  2.  Для чего можно пользоваться таймером?
  3.  Что такое исключительные ситуации?
  4.  Какие методы обработки исключительных ситуаций существуют?
  5.  Для чего нужен компонент Медиаплеер?
  6.  Какими способами можно указать файл для проигрывания медиаплеером?


 

А также другие работы, которые могут Вас заинтересовать

10747. Бурение скважин 6.19 MB
  ОГЛАВЛЕНИЕ ВВЕДЕНИЕ .ОБЩИЕ СВЕДЕНИЯ О БУРЕНИИ СКВАЖИН 1.1. Основные технические понятия целевое назначение скважин .2. Производственные операции бурения .3. Основные технологические понятия и показатели бурения 2.ФИЗИКОМЕХАНИЧЕСКИЕ СВО...
10748. Проектирование состава асфальтобетона для устройства верхнего слоя покрытия автомобильной дороги находящейся во II-ой дорожно-климатической зоне III категории дороги 1.24 MB
  СОДЕРЖАНИЕ ЗАДАНИЕ ВВЕДЕНИЕ ГЛАВА 1Выбор вида типа и марки асфальтобетона ГЛАВА 2 Оценка качества исходных материалов 2.1 Щебень 2.2 Песок 2.3 Минеральный порошок 2.4 Битум ГЛАВА 3 Расчёт состава минеральной части а/б 3.1 Расчёт по кривым плотных сме...
10749. Электротехника с основами электроники. Лабораторный практикум 8.17 MB
  ЛАБОРАТОРНЫЙ ПРАКТИКУМ по курсу Электротехника с основами электроники для студентов факультета Механизации сельского хозяйства цикл Лабораторный практикум по курсу Электротехника с основами электроники 2 цикл. Для студентов факультета механизации сельск...
10750. Термоядерный синтеза для производства электроэнергии в России и проблемы этого проекта 558.84 KB
  Реферат Термоядерный синтеза для производства электроэнергии в России и проблемы этого проекта. Содержание: Введение Краткая история проекта. Технические экологические и медицинские проблемы. Экономические проблемы. Экологически...
10752. Информационный менеджмент (ИМ) 105.46 KB
  Информационный менеджмент ИМ Оглавление Введение1 Тема 1. Развитие ИС и обеспечение ее обслуживания2 Тема 2. Планирование в среде ИС4 Тема 3. Формирование организационной структуры в области информатизации8 Тема 4. Использование и эксплуатация ИС12 Тема 5. Фо
10753. Система прогнозирования поступления абитуриента в вуз 452.5 KB
  Система прогнозирования поступления абитуриента в вуз Курсовая работа 6. Проведение исследования выборки с помощью программы Прогноз поступления. Детальное исследование выборки с помощью нейросетевого пакета Neuro Pro 0.25..
10754. Использование различных алгоритмов обучения нейронной сети в задаче прогнозирования букмекерских коэффициентов 217.5 KB
  Курсовая работа Нейросетевые технологии и их применение Использование различных алгоритмов обучения нейронной сети в задаче прогнозирования букмекерских коэффициентов...
10755. Нейросетевой детектор лжи 280.5 KB
  Нейросетевой детектор лжи Курсовая работа Содержание Введение История детектора лжи в России Детектор лжи в аэропортах Правовое применение полиграфа детектора лжи в России Отношение россиян к детектору лжи Разработка нейросетевого де...