- •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.1.4. Рисование простейших графических фигур
Графические примитивы — это геометрические фигуры, которые можно отобразить на экране с помощью специальных функций.
Ниже представлены функции графических примитивов. Они имеют тип void far:
line(int x1, int y1, int x2, int y2) — изображение отрезка прямой;
linerel(int dx, int dy) — изображение отрезка прямой относительно текущей позиции ;
lineto(int x, int y) — изображение отрезка прямой из текущей точки в точку с заданными координатами ;
circle(int x, int y, int radius) — изображение окружности ;
arc(int x, int y, int stangle, int endangle, int radius) — изображение дуги радиуса radius с координатами (x , y) от угла stangle до endangle ;
ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius) — изображение эллиптической дуги с аналогичными параметрами ;
rectangle(int x1, int y1, int x2, int y2) — изображение прямоугольника ;
rawpoly(int numpoints, int far *polypoints) — изображение ломанной, заданной набором координат некоторого множества точек .
В последней функции параметр numpoint — это количество точек ломанной. Параметр *polypoints указывает на массив, каждый элемент которого есть структура из двух полей, которые интерпретируются как координаты (x , y) очередной точки. Функцию drawpoly часто используют для вывода графиков функций, заданных таблично.
Доступ к отдельным пикселям активной страницы обеспечивают две функции:
unsigned far getpixel (int x, int y) ;
void far putpixel (int x, int y, int color) ;
Первая функция возвращает номер цвета пикселя с координатами (x , y). Вторая выводит пиксель с координатами (x , y) цветом color.
Стилем и толщиной линий можно управлять с помощью функции
setlinestyle (int linestyle, unsigned upattern, int thickness) ;
Аргумент linestyle устанавливает стиль рисования линий, upattern — определяет пользовательский шаблон, а thickness — толщину линий. Доступные значения для толщины линий: NORM_WIDTH (нормальная) и THICK_WIDTH (толстая). При этом аргумент thickness воздействует на все контурные графические примитивы, а аргументы linestyle и upattern — только на кусочно-линейные. Стиль рисования линий задается константами перечислимого типа:
enum line_styles
{
SOLID_LINE =0, // сплошная линия
DOTTED_LINE =1, // точечная
CENTER_LINE =2, // штрихпунктирная
DASHED_LINE =3, // пунктирная
USER_BIN =4 // пользовательский стиль
}
При выборе значений указанных констант от 0 до 3 параметр upattern в функции setlinestyle игнорируется. Шаблон upattern используется, если значение linestyle равно 4. Он представляет собой 16-битовое слово. Если бит шаблона равен 1, то соответствующий пиксель шаблона рисуется, в противном случае — нет. Так, пунктирная линия задается шаблоном 0x0F0F или 0x3333.
5.1.5. Отображение текстовой информации в графическом режиме
Текст в графическом режиме выводится с помощью шрифтов, которые сохраняются в файлах с расширением chr. Параметры вывода текста определяются функцией
settextstyle (int font, int direction, int charsize) ;
Аргумент direction задает направление вывода текста (HORIZ_DIR, VERT_DIR), аргумент charsize — размер символов (от 1 до 10). Вид шрифта определяется значением аргумента font (от 0 до 4). Все шрифты, кроме шрифта DEFAULT_FONT=0, являются векторными. Т.е. их элементы формируются как совокупность векторов, которые характеризуются направлением и длиной.
Расположением выводимой строки текста относительно опорной точки управляет функция
settextjustify(int horiz, int vert) ;
Её аргументы принимают значения перечислимого типа:
enum text_just
{
LEFT_TEXT =0, // расположить слева
CENTER_TEXT, // расположить по центру
RIGHT_TEXT, // расположить справа
BOTTOM_TEXT // расположить внизу
TOP_TEXT // расположить вверху
}
Вывод текста выполняется фукциями
outtext (char far *textstring) ;
outtextxy (int x, int y, char far *textstring) ;
Обе функции в качестве аргумента получают указатель textstring на выводимую строку символов. За одно обращение к функции выводится одна строка. Первая функция выводит текст в текущую графическую позицию, вторая — в точку, заданную с помощью аргументов x и y.
5.1.6. Построение графиков функций
График функции
строят по точкам
.
Для этого циклически задают значение
абсциссы
и вычисляют соответствующие ординаты
.
Затем отрезками соединяют точки
с
точками
.
Для изображения графика следует перевести вычисленные математические координаты точек в их экранные эквиваленты, умножив координаты на масштаб. С учетом того, что центр системы координат — это центр экрана, а экранная ось ординат направлена в обратную сторону по сравнению с математической осью, получим следующие выражения для экранных координат:
При построении графиков функций приведенные формулы используют в следующем порядке:
— циклически изменяют значение x_экрана от 0 до значения, равного максимальному числу пикселей в строке;
— для заданного значения x_экрана вычисляют математическую координату x по формуле
— вычисляют y_экрана по указанной выше формуле и получают экранную точку с координатами (x_экрана , y_экрана);
— полученные экранные точки соединяют отрезками и получают график функции.
