
2392_Смирнова_ЛР3_ЭВМ
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ВТ
отчет
по лабораторной работе №3
по дисциплине «Организация ЭВМ и систем»
Тема: ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ГРАФИЧЕСКИЙ РЕЖИМ)
Студент гр. 2392 |
|
Смирнова М. В. |
Преподаватель |
|
Ельчанинов М. Н. |
Санкт-Петербург
2023
Цель работы.
Изучение работы с видеосистемой в графическом режиме, вывод графика заданной функции с масштабированием и разметкой осей.
Задание на лабораторную работу.
Разработать программу для вывода на экран графика заданной функции: Sin2(x/4)+Sqrt(x). В Диапазоне: 3π/2 до 17π.
Найти максимальное значение функции на заданном интервале и вывести в отдельное окно на экране.
Произвести разметку осей и проставить истинные значения точек.
Краткие сведения о видеосистемах ПЭВМ, графическом режиме их работы и функциях обслуживания графического режима.
Видеосистема ПЭВМ - это совокупность аппаратных и программных средств, обеспечивающих вывод графической информации на монитор или другое устройство отображения. Видеосистема состоит из видеокарты, видеопамяти, видеопроцессора, видеоинтерфейса и видеодрайвера.
Видеокарта - это плата, которая подключается к материнской плате ПЭВМ и содержит видеопроцессор, видеопамять и видеоинтерфейс. Видеопроцессор - это микросхема, которая выполняет операции над графическими данными, такие как преобразование, масштабирование, поворот, сглаживание, фильтрация и т.д. Видеопамять - это область памяти, в которой хранятся графические данные, такие как цвета, координаты, текстуры и т.д. Видеоинтерфейс - это разъем, через который видеокарта подключается к монитору или другому устройству отображения. Существуют различные типы видеоинтерфейсов, такие как VGA, DVI, HDMI, DisplayPort и т.д.
Видеодрайвер - это программа, которая обеспечивает взаимодействие между операционной системой, прикладными программами и видеокартой. Видеодрайвер предоставляет набор функций, которые позволяют управлять параметрами видеокарты, такими как разрешение, цветность, частота обновления, режим работы и т.д. Видеодрайвер также отвечает за перевод графических команд, поступающих от прикладных программ, в формат, понятный видеопроцессору.
Графический режим работы видеосистемы - это режим, в котором на экране монитора или другого устройства отображения формируется изображение из отдельных точек, называемых пикселями. Каждый пиксель имеет определенный цвет, который задается кодом цвета. Графический режим отличается от текстового режима, в котором на экране выводятся символы из заранее заданной таблицы.
Графический режим имеет ряд преимуществ, таких как:
возможность вывода любых графических объектов, не ограниченных символьным набором;
возможность использования различных эффектов, таких как анимация, трансформация, прозрачность и т.д.;
возможность создания реалистичных и качественных изображений с высокой детализацией и цветопередачей.
Однако графический режим также имеет некоторые недостатки, такие как:
большой объем памяти, необходимый для хранения графических данных;
большая нагрузка на видеопроцессор и процессор ПЭВМ при выполнении сложных графических операций;
потенциальная утечка конфиденциальной информации по каналам побочных электромагнитных излучений и наводок.
Графический режим реализуется на аппаратном и программном уровнях. На аппаратном уровне графический режим определяется характеристиками видеокарты, такими как разрешение, цветность, частота обновления и т.д. На программном уровне графический режим поддерживается операционной системой, языком программирования и библиотеками, которые предоставляют функции для работы с графикой. Например, в языке программирования C++ можно использовать библиотеку graphics.h, которая содержит функции для инициализации графического режима, рисования примитивов, вывода текста, загрузки и сохранения изображений и т.д… Также существуют различные стандарты и форматы графических файлов, такие как BMP, JPEG, PNG, GIF и т.д., которые определяют способы хранения и сжатия графических данных.
Алгоритмы и тексты отлаженных программ
Ниже приведены алгоритмы и тексты отлаженных программ, выполненных в рамках лабораторной работы. Программы написаны на языке программирования C++ и скомпилированы в среде разработки Turbo C++ 3.1.
Давайте разберем программу по пунктам:
Подключение заголовочных файлов: Здесь подключаются необходимые библиотеки для работы с вводом/выводом, графикой, математикой и стандартными функциями.
Определение макроса pi: Определяется макрос для значения числа π.
Функция main(): Входная точка программы.
Очистка экрана.
Инициализация графического режима: Определяются параметры графического режима, инициализируется графический режим, и проверяется наличие ошибок.
Обработка ошибок при инициализации графики.
Получение размеров экрана.
Установка видового экрана в соответствии с размерами экрана.
Отрисовка осей координат.
Разметка по осям.
Вычисление и отрисовка графика функции sin^2(x/4) + sqrt(x).
Вывод максимального значения на экран.
Программа инициализирует графический режим, рисует оси координат, вычисляет и рисует график функции, выводит максимальное значение, и завершает работу с графикой.
Текст программы
//Подключение заголовочных файлов
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#include<iostream.h>
//определение макроса pi, как 3,14
#define pi 3.14
int main()
{
// Очистка экрана
clrscr();
// Инициализация графического режима
int graph_driver, graph_mode, graph_error_code, x2, y2;
char str[3];
graph_driver = DETECT;
initgraph(&graph_driver, &graph_mode, "C:\\TURBOC3\\BGI");
graph_error_code = graphresult();
// Обработка ошибок при инициализации графики
if (graph_error_code != grOk)
{
printf("Error: %s\n", grapherrormsg(graph_error_code));
getch();
return 0;
}
// Получение размеров экрана
x2 = getmaxx();
y2 = getmaxy();
// Установка видового экрана в соответствии с размерами экрана
setviewport(0, 0, x2, y2, 0);
// Отрисовка осей координат
line(0, y2, 0, 50);
line(0, y2 / 2, x2, y2 / 2);
// Разметка по осям
// Вычисление и отрисовка графика функции sin^3(x/4) + sqrt(x)
char str1[3];
int counter = 1;
for (int i = 40; i <= 800; i += 40)
{
sprintf(str1, "%dpi", counter);
outtextxy(i, y2 / 2 + 10, str1);
line(i, y2 / 2 + 5, i, y2 / 2 - 5);
counter++;
}
counter = -11;
for (int j = y2 - 20; j >= 0; j -= 20)
{
sprintf(str1, "%d", counter);
outtextxy(10, j, str1);
line(-5, j, 5, j);
counter++;
}
double verx, very, max = -100, masx = 40 / pi, x1, y1;
verx = 1.5 * pi;
setviewport(0, 0, x2, y2, 0);
while (verx <= 17 * pi)
{
very = (sin(verx / 4) * sin(verx / 4) * sin(verx / 4)) + sqrt(verx);
x1 = verx * masx;
y1 = very * 20;
putpixel(x1, (y2 / 2) - y1, 8);
if (very > max)
{
max = very;
}
verx += 0.001;
}
// Вывод максимального значения на экран
printf("The maximum: %lf", max);
cout << endl << "sin^3(x/4) + sqrt(x)";
// Завершение работы с графикой
getch();
closegraph();
return 0;
}
П
римеры
запуска программы
Структура
С
труктурная
схема аппаратных средств, используемых
при выполнении программы с необходимой
степенью детализации содержимого
блоков.