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.  Какими способами можно указать файл для проигрывания медиаплеером?


 

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

47715. Методические указания. Системное программное обеспечение 56.5 KB
  В результате выполнения работы студенты должны ознакомиться с: принципами эффективной организации взаимодействия между пользователем и аппаратными средствами ЭВМ с применением сервисных программных средств типа операционных сред и оболочек; составом и назначением системных функций библиотечных функций и команд файловой подсистемы операционной системы Linux. Программашаблон реализует простое перемещение по каталогам файловой системы с отображением содержимого каталогов в двух панелях экрана. Студентам предлагается ознакомиться с...
47716. Інформація та інформаційні технології 101.95 KB
  Локальна компютерна мережа – це система, що дозволяє проводити обмін інформацією між пристроями, підключеними до системи. Вона включає в себе програмне забезпечення та апаратну частину, необхідну для підключення пристроїв до компютерних каналів, які взаємодіють між собою.
47717. Організація самостійної роботи студента. Теоретичні основи теплотехніки 2.6 MB
  У посібнику наведено основні положення щодо організації самостійної роботи студентів з дисципліни «Теоретичні основи теплотехніки», надано тематичний план лекцій, робочий план лабораторних робіт, заготівки звітів про лабораторні роботи, робочий план практичних робіт
47719. Практический курс башкирского языка 352 KB
  Лексикология как раздел языкознания. Слово как основная единица лексической системы языка. Слово-единица языка, служащая для наименования понятий, предметов, лиц, действий, состояний, признаков, связей, отношений, оценок. Лексическое значение слова
47720. Учебно-методический комплекс. Введение в предпринимательство 65.73 KB
  Компетенции обучающегося формируемые в результате освоения дисциплины модуля В результате освоения дисциплины Введение в предпринимательство у бакалавров формируются следующие компетенции: Профессиональные компетенции: способность используя отечественные и зарубежные источники информации собрать необходимые данные проанализировать их и подготовить информационный обзор и или аналитический отчет ПК9; способность критически оценить предлагаемые варианты управленческих решений и разработать и обосновать предложения по их...
47721. Учебно-методический комплекс дисциплины «Иностранный язык» 595.5 KB
  Курс иностранного языка является многоуровневым и разрабатывается в контексте непрерывного образования. Для изучения дисциплины необходимы компетенции, сформированные у обучающихся в результате обучения в средней общеобразовательной школе.
47722. Учебно-методический комплекс. Микроэкономика 1.14 MB
  Требования к входным знаниям: для успешного освоения дисциплины Микроэкономика студент должен владеть базовыми знаниями общеобразовательной программы из курсов История Математика Обществознание а также необходимы умения и компетенции полученные обучающимися в средней общеобразовательной школе.2; навыками систематической работы с учебной и справочной литературой по экономической проблематике В.ruНаучная Сеть информационная система нацеленная на облегчение доступа к научной научнопопулярной и образовательной...
47723. Учебно-методический комплекс. Культурология 345.5 KB
  Для изучения дисциплины необходимы компетенции сформированные у обучающихся в результате обучения в средней общеобразовательной школе дисциплинОбществознание и Мировая художественная культура. 6 Культура в соврем.1 Культура и цивилизация . Что такое культура ...