рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Var TextAttr : Byte

Var TextAttr : Byte - раздел Транспорт, От автора В Ней Содержится Текущий Цвет Фона И Цвет Символов, Используемые При Выводе Н...

В ней содержится текущий цвет фона и цвет символов, используемые при выводе на экран процедурами Write иWriteLn. Изменив эту переменную, вы задаете новый цветовой атрибут. Цветовой атрибут строится следующим образом: в четырех младших битах хранится цвет символов (от 0 до 15), в следующих трех битах - цвет фона (от 0 до 7), и старший бит отвечает за мерцание. Пусть, например, значение переменной TextAttr равно 237, в двоичной записи - это 11101101 (если записывать биты в последовательности от старшего к младшему). Четыре младших бита 1101 дают цвет символов 13, или LightMagenta – светло-малиновый, следующие 3 бита 110 дают цвет фона 6, или Brown- коричневый, старший бит - единичный. Таким образом, будут выводиться мерцающие светло-малиновые символы на коричневом фоне. Из сказанного ясно, что цветовые константы Black ... White определены в Crt точно так же, как и в модулеGraph. Кроме того, определена константа мерцания Blink = 128. Теперь построим нужный цветовой атрибут сами: мы хотим вывести желтые мерцающие символы на светло-сером фоне. Переменной TextAttr необходимо присвоить значение 14 (желтые символы) +7 (серый фон) * 16 + 128 (мерцание), итого 14+112+128=254. Столь сложных вычислений легко избежать, если пользоваться 16-ричными числами, наш атрибут в 16-ричном виде записывается как $7E+Blink. Теперь рассмотрим некоторые функции и процедуры модуля CRT.

1. Function KeyPressed : Boolean - возвращает True, если буфер клавиатуры не пуст (все нажатия клавиш во время работы программы накапливаются в специальном участке памяти - буфере клавиатуры, откуда затем поступают в программу). Функция не очищает буфер клавиатуры.

2. Function ReadKey : Char - считывает символ из буфера клавиатуры, если буфер пуст, то ожидает нажатия клавиши. Эту функцию удобно использовать для организации пауз в программе.

3. Procedure Delay(MS: Word) - приостанавливает выполнение программы на MS миллисекунд.

4. Procedure Sound(Hz: Word)- генерирует звуковой сигнал с частотой Hz герц.

5. Procedure NoSound - выключает звуковой сигнал.

6. Procedure Window(X1,Y1,X2,Y2:Byte) - инициализирует текстовое окно, заданное координатами верхнего левого и нижнего правого угла. Текстовое окно - это прямоугольная область на экране, куда направляется весь вывод. Процедура не выполняет никаких видимых действий.

7. Procedure TextBackground(Color: Byte) - задает цвет фона для всего последующего вывода.

8. Procedure TextColor(Color: Byte)- задает цвет символов для всего последующего вывода. Процедуры TextBackground и TextColor вместе обеспечивают те же возможности, что и переменная TextAttr.

9. Procedure ClrScr - очищает текущее окно, используя текущий фоновый цвет.

10. Procedure GotoXY(X,Y:Byte) - перемещает курсор в позицию X строки Y текущего окна. Координаты отсчитываются от левого верхнего угла окна.

11. Function WhereX : Byte

12. Function WhereY : Byte - возвращают текущие относительные координаты курсора (позицию и строку).

13. Procedure DelLine - удаляет строку окна, в которой находится курсор, все нижние строки автоматически смещаются вверх.

14. Procedure InsLine - вставляет пустую строку перед строкой, в которой находится курсор, все нижние строки автоматически смещаются вниз, и последняя строка окна теряется.

Воспользуемся средствами модуля Crt, чтобы создать на текстовом экране меню, подобное главному меню среды программирования Turbo Pascal.

 

Uses Crt;

Const

N = 10; {количество тем в меню}

Item : Array[1..N] Of String[7]=('File','Edit','Search','Run','Compile', 'Debug', 'Tools', 'Options','Window','Help'); {названия тем}

Pos : Array[1..N] Of Byte=(3,9,15,23,28,37,44,51,60,68); {положения тем в меню}

Screen_Color = 1; {цвет экрана}

Menu_Color = 7; {фоновый цвет меню}

Item_Color = 0; {цвет невыделенных символов}

Hilite_Color = 4; {цвет "подсвеченных" символов в названиях тем}

Select_Color = 2; {фоновый цвет выделенной темы в меню}

Row = 1; {номер строки, в которой размещается меню}

Procedure PrintItem(t:Byte);

{процедура выводит название темы в нужное место}

Begin

TextColor(Hilite_Color); {первый символ в каждой теме "подсвечен"}

GotoXY(Pos[t],1);

Write(' ',Item[t][1]);

TextColor(Item_Color); {остальные символы не выделены}

Write(Copy(Item[t],2,Length(Item[t])-1),' ');

GotoXY(80,1); {спрятали курсор}

End;

 

Type KeyType = (kbNone,kbEsc,kbF10,kbAltX,kbLeft,kbRight);

{клавиши, которые нужны программе}

Function GetKey:KeyType; {функция, определяющая, какая клавиша нажата}

Var ch : Char;

Begin

ch:=ReadKey;

Case ch Of

#27 : GetKey:=kbEsc;

#0 : Begin {остальные четыре клавиши генерируют два символа, первый из которых #0}

ch:=ReadKey;

Case ch Of

#75:GetKey:=kbLeft;

#77:GetKey:=kbRight;

#68:GetKey:=kbF10;

#45:GetKey:=kbAltX;

Else GetKey:=kbNone;

End;

End;

Else GetKey:=kbNone;

End;

End;

 

Var

t : Byte;

Key : KeyType;

Select : Byte;

Begin

{закрасим экран в фоновый цвет}

TextBackground(Screen_Color);

Window(1,1,80,25);

ClrScr;

{нарисуем меню}

TextBackground(Menu_Color);

Window(1,Row,80,Row);

ClrScr;

For t:=1 To 10 Do PrintItem(t);

Select:=1; {номер выделенной темы}

Repeat

Key:=GetKey;

If Key=kbAltX Then Break; {программа завершается}

If Key<>kbF10 Then Continue; {ждем нажатия клавиши F10}

TextBackground(Select_Color); {выделяем активную тему в меню}

PrintItem(Select);

Repeat {теперь меню активно}

Key:=GetKey;

If Key In [kbNone,kbAltX,kbF10] Then Continue; {эти клавиши в меню никаких функций не выполняют}

{отменяем выделение активной темы}

TextBackground(Menu_Color);

PrintItem(Select);

Case Key Of

kbLeft : Begin

Dec(Select);

If Select<1 Then Select:=N;

End;

kbRight : Begin

Inc(Select);

If Select>N Then Select:=1;

End;

kbEsc : Break; {выход из меню}

End;

{выделяем новую активную тему}

TextBackground(Select_Color);

PrintItem(Select);

Until False;

Until False;

{перед завершением программы почистим экран}

Window(1,1,80,25);

TextAttr:=$07;

ClrScr;

End.

 

Вообще говоря, построение интерфейса не требует каких-либо специальных знаний. Главным образом следует руководствоваться здравым смыслом. Но некоторые простейшие правила можно привести :

- на экране не должно быть “мусора”;

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

- неверный ввод данных не должен приводить к аварийному завершению программы;

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

– Конец работы –

Эта тема принадлежит разделу:

От автора

B r... Теперь мы можем присвоить переменным их значения...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Var TextAttr : Byte

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

Round(x) - округленное до целого вещественное число, преобразованное к типуLongInt
6. Sqr(x) - квадрат числа 7. Sqrt(x) - квадратный корень 8. Exp(x) - экспонента 9. Ln

Символьный тип данных
Для хранения символьной информации в Паскале предусмотрен специальный тип данных Char. Допустимы переменные, нетипизированные и типизированные константы такого типа. Данные типа

Caseвыражение Of
список значений : оператор/блок .................................. список значений: оператор/блок

Процедуры и функции. Сфера действия описаний
В языке Паскаль (как вы уже поняли из предыдущего материала) существуют понятия процедуры и функции. Процедуры и функции можно определить как замкнут

Открытые массивы и нетипизированные параметры
Из предыдущего раздела мы узнали, что параметры подпрограмм описываются как [Var] имя : имя типа , это правда, но не вся правда - существует еще два

Множества
Понятие множества в Паскале очень близко к математическому определению: множество - это совокупность однотипных неиндексированных объектов. Множества

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

Особенности вещественных вычислений
В отличие от целочисленных выражений, которые всегда вычисляются точно, вещественные выражения дают приближенный результат и вещественные переменные содержат приближенные значения. Это обстоятельст

Case тип Of
константа 1 : (описание поля); константа 2 : (описание поля); .....................

Модуль Crt
Crt - еще один стандартный модуль Паскаля, в котором содержатся разнообразные средства консольного ввода-вывода (то есть ввода с клавиатуры и вывода на текстовый экран). Процедуры

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

Type SearchRec=Record
Fill : Array[1..21] of Byte; Attr : Byte; Time : LongInt; Size : LongInt; Name : Stri

Процедурные типы
Язык Паскаль позволяет использовать в программе данные типа “процедура” или типа “функция”. Такие данные можно передавать как аргументы подпрограмм, можно описывать и использовать массивы процедур

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

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

Открытые строки
  Открытыми строками, или длинными строками, или C-строками, называются символьные последовательности длиной до 65535 символов, ограниченные справа нуль-символ

Использование командной строки и вызов внешних программ
Паскаль позволяет передавать информацию в программу при ее запуске через командную строку. Для этого служат две стандартные функции -ParamCount и ParamStr.

Обработка программных прерываний
Программное прерывание - это ситуация, возникающая, когда дальнейшее выполнение программы невозможно. Например, деление на ноль, переполнение, ошибка Range check error, обращение по неверному адрес

Объекты
Объектом в языке Паскаль называется совокупность данных и подпрограмм, обрабатывающих эти данные. Программирование с использованием объектов называется объектно-о

Type имя типа=Object
описание полей описание методов End; Поля объектов описываются так же, как поля записей, а описание метода - это заголовок процедуры или функции. Сами методы распол

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

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

Стеки и очереди
Значение стека как структуры данных в программировании не исчерпывается лишь стеком отложенных заданий. В этом разделе мы решим с помощью стека задачу о вычислении значения арифметического выражени

Комбинаторные алгоритмы
В этом разделе мы рассмотрим три наиболее важные задачи комбинаторики: нахождение всех подмножеств множества из n элементов; нахождение всех выборок по m элементов из n элементов и нахождение всех

Бинарные деревья
В этом разделе мы рассмотрим различные алгоритмы обхода бинарного дерева. К алгоритмам создания бинарного дерева мы обратимся несколько позже, а пока будем считать, что дере

Упорядоченные бинарные деревья и приоритетные очереди
Упорядоченным бинарным деревом, или бинарным деревом поиска, называют дерево, в любой части которого элементы левого поддерева меньше корневого элеме

Алгоритмы сортировки
В этом разделе мы рассмотрим различные алгоритмы решения задачи сортировки. Задача сортировки ставится следующим образом: дана последовательность записей R1,R

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги