ХКОИС
ХРРЦ
Регистрация
Забыли пароль?
Логин:
Пароль:
Поиск
Справочные сведения о системе образования Хабаровского края
Новости образования Хабаровского края
Информация и документы из министерства образования и науки Хабаровского края
Хабаровская краевая заочная физико-математическая школа
РЕГИОНАЛЬНАЯ ОЛИМПИАДА ШКОЛЬНИКОВ
Подготовка к олимпиадам по информатике
Подготовка к олимпиадам по информатикеМетоды и приемы программирования > Применение элементов математической логики в программировании
Применение элементов математической логики в программировании
Математическая логика является одним из главнейших математических аппаратов программиста. Так в языке Паскаль определен логический тип данных – Boolean и введены логические операции, с помощью которых можно создавать сложные логические выражения.
В статье «Элементы математической логики», размещенной в разделе «Теоретические материалы» сайта нашего проекта подробно рассматриваются логические операции, приводятся таблицы истинности для них и различные примеры.
В дополнение к материалам других разделов сайта покажем, каким образом в Паскале описываются логические переменные и задаются логические выражения.
 
1. Описание логических переменных.
Логические переменные, как и все остальные описываются в разделе описаний программы, процедуры или функции после служебного слова var. Например:
 
Var
            Flag, a, b, c: Boolean;
 
2. Значения логических переменных.
Логические переменные могут принимать одно из двух значений TRUE – «истина» или FALSE – «ложь». Эти значения могут быть присвоены переменным непосредственно, например
 
Flag:=FALSE;
 
или могут быть получены в результате выполнения логических операций, например:
 
Flag:=a or b;
 
или проверки отношений, например:
 
Flag:=10 < 5;  (значение «ложь»-FALSE)
 
3. Для логических данных определены значения, которые выводятся на экран или в текстовый файл. Для значения «истина» выводится текстовая строка 'TRUE', а для значения «ложь», соответственно текстовая строка ‘FALSE’. Например, если вывести на экран значение переменной Flag, после выполнения присваивания, из предыдущего примера, выполнив команду
 
Writeln(Flag);
 
то на экране появится сообщение:
 
FALSE
 
В Паскале можно конструировать довольно сложные логические выражения с использованием логических операций, операций отношения, логических функций. Для определения порядка выполнения логических операций в выражении используются круглые скобки, например:
 
Flag:=(a or b) and not (10<7).
 
Если в сложном логическом выражении присутствуют операции отношения и логические операции, то следует обязательно брать в круглые скобки операции отношения. Например:
 
Flag:=(f<10) or (2*f>15).
 
Это связано с тем, что в Паскале также определены и арифметические логические операции, которые выполняются побитно над двоичными представления данных, эта ситуация аналогична тому что, например, можно выполнять сложение чисел и сложение строк используя один и тот же знак операции «+».
 
Отметим, что наиболее часто логические выражения встречаются в условном операторе If – then, однако этим случаем их применение не ограничивается. Рассмотрим следующую задачу.
 
Задача 1. Составить таблицу истинности логического выражения:
 
.
 
Решение. На языке программирования Паскаль данное выражение для логических переменных a,b будет иметь следующий вид: (a or b)and not a. Введем третью логическую переменную c, которой в цикле будем присваивать значение выражения для различных значений операндов a и b. Для решения задачи может быть использована следующая программа:
 
Program logik1;
Var a,b,c: Boolean;
Begin
For a:=false to true do
            For b:=false to true do
            Begin
            c:= (a or b)and not a;
            writeln(a,' ',b,' ',c)
            end
end.
 
Запустив программу, получим следующий результат:
 
FALSE FALSE FALSE
FALSE TRUE TRUE
TRUE FALSE FALSE
TRUE TRUE FALSE
 
На экране отобразились значения логических переменных «истина» — TRUE и «ложь» — FALSE. В этой таблице первый столбец соответствует значениям переменной a, второй и третий соответственно переменным b, c.
 
Задачи, подобные предыдущей встречаются очень редко. Мы привели ее в качестве наглядного примера работы с логическими выражениями. Рассмотрим еще один пример.
 
Задача 2. С клавиатуры компьютера вводится последовательность целых чисел. Найти момент, когда введена подпоследовательность из 3 подряд идущих четных чисел и остановить выполнение программы, выдав сообщение «OK!».
 
Решение. Заведем две целочисленных переменных a – для вводимого числа, k – для подсчета количества подряд идущих четных чисел, а также логическую переменную f – флаг проверки четности числа, если число четное, то будем присваивать ему значение «истина», в противном случае «ложь». В цикле repeat – until будем последовательно вводить целые числа в переменную а, затем присвоим флагу f соответствующее значение. Если флаг будет иметь значение «истина», увеличим счетчик b, в противном случае обнулим его. Цикл закончится при условии, что счетчик станет равен 3. Программа решения этой задачи приведена ниже.
 
program logik2;
var a,b:integer;
 f:boolean;
begin
 b:=0;
 repeat
 readln(a);
 f:=a mod 2=0;
 if f then b:=b+1 else b:=0
 until b=3;
 writeln ('OK!')
end.
 
Результат работы программы следующий:
 
3
4
5
4
6
8
OK!
 
Copyright © 2005–2017 ХабЦНИТ ТОГУ Отправить письмо
Создание сайтов в Хабаровске