Логические переменные и выражения
Создание: 03.03.2013
Существует класс задач, в которых нужно написать программу, в которой определяется попадает ли точка с заданными координатами (z,y) в заданную область. Программа должна выводить true если точка попадает в область и false, в противном случае.


Рисунок из «Информатика. Задачник-практикум» под ред. И.Г. Семакина и др. 2006 г.

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

1. попадание точки в прямоугольную область

Точка попадет под горизонтальную линию, проходящую через точку (0,a), параллельно оси x, если координата y точки меньше a. Аналогично, точка лежит справа от прямой, проходящей через точку (b,0) параллельно оси y, если координата x точки больше b.


точка попадает в область, ограниченную двумя прямыми

2. попадание точки в область, ограниченную окружностью

Точка попадает под окружность с центром в начале координат и радиусом R, если расстояние от точки до центра окружности меньше R. Математически это выражается так: x2 + y2 < R

 
Попадание точки в кольцо, ограниченное двумя окружностями с радиусами 4 и 6.

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

Если точка находится под прямой имеющей уравнение y = kx + b, то условием попадания точки под прямую: y <= kx + b

Для того, чтобы получить уравнение прямой проходящей через две заданные точки нужно построить систему уравнений и решить ее (см. рисунок).


Попадание в точку под прямой, проходящей через две заданные точки.

4. логические переменные

Для построения выражения мы можем использовать логическую переменную, которая может принимать одно из двух значений true либо false.

Описываются логические переменные в языке Pascal в разделе var. Тип логических переменных: boolean.

Логическим переменным можно присваивать логические выражения, например q := (a>5) and (b<=10);

Пример

Применим полученные знания для конкретной задачи:

Задана область, ограниченная окружностью и несколькими прямыми. Напишите программу, определяющую, попадает ли точка с координатами (x, y) в заданную область и выводящая true либо false.  Учитывать границы линий.

  1. Разобьем область на две части над осью x и под ней.
  2. Условие попадания точки в область над осью x: точка лежит под прямой y = x + 4, одновременно точка лежит под прямой y = -x + 4 и y > 0.
  3. Условие попадания точки в нижнюю область: точка лежит в окружности (x2 + y2 <= 25) и одновременно y<= 0 и y>= -3.
  4. Объединим эти выражения в одно логическое выражение, напишем программу.
program area;
   var x,y:real;
   z: boolean;
begin
   write('x='); readln(x);  
   write('y='); readln(y);
   z := ((y<=x+4) and (y<=-x+4) and (y>=0)) or (((x*x + y*y)<=25) and (y<=0) and (y>=-3));
   writeln(z);
end.

 
запущенная программа для двух точек (3,1) и (1,-4)

P.S.

Вы догадались, конечно, что принципы, изложенные в этом материале применимы для решения задачи C1 Единого государственного экзамена по информатике.