Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по информатике 2009.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
12 Мб
Скачать
☆

2.3. Программирование разветвляющихся алгоритмов. Условный оператор

Алгоритм, в котором выполнение того или иного действия зависит от выполнения некоторого условия, называется разветвляющимся. Для программирования разветвляющихся алгоритмов в Паскале используется условный оператор.

Условный оператор используется в тех случаях, когда выполнение следующего действия в программе зависит от результатов предыдущих вычислений. Для записи условного оператора используются следующие служебные слова: IF, THEN, ELSE.

Общий вид условного оператора IF A THEN B; где A - логическое отношение , B - оператор, простой или составной. Для записи условного оператора перехода используются следующие логические отношения: = равно; < > не равно; < меньше; > больше; >= больше или равно; <= меньше или равно. Рассмотрим следующий условный оператор:

IF A < > 0 THEN B:=X/A;

В результате выполнения данного условного оператора В примет значение X/A только в том случае, если A не равно 0. Если A=0, то оператор присваивания B:=X/A; выполнен не будет.

Условный оператор может быть записан в следующем виде: IF A THEN ST1 ELSE ST2; где А - логическое отношение, а ST1 и ST2 - некоторые операторы. Если логическое отношение А - истина, то выполняется оператор ST1. Если логическое отношение A - ложь, то выполняется оператор ST2.

Пример 2.3.1

PROGRAM VVOD;

VAR n, C, d, b, g:real;

BEGIN write('введи n= ');read(n); c:=n+LN(N)+1;b:=c+1;

IF c < > 0 THEN IF b< > 10 THEN d:=1 ELSE d:=12.;g:=3;

writeln(C, d, g);

END.

Составной оператор. Если при некотором условии нужно выполнить последовательность операторов, то их объединяют в один составной оператор. Составной оператор начинается ключевым словом BEGIN и заканчивается ключевым словом END. Между этими словами помещаются составляющие операторы, которые выполняются в порядке их следования.

Рассмотрим пример составного условного оператора.

Пример 2.3.2

y=Cos 2x/5 при 5<=x<=10, r=sin 2x/10,

f= y+r; f=2.8 eX при x<5 или x>10.

PROGRAM FUNK;

VAR x, y, r, f:real;

BEGIN write('введи x= ');read(x);

IF (x<=10) and (x>=5) THEN BEGIN

y:=Cos(2.0*x)/5.0; r:=Sin(2*x)/10.0;

f:=y+r; END ELSE

f:=2.8*exp(x);

write('значение f',f);

END.

Виды разветвляющихся алгоритмов и способы программирования приведены в табл. 2.3.1. и 2.3.2.

Пример 2.3.3. Составить программу для решения квадратного уравнения.

VAR A, B, C, X, X1, X2, D:real;

B EGIN

{Ввод коэффициентов a,b,c.}

writeln(’Данная программа решает квадратные уравнения типа :’);

writeln(’ AXX + BX + C = 0 ’)

write(’Введите коэффициент А = ’); readln(A);

write(’Введите коэффициент B = ’); readln(B);

write(’Введите коэффициент C = ’); readln(C);

{Расчет дискриминанта}

D:=sqr(B)-4AC;

{Расчет корней.}

IF D < 0 THEN

BEGIN

writeln(’Данное уравнение вещественных корней’);

writeln(’НЕ ИМЕЕТ’);

END;

IF D = 0 THEN

BEGIN

X:=-B/(2A);

writeln(’Данное уравнение имеет ОДИН вещественный корень’);

writeln(’ X = ’,X:10:6);

END;

IF D > 0 THEN

BEGIN

X1 := (-B+sqrt(D))/(2A);

X2 := (-B-sqrt(D))/(2A);

writeln(’Данное уравнение имеет ДВА вещественных корня’);

writeln(’ X1 = ’,X1:10:6,’ X2 = ’,X2:10:6);

END;

END.

Пример 2.3.4. Составить программу вычисления теплового эффекта химической реакции, если теплоемкость зависит от температуры.

,

где n=7.3 моль - количество вещества,

H298=63 200 Дж/моль - мольный эффект реакции при стандартных условиях.

CONST

n=7.3; H298=63200; T1=600;T2=800;

Cp1= -13.7; Cp2= -4.9; Cp3=5.3;

VAR T, Cp, H:real;

BEGIN

write(’Введите температуру, К : T = ’); readln(T);

IF T < T1 THEN Cp:= Cp1 ELSE

IF T < T2 THEN Cp:= Cp2 ELSE Cp:= Cp3;

H:=(H298+Cp(T-298))n;

writeln(’Тепловой эффект : H=’, H:6:3);

END.

Пример 2.3.5. Вводятся значения длин трех отрезков. Составить программу определения возможности образования этими отрезками треугольника.

VAR a, b, c: real;

B EGIN

write(’Введите длину первого отрезка a=’); readln(a);

write(’Введите длину второго отрезка b=’); readln(b);

write(’Введите длину третьего отрезка c=’); readln(c);

IF (a<=0) OR (b<=0) OR (c<=0) THEN writeln(’Вы неправильно ввели значения длин !’) ELSE

IF (a+b>c) AND (a+c>b) AND (b+c>a) THEN writeln(’Из этих отрезков МОЖЕТ быть образован треугольник !’) ELSE writeln(’Из этих отрезков НЕ МОЖЕТ быть образован треугольник !’);

END.

Таблица 2.3.1

Виды разветвляющихся алгоритмов и способы их программирования

Фрагмент блок – схема

Фрагмент программы

а) Разветвление.

IF x>3 THEN y:=sqr(x-1) ELSE

BEGIN z:=1/x; y:=exp(-z) END;

б) Обход. (1-й случай).

IF (x>3) AND (c<2) THEN d:=c+x;

Продолжение табл. 2.3.1.

в) Обход. (2-й случай).

Варианты программирования.

1) IF NOT (2a>1)

THEN writeln(’d=’,d:10);

2) IF 2a<=1

THEN writeln(’d=’,d:10);

3) IF 2a>1

THEN ELSE writeln(’d=’,d:10);

4) IF 2a>1 THEN GOTO 1;

writeln(’d=’,d:10);

1:……

Два способа расчета функции с условиями (Таблица 2.3.2):

Таблица 2.3.2

Способ 1

Способ 2

. . .

IF x<0 THEN f:=sqr(x)-a ELSE

IF x<a THEN f:=4x+sqrt(x) ELSE

f:=ln(abs(x/a));

. . .

. . .

IF x<0 THEN f:=sqr(x)-a;

IF (0<=x) AND (x<a)

THEN f:=4x+sqrt(x);

IF a<=x THEN f:=ln(abs(x/a));

. . .