Добавил:
github.com Кофедра ВТ-помойка Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2017 Холод / ЭВМ 3

.docx
Скачиваний:
28
Добавлен:
14.11.2018
Размер:
74.06 Кб
Скачать

Министерство науки и образования РФ

Федеральное государственное автономное образовательное

учреждение высшего профессионального образования

«Санкт-Петербургский государственный электротехнический

университет «ЛЭТИ» им. В. И. Ульянова (Ленина)»

(СПБГЭТУ «ЛЭТИ»)

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

Отчет

по лабораторной работе №3

по дисциплине “Организация ЭВМ и систем”

на тему:

“ ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ГРАФИЧЕСКИЙ РЕЖИМ)”

Выполнил:

Студент группы 6307

Лазарев Сергей Олегович

Принял:

Иванов П. В

Санкт-Петербург 2017

Оглавление

Цель работы 3

1.Краткие сведения о видеосистемах ПЭВМ, текстовом режиме их работы и функциях обслуживания текстового режима 3

2. Задание 5

3. Примеры работы программы 6

4. Текст программы 7

5. Структура схемы аппаратных средств 9

Цель работы

Изучение работы с видеосистемой в графическом режиме, вывод графика заданной функции с масштабированием и разметкой осей.

  1. Краткие сведения о видеосистемах ПЭВМ, текстовом режиме их работы и функциях обслуживания текстового режима

Использование графики в языке С++ - это многошаговый процесс. Прежде

всего необходимо определить тип видеоадаптера. Затем устанавливается

подходящий режим его работы и выполняется инициализация графической

системы в выбранном режиме. После этого становятся доступными для

использования функции графической библиотеки graphicx.h для построения

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

эллипсов, прямоугольников, секторов, дуг и т.д., появляется возможность вывода

текста с использованием различных шрифтов.

Использование библиотеки графики намного сокращает объем

программирования для вывода основных графических примитивов. С++

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

пользователь должен быть осведомлен при работе с видеоадаптером через порты

или BIOS. Платой за эти удобства является значительное увеличение размера

.ЕХЕ-файлов. Использование графической библиотеки С++ требует знакомства с

моделью графической системы, применяемой компилятором для представления

графической системы компьютера. Можно сказать, что сложность овладения

деталями аппаратных средств видеоадаптеров сравнима со сложностью освоения

графической модели. Однако достоинство графической модели заключается в ее

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

для дальнейших расширений. Появление новых типов видеоадаптеров не

потребует большой переработки программ, так как все новые особенности

аппаратуры будут учитываться в средствах библиотеки С++.

Весь код библиотеки графики разбивается на две части: немобильную,

которая зависит от типа видеоадаптера и мобильную.

Немобильная часть представляет собой так называемый .BGI-драйвер (BGI -

Borland Graphics Interface). Драйвер является обработчиком прерывания 10h,

который должен дополнить системный обработчик до того, как будут

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

векторов прерывания восстанавливается.

Основные функции, выполняемые .BGI-драйвером, сводятся к установке и

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

функциями системного обработчика прерывания 10h (например, при

переключении видеорежима, изменении регистров палитры и т.п.), так и

мобильными функциями библиотеки графики. С++ включает целую коллекцию

драйверов для каждого из типов адаптеров, хранимых обычно в отдельном

поддиректории. Система графики является открытой для расширений, так как

позволяет использовать и собственные .BGI-драйверы. Сложность состоит в том,

что фирма Borland International не раскрывает пока внутреннюю структуру драйвера.

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

поведения мобильных функций образует модель графики С++. Подробно эти

элементы модели рассматриваются в следующих подразделах.

2. Задание

Разработать программу для вывода на экран графика cos^3(x)+sin^3(x).

3. Примеры работы программы

Рис. 1

4. Текст программы

#include "stdio.h"

#include "conio.h"

#include "math.h"

#include "dos.h"

#include "graphics.h"

#include "string.h"

float R[2000];

float function(int n)

{

double x0, x = (6 * 3.14 - 3.14 / 2) / n;

float max = -100.;

int i;

for (i = 0, x0 = (3.14 / 2); i<n; i++, x0 += x)

{

R[i] = (float)(sin(x0)*sin(x0)*sin(x0) + cos(x0)*cos(x0)*cos(x0));

if (max<(R[i])) max = R[i];

}

return max;

}

int main()

{

int x, y, x1, x2, y1, y2, D, M;

float max = 0., result[2000];

int i, n;

clrscr();

detectgraph(&D, &M);

initgraph(&D, &M, "c:\\turboc3\\bgi");

if (graphresult()<0)

{

printf("CANNOT ENTER GRAPH MODE");

getch();

return 255;

}

x = getmaxx();

y = getmaxy();

x1 = 40;

y1 = y - 30;

x2 = x - 30;

y2 = 30;

n = x2 - x1;

setlinestyle(0, 1, 3);

rectangle(0, 0, x, y);

max = function(n);

for (i = 0; i<n; i++)

result[i] = y2+119 + (int)(fabs(R[i]) / 6.147*(float)(y1 - y2));

setlinestyle(0, 1, 1);

line(x1+23, y1, x1+23, y2 - 2); // Y

line(x1+26, y2 +159, x2 + 2, y2 +159); // X

outtextxy(x1 + 30, y1 - 10, "y(x) = sin^3(x)+cos^3(x)");

outtextxy(x2 + 3, y2 + 150, "x");

outtextxy(x1 + 10, y1 - 1, "y");

for (i = 0; i<22; ++i)

line(x1+21, y1 - i * 20, x1 + 26, y1 - i * 20);

for (i = 2; i<29; ++i)

line(x1 + 20 * i, y2 + 156, x1 + 20 * i, y2+162);

for (i = 27; i<n; i++)

putpixel(i + x1, fabs(result[i]), 4);

char fl[10];

sprintf(fl, "%f", max);

char str[24];

strcpy(str, "MAX(f(x)) = ");

strcat(str, fl);

outtextxy(x1 + 30, y1 - 20, str);

getch();

closegraph();

return 0;

}

5. Структура схемы аппаратных средств

Рис. 2 Структурная схема аппаратных средств

Соседние файлы в папке 2017 Холод