Функция 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