Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1-05-1 Основные типы алгоритмов.docx
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
101 Кб
Скачать
☆

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

Прежде чем перейти к рассмотрению ветвящихся и циклических алгоритмов, рассмотрим понятие логичес­кого выражения.

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

Например, расчет корней квадратного уравнения про­изводится по-рйзному в зависимости от знака дискрими­нанта (вспомните школьную математику).

В результате сравнения значенцй двух выражений воз­можны два варианта ответа: сравнение истинно или ложно?

Например:

2+3 > 3+1 — да (истинно);

0 < -7? — нет (ложно).

Выражения такого вида мы будем называть логичес­кими выражениями.

Нам известны 6 операций сравнения:

Знак

Операция

<

Меньше

>

Больше

<=

Меньше или равно

>=

Больше или равно

=

Равно

<>

Не равно

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

Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между со­бой условий (отношений). Например, в магазине вам нужно выбрать туфли, размер которых r=45, цвет col=белый, цена price не более 400 руб.

Другой пример: школьник выяснил, что сможет ку­пить шоколадку, если она стоит 3 руб. или 3 руб. 50 коп.

В первом примере мы имеем дело с тремя отношения­ми, связанными между собой союзом «и» и частицей «не», во втором — с двумя отношениями, связанными союзом «или». Подобные условия назовем составными, и для их обозначения в алгоритме договоримся использовать союзы «и», «или», частицу «не», которые будем выде­лять жирным шрифтом и рассматривать как знаки логи­ческих операций, позволяющих из простых условий со­здавать составные, подобно тому, как из простых пере­менных и констант с помощью знаков +, - и т.д. можно создавать алгебраические выражения.

Так, условия наших примеров в алгоритме могут вы­глядеть таким образом:

первое: (r=45) и (col=белый) и (не (price>400));

второе: (цена=3) или (цена=З.5).

Алгоритмы ветвящейся структуры

Алгоритмом ветвящейся структуры будем называть та­кой алгоритм, котором выбирается один из нескольких возможных путей (вариантов) вычислительного процесса.

Каждый подобный путь называется ветвью алгоритма.

Признаком разветвляющегося алгоритма является на­личие операций условного перехода, когда происходит проверка истинности некоторого логического выражения (проверяемое условие) и в зависимости от истинности или ложности проверяемого условия для выполнения выбира­ется та или иная ветвь алгоритма. Алгоритм предполага­ет выполнение Действия 1, если записанное условие ис­тинно (выполняется), и выполнение Действия 2, если ус­ловие ложно (не выполняется).

В частном случае может отсутствовать один из блоков «Действие 1» или «Действие 2».

Пусть, например, В — проверяемое условие, а S1, S2 — некоторые выполняемые инструкции (действия). Тогда: Если условие В выполняется (истинно), то

выбрать для исполнения S1, иначе

выбрать для исполнения S2

Запишем ветвящийся алгоритм на псевдокоде и гра­фически:

Существуют задачи, связанные с вычислением функ­ций, заданных несколькими арифметическими выраже­ниями (формулами). Приведем пример такой задачи.

Пример.

Вычислить значение Y по одной из формул:

Решение:

Исходные данные: х.

Результат: Y.

Метод решения задачи: необходимо выявить область, которой принадлежит значение х, для этого достаточно проверить заданные условия по порядку. Запишем алго­ритм в псевдокодах:

Алгоритм Ветв1;

Переменные х, у :вещественные;

Начало

Ввод (х);

Если х<10 тогда у:=х+2

иначе у:=х-2;

Вывод (у);

Конец.

К задачам рассмотренного выше вида очень часто сво­дятся вполне реальные задачи. Например, расчет стипен­дии, если известно среднее арифметическое оценок сту­дента за месяц. Стипендия отличника равна 100 рублям, хорошиста (5 < SRJ4) — 80 рублей, остальные стипендию не получают.

Математическая формула:

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

Еще один распространенный вид задач — логические задачи. К ним относятся задачи определения минимума, максимума некоторого числа величин, задачи упорядочи­вания и сортировки данных и др. Это достаточно слож­ные задачи, однако в простейших случаях при неболь­шом числе данных они приводят к построению неслож­ных алгоритмов разветвляющейся структуры. Рассмотрим примеры подобных задач.

Пример.

Определить: Найти максимальное из двух чисел Х, Z: Y = max{X,Z}.

Решение:

Исходные данные: X, Z.

Результат: Мах.

Метод решения задачи: нужно сравнить два числа и сделать вывод. Блок-схема алгоритма решения этой зада­чи выглядит следующим образом: