Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
33
Добавлен:
04.06.2015
Размер:
7.33 Mб
Скачать

Вариант 2 – с использованием операции конъюнкция

s = z; s := z;

ЕСЛИ (x > y) & (x > z) If (x > y) And (x > z)

ТО s = x; Then s:=x;

ЕСЛИ (y > x) & (y > z) If (y >x) And (y > z)

ТО s = y; Then s:=y;

По принятому в Паскале соглашению,Elseвсегда относится к ближайшему предшествующему ему незанятомуIf:

If (n>0)

Then If (m Mod n > n)

Then m := m – n

Else m := m + n

Else m := m Mod n;

В данном случае ветвь Else m := m + nотносится кIf (m Mod n > n),а ветвьElse m := m Mod nотносится кIf (n > 0).

Часто встречающиеся ошибки программирования:

1.Использование в качествеусловиявыражения не логического типа:

If (n + m)

Then . . .

2.Использование Else без Then:

If (n > m)

Else . . .

3. Использование в операторных скобках, стоящих послеElse или Then, словаBeginбезEndили наоборот:

If (n > m)

Then

Begin

a:=1;

b:=0;

Else . . .

4.Использование точки с запятой перед словамиElse или Then:

If (n > m);

Then a:=1;

Else a:=0;

5.При использовании вусловиилогических операций операнды не заключаются в скобки:

If n > m And n <= k

Then . . .

6.Использование лишних проверокусловий:

If (n > m)

Then a:=1

Else If (n <= m)

Then a:=0

Else a:=2;

Пример

Задан график функции f(x)– полуокружность радиусаR=1:

Определить:

  1. Значение функции yпри заданном значении аргументаx.

  2. Площади фигур слева и справа от линии разреза.

По теореме Пифагора:

Площадь фигуры слева от линии разреза определяется суммой площадей прямоугольного треугольника:

s1 = 0,5 x y

и сегмента:

s2 = 0,5 R2 (αsin α),гдеα– центральный угол в радианах,

причем

α = arcsin(y/R).

Площадь всей фигуры (полукруга) определяется выражением:

S = π R2/2.

Программа решения задачи:

Program Primer;

Uses CRT;

Var X, y, s_left, s_right, alfa, sin_alfa, segment : Real;

Begin

ClrScr;

Write(‘x=’);

ReadLn(x);

If (x<=1.0) Then первый участок

Begin

y:=Sqrt(1.0 - (x - 1.0 ) * (x - 1.0 ));

If (x<=0.0)

Then y:=0.0;

End

Else

Begin второй участок

y:=Sqrt(1.0 - (x- Trunc(x)) * (x- Trunc(x)));

If (x>=2.0)

Then y:=0.0;

End;

If (x=1.0) Then

Begin

s_left:=0.7854;

s_right:=0.7854;

End;

If (x<1.0) Then первый участок

Begin

sin_alfa:=y;

If (sin_alfa<>1.0)

Then alfa:=Arctan(sin_alfa/Sqrt(1.0 - sin_alfa*sin_alfa))

Else alfa:=Pi/2.0;

segment:=0.5*(alfa - sin_alfa);

s_left:=segment + 0.5*x*y;

s_right:=Pi/2.0 - s_left;

End; x<=1.0

If (x>1.0) Then второй участок

Begin

x:=2.0-x;

sin_alfa:=y;

If (sin_alfa<>1.0)

Then alfa:=Arctan(sin_alfa/Sqrt(1.0 - sin_alfa*sin_alfa))

Else alfa:=Pi/2.0;

segment:=0.5*(alfa - sin_alfa);

s_right:=segment + 0.5*x*y;

s_left:=Pi/2.0 - s_right;

End; x>=1.0

WriteLn(‘y=’, y:6:4);

WriteLn(‘s_left=’, s_left:6:4);

WriteLn(‘s_right=’, s_right:6:4);

End.