Логическое отрицание и умножение

Автор работы: Пользователь скрыл имя, 12 Апреля 2011 в 10:14, курсовая работа

Краткое описание

ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ, АЛГЕБРА ЛОГИКИ, ЛОГИЧЕСКАЯ (БУЛЕВА) ПЕРЕМЕННАЯ, ЛОГИЧЕСКОЕ ОТРИЦАНИЕ, КОНЪЮНКЦИЯ (ЛОГИЧЕСКОЕ УМНОЖЕНИЕ), БЛОК-СХЕМА.

Содержание работы

Введение………………………………………………………………………...5
1 Спецификация задачи ……………………………………………….………6
2 Математическая постановка задачи ………………………………………..7
3 Описание методов вычислительной математики,
используемых при решении….……………………………………………..8
4 Алгоритм решения задачи (блок-схема).…....……………………………..14
5.Текст программы на алгоритмическом языке. Описание программы……………………………………………….….………………….19
6.Результаты тестирования программы…………………………………...…22
Заключение …………………………………………………………………....23
Список использованной литературы…………………………………………24

Содержимое работы - 1 файл

Курсовая Логическое отрицание и умножение.doc

— 165.50 Кб (Скачать файл)

    Свойства  элементарных функций алгебры логики

      Из  таблицы 2 видно, что элементарные функции  типа отрицания, дизъюнкции, Шеффера, Пирса, импликации и т.д. находятся в определенной связи друг с другом.

      Пусть x – некоторая логическая переменная. Тогда:

    1. , что означает возможность исключения из логического выражения всех членов, имеющих двойное отрицание, заменив их исходной величиной;
    2. - правила подобных преобразований позволяют сокращать длину логических выражений;

      Дизъюнкция  и конъюнкция обладают рядом свойств, аналогичных свойствам обычных арифметических операций сложения и умножения:

      1. свойство ассоциативности (сочетательный закон):

      x1 + (x2 + x3) = (x1 + x2)+ x3,     x1(x2 x3)=(x1 x2)x3;

      1. свойство коммутативности (переместительный закон):

      x1 +  x2 = x2 + x1,      x1 x2 =  x2 x1;

      1. свойство дистрибутивности (распределительный закон):

            для конъюнкции относительно дизъюнкции

      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
 

      Приоритет операций при вычислении значения логического  выражения следующий (в порядке понижения):

      1. отрицание (NOT, НЕ);
      2. конъюнкция (AND, И);
      3. дизъюнкция и исключающее ИЛИ (OR, ИЛИ; XOR, ИСКЛЮЧАЮЩЕЕ ИЛИ);
      4. операции отношения (равно, не равно, больше, меньше, больше или равно, меньше или равно).

      При всей сложности устройства электронных блоков современных ЭВМ выполняемые ими действия осуществляются с помощью комбинаций относительно небольшого числа типовых логических узлов. Основные из них таковы:

      • регистры;
      • комбинационные преобразователи кодов (шифратор, дешифратор, мультиплексор и др.);
      • счетчики (кольцевой, синхронный, асинхронный и др.);
      • арифметико-логические узлы (сумматор, узел сравнения и др.).

      Из  этих узлов строятся интегральные микросхемы очень высокого уровня интеграции: микропроцессоры, модули ОЗУ, контроллеры  внешних устройств и т.д.

      Сами  указанные узлы собираются из основных базовых логических элементов – как простейших, реализующих логические функции И, ИЛИ, НЕ, И-НЕ, ИЛИ-НЕ и им подобных (элементы комбинационной логики, для которых значение функции на выходе однозначно определяется комбинацией входных переменных в данный момент времени), так и более сложных, таких как триггеры (элементы последовательной логики, для которых значение функции зависит не только от текущих значений переменных на входе, но и от их предшествующих значений). 

 

    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('Количество разрядов менее  50');

      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('Код числа должен содержать  только 0 или 1');

           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 разрядов)

111111111111111111111111111111111111111111111111111111111111111111111111

000000000000000000000000000000000000020000000000000000000000000000000000

Код числа должен содержать только 0 или 1 
 

Введите два двоичных числа (50 разрядов)

Информация о работе Логическое отрицание и умножение