Текст программы на языке Паскаль



Program Example_2;

Var R1, R2, S : real;

Begin

write(‘Введите радиус большего круга R1=‘);

read(R1);

write(‘Введите радиус меньшего круга R2=‘);

read(R2);

S := 3.14*R1*R1 - 3.14*R2*R2;

writeln(‘Площадь кольца S = ‘, S:5:2);

readln

end.

Данные для тестирования

1) Для R1=5, R2=3  –  Площадь кольца S = 3.14*52 – 3.14*32 = 50.24

2) Для R1=7, R2=5  –  Площадь кольца S = 3.14*72 – 3.14*52 = 75.36

 

УСЛОВНЫЙ ОПЕРАТОР

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

Пример 2.1. Даны действительные числа  x, y. Меньшее из этих двух чисел заменить их удвоенной суммой, а большее – половиной их произведения. Если числа равны, то оставить их без изменения.

Математическая модель задачи

Введём переменные:

min = 2*(x + y);

max = x * y / 2.

Блок-схема алгоритма

Текст программы на языке Паскаль

Program Example_3;

Var x, y, min, max : real;

Begin

write(‘Введите x = ‘);

read(x);

write(‘Введите y = ‘);

read(y);

min := 2*(x + y);

max := x * y / 2;

if x<y then begin x:=min; y:=max end

else if x>y then begin y:=min; x:=max end;

writeln(‘Результат: x = ‘, x:4:2, ‘ y = ‘, y:4:2);

readln

end.

Данные для тестирования

1) Для   x = 5, y = 3 ð  min = 2*(5+3) = 16; max = 5 * 3 / 2 = 7.5;

Результат:  x = 7.5 y = 16

2) Для x = 3, y = 5 ð min = 2*(3+5) = 16; max = 3 * 5 / 2 = 7.5;

Результат:  x = 16 y = 7.5

3) Для x = 3, y = 3 ð Результат:  x = 3 y = 3

 

Пример 2.2.   Даны два действительных числа x, y. Определить, принадлежит ли точка с  координатами  x, y заштрихованной области.

Математическая модель задачи

Из рисунка можно определить, что заштрихованная область ограничена тремя прямыми: y = 0, y = -x – 1, y = x – 1. Границы также принадлежат этой области.

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

У ≤ 0

y ≥ x -1 ;

y ≥ -x - 1.

Блок-схема алгоритма

Текст программы на языке Паскаль

Program Example_4;

Var  x, y : real;

Begin

writeln;

write(‘Введите x = ‘);

read(x);

write(‘Введите y = ‘);

read(y);

if (y <= 0)  and  (y >= x – 1)  and  (y >= -x – 1)

then writeln(‘Точка принадлежит заштрихованной области’)

else writeln(‘Точка не  принадлежит заштрихованной области’);

readln

end.

Данные для тестирования

1) Для x = -0.3, y = -0.6 ð Точка принадлежит заштрихованной области;

2) Для x = -0.3, y = -1 ð Точка  не принадлежит заштрихованной области;

3) Для x = 0.6, y = -0.3 ð Точка принадлежит заштрихованной области;

4) Для x = 0.3, y = 1 ð Точка  не принадлежит заштрихованной области;

 

Пример 2.3. Дано действительное число  a. Для функции f(x), график которой представлен на рисунке, вычислить значение  f(a).

Математическая модель задачи

Опишем на математическом языке представленную на графике функцию:

1   при   x < -2

f(x) =     - х - 1   при   -2 <= x < 0

х - 1     в остальных случаях

Блок-схема алгоритма

Текст программы на языке Паскаль

Program Example_5;

Var  a, f : real;

Begin

writeln;

write(‘Введите a = ‘);

read(a);

if a < -2 then f := 1

else if a < 0 then f := -x -1

else f := x – 1;

writeln(‘Результат: f(‘, a:3:2, ‘) = ‘, f:4:2);

readln

end.

Данные для тестирования

1) Для a = -4     ð    Результат:   f(-4.00) = 1.00

2) Для a = -1.3 ð     Результат:   f(-1.30) = 0.30

3) Для a = 2.7 ð Результат:   f(2.70) = 1.70

 

ПРОСТЕЙШИЕ ЦИКЛЫ

При решении задач этой темы используются алгоритмы, имеющие циклическую структуру. В зависимости от последовательности рассмотрения материала (операторов цикла), предполагается, что для реализации решения на языке Паскаль могут использоваться оператор цикла с предусловием while  или оператор цикла с постусловием  repeat.

Пример 3.1. Даны натуральные числа  А, В. Найти наименьшее общее кратное этих двух чисел.

Математическая модель задачи

Наименьшим общим кратным двух чисел является наименьшее число, которое делится нацело, т.е. без остатка, на оба этих числа. Таким числом может оказаться одно из заданных чисел – то, которое больше.

Введём переменную R – наименьшее общее кратное.

Для сокращения числа проверок, вначале можно найти большее из двух заданных чисел и в качестве начального значения переменной R принять это число. Затем в цикле добавлять к R по единице, пока R не будет делиться нацело на оба заданных числа. В этом примере удобнее использовать оператор цикла с постусловием  repeat.

Блок-схема алгоритма


Дата добавления: 2018-04-04; просмотров: 555;