Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭК(вопросы и ответы).doc
Скачиваний:
9
Добавлен:
10.09.2019
Размер:
5.98 Mб
Скачать

3. Отсутствие упорядоченности атрибутов

Атрибуты отношений не упорядочены, поскольку по определению схема отношения есть множество пар {имя атрибута, имя домена}.

4. Атомарность значений атрибутов. т.е. среди значений домена не могут содержаться множества значений (отношения).

Реляционная модель данных. Согласно Дейту реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части. В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. В манипуляционной части модели утверждаются два фундаментальных механизма манипулирования реляционными БД - реляционная алгебра и реляционное исчисление. Первый механизм базируется в основном на классической теории множеств (с некоторыми уточнениями), а второй - на классическом логическом аппарате исчисления предикатов первого порядка.

Целостность сущности и ссылок. Наконец, в целостной части реляционной модели данных фиксируются два базовых требования целостности, которые должны поддерживаться в любой реляционной СУБД. Первое требование называется требованием целостности сущностей. любое отношение должно обладать первичным ключом.

Второе требование называется требованием целостности по ссылкам . При соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений.

Реляционные операции и счисление.

Предложив реляционную модель данных, Э.Ф.Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру. Каждая операция этой алгебры использует одну или несколько таблиц (отношений) в качестве ее операндов и продуцирует в результате новую таблицу, т.е. позволяет "разрезать" или "склеивать" таблицы (рис. 3.3).

Р ис. 3.3. Некоторые операции реляционной алгебры

Созданы языки манипулирования данными, позволяющие реализовать все операции реляционной алгебры и практически любые их сочетания. Среди них наиболее распространены SQL (Structured Query Language – структуризованный язык запросов) и QBE (Quere-By-Example – запросы по образцу) [3, 5]. Оба относятся к языкам очень высокого уровня, с помощью которых пользователь указывает, какие данные необходимо получить, не уточняя процедуру их получения. С помощью единственного запроса на любом из этих языков можно соединить несколько таблиц во временную таблицу и вырезать из нее требуемые строки и столбцы (селекция и проекция).

3.14.Колірні простори rgb та cmyk. Сфера застосування та та причини їх розходження. Одержання кольорів одного простору через значення кольорів іншого.

Человеческий глаз воспринимает цвета, основываясь на различной длине световых волн, которые поглощаются и отражаются различными предметами. На самом деле цвет того или иного объекта определяется светом, который попадет на освещаемый объект и зрителем. Имея дело с разницей между цветами, производимыми естественными источниками освещения и экраном, испускающим свет, Мы имеем дело с фундаментальными проблемами, когда работаем на компьютере с цветами, которые в конечном итоге выводятся на печать. Цвета, наблюдаемые на экране компьютера, создаются путем комбинирования красного(Red), зеленого(Green) и синего (Blue) цвета, испускаемого монитором при помощи электронных пушек собственно красной, зеленой и синей. Цвета, создаваемые в печатной машине базируются на печатных красках цвета циан (Cyan), маджента (Magenta) и желтый (Yellow). Хотя световой поток состоит из волн разной длинны, наши глаза в первую очередь реагируют на световые длины волн красного, зеленого и синего цветов. Красный, зеленый, синий называют аддитивными цветами или цветами на основе сложения, т.к. бесконечное множество цветов может быть создано на основе добавления различных степеней насыщенности красного, зеленого и синего света. Путем добавления одних основных цветов к другим получают еще три цвета: циан, маджента и желтый. Если сложить вместе R,G,B то получится

белый свет. R+G+B= White,G+B=Cyan(циан),B+R=Magenta (маджента)G+R=Yellow(желтый) Из циана, мадженты и желтого могут быть созданы другие бесконечные цвета. Например, ниже показано, как эти три цвета могут применяться для получения черного, красного, зеленого и синего: С+M+Y=Black, C+M=Blue, Y+M=Red, Y+C=Green

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

3.15 ОДЕРЖАННЯ В WINDOWS ПРОГРАМАХ ЗОБРАЖЕННЯ ПРИМІТИВІВ (Крапки, Прямі, Прямокутники, ...). ОСОБЛИВОСТІ ПРОГРАМНОГО ЗАВДАННЯ ЇХНІХ КООРДИНАТ І РОЗТАШУВАННЯ ПІКСЕЛЕЙ, ЩО ВІДОБРАЖАЮТЬ ПРИМІТИВИ НА ЕКРАНІ. ГРУПОВЕ ЗОБРАЖЕННЯ ПРИМІТИВІВ ОДНОГО ТИПУ.

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

Функция рисования точки SetPixel устанавливает цвет точки с заданными координатами:

COLORREF WINAPI SetPixel(

HDC hdc, // контекст отображения

int nXPos, // x-координата точки

int nYPos, // y-координата точки

COLORREF clrref); // цвет точки

Пример: SetPixel(hdc, 0, 0, RGB(0xff, 0, 0));

Для рисования линии в контексте отображения хранятся координаты текущей позиции пера. Для изменения текущей позиции пера в Windows существует системный вызов:

BOOL WINAPI MoveToEx(

HDC hdc, int x, int y, // x,y - координата

POINT FAR* lppt); // указатель на структуру

//POINT, туда переписываются старые координаты пера

Он перемещает позицию пера в новую точку

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

BOOL WINAPI LineTo(HDC hdc, int xEnd, int yEnd);

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

Рисование ломаной кривой

BOOL WINAPI Polyline(

HDC hdc, const POINT FAR* lppt, // указатель на массив структур POINT

int cPoints); // размер массива

Функции Polyline , предназначенной для рисования ломаных линий, следует передать идентификатор контекста отображения hdc, указатель lppt на массив структур POINT, в котором должны находится координаты начала ломаной линии, координаты точек излома и координаты конца ломаной линии, а также размер этого массива cPoints. Если ломаная линия не замкнута, ее последняя точка не рисуется

Рисование дуги эллипса функция Arc позволяет нарисовать дугу эллипса или окружности:

BOOL WINAPI Arc(

HDC hdc, int nxLeft, int nyTop, // верхий левый угол

int nxRight, int nyBottom, // правый нижний угол

int nxStart, int nyStart, // начало дуги

int nxEnd, int nyEnd); // конец дуги

Параметры (nxLeft,nyTop) и (nxRight,nyBottom) задают координаты, соответственно, верхнего левого и правого нижнего углов воображаемого прямоугольника, в который вписан эллипс.

Начало дуги эллипса определяется пересечением эллипса с воображаемой прямой линией, проведенной из центра эллипса (xC,yC) в точку (xStart,yStart). Конец дуги определяется аналогично - как пересечение эллипса с воображаемой прямой линии, проведенной из центра эллипса в точку (xEnd,yEnd).

Дуга рисуется в направлении против часовой стрелки.

Рисование прямоугольника

BOOL WINAPI Rectangle(

HDC hdc, int nxTL, // координата x верхнего левого угла

int nyTL, // координата y верхнего левого угла

int nxBR, // координата x правого нижнего угла

int nyBR); // координата y правого нижнего угла

С помощью функции RoundRect можно нарисовать прямоугольник со скругленными углами

BOOL WINAPI RoundRect(

HDC hdc, int nxTL, // координата x верхнего левого угла

int nyTL, // координата y верхнего левого угла

int nxBR, // координата x правого нижнего угла

int nyBR, // координата y правого нижнего угла

int nxEllipse, // ширина эллипса

int nyEllipse); // высота эллипса

Для рисования эллипса вы можете использовать функцию Ellipse

BOOL WINAPI Ellipse(

HDC hdc, int nxTL, // координата x верхнего левого угла

int nyTL, // координата y верхнего левого угла

int nxBR, // координата x правого нижнего угла

int nyBR); // координата y правого нижнего угла

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

Сегмент эллипса можно нарисовать при помощи функции Chord

BOOL WINAPI Chord(

HDC hdc, int nxLeft, int nyTop, // верхий левый угол

int nxRight, int nyBottom, // правый нижний угол

int nxStart, int nyStart, // начало дуги

int nxEnd, int nyEnd); // конец дуги

Для рисования сектора эллипса следует использовать функцию Pie

BOOL WINAPI Pie(

HDC hdc, int nxLeft, int nyTop, // верхний левый угол

int nxRight, int nyBottom, // правый нижний угол

int nxStart, int nyStart, // начало дуги

int nxEnd, int nyEnd); // конец дуги

Рисование многоугольников выполняется функцией Polygon , аналогичной по своим параметрам функции Polyline, с помощью которой рисуются ломаные линии:

BOOL WINAPI Polygon(

HDC hdc, const POINT FAR* lppt, // указатель на массив структур POINT

int cPoints); // размер массива

С помощью функции PolyPolygon можно нарисовать одновременно несколько многоугольников:

BOOL WINAPI PolyPolygon(

HDC hdc, const POINT FAR*lppt, // указатель на массив структур POINT

int FAR* lpnPolyCounts, // адрес массива количества точек в многоугольниках

int cPolygons); // количество многоугольников

Параметр cPolygons определяет количество многоугольников, которые нужно нарисовать. Параметр lppt должен содержать указатель на массив структур типа POINT, содержащий координаты вершин всех многоугольников. Через параметр lpnPolyCounts передается указатель на массив целых чисел. Каждое число в этом массиве определяет количество точек в соответствующем многоугольнике. В PolyPolygon не замыкает ломаную линию.