Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ АЛГОРИТМИЗАЦИИ.doc
Скачиваний:
188
Добавлен:
16.03.2015
Размер:
1.82 Mб
Скачать

3. Организация программ разветвляющихся структур

Условный оператор используется, когда выполнение программы зависит от выполнения некоторого условия.

В Паскале различают две формы условного оператора: полная и сокращенная.

3.1. Полная форма условного оператора

Формат полной формы условного оператора имеет вид:

IF <логическое выражение> THEN оператор1

ELSE оператор2;

где IF (если), THEN (тогда), ELSE (иначе) – служебные слова; оператор1, оператор2 – простые или составные операторы.

Перед ELSE точка с запятой не ставится.

Условие – это любое выражение логического типа, использующее операции сравнения: =, <>, >=, <=; и операции булевой алгебры: and (и), or (или), not (не).

Пример 3.1. Вычислить y=x+1, если x<0 и y=√x, если x ≥ 0.

IF X ≥ 0 THEN Y := SQRT(X)

ELSEY:=X+1;

Если условие сложное, то оно ставиться в круглые скобки.

Пример 3.2. Вычислить k=ln(x/y), если x>0 и y≠0, и k=sin(x), во всех остальных случаях.

IF (X>0) AND (Y<>0) THEN K := LN(X/Y)

ELSEK:=SIN(X);

Пример 3.3. Вычислить:

IF A=B THEN

IF C<D THEN X:=1

ELSEX:=2

ELSEX:=3;

Действие условного оператора расширяется, если использовать после служебных слов составной оператор. Составной оператор – это последовательность действий больше одного, которые заключаются в операторные скобки (begin, end).

IF <лог_усл> THEN

BEGIN

оператор1;

…..

операторN;

END

ELSE

BEGIN

оператор1;

…..

операторN;

END;

Пример 3.4.

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

IFSUM>KTHEN

BEGIN

A := A+K;

M := M+1;

END

ELSE

BEGIN

A := A+SUM;

WRITELN (A);

END;

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

3.2. Краткая форма условного оператора

Формат краткой формы условного оператора:

IF <лог_усл> THEN оператор1;

Если логическое условие истинно, то выполняется оператор1, если ложно, то выполняется оператор, следующий за оператором IF.

Пример 3.5. Запишем пример 1 при помощи краткой формы оператора IF.

IF X<0 THEN Y := X+1;

IF X>=0 THEN Y := SQRT(X);

Определение чётности и нечётности числа:

или

IF (X MOD 2 = 0)

THEN WRITRELN (‘чётное число’);

IF (X MOD 2 <> 0)

THEN WRITELN (‘нечётное число’);

Задача 3.1. Определить, принадлежит ли точка с координатами (x,y) прямоугольнику с координатами x1, x2, y1, y2. Примечание. Точка принадлежит прямоугольнику, если x ≥ x1, x ≤ x2; y ≥ y1, y ≤ y2.

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

Листинг программы

PROGRAMPRIM1;

VAR X, X1, X2, Y, Y1, Y2 : REAL;

BEGIN

READ(X1, X2, Y1, Y2);

IF (X>=X1) AND (X<=X2) AND (Y<=Y1) AND (Y>=Y2)

THENWRITE(‘точка принадлежит прямоугольнику’)

ELSEWRITE(‘точка не принадлежит прямоугольнику’);

END.

Задача 3.2. Вычислить значение функции Y, которая принимает 3 значения.

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

Листинг программы

PROGRAMFUN;

USES CRT;

VAR X, Y : REAL;

BEGIN

CLRSCR;

WRITE (‘X = ’);

READLN (X);

IF X<=0.5

THEN Y:=X-EXP(COS(X))

ELSE

BEGIN

IF X<=1 THEN Y:= X*SIN(PI*X)

ELSE Y:=ESP(-X);

END;

END.

Задача 3.3. Пусть значение Y зависит от X, график зависимости приведён на рисунке. Программа вычисления значения Y по значению X:

{Использование полной формы условного оператора}

PROGRAMPRIM1;

VAR

Y,X:REAL;

BEGIN

IF X<2 THEN Y := X

ELSE

BEGIN

IF X<3 THEN Y:=2

ELSE Y:=-X+5;

END;

END.

{ Использование краткой формы условного оператора }

PROGRAMPRIM2;

VAR

Y, X : REAL;

BEGIN

IF X<2 THEN Y := X;

IF (X>=2) AND (X<3) THEN Y := 2;

IF (X>=3) Y := -X+5;

END.

Задача 3.4. Разработать алгоритм и составить текст программы.

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

Листинг программы

P

да

да

да

ROGRAMMIN_MAX;

VAR

X, Y, Z: REAL;

BEGIN

CLRSCR;

READLN (X, Y);

IF X<0 THEN

BEGIN

IF X>Y THEN Z:=X ELSE Z:=Y;

END

ELSE

BEGIN

IF X<Y THEN Z:=X ELSE Z:=Y;

END;

WRITELN (‘Z = ’, Z:4:2);

END.

Задача 3.5. Ввести 3 числа и расположить их по возрастанию (алгоритм перестановки или сортировки методом пузырька).

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

Листинг программы

PROGRAMSORT;

USES CRT;

VAR

A, B, C, K: REAL;

BEGIN

CLRSCR;

READLN (A,B,C);

IF A>B THEN

BEGIN

K := A;

A := B;

B := K;

END;

IF A>C THEN

BEGIN

K := A;

A := C;

C := K;

END;

IF B>C THEN

BEGIN

K := B;

B := C;

C := K;

END;

WRITELN (‘A = ’,A:7:4);

WRITELN (‘B = ’, B:7:4);

WRITELN (‘C = ’,C:7:4);

WRITELN;

END.