Автор работы: Пользователь скрыл имя, 12 Апреля 2011 в 10:14, курсовая работа
ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ, АЛГЕБРА ЛОГИКИ, ЛОГИЧЕСКАЯ (БУЛЕВА) ПЕРЕМЕННАЯ, ЛОГИЧЕСКОЕ ОТРИЦАНИЕ, КОНЪЮНКЦИЯ (ЛОГИЧЕСКОЕ УМНОЖЕНИЕ), БЛОК-СХЕМА.
Введение………………………………………………………………………...5
1 Спецификация задачи ……………………………………………….………6
2 Математическая постановка задачи ………………………………………..7
3 Описание методов вычислительной математики,
используемых при решении….……………………………………………..8
4 Алгоритм решения задачи (блок-схема).…....……………………………..14
5.Текст программы на алгоритмическом языке. Описание программы……………………………………………….….………………….19
6.Результаты тестирования программы…………………………………...…22
Заключение …………………………………………………………………....23
Список использованной литературы…………………………………………24
Свойства элементарных функций алгебры логики
Из таблицы 2 видно, что элементарные функции типа отрицания, дизъюнкции, Шеффера, Пирса, импликации и т.д. находятся в определенной связи друг с другом.
Пусть x – некоторая логическая переменная. Тогда:
Дизъюнкция и конъюнкция обладают рядом свойств, аналогичных свойствам обычных арифметических операций сложения и умножения:
x1 + (x2 + x3) = (x1 + x2)+ x3, x1(x2 x3)=(x1 x2)x3;
x1 + x2 = x2 + x1, x1 x2 = x2 x1;
для конъюнкции относительно дизъюнкции
x1 &(x2 + x3)=(x1 & x2)+(x1 & x3);
для дизъюнкции относительно конъюнкции
x1 + x2x3 =(x1 + x2) & (x1 + x3).
Несложно установить правильность соотношений, известных как законы де Моргана:
Из законов де Моргана вытекают следствия:
с помощью
которых появляется возможность
выражать конъюнкцию через дизъюнкцию
и отрицание или дизъюнкцию через конъюнкцию
и отрицание.
Логические выражения и логические элементы
Логическое выражение состоит из логических операндов, соединенных с помощью логических операций. В качестве логических операндов могут выступать логические константы, переменные, а также отношения (сравнения) между двумя величинами. Логические выражения могут принимать одно из двух значений: ИСТИНА (TRUE или 1), ЛОЖЬ (FALSE или 0).
Существует несколько логических операций, все возможные значения которых описывают обычно с помощью таблиц истинности.
x1 | x2 | x1 Ù
x2
(И) |
x1 Ú
x2
(ИЛИ) |
(И-НЕ) |
(ИЛИ-НЕ) |
0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
Приоритет операций при вычислении значения логического выражения следующий (в порядке понижения):
При всей сложности устройства электронных блоков современных ЭВМ выполняемые ими действия осуществляются с помощью комбинаций относительно небольшого числа типовых логических узлов. Основные из них таковы:
Из этих узлов строятся интегральные микросхемы очень высокого уровня интеграции: микропроцессоры, модули ОЗУ, контроллеры внешних устройств и т.д.
Сами
указанные узлы собираются из основных
базовых логических элементов – как
простейших, реализующих логические функции
И, ИЛИ, НЕ, И-НЕ, ИЛИ-НЕ и им подобных (элементы
комбинационной логики, для которых значение
функции на выходе однозначно определяется
комбинацией входных переменных в данный
момент времени), так и более сложных, таких
как триггеры (элементы последовательной
логики, для которых значение функции
зависит не только от текущих значений
переменных на входе, но и от их предшествующих
значений).
4.Алгоритм решения задачи (блок-схема)
Описание
алгоритма
В начале алгоритма осуществляется ввод двоичных чисел a и b. Тип вводимых чисел – строка символов. В третьем блоке проверяется наличие введенного числа а, если число не введено, то осуществляется выход из программы. Затем осуществляется проверка на количество разрядов введенных чисел. Если оно меньше 50, то необходимо ввести числа заново. В 5-7 блоках проверяются числа а и b. В составе чисел могут быть только 1 или 0.
В блоках 8-15 осуществляется заполнение массивов а1 и b1. Единице соответствует значение true, а нулю – false. В блоках 17-18 происходят логическое отрицание и логическое умножение введенных чисел.
С 19 по 32 блоки осуществляют вывод исходных чисел и результатов вычислений.
Блоки
34-36 предлагают повторить ввод чисел
или закончить выполнение алгоритма.
5 Текст программы на алгоритмическом языке. Описание программы
Uses crt;
Type massiv=array [1..50] of Boolean;
Var
op:byte;
i,j,h,bin:integer;
a,b:string; {двоичные числа}
q: string;
a1,b1:massiv; {введенные двоичные числа в логич. выражении}
aOtr,bOtr:massiv; {логич. отрицание двоичных чисел}
ab:massiv;
{логич. уммножение двоичных
Label m1;
begin
m1:
clrscr;
writeln('Введите два двоичных числа (50 разрядов)');
readln(a);
readln(b);
if a='' then exit; {проверка на наличие числа}
if (length(a)<50) or (length(b)<50) then
begin {проверка на количество разрядов в числе}
writeln('Количество разрядов
readkey; goto m1;
end;
for i:=1 to 50 do
begin {проверка на содержимое числа}
if ((copy(a,i,1)='1') or (copy(a,i,1)='0')) and
((copy(b,i,1)='1') or (copy(b,i,1)='0'))
then else begin
writeln('Код числа должен
readkey; goto m1;
end;
end;
a:=copy(a,1,50); {отсечение лишних разрядов}
b:=copy(b,1,50);
for i:=1 to 50 do begin {преобразование строки в массив логич. значений}
val(a[i],bin,h);
if bin=1 then a1[i]:=true else a1[i]:=false;
val(b[i],bin,h);
if bin=1 then b1[i]:=true else b1[i]:=false;
end;
for i:=1 to 50 do begin {логич. отрицание и умножение чисел}
aOtr[i]:=not(a1[i]); {логич. отрицание чисел}
bOtr[i]:=not(b1[i]);
ab[i]:=a1[i] and b1[i]; {логич. умножение чисел}
end;
clrscr;
writeln(' Результаты вычислений ');
writeln;
writeln('Первое число: ', a);
writeln('Его логическое отрицание: ');
write(' ');
for i:=1 to 50 do if aOtr[i] then write('1') else write('0');
writeln; writeln;
writeln('Второе число: ', b);
writeln('Его логическое отрицание: ');
write(' ');
for i:=1 to 50 do if bOtr[i] then write('1') else write('0');
writeln; writeln;
writeln('Логическое умножение чисел: ');
writeln(' ', a);
writeln('* ');
writeln(' ', b);
writeln(' ------------------------------
write(' ');
for i:=1 to 50 do
if ab[i] then write('1') else write('0');
writeln; writeln;
writeln('Повторить ввод числа? y/n');
readln(q);
if q='y' then goto
m1;
end.
Описание программы.
Данная программа работает по описанному выше алгоритму. Все вводимые числа представлены в виде строковых переменных. В программе предусмотрен контроль вводимых чисел. Все числа должны состоять только из 1 или 0 и содержать не менее 50 разрядов. Если число содержит более 50 разрядов, то лишние разряды отсекаются.
После проверок составляются массивы логических элементов а1, b1 для чисел а и b, над которыми затем проводятся логические вычисления.
В конце программы предусмотрен запрос на повторный вводи чисел. Иначе программа будет завершена.
6 Результаты тестирования программы
Введите два двоичных числа (50 разрядов)
111111111111111111111111111111
000000000000000000000000000000
Код числа должен
содержать только 0 или 1
Введите два двоичных числа (50 разрядов)