Консольний обмін даними
Завантажити презентаціюПрезентація по слайдам:
Консольний обмін даними Обмін інформацією з користувачем завдяки введенню даних з клавіатури та відображенню результатів виконання програми на екрані монітора називають консольним введенням/виведенням даних. Бібліотека системи Borland C містить набір функцій, які надають користувачеві додаткові можливості щодо керування формою відображення інформації на екрані та способом введення даних з клавіатури. Прототипи всіх функцій консольного введення/виведення інформації оголошені в заголовному файлі .
Керування консольним виведенням текстової інформації Всі функції консольного виведення інформації можна поділити на шість груп: встановлення заданого текстового режиму: textmode(); встановлення атрибутів символів: textcolor(), textbackground(), textattr(), highvideo(), lowvideo(), normvideo(); формування текстових вікон та роботи з вікнами: window(), clrscr(), gettextinfo(), gettext(), puttext(), movetext();
виведення символів, рядків і числових данних: putch(), cputs(), cprintf(); редагування тексту у вікні екрана: clreol(), delline(), insline(); керування текстовим курсором: gotoxy(), wherex(), wherey(), _setcursortype(); Стандартні текстові режимивідеоадаптерів: 25 рядків по 40 символів – режими 0 та 1 25 рядків по 80 символів – режими 2, 3 та 7 50 рядків по 80 символів – режими 64 Основним є режим номер 3.
Змінити текстовий режим можна функцією: void textmode (int tmode); Параметр tmode можна задавати числовим значенням номеру режиму або іменованою константою (BW40 – режим 0, C40 – режим 1, …. ). Усі режими, крім 7, кольорові та дають змогу відтворювати символи з використанням 16-колірної палітри. Зміна режиму пов’язана з очищенням відеопам’яті – попереднє зображення витирається, відновлюються встановлені на момент запуску програми атрибути символів, курсор переводиться в позицію (1, 1).
Встановлення атрибутів символів Кожен символ екрана (знакомісце) займає у відеопам’яті 2 байта: молодший містить ASCII-код символу, а старший – атрибути символа. Структура байта атрибутів і призначення кожного біта: 0..2 – колір символа; 3 – яскравість кольору символа; 4..6 – колір фону; 7 – яскравість фона/ефект блимання. Стандартно встановлюється світло-сірий колір символів і чорний колір фону (байт атрибутів 00000111 )
Кольори можуть задаватись числовими значеннями або константами ( які оголошені в ): 0 – BLACK , 1 – BLUE , 2 – GREEN , … , 15 - WHITE Зміна кольору символів здійснюється функцією void textcolor (int color); Якщо додати до значення кольору константу BLINK (її значення 128), то символи на екрані блиматимуть. Встановлення кольору фону: void textbackground (int bkcolor); Стандартна палітра кольорів фону обмежена значеннями від 0 до 7.
Формування текстових вікон Активним вікном називають прямокутну область екрана, в межах якої здійснюється поточне виведення текстових повідомлень. Для активізації текстового вікна призначена функція void window ( int left, int top, int right, int bot ); Параметри задають позицію лівого верхнього кута ( left - горизонтальна, top - вертикальна координати ) та знакомісце правого нижнього кута вікна. Координати вказуються відносно початку екрана (1, 1) . Наступні операції виведення відображатимуть інформацію в межах вікна.
(1, 1) (80, 25) Відкриття екрана не очищує його. Щоб звільнити вікно від попередніх даних і зафарбувати поточним кольором фону, використовують функцію void clrscr (void); Для створення вікна виділеного рамкою виконують такі дії: виводять рамку вікна в повноекранному режимі, потім відкривають вікно всередині рамки.
Для формування рамки використовують символи псевдографіки. Інформацію про параметри активного вікна можна отримати через функцію void gettextinfo (struct text_info * winf); У результаті виклику функції заповнюється структура (оголошена в ) з інформацією про поточні параметри вікна: координати, атрибути символів позиція текстового курсору та відеохарактеристики.
Виведення тексту у вікно екрана Консольне виведення здійснюється в межах активного вікна. У разі досягнення правої межі вікна виведення тексту продовжується з початку наступного рядка. Коли текст виходить за нижню праву межу вікна, відбувається автоматичний вертикальний скролінг. Виведення окремного символа у поточну позицію здійснює функція int putch (int ch); Виведення символьного рядку int cputs (const char * str );
Приклад – кожен символ рядка функція відображає іншим кольором, а колір фону встановлює інверсним до кольору символа. void OutColorText (char * text) { char *ps = text; int col = 0; /*колір символів*/ while ( *ps ! = `\0`) { textcolor (col); textbackground (~col); /*інверсний колір фону*/
putch (*ps++); if (++col >15) /*зміна кольору*/ col = 0; } putch (`\r`); /*перехід на початок*/ putch (`\n`); /*нового рядка*/ } Форматне виведення даних int cprintf (const char * format, … ) є аналогом бібліотечної функції printf (). Ця функція ( як і cputs() не переводить курсор на початок наступного рядка).
Редагування рядків вікна Функції що працюють з рядками активного текстового вікна: void clreol (void); витирає вміст частини рядка починаючи від поточної позиції курсору до правої межі текстового вікна void delline (void); видаляє рядок активного вікна, на якому в даний момент розміщений курсор. Всі наступні рядки зсуваються на угору. void insline (void); вставляє порожній рядок. Всі наступні зсуваються вниз. Якщо останній рядок виходить за межі вікна, він втрачається.
Керування текстовим курсором void gotoxy ( int col, int row ); переміщує курсор у задану позицію активного вікна int wherex (void); int wherey (void); повертає поточні горизонтальну та вертикальну координати курсору void _setcursortype (int cform); встановлює тип курсору. Параметр cform може приймати значення: 0 – невидимий курсор 1 – високий курсор 2 – звичайний курсор
Схожі презентації
Категорії