В практике хорошо известны задачи, дальнейший ход решения которых зависит от выполнения какого-либо условия. Рассмотрим простой прим - pismo.netnado.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
В практике хорошо известны задачи, дальнейший ход решения которых зависит от выполнения - страница №1/1

Условный оператор
В практике хорошо известны задачи, дальнейший ход решения которых зависит от выполнения какого-либо условия. Рассмотрим простой пример задачи из курса алгебры.

Требуется построить алгоритм вычисления значения функции у = |х|. Она задается соотношением:

у =

При решении этой задачи требуется выполнить следующие условия:

1) проверить больше или равен нулю х;

2) если х больше или равен 0, то присвоить y значение х (у: = х), если х меньше 0, то присвоить y значение –х (у: = –х).


Коротко алгоритм решения этой задачи может быть записан так:

ЕСЛИ х ≥ О, ТО у: = х, ИНАЧЕ у: = -х


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

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

1) неполная форма условного оператора: действие выполняется только тогда, когда выполняется записанное в условие, в случае невыполнения условия происходит переход к следующему оператору (выход из структуры).

2) Полная форма условного оператора: в случае выполнения условия (ветвь «да») выполняется одно действие, в случае невыполнения (ветвь «нет») - другое действие.

Программу рекомендуется строить из последовательных, логически завершенных блоков, не допуская передачи управления из одного блока в другой. Такая программа содержит меньше ошибок при разработке, легче проверяется на правильность выполнения.
Неполный условный оператор имеет вид: IF условие THEN оператор;

Полный условный оператор: IF условие THEN оператор1 ELSE оператор2;


Если перевести на русский язык английские слова IF, THEN и ELSE, то вид условного оператора будет таким:

ЕСЛИ условие, ТО оператор1, ИНАЧЕ оператор2;
В различных случаях после слов THEN и ELSE надо выполнить не один оператор, а несколько. Тогда эти операторы заключаются в так называемые операторные скобки, открывающая скобка которых - слово BEGIN, а закрывающая слово END:

begin

(операторы )

end;
Перед словом ELSE точка с запятой не ставится. В операторных скобках рекомендуется каждую пару BEGIN - END записывать в одном столбце: так легче проверить соответствие каждой открывающей скобке закрывающую.

Примеры условного оператора:


if а < b then у: = х;
if х < 0 then х: = -х; {изменение знака переменной х}
if а + b < с then

begin

z: = х; {обмен значениями переменными х и у}

х: = у;

у: = z

end;

В качестве выполняемого в условном операторе действия может быть другой условный оператор. Например:


if sqr (х) + sqr (у) > 1 then

if х > У then z: = 0

else z: = 1;
При такой форме записи, использующей сдвиг вправо для каждого внутреннего действия, легко понять, к какому из двух слов IF относится слово ELSE. Если этот опеатор записать в одну строку, то ответ будет неоднозначным. Транслятор поступает следующим образом. Встретив сложную конструкцию из вложенных условных операторов, он анализирует ее с конца, приписывая последнее найденное ELSE первому встреченному при просмотре справа налево IF.

Рассмотрим пример программы с использованием условного оператора. Пусть для двух целых чисел надо определить, являются они четными или нет. Для проверки четности используем условие: остаток от деления на 2 четного числа равен 0.


program ЕЗ;

var а, b: integer;

begin

writeln ('введите два целых числа');

readln (а, b);

if а mod 2 = 0 then writeln ('а - четное')

else writeln ('а - нечетное');

if b mod 2 = 0 then writeln ('b - четное')

else writeln ('Ь - нечетное')

end.

Логические выражения.


Алгоритм решения квадратного уравнения содержит проверку условия d < 0. Два значения, d и 0, связаны отношением < - меньше. Если условие выполняется, то говорят, что соответствующее выражение истинно, если не выполняется - выражение ложно. Речь идет о логическом выражении. Для построения сложных условий в Паскале имеются логические операции and (и), or (или) и not (не). Обозначив истинное значение через 1 и ложное через 0, построим таблицы истинности для этих операций.

х У Х and У

1 1 1

1 0 0


0 1 0

0 0 0
х У Х orY

1 1 1

1 0 1


0 1 1

0 0 0
х not Х

1 0

0 1
Рассмотрим примеры построения сложных логических выражений.



1. Пусть требуется определить, принадлежит ли точка с координатой х отрезку [а; b]. Если записать это условие двойным неравенством, то читать его надо так: х меньше либо равен b и больше либо равен а. Отношение «меньше либо равно» в Паскале записывается двумя знаками. Аналогично записывается и «больше либо равно». Однако в Паскале нельзя записывать двойное неравенство. Используя логическую операцию and (и), запишем:

(х >= а) and (х <= b)
Отношения, между которыми стоит логическая операция, заключаются в круглые скобки.
2. Имеется прямоугольное отверстие со сторонами а и b и кирпич с ребрами х, y, z. Требуется составить условие прохождения кирпича в отверстие.

Кирпич пройдет в прямоугольное отверстие, если выполнится сложное условие:



(а >=x) and (b >=y) or (а>=y) and (b>=x) or (а>=x) and (b>=z) or (а>=z) and (b>=x) or (а >=y) and (b >=z) or (а>=z) and (b>=y)
Для трех граней шесть условий получается потому, что можно каждую грань повернуть на 90˚ и проверить для каждой грани два случая.
3. Определить принадлежность точки фигуре. Пусть фигура задана ограничивающими ее прямыми (рис.).


y


B


2



x

A

C



-1

1

Для каждой прямой определим полуплоскость, в которой находится фигура - треугольник АВC. Полуплоскость задается неравенством.

Полуплоскость, находящаяся выше оси х определяется неравенством у > 0.

Полуплоскость, находящаяся справа от прямой, соединяющей точки (-1,0) и (0,2), задается неравенством у - 2х - 2 < 0.

Полуплоскость, находящаяся слева от прямой, соединяющей точки (1,0) и (0,2), задается неравенством у + 2х - 2 < 0.

Условие принадлежности точки (х, у) фигуре:


(y > 0) and (y - 2*x - 2 < 0) and (y + 2*x - 2 < 0)

4. Приведем пример программы определения существования треугольника со сторонами а, b и с. Условие существования треугольника известно из геометрии: сумма двух любых сторон должна быть больше третьей. Следовательно, для всех сторон условие «сумма двух больше третьей» должно выполняться.


program Е4;

var a, b, с: real;

begin

writeln ('введите длины трех сторон треугольника ');

readln (a, b, с);

write ('треугольник со сторонами’ , а, ‘ ‘,b,’ ‘ , c);

if (a + b > с) and (b + с > a) and (a + с > b)

then write (' существует')

else write ('не существует');

end.
Вопросы и задания
1. Как транслятор анализирует вложенные условные операторы?

2. Как работает неполный условный оператор?

3. Как проверить, является ли целое число нечетным?

4. Как выполняются логические операции И, ИЛИ, НЕ?

Напишите программы на Паскале для решения следующих задач.

5. Даны три числа а, b и с. Выясните, верно ли а < b < с. Ответ получите в текстовой форме: верно или неверно.

6. Даны положительные числа а, b, с, х. Выясните, пройдет ли кирпич с ребрами а, b, с в квадратное отверстие со стороной х.

7. Выясните, принадлежат ли числа а и b промежутку (-1; 1).

8. Даны числа х и у. Вычислите число z, равное х + у, если х <= у, и 1- х + у в противном случае.

9. Присвойте z значение большего из чисел х и у в том случае, если х < 0, и меньшего, если х >= 0.

10. Даны три Действительных числа. Выберите те из них, которые принадлежат отрезку [1;3].

11. Присвойте величине а значение наибольшего из трех заданных чисел.

12. Даны два числа. Выведите первое из них, если оно больше второго, и оба числа, если это не так.

13. Проверьте, есть ли среди трех заданных чисел равные.

14. Даны два действительных числа. Меньшее из них замените полусуммой этих чисел, а большее - их произведением.

15. Вычислите наименьшее из трех заданных чисел.

16. Найдите решение уравнения ах + b = 0, если оно существует.

17. Если данное число х меньше нуля, то z присвойте значение большего из двух чисел х и у, иначе z присвойте значение полусуммы этих чисел.



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

19. Даны действительные числа а, b и с. Удвойте эти числа, если они являются упорядоченными по возрастанию.