Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Текстовый режим






 

Основным устройством вывода информации является монитор. Он может выводить алфавитно-цифровую и графическую информацию. В текстовом режиме работы монитора минимальным объектом, отображаемом на экране является символ (алфавитно-цифровой или какой-либо другой). В обычных условиях экран монитора, работающий в текстовом режиме может содержать по горизонтали 80 символов и 25 символов по вертикали.

Следует учитывать, что координатная сетка в текстовом (да и в графическом режимах) имеет немного иное расположение, чем декартовая система координат. Точка О(0, 0) находится в левом верхнем углу. Ось абсцисс направлена вправо от этой точки, а ось ординат вниз.

 
 

 


Для использования всех процедур работы в текстовом режиме необходимо подключить стандартный модуль (библиотеку) текстового режима Crt.

Для подключения этого модуля в разделе описания модулей (до раздела описания переменных) необходимо вставить строку: Uses Crt;

Познакомимся с основными процедурами, которые используются при работе в текстовом режиме:

1. Процедура ClrScr; – производит очистку экрана;

2. Процедура GotoXY(x, y: integer); - устанавливает курсор в позицию, определяемую координатами x и y.

3. Процедура Textcolor(Color: byte); - устанавливает цвет выводимых символов.

4. Процедура TextBackground(Color: byte); - устанавливает цвет фона.

 

Встроенные константы Турбо Паскаля, обозначающие цвета, и соответствующие им коды

Цвет Константа Код
Черный Black  
Синий Blue  
Зеленый Green  
Бирюзовый Cyan  
Красный Red  
Розовый Magenta  
Коричневый Brown  
Светло-серый LightGray  
Темно-серый DarkGray  
Светло-синий LightBlue  
Светло-зеленый LightGreen  
Светло-бирюзовый LightCyan  
Светло-красный LightRed  
Светло-розовый LightMagenta  
Желтый Yellow  
Белый White  
Мигающий Черный Black+Blink  
Мигающий Синий Blue+Blink  
Мигающий Зеленый Green+Blink  
Мигающий Бирюзовый Cyan+Blink  
Мигающий Красный Red+Blink  
Мигающий Розовый Magenta+Blink  
Мигающий Коричневый Brown+Blink  
Мигающий Светло-серый LightGray+Blink  
Мигающий Темно-серый DarkGray+Blink  
Мигающий Светло-синий LightBlue+Blink  
Мигающий Светло-зеленый LightGreen+Blink  
Мигающий Светло-бирюзовый LightCyan+Blink  
Мигающий Светло-красный LightRed+Blink  
Мигающий Светло-розовый LightMagenta+Blink  
Мигающий Желтый Yellow+Blink  
Мигающий Белый White+Blink  

 

5. Процедура Delay(MS: Word); - приостанавливает выполнение программы на указанное количество миллисекунд.

 

Для обработки строк в текстовом режиме используются стандартные алгоритмы по обработки строки и стандартные структуры (циклы, ветвления). Просто добавляются процедуры управления цветом и курсором.

Рассмотрим примеры:

Пример 1: Составить программу, которая осуществляет движение заданного текста в заданной строке.

program akran1;

uses crt;

var s, s2: string;

x, y, i: integer;

Begin

TextBackGround (0);

ClrScr;

TextColor (30);

write ('Введите строку: ');

TextColor (10);

readln (s);

s: =s+' ';

TextColor (30);

write ('Введите номер строки: ');

TextColor (10);

readln (y);

TexTBackGround (9);

TextColor (15);

ClrScr;

Repeat

for i: =1 to length (s) do

Begin

s2: = copy (s, 1, i);

gotoxy (80-i, y);

write (s2);

delay (250);

end;

for i: =79- length (s) downto 1 do

Begin

gotoxy (i, y);

write (s2);

delay (250);

end;

for i: =2 to length (s) do

Begin

s2: = copy (s, i, length (s)-i+1);

gotoxy (1, y);

write (s2);

delay (250);

end;

until KeyPressed;

end.

Пример 2: Составить программу, которая осуществляет движение заданного текста в заданной строке посимвольно.

program akran2;

uses crt;

var s, s2: string;

i, x, y, j: integer;

Begin

TextBackGround (0);

ClrScr;

TextColor (10);

write ('Введите строку символов: ');

TextColor (11);

readln (s);

TextColor (10);

write ('Введите номер строки: ');

TextColor (11);

readln (y);

TexTBackGround (0);

TextColor (15);

ClrScr;

Repeat

for i: =1 to length (s) do

Begin

for i: =1 to length (s) do

Begin

textcolor (i);

s2: = copy (s, i, 1);

for x: =80 downto i do

Begin

gotoxy (x, y);

write (s2+' ');

delay (60);

end;

end;

end;

until keypressed;

end.

 

Практическая работа

Вариантызаданий.

 

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

1.1 Дано слово. Вывести его в правом нижнем углу.

1.2 Даны два слова. Объединить их и вывести посередине экрана.

1.3 Даны три слова. Вывести их лесенкой по главной диагонали.

1.4 Даны четыре слова. Вывести их по углам.

1.5 Даны пять слов. Вывести первые четыре по углам, а пятое в середине.

1.6 Даны шесть слов. Вывести их лесенкой по главной диагонали.

1.7 Даны шесть слов. Вывести их лесенкой по побочной диагонали.

1.8 Дано слово из четырех букв. Раскидать его буквы по углам.

1.9 Дано слово из пяти букв. Раскидать его буквы по углам, причем 3 букву поставить в центр.

1.10 Дано слово. Вывести его в строчку всеми возможными цветами.

1.11 Дано слово. Вывести его в столбик первыми 15-ю цветами (учесть, что при совпадении цвета слова и фона не должно быть промежутка).

1.12 Дано слово. Вывести его в столбик первыми 15-ю цветами (учесть, что при совпадении цвета слова и фона не должно быть промежутка и для каждого цвета слова цвет фона должен изменяться).

2. Составить программу для вывода букв заданного слова, в заданной строке на заданном фоне:

2.1 Дано слово. Вывести одним цветом его буквы в строчку.

2.2 Дано слово. Вывести одним цветом его буквы в столбик.

2.3 Дано слово. Вывести разным цветом его буквы в строчку.

2.4 Дано слово. Вывести разным цветом его буквы в столбик.

2.5 Дано слово. Вывести его буквы лесенкой по главной диагонали.

2.6 Дано слово. Вывести его буквы лесенкой по побочной диагонали.

2.7 Дано слово. Вывести его буквы лесенкой по главной и побочной диагонали.

2.8 Дано слово. Начертить с помощью букв этого слова квадрат.

2.9 Дано слово. Вывести это слово в строчку по буквам в каждой заданной строке начиная с исходной.

2.10 Дано слово. Вывести это слово в столбик по буквам 40 раз через пробел.

2.11 Дано слово. Вывести на экран с помощью его букв слово XXL.

2.12 Дано слово. Вывести в одной и той же позиции это слово по буквам разного цвета.

 


Записи

 

Тип запись – это новый тип переменных, который позволяет простым способом объединить различные данные под одним именем.

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

В Паскале для описания типа Запись используется зарезервированное слово Record. В отличии от массива, где различные переменные назывались элементами, запись состоит из полей.

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

Описание записи в языке Паскаль осуществляется с помощью служебного слова Record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом End.

Type < имя записи> = Record

< имя поля 1>: тип поля;

< имя поля 2>: тип поля;

………

< имя поля N>: тип поля;

End;

Var < имя переменной>: < имя записи>;

 

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

type TRec = Record FIO: String [20]; TEL: String [7] end; var rec: TRec;

Описание записей возможно и без использования имени типа, например:

Var < имя переменной>: Record

< имя поля 1>: тип поля;

< имя поля 2>: тип поля;

………

< имя поля N>: тип поля;

End;

Например: var rec: Record FIO: String [20]; TEL: String [7] end;

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

rec.FIO, rec.TEL

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен.

Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения With.

Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:

with rec do оператор;

Здесь rec - имя записи, оператор - оператор, простой или составной. Оператор представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена. Например для нашего случая:

with rec do begin FIO: ='Иванов А.А.'; TEL: ='2223322'; end;

Такая алгоритмическая конструкция полностью идентична следующей:

rec.FIO: ='Иванов А.А.'; rec.TEL: ='2223322';

Инициализация записей может производиться с помощью типизированных констант:

type RecType = Record x, y: Word; ch: Char; dim: Array [1..3] of Byte end; const Rec: RecType = (x: 127; y: 255; ch: 'A'; dim: (2, 4, 8));

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

Например, сконструируем запись, в которой мы будем хранить данные о некоторой геометрической фигуре (отрезок, треугольник, окружность).

type TFigure = record type_ of _figure: string [10]; color_ of _figure: byte;... case integer of 1: (x1, y1, x2, y2: integer); 2: (a1, a2, b1, b2, c1, c2: integer); 3: (x, y: integer; radius: word); end; var figure: TFigure;

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

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

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

Пример записи с вариантами:

 

program example;

Type

seasons = (spring, summer, autumn, winter);

recvar = record

Date: Byte;

case time_for_vacations: seasons of

spring: (ma: (March, April, May));

summer: (grandpa: (June, July. August));

autumn: (grandma: (September, October, November));

winter: (pa: (December. January, February));

end;

Var

my_family: recvar;

Begin

my_family.time_for_vacations: = spring;

my_family.ma: = May;

my_family.time_for_vacations: = winter;

my_family.pa: = December;

my_family.time_for_vacations: = summer;

my_fami1y.grandpa: = August;

my_family.time_for_vacations: = autumn;

my_family.grandma: = September;

End.

 

Практическая работа

Варианты заданий.

 

1. Дана ведомость абитуриентов, сдавших вступительные экзамены в университет. В каждой строке данной ведомости записана фамилия абитуриента, его постоянное место жительства и полученные им оценки по отдельным предметам (например, физике, математике, русскому языку). Необходимо определить количество абитуриентов проживающих в городе Минске и сдавших экзамены со средним баллом не ниже «4».

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

3. У администратора железнодорожных касс хранится информация о свободных местах в поездах по всем направлениям в ближайшую неделю. Данная информация представлена в следующем виде: дата выезда, конечный пункт назначения, время отправления, число свободных купейных мест, число свободных плацкартных мест. Оргкомитет международной конференции обращается к администратору с просьбой зарезервировать 50 купейных мест до Берлина на субботу. При этом время отправления должно быть не позднее 10 часов вечера. Допускается, при отсутствии свободных купейных мест, замена их на плацкартные места. Вывести на печать время отправления или сообщение о невозможности выполнить заказ в полном объеме.

 


1 Активным называется окно с которым пользователь работает в данный момент, тот в котором находится курсор.

2 ТР7 создаёт специальный буфер изменений для каждой страницы редактора. Буфер обмена – это специальная промежуточная память, в которой хранятся все действия, которые пользователь производит в окне редактора.

1 Идентификаторы – это имена переменных. Более подробно о них будет рассказано ниже.

 

1 Формат – это правило записи команд

1 О строковых операциях будет рассказано в теме «Литерный величины»

1 Телом программы называется место в программе, где располагаются все основные команды программы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.