Позиционирование курсора


Ввод-вывод информации на экран монитора выполняется с текущей позиции строки, определяемой месторасположением курсора. При необходимости указания конкретных точек начала ввода-вывода используется специальная функция позиционирования курсора. Вызов функции оформляется оператором следующей структуры:

gotoxy( поз_x , поз_y );

, где gotoxy – имя функции (перейти к x,y );

поз_x – координата столбца;

поз_y – координата строки;

( , ) – ограничители и разделитель аргументов функции;

; – признак простого оператора.

ü Внимание ! Функция используется только при работе с экраном монитора, для принтера – неприменима.

Функция предписывает установку курсора в позицию, задаваемую координатами. В качестве координат используются целые константы, переменные, арифметические выражения. Размеры экрана монитора составляют 80 столбцов на 25 строк. Поэтому диапазон изменения координаты x (столбца) от 1 до 80, а диапазон координаты y (строки) от 1 до 25.

Например, оператор gotoxy( 40 , 12 ); предписывает установку курсора в центр экрана монитора, а фрагмент программы

 

определяет начальную позицию поля (3-й столбец 5-й строки) для ввода численного значения вещественной переменной r.

Предлагаемый фрагмент позволяет вводить информацию в конкретные поля заранее заготовленной таблицы.

Так при желании ввести численные значения индексированной переменной xi в таблицу формируется её шаблон:

 

Оператор вывода таблицы на экран вставляется в программу до операторов ввода численных значений таблицы.

 

 

При этом фрагмент программы ввода имеет вид

int s, k;

. . .

gotoxy( s , k );

scanf("%f" , &x[0] );

gotoxy( s , k+2 );

scanf("%f" , &x[1] );

. . .

До начала использования функции позиционирования необходимо сформировать численные значения s и k. Например, s=7 (4 пробела до таблицы + 1 ограничитель + 1 пробел + 1-я позиция ввода), k=4 (3 строки шапка + 1 строка ввода).

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

Фрагмент программы для вывода таблицы, начиная с задаваемой координатами (s, k) позиции, может иметь вид

int s, k;

. . .

scanf(“%d%d”,&s,&k);

. . .

gotoxy( s , k );

printf("+––––––––+–––––––––+");

gotoxy( s , k+1 );

printf("| x(i) | y(i) |");

gotoxy( s , k+2 );

printf("+––––––––+–––––––––+");

. . .

gotoxy( s , k+3+i ); /* в теле цикла до оператора вывода */

printf("| %6.2f | %7.2f |", x[i] , y[i]);

. . .