Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по информатике. Часть 2.doc
Скачиваний:
67
Добавлен:
27.03.2016
Размер:
10.52 Mб
Скачать

Варианты заданий

Задание. Создать форму и процедуру обработки процесса выбора по заданному варианту.

  1. Найти максимальный элемент в массиве X1,X2, ...,Xnи его порядковый номер,n– длина массива. Массив вывести на экран.

  2. Для n пар произвольных чисел aiиbiподсчитатьmi=2ai/cbi, гдеc–наибольшее из чиселai иbi. Исходные данные:a1,a2, ...,anиb1, ...,bnмассивы,n– длина массивов. Массивы вывести на экран.

  3. В массиве X1,X2, ...,Xnподсчитать количество чисел, принадлежащих отрезку [a,b] и сумму всех остальных. Исходные данные:n– длина массива;a,b– границы интервала,X1,X2, ...,Xn– массив. Массив вывести на экран.

  4. Найти среднеарифметическое значение элементов вещественного массива A1,A2, ...,An, предшествующих первому элементу, большему 50. Исходные данные:n– длина массива,A1,A2, ...,An– массив. Массив вывести на экран.

  5. В массиве X1,X2, ...,Xnнайти отрицательные элементы, их количество и поместить их в отдельный массив. Оба массива вывести на экран.

  6. Даны два одномерных массива вещественных чисел. Найти в них максимальные элементы и поменять их местами. Массивы вывести на экран.

  7. Дан массив радиусов R1,R2, ...,Rn. Для нечетных радиусов вычислить площадь круга, а для четных длину окружности. Результаты вывести на экран.

  8. В массиве A[k] найти минимальный элемент и вывести его на экран. Переставить местами первый и последний элементы массива. Массив вывести на экран до и после перестановки.

  9. Найти произведение элементов массива B[m] значение которых не равно значению первого элемента. Переставить местами 2 и 3 элементы массива. Массив вывести на экран до и после перестановки.

  10. Вычислить объемы 5 цилиндров по формуле V=πRi2Hi. Исходные массивы: массив радиусовR1,R2, …,R5и массив высотH1,H2, ...,H5.

  11. Задан массив A[n]. Найти сумму элементов, значение которых превышает значение последнего элемента массива и заменить последний элемент этой суммой. Массив вывести на экран до и после перестановки.

  12. Задан массив B[n]. Разделить его элементы на второй элемент массива. Найти сумму квадратов элементов вновь полученного массива. Массив и сумму вывести на экран.

  13. Вычислить в заданных точках значение полинома по схеме Горнера Pn(x)=(((AnX+An-1)X+An-2)X+...)X+A0, исходные данныеA0,A1, ...,An– массив коэффициентов;X– переменная;n– степень полинома.

  14. Составить программу нахождения элементов в массиве A[m], значения которых превышает 20. Переставить местами 1 и 2 элементы массива. Массив вывести на экран.

  15. Заменить значения элементов массива, превышающие число 10 на нулевое и найти сумму элементов массива. Массив вывести на экран.

Технология выполнения работы

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

Содержание отчета

  1. Задание и цель работы

  2. Описание формы.

  3. Текст процедуры обработки процесса

Вопросы для защиты работы

  1. Какие компоненты используются при работе с массивами?

  2. Как описывается массив в ObjectPascal?

  3. С помощью какой функции работы со строками проверяется наличие значения в ячейке компоненты StringGrid?

  4. Можно ли вывести элементы массива в компоненту StringGrid?

  5. Как вывести элементы массива в компоненту Memo в столбец?

Лабораторная работа № 4 Работа с графикой в среде программирования Borland Delphi

Время выполнения – 4 часа.

Цель работы

Научиться разрабатывать программы для построения изображений в среде BorlandDelphi.

Задачи лабораторной работы

После выполнения работы студент должен:

  • знать основы работы с графическими процедурами в среде Delphi;

  • уметь самостоятельно написать программу для построения изображений средствами языка программирования Delphi.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система Windows2003 и выше и система визуального программированияDelphi на основе 6-ой версии.

Общие теоретические сведения

Общие замечания

  1. Программа может выводить графику на поверхность объекта (формы или компонента Image), которой соответствует свойствоCanvas.

  2. Для того чтобы на поверхности объекта появился графический элемент необходимо к свойству Canvasэтого объекта применить соответствующий метод.

  3. Цвет, стиль и толщину линий, вычерчиваемых методами Line,Ellipse,Rectangleи т. д. определяет свойствоPenобъектаCanvas.

  4. Цвет закраски внутренних областей геометрических фигур, вычерчиваемых методами Line,Ellipse,Rectangleи т. д, определяет свойствоBrushобъектаCanvas.

  5. Характеристики шрифта текста, выводимого методом TextOut, определяет свойствоFontобъектаCanvas.

Процедуры работы с линиями

Line(x1, y1, x2, y2:integer)– проводит линию текущего цвета между точками с координатамиx1,y1,x2,y2.

LineRel(Dx, Dy: integer)– проводит линию из текущей позиции в точку, сдвинутую относительно исходной позиции на величиныDxиDy.

LineTo(x, y)– проводит линию из текущей позиции в точку с заданными координатамиx,y.

MoveRel(Dx, Dy: integer)– перемещение указателя на заданное расстояниеDx,Dyпо отношению к предыдущему положению.

MoveTo(x, y:integer)– перемещение указателя координат в точку окна с координатамиxиy.

Процедуры построения фигур из линий

RecTangle(x1, y1, x2, y2:integer)строит контур прямоугольника текущим цветом;

x1,y1– координаты верхнего левого угла прямоугольника;

x2,y2- координаты правого нижнего угла прямоугольника.

Bar3D(x1, y1, x2, y2:integer, Dept:Word, Top:Boolean)– строит закрашенный параллелепипед с координатами левого верхнего (x1,y1) и правого нижнего (x2,y2) углов;

Dept– ширина боковой грани;

Top– признак включения верхней грани (True– вычерчивается, иначе не отображается).

DrawPoly(NumPoints:Word; var PolyPoints)– строит контур многоугольника с заданными параметрами и цветом;

NumPoints– число вершин многоугольника;

PolyPoints– переменная без типа, содержащаяNumPointпар координат вершин многоугольника (координаты перечисляются в той последовательности, как они идут по контуру; первая вершина повторяется в конце).

FillPoly(NumPoints:Word; var PolyPoints)– строит многоугольник, закрашенный текущим орнаментом и цветом заполнения. Параметры – по аналогии сDrawPoly.

Процедуры построения криволинейных фигур

Arc(x, y:integer; StAng, EndAng, Rad:Word)– рисует дугу окружности текущим цветом;

x,y– координаты центра дуги;

StAng– угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

EndAng– угол до конечной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

Rad– радиус дуги.

Ellipse(x, y:integer; StAng, EndAng, XRad,YRad:Word)– рисует дугу эллипса текущим цветом;

x,y– координаты центра эллипса;

StAng– угол до начальной точки эллипса, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

EndAng– угол до конечной точки эллипса, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

XRad,YRad– горизонтальная и вертикальная полуоси эллипса.

Circle(x, y:integer, Rad:Word)– рисует окружность текущим цветом;

x,y– координаты центра окружности;

Rad– радиус окружности.

FillEllipse(x, y:integer; XRad,YRad:Word)– рисует эллипс, закрашенный текущим цветом;

x,y– координаты центра эллипса;

XRad,YRad– горизонтальная и вертикальная полуоси эллипса.

PieSlice(x, y:integer; StAng, EndAng, Rad:Word)– рисует сектор круга, закрашенный текущим цветом;

x,y– координаты центра сектора круга;

StAng– начальный угол сектора, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

EndAng– конечный угол сектора, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

Rad– радиус сектора.

Sector(x, y:integer; StAng, EndAng, XRad,YRad:Word)– рисует сектор эллипса, закрашенный текущим орнаментом и цветом заполнения;

x,y– координаты центра сектора эллипса;

StAng– начальный угол эллипса, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

EndAng– конечный угол эллипса, отсчитываемый против часовой стрелки от горизонтальной оси, направленный слева направо;

XRad,YRad– горизонтальная и вертикальная полуоси эллипса.

Основную работу по выводу графики на поверхность формы должна выполнять функция обработки события OnPaint.

Пример.

Написать программу, которая на поверхности формы рисует флаг Российской Федерации (рис. 1).

Рисунок 1 – Изображение флага Российской Федерации

Программный код.

// обработка события OnPaint

// процедура рисует флаг Российской Федерации

Procedure TForm1.FormPaint(Sender: TObject);

Const

L=200; //ширина флага(полосы)

H=40; // высота полосы

Var

X,y:integer; // левый верхний угол

Begin

X:=30;

Y:=50;

With Canvas do

Begin

// границы, цвет границы должен совпадать с цветом закраски

Brush.Color :=clWhite; // цвет закраски

Pen.Color: =clWhite; // цвет границы

Rectangle(x,y,x+L,y+H);

Brush.Color:=clBlue;

Pen.Color:=clBlue;

Rectangle(x,y+H,x+L,y+3*H);

Brush.Color:=clRed;

Pen.Color: = clRed;

Rectangle(x,y+2*H,x+L,y+3*H);

// контур

Pen.Color: =clBlack;

Brush.Style:=bsClear; // прозрачная кисть

Rectangle(x,y,x+l,y+h*3);

Font.Size:=24;

Font.Name:=’Times New Roman’;

Font.Color:=clWhite;

TextOut(50,200,’Россия’);

Font.Color:=clBlack;

TextOut(51,201,’Россия’);

End;

End;

End.