Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_П.doc
Скачиваний:
3
Добавлен:
31.08.2019
Размер:
3.43 Mб
Скачать

4. Программные средства реализации информационных процессов

Представление вычислительного устройства схемой, состоящей из логических элементов наиболее исследованный вид структурной реализации вычислительных и информационных процессов. Другой вид - реализация программой. Программа вычисляет (реализует) логические функции f(x1, ..., xn) = y, если для любого двоичного набора    1,..., n ) при начальном состоянии элементов памяти x1 = 1 , x2 = 2 ,..., xn = n программа через конечное число шагов останавливается и в ячейке y лежит величина f(1, 2, ..., n ). Если под сложностью схемы, реализующей автомат, обычно понимается число элементов схемы, то под сложностью программ можно понимать:

  • число команд в тексте программы;

  • объем промежуточной памяти;

  • время вычисления программы, которое характеризуется двумя величинами:

  1. Средним временем

  2. Максимальным временем ,

где сумма и максимум берутся по всем 2 наборам, а p - время работы программы на одном наборе .

Рассмотрим 2 типа программ: операторные и бинарные. Операторная программа не содержит условных переходов, порядок ее команд в точности соответствует нумерации элементов в схеме, а система команд соответствует базису схемы. Элементы схемы нумеруются числами 1,..., n таким образом, чтобы на любом пути от входа к выходу номера элементов возрастали. При этом номер 1 получит один из входных элементов, а номер n - выходной элемент.

Пусть элемент схемы ei реализует функцию i и к его входам присоединены выходы элементов ej1 , e j2 , ..., e jm ( некоторые из них, возможно, являются входами схемы ), тогда выход такого элемента можно записать : ai = i ( ej1 , e j2, ..., e jm ) при i  n, а выход схемы может быть записан: y = i( ej1, e j2, ..., e jm ) при i = n. Такая программа будет реализовывать работу заданной схемы. Проблема синтеза операторных программ сводится к проблеме синтеза схем, то есть к вопросам функциональной полноты и минимизации схем. Поскольку операторная программа не содержит условных переходов, то время ее выполнения на любом наборе одно и то же, отсюда t max = t ср.

Бинарные программы это программы, состоящие из команд типа y =  ;  = {0, 1} и условных переходов.

Замечание. Бинарные программы обладают двумя достоинствами по сравнению с операторными:

  1. Отсутствием промежуточной памяти в процессе работы программы. Это позволяет реализовать бинарную программу на постоянных элементах памяти.

  2. Более высоким быстродействием.

Пример. Составить для функции f = ( x1 v x3 ) & (x5 &  x4 v x2) бинарную и операторную программы.

Решение. Воспользуемся языком С++, будем иметь код:

void main()

{

bool f=0, x1,x2,x3,x4,x5 ; // описание типа переменных

cout<<” Enter x1,x2,x3,x4\n”; // вывод на экран текста

cin>> x1>>x2>>x3>>x4>>x5; // ввод переменных

switch (x1) // оператор выбора

{

case 0: switch(x3)

{

case 0: f=1;

case 1: f=0;

}

case 1: f=1;

}

switch ( f)

{

case 1: switch ( x5)

{

case 0: switch (x2)

{

case 0: f= 0;

case 1: f= 1;

}

case 1: switch (x4)

{

case 0: f= 1;

case 1: switch (x2)

{

case 0: f= 0;

case 1: f= 1;

}

}

}

case 0: f=0;

}

default: f=0;

cout>> f ;

}

Операторная программа пишется в базисе {&,}. Для этого перепишем заданную функцию, используя формулы де Моргана.

f = (x1 & x3 ) & ( ( x5 & x4 ) & x2 )

void main()

{

bool f, x1,x2,x3,x4,x5 ; // описание типа переменных

bool a,b,c;

cout<<” Enter x1,x2,x3,x4\n”; // вывод на экран текста

cin>> x1>>x2>>x3>>x4>>x5; // ввод переменных

a= 1-x1; { }

b= a  x3; { }

b= 1 - b; { }

a= 1 - x4; { }

c= a  x5 ; { }

c= 1 - c ; { }

a= 1 - x2 ; { }

c= c  a; { }

c= 1 - c; { }

f= b c;

cout<<f;

}