- •1. Основные понятия информатики
- •1.1. Понятие и задачи информатики
- •1.2. Системы счисления
- •1.2.1. Двоичная система счисления
- •1.2.2. Восьмеричная система счисления
- •1.2.3. Шестнадцатеричная система
- •1.3. Обобщенная структура и состав персонального компьютера
- •1.4. Организация вычислительных процессов при решении инженерных задач
- •1.5.1. Алгоритм: основные свойства и способы представления
- •1.5.2. Базовые элементы и структуры программирования
- •1.5. Алгоритмы
- •1.5.3. Представление линейных, разветвленных и циклических структур
- •2. ОБщие сведения об операционных системах
- •2.1. Общие сведения об операционных системах
- •2.1.1. Предпосылки создания и краткая история операционных систем ms-dos и Windows
- •2.1.1.1. Операционная система ms-dos
- •2.1.1.2. История создания операционной системы Windows
- •2.1.2. Основные отличия версий операционных систем
- •2.1.2.1. Операционная система Mac os
- •2.1.1.2. Операционная система Linux
- •2.1.1.3. Операционная система Windows
- •2.1.3. Основные команды операционной системы ms-dos
- •2.2. Основные элементы интерфейса операционной системы Windows
- •2.2.1. Элементы интерфейса ос Windows
- •2.2.2. Работа с файловыми системами операционной системы
- •3.2. Элементы языка с
- •3.2.1. Алфавит языка с (используемые символы)
- •3.2.2. Идентификаторы
- •3.2.3. Константы
- •3.2.4. Ключевые слова
- •3.2.5. Знаки операций
- •3.2.6. Комментарии
- •3.3. Лекция 6. Типы данных и их объявление
- •3.3.1. Основные типы данных
- •3.3.2. Объявление типов данных
- •3.4. Лекция 7. Указатели и массивы
- •3.4.1. Объявление указателей
- •3.4.2. Инициализация указателей
- •3.4.3. Составные указатели
- •3.4.4. Операции над указателями
- •3.4.5. Ссылки
- •3.5. Лекция 8. Массивы
- •3.5.1. Одномерные массивы
- •3.5.2. Многомерные массивы
- •3.5.3. Динамические массивы
- •3.5.3.1. Одномерные динамические массивы
- •3.5.3.2. Динамический многомерный массив
- •3.5.4. Символьные массивы (строки)
- •3.6. Лекция 9. Выражения и присваивания
- •3.6.1. Операции инкремента и декремента (увеличения и уменьшения на 1)
- •3.6.2. Операция определения размера типа
- •3.6.4. Операции деления ( / ) и нахождения остатка от деления ( % )
- •3.6.7. Поразрядные операции
- •3.6.8. Логические операции
- •3.6.9. Операции присваивания
- •3.6.10. Условная операция
- •3.6.11. Приоритеты выполнения операций
- •3.6.12. Преобразование типов
- •3.7. Лекция 10. Операторы
- •3.7.1. Операторы ветвления
- •3.7.1.1. Условный оператор if
- •If (выражение) [оператор_1]; [ else оператор_2 ; ]
- •3.7.1.2. Оператор switch
- •3.7.2. Операторы цикла
- •3.7.2.1. Цикл с предусловием (while)
- •3.7.2.2. Цикл с постусловием (do while)
- •3.7.2.3. Цикл с параметрами ( for )
- •3.7.3. Операторы передачи управления
- •3.7.3.1. Оператор безусловного перехода goto
- •3.7.3.2. Оператор прерывания break
- •3.7.3.3. Оператор пропуска continue
- •3.7.3.4. Оператор возврата из функции return
- •4. Модульное программирование
- •4.1. Лекция 11. Функции
- •4.1.1. Объявление функций
- •4.1.2. Определение функций
- •4.1.3. Вызов функций
- •4.1.4. Передача параметров в функцию
- •4.1.5. Передача массивов в функцию
- •В примере:
- •4.1.6. Функции с переменным числом параметров
- •4.1.7. Рекурсивные функции
- •4.1.8. Функция main()
- •4.1.9. Перегрузка функций
- •4.1.10. Шаблоны функций
- •4.2. Лекция 12. Директивы препроцессора
- •4.2.1. Директива #include
- •4.2.1. Директива # define
- •4.2.3. Директивы условной компиляции
- •4.2.4. Директивы #undef
- •4.3. Лекция 13. Пользовательские типы данных
- •4.3.1. Переименование типов
- •4.3.2. Перечисления
- •4.3.3. Структуры
- •4.3.4. Битовые поля
- •4.3.5. Объединения
- •5. Программирование графических изображений в языке с
- •5.1. Лекция 14. Программирование графических изображений
- •5.1.1. Графический режим видеоадаптера
- •5.1.2. Функции управления графическим окном
- •5.1.3. Управление цветом и стилем заполнения фигур
- •5.1.4. Рисование простейших графических фигур
- •5.1.5. Отображение текстовой информации в графическом режиме
- •5.1.7. Преобразование координат и анимационные эффекты
- •6.1.1.3. Функция gets()
- •6.1.1.4. Функция puts()
- •6.1.1.5. Функции printf() и scanf()
- •Потоковые объекты ввода/вывода (форматируемые):
- •6.1.2.1 Форматирование данных с помощью флагов и методов
- •6.2. Функции файлового ввода и вывода
- •6.2.1. Файловый ввод и вывод средствами с
- •6.3. Строки: операции с текстовыми файлами
- •6.3.1. Операции над строками
- •6.3.2. Методы и функции ввода и вывода строк
- •6.4. Лекция 18. Операции со структурами и бинарными файлами
- •6.5. Лекция 19. Списки: операции с динамическими структурами данных; организация списков и их обработка
- •6.5.1. Линейные списки
- •6.5.2. Стеки
- •6.5.3. Очередь
- •6.5.4. Бинарные деревья
5. Программирование графических изображений в языке с
5.1. Лекция 14. Программирование графических изображений
5.1.1. Графический режим видеоадаптера
Видеоадаптер персонального компьютера может работать в одном из двух режимов — текстовом или графическом. В текстовом режиме минимальным элементом изображения является пиксель — графическая точка. Отметим, что Windows-программы работают только в графическом режиме, а использование текстового режима является характерным только для DOS-программ. Когда программу, которая работает в текстовом режиме, запускают из среды Windows, режим видеоадаптера может оставаться графическим, а текстовый режим будет эмулироваться только в пределах окна программы. Такой режим выполнения DOS-программ называется оконным. Полноэкранный режим выполнения DOS-программ предполагает установку необходимо видеорежима во время ее запуска и возврат к исходному режиму после завершения её работы. DOS-программа, которая работает с графикой, может быть выполнена только в полноэкранном режиме.
Программа, работающая в графическом режиме, использует графические драйверы — файлы, которые обеспечивают взаимодействие с видеоадаптером. Для разных типов видеоадаптеров используют различные графические драйверы. Основными характеристиками видеоадаптера являются разрешающая способность и количество цветов. Разрешающая способность задается парой чисел, первое из которых показывает количество пикселей в одной строке, а второе — число строк. Современные дисплейные адаптеры принадлежат к классу SVGA (Super Video Graphics Array). Такие адаптеры характеризуются разрешающей способностью более 640480 пикселей и позволяют использовать не менее 256 цветов. Для работы с SVGA адаптерами используются драйверы svga256.bgi и egavga.bgi.
Графическая система языка Borland C состоит их обширной библиотеки GRAPHICS.LIB. Компилятор должен иметь доступ к этой библиотеке, иначе компиляция программы, содержащей вызовы функций графической библиотеки, будет заканчиваться выдачей множественных сообщений об ошибках. Для этого необходимо подключить графическую библиотеку:
1) В меню оболочки выбирать Options>Linker>Libraries…
2) На открывшейся вкладке Libraries в поле Libraries напротив строчки Graphic library поставить отметку выбора (курсором «мыши» или клавишей «пробел»).
3) На вкладке Libraries нажать кнопку-надпись «Ок».
При создании программы, обращающейся к функциям графической библиотеки, также необходимо подключить заголовочный файл <graphics.h>.
Графическая система содержит внутреннюю переменную, предназначенную для хранения кода завершения графических функций. В случае ошибки код завершения функции является отрицательным и определяется константой перечислимого типа graphics_errors. Текущее значение переменной возвращает функция graphresult. Прежде чем обращаться в прикладной программе к функциям графической библиотеки, необходимо выбрать графический драйвер, соответствующий установленному на персональном компьютере видеоадаптеру. Для выбора драйвера можно воспользоваться функцией detectgraph, которая тестирует аппаратуру видеоадаптера и автоматически выбирает необходимый драйвер и графический режим:
void detectgraph ( int far *graphdriver, int far *graphmode);
Эта функция через свои аргументы возвращает номер графического драйвера, обслуживающего обнаруженный ею дисплейный адаптер, и номер графического режима, обеспечивающего максимальное для данного адаптера разрешение. Возвращенные функцией detectgraph значения в дальнейшем могут быть переданы функции инициализации графической системы initgraph. Функция initgraph ищет на диске bgi-файл, содержащий требуемый драйвер, загружает и инициализирует соответствующий драйвер, переводит систему в графический режим и передает контроль вызванной программе. Прототип этой функции
void initgraph(int far *driver, int far *mode, char far *pathtodriver);
Аргументами функции являются указатели на переменные, содержащие номер графического драйвера, номер графического режима этого драйвера и путь к bgi-файлу.
Если по указателю *driver перед вызовом было записано значение DETECT (или 0), то сначала запускается процедура автоматического тестирования аппаратуры видеоадаптера. В этом случае нет необходимости вызывать функцию detectgraph. Всю работу, связанную с переходом в графический режим, выполнит функция initgraph.
Ниже приведен фрагмент кода, позволяющий перевести систему в графический режим.
Пример:
#include <graphics.h> //подключение библиотеки графических
//средств
main()
{
int Driver, Mode;
Driver=DETECT;
initgraph(&Driver, &Mode, '' '');
…
closegraph();
return 0;
}
Здесь функция initgraph вызывается в режиме автоматического тестирования аппаратуры. Поиск файла с драйвером выполняется в текущей директории.
Функция closegraph() освобождает память от драйвера и восстанавливает исходный видеорежим.
Используя функции restorecrtmode и setgraphmode, можно осуществлять переход в текстовый режим и обратно. При этом графический драйвер и графический буфер сохраняются в оперативной памяти. Синтаксис функций:
void far restorecrtmode(void);
void far setgraphmode(int mode);
Восстановить прежний графический режим можно, если запомнить его номер. Это можно сделать с помощью функции getgraphmode:
int far getgraphmode(void);
Эта функция возвращает текущее значение номер графического режима для активизированного драйвера.
