В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618), страница 12
Текст из файла (страница 12)
Кроме того,для самого первого (последнего) элемента этого множества значение функции pred (succ) неопределено, поскольку в этом случае предшествующего(следующего) элемента не существует.2.5. Логический тип (boolean)Этот тип значений, хотя он и относится к стандартным типам, для многихчитателей может оказаться мало знакомым, поскольку он находит довольно слабое отражение в школьной программе. В связи с этим рассмотримкратко некоторые элементы математической логики, из которой и возникэтот тип значений.2.5.1. Основные понятия математической логикиМатематическая логика является одной из ветвей общей логики — наукио формах и законах мышления, которая развивалась применительно к потребностям математики.
Основу математической логики составляет алгебралогики или исчисление высказываний, причем здесь используется тот жеязык формул, который характерен для математики вообще — это освобождает математическую логику от неопределенности в толковании логическихвыражениГ показывающих связи между отдельными суждениями, понятиями и т.д.
Получение логических следствий из исходных посылок такжеможет быть осуществлено путем формальных преобразований логическихформул, подобно хорошо известным преобразованиям обычных алгебраических формул.Под высказыванием понимается любое предложение, в отношении которого можно однозначно сказать, истинно оно или ложно, например: " 3 > 2 " ,"5 — четное число", "Осло — столица Кубы" и т.д. Заметим, что предложение типа "число 0.000001 мало" не является высказыванием в указанномвыше смысле, поскольку понятие "малости числа" весьма относительно,так что трудно определенно сказать, истинно или ложно приведенное вышепредложение.Отвлекаясь от конкретного содержания высказывания, можно считать,что истинность любого высказывания принимает одно из двух Е О З М О Ж Н Ы Хлогических (истинностных) значений: "истина" (если высказывание истинно) и "ложь" (если высказывание ложно).
Два высказывания называютсяэквивалентными, если значения их истинности всегда одинаковы. Например, высказывания "5 — четное число" и "Осло — столица Кубы" эквивалентны, так как оба они ложны. Если нас интересуют не сами конкретныевысказывания, а только значения их истинности, то мы можем то или иноевысказывание заменять эквивалентным ему высказыванием.Приведенные выше высказывания всегда имеют одно и то же значениеистинности (высказывание "3 > 2" всегда истинно, а два других всегда41ложны).
Значения же истинности других высказываний могут изменятьсяв зависимости от обстоятельств, при которых сделаны эти высказывания.Например, истинность высказывания "сегодня — среда" зависит от того,в какой день недели оно сделано, а высказывания "х < 0" — от конкретного значения числовой переменной х. В связи с этим возникает понятиелогической или булевской переменной, которая может принимать одноиз двух возможных логических (истинностных) значений "истина" и"ложь" — подобно тому, как в математике имеется понятие переменной,принимающей числовые значения.
В частности, каждому высказываниюможно сопоставить определенную логическую переменную.Заметим, что изучение логики с формальных позиций первым начал всередине прошлого века английский математик Джордж Буль (Bool).В честь него исчисление высказываний называют иначе "булевой алгеброй",а логические значения — булевскими. Отсюда и появилось слово booleanкак синоним слова "логический" — это слово во многих алгоритмическихязыках, в том числе и в паскале, используется для обозначения рассматриваемого здесь типа значений.Истинность того или иного высказывания может зависеть от истинностинекоторых других высказываний, причем характер этой зависимости может быть различным. Например, истинность высказывания "х * у Ф 0" зависит от истинности высказываний "х Ф 0" и "у Ф 0", причем характер зависимости здесь такой: первое высказывание будет истинным только в томслучае, когда два других высказывания будут о д н о в р е м е н н о истинными.
Высказывание же "х * у = 0" будет истинным, если истинно х о т ябы о д н о из высказываний "х = 0" и "у = О" — как видно, здесь характерзависимости уже иной. В обычной алгебре для указания тех или иныхзависимостей между величинами используются некоторые простейшиесвязи — сумма, произведение и т.д., которым соответствуют определенныеоперации над значениями этих величин: сложение, умножение и т.д. С помощью этих простейших связей можно — путем их суперпозиции - задаватьи более сложные зависимости.
Подобно этому в математической логике дляобразования более сложных высказываний также используются некоторыепростейшие логические связи, которым соответствуют определенныелогические операции над значениями истинности этих высказываний. Приэтом можно ограничиться тремя связями, через которые можно выразитьлюбые другие логические связи. Рассмотрим эти три простейшие логические связи и соответствующие им логические операции, которые и используются в языке паскаль.Отрицание. Отрицание высказывания А обозначаетсяА и читается"не А". Отрицанием высказывания А называется такое высказывание В,которое истинно, если А ложно, и которое ложно, если А истинно.
Например, высказывание "х < 0" будет истинным, если конкретное значение хесть отрицательное число, а высказывание "—, (х < 0 ) " , наоборот, будет истинным в том случае, когда значение х есть неотрицательное число, так чтопоследнее высказывание эквивалентно высказыванию "х > 0". Данной логической связи соответствует логическая операция отрицание, которая также обычно обозначается знаком. Этот знак ставится перед той логической переменной или конкретным высказыванием, значение истинности которых отрицается, например -> А или(х = у). Операция отрицания опре-деляется следующим образом (ы — логическая переменная):ииистиналожьложьистинаИз этой таблицы следует, что значение -,и совпадает с значением и.Конъюнкция.
Конъюнкция двух высказываний А и В обозначаетсяА А В и читается "А и В". Высказывание А А В истинно только в том случае,когда высказывания А и В одновременно истинны; в остальных случаях этовысказывание будет ложным. Например, высказывание "сегодня — пятоечисло А сегодня — среда" будет истинным только в том случае, если оносделано в среду пятого числа; во.
всех остальных случаях оно будетложным.Данной логической связи, имеющей смысл союза " и " соответствует операция логическое умножение, которая обозначается А и определяется следующим образом (и и и — логические переменные):иистинаистиналожьложьиистиналожьистиналожьи ЛиистиналожьложьложьИз определения конъюнкции следует истинность высказываний(и А ложь) = ложь, (и А истина) = и.Дизъюнкция. Дизъюнкция двух высказываний А и В обозначается А V Ви читается "А или В". Высказывание А V В будет истинным, если истиннохотя бы одно из высказываний А и В, и ложным только в том случае, когдавысказывания А и В одновременно ложны.
Например, высказывание"х = О V у = 0" будет ложным только при х Ф 0 и у Ф 0; если же значениехотя бы одной из переменных х и у (или обеих сразу) равно нулю, то этовысказывание будет истинным.Данной логической связи, имеющей смысл союза "или", употребляемогов том случае, когда не исключается одновременное появление обоих событий, соответствует операция логическое сложение V, которая определяетсяследующим образом:иииVиистинаистиналожьложьистиналожьистиналожьистинаистинаистиналожь43Из определения дизъюнкции следует истинность следующих высказываний:(и V истина) = истина, (и V ложь) = и.Теперь рассмотрим пример использования этих простейших логическихсвязей для образования более сложных высказываний.
При этом будемисходить из того, что каждое высказывание в конечном счете должно бытьпостроено из отношений, т.е. записей вида "А1&А2", где А-1 и А2 обозначают арифметические выражения, а & — одну из операций отношения(сравнения).П р и м е р 2.1. Записать на языке логических формул высказывание"точка М(х, у) находится либо внутри левой половины единичного кругас центром в начале координат, либо на биссектрисе первого координатного угла".Это высказывание можно представить как дизъюнкцию двух болеепростых высказываний: "точка М(х, у) находится внутри левой половиныединичного круга с центром в начале координат" V "точка М(х, у) находится на биссектрисе первого координатного угла" Первое из используемых здесь высказываний можно представить как конъюнкцию высказываний: "точка находится внутри единичного круга с центром в начале координат" Л "точка находится в левой координатной полуплоскости", а второе — как конъюнкцию высказываний: "точка находится на прямойу = х" Л "точка находится в верхней координатной полуплоскости".
Такимобразом, нужное нам высказывание на языке логических формул можнозаписать в виде:(х*х+у*у<\Ax<0)V(у=хАу>0).П р и м е р 2.2. Записать на языке логических формул высказывание"точка М(х, у) находится внутри заштрихованной области". Область заданаследующим рисунком:О1хО т в е т : (х < 1) Л (х > 0) Л ( у > 0 ) А (у < х 2 ) .Логические выражения (формулы) в записи алгоритмов чаще всегоиспользуются для задания условий, в зависимости от которых выбираетсядальнейший путь вычислений.442.5.2. Логический тип в паскалеЛогический тип в паскале обозначается стандартным именем boolean. Множество значений этого типа содержит всего два истинностные значения,каковыми являются идентификаторы false (ложь) и true (истина).