Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Логические элементы ЭВМ




Компьютер есть сложное техническое устройство, состоящее из простых элементов. Любой электронный логический блок компьютера состоит из вентилей (логических устройств, базовых логических схем), объединяемых по правилам и законам (аксиомам) булевой алгебры в схемы, модули.

Логический вентиль (вентиль) – это своего рода элемент, из которого состоят электронные узлы ЭВМ. Он работает по принципу крана, открывая или закрывая путь сигналам.

Логические схемы предназначены для реализации различных функций алгебры логики и реализуются с помощью трех базовых логических элементов (вентилей, логических схем, переключательных схем). Они воспроизводят функции полупроводниковых схем.

Логические функции отрицания, дизъюнкции и конъюнкции реализуют логические схемы, называемые инвертором, дизъюнктором и конъюнктором.

Логическая функция "инверсия", или отрицание, реализуется логической схемой (вентилем), называемой инвертор.

Принцип его работы можно условно описать следующим образом: если, например, "0" или "ложь" отождествить с тем, что на вход этого устройства скачкообразно поступило напряжение в 0 вольт, то на выходе получается 1 или "истина", которую можно также отождествить с тем, что на выходе снимается напряжение.

Аналогично, если предположить, что на входе инвертора будет напряжение 1 ("истина"), то на выходе инвертора будет сниматься 0 вольт, то есть "ложь" (схемы на рисунках 6.1 а, б).

 


Рис. 6.1. Принцип работы инвертора

Функцию отрицания можно условно отождествить с электрической схемой соединения в цепи с лампочкой (рис. 6.2), в которой замкнутая цепь соответствует 1 ("истина") или х = 1, а размыкание цепи соответствует 0 ("ложь") или х = 0.

 


Рис. 6.2. Электрический аналог схемы инвертора

Дизъюнкцию реализует логическое устройство (вентиль) называемое дизьюнктор (рис. 6.3):

 

 

 


Рис. 6.3. Принцип работы дизъюнктора

Дизъюнктор условно изображается схематически электрической цепью вида (рис. 6.4)

 

 


Рис. 6.4. Электрический аналог схемы дизъюнктора

Конъюнкцию реализует логическая схема (вентиль), называемая конъюнктором (рис. 6.5):

 



Рис. 6.5c. Принцип работы конъюнктора

Конъюнктор можно условно изобразить схематически электрической цепью вида (рис. 6.6):

 

Рис. 6.6. Электрический аналог схемы конъюнктора

 

Схематически инвертор, дизъюнктор и конъюнктор на логических схемах различных устройств можно изображать условно следующим образом (рис. 6.7). Есть и другие общепринятые формы условных обозначений.

 


Рис. 6.7. Условные обозначения вентилей (вариант)

Из указанных простейших базовых логических элементов собирают, конструируют сложные логические схемы ЭВМ, например, сумматоры, шифраторы, дешифраторы и др. Большие (БИС) и сверхбольшие (СБИС) интегральные схемы содержат в своем составе (на кристалле кремния площадью в несколько квадратных сантиметров) десятки тысяч вентилей. Это возможно еще и потому, что базовый набор логических схем (инвертор, конъюнктор, дизъюнктор) является функционально полным (любую логическую функцию можно представить через эти базовые вентили), представление логических констант в них одинаково (одинаковы электрические сигналы, представляющие 1 и 0) и различные схемы можно "соединять" и "вкладывать" друг в друга (осуществлять композицию и суперпозицию схем).

Таким способом конструируются более сложные узлы ЭВМ – ячейки памяти, регистры, шифраторы, дешифраторы, а также сложнейшие интегральные схемы.

Пример. В двоичной системе таблицу суммирования цифры x и цифры y и получения цифры z с учетом переноса p в следующий разряд можно изобразить таблицей вида:

x y z p
       
       
       
       

Эту таблицу можно интерпретировать как совместно изображаемую таблицу логических функций (предикатов) вида

 

Логический элемент, соответствующий этим функциям, называется одноразрядным сумматором и имеет следующую схему (обозначим ее как или – если мы хотим акцентировать именно выбранный, текущий i-й разряд) (рис. 6.8):

 


Рис. 6.8. Схема одноразрядного сумматора

Пример. "Черным ящиком" называется некоторое закрытое устройство (логическая, электрическая или иная схема), содержимое которого неизвестно и может быть определено (идентифицировано) только по отдельным проявлениям входа/выхода (значениям входных и выходных сигналов). В "черном ящике" находится некоторая логическая схема, которая в ответ на некоторую последовательность входных (для ящика) логических констант выдает последовательность логических констант, получаемых после выполнения логической схемы внутри "черного ящика". Определим логическую функцию внутри "черного ящика" (рис. 6.9), если операции выполняются с логическими константами для входных последовательностей (поразрядно).

 


Рис. 6.9. Схема "черного ящика 1"

Из анализа входных значений (входных сигналов) х, у и поразрядного сравнения логических констант в этих сообщениях с константами в значении z – результате выполнения функции в "черном ящике", видно, что подходит, например, функция вида

 

Действительно, в результате "поразрядного" сравнения сигналов (последовательностей значений "истина", "ложь") получаем следующие выражения (последовательности логических констант):

 

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

Эту задачу решают с помощью методов теоретической информатики (методов булевой алгебры).

Пример. Построим схему для логической функции

 

Схема, построенная для этой логической функции, приведена на рис. 6.10.

 

Рис. 6.10. Схема для функции

Пример. Определим логическую функцию, реализуемую логической схемой вида (рис. 6.11)

 


Рис. 6.11. Схема для искомой функции

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

.

 

 

7. Базовые алгоритмические структуры. Программирование на С++

 

" Алгоритм " является базовым основополагающим понятием информатики, а алгоритмизация (программирование) – основным разделом курса информатики.

Современное значение слова алгоритм во многом аналогично таким понятиям как рецепт, процесс, метод, способ, процедура, программа, но все-таки слово алгоритм имеет дополнительный смысловой оттенок.

Алгоритм — это не просто набор конечного числа правил, задающих последовательность выполнения операций для решения задачи. Помимо этого, он имеет 5 важных особенностей:

· конечность. Алгоритм всегда должен заканчиваться после выполнения конечного числа шагов;

· определенность. Каждый шаг алгоритма должен быть определен;

· ввод. Алгоритм имеет некоторое (возможно, равное нулю) число входных данных, т.е. величин, которые задаются до начала его работы или определяются динамически во время его работы;

· вывод. У алгоритма есть одно или несколько выходных данных, т.е. величин, имеющих вполне определенную связь с входными данными.

· эффективность. Алгоритм обычно считается эффективным, если все его операторы достаточно просты для того, чтобы их можно было точно выполнить в течение конечного промежутка времени.

Любой алгоритм ориентирован на некоторый общий метод решения класса задач и представляет собой формализованную запись метода, процедуры.

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

Для записи, исполнения, обмена и хранения алгоритмов существуют различные средства, языки, псевдокоды – блок-схемы, различные языки программирования и др.

В качестве языка описания алгоритмов будет использоваться далее язык программирования С++.

Порядок выполнения операций (старшинство операций – по убыванию) в языке С++:

1. Вычисление выражений в скобках;

2. Вычисление стандартных функций;

3. Умножение и деление (обозначаются "*" и "/");

4. Сложение и вычитание (обозначаются "+" и "–").

Рассмотрим базовые простые команды языка С++ [8 -9].

1. Команда описания главной функции:

< тип > main ()

{

}

2. Команда описания неглавной функции:

< тип > <имя функции > (< передаваемые параметры>)

{

}

 

2. Ввод – команда ввода в рассмотрение (в тело алгоритма) тех или иных входных параметров:

cin >>вводимый параметр;

3. Вывод – команда вывода на экран тех или иных входных или выходных параметров алгоритма:

cout<< выводимый параметр;

4. Присваивание – команда изменения текущего значения переменной вида:

<идентификатор> = <выражение>;

где <идентификатор> соответствует имени переменной, <выражение> – корректно записанное выражение. Знак "=" означает последовательное выполнение двух действий: определение текущего значения <выражения> и замена текущего значения переменной, имя которой задано <идентификатором>, на новое значение, равное значению <выражения>.

5. Символ начала блок а {.

6. Символ конца блока }.

7. Команда вставки комментариев в текст алгоритма имеет вид:

/* комментарий в несколько строк */

// комментарий в одну строку

Комментировать можно любой объект в программе. Обычно комментируют переменную, структуру данных, команду, группу команд.

Различают три базовые алгоритмические структуры: следование, ветвление, повторение.

1. Действие следования состоит из двух команд с указанной очередностью их выполнения и имеет вид:

<команда – предшественник>;<команда – преемник>.

2. Структура типа ветвления в полной форме состоит из некоторого условия, проверяемого на истинность при выполнении структуры, команды, выполняемой при выполнении проверяемого условия, и команды, выполняемой при невыполнении условия. Условный оператор имеет вид

if <условие> <команда, выполняемая при выполнении условия>; else <команда, выполняемая при невыполнении условия>;

Пример. Команда вида

if (х>y) (если текущее значение х больше текущего значения y) у = х; (текущее значение у полагаем равным текущему значению х) else x= y; (иначе (при х <= y) текущее значение x заменяем на текущее значение y)

Структура повторения (цикл) служит для компактной записи одного и того же набора команд, повторяемых для различных значений параметров команд.

Структура повторения типа "пока (while)" записывается в виде:

while <условие продолжения повторения> <повторяемая команда>;

или

while <условие продолжения повторения> { <повторяемая команда номер 1>; <повторяемая команда номер 2>;... <повторяемая команда номер N>; }Следующим оператором цикла в языке С++ является оператор for for(<присваивание начального значения счетчику цикла>; <условие проверки выхода из цикла>; <изменение счетчика цикла>){ < операторы цикла>}

Данный цикл выполняется по правилу: если условие повторения для текущих его параметров не выполнено, то повторение команд (тела) цикла на этом завершается; если же оно выполнено, то выполняется тело цикла и опять проверяется условие повторения команд тела цикла.

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

Функция (программа) имеет вид:

 

 

int main()

{

int i=1,n,summa=0;

 

cout<<"Input n= ";

cin>>n;

 

while (summa<=n)

{

summa=summa+i;

i++;

}

 

summa=summa+i;

 

cout<<" Summa = "<<summa;

 

return 0;

}

Пример. Найти наименьшее общее кратное любых двух целых чисел m, n, найти наибольший их делитель. Программа, содержащая все необходимые подключения к операционной системе Microsoft Visual C++ 2008, будет иметь вид:

 

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <conio.h>

 

 

int main()

{

int n,m,max,min,nok,nod=1,i;

 

cout<<"Enter n = ";

cin>>n;

 

cout<<" Enter m = ";

cin>>m;

 

max=n>m?n:m; // выделение наибольшего числа

min=n<m?n:m; // выделение наименьшего числа

 

// Поиск НОД

for(i=1;i<=min;i++)

// сравнение остатков от деления на ноль

if((m%i==0)&&(n%i==0))nod=i;

cout<<" NOD = "<<nod<<" ";

 

// Поиск НОK

for(i=max;i<=m*n;i++)

// сравнение на ноль остатков от деления

if((i%m==0)&&(i%n==0))

{

nok=i;

break; // оператор выхода из цикла

}

cout<<" NOK = "<<nok<<" ";

 

getch(); /* функция не закрытия экрана после окончания

программы */

return 0; // оператор возврата в вызывающую программу

}

 

Рассмотрим примеры алгоритмизации (программирования) задач на языке C++.

Пример. Составим алгоритм вычисления факториала заданного натурального числа n, то есть произведения n! = 1 • 2 • 3 • … • (n – 1)•n c использованием рекуррентной формулы n! = (n – 1)! • n. Опишем метод решения.

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <conio.h>

 

int main()

{

int n,i=1,fact=1;

 

cout<<"Enter n = ";

cin>>n;

 

for(i=1;i<=n;i++) fact=fact*i;

cout<<" n! = "<<fact<<" ";

while(i<=n)

{

fact=fact*i;

i++;

}

cout<<" n! = "<<fact<<" ";

 

getch();

return 0;

}




Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 862; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.092 сек.