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


 

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

81358. Особливості виконання рішення про виселення боржника 26.52 KB
  Щодо справ про виселення державний виконавець надає боржнику термін для добровільного виконання до 15 днів. Відсутність боржника повідомленого про день і час виселення не є перешкодою для виконання виконавчого документа. Якщо виконання здійснюється за відсутності осіб що виселяються то державний виконавець зобовязаний провести разом з описом майна його оцінку.
81359. Особливості виконання рішення про вселення стягувача 26.19 KB
  Примусове вселення полягає у забезпеченні державним виконавцем безперешкодного входження стягувача в приміщення указане у виконавчому документі та його проживання перебування у ньому. Після одержання виконавчого документа про вселення стягувача державний виконавець установлює строк для добровільного його виконання боржником. У разі добровільного виконання рішення про вселення стягувач і боржник підписують акт який передається державному виконавцеві разом із заявою стягувача про повернення йому виконавчого документа.
81360. Виконання рішення про заборону діяльності об’єднань громадян 24.42 KB
  Державний виконавець розпочинає виконання рішення про заборону діяльності обєднання громадян за заявою передбаченого законом легалізуючого органу на підставі виконавчого документа про примусовий розпуск даного обєднання громадян. Легалізуючий орган подає цю заяву до державної виконавчої служби після офіційного повідомлення в друкованих засобах масової інформації
81361. Оскарження дій (бездіяльності) державних виконавців та інших посадових осіб Державної виконавчої служби 29.8 KB
  В разі ж порушення прав та інтересів громадян законодавець надав можливість сторонам та іншим учасникам виконавчого провадження два шляхи оскарження дій посадових осіб державної виконавчої служби: адміністративний до вищестоящої посадової особи та судовий до суду. Стаття 40 Конституції України встановлює основоположні засади адміністративного порядку оскарження дій бездіяльності державних виконавців та передбачає що всі мають право направляти індивідуальні та колективні письмові звернення або особисто звертатися до органів державної...
81362. Особливості здійснення виконавчих дій відносно іноземних громадян, осіб без громадянства і іноземних організацій 21.8 KB
  Під час виконання рішень щодо іноземців осіб без громадянства та іноземних юридичних осіб які відповідно проживають перебувають чи зареєстровані на території України або мають на території України власне майно яким володіють самостійно або разом з іншими особами застосовуються положення цього Закону...
81363. Визнання та виконання рішень іноземних судів і арбітражі 23.62 KB
  Закону порядок виконання в Україні рішень іноземних судів і арбітражів встановлюється відповідними міжнародними договорами України цим Законом та іншими законами України. Клопотання про визнання і виконання рішення іноземного суду розглядається компетентним судом і після винесення ухвали про визнання та прийняття до виконання рішення іноземного суду на території України виписується виконавчий лист що і є основою для провадження виконавчих дій. Основою для виконання рішення іноземного арбітражу є наказ господарського суду та ухвала...
81364. Відповідальність за невиконання рішення, що зобов’язує боржника виконати певні дії, та рішення про поновлення на роботі 22.33 KB
  89 Закону у разі невиконання без поважних причин у встановлений державним виконавцем строк рішення що зобовязує боржника виконати певні дії та рішення про поновлення на роботі державний виконавець виносить постанову про накладення штрафу на боржника фізичну особу від десяти до двадцяти неоподатковуваних мінімумів доходів громадян; на посадових осіб від двадцяти до сорока неоподатковуваних мінімумів доходів громадян; на боржника юридичну особу від сорока до шістдесяти неоподатковуваних мінімумів доходів громадян та встановлює новий...
81365. Звільнення майна боржника з-під арешту, зняття арешту 27.57 KB
  Особа яка вважає що майно на яке накладено арешт належить їй а не боржникові може звернутися до суду з позовом про визнання права на майно і про звільнення майна зпід арешту. У разі прийняття судом рішення про звільнення майна зпід арешту або сплати боржником повної суми боргу за виконавчим документом до реалізації арештованого майна боржника майно звільняється зпід арешту за постановою державного виконавця яка затверджується начальником відповідного органу державної виконавчої служби додаток 40 не пізніше наступного дня коли...
81366. Поняття виконавчого провадження та його місце в системі права України 24.12 KB
  Виконавче провадження це врегульовані законодавством України суспільні відносини що виникають і реалізуються в процесі примусового виконання між органами державної виконавчої служби і посадовими особами які здійснюють примусову реалізацію рішень ухвал постанов судових і несудових органів з одного боку та між особами котрі беруть участь у виконавчому провадженні і залучаються до проведення виконавчих дій з другого боку на підставах у спосіб та в межах встановлених законом. Закону України Про виконавче провадження визначає...