Файл: ПП. Практические работы 1.pdf

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Содержание

1

Введение

1

2

Практическая работа №1. Drag&Drop и Ini-файлы (4 часа)

1

3

Практическая работа №2. Работа с XML (4 часа)

1

4

Практическая работа №3. Печать (4 часа)

1

5

Практическая работа №4. Создание собственного компонента (4 часа)

1

6

Практическая работа №5. Внедрение ассемблерных вставок (4 часа)

2

1

Введение

Большинство практических работ делается на основе базы данных, созданной в среде Lazarus/Delphi в весеннем семестре
второго курса обучения. Исключения составляют 5 и 6 практические работы.

2

Практическая работа №1. Drag&Drop и Ini-файлы (4 часа)

Реализуйте упорядочение элементов базы данных с помощью Drag&Drop. Реализуйте открытие файла с помощью его переноса
на форму базы данных. Реализуйте сохранение цветов оформления при помощи Ini-файлов.

3

Практическая работа №2. Работа с XML (4 часа)

Реализуйте чтение и запись информации в/из XML-файл(-а) в базе данных с использованием программного интерфейса DOM.

4

Практическая работа №3. Печать (4 часа)

Осуществите реализацию печати содержимого вашей базы данных на принтере. Обратите внимание на наличие линий в таблице
и автоматическое разбиение на страницы.

5

Практическая работа №4. Создание собственного компонента (4 часа)

0 уровень

0.1 Создайте компонент для ввода даты в трех ComboBox’ах; при этом должна быть возможность выбрать как просто

дату, так и дату с учетом года. Необходимо создать property, возвращающее/устанавливающее результат в виде одного
значения (составного типа). /Сатлыков/

0.2 Создайте компонент для ввода интервала времени (часы-минуты) в 4-ех ComboBox’а; при этом необходимо проверять

корректность интервала (начало его раньше оконания). Необходимо создать property, возвращающее/устанавливающее
результат в виде одного значения (составного типа). /Абросимов/

0.3 Создайте компонент для ввода IP-адреса (IPv4) в 4-ех ComboBox’ах. Необходимо создать property, возвращающее/устанавливающее

результат в виде одного значения.

0.4 Создайте компонент для выбора станции московского метрополитена (сначала линию – потом станцию). Необходимо

создать property, возвращающее/устанавливающее результат в виде одного значения (составного типа).

0.5 Создайте компонент для задания информации об электричке какого-нибудь направления московского узла: названия

начальной и конечной станции, время отправления (часы-минуты) от начальной станции и номер поезда. Первые четы-
ре компонента – ComboBox’ы. Необходимо создать property, возвращающее/устанавливающее результат в виде одного
значения (составного типа).

0.6 Создайте компонент для задания матрицы 3×3 Необходимо создать property, возвращающее/устанавливающее результат

в виде одного значения (составного типа). /Харламов/

0.7 Создайте компонент для задания отрезка следующим путем: пользователь осуществляет клик в одной точке компонента,

потом в другой точке компонента – отрезок появляется. Если он снова осуществляет клик, то старый отрезок стирается,
а новая точка запоминается как начало отрезка. Компонент должен иметь метод для возврата всех точек в виде записи
из двух TPoint, а также возможность задать отрезок в инспекторе объектов.

1


background image

0.8 Создайте компонент для задания окружности следующим путем: пользователь осуществляет клик в одной точке компо-

нента, потом в другой точке компонента – появляется окружность (первый клик осуществляется в центре, второй – в
любой из точек окружности). Если он снова осуществляет клик, то старая окружность стирается, а новая точка запоми-
нается как центр окружности. Компонент должен иметь метод для возврата центра и радиуса в виде записи из TPoint и
значения типа real, а также возможность задать окружность в инспекторе объектов.

0.9 Создайте компонент для задания прямоугольника (со сторонами, параллельными осям) следующим путем: пользователь

осуществляет клик в одной точке компонента, потом в другой точке компонента – появляется прямоугольник. Если
он снова осуществляет клик, то старый прямоугольник стирается, а новая точка запоминается как одна из вершин
прямоугольника. Компонент должен иметь метод для возврата обоих точек в виде записи из двух TPoint, а также
возможность задать прямоугольник в инспекторе объектов.

0.10 Создайте компонент для отображения погоды: температуры, давления, облачности. Конкретное значение задается в

инспекторе объектов или программно. Внешний вид должен быть похож на тот, что есть в какой-нибудь известной
программе.

0.11 Создайте компонент ввода почтового индекса, при этом он должен выглядеть в процессе редактирования так, как он

выглядит на почтовых конвертах. Сам индекс изначально задается в инспекторе объектов. Должно быть также свойство
для чтения/изменения индекса.

0.12 Создайте элемент управления, осуществляющий удобный ввод номера телефона (с автоматическим вводом тире, не

забудьте, что телефон может начинаться со знака +). Номер телефона должен задаваться в инспекторе объектов, также
должно быть свойство для чтения/изменения телефона.

0.13 Создайте элемент управления для ввода SMS. Он должен показывать количество оставшихся символов и блокировать

ввод слишком длинных строк. Начальное значение SMS должно задаваться в инспекторе объектов; а также должно
осуществляться чтение/изменение строки с помощью свойства.

0.14 Создайте компонент для ввода числа, состоящий из трех частей: 10-ого, 16-ого и 8-ого. При изменении любого из этих

чисел одновременно меняются и другие. Число должно задаваться в инспекторе объектов; а также должно быть доступно
свойство для чтения/изменения числа.

1 уровень

1.1 Создайте компонент, соответствующий основным функциям вашей БД (одна таблица+кнопки). Какой-то из методов

должен возвращать список (TList) записей о текущем состоянии таблицы./Батурин/

1.2 Создайте компонент для ввода 32-битного числа в двоичном виде побитового (для каждой цифры отдельный встроенный

компонент). Необходимо создать property, возвращающее/устанавливающего результат в виде одного значения.

1.3 Создайте компонент – маленький графический редактор для рисунков 16×16, который позволяет для каждого пикселя пе-

реключить его в состояние черный/белый. Необходимо создать propery типа TImage, позволяющее установить/получить
рисунок. /Сосина/

1.4 Создайте элемент управления, который позволяет выбирать значение с помощью ползунка: программист в инспекторе

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

2 уровень

2.1 Создайте компонент для выбора даты в интерфейсе, приближенном к выбору даты в календаре Windows.

2.2 Создайте компонент для ввода информации о посещаемости группы; он должен позволять задавать список группы,

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

2.3 Создайте компонент для ввода информации о плане одного дня, похожий на стандартный интерфейс планировщика.

Компонент должен позволять получить всю информацию о плане с помощью метода и/или property.

2.4 Создайте компонент – конструктор арифметических выражений по типу того, что есть в Excel (мастер выражений). С

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

2.5 Создайте компонент – аналог TImage, который дополнительно к обычным свойствам TImage позволяет пользователю

осуществлять масштабирование (должны появляться кнопки + и - /для масштабирования/, а также кнопки влево, вправо,
вверх, вниз, которые осуществляют сдвиг изображения).

2


background image

6

Практическая работа №5. Внедрение ассемблерных вставок (4 часа)

Напишите программу в Lazarus/Delphi, осуществляющую ввод в три поля целых чисел x, y, z, осуществляющую вычисление по
формуле согласно вашему варианту и вывод результата в TLabel. Само вычисление необходимо организовать с использованием
ассемблерной вставки.

Ассемблерный код внутри функции начинается со слова asm и оканчивается словом end. К локальной переменной можно

обратиться просто написав ее имя.

Для выбора обычного синтаксиса ассемблерного кода используется директива {$ASMMODE intel}.
В нижеприведенных вариантах выражение написано с использованием синтаксиса и семантики языка C.

1. (x+2*y+3*z)/4

2. (3*x+z*y)%4

3. (x-y*z+3)/5

4. x/5+y*2-3*z

5. (x-2*y)/z

6. (2*x+z)%y

7. x%2-y/z

8. x*x+z%y

9. (x/y+z)%x

10. ((10-x)*(y+2)%z

11. (x*y-z%5)/2

12. (x%5+y|z)*3

13. (x-y&(z+15))%10

14. (3-x%5)/(y+2*z)

15. (x+(y<<2)%5+z)

16. (x/3+(y>>3)*z)

17. (x|3+y&(~3))%125

18. ((x*y*y-z)%65)

19. (x/4+y%z)<<2

20. (x%5+z/y)>>2

21. (x|(y&z))%125

22. (x<<2+y>>2+z%3)

23. (x/(y/z)+y*3)

24. (x|(~y))/z-23

25. (y&(x|5)-z%256)

26. (y^(x&31)-z%256)

3