Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алг.и.осн.прог.Лаба.№6.doc
Скачиваний:
20
Добавлен:
10.02.2016
Размер:
1.38 Mб
Скачать

Лабораторная работа №6

Управление выводом данных на экран

Цель работы:получение навыков работы с функциями вывода данных на экран в текстовом режиме

Задания для подготовки к работе

  1. Разработать алгоритм и составить программу для решения задачис учетом вывода данных на экран в текстовом режиме

  2. Подобрать наборы тестовых данных.

Содержание отчета

  1. Описание используемых структур данных.

  2. Наборы тестовых данных с обоснованием их выбора.

  3. Текст программы.

  4. Описание и анализ ошибок, выявленных при отладке программы.

Краткие теоретические сведения

Для работы в текстовом режиме под *nixнеобходимо использовать библиотеку (n)curses. Её можно загрузить через менеджер пакетов, либо набрав в терминале:

sudo apt-get install libncurses5-dev

Кроме того, при компиляции проекта необходимо добавить параметр "-lncurses".

Если вы компилируете проект при помощи консоли, то параметр добавляется при финальной линковке:

g++ myProg.cpp -o myProg -lncurses

Если вы используете Code::Blocks, то для добавления параметра необходимо нажать правой кнопкой мыши на имя вашего проекта и выбрать пункт "Properties...".

В появившемся окне нажать кнопку "Project's build options..." в правом нижнем углу.

Наконец, во вкладке "Linker settings" в поле "Other linker options" добавить упомянутый параметр:

Сама библиотека подключается так:

#include <ncurses.h>

Если вы работаете под Windows, то можно использовать библиотеку "Public Domain Curses" ("pdcurses"), доступную по адресу:http://sourceforge.net/projects/pdcurses/files/latest/download

Для подключения этой библиотеки к проекту, необходимо распаковать архив в какую-либо папку, в свойствах проекта, в вашей среде разработки добавить параметры "Compiler Search Directories" и "Linker Search Directories", где указать пусть к распакованным файлам. А библиотеку "pdcurses.lib" необходимо подключить к самому проекту, используя параметр "Link library...".

Однако в коде программы библиотека подключается как

#include <curses.h>

Например, для Code::Blocksпод Windows это выглядит так:

И подключенная библиотека:

Для подключения библиотеки к другим средам разработки обращайтесь за помощью к преподавателю, либо разбирайтесь сами.

Работа с библиотекой ncurses.

Каждая программа, использующая ncurses, должна иметь следующую структуру:

#include <ncurses.h>

...

initscr(); // инициализация работы ncurses

работа с ncurses

endwin(); // завершение работы с ncurses

Вывод

Вывод символа

int addch(const chtype ch)

выводит символ ch в текущую позицию курсора и перемещает курсор на один символ вправо или в начало следующей строки, если курсор находится у правой границы экрана. (аналогична функции putcharиз<stdio.h>)chtypeтип символов с которыми работаетncurses(он включает в себя код символа, цвет и дополнительные атрибуты).

Вставка символа

int insch(chtype ch)

вставляет символ chслева от курсора и все символы стоящие после курсора перемещаются на одну позицию вправо.

Вывод строки с преобразованием по формату

int printw(const char *fmt,...)

пример:

...

i=1;

printw("Значение i=%d",i);

...

выведет Значение i=1

(аналогична функции printf)

Вывод строки типа chtype*

int addchnstr(const chtype *chstr, int n)

выводит первые nсимволов или всю строку символовchstr, если n=-1 в позицию, где расположен курсор.

Вывод строки типа char*

int addstr(const char *str)

выводит строку strв позицию, где расположен курсор.

Вставка строки

int insnstr(const char* str, int n)

вставляет первые n символов или всю строку символов str, если n=-1 в позицию, где расположен курсор. (положение курсора не изменяется, то что стояло справа от курсора сдвигается вправо)

Вставка пустой строки

int insertln()

вставляет пустую строку (строки стоящие ниже начиная с текущей сдвигаются вниз на одну строку)

Режимы вывода

Для символов типа chtypeможно устанавливать такие атрибуты, как мигание или цвет символа и фона. Для добавления символу атрибута мигания нужно включить флажокA_BLINK. Делается это так:

chtype ch = 'w' | A_BLINK;

Теперь при выводе этого символа он будет мигать, если конечно это позволяет сделать терминал. (A_DIM- пониженная яркость,A_BOLD- повышенная яркость,A_NORMAL- нормальное отображение,A_UNDERLINE- подчёркнутый,A_REVERSE- инверсный)

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

...

chtype ch;

...