Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 25.11.2008 | Доступ: свободный | Студентов: 9260 / 1219 | Оценка: 4.06 / 3.66 | Длительность: 21:16:00
Лекция 5:

Системные данные текстового типа

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

4.6. Управление дисплеем в текстовом режиме

При запуске приложения MS-DOS или консольных приложений дисплей работает в текстовом режиме (в Windows такой режим эмулируется), для которого характерно разделение экрана на строки и столбцы (обычно строк 25, а столбцов 80, но существуют и другие текстовые режимы). На каждом пересечении строки и столбца находится условный прямоугольникзнакоместо, в котором размещается отображаемый символ. На экране выделяется текущее знакоместо, помеченное мерцающим курсором (мигающей черточкой или прямоугольником). Именно в этой позиции появляется символ, набираемый пользователем на клавиатуре, или символ, отображаемый программой.

Системы программирования на базе языка C, предоставляют пользователю некоторый набор возможностей по размещению информации на площади экрана и по управлению цветовыми атрибутами отображаемых символов.

Очистку экрана выполняет функция clrscr(), ее название образовано от сокращения английских слов clear (очистить) и screen (экран).

Для перемещения курсора в заданную позицию экрана используется функция gotoxy(x,y). Ее аргументы определяют номер столбца x ( 0<=x<80 ) и строки y ( 0<=y<25 ) того знакоместа, которое станет текущим.

Функция window(x1,y1,x2,y2) позволяет выделить на экране прямоугольную область, в пределах которой будет происходить вывод. По умолчанию областью вывода считается весь экран, его левому верхнему углу соответствуют нулевой столбец и нулевая строка, а правому нижнему углу – 79-й столбец и 24-я строка. Иногда бывает полезно сузить область вывода с тем, чтобы в оставшейся части экрана расположить какую-то заготовку (формуляр бланка, например, или другую пояснительную информацию, не затираемую выводимыми данными и не смещающуюся при выводе). Знакоместо с координатами ( x1,y1 ) задает положение левого верхнего угла окна вывода, а знакоместо с координатами ( x2,y2 ) – положение правого нижнего угла окна вывода.

Так как почти все современные дисплеи цветные, то текстовый режим предоставляет возможность раскрасить каждый выводимый символ. При этом имеется возможность автономно задать цвет фона знакоместа и цвет контура отображаемого символа. Дело в том, что в текстовом режиме для каждого символа, отображаемого на экране, выделено 2 информационных байта. В первом байте располагается код ASCII символа, а во втором хранятся его цветовые атрибуты (рис. 4.2)

Цветовые атрибуты

Рис. 4.2. Цветовые атрибуты

Цвет формируется в результате наложения трех цветовых компонент – красного ( R ), зеленого ( G ) и синего ( B ). Цвет символа может иметь повышенную яркость (признак J=1 ). Для привлечения внимания к сообщению на экране символ можно заставить мерцать (признак M=1 ).

Для установки цвета символов во всех сообщениях, выдаваемых с помощью функции cprintf, предназначена функция textcolor(fc). Ее аргумент должен принадлежать диапазону [0, 15]. Цвет фона для последующего вывода по cprintf устанавливается с помощью функции textbackground(bc). Имеется возможность произвести установку цветовых атрибутов за один раз, обратившись к функции textattr. Ее единственным аргументом может быть одно из двух следующих выражений:

(bc<<4)+fc      //цвет фона и цвет символов
128+(bc<<4)+fc  //мерцание, цвет фона и цвет символов

В качестве примера вывода разноцветного текста приведем следующую программу:

#include <conio.h>
void main()
{ int j;
  textbackground(0);
  clrscr();
  for(j=0; j<24; j++)
  { gotoxy(2*j+1,j+1);
    textcolor(128+j);
    textbackground(j+2);
    cprintf("Color palette");
  } 
  getch();
}
< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Alexey Ku
Alexey Ku

Попробуйте часть кода до слова main заменить на 

#include "stdafx.h" //1

#include <iostream> //2
#include <conio.h>

using namespace std; //3

Александр Талеев
Александр Талеев

#include <iostream.h>
#include <conio.h>
int main(void)
{
int a,b,max;
cout << "a=5";
cin >> a;
cout <<"b=3";
cin >> b;
if(a>b) max=a;
else max=b;
cout <<" max="<<max;
getch();
return 0;
}

при запуске в visual express выдает ошибки 

Ошибка    1    error C1083: Не удается открыть файл включение: iostream.h: No such file or directory    c:\users\саня\documents\visual studio 2012\projects\проект3\проект3\исходный код.cpp    1    1    Проект3

    2    IntelliSense: не удается открыть источник файл "iostream.h"    c:\Users\Саня\Documents\Visual Studio 2012\Projects\Проект3\Проект3\Исходный код.cpp    1    1    Проект3

    3    IntelliSense: идентификатор "cout" не определен    c:\Users\Саня\Documents\Visual Studio 2012\Projects\Проект3\Проект3\Исходный код.cpp    6    1    Проект3

    4    IntelliSense: идентификатор "cin" не определен    c:\Users\Саня\Documents\Visual Studio 2012\Projects\Проект3\Проект3\Исходный код.cpp    7    1    Проект3

при создании файла я выбрал пустой проект. Может нужно было выбрать консольное приложение?

 

 

 

Игорь Матусевич
Игорь Матусевич
Россия
Александр Мельников
Александр Мельников
Россия