Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ракитин Р.Ю. ООП в Turbo Delphi

.PDF
Скачиваний:
57
Добавлен:
18.03.2015
Размер:
3.59 Mб
Скачать

201

8.Дана целочисленная матрица размера NxM. Найти матрицу, получающуюся из данной:

а) перестановкой столбцов первого и последнего, второй с предпоследним и т.д.; б) перестановкой строк первого и последнего, второй с предпоследним и т.д.;

9.Дана действительная квадратная матрица порядка N. Преобразовать матрицу по правилу: строку с номером N сделать столбцом с номером N, столбец с номером N сделать строкой с номером N.

10.Даны две действительные квадратные матрицы порядка N. Получить новую матрицу:

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

11.В данной действительной матрице NxM поменять местами строки или столбцы с номерами L и K.

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

13.Дана действительная квадратная матрица порядка N, все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

14.Даны матрицы А и В размера KxM и MxL соответственно. Найти произведения АВ.

15.Дана квадратная матрица порядка N и число K. Получить матрицу 2.

16.Даны матрицы А и В порядка N. Получить матрицу АВ-ВА.

17.Даны квадратная матрица А порядка N и вектор с b N элементами. Получить вектор:

а) Ab; б) A2b;

в) (A-E)b, где Е единичная матрица порядка N.

18.Дана квадратная матрица порядка N. Получить вектор Ab, где вектор b вектор, элементы которого вычисляются по формуле:

19.Даны квадратная матрица А порядка N и вектор х и у с N элементами. Получить вектор А(х+у).

20.Даны квадратная матрица А, В, С порядка N. Получить матрицу (А+В)С.

202

21.Даны квадратные матрицы А и В порядка N. Получить матрицу А(В–Е)+С, где Е – единичная матрица порядка N, а элементы матрицы С вычисляются по формуле: cij=1/(i+j), i,j=1, 2, ..., N.

22.Дана матрица А размера MxN. Получить транспонированную матрицу А.

23.Дана действительная матрица NxM. Найти среднеарифметическое: а) каждого из столбцов; б) каждого из столбцов, имеющих четные номера.

24.Дана действительная матрица NxM. Определить числа B1, ..., BM, равные соответственно:

а) сумме элементов строк; б) произведениям элементов строк;

в) наименьшим значениям элементов строк; г) значениям среднеарифметических элементов строк;

д) разностям наибольших и наименьших значений строк.

25.Даны квадратная матрица А порядка N и вектор х и у с N элементами. Получить вектор А2х+Eу).

203

Лабораторная работа № 9. Разработка собственных классов

Цель: Изучить наследование и полиморфизм. Научится создавать в Delphi новые классы.

Задания:

1.Описать класс-родитель и класс-потомок, имеющие методы, указанные в соответствующем варианте задания (потомок наследует или переопределяет методы родителя и приобретает новые).

2.Предусмотреть необходимое количество кнопок для демонстрации каждого из методов объектов.

Варианты заданий к лабораторной работе:

1.Родитель круг (перемещение). Потомок колесо (вращение).

2.Родитель прямоугольник (перемещение). Потомок повозка (прямоугольник на 2 колесах) (перемещение вперед и назад с поворотом колес).

3.Родитель отрезок (перемещение в произвольную сторону, поворот вокруг начального конца). Потомок ракета (включение/выключение двигателя с появлением/ исчезновением пламени из сопла, смещение вперед).

4.Родитель эллипс (перемещение). Потомок рожица (открывание и закрывание рта, открывание и закрывание глаз).

5.Родитель неподвижный человечек без головного убора с подвижными, сгибающимися в локтях руками (шевеление руками). Потомок – «солдатик» (ввести поле наличие пилотки) (отдание чести).

6.Родитель квадрат (перемещение). Потомок квадратная рожица (поворот глаз направо и налево).

7.Родитель кружок радиусом 3 пикселя (перемещение). Потомок выходящая из кружка стрелка (поворот, сдвиг вперед).

8.Родитель трапеция (перемещение). Потомок автомобиль (движение вперед и назад, открывание дверцы).

9.Родитель грузовик (смещение вперед/назад). Потомок самосвал (ввести поле наличие груза) (загрузка, откидывание/поднятие кузова).

10.Родитель домик с дверцей (открывание/закрывание дверцы). Потомок домик с дверцей и 2 окнами (открывание/закрывание каждого из окон).

11.Родитель прямоугольник на 2 колесах (смещение влево/вправо). Потомок

автофургон (разворот в обратном направлении).

12.Родитель самолетик (вид сбоку) (перемещение). Потомок самолетик с шасси (выпуск/убирание шасси).

13.Родитель перемещающийся квадрат. Потомок вращающийся квадрат.

14.Родитель перемещающийся прямоугольник. Потомок повозка (прямоугольник на 2 колесах).

15.Нарисовать солдатика, перемещающегося и отдающего честь. Родительский класс перемещающийся прямоугольник.

204

16.Нарисовать кораблик, который может поднимать флаг. Родительский класс

перемещающийся прямоугольник.

17.Нарисовать автомобиль с открывающимися дверями и включающимися фарами. Родительский класс перемещающийся прямоугольник.

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

19.Нарисовать самосвал, который может поднимать кузов. Родительский класс

перемещающийся прямоугольник.

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

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

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

23.Нарисовать воздушный шарик, который может лопнуть. Родительский класс

перемещающийся эллипс

24.Нарисовать лифт, который доставляет людей на нужный этаж. Родительский класс перемещающийся прямоугольник.

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

205

Лабораторная работа № 10. Программирование подпроцессов

Цель: изучить основы организации подпроцессов в Delphi.

Задания:

1.Реализовать многопоточное приложение.

2.Предусмотреть кнопки запуска и приостановки процессов.

3.Для каждого подпроцесса предусмотреть возможность изменения приоритета.

Варианты заданий к лабораторной работе:

1.Один подпроцесс заменяет строчные символы Memo на прописные, а другой подпроцесс наоборот. Символы выбираются случайным образом.

2.Один подпроцесс добавляет строки в ListBox1, а другой подпроцесс переносит их из ListBox1 в ListBox2.

3.Один подпроцесс случайным образом устанавливает фокус ввода элементам главного окна, а другой подпроцесс перемещает активный элемент.

4.Один подпроцесс изменяет свойство Visible элементов главного окна на противоположное значение, а другой подпроцесс выполняет циклический сдвиг текста, содержащегося в этих элементах.

5.Один подпроцесс удаляет текст элементов главного окна, а другой

подпроцесс заносит в качестве текста символьное представление случайных чисел.

6.Один подпроцесс создает на главном окне визуальные компоненты, а другой подпроцесс случайным образом удаляет их.

7.В компонентах Min, Max: TSpinEdit задаётся диапазон изменения случайной функции, а подпроцесс непрерывно рисует график этой функции.

8.Один подпроцесс выполняет подсчет количества гласных букв во всех компонентах TEdit главного окна, а другой подпроцесс выполняет передачу фокуса ввода тем компонентам, название которых начинается с заглавной буквы.

9.Один подпроцесс создает бегущую строку, а другой подпроцесс выводит на экран текущее время.

10.На экране расположено несколько светофоров, каждым из которых управляет отдельный подпроцесс.

11.На главной форме находятся визуальные компоненты, расположением каждого из которых управляет отдельный подпроцесс.

12.Один подпроцесс изменяет цвет компонентов TLabel, расположенных на главной форме, а другой подпроцесс шрифт.

13.На экране расположено несколько элементов TStatusBar, каждым из которых управляет отдельный подпроцесс.

14.Компонент TDrawGrid содержит таблицу чисел. Один подпроцесс увеличивает их, а другой подпроцесс уменьшает.

206

15. Компонент TRichEdit содержит текст. Один подпроцесс инвертирует регистр отдельных слов, а другой подпроцесс изменяет цвет слов.

16. Подсчитайте значение величины π, используя формулу:

. В процессе работы выполняйте вывод текущей итерации,

вычисленное значение π и системное значение константы π.

17. Подсчитайте, используя подпроцессы значения величины и ,

используя

формулы:

 

,

 

. В процессе работы выполняйте вывод текущей итерации.

18.Создайте приложение, в котором в одном из объектов TPaintBox бесконечно выводятся цветные объекты (кружки, прямоугольники), а в

другом реализованы простейшие возможности графического редактора (рисование мышкой линий).

19.Один подпроцесс изменяет размер главной формы, второй подпроцесс в

произвольной области экрана разворачивает дочернее окно и сворачивает его через некоторое время.

20.Один подпроцесс постепенно перекрашивает форму в случайные цвета,

второй подпроцесс на не закрашенном участке рисует случайные графические примитивы.

207

Вопросы по курсу «Объектно-ориентированное программирование»

1.История языков программирования. Возникновение объектной декомпозиции.

2.История возникновения RAD – систем. Delphi. Основные понятия.

3.Процедурная и объектная декомпозиция предметной области задачи.

4.Основные принципы ООП.

5.Инкапсуляция и описание классов в Delphi.

6.Полиморфизм.

7.Понятие «свойство». С какой целью целесообразно использовать механизм свойств?

8.Понятие «объект» в ООП.

9.Понятие «класс» в ООП.

10.Понятие программного объекта. Операции над программными объектами.

11.Основные этапы разработки программных систем с использованием ООП.

12.Библиотека VCL Delphi. Отношения «основной/ вспомогательный» и «старший/младший».

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

14.Структуру исходных текстов программы на языке Object Pascal в Delphi

15.Стандартные типы переменных.

16.Структурные операторы, применяемые в Object Pascal, и их особенности

17.Использование подпрограмм в Object Pascal и их разновидностях.

18.Области видимости элементов классов, применяемые в Object Pascal.

19.Правила наследования классов.

20.Правила переопределения методов.

21.Жизненный цикл экземпляра класса. Конструктор экземпляров класса.

22.Представление графического контекста Windows в Delphi.

23.Файлы, соответствующие каждой форме приложения в Delphi.

24.Структуру приложения на Delphi.

25.Правила именования переменных и компонентов.

26.Методы расположения визуальных компонентов на экране и управления их размерами.

27.Свойства видимости и доступности визуальных компонентов.

28.Компоненты, предназначенные для ввода и вывода на экран текстовой информации.

29.Возможности элементов управления кнопки.

30.Диалоговые компоненты Windows.

31.Понятие формы и основы использования форм в Delphi.

32.Основы организации многооконных приложений в Delphi.

33.Стандартные элементы управления Windows.

34.Способы отображения иерархической информации в Delphi.

208

Приложения

1. Коды клавиш и их значения

Коды клавиш в десятичном и шестнадцатеричном представлении, а также соответствующие константы перечислены в таблице.

Клавиша

Десятичный

Шестнадцате-

Константа

 

 

код

ричный код

 

а, А до z, Z

65

до 90

$41 до $5A

 

0 до 9

96 до 105

$60 до $69

VK_NUMPAD0 до

 

 

 

 

VK_NUMPAD9

*

 

106

$6A

VK_MULTIPLY

+

 

107

$6B

VK_ADD

-

 

109

$6D

VK_SUBTRACT

.

 

110

$6E

VK_DECIMAL

/

 

111

$6F

VK_DIVIDE

F1 до F10

112

до 121

$70 до $79

VK_F1 до

 

 

 

 

VK_F10

Space(пробел)

 

32

$20

VK_SPACE

Backspace

 

8

$8

VK_BACK

Tab

 

9

$9

VK_TAB

Enter

 

13

$0D

VK_RETURN

Shift

 

16

$10

VK_SHIFT

Ctrl

 

17

$11

VK_CONTROL

Alt

 

18

$12

VK_MENU

CapsLock

 

20

$14

VK_CAPITALE

Esc

 

27

$1B

VK_ESCAPE

Insert

 

45

$2D

VK_INSERT

PageUp

 

33

$21

VK_PRIOR

PageDown

 

34

$22

VK_NEXT

End

 

35

$23

VK_END

Home

 

36

$24

VK_HOME

 

37

$25

VK_LEFT

 

38

$26

VK_UP

 

39

$27

VK_RIGHT

 

40

$28

VK_DOWN

Delete

 

46

$2E

VK_DELETE

PrintScreen

 

44

$2C

VK_SNAPSHOT

ScrollLock

 

145

$91

VK_SCROLL

Pause

 

19

$13

VK_PAUSE

NumLock

 

144

$90

VK_NUMLOCK

209

2. Некоторые процедуры и функции в Delphi

Модуль System

function

Abs (Number:

Numeric type):

Numeric type;

предназначена для получения абсолютной величины числа (модуль); function ArcTan (const Number: Extended): Extended; арктангенс

числа, возвращается в радианах;

function Cos (const Number: Extended): Extended; косинус числа; function Sin (const Number: Extended): Extended; синус числа; function Tan (const Number: Extended): Extended; тангенс числа; procedure Break; выполняет выход из одного цикла;

function Chr (IntValue: Integer): AnsiChar; конвертирует целое число в символ;

procedure Continue; заставляет перейти к следующей итерации цикла; function Copy (Source: string; StartChar,

Count: Integer): string; создает копию части строки или части

массива

procedure Dec (var Variable: Ordinal variable); декремент порядковой переменной;

procedure Exit; осуществляет выход из функции или процедуры; function Exp (Number: Extended): Extended; выдаёт экспоненту

числа;

function High (type or variable): Ordinal type; возвращает самое высокое значение типа или переменной;

procedure Inc (var Variable: Ordinal variable;

Count: Integer); – увеличивает порядковую переменную на 1 или на

Count;

function Length (const SourceArray: array): Integer;

возвращает число элементов в массиве или строке;

function Ln (Number: Extended): Extended; выдает натуральный логарифм числа;

function Low (type or variable): Ordinal type; возвращает самое низкое значение типа или переменной;

function Odd (Number: Integer | Int64): Boolean; провеяет,

является ли целое число нечетным;

function Ord (Arg: AnsiChar | Char | WideChar | Enumeration | Integer): Integer; порядковое значение целого числа, символа или перечисления;

function Pi: Extended; математическая константа;

function Pred (const Ordinal Value): Ordinal type; уменьшает порядковую переменную;

210

function Random: Extended;

function Random(LimitPlusOne: Integer): Integer; генерирует случайное целое число или число с плавающей запятой;

procedure Randomize; устанавливает генератор случайного числа на следующее значение;

function Sqr (Number: Numeric type): Numeric type; – возвращает квадрат числа;

function Sqrt (Number: Extended): Extended; возвращает квадратный корень числа;

function UpCase (Letter: Char): Char; преобразует значение Char к

верхнему регистру;

procedure Val (const NumberString: string;

var NumberVar: Number Type; var ErrorCode: Integer);

конвертирует числовые строки в целое число или число с плавающей запятой.

Модуль Math

Тригонометрические функции и процедуры

function ArcCos (const Number: Extended): Extended; арккосинус числа, возвращается в радианах;

function ArcSin (const Number: Extended): Extended; арксинус числа, возвращается в радианах;

function Cotan (const X: Extended): Extended; котангенс числа; function DegToRad (const Degrees: Extended): Extended;

преобразование значения градусов в радианы; function Hypot (const X: Extended;

const Y: Extended): Extended; – вычисление гипотенузы прямоугольного треугольника по длинам катетов;

function RadToDeg (const Radians: Extended): Extended;

преобразовывает значение радиана в градусы;

procedure SinCos (const Theta: Extended; var Sin: Extended; var Cos: Extended); – вычисление синуса и косинуса угла;

function Tan (const Number: Extended): Extended; тангенс числа.

Арифметические функции и процедуры

function Ceil (const X: Extended): Integer; – округление вверх; function Floor (const X: Extended): Integer; округление вниз; procedure Frexp (const X: Extended; var Mantissa: Extended;

var Exponent: Integer); вычисление мантиссы и порядка заданной величины;