Лекция №15. Использование графических возможностей языка 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекция №15. Использование графических возможностей языка



Цель -изучить возможности и особенности использования графики.

 

Пакет функций управления экраном делится на две части в соответствии с возможностями компьютера: работа в текстовом режиме (text mode) и работа в графическом режиме (graphics mode). Все функции управления экраном в текстовом режиме имеют свои прототипы в заголовочном файле conio.h. Управление экраном в графическом режиме производится с помощью набора функций, прототипы которых находятся в заголовочном файле graphics.h.

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

- void far detectgraph(int far *gdriver, int far *gmode); - предназначена для определения типа графического адап­тера. Эта функция возвращает значения по адресам, указанным первым и вторым пара­метрами. Здесь gdriver - указатель на целое число, содержащее номер графического драйвера. Вторым параметром функции detectgraph будет указатель на целое число, содержащее номер графического режима, обеспечивающего максимальную разрешающую способность экрана. Если нет графического адаптера, то функция detectgraph присваивает *gdriver = -2.

- void far initgraph(int far *gdriver, int far *gmode, char far *pathdriver); - предназначена для загрузки графического драйвера, имеющего номер *gdriver, и для установки графического режима номер *gmode. Если по адресу gdriver записан нуль (*gdriver=DETECT), то функция вначале обращается к функции detectgraph, а затем загружает драйвер, номер которого был установлен функцией detectgraph. Необхо­димая память для загрузки драйвера предоставляется в "куче". В зависимости от графического режима максимальная разрешающая способность экрана изменяется.

Для выгрузки графического драйвера применяется функция, объявленная как void closegraph(void). Эта функция освобождает память из "кучи", занятую графическим драйвером.

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

#include <stdio.h>

#include <graphics.h>

#include <conio.h>

void main()

{ int driver, mode;driver=registerbgidriver(EGAVGA_driver);

driver = VGA; mode = VGAHI;

initgraph (&driver, &mode, "");

closegraph();}

После установки графического режима с помощью initgraph экран монитора представляет собой прямоугольную область, разбитую на одинаковые прямоугольники - пиксели, стороны которых параллельны верхней и нижней границам экрана. Пиксель (pixels) - это минимальный элемент изображения на экране, состоящий из нескольких (цветных) точек и рассматриваемый в программе как одна точка определенной яркости или цвета. Под координатами пикселя подразумеваются целочисленные координаты центров этих прямоугольников, отсчитываемые от координат центра левого верхнего прямоугольника. Чтобы вычислить разрешающую способность экрана по x и y, применяются функции int getmaxx(void), int getmaxy(void). Наиболее часто используется графический режим монитора, при котором поддерживается разрешение 640*480*16. Здесь 16 – это максимальное количество цветов, которое одновременно может присутствовать на изображении.

В отличие от математической системы координат, графический экран выглядит так, как показано на рисунке 15.1.

Рисунок 15.1 – Внешний вид графического экрана

 

В заголовочном файле graphics.h определены константы, соответствующие цветам стандартной палитры. Изменение одного из цветов стандартной палитры производится функцией

void setpalette (int index, int color);

где intindex – номер из стандартной палитры;

int color – цвет в диапазоне от 0 до 63 (палитра EGA).

Настройка палитры EGA осуществляется функцией

void setrgbpalette (int color, int red, int green, int blue);

где red, green и blue изменяются в диапазоне от 0 до 255, причем малым значениям соответствуют темные цвета, большим – более яркие.

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

1) состоит из функций, которые ничего не выводят на экран, но устанавливают некоторые параметры: например, функция setcolor задает номер цвета для дальнейшего вывода линий;

2) состоит из функций, которые осуществляют вывод на экран: например, чтобы вывести точку заданного цвета, применяется функция void putpixel(int x, int y, int color);

3) состоит из функций, которые ничего не выводят на экран, но позволяют получить информацию о выведенном изображении: например, для чтения цвета пикселя предназначена функция unsigned getpixel(int x, int y).

Имена функций первой группы начинаются со слова set (ставить, помещать), а функции третьей группы – со слова get (получать, доставать).

Графические функции производят вывод в страницу, которая называется активной.

Коэффициентом сжатия экрана называется отношение ширины пикселя к его высоте. Коэффициент сжатия можно узнать с помощью функции void getaspectratio(int far *xasp, int far *yasp);

Функция записывает по адресу yasp число 10000, а по адресу xasp - произведение коэффициента сжатия на 10000. Коэффициент сжатия учитывается при выводе окружностей, дуг окружностей и секторов круга. Коэффициент сжатия устанавливается при инициализации графического режима, исходя из режима, соответствующего максимальной разрешающей способности экрана, и может быть изменен с помощью функции void setaspectratio(int xasp, int yasp);.

Группа линий на плоскости образует контурную фигуру (отрезок прямой линии, дугу, окружность, прямоугольник, эллипс и т. д.). Кроме формы, фигуры могут отличаться цветом линии (контура), ее толщиной или типом. По умолчанию, в графическом режиме существуют следующие настройки: текущий цвет контура – WHITE (белый), толщина – один пиксель, тип – сплошная линия. Плоскостные фигуры - это фрагменты плоскости экрана, ограниченные замкнутым контуром. Их можно получить из контурных путем закрашивания области внутри или вне замкнутой сплошной линии, образующей контур. Для отображения наиболее часто используемых фигур, изменения типов линий контура и их параметров можно воспользоваться функциями стандартной графической библиотеки graphics.

Вывод текста в графическом режиме можно осуществить с использованием прототипов функций той же библиотеки. Текстовая информация отображается на экране с учетом параметров: цвет, тип шрифта, размер шрифта и направление. Размер символов (по вертикали и горизонтали) определяется как произведение стандартного размера (8×8 пикселей) на параметр charsize, то есть если значение charsize будет равно 3, то каждый символ, отображающийся на экране, будет вписан в квадрат 24×24 пикселя. Параметр font, задающий стиль шрифта, подключает к программе файлы с расширением *.chr (нестандартные «шрифты»), поэтому необходимо сделать эти файлы доступными (проще всего скопировать их в текущую директорию).

Для вывода текста на экран в графическом режиме можно использовать и функции для текстового режима, однако они имеют ряд недостатков. Например, при использовании функции printf() для вывода текста на каком-либо цветном фоне позади надписи появится ее «фон» (черный прямоугольник, равный длине выводимого текста). Также отсутствует возможность изменения внешнего вида выводимого текста (размера шрифта, стиля и т.д.) [5-8].

Приложение А

Основные этапы развития технологий программирования

Рисунок А.1 - Архитектура программ с глобальной и локальной областями данных

 

Рисунок А.2 – Архитектура программы при структурном подходе. Модульное программирование

 

Рисунок А.3 – Объектный подход. Архитектура программы при объектно-ориентированном программировании

 

Рисунок А.4 – Компонентный подход. Технология СОМ

 

 

Рисунок А.5 – Соотношение абстрактного и конкретного в описании блоков

при блочно-иерархическом подходе

 

 

 

Рисунок А.6 – Структура процессов жизненного цикла программного обеспечения


Приложение Б

Элементы блок-схем

 

Таблица Б.1 - Основные элементы блок-схем

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

 


Приложение В

Структурное и «неструктурное» программирование

Таблица В.1 – Соответствие различных способов описания алгоритмов

Струк-тура Псевдокоды Flow-формы Диаграммы Насси-Шнейдермана
Следо-вание <действие 1> <действие 2>
Ветвле-ние Если <условие> то <действие 1> иначе <действие 2> Все-если
Цикл-пока Цикл-пока<условие> <действие> Все-цикл
Выбор Выбор <код> <код 1>: <действие 1> <код 2>: <действие 2> иначе<действие 3> Все-выбор
Цикл с парамет-ром Для <индекс> = <n>,<m>,<h> <действие > Все-цикл
Цикл-до Выполнять <действие> До <условие>

 

 


Приложение Г

Таблица Г.1 - Специальные и управляющие символы

  Вид Название Вид Название
Специальные символы + Плюс | Черта
++ Приращение || Логическое ИЛИ
- Минус ! Восклицательный знак
-- Уменьшение -> Стрелка
* Звездочка = Операция присваивания
/ Наклонная черта = = Знак равенства
\ Обратный слеш != Не равно
// Двойной слеш > Больше
. Точка < Меньше
, Запятая <= Меньше или равно
: Двоеточие << Сдвиг влево
:: Разрешение >> Сдвиг вправо
; Точка с запятой < > Угловые скобки
Апостроф () Круглые скобки
Кавычки [ ] Квадратные скобки
^ «Крышка» { } Фигурные скобки
% Знак процента /* */ Скобки комментария
& Амперсанд # Знак номера
&& Логическое И ~ Тильда
Управляющие символы \a Сигнал динамика \t Горизонтальная табуляция
\b BS, забой символа \v Вертикальная табуляция
\f Новая страница \\ Обратная косая черта
\n Новая строка \0 Нулевой символ (байт)
\r Возврат каретки \000 Восьмеричная константа
\” Двойная кавычка \xhhh Шестнадцатеричная константа
\’ Апостроф \? Знак вопроса

 

Таблица Г.2 - Зарезервированные слова в C++

and char false int private switch virtual
and_eq class float long protected template void
asm compl for mutable public this volatile
auto const else namespace register throw while
bitand continue enum new return true xor
bitor default explicit not short try xor_eq
bool delete friend not_eq signed typedef  
break do goto operator sizeof typename  
case double if or static union  
catch extern inline or_eq struct unsigned  

 

Таблица Г.3 – Типы данных с разными комбинациями модификаторов

Тип Диапазон изменения Размер в байтах (битах)
от до
void - -  
char (signed char) -128   1 (8)
unsigned char     1 (8)
wchar_t     2 (16)
bool True (Истина) False (Ложь) 1 (8)
int (signed int, short int, signed short int) -32768   2 (16)
unsigned int (unsigned short int)     2 (16)
long int (signed long int) -2147483648   4 (32)
unsigned long int     4 (32)
float 3.4E-38 3.4E+38 4 (32)
double 1.7E-308 1.7E+308 8 (64)
long double 3.4E-4932 3.4E+4932 10 (80)
Примечание – Размер в байтах и диапазон изменения могут варьироваться в зависимости от компилятора, процессора и операционной системы (среды).

 

Таблица Г.4 – Перечень операций, их приоритет и порядок выполнения

Уровень Оператор Порядок Уровень Оператор Порядок
  (). [ ] ->:: Þ   & Þ
  * &! ~ ++ -- + - sizeof new delete Ü   ^ Þ
  . * -> * Þ   | Þ
  * / % Þ   && Þ
  + - Þ   | | Þ
  << >> Þ   ?: Ü
  < <= > >= Þ   = *= /= += -= %= <<= >>= &= ^= |= Ü
  ==!= Þ   , Þ
Примечания 1 Наивысший приоритет имеют операторы 1 уровня, низший – 16 уровня. 2 Знак Þ обозначает выполнение операций слева направо, а знак Ü - выполнение операций справа налево. 3 Унарные операторы (+) и (-), находящиеся на уровне 2, обладают более высоким приоритетом, чем арифметические (+) и (-) с уровня 5. Символ & на уровне 2 - оператор обращения по адресу, а символ & на уровне 9 битовый оператор AND. Символ * на уровне 2 - оператор обращения к указателю, а символ * на уровне 4 – оператор умножения. 4 В отсутствие круглых скобок операторы, находящиеся на одном уровне, обрабатываются согласно их расположению слева направо.

Таблица Г.5 – Основные математические функции

Наименование функции Функция Тип Заголовочный файл
результата аргумента
Абсолютное значение abs(x) cabs(x) fabs(x) int double float int double float <stdlib.h> <math.h> <math.h>
Арккосинус acos(x) double double <math.h>
Арксинус asin(x) double double <math.h>
Арктангенс atan(x) double double <math.h>
Косинус cos(x) double double <math.h>
Синус sin(x) double double <math.h>
Экспонента ex exp(x) double double <math.h>
Степенная функция xy pow(x,y) double double <math.h>
Логарифм натуральный log(x) double double <math.h>
Логарифм десятичный log10(x) double double <math.h>
Корень квадратный sqrt(x) double double <math.h>
Тангенс tan(x) double double <math.h>

 

Таблица Г.6 – Символы преобразования в функциях ввода-вывода

Формат вывода Значение Формат ввода Значение
%c вывод символа (char) %c чтение символа (char)
%d целое десятичное число (int) %d целое десятичное число (int)
%i целое десятичное число (int) %i целое десятичное число (int)
%e (%E) число (float/double) в виде х.хх е+хх (х.хх Е+хх) %e чтение числа типа float/double
%f (%F) число float/double с фиксиро-ванной запятой хх.хххх %h чтение числа типа short int
%g (%G) число в виде f (F) или е(E) в зависимости от значения %o чтение восьмеричного числа
%s строка символов %s чтение строки символов
%o целое число (int) в восьмеричном представлении %x чтение шестнадцатеричного числа (int)
%u беззнаковое десятичное число (unsigned int) %p чтение указателя
%x (%X) целое число (int) в шестнад-цатеричном представлении %n чтение указателя в увеличенном формате
%p (%n) указатель    
Примечание – К форматам можно применять модификаторы l и h, например, %ld (long в десятичном виде), %lo (long в восьмеричном виде), %lu (unsigned long), %lx (long в шестнадцатеричном виде), %lf (long float c фиксированной точкой), %le (long float в экспоненциальной форме), %lg (long float в виде f или е в зависимости от значения).

Таблица Г.7 – Характерные приемы программирования

Прием программирования Действия, выполняемые до цикла Действия, выполняемые в цикле
Накапливание суммы S = 0; S+= элемент_массива;
Накапливание произведения P = 1; P*= элемент_массива;
Накапливание количества k = 0; k++;
Поиск максимального значения max= предполаг_знач; if (текущ_элемент >max) max= текущ_элемент;
Поиск минимального значения min= предполаг_знач; if (текущ_элемент <min) min= текущ_элемент;

 

 

Приложение Д

 
 

Указатели и ссылки

 

 

Рисунок Д.1 – Графическая интерпретация указателя

 

    mPtr+2    
  mPtr+1        
mPtr          
           
Элементы массива М: m[0] m[1] m[2] m[i]

Рисунок Д.2 – Элементы массива и указатели

Список литературы

 

1 Иванова Г.С. Технология программирования.- М.: «Кнорус», 2013.

2 Страуструп Б. Язык программирования С++. – М., 2012.

3 Потопахин В. Искусство алгоритмизации. - М.: «ДМК Пресс», 2011.

4 Сэджвик Р. Алгоритмы на С++. – М.: «Вильямс», 2011.

5 Павловская Т.А. С/С++. Структурное программирование. – СПб., 2010.

6 Немцова Т.И. Программирование на языке высокого уровня. Программирование на языке С++. - М.: «Форум», 2012.

7 Ашарина И.В. Основы программирования на языках С и С++. - М.: Горячая линия-Телеком, 2012.

8 Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

9 Терехов А.Н. Технология программирования. – М.: БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий. - Intuit.ru, 2006.

10 Давыдов В.Г. Технологии программирования С++. – СПб., 2005.

11 Соколов А.П. Системы программирования: теория, методы, алгоритмы: Учебное пособие. - М.: Финансы и статистика, 2004.

 

 

Cводный план 2013 г., поз. 256

 

Наталья Валерьевна Сябина

Лариса Николаевна Рудакова

 

 

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

 

Конспект лекций

для студентов специальности 5B070200 - Автоматизация и управление

 

 

Редактор Л.Т. Сластихина

Специалист по стандартизации Н.К. Молдабекова

 

 

Подписано в печать __. __. __. Тираж 100 экз. Объем 4.5 уч.-изд. л. Формат 60х84 1/16 Бумага типографская №1 Заказ _____. Цена 2250 тг.

 

 

Копировально-множительное бюро

некоммерческого акционерного общества

«Алматинский университет энергетики и связи»

050013, Алматы, ул. Байтурсынова, 126

 
 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 399; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.54.63 (0.09 с.)