Функция tmpfile создает на диске временный файл с правами доступа «w+b» и возвращает указатель на управляющий блок по типу атрибута FILE. После завершения работы программы или после закрытия временного файла он автоматически удаляется из диска.
Все действия по чтению/записи данных в файл можно разделить на три группы:
Операции посимвольного ввода-вывода, Операции построчного ввода-вывода, Операции ввода-вывода по блокам.Ниже приведены основные функции, применяемые в каждой из указанных трех групп операций.
14.1.1. Посимвольный ввод-вывод
В операциях посимвольного ввода-вывода происходит прием одного символа из файла или передача одного символа в файл.
Функция | Действие функции |
int fgets(FILE *fp) | Чтение и возврат символа из открытого файла |
int fgetchov(void) | Читает и возвращает символ из файла stdin. |
int ungetc(int ch, FILE *fp) | Возвращает символ ch в файл. Следующая операция чтения символа из файла вернет этот символ. |
int fputs(int ch, FILE *fp) | Записывает в файл код ch символа. |
14.1.2. Построчный ввод-вывод
В операциях построчного ввода-вывода за один прием происходит перенос из файла (или в файл) строк символов.
Функция | Действие функции |
int gets (char *S) | Читает байты из файла stdin и записывает их в строку S до тех пор, пока не встретит символ ' \n ', который заменяется на нуль – терминатор. |
int fgets (char *S int m, FILE *fp) | Извлекает байты из файла, описываемого fp, и записывает их в строку S до тех пор, пока не встретит символ ' \n ' или пока не будет считана m байтов. |
int fputs (char *S, FILE *fp) | Записывает в файл байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл не переносится и на символ ' \n ' не заменяется. |
int puts (char *S) | Записывает в файл, stdout байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл переносится и заменяется на символ ' \n '. |
Блоковый ввод-вывод
В операциях блокового ввода-вывода работа происходит с целыми блоками информации.
Функции | Действие функции |
int fread (void *ptv, int size, int n, FILE *fp) | Считывает n блоков по size байт каждый из файла fp, в область памяти, на которую указывает указатель ptv (необходимо заранее отвести память под считываемый блок). |
int fwrite (void *ptv, int size, int n, FILE *fp) | Записывае n блоков по size байт каждый из области памяти, на которую указывает ptv, в открытый файл fp. |
Пример работы с файлами. Следующая программа формирует целочисленный бинарный файл, дозаписывает в его окончание новые данные, и выводит сохраненные данные на печать:
#include <stdio. h>
#include <conio. h>
void main(void)
{
int a=1, b=20, c, d;
FILE *in, *out, *add;
clrscr();
/* ........ ЗАПИСЬ ЧИСЕЛ В ФАЙЛ......*/
in=fopen("lr8.dat","wb");
fprintf(in,"%d %d \n",a, b);
fclose(in);
puts("ЧИСЛА a, b ЗАПИСАНЫ В ФАЙЛ");
puts("Press any key...");
getch();
/* ......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА........*/
out=fopen("lr8.dat","rb");
fscanf(out,"%d%d", &c, &d);
printf("\n a=%d b=%d ", c, d);
fclose(out);
puts("\n ЧИСЛА ПРОЧИТАНЫ ИЗ ФАЙЛА");
puts("Press any key...");
getch();
/* ......... ДОПОЛНЕНИЕ ФАЙЛА..........*/
add=fopen("lr8.dat","a");
puts("ВВЕДИТЕ ЧИСЛА ЦЕЛОГО ТИПА c и d");
scanf("%d%d",&c,&d);
fprintf(add,"%d %d \n",c, d);
printf("\n c=%d d=%d \n ",c, d);
fclose(add);
puts("ЧИСЛА c и d ДОПИСАНЫ В ФАЙЛ");
puts("Press any key...");
getch();
/* ......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА........*/
out=fopen("lr8.dat","rb");
fscanf(out,"%d%d%d%d", &a, &b, &c, &d);
printf("\n a=%d b=%d ", a, b);
printf("\n c=%d d=%d ", c, d);
fclose(out);
puts("\n РАСШИРЕННЫЙ ФАЙЛ!");
puts("Press any key...");
getch();
}
Практическое занятие № 15
Тема. Графические возможности языка Borland C++
Цель: Изучение работы дисплея в графическом режиме.
Краткие теоретические сведения по теме
15.1. Графический режим работы
При работе в графическом режиме экран дисплея представляет собой матрицу точек (пикселов - pixel) - т. е. матрицу отображаемых точек. При этом число столбцов и строк пикселов (разрешение экрана дисплея) зависит от режима работы видеоадаптера. Можно управлять цветом каждого пиксела, задавая цвета фона, рисунка и заполнения замкнутых областей экрана дисплея, а также создавать эффект движения изображений.
За начало координат экрана дисплея в графическом режиме принимается верхний левый угол с координатами x=0 и y=0, где x - координата по горизонтали, y - координата по вертикали точки ( пиксела). Во всех примерах программ, приведенных далее по тексту, нулевые координаты присваиваются верхнему левому углу создаваемого графического окна. Содержимое библиотеки графических функций в алгоритмическом языке Borland C++ подразделяется на немобильную группу функций (функции зависят от типа адаптера) и на мобильную группу функций.
Немобильная группа графических программ представляет собой BGI драйвер (Borland Graphics Interface).
Драйвер - это обработчик прерывания 10h, он должен дополнить системный обработчик до того, как будут использоваться мобильные графические функции. Перед завершением программы таблица векторов прерываний восстанавливается.
Основные функции BGI-драйвера - установка и обновление ряда внешних переменных, которые могут изменяться как функциями системного обработчика прерывания 10h (например, при переключении видеорежима или при изменении регистров палитры), так и мобильными функциями библиотеки графики алгоритмического языка Turbo C (TC) или Borland C++.
Для различных типов адаптеров применяются различные драйверы:
CGA. BGI - драйвер для CGA и MCGA, EGAVGA. BGI - драйвер для адаптеров EGA, VGA, HERC. BGI - драйвер для монохромных адаптеров Hercules.
Графические функции мобильной группы подразделяются на
1. Функции для подготовки графической системы и перехода в текстовый режим.
2. Функции для получения изображений на экране дисплея.
3. Функции для установки параметров изображения( вид штриховки, толщина линий и т. д.).
4. Функции для определения параметров режимов и изображений.
15.2. Функции для подготовки графической системы
Перед использованием графических функций необходимо инициализировать систему графики. Графические режимы, поддерживаемые библиотекой графики, задаются символическими константами, описанными в файле
<graphics. h> в перечислимом типе graphics_mode.
Инициализация графической системы производится функцией initgraph(), которая загружает графический драйвер и переключает экран дисплея в требуемый графический режим. Прототип функции initgraph:
initgraph(&g_driver,&g_mode," ");
В двойных апострофах (третий параметр в прототипе функции) необходимо указать путь (маршрут) к графическому драйверу. Если указать пробел, то графический драйвер должен быть в текущем каталоге. Первый параметр - &g_driver - тип графического драйвера:1 - CGA, 3 - EGA, 9 - VGA и т. д. Второй параметр - &g_mode - графический режим
( рассмотрим только для VGA драйвера):
VGA 0 640x200
VGAMED 1 640x350
VGAHI 2 640x480
Запись типа 640x200 - это разрешающая способность экрана дисплея в графическом режиме (число строк умножить на число столбцов).
Для задания автоматического режима графики необходимо записать:
int g_diver=DETECT, g_mode;
Для завершения работы в графическом режиме необходимо применить функцию closegraph();
15.3. Основные функции для получения изображения
1. Вычерчивание окружности: circle(x, y,r);
2. Вычерчивание закрашенного прямоугольника: bar(x1,y1,x2.y2);
3. Вычерчивание параллелепипеда: bar3d(x1,y1,x2,y2,глубина, p); p=0 или p=1 - верхняя грань отображается (не отображается)
4. Вычерчивание линии: line(x1,y1,x2,y2);
5. Вычерчивание точки: putpixel(x, y,цвет);
6. Вычерчивание прямоугольника: rectangle(x1,y1,x2,y2);
7. Вывод текста: outtext(x, y,"текст");
8. Установка указателя на экране дисплея: moveto(x, y);
9. Очистка экрана дисплея: cleardevice(void);
10. Заполнение ранее заданным наполнителем замкнутой области:
floodfill(x, y,c); c - номер цвета линии, ограничивающей область.
15.4. Основные функции для установки параметров изображения
1. Установка цвета линий: setcolor(n);
2. Установка цвета фона: setbkcolor(n);
3. Установка стиля наполнителя замкнутых линий:
setfillstyle(номер наполни,цвет);
4. Установка толщины линий: setlinestyle(стиль линии,0,толщина);
0 - непрерывная, 1 - из точки, 2,3 - штрих,
5. Установка стиля текста: settextstyle(шрифт 0-4, направление: 0 – горизонтальное, 1 - вертикальное, размер 1-0);
Вопросы для подготовки к экзамену
Парадигма ООП. Специфика интерфейса ОО программ. Преимущества ООП. Понятие класса. Отношение "объект - класс". Понятие полиморфизма. Проявления полиморфизма. Механизм наследования. Модификатора доступа и наследования. Как изменяются атрибуты элементов класса при наследовании? Смысл инкапсуляции. Что такое объектно-ориентированное программирование и каковы его главные отличительные признаки? Что такое инкапсуляция? Что такое методы? Что такое экземпляры объекта? Что такое наследование в ООП? Что такое раннее и позднее связывание? Что такое виртуальный метод? Что такое полиморфизм? Что такое конструкторы и деструкторы? В чем разница между struct, class и union? Что такое конструктор, деструктор и когда они вызываются? Что такое встраиваемая функция? В чем ее преимущества и недостатки? Какие два способа существуют для создания встраиваемой функции? Как можно передать в функцию в качестве аргумента адрес объекта? Что такое дружественная функция? Когда следует переопределять операторы с помощью дружественных функций, а когда с помощью функций элементов класса? Что происходит при присваивании одного объекта другому (без переопределенной операции =) и какие побочные эффекты могут возникнуть? При передаче объекта в функцию в качестве аргумента создается копия этого объекта. Изменение копии в теле функции не отражается на оригинале. Возможно ли нарушение этого правила? Какая функция может иметь доступ к защищенным членам одного класса? ... двух классов? Что такое указатель this. Приведите пример использования этого указателя. Для чего необходимы операторы new и delete. В чем их отличие от функций malloc() и free()? Что такое ссылка? Какое имеется преимущество при использовании ссылки в качестве параметра функции, а в чем недостаток? В чем разница между ссылкой и указателем? Назовите причины, по которым может понадобиться перегрузка конструкторов и деструкторов (в одном классе). Какова основная форма конструктора копирования и когда он вызывается? Что такое аргумент по умолчанию? Как аргумент по умолчанию связан с перегрузкой функций? Почему может потребоваться перегрузка оператора присваивания? Как можно ли изменить приоритет перегруженного оператора? Что такое виртуальная функция? Какие функции не могут быть виртуальными? Что такое абстрактный класс и чем может быть вызвана необходимость построений абстрактного класса? Чем виртуальные функции отличаются от перегружаемых? Раннего и позднее связывание. Совместимость типов. Какую роль в достижении совместимости объектов могут играть абстрактные классы? Почему шаблоны называют параметризованными типами? Когда следует в программе применять шаблоны, а когда нет? Чем шаблоны лучше макроподстановок? Для каких типов данных может применяться конкретный шаблон, а для каких нет? В чем разница между классом и шаблоном класса? Что может выступать в качестве параметра для шаблона класса? В чем основное преимущество использования библиотеки потокового ввода-вывода? Как работает операция внесения (на примере)? Что такое манипулятор ввода - вывода? Организация файлового и строкового потока.Программирование в Borland C++ - М., Бином, 2003 Бруно Бабэ Просто и ясно о Borland C++ - М., Бином
Использованная литература
, Компьютерные сети. Принципы, технологии; протоколы. - СПб.: Питер, 2006. - 692с. ехнологии передачи данных. СПб.: Питер, 2003. - 720 с. ппаратные средства локальных сетей. Энциклопедия - СПб.: Питер, 2005.-576 с.
омпьютерные сети. - СПб.: Питер, 2003. - 992с. омпьютерные сети. - СПб.: БХВ-Петербург, 2005. – 1008 с. ередача данных. - СПб.:Питер, 2004. - 750 с. овременные компьютерные сети. - СПб.:Питер,2004. -750 с. Компьютерные сети и Intemet.-M.: «Вильямс», 2002.- 640 с. омпьютерные сети. - СПб.: Питер, 2004. - 462 с. TCP/IP. Для профессионалов. - СПб.: Питер, 2004. - 859 с. Мак-ринципы маршрутизации в Интернет. - М.: Изд. дом «Вильямс», 2001. - 448 с.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |


