Алгоритмическая конструкция ветвление

 

На практике решение большинства задач не удается описать с помощью программ линейной структуры. При этом после проверки некоторого условия выполняется та или иная последовательность операторов, однако происходит нарушение естественного порядка выполнения операторов. Условный оператор для реализации разветвлений в программе имеет следующую структуру:

If <логическое выражение> Then серия1 Else серия2;

Если логическое выражение, выступающее в качестве условия, принимает значение True (истинно), то выполняются операторы следующие за then (серия1), если False (ложь), то выполняются операторы расположенные после else (серия2).

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

If <логическое выражение> Then серия;

Когда выполняется последовательность команд (серия), необходимо использовать так называемые операторные скобки:

Begin

<Оператор 1>;

<Оператор 2>;

...

<Оператор N>

End;

! Точка с запятой после Begin не ставиться.

Вариант условного оператора в этом случае:

If<условие> Then Begin <группа операторов 1> End;

Else Begin < группа операторов 2> End;

! Знак "точка с запятой" не ставится перед служебным словом Else, но операторы в группах отделяются друг от друга этим знаком.

На языке Паскаль условия представляют собой выражения, значением которых является величина логического типа (True - истина или False - ложь). Это может быть как просто переменная указанного типа, так и сложная последовательность высказываний, связанных логическими операциями.

В простых условиях могут применяться знаки операций сравнения: >(больше), <(меньше), =(равно), <>(не равно), >=(больше или равно), <=(меньше или равно).

Пример. (C+D3)>=(D1*(45-2))

В сложных условиях логические выражения строятся с помощью логических операций: and (и), or (или), not (не).

Примеры: (a>b) and (a>c); (Х<=1) or (Y>5) and (a>2); (4*Х-1>0) and (Х+2<3); not (a=b).

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

Пример. Из двух чисел необходимо выбрать наибольшее.

ProgramExample;

Var A,B,C : Real; {A,B - для хранения чисел, C - результат}

Begin

Writeln('Введите два числа');

Readln(A,B); {Ввод чисел с клавиатуры}

If A>B Then C:=A Else C:=B; {Если A>B, то результат A сохраняем в С, иначе результат - B}

Writeln(‘Наибольшее число =’,C); {Выводим результат на экран}

End.

Пример.По заданным коэффициентам решить квадратное уравнение

ProgramSq1;

Var A, B, C, D, X1, X2 : Real;

Begin

Writeln ('Введите коэффициенты квадратного уравнения');

Readln (A,B,C);

D:=B*B-4*A*C; {вычисление дискриминанта}

If D<0 Then Writeln ('Корней нет! ')

Else Begin

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

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

Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)

End

End.

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

Пример. Дано действительное число a. Вычислить f(a), если

Program Usl1;

Var х, F : Real;

Begin

WriteLn('Введите действительное число: '); ReadLn(х);

If х <= 0 Then F: = 0 Else

If х <= 1 THEN F: = Sqr(х) - х Else F = Sqr(х) - Sin(Pi * Sqr(х));

WriteLn('Значение функции F(‘,x:5:2,’) = ', F:10:4);

End.

Кроме условного оператора в качестве управляющей структуры довольно часто используется оператор выбора CASE. Эта структура позволяет переходить на одну из ветвей в зависимости от значения заданного выражения (селектора выбора). Ее особенность состоит в том, что выбор решения здесь осуществляется не в зависимости от истинности или ложности условия, а является вычислимым. Оператор выбора позволяет заменить несколько операторов развилки (в силу этого его ещё называют оператором множественного ветвления).

В конструкции CASE вычисляется выражение K и выбирается ветвь, значение метки которой совпадает со значением K. После выполнения выбранной ветви происходит выход из конструкции CASE. Если в последовательности нет метки со значением, равным K, то управление передается внешнему оператору, следующему за конструкцией CASE (в случае отсутствия альтернативы ELSE; если она есть, то выполняется следующий за ней оператор, а уже затем управление передается внешнему оператору).

Запись оператора выбора

Case K OF

A1 : серия 1;

A2 : серия 2;

...

AN : серия N

Else серия N + 1

End;

Любая из указанных серий операторов может состоять как из единственного оператора, так и нескольких (в этом случае, как обычно, операторы, относящиеся к одной метке, должны быть заключены в операторные скобки Begin…End).

Выражение K здесь может быть любого порядкового типа (к таким типам относятся все целые типы, Boolean, Char).

Пример. Найти наибольшее из двух действительных чисел используя, оператор выбора.

Program Maximum;

Var Max, X, Y : Real;

Begin

Write('Введите два неравных числа:');

ReadLn(X, Y);

Case X > Y Of

TRUE : Max := X;

FALSE : Max := Y

End;

WriteLn('Максимальное из двух есть ', Max : 12 : 6)

End.

Задания для практической работы.

Составить программы на языке Pascal.

1. Дано число к- целое. Определить, является ли оно четным (нечетным).

2. Выяснить, имеет ли решение уравнение вида А*х+В=0 в зависимости от параметра А.

3. Вычислить значение функции: х*5 ,если х<=-1

x/5 ,если х>=-1

4. Вычислить значение функции: х*5 ,если х<=-1

x/5 ,если х>=-1

x2 ,если -1<x<1

5. Даны три числа А, В и С. Значение наибольшего из них удвоить.

6. Даны три числа А, В и С. Выяснить существует ли треугольник с длинами сторон А,В,С.

7. Дано число К- целое, трехзначное. Найти сумму цифр этого числа.

8. Даны три числа А , В и С . Выдать их в порядке возрастания.

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

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

11. Составьте алгоритм, который по кол-ву лет школьника определяет, в каком он учится классе.

 








Дата добавления: 2015-05-21; просмотров: 2313;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.