На головну

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

Основним пристроєм виведення інформації є монітор. Він може виводити алфавітно-цифрову і графічну інформацію. У текстовому режимі роботи монітора мінімальним об'єктом, який відображається на екрані є символ (алфавітно-цифровий або будь-якої іншої). У звичайних умовах екран монітора, що працює в текстовому режимі може містити по горизонталі 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. За допомогою записів з варіантами ви можете одночасно зберігати різні структури даних, які мають велику загальну частина, однакову в усі структурах, і деякі невеликі відрізняються частини.

Наприклад, сконструюємо запис, в якій ми будемо зберігати дані про деяку геометричної фігури (відрізок, трикутник, коло).

typeTFigure = 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 Тілом програми називається місце в програмі, де розташовуються всі основні команди програми.



Then ... | Становлення і розвиток кінорежисури

Практична робота | Одномірні і двовимірні масиви | одномірні масиви | літерні величини | Практична робота | Підпрограми-функції. | Підпрограми-процедури. | Модулі. | Практична робота | Файловий тип даних |

© um.co.ua - учбові матеріали та реферати