Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Применение булевых функций к теории релейно-контактных схем



Булевы функции широко применяются при описании работы дискретных управляющих систем (контактных схем, схем из функциональных элементов, логических сетей и т.д.), при исследовании некоторых электрических цепей, так называемых релейно-контактных схем. Идея применения. Под релейно-контактной схемой понимается Устройство из проводников и двухпозиционных контактов. Оно может быть предназначено, например, для соединения (или разъединения) полюсов источника тока с некоторым потребителем. Контакты релейно-контактной схемы могут быть двух типов: замыкающие и размыкающие. Каждый контакт подключен к некоторому реле (переключателю). К одному реле может быть подключено несколько контактов — как замыкающих, так и размыкающих. Технически реле представляет собой катушку с металлическим сердечником (магнитопроводом), вблизи которого находится соответствующий контакт.

Когда через катушку пропускается электрический ток, металлический сердечник намагничивается и замыкает все находящиеся при нем замыкающие контакты. Одновременно все размыкающие контакты, относящиеся к данному реле, размыкаются. Поскольку замыкающие контакты при отсутствии в реле электрического тока разомкнуты, то они называются также нормально разомкнутыми. Аналогично, размыкающие контакты называются также нормально замкнутыми. При обесточивании обмоток реле (т.е. когда реле отключается) все замыкающие контакты снова размыкаются, а все размыкающие, замыкаются. Каждому реле ставится в соответствие своя булева переменная x1 или x2,… или xn, которая принимает значение 1, когда реле срабатывает, и принимает значение 0 при отключении реле. На чертеже все замыкающие контакты, подключенные к реле x, обозначаются тем же символом x, а все размыкающие контакты, подключенные к этому реле, обозначаются отрицанием x’. Это означает, что при срабатывании реле все его замыкающие контакты х проводят ток и им сопоставляется значение 1, а все размыкающие контакты не проводят электрический ток и им сопоставляется значение 0. При отключенном реле создается противоположная ситуация: все его замыкающие контакты разомкнуты, т. е. в этот момент им сопоставляется (переменная x принимает) значение 0, а все его размыкающие контакты x’ замкнуты, т. е. в этот момент им сопоставляется (другими словами, переменная принимает) значение 1.

Всей релейно-контактной схеме тогда ставится в соответствие булева переменная y, зависящая от булевых переменных x1,x2,…xn, сопоставленным тем реле, которые участвуют в схеме. Если при данном наборе состояний реле x1,x2,…xn (некоторые из этих реле находятся в рабочем состоянии под током, остальные отключены, т.е. "обесточены") вся релейно-контактная схема проводит электрический ток, то переменной y ставится в соответствие (другими словами, переменная y принимает) значение 1. Если же при этом наборе состояний реле x1,x2,…xn схема не проводит электрический ток, то считаем, что переменная у принимает значение 0. Поскольку каждый набор состояний реле x1,x2,…xn характеризуется набором, составленным из нулей и единиц и имеющим длину n, то данная релейно-контактная схема определяет некоторое правило, по которому каждому такому набору длины, составленному из нулей и единиц, сопоставляется либо 0, либо 1. Таким образом, каждая релейно-контактная схема, в которой занято n независимых реле (контактов в ней может быть n или больше), определяет некоторую булеву функцию y от n аргументов. Она принимает значение 1 на тех и только тех наборах значений аргументов x1,x2,…xn, которые соответствуют тем состояниям реле x1,x2,…xn, при которых данная схема проводит электрический ток. Такая булева функция y= f(x1,x2,…xn)называется функцией проводимости данной релейно-контактной схемы. Таким образом, теория булевых функций предоставляет математические модели реальных физических релейно-контактных схем.

Рассмотрим некоторые релейно-контактные схемы и найдем их функции проводимости. Первая схема состоит из двух последовательно соединенных контактов x и y, т. е. контактов, связанных с двумя независимыми реле x и y, каждое из которых срабатывает независимо от другого:

Ясно, что данная схема проводит электрический ток тогда и только тогда, когда оба контакта x и y замкнуты, т. е. только тогда, когда оба переменных x и y принимают значение 1. Булева функция от двух аргументов x и y, удовлетворяющая такому условию, нам хорошо известна. Это конъюнкция. Таким образом, функцией проводимости релейно-контактной схемы, состоящей из двух последовательно соединенных контактов x и y, является конъюнкция x*y. Говорят, что последовательное соединение двух контактов реализует конъюнкцию соответствующих этим контактам булевых переменных.

Вторая релейно-контактная схема состоит из двух параллельно соединенных контактов x и y

Ясно, что эта схема проводит электрический ток в том и только в том случае, когда по меньшей мере один из контактов (x или y) замкнут, т.е. лишь в случае, когда хотя бы одна из булевых переменных (x или y) принимает значение 1. Булева функция от двух аргументов x и y, удовлетворяющая этому условию, также хорошо нам известна. Это, дизъюнкция. Таким образом, функцией проводимости релейно-контактной схемы, состоящей из двух параллельно соединенных контактов x и y, является дизъюнкция. Говорят, что параллельное соединение двух контактов реализует дизъюнкцию соответствующих этим контактам булевых переменных.

Две основные задачи теории релейно-контактных схем

Составление релейно-контактных схем с заданными условиями работы называется задачей синтеза релейно-контактных схем и является первой важной задачей, состоящей в том, что требуется построить схему, которая проводила бы электрический ток лишь при вполне определенных задаваемых условиях.

Естественно было бы выбирать для каждой булевой функции самую простую или одну из самых простых реализующих ее релейно-контактных схем. Поэтому упрощение релейно-контактных схем называется задачей анализа таких схем и является второй важной задачей теории релейно-контактных схем. Две релейно-контактные схемы, составленные из одних и тех же реле, называются равносильными, если одна из них проводит ток тогда и только тогда, когда другая схема проводит ток. Другими словами, две схемы, составленные из одних и тех же реле, равносильны, если они обладают одинаковыми функциями проводимости, зависящими от одних и тех же переменных. Из двух равносильных схем более простой считается та, которая содержит меньшее число контактов. Задача упрощения релейно-контактной схемы состоит в нахождении более простой равносильной ей схемы. Обычно она решается следующим образом. Для данной релейно-контактной схемы записывается ее функция проводимости. Затем эта функция с помощью тождественных преобразований, использующих известные свойства булевых функций, упрощается, т.е. сводится к функции, имеющей меньшее число вхождений переменных, нежели исходная функция. Наконец строится релейно-контактная схема, отвечающая упрощенной булевой функции.
44. Программирование графики в среде визуального программирования Делфи. Компоненты вывода и построения графических изображений.

Графический режим работы экрана – это основной режим работы экрана. В этом режиме экран делится на отдельные объекты – пиксели. Пиксели образованы из пятен люминофора трех основных цветов – красного, зеленого и синего. Пятна расположены так близко, что цвета сливаются и образуют единый цвет. Отношение интенсивности определяет этот цвет. Общий уровень интенсивности определяет яркость пикселя. Современные мониторы позволяют воспроизводить миллионы цветов и оттенков. Но при программировании в Pascal мы пользуемся 16 основными цветами. Разрешение экрана – это количество пикселей по горизонтали и по вертикали. Записывается разрешение в виде двух цифр – AхB. Наиболее распространенное разрешение – 640х480 – режим VGA. Но существуют и другие режимы разрешения экрана. Для обеспечения работы с экраном компьютер имеет специальные устройства: видеоадаптер, видеоконтроллер и т.д., которые обычно реализуются в виде отдельной видеокарты, Для работы с этими устройствами используются специальные видеодрайверы монитора(драйверы – это специальные программы, которые обеспечивают взаимодействие с внешними устройствами). Для работы в графическом режиме в Турбо Паскаль создан специальный модуль процедур и функций GRAPH, поэтому этот модуль должен быть подключен в области USES: uses GRAPH

Необходимо установить графический драйвер, который устанавливается специальной процедурой Initgraph(N,K,’путь к драйверу’) N и K-это параметры-переменные целого типа, им присваиваются некоторые значения, которые определяют графический драйвер. Графический драйвер-это файл, который имеет расширение bgi.

Кроме того, необходимо установить и путь к библиотеке модуля graph, который называется graph.tpu. Путь к этому каталогу устанавливается в среде Турбо Паскаль (пункт меню Options→Directories).

Графическая система координат

Каждый пиксель имеет в этой системе координат 2 координаты (х,у)

PutPixel(X,Y,C)- установить цвет отдельного пикселя.X,Y-координаты, С-цвет. Цвет можно указать либо константой, либо числовой константой.

Т.о для построения графических изображений в модуле GRAPH есть 2 варианта: - строить по точкам; - использовать графические примитивы(отрезки, прямоугольники, окружности, эллипсы).

Для построения отрезков используются процедуры: Line(X1,Y1,X2,Y2), гдеX1,Y1 – координаты начала, X2,Y2 – координаты конца линии. Линия вычерчивается текущим стилем и текущим цветом. LineTo(X,Y) – строит линию из точки текущего положения указателя в точку с координатами X,Y,(положение текущей точки определяется невидимымграфическим указателем, аналогичным курсору) и LineRel(dX,dY) – имеет 2 параметра, которые определяют проекции на оси X и Y данного отрезка. Наличие этих трех операторов отражает три разных подхода к построению ломаных линий, с помощью которых могут быть изображены различные фигуры. С помощью Line можно строить, если известны координаты точек, которые образуют вершины ломаной. Поэтому лучше иметь 2 массива (Х) и (У). LineTo используется в так называемой черепаховой графике или в случае, если следующие точки ломаной появляются не сразу. Наилучшим вариантом использования черепаховой графики – использование LineRel (черепаховая графика – метод построения с помощью робота-черепашки, который, перемещаясь по экрану оставляет за собой след).

Понятие холста

Многие компоненты в Delphi имеют свойство Canvas (канва, холст), представляющее собой область компонента, на которой можно рисовать или отображать готовые изображения. Это свойство имеют формы, графические компоненты Image, PaintBox и многие другие.

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

Свойства и методы класса TCanvas

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

Класс Карандаш (TPen). Карандаш – свойство Pen класса TCanvas, определяется следующими основными свойствами:

- Color – цвет карандаша;

- Style – стиль линии определяет, будет ли она сплошной или пунктирной. Возможные значения: psSolid (сплошная линия); psDash (пунктирная) и другие.

- Width – толщина линии в пикселях.

У канвы имеется свойство PenPos типа TPoint. Это свойство определяет в координатах канвы тукущую позицию пера. Перемещение пера без прорисовки линии, т.е. изменение PenPos, производится методом канвы MoveTo(X,Y). Здесь (X,Y) – координаты точки, в которую перемещается перо. Эта текущая точка становится исходной, от которой методом LineTo(X,Y) можно провести линию в точку с координатами (X,Y). При этом текущая точка перемещается в конечную точку линии и новый вызов LineTo будет проводить точку из этой новой текущей точки.

Класс Кисть (TBrush). Кисть – свойство Brush класса TCanvas, предназначена для заполнения сплошных областей клиентской части формы в соответствии с заданным шаблоном. Кисть имеет свойства Color и Style, совпадающие с аналогичными свойствами класса TPen, в класс TBrush добавлено новое свойство Bitmap, которое позволяет заполнять область не только сплошным цветом или пунктирными линиями, но и заранее подготовленными точечным изображением.

Класс Шрифт (TFont). Шрифт – свойство Font класса TCanvas, служит оболочкой ресурса Windows, определяющего текущий шрифт. Свойства:

- Color – цвет;

- Height – высота шрифта в пикселях;

- Name – название шрифта, под которым он зарегистрирован в Windows, например Times New Roman, Courier, и т.д.

- Size – высота шрифта в пикселях;

- Style – стиль шрифта. Возможные значения: fsBold (полужирный), fsItalic (курсив), fsUnderline (подчеркнутый), fsStrikeOut (зачеркнутый).

Краткое описание методов класса TCanvas

1. procedure Arc (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) – рисование части эллипса;

Вычерчивание дуги выполняет метод Arc, инструкция:

Объект.Canvas.Arc (x1,y1,х2,у2,х3,у3,х4,у4)

где: x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х3, у3 — параметры, определяющие начальную точку дуги; П х4, у4 — параметры, определяющие конечную точку дуги.

Начальная (конечная) точка — это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами х3 и у3 (х4, у4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной

2. procedure Chord (X1, Y1, X2, Y2, X3, Y3, X4, Y4): Integer – рисуется замкнутая фигура, созданная пересечением эллипса и отрезка прямой линии (хорды);

3. procedure Ellipse (const Rect: TRect) – рисуется эллипс;

Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Инструкция:

Объект.Canvas.Ellipse(x1,y1, х2,у2]

где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1, х2, у2 — координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность.

4. procedure Pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint) – рисуется сектор эллипса, расположенный внутри заданного прямоугольника;

Метод pie вычерчивает сектор эллипса или круга. Инструкция:

Объект. Canvas.Pie (x1,y1,x2,y2,х3,у3,х4,у4) где: x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является сектор; х3, у3, х4, у4 — параметры, определяющие координаты конечных точек прямых, являющихся границами сектора.

5. procedure Polygon (Points: array of TPoint) – рисуется сложная фигура, состоящая из отрезков, последовательно соединяющих точки, представленные в виде динамического массива элементов TPoint; последняя точка соединяется с первой; внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

Метод Polygon вычерчивает многоугольник. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля (х,у) которой содержат координаты одной вершины многоугольника. Метод Polygon вычерчивает многоугольник, последовательно соединяя прямыми линиями точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д. Затем соединяются последняя и первая точки.

6. procedure Polyline (Points: array of TPoint) – метод аналогичен предыдущему, но заполнения внутренней части не происходит;

Метод polyline вычерчивает ломаную линию. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля х и у которой содержат координаты точки перегиба ломаной. Метод Polyline вычерчивает ломаную линию, последовательно соединяя прямыми точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой

7. procedure Rectangle (const Rect: TRect) – рисуется прямоугольник; внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

Прямоугольник вычерчивается методом Rectangle, инструкция:

Объект.Canvas.Rectangle (x1,y1,x2,y2)

где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1 и х2, у2 — координаты левого верхнего и правого нижнего углов прямоугольника.

8. procedure RoundRect (X1, Y1, X2, Y2, X3, Y3: Integer) – рисуется прямоугольник с округленными углами;

Метод RoundRec тоже вычерчивает прямоугольник, но со скругленными углами. Инструкция вызова:

Объект.Canvas.RoundRec (x1,y1,х2, у2, х3, у3)

где: х3 и у3 — размер эллипса, одна четверть которого используется для вычерчивания скругленного угла.

9. procedure TextOut (X,Y:Integer; const Text: string) – вывод строки в конкретную позицию холста.

ДОПОЛНИТЕЛЬНО

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

Вычерчивание прямой линии осуществляет метод LinеТо, инструкция вызова которого в общем виде выглядит следующим образом:

Компонент.Canvas.LineTo(x,у)

Метод LinеТо вычерчивает прямую линию от текущей позиции карандаша в точку с координатами, указанными при вызове метода.

Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода MoveTo, указав в качестве параметров координаты нового положения карандаша.

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

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

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

Form1.Canvas.Pixels[10,10]:= clRed окрашивает точку поверхности формы в красный цвет

Холст состоит из отдельных точек — пикселов. Положение пиксела характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста.

bsSolid Сплошная заливка

bsClear Область не закрашивается

bsHorizontal Горизонтальная штриховка

bsVertical Вертикальная штриховка

bsFDiagonal Диагональная штриховка с наклоном линий вперед

bsBDiagonal Диагональная штриховка с наклоном линий назад

bsCross Горизонтально-вертикальная штриховка, в клетку

bsDiagCross Диагональная штриховка, в клетку

Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:

Объект.Canvas.TextOut (x,у,Текст)

где: объект — имя объекта, на поверхность которого выводится текст; х, у — координаты точки графической поверхности, от которой выполняется вывод текста; Текст — переменная или константа символьного типа, значение которой определяет выводимый методом текст.

Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта canvas. Свойство Font представляет собой объект типа TFont.

Свойства объекта TFont, позволяющие задать характеристики шрифта, используемого методами TextOut и TextRect для вывода текста.

Name Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial

Size Размер шрифта в пунктах (points). Пункт— это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма

Style Стиль начертания символов. Может быть: нормальным, полужирным, курсивным, подчеркнутым, перечеркнутым. Стиль задается при помощи следующих констант: fsBold (полужирный), fsltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый).

Объект. Canvas. Font: = [fsBold, fs Italic]

Color Цвет символов. В качестве значения можно использовать константу типа Tcolor

Иногда требуется вывести какой-либо текст после сообщения, длина которого во время разработки программы неизвестна. Например, это может быть слово "руб." после значения числа, записанного прописью. В этом случае необходимо знать координаты правой границы уже выведенного текста. Координаты правой границы текста, выведенного методом Textout, можно получить, обратившись к свойству PenPos
45. Динамические структуры данных. Указатели и их использование в программировании. Стек, очередь список – организация и методы обработки. Программирование работы с динамическими структурами данных в языке программирования Object Pascal.

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

Динамическая память - это оперативная память ПК, предоставляемая программе при ее работе. Динамическое размещение данных означает использование динамической памяти непосредственно при работе программы. В отличие от этого статическое размещение осуществляется компилятором Object Pascal в процессе компиляции программы. При динамическом размещении заранее не известны ни тип, ни количество размещаемых данных.

AllocMem(Size: Cardinal Pointer; Динамически выделяет область памяти, размером Size байтов и возвращает указатель на выделенную область; эта область в дальнейшем может быть освобождена процедурой FreeMem

Dispose(var P: Pointer) Освобождает область памяти, выделенную ранее процедурой New, на которую указывает типизированный указатель P.

FreeMem(var P: Pointer[; Size: Integer]) Освобождает область памяти, выделенную ранее процедурой GetMem или функцией AllocMem, на которую указывает указатель P; если указан размер области Size, он должен в точности совпадать с указанным ранее в процедуре GetMem

GetMem(var P: Pointer; Size: Integer) Динамически выделяет область памяти, размером Size байтов и возвращает P адрес выделенной области

New(var P: Pointer) Динамически выделяет память, размер которой определяется типом типизированного указателя P, и возвращает P адрес выделенной области памяти Оперативная память ПК представляет собой совокупность ячеек для хранения информации - байтов, каждый из которых имеет собственный номер. Эти номера называются адресами, они позволяют обращаться, к любому байту памяти. Object Pascal предоставляет в распоряжение программиста гибкое средство управления динамической памятью - так называемые указатели. Указатель - это переменная, которая в качестве своего значения содержит адрес байта памяти. С помощью указателей можно размещать в динамической памяти любой из известных в Object Pascal типов данных. Лишь некоторые из них (Byte, Char, ShortInt, Boolean) занимают во внутреннем представлении один байт, остальные - несколько смежных. Поэтому на самом деле указатель адресует лишь первый байт данных. Указатель является величиной, указывающей на некоторый адрес в памяти, где хранятся какие-то данные, поэтому указатели бывают типизированные, указывающие на данные определенного типа, и нетипизированные (типа pointer), которые могут указывать на данные произвольного типа. Чаще всего указатели используются для работы с объектами в динамически распределяемой области памяти, особенно при работе с записями. Как правило, указатель связывается с некоторым типом данных. Такие указатели называют типизированными. Для объявления типизированного указателя используется значок ^, который помещается перед соответствующим типом. Объявление своего типизированного указателя на любой тип имеет вид: type <имя типа указателя> = ^<тип данных>;

Здесь используется область type, так как типизированные указатели – пользовательский тип. Замечание: в Object Pascal последовательно проводится в жизнь принцип, в соответствии с которым перед использованием какого-либо идентификатора он должен быть описан. Исключение сделано только для указателей, которые могут ссылаться на еще не объявленный тип данных. В Object Pascal имеется ряд предопределенных типов указателей. Это прежде всего типы указателей на строки: PAnsiChar и PWideChar, представляющие собой соответственно указатели на значения AnsiChar и WideChar. Имеется также родовой тип PChar, определяющий указатель на Char (т.е. пока указывающий на AnsiChar). Эти указатели используются при работе со строками с нулевым символом в конце. Имеется предопределенная константа nil, которая обычно присваивается указателям, которые в данный момент ни на что не указывают. Чтобы получить доступ к данным, на которые указывает типизированный указатель, надо применить операцию его разыменования. Она записывается с помощью символа ^, помещаемого после указателя. Операция разыменования не применима к указателям типа pointer. Чтобы разыменовать указатель pointer, надо сначала привести его к другому типу указателя. Поскольку нетипизированные указатели не связаны с конкретным типом, с их помощью удобно динамически размещать данные, структура и тип которых меняются в ходе работы программы. Для указателей PChar определены операции отношения =, <>, <, >, <=, >=. Кроме того, для различных указателей определены еще следующие операции:

Обозна-чение Операция Типы операндов Тип результата Пример
+ сложение указателей указатель на символ, целое указатель на символ P + I
вычитание указателей указатель на символ, целое указатель на символ, целое P - Q
^ разыменование указателя указатель указатель на базовый тип P^
= равенство указатель Boolean P = Q
<> неравенство указатель Boolean P <> Q

Операнд операции разыменования ^ может быть указателем на любой тип. Указатель типа Pointer должен быть сначала преобразован к типу, после чего его можно разыменовывать. Выражение P=Q дает true только в случае, если P и Q указывают на один адрес. В противном случае выражение P<>Q дает true. Операции + и – применяются для увеличения или уменьшения сдвига указателя на символ. Операция вычитания кроме того позволяет найти разность смещения двух указателей. Эти операции подчиняются следующим правилам. Если I - целое число, а P - указатель на символ, то P+I увеличивает на I адрес, на который указывает P; т.е. возвращается указатель на адрес, отстоящий на I символов от P. Аналогично, P –I возвращается указатель на адрес, предшествующий P на I символов. Если P и Q - указатели на символы, то P–Q определяет число символов между P и Q. Операция @ возвращает адрес своего операнда: переменной, функции, процедуры, метода. Иначе говоря операция @ создает указатель на свой операнд. При этом действуют следующие правила: Если X - переменная, то @X возвращает адрес X. Если включена директива компилятора {$T–} (она включена по умолчанию), то тип результата pointer. Если же включена директива {$T+}, то тип результата ^!Alink(^,Jump)T, где T - тип X. · Если F - функция или процедура, то @F возвращает точку входа F, причем тип результата всегда pointer. При применении операции @ к методу перед идентификатором метода должна идти ссылка на имя класса, например, @TMyClass.DoSomething.

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

var pI,pJ: ^Integer; pR: ^Real;

begin

New (pI); New (pR);

end;

После того как указатель приобрел некоторое значение, т. е. стал указывать на конкретный физический байт памяти, по этому адресу можно разместить любое значение соответствующего типа. Для этого в операторе присваивания сразу за указателем без каких-либо пробелов ставится значок ^, например: pJ^:= 2; // В область памяти pJ помещено значение 2 pl^:= 2*pi; // В область памяти pR помещено значение 6.28 Таким образом, значение, на которое указывает указатель, т. е. собственно данные, размещенные в куче, обозначаются значком ^, который ставится сразу за указателем. Если за указателем нет значка ^, то имеется в виду адрес, по которому размещены данные. Имеет смысл еще раз задуматься над только что сказанным: значением любого указателя является адрес, а чтобы указать, что речь идет не об адресе, а о тех данных, которые размещены по этому адресу, за указателем ставится ^ (иногда об этом говорят как о разыменовании указателя). Динамически размещенные данные можно использовать в любом месте программы, где это допустимо для констант и переменных соответствующего типа. Динамическую память можно не только забирать из кучи, но и возвращать обратно. Для этого используется процедура Dispose. Например, операторы Dispose(pJ); Dispose(pR); вернут в кучу память, которая ранее была закреплена за указателями pJ и pR. Замечу, что процедура Dispose (pPtr) не изменяет значения указателя pPtr, а лишь возвращает в кучу память, ранее связанную с этим указателем. Однако повторное применение процедуры к свободному указателю приведет к возникновению ошибки периода исполнения. Освободившемуся указателю нужно присвоить значение nil. Параметром процедуры New может быть только типизированный указатель. Для работы с нетипизированными указателями используются процедуры GetMem и FreeMem.

Стеки и очереди. Динамические структуры стеков и очередей часто используют для решения задач в информатике. Например стек используется при составлении алгоритма обработки вычисления сложной функции. Пусть необходимо вычислить значение функции g(x): g(x) = f(s(5*x+3*k(2*x))+d(s(3*x+2)-11*k(x+3)) Для вычисления g нужно вычислить последовательно функции -> (s->k-> d->s->k). Если нам заранее известна итоговая формула, то можно составить программу. Но если функция задается динамически, то вызов функции нужно сохранить до вычисления ее аргументов. Это удобно сделать с помощью стека в котором можно хранить некие константы, свидетельствующие о вызове конкретной функции. Вычисления результата производят в обратном порядке, доставая порядок вызова функций из стека. Так формируются вычисления в компьютерных программах всех видов. Поэтому для каждой программы заводится специальный сегмент стека. При использовании рекурсивных алгоритмов используется огромное число вызовов функций или процедур. Это может привести к переполнению сегмента стека. Очереди часто используются при последовательной обработке массивов или других структур столь большой длины, что нет возможности хранить такие данные в статических массивах. Очередь как потенциально бесконечная структура может использоваться для организации такой обработки данных. Списки. Указатели и динамические переменные позволяют создавать сложные динамические структуры данных, такие как списки и деревья. Каждый элемент списка (узел) представляет собой запись, состоящую из двух частей. Первая часть — информационная. Вторая часть отвечает за связь со следующим и, возможно, с предыдущим элементом списка. Список, в котором обеспечивается связь только со следующим элементом, называется односвязным. Для того чтобы программа могла использовать список, надо определить тип компонентов списка и переменную-указатель на первый элемент списка. Ниже приведен пример объявления компонента односвязного списка студентов:

Type TPStudent = ^TStudent;

TStudent = record

sn: string[20]; // фамилия

adr:string[60]; // домашний адрес

next: TPStudent; // указатель на следующий элемент списка

end;

var

head: TPStudent; // указатель на первый элемент списка

t:TStudent;

procedure TForm1.FormCreate(Sender: TObject);

begin

new(head);

t.sn:='Петров';

t.adr:='ул. Ленина 125';t.next:=Nil;

head^:=t;

end;

Добавлять данные можно в начало, в конец или в нужное место списка. Во всех этих случаях необходимо корректировать указатели. Для создания элементов списка используются записи особого вида, которые имеют указатели на такую же запись. Такие записи принято называть самоадресуемыми. Очевидно, что внутри записи можно хранить 2, 3 указателя и более. Если указателей 2, то можно создать двусвязный список:

Такой список более удобен для навигации, так как можно перемещаться по указателям в обе стороны. Аналогично с помощью 2-х указателей можно создать структуру бинарного дерева
46. Принципы построения и архитектура ПЭВМ. Информационно-логические основы ЭВМ. Основы языка Ассемблер.

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

Основным принципом построения всех современных ЭВМ является программное управление. В основе его лежит представление алгоритма решения любой задачи в виде программы вычисления.Алгоритм – конечный набор предписаний, определяющий решение задачи по средством конечного количества операций.Программа (для ЭВМ) – упорядоченная последовательность команд подлежащей обработке4.Принцип программного управления может быть осуществлён различными способами: стандартом для построения практически всех ЭВМ стал способом, описанный Фон-Нейманом в 1945г. построений ещё первых образцов ЭВМ. Суть его заключается в следующем:

принцип программного управления – компьютер работает по заранее заданной программе 2) принцип хранимой программы – в соответствии с ним в оперативной памяти находятся не только данные для обработки, но и сама программа. 3) принцип двоичного кодирования – в соответствии с ним для оптимальной работы ЭВМ необходимо использовать двоичные элементы 4) адресуемость памяти – в соответствии с ним память компьютера состоит из ячеек, каждая из которых имеет собственный адрес.

Программа может в любое время обратиться к любой ячейки памяти по ее адресу. Классическая архитектура ЭВМ была свойственна для машин 1 и 2 поколения. Появление 3 поколения обусловлено разработкой интегральных схем, миниатюризации элементов и созданы предпосылки для пересмотра архитектуры ЭВМ. Решением проблем по разгрузке процессора от лишних задач было появление дополнительных устройств (контроллеров), через которые подключались внешние устройства. Появилась шинная архитектура.

Согласно принципам фон Неймана, компьютер должен иметь следующие устройства (классическая архитектура): 1.Арифметическо-логическое устройство — для непосредственного осуществления вычислений и логических операций.(ум компьютера) 2.Устройство управления — для организации процесса управления программ.(организационные способности компа) 3.Запоминающее устройство — для хранения программ и информации.(память компа) 4.Внешние устройства — для ввода и вывода информации. (речь и мимика компа) Подавляющее большинство компьютеров в своих основных чертах соответствует принципам фон Неймана, но схема устройства современных компьютеров несколько отличается от классической схемы. В частности, арифметическо-логическое устройство и устройство управления, как правило, объединены в центральный процессор. Многие быстродействующие компьютеры осуществляют параллельную обработку данных на нескольких процессорах. Компьютерная информация хранится в электронном виде в различных запоминающих устройствах, которые называют компьютерной памятью. Для долговременного хранения информации используются постоянные носители компьютерной памяти, которые служат при вводе данных в компьютер и при выводе результатов его работы. Для хранения выполняемых в данный момент программ и промежуточных данных используется оперативная память компьютера, которая работает значительно быстрее постоянных носителей памяти.

Общим и наиболее важными параметром для всех компьютеров является быстродействие. Оно часто измеряется в единицах, которые называются ФЛОПС – количество арифметических операций в секунду. Первые ЭВМ имели быстродействие в несколько сотен ФЛОПС, современные суперЭВМ достигают скорости в несколько десятков ТераФЛОПС.Сравнение по быстродействию различных типов ЭВМ, не обеспечивает достоверных оценок. Очень часто вместо характеристики быстродействия используют связанную с ней производительность. Производительность это объем работы, осуществляемой ЭВМ в единицу времени. Кроме технических показателей ЭВМ характеризуется эффективностью и надежностью при эксплуатации. Показатель эффективности определяется отношением производительности к стоимости изготовления и эксплуатации ЭВМ. Надежность это способность ЭВМ при определенных условиях выполнять требуемые функции в течение заданного периода времени. Она определяется вероятностью безотказной работы ЭВМ в течении определенного периода времени. Высокая надежность ЭВМ закладывается в процессе ее производства. Достоверность – свойство информации быть правильно воспринятой Точность –возможность различать почти равные значения Емкость запоминающих устройств – кол-во структурных единиц информации, которые может одновременно онаходиться впамяти Функции программного обеспечения

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

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

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

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

Любое ЭВМ неимоновской архитектуры содержит следующие основные устройства:

1.Арифметическо-логическое устройство (АЛХ)

2.Устройство управления (УУ).

3.Заполняющее устройство (ЗУ).

4.Устройство ввода/вывода (УВВ).

5.Пульт управления (ПУ).

В современных ЭВМ АЛУ и УУ объединены в общее устройство и называются центральным процессором.

2.1.Процессор или микропроцессор является основным устройством ЭВМ он предназначен для выполнения вычислений по хранящейся в Запоминающем устройстве программы и обеспечения общего управления ЭВМ. Быстродействие ЭВМ в значительной мере определяется скорость работы процессора. Для её увеличения процессор использует собственную память небольшого объёма именуемую местной или сверхоперативной, что в некоторых случаях исключает необходимость обращения к запоминающему устройству ЭВМ. Вычислительный процесс должен быть предварительно представлен для ЭВМ в виде программы, последовательности инструкций (команд) записанных в порядке выполнения. ЭВМ выбирает определённую команду расшифровывает её, определяет какие действия и над какими операциями следует выполнить. Эту функцию осуществляет устройство управления, оно же помещает выбранные из ЗУ операнды в АЛУ, где они обрабатываются. Само АЛУ работает под управлением УУ.

2.2.Обрабатываемае данные и выполняемые программы должны находиться в ЗУ – памяти ЭВМ, куда вводятся ч/3 устройство ввода. Ёмкость памяти измеряется в величинах кратких байту. Память представляет собой сложную структуру, построенную по иерархическому принципу и включает в себя ЗУ различных типов, функционально она делится на 2 части: внутреннюю и внешнюю.

Внутренняя или основная память – это ЗУ напрямую связанная с процессором и предназначенная для хранения выполняемых программ и данных непосредственно участвующих вычислению. Обращение к внутренней памяти ЭВМ осуществляется с высоким быстродействием, но она имеет ограниченный объём определяемой системы адресации машин. В свою очередь делится на оперативную ОЗУ и постоянную ПЗУ память. Оперативная память по объёму составляющая большую часть внутренней памяти и служит для приёма хранения и выдачи информации. При включении питания ЭВМ содержимое оперативной памяти в большинстве случаев теряется. Постоянная память обеспечивает хранение и выдачу информации в отличии от содержимого оперативной памяти содержимое постоянной памяти заполняется при изготовлении ЭВМ и не может быть изменено в обычных условиях эксплуатации. В постоянной памяти хранятся часто используемые (универсальные) программы. Пример: некоторые программы операционной системы, программы тестирования оборудования ЭВМ и другие, при выключении ПК содержимое постоянной памяти сохраняется.

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

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

Системный интерфейс – это конструктивная часть ЭВМ предназначенная для взаимодействия её устройств и обмена информации между ними. В больших средних и супер ЭВМ в качестве системного интерфейса используются сложные устройства имеющие встроенные процессоры ввода/вывода именуемые началами такие устройства обеспечивают высокую скорость обмена данными между компонентами ЭВМ является использованием в качестве системного интерфейса системных шин. Различают ЭВМ с многошинной структурой и с общей шиной

I-Во-первых для обмена информации между устройствами используются отдельные группы шин.

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

Информация в ЭВМ кодируется, как правило, в двоичной или в двоично-десятичной системе счисления.

Система счисления - это способ наименования и изображения чисел с помощью символов, имеющих определенные количественные значения.

В зависимости от способа изображения чисел системы счисления делятся на позиционные и непозиционные.

В позиционной системе счисления количественное значение каждой цифры зависит от ее места (позиции) в числе. В непозиционной системе счисления цифры не меняют своего количественного значения при изменении их расположения в числе. Количество (Р) различных цифр, используемых для изображения числа в позиционной системе счисления, называется основанием системы счисления. Значения цифр лежат в пределах от 0 до Р-1.

Пример 4.1. Позиционная система счисления - арабская десятичная система, в которой:основание P=10, для изображения чисел используются 10 цифр (от 0 до 9). Непозиционная система счисления - римская, в которой для каждого числа используется специфическое сочетание символов (XIV, CXXVII и т.п.).

Двоичная система счисления имеет основание Р=2 и использует для представления информации всего две цифры: 0 и 1. Существуют правила перевода чисел из одной системы счисления в другую, основанные в том числе и на соотношении (1).





Дата публикования: 2015-01-23; Прочитано: 1987 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.029 с)...