Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабПрактОАиПН111.doc
Скачиваний:
58
Добавлен:
25.02.2016
Размер:
1.38 Mб
Скачать

Задания

В программу лабораторной работы 14 добавить функцию, которая выводит в текстовый файл. Процедуры и функции, разработанные в 16-й и 17-й лабораторных работах поместить в отдельный Unit.

1. Фамилии студентов мужского пола отделения «Программирование», не достигших 18 лет в порядке возрастания кодов групп, а внутри группы в порядке возрастания номера по журналу.

2. Сведения о приборах в лаборатории, изготовленных до 1999 года с ценой не более 1000 у.е. в порядке инвентарных номеров.

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

4. Сведения о расписании занятий каждого преподавателя по дням недели.

5. Сведения о книгах в библиотеке данного года издания с ценой не более 10000 руб. в алфавитном порядке фамилий авторов.

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

7. Сведения об участниках соревнований по прыжкам в высоту мужского пола в возрасте до 20 лет в порядке убывания личных рекордов.

8. Сведения о больных женского пола, возраст которых более 60 лет в порядке возрастания номеров палат.

9. Сведения CD-дисках данного исполнителя в алфавитном порядке названий дисков.

10. Сведения о рефератах, написанных в текущем году с количеством страниц не более 20 в порядке дат написания.

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

12. Информацию о спектаклях, поставленных данным режиссером в алфавитном порядке названий спектаклей.

13. Сведения о комплектующих компьютера с гарантией до 2 лет в порядке убывания цен.

14. Информацию о студентах, проживающих на данной улице в возрастающем порядке номеров домов.

15. Информацию об автомобилях выпуска прошлого года в порядке убывания цен.

16. Общую сумму выплат за каждый месяц по каждому отделу в алфавитном порядке наименований отделов

17. Фамилию сборщика и общее количество деталей, собранное им за неделю, фамилию сборщика, собравшего наибольшее число изделий, и день, когда он достиг наивысшей производительности труда.

18. Считая заданными значения расценок Sa, Sb, Sc за выполненную работу по сборке единицы изделия категорий А, В и С соответсвенно, вывести в текстовый файл следующую информацию: общее количество изделий категорий А, В, С, собранных рабочим цеха X; ведомость заработной платы рабочих цеха X; средний размер заработной платы работников этого цеха.

19. По введенной фамилии абонента выдать номер телефона. Определить количество установленных телефонов с ХХХХ года. Номер года вводится с клавиатуры.

20. Вывести названия игрушек, которые подходят детям от 1 до 3 лет; стоимость самой дорогой игрушки и ее наименование; название игрушки, которая по стоимости не превышает "х" руб. и подходит ребенку в возрасте от "а" до "б" лет. Значения “x” и “a” вводятся с клавиатуры.

21. Вывести ведомость начисления стипендии студентам группы Х. Студенту, получившему все оценки не ниже 9 и активно участвующему в общественной работе, назначается повышенная стипендия (доплата 50%). Не активно участвующему - 25%. Студентам, получившим оценки от 7 до 10, начисляют обычную стипендию. Студенту, получившему оценки ниже 7, но не ниже 4 и средний балл не ниже 6,8 назначается стипендия в размере 80% от обычной. Номер группы вводится с клавиатуры.

22. Вывести: фамилии неуспевающих студентов с указанием номера группы и количества задолженностей; средний балл, полученный каждым студентом группы Х и всей группой в целом.

23. Вывести справку о расписании самолётов в город X, наличии свободных мест на рейсы в город Х с указанием времени отправления в порядке времени вылета.

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

25. Вывести списки студентов по группам, желающих прослушать дисциплину Х. Если число желающих превысит восемь человек, то отобрать студентов, имеющих более высокий балл успеваемости.

26. Вывести время отправления поездов в город Х во временном интервале от А до Б часов, сведения о наличии билетов на поезде номером XXX.

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

28. Вывести количество иногородних пациентов, прибывших в клинику, список пациентов старше Х лет с диагнозом Y. Значения Х и Y ввести с клавиатуры.

29. Вывести сведения о матричных принтерах формата Х с указанием общего количества таких принтеров и средней ценой на них.

30. Вывести список студентов группы Х в алфавитном порядке фамилий, у которых средний балл за контрольную 7 и выше.

Лабораторная работа 18

Объектно-ориентированное программирование

Цель работы: Формирование умений и навыков в разработке программ, использующих возможности объектно-ориентированного программирования.

Что нужно знать для выполнения работы

1. Тип данных Object.

2. Свойства объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм).

Пример 1

Создать графический объект и породить от него два потомка: точку и прямоугольник. Продемонстрировать их использование.

Текст программы

program Lr18_1;

{ Программа, демонстрирующая использование графических объектов}

Uses

Crt, Graph;

Type

PGraphObject=^TGraphObject;

TGraphObject=object {базовый объект}

Active : Boolean; {признак видимости объекта}

x,y : Integer; {координаты объекта}

Color : Integer; {цвет объекта}

constructor Init; {конструктор объекта}

destructor Done;virtual; {деструктор}

procedure Locate (Nx,Ny:Integer); {задание координат}

procedure Step (Dx,Dy:Integer); {сдвиг объекта}

procedure Move; {хаотичное движение}

procedure Show; {отобразить объект на экране}

procedure Hide; {скрыть объект}

procedure Paint;virtual; {процедура рисования объекта}

procedure Clear;virtual; {процедура стирания объекта}

end;

PPoint=^TPoint;

TPoint=object(TGraphObject) {точка}

{Задание координат и цвета точки}

constructor InitData(Nx,Ny,c:Integer);

procedure Paint;virtual;

procedure Clear;virtual;

end;

PRectangle=^TRectangle;

TRectangle=object(TGraphObject) {прямоугольник}

Width,Heigh:Integer; {ширина и высота прямоугольника}

{Задание координат, размеров и цвета прямоугольника}

constructor InitData(Nx,Ny,W,H,c:Integer);

procedure Paint;virtual;

procedure Clear;virtual;

end;

constructor TGraphObject.Init;

begin

Active:=False; {изначально объект невидим}

end;

destructor TGraphObject.Done;

begin

Hide; {перед уничтожением сотрем объект с экрана}

end;

procedure TGraphObject.Locate;

begin

Hide; {скроем объект}

x:=Nx; {зададим новые координаты}

y:=Ny;

Show; {отобразим на новом месте}

end;

procedure TGraphObject.Step;

begin

Hide; {скроем объект}

x:=x+Dx; {переместим объект}

y:=y+Dy;

Show; {отобразим на новом месте}

end;

procedure TGraphObject.Move;

begin

Step(Random(5)-2,Random(5)-2); {шагнем случайным образом}

end;

procedure TGraphObject.Show;

begin

if not Active then {если объект невидим, то...}

begin

Active:=True; {установим флажок видимости}

Paint; {нарисуем объект}

end;

end;

procedure TGraphObject.Hide;

begin

if Active then {если объект видим, то...}

begin

Active:=False; {сбросим флажок видимости}

Clear; {сотрем объект}

end;

end;

procedure TGraphObject.Paint;

begin

end;

procedure TGraphObject.Clear;

begin

end;

constructor TPoint.InitData;

begin

inherited Init; {инициализация унаследованных полей}

x:=Nx; {установим координаты}

y:=Ny;

Color:=c; {зададим цвет}

end;

procedure TPoint.Paint;

begin

PutPixel(x,y,Color);

end;

procedure TPoint.Clear;

begin

PutPixel(x,y,0);

end;

constructor TRectangle.InitData;

begin

inherited Init;

x:=Nx;

y:=Ny;

Width:=W;

Heigh:=H;

Color:=c;

end;

procedure TRectangle.Paint;

var

i,j:Integer;

begin

i:=Width Div 2;

j:=Heigh Div 2;

SetColor(Color);

Rectangle(x-i,y-j,x+i,y+j);

end;

procedure TRectangle.Clear;

var

i,j:Integer;

begin

i:=Width Div 2;

j:=Heigh Div 2;

SetColor(0);

Rectangle(x-i,y-j,x+i,y+j);

end;

{Переход в графический режим}

procedure InitVideo;

var

grDriver,grMode:Integer;

begin

grDriver:=Detect;

InitGraph(grDriver,grMode,'');

if GraphResult<>grOk then

begin

Writeln('Ошибка при инициализации графики !');

Halt(1);

end;

end;

{Возврат в текстовый режим}

procedure DoneVideo;

begin

CloseGraph;

end;

Var

a:array[1..150] of PGraphObject; {массив произвольных объектов}

i:Integer;

Begin

ClrScr; {Переход в графический режим}

InitVideo;

{Инициализируем генератор случайных чисел}

Randomize;

{Создаем 150 графических объектов}

for i:=1 to 150 do

case Random(2) of

0:{Точку} a[i]:=New(PPoint,InitData(

20+Random(600), 20+Random(440), {координаты}

1+Random(14))); {цвет}

1:{создаем прямоугольник}

a[i]:=New(PRectangle,InitData(

20+Random(600), 20+Random(440), {координаты}

3+Random(5), 3+Random(5), {размеры}

1+Random(14))); {цвет}

end;

while not KeyPressed do

for i:=1 to 150 do

a[i]^.Move; {Хаотично перемещаем объект}

ReadKey;

{Уничтожаем объект}

for i:=1 to 150 do

Dispose (a[i],Done);

{Возвращаемся в текстовый режим}

DoneVideo;

End.

Пример 2

Разработать систему графических объектов, необходимых для изображения прицела. Эти объекты поместить в отдельный модуль.

Текст модуля FigObj, содержащего описания и реализацию методов графических объектов

unit FigObj;

{Графические объекты}