- •Лабораторный практикум по информатике
- •Часть II программирование в системе турбо паскаль
- •Введение
- •Лабораторная работа №1 Создание простейшей программы
- •Начало работы с новой программой
- •Задание 1
- •Сохранение текстового файла программы на диске:
- •Задание 2
- •Задание 3
- •Задание 4
- •Лабораторная работа №2 Ввод данных и вывод результатов
- •Задания
- •Лабораторная работа №3 Программирование линейных алгоритмов
- •Задание
- •Лабораторная работа №4 Программирование разветвляющихся алгоритмов
- •Задание 1
- •Задание 2
- •Лабораторная работа № 5 Программирование циклических алгоритмов с известным числом повторений
- •Задание
- •Лабораторная работа №6 Программирование циклических алгоритмов с неизвестным числом повторений
- •Задания
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №7 Программирование алгоритмов итерационной циклической структуры
- •Задание
- •Лабораторная работа №8 Массивы
- •Лабораторная работа №9 Процедуры и функции пользователя в языке Паскаль
- •Задание
- •Лабораторная работа №10 Записи
- •Задания
- •Лабораторная работа №11 Работа с файлами
- •Лабораторная работа №12 Графический режим в языке Паскаль
- •Лабораторная работа №13 Построение графика функции
- •Задания
- •Лабораторная работа №14 Создание движущихся изображений
- •Задание 1
- •Задание 2
- •Лабораторная работа №15 Вычисление определённого интеграла численными методами
- •Метод прямоугольников
- •Метод трапеций
- •Метод Симпсона
- •Задания
- •Лабораторная работа №16 Решение нелинейных уравнений численными методами
- •Метод половинного деления
- •Метод Ньютона
- •Метод хорд
- •Задания
- •Лабораторная работа №17 Решение обыкновенных дифференциальных уравнений численными методами
- •Метод Эйлера
- •Модифицированный метод Эйлера
- •Метод Рунге-Кутта
- •Задание
- •Приложение
- •Список литературы
- •Оглавление
- •Лабораторный практикум по информатике
- •Часть II программирование в системе турбо паскаль
- •Архангельск
Задания
Ввести текст программы Prg_graf с клавиатуры в системе Turbo Pascal и сохранить в свою папку.
Выполнить отладку программы.
Пользуясь программой построить графики для следующих функций:
y = exp( ax2);
y = x /(sin(5x) + 1,5);
y = a x2 + bx + c;
y = , где –r x r;
E = 1010 / ;
y = 2x;
y =|cos(x)|;
y = x/(1 x2);
y = x ;
y = 0,1x sin(x/0,5).
Лабораторная работа №14 Создание движущихся изображений
Общим принципом создания движущихся изображений является рисование какого-либо объекта, закраска его цветом фона (стирание) и последующее рисование уже с новыми координатами. При этом необходимо отметить, что эффект движения возникает не всегда. Если частота появления картинки на экране мала, то наблюдается перемещение мигающего объекта. Если объект перемещается слишком быстро, то человеческий глаз не способен воспринять всей траектории движения. На восприятие еще накладывается частота обновления кадра монитора. Может возникать ситуация, когда мерцание наблюдается по этой причине. Продолжительность нахождения на экране прорисованного объекта должна быть максимальна, а продолжительность нахождения стертого минимальна.
Ниже приведена программа, в которой организовано перемещение по экрану окружности. В данном случае частоту обновления изображения можно регулировать варьированием продолжительности задержки (time) и величины перемещения (delta), а также размером объекта - переменная radius (чем меньше радиус окружности, тем меньше времени необходимо на ее прорисовку). Перед выполнением примера скопируйте в свой каталог драйвер egavga.bgi;
Program Multik;
Uses Graph, Crt;
Var
x,y,dy,dx,time,delta,radius,Gd,Gm: integer;
Begin
Gd := Detect;
InitGraph(Gd,Gm,''); {Включаем графический режим}
if GraphResult <> grOk then Halt(1);
Rectangle(0,0,GetMaxX,GetMaxY); {Рисуем рамку вокруг экрана}
x:=100; y:=100; { Начальные координаты центра окружности}
delta:=10; { Величина перемещения }
dx:=delta; { Величина перемещения по х }
dy:=delta; { Величина перемещения по у }
radius:=15 ; { Радиус окружности }
time:=10000; { Продолжительность задержки }
Repeat
SetColor(15); { Задание белого цвета для линий }
Circle(x,y,radius);{ Рисование белой окружности}
{ Смена направления движения при достижении края экрана }
{ и включение звукового сигнала }
if y>=GetMaxY-radius then { Нижний край }
begin dy:=-delta; Sound(2000); end;
if y<=radius then { Верхний край }
begin dy:= delta; Sound(3000); end;
if x>=GetMaxX-radius then { Правый край }
begin dx:=-delta; Sound(5000); end;
if x<=radius then { Левый край }
begin dx:= delta; Sound(4000); end;
Delay(time); { Задержка выполнения программы }
NoSound;
SetColor(0); { Задание черного цвета }
Circle(x,y,radius); { Рисование черной окружности }
x:=x+dx; y:=y+dy; { Расчёт новых координат }
{ Выход из программы при нажатии любой клавиши }
Until KeyPressed;
CloseGraph; { Выход из графического режима }
End.
Следующая программа рисует окружности, координаты которых, радиус и цвет определяются значениями функции синуса или косинуса. Параметры синусоид задаются случайными числами, поэтому образующаяся на экране фигура каждый раз будет отличаться от предыдущих.
В первом цикле For присходит прорисовка 200 окружностей различными цветами, а во втором закраска их черным цветом. Внутри первого цикла организована задержка с помощью процедуры Delay, для того чтобы между прорисовкой окружностей проходило некоторое время. Также задержка поставлена перед затиранием фигуры черным цветом. Завершение работы программы произойдет при нажатии любой клавиши.
Program Salut;
Uses Graph, Crt;
Var
n,y,x,a,b,c,f,e,i,Gd,Gm: integer;
Begin
Randomize; { Инициируем генератор случайных чисел }
Gd := Detect;
InitGraph(Gd,Gm,''); {Включаем графический режим}
if GraphResult <> grOk then Halt(1);
y:=round(GetMaxY/2); { Координаты центра экрана }
x:=round(GetMaxX/2);
n:=200; { Количество повторов }
c:=50;
Repeat
a:=random(c)+10;
b:=random(c)+10;
e:=5+random(20);
f:=random(120);
For i:=1 to n do
begin
Delay(50);
SetColor(round(i/10)+1);
Circle(round((y-i/e)*sin(i/a))+x,
round((y/2-i/e)*cos(i/b))+y,
f-round(c*sin(i/e)));
end;
delay(65535);
for i:=1 to n do
begin
SetColor(0);
Circle(round((y-i/e)*sin(i/a))+x,
round((y/2-i/e)*cos(i/b))+y,
f-round(c*sin(i/e)));
end;
Until KeyPressed;
CloseGraph;
End.