Автор: Пользователь скрыл имя, 14 Сентября 2011 в 09:28, реферат
Цель: разработать комплекс программ по обработке графических и символьных данных.
Для реализации поставленной цели необходимо решить следующие задачи:
1 Задан список городов. Присвоить переменной Т название города с максимальным числом букв.
2 Дана последовательность, содержащая от 2 до 10 слов, в каждом из которых от 2 до 6 латинских букв; между соседними словами - не менее одного пробела, за последним словом точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: перенести первую букву в конец слова.
3 Разработать программу, которая будет выводить на экран график функции y=cos(x).
4 Разработать программу, которая будет отображать движение многоугольника по экрану по принципу угол падения равен углу отражения.
Введение ……………………………………………………… 3
1. Обработка символьных данных………………………………… 4
1. 1. Обработка текста …..…………………………………… 4
1. 2. Работа с файлами …………..……………………………11
2. Обработка графических данных ………...………………………21
2. 1. Графические функции …………………………………… 21
2. 2. Движение рисунка ……………………………………… 30
Заключение ……………………………………………………. 34
Список литературы ………………………………………………35
Приложение ……………………………………………….....… 36
if a[i]<>a[n]
then
begin
sub:='':
sub:=sub+a[i][length(a[i])];
for j:=1 to length(a[i])-1 do
sub:=sub+a[i][j];
writeln('ўлў®¤ Ї®б«Ґ¤®ў ⥫м®бвЁ:');
readln;
end;
Вывод
Программа работает правильно. Необходимость этой программы очень велика, так же как и сам компьютер. В моей программе, приводе 10 слов, изменения настигнут только 9 слов. Переноситься последняя буква в начало слова, кроме последнего. Результаты смотрите в приложении.
2. Обработка графических данных.
2.1. Графические функция.
Графика в Паскале строится при помощи подключения модуля Граф, то есть на экране компьютера можно получать не только последовательности символов, но и разнообразные рисунки, схемы, картинки. В нашем примере - это построить график функции в Паскале. Для этого в Паскаль включаются специальные средства - графические процедуры и операторы, которые находятся в модуле Graph (uses Graph;).
Следует отметить, что графическое изображение на экране составляется из точек (например, как фотографии в газетах, журналах и др.). Количество точек (пикселей) на экране зависит от разрешающей способности экрана. Каждая точка задается двумя координатами (x, y). Точка с координатами (0,0) находится в левом верхнем углу экрана. Ось Х направлена вправо, а ось У вниз.
Процесс построения изображений с помощью графических процедур разбивается на отдельные этапы:
1. Переключить
монитор в графический режим
с помощью оператора InitGraph
(Driver, mode, <путь к драйверу>).
2. Установить разрешающую способность
экрана по умолчанию режимом Detect или процедурой
SetGraphMode. Режим Detect устанавливает
разрешающую способность экрана 640*480 пикселей,
т.е. координата Х может принимать
значения от 0 по 639, а У от 0 по 479.
3. Очистить и инициализировать графический
экран процедурой ClearDevice.
4. Установить цвет фона оператором
SetBkColor и цвет изображения оператором
SetColor.
5. Вывести на экран точки, отрезки, прямоугольники,
дуги, окружности, эллипсы.
6. Вывести на экран закрашенные фигуры.
7. Вывести тексты и подписи на экран. Для
использования операторов Write
и Writeln в графическом режиме необходимо
выполнить следующую операцию присваивания
: DirectVideo := FALSE; Или использовать
процедуру Outtextxy
(x, y, st), которая выводит строку
st, начиная с позиции x, y.
Цвета в операторах задаются с помощью своих кодов:
0 – черный;
4 – красный; 8 – темно-серый;
12 – ярко-красный;
1 – синий; 5 – пурпурный; 9 – ярко-синий;
13 – ярко-пурпурный;
2 –зеленый; 6 – коричневый; 10 – ярко-зеленый;
14 – желтый;
3 – бирюзовый; 7 – светло-серый; 11 – ярко-бирюзовый;
15 – белый.
Цифровое кодирование
цвета соответствует
Основные графические операторы для построения изображений:
PutPixel (X, Y,
цвет) - вывод точки на экран, где
X, Y - координаты точки ;
Line ( X1, Y1, X2, Y2 ) - проводит линию
из точки с координатами (X1, Y1 )
в точку с координатами ( X2, Y2 );
Rectangle (X1, Y1, X2, Y2 ) - прямоугольник
со сторонами, параллельными осям координат;
(X1, Y1) и (X2, Y2)
- координаты, определяющие одну из диагоналей
прямоугольника ;
Bar ( X1, Y1, X2, Y2 ) - закрашенный прямоугольник
(без окантовки);
Circle ( X, Y, радиус ) – на экран
выводится окружность с центром в точке
( X, Y )(тип integer) ;
Arc (X, Y, начальный угол, конечный угол,
радиус) - на экран выводится дуга
окружности с центром в точке (X, Y );
углы задаются в градусах; дуга рисуется
ПРОТИВ часовой стрелки;
Ellipse ( X, Y, начальный угол, конечный
угол, горизонтальный радиус, вертикальный
радиус) - на экран выводится эллиптическая
дуга с центром в точке с координатами
( X, Y ) (тип integer);
SetFillStyle (заполнение, цвет)
– определение вида и цвета заполнения
области;
FloodFill (x, y, цвет границы)
– заливка замкнутой области.
Задание 3
Напишите процедуру рисования графика функции в соответствии с вариантом, указанным в таблице. Предусмотреть вывод оцифрованных координатных осей соответственно области построения, подписей к графику. Рационально расположить элементы рисунка (график и оси) на экране,
Блок-схемы для выполнения программы (Рисунок 2.1.):
Минус,
в том что если
в программе изменить
промежутки, то получаем
другой график
Код программы:
uses graph;
type fun = function(X:real):real;
procedure graphic (f:fun; XBeg,XEnd:real);
var
max, min, {экстремальные точки функции в пределах диапозона}
I,
step,
gradX, {приращение функции на один шаг по X}
gradY: real; {приращение функции на один шаг по Y}
graphicX,
grapicY:
flag:BooLean;
{флаг - перемещена первая точка}
procedure Coord (CoordYBeg, CoordYEnd, CoordHmin, CoordHMax: real);
var GradX, GradYX: real;
X, Y; integer;
color: word;
begin
color:= GetColor;
SetColor (2);
GradX := GetMaxX/(CoordYEnd-CoordYBeg);
GradYX:=GetMaxY/(CoordHMax-
if (CoordYEnd>0) and (CoordYBeg<0)
then
Y:=Round(GradX*(0-CoordYBeg));
if CoordYEnd<0 then Y:=GetMaxY;
if CoordYBeg>0 then Y:=1;
if (CoordHMin<0) and (CoordHMax>0)
then X:=Round(GradYX*(CoordHMax));
if CoordHMin>0 then X:=GetMaxY;
if CoordHMax<0 then X:=1;
Line (1,X,GetMaxX,X); {горизонтальная линия}
Line
(GetMaxX-4,X+5,GetMaxX,X);
Line
(GetMaxX-4,X-5,GetMaxX,X);
Line (Y,1,Y,GetMaxY); {вертикальная линия}
Line (Y-5,5,Y,1); {стрелочка}
Line (Y+5,5,Y,1); {стрелочка}
SetColor (Color);
end;
begin
Step:=(XEnd-XBeg)/(GetMaxY-40)
I:=XBeg;
Max:=F(XBeg);
Min:=F(XBeg);
While I<=(XEnd+Step) do
begin
if Max<F(I) then Max:=F(I);
if Min>F(I) then Min:=F(I);
I:=I+Step;
end;
GradX:=GetMaxX/(XEnd-XBeg);
GradY:=GetMaxY/(Max-Min);
Coord
(XBeg, XEnd, Min, Max);
Flag:=True;
I:=XBeg;
While I<=(XEnd+Step) do
begin
GraphicX:=Round(GradX*(I-XBeg)
GraphicY:=Round(GradY*(Max-F(
if Flag then
MoveTo (GraphicX, GraphicY);
PutPixel(GraphicX, GraphicY, 15);
I:=I+Step;
Flag:=False;
end;
end;
function F1(X:real):real;
begin
F1:=-x*x/2+2*x;
end;
procedure grafici;
var
Mode, DriverDet: Integer;
begin
Mode:=0;
DriverDet:=Detect;
InitGraph(Mode, DriverDet,'c:\BP\BGI');
SetColor(15);
end;
begin
grafici;
Graphic(F1,-10,10);
ReadLn;
CloseGraph;
Руководство
пользователя: данная программа строит
график функции
, Выход из программы осуществляется
нажатием любой клавиши.
Руководство
программиста: в программе используются
модули graph и crt. Для построения используется
стандартные операция вычислении. Граыик
строится поточечном ввиде.
Результат смотрите в приложении.
2.2 Движение рисунка
Движение объекта осуществляется по кадрам! Для этого необходимо в первом кадре показать первоначальное положение фигуры. На следующем кадре объект в другом месте положении и так далее повторять несколько раз сколько угодно.
Чтобы показать
в ном положении нужно рисовать
две фигуры, одну идентичную с основным
рисунком другую - с цветом фона. Так осуществляется
движение в Паскале.
Написать программу для отображения движения многоугольника (плоской фигуры) по экрану по принципу «угол падения равен углу отражения», поверхностями считать границы экрана. Предусмотреть изменение цвета многоугольника (плоской фигуры) при смене направления движения. Придумать оригинальную плоскую фигуру.
Блок-схема к программе: (смотрите рисунок 2.2.)
Код программы:
uses graph,crt;
const color:array[1..10] of
byte=(1,3,4,5,7,9,11,13,14,15)
var x,y,dx,dy:integer;
i:byte;
grDriver,grMode,ErrCode:
begin
grDriver:=Detect;
initGraph(grDriver, grMode,'');
ErrCode:=GraphResult;
if ErrCode<>grOk then
writeln(GraphErrorMsg(ErrCode)
else
begin
x:=320; y:=240; dx:=7; dy:=4; i:=1;
repeat
Setcolor(i);
line(x-170,y-40,x-120,y+10);
line(x-120,y+10,x-20,y+10);
line(x-20,y+10,x+30,y-40);
line(x+30,y-40,x-170,y-40);
line(x-140,y-40,x-140,y-100);
line(x-140,y-100,x-70,y-100);
line(x-70,y-100,x-70,y-40);
line(x-70,y-100,x-70,y-40);
circle(x-110,y-20,10);
circle(x-80,y-20,10);
circle(x-50,y-20,10);
line(x-120,y-100,x-120,y-150);
bar(x-120,y-150,x-90,y-130);