АВТИ информатика по паскалю / Metod1_2010 / УказLab1-4
.docПодготовка программы Лаб.1 к Лаб.4
А) С целью улучшения структуры программы Лаб.1 рекомендуется провести следующие изменения.
Описать булевские переменные: var P1,P2, P3: Boolean.
Проект алгоритма к л.р.4
----------------------------------------------------------
P1:= <пересекаются?>
P2:= <вложены?>
P3:= <касаются?>
If P1 or P2 then
begin
<пересекаются>;
<Приближенное площади пересечения фигур >;
If P2 then
begin
<вложены>;
<Точное вычисление площади вложенной фигуры>
end
end
Else
If P3 then
<касаются>
Else
<не пересекаются>
Б) Изменения в «Лабораторном практикуме» (стр.21)
-
Написать логическое выражение, которое отвечает на вопрос:
«Принадлежит ли
точка (x, y) заданной области пересечения?» Если принадлежит, то результат равен true, а если не принадлежит, то результат равен false.
Пример.
P1:=
(sqr(x)+sqr(y))
£
r*r
; {Принадлежит кругу?}
P2:=
(sqr(x)/sqr(a)+sqr(y)/sqr(b))£1
{Принадлежит эллипсу?}
{Точка (х, у)
принадлежит пересечению круга и
эллипса?} if
P1 and P2 then
else
{Принадлежит}
{Не
принадлежит}
-
Вместо простейшей заглушки вставить проверку принадлежности точки области
пересечения. Отладить, выбирая точки, принадлежащие области, лежащей на границе области, вне области пересечения фигур.
-
Изучить раздел 7.1 “Итерационные методы” и использовать общий алгоритм для приближенного вычисления площади фигуры .
Из задачи
Приближенное
вычисление площади
(сегмент С1) выделяется подзадача
Вычисление
m
(сегмент С2),
Sold
и Snew
- площади фигуры на предыдущем и текущем
шагах итерации.
Каждое значение
площади Snew
вычислено для большего количества
точек, чем Sold.
{Прибл.
вычисление площади}
С1 <Инициализация
Snew
и k>
повторить
Sold
:=Snew
C2
<Вычисление
n
и Snew>
<Изменение
k>
до
½
Snew
- Sold
½<
e
{Вычисление m}
Отладить, раскрыв абстракцию Вычисление m простейшей заглушкой, например m:=n.
-
Добавить в программу описание интерфейса процедуры MonteCarlo_m (см. 7.10).
{Входные:
вещ
a,b,c,d
– границы C2
прямоугольника,
цел
k
–число разбиений;
Выходные:
цел m
– число точек, принадлежащих области
пересечения} procedure
MonteCarlo_m (a,b,c,d:real;
k:longint;
var m:longint);
var
<Описание
локальных переменных>
begin
<Алгоритм
вычисления m>
end
Раскрыть в
сегменте С1 абстракцию Вычисление
m
в виде оператора процедуры
MonteCarlo_m(a,b,c,d,k,m).
Все параметры процедуры должны быть
описаны в главной программе.
Следует отметить,
что к входным данным процедуры относится
и описание области пересечения фигур,
но мы ее локализуем в процедуре. Тем
самым процедура теряет свойство
универсальности.