Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

Раздел 3 Процедурное программирование

В остальных 4-ех темах мы рассмотрим вопросы технологии процедурного программирования и основные понятия объектно-ориентированного программирования: потоковый ввод-вывод данных, потоковая обработка файлов данных, способы конструирования программ и основные этапы процедурного программирования, введение в технологию объектно-ориентированного программирования.

Тема 11. Ввод/вывод данных

В C++ нет встроенных средств ввода/вывода. Альтернативой этому служит наличие библиотек ввода/вывода. Рассмотрим две основные библиотеки, имеющие средства управления экраном и клавиатурой:conio.h и iostream.h.

11.1. Видеофункции библиотеки conio.H

Файл conio.h содержит функции прямого ввода/вывода на консоли (клавиатура, экран дисплея) в текстовом режиме.

Рассмотрим функцию форматированного вывода cprintf.

Синтаксис функции:

cprintf(формат,[аргумент1,...]);

,где формат - это символьная строка, состоящая из простых символов и спецификаций формата;

[аргумент1,...]) – список аргументов.

Функция cprintf принимает список аргументов аргумент1, применяет к каждому из них соответствующую спецификацию формата из строки формат и выводит форматированные данные в выходной поток. Простые символы переносятся в выходной поток без изменений.

Синтаксис спецификации формата:

%[флаг] [ширина] [.точность] тип

, где % - признак спецификации формата;

[флаг] – необязательная последовательность символов-флагов;

[ширина] – необязательная спецификация ширины;

[.точность] - необязательная спецификация точности.

тип – символ типа преобразования.

Символы-флаги ([флаг]):

- левое выравнивание результата, пробелы остаются справа; если флаг не задан, результат выравнивается справа;

+ - результат всегда со знаком (+) или (-);

пробел - не отрицательное значение выводится с пробелом вместо плюса, отрицательное - со знаком минус.

Спецификация ширины ([ширина]):

n - резервируется n позиций , дополнение пробелами;

0n - резервируется n позиций, дополнение нулями;

* - спецификация ширины берется из списка аргументов и должна предшествовать форматируемому аргументу.

Спецификация точности ([.точность]):

.n - выводится n символов или n десятичных знаков;

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

не задано - установка по умолчанию, для типов d, u, o, x - 1, для e, E , f - 6, для g, G - все значащие цифры, для s -до первого нулевого символа, для с – не влияет;

Список типов преобразований (тип)

(символ – входной аргумент –> формат вывода):

d, i - целое -> целое десятичное со знаком;

u - целое -> целое десятичное без знака;

o - целое -> целое восьмеричное без знака;

x,X - целое -> целое шестнадцатиричное без знака;

f – с плавающей точкой -> значение со знаком в формате

[-]ddd.ddd…;

e,E - c плавающей точкой -> значение со знаком в формате

[-]d.ddd…e[+|-]ddd ;

g,G - c плавающей точкой -> формат f или e,

e -если экспонента>точности или <-4 ;

c – символьное ->-один символ;

s - строка символов.

Пример:

int i=123; float x=123.45; char ch='a'; char fkart[9]="kart.dat";

cprintf("%5d %-5d %10.3f %3c %10s %10.4s",i,i,x,ch,fkart,fkart);

Вывод: 123 123 123.450 a kart.dat kart

Перечислим остальные видеофункции библиотеки conio.h:

- Вывод строки на экран: int cputs(const char* str);.

- Вывод символа на экран: int putch(int c);.

- Ввод символа с клавиатуры с эхом на экран: int getche(void);.

- Ввод символа с клавиатуры без эха на экран: int getch(void);.

- Стирание окна: void clrscr(void); .

- Стирание строки от курсора до конца строки: void clreol(void); .

- Позиционирование курсора: void gotoxy(int x,int y);,x - колонка,y - строка.

- Определение окна: void window(int left, int top, int righ, int bottom);где left и top – координаты левого верхнего угла, right и bottom – координаты правого нижнего угла.

- Установка текстового режима экрана: int textmode(int newmode); ,где newmode - соответствующий номер или название режима экрана (например, 3 или C80 - цветной, 80 столбцов.

- Установка цвета фона: void textbackground(int newcolor); ,где newcolor - соответствующий номер цвета от 0 до 7 или его название (например, 0 или BLACK - черный, 2 или GREEN - зеленый.

- Установка цвета символов: void textcolor(int newcolor); ,где newcolor - соответствующий номер цвета от 0 до 15 или его название (например, 15 или WHITE - белый, 7 или LIGHGRAY - светло-серый).

- Одновременная установка цветов символа и фона:

void textattr(int simv+(int fon<<4)); ,где simv - цвет символов, fon-цвет фона.

- Установка вида курсора: void _setcursortype(int cur_t); ,где cur_t: _NOCURSOR - невидимый курсор, _SOLIDCURSOR - прямоугольный курсор, _NORMALCURSOR – обычный курсор в виде символа подчеркивания.