Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
10
Добавлен:
04.11.2018
Размер:
7.76 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_left:=segment + 0.5*x*y;

s_right:=Pi/2.0 - s_left;

End; x>=1.0

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

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

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

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]