Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3. Логика Буля и условное выполнение.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
43.1 Кб
Скачать

3.3.1. Снова семейство программ MinSort.

Булевы выражения позволяют программе MinSort быть улучшенной, создавая новое семейство программ MinSortB. Раздел проекта 3.1 может быть заменен следующим:

Design part 3.1

BEGIN {печатаем минимальное значение из Ch1, Ch2, Ch3 в OUTPUT, оставшиеся значения помещаем в Ch1, Ch2}

IF (Ch1 < Ch2) AND (Ch1 < Ch3)

THEN

{Печатаем Ch1 в OUTPUT, помешаем Ch3 в Ch1}

BEGIN

WRITE(Ch1);

WRITE(Ch1 := Ch3)

END

ELSE

{Печатаем минимум из Ch2, Сh3 в OUTPUT. В случае необходимости копируем Ch3 в Ch2}

IF Ch2 < Ch3

THEN

BEGIN

WRITE(Ch2);

Ch2 := Ch3

END

ELSE

WRITE(Ch3)

END

Операции сравнения для поиска минимума среди четырех значений

Выражение

Minimum

(Ch1 < Ch2) AND (Ch1 < Ch3) AND (Ch1 < Ch4)

Ch1

(Ch2 < Ch3) AND (Ch2 < Ch4)

Ch2

Ch3 < Ch4

Ch3

{else}

Ch4

Поэтому количество операторов WRITE в программе MinSort4B требуется всего лишь 4 + 3+ 2 = 9. В общем количество операторов WRITE для сортировки n-строки будет

n + (n – 1) + … + 3 + 2

Сравнение с IFSort и MinSort:

Количество операторов Write

N

IFSortN

MinSortN

MINSortNB

3

6

6

5

4

24

14

9

5

120

30

14

6

720

62

20

7

5 040

126

27

8

40 320

254

35

9

362 880

510

44

10

3 628 800

1 022

54

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

3.4. Заключение.

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

Комментарии состояния – это пример использования Булевой логики для рассуждения о действии программы. Всякий раз, когда сложная ситуация включает отрицание, объединение или выбор, булевы операторы NOT, AND и OR делают возможным формальный анализ. Булевы выражения могут всегда быть поняты путем построения таблиц истинности, но многие факты булевых условий могут быть наилучшим образом выражены из булевых тождеств и свойств операторов сравнения.

Паскаль имеет операторы NOT, AND, OR, соответствующие одноименным операторам булевой логики, которые могут быть использованы для упрощения операторов IF и WHILE. Для поиска подходящего булева выражения часто бывает полезно использовать факты формальной булевой логики.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]