Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
02.05.2014
Размер:
102.91 Кб
Скачать

Министерство образования Российской Федерации

Уфимский государственный авиационный технический университет

Факультет ИРТ: Информатика и робототехника

Кафедра ПСИ: Проектирование систем информатики

Учебная дисциплина:

МЛТА: Математическая логика и теория алгоритмов

РГР: Расчетно-графическая работа

Общая тема:

ПАРАЛЛЕЛЬНЫЕ ЛОГИКО-АЛГОРИТМИЧЕСКИЕ СИСТЕМЫ

(алгоритмы и логика, аппаратная и программная реализация)

Часть 6 булевы и временные булевы переменные и высказывания

Пояснительная записка

5033.7220.0000-ПЗ

Направление подготовки:

654600: ИВТ: Информатика и вычислительная техника

Специальность:

230100: Ивт: Информатика и вычислительная техника

Курс обучения:

Учебная группа:

Работу выполнила

студентка

Зачетная книжка №

Вариант задания: A570

Работу принял

должность

2007

Исходные условия

Целью данной работы является освоение обозначения, описания и интерпретации булевых и временных булевых переменных.

Общий порядок выполнения работы:

ознакомление с очередным разделом описания работы;

выполнение очередных заданий на подготовку примеров простых и временных булевых переменных и высказываний;

ответы на очередные вопросы.

Задание 0.1 Примеры словесных высказываний:

из области математики:

Квадрат гипотенузы равен сумме квадратов катетов.

Шестью восемь сорок восемь.

Матрица – прямоугольная таблица чисел.

из области техники:

Принтер – устройство печати цифровой информации

Сканер создает цифровую копию изображения объекта

Монитор преобразует цифровую и аналоговую информацию в виде изображения

из других областей

В ноябре тридцать дней.

Нервные клетки не восстанавливаются.

Не все йогурты одинаково полезны.

Задание 0.2 Примеры высказываний в арифметической форме записи:

Привести 5 примеров высказываний, представленных в арифметической форме записи (и в словесной формулировке).

6*8=48; Шестью восемь сорок восемь

2+7=9; Два плюс семь равно девяти.

15-5=0; Пятнадцать минус пять равно десяти.

202 + 152 = 625; Двадцать в квадрате плюс пятнадцать в квадрате равно шестистам двадцати пяти.

60/15=4; Шестьдесят делить на пятнадцать равно четырем.

Задание 0.3 Примеры высказываний:

Представить 5 примеров утвердительных высказываний

s10 = (Две пятых – это не натуральное число.)

s10 = 1: И : T – это истина, (всегда) истинное высказывание.

s10 = c1 = 1

s20 =(Слоны умеют летать.)

s20 = 0: Л: F – ложь, (всегда) ложное высказывание.

s20 = c0 = 0

s30 = (Плутон – это не планета) – истинное высказывание

s30 = c1 = 1

// по современным представлениям.

s40 = (Плутон – это самая отдаленная от Солнца планета.) – ложное высказывание

s40 = c0 = 0

s50 = (Солнце – это звезда) – истинное высказывание

s50 = c1 = 1

Задание 0.4 Примеры высказываний:

Представить 5 примеров отрицательных высказываний

s70 = (Он не спит.) //но не всегда.

s70 = var = 0, 1: И, Л: T, F – переменное высказывание.

s80 = (Студент не учится) //каникулы после сессии

s80 = var = 0, 1: И, Л: T, F – переменное высказывание.

s90 = ( 52 != 20) = (25  20) = (двадцать пять не равно двадцати):

s90 = c1 = 1: И: T = Const – постоянное высказывание.

s100 = (Лампа не горит.) //но можно включить

s100 = var = 0, 1: И, Л: T, F – переменное высказывание.

s110 = (я не получила зачет) //но получу

s110 = var = 0, 1: И, Л: T, F – переменное высказывание.

Задание 0.5 Примеры высказывательных форм:

Представить 5 примеров выскзывательных форм

  1. s(x) = (x2 – 6x +5 < 0) = (икс квадрат минус икс меньше нуля):

множеством истинности является интервал (1;5); остальные точки ложные высказывания.

  1. s1(х) = (х – 5 > 0) = (икс минус пять больше нуля)

s2(х) = (х + 4 < 0) = (икс плюс четыре меньше нуля)

s1(х) + s2(х),

Множеством истинности s1(х) + s2(х) является объединение промежутков ( - ∞;-4) U (5; +∞)

  1. s1(х) = (х – 5 > 0) = (икс минус пять больше нуля)

множество истинности – интервал (5; +∞)

  1. s1(х) = (х – 2 > 0) = (икс минус два больше нуля)

s2(х) = (х + 2 ≥ 0) = (икс плюс два больше или равно нулю)

Для импликации s1(х)  s2(х) (“если х – 2 > 0, то х + 2 ≥ 0”) множество истинности состоит из всех действительных чисел.

5) s(x) = (x2 + y2 >625) = (икс квадрат плюс игрек квадрат равно шестистам двадцати пяти):

окружность радиусом 25 с центром в нуле на плоскости – представляет класс истинных высказываний, например:

s = (202 + 152 = 625 > 262 + 62 = 712 > 625) = 1

s = (262 + 62 = 712 > 625) = 1

остальные точки – ложные высказывания:

y

s = (182 + 102 = 424 > 625) = 0

x

+

s(x) = (x2 + y2 > 625)

Задание 0.6 Примеры программных логических переменных.

Примеры описания и применения логических переменных на языке программирования Pascal.

Для хранения результата проверки условия введен логический тип данных – Boolean. Переменные такого типа называются булевскими переменными.

1) Булевские переменные в программе

Program Boollean:

var X: integer;

Bol: Boolean;

begin

X:= 7;

Bol:= X > 6; {Это утверждение истинно}

writeln(Bol);

Bol:= X < 0; {Это утверждение ложно}

writeln(Bol);

readln

end.

Результаты работы программы:

Bol=TRUE

OnBol=FALSE

Bol and OnBol=FALSE

Bol and OnBol=TRUE

not Bol=FALSE

2) Составление логических выражений

Program Bollean2;

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

Составим выражения, определяющие, является ли человек гражданином РФ, имеющим свой личный автомобиль.}

var

Avtomobil:Boolean; {Определяет имеет ли человек свой автомобиль}

Grazhdanin_RF:Boolean; { Определяет, является ли он гражданином РФ }

Rezult:Boolean; {Определяет результат}

begin

Avtomobil:=True; {Пусть наш человек имеет свой автомобиль}

Grazhdanin_RF:=True; {Пусть человек – гражданин РФ}

Rezult:= Avtomobil and Grazhdanin_RF;

writeln(‘Гражданин РФ? - ‘,Rezult);

Avtomobil:=False; {Пусть наш человек имеет свой автомобиль}

Rezult:= Avtomobil and Grazhdanin_RF;

writeln(‘Человек – гражданин, имеющий свой личный автомобиль? -‘,Rezult);

readln

end.

При выполнении программы имеем на экране следующее:

Человек – гражданин, имеющий свой личный автомобиль? - TRUE

Человек – гражданин, имеющий свой личный автомобиль? – FALSE

5) Также в программе можно определить 4 логических переменных, которые содержат, например, следующую информацию о людях:

Married – «истина», если человек студент (студентка),

Blond – «истина», если человека – женщина,

Male – «истина», если человек –очник,

Employed – «истина», если человек работает.

Можно составить логические выражения, с помощью которых можно определить, является ли человек:

1) студентка женщина ;

2) студент мужчина;

3) мужчина заочник;

4) безработным студентом заочником;

5) либо не очник, либо безработным, либо и тем и другим.

Примеры описания и применения логических переменных на языке программирования C++.

В языке С в операциях сравнения и логических операциях в качестве операндов и результатов операций используются значения истина (true) и ЛОЖЬ (false). В языке С++ значение истина представляется любым числом, отличным от нуля. Значение ложь представляется нулем. Результатом операции сравнения или логической операции является истина (true, 1) и ложь (false, 0). Помимо этого дополнительно определен тип данных _Bool, переменные которого могут принимать значение только 0 или 1.

1) Функция xor() возвращает результат операции «исключающее ИЛИ», операндами служат аргументы функции. Результатом операции «исключающее ИЛИ» является истина, если один из операндов (но не оба) имеют значение истина.

# include <stdio.h>

int xor(int a, int b);

int main(void)

{ printf("%d", xor(1, 0));

printf("%d", xor(1, 1));

printf("%d", xor(0, 1));

printf("%d", xor(0, 0));

return 0;

}

int xor(int a, int b)

{

return (a || b) && !(a && b);

}

2) В этой программе демонстрируется простое использование оператора И(&&). Программа определяет , находится ли число в определенном диапазоне – в данном случае диапазон включает в себя числа лет пожилого возраста от 65 до 100 лет

#include<iostream>

using namespace std;

int main()

{int n;

cout<<”Enter an age and press ENTER”;

cin >>n;

if (n<65&&n<100)

cout<<”Subject is a elderly.”;

else cout<<”Subject is not a elderly.”;

return 0;

}

3)Определение того, является ли число простым.

#include<iostream.h>

#include<math.h>

int main ()

{

int n; //проверяемое число

int i; //счетчик циклов

int is_prime; //булев флаг

//Предложем , что число является простым , пока не докажем обратное

is_prime = true;

//Считать число с клавиатуры

cout<<”Enter a number: ”;

cin>>n;

//проверка числа , выполняя проверку делимости

//на все целые числа от 2 to sqrt(n)

i=2;

while (i<=sqrt (static_cast<duble>(n))){

//

if(n%i ==0) //Если значение переменной i

//случайно делится на n

is_prime =false; //n не является

//простым числом

i++; //прибавить к значению пременной 1

}

//напечатать результаты

if(is_prime)

cout<<”Number is prime”;

else cout<<”Number is not prime “;

return 0;

4) Программа для игры в «магическое число» с использованием оператора else. В этой версии выводится дополнительное сообщение в случае ложного ответа.

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int magic; /* магическое число */

int guess; /* попытка игрока */

magic = rand(); /* генерация магического числа */

printf("Угадай магическое число: ");

scanf("%d", &guess);

if(guess == magic) printf("**Верно**");

else printf("**Неверно**");

return 0;

}

5) Цикл while общее назначение цикла – это выполнение счета до числа – при этом выполняя какие-то действия определенное число раз. Например: выполнять действия пока значение переменной i не станет равно 9 включительно

i=1;

while(i<=9){

cout<<i<<” “;

i++;

}

Если управляющее выражение b равно 0, то его результат представляет значение ложь и выполняется оператор else. В противном случае (b не равно 0) результат представляет значение истина и выполняется деление чисел.

6) В цикле for выполняется операции возведения переменной x в квадрат и вызова функции printf(). Операции выполняются, пока х не примет значение 65, то есть условие х!=65 принимает значение истина. Если оно хотя бы один раз примет значение ложь, то программа выходит из цикла.

for(x=100; x != 65; x -= 5)

{

z=x*x;

printf("Квадрат %d равен %d\n", x, z);

}

Задание 0.1 Примеры временных высказываний:

Соседние файлы в папке Расчетно-графическая работа1