на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Типи даних алгоритмічної мови TURBO Pascal. Стандартні функції і оператори роботи з рядками
p align="left">var

A,B : real;

i, N : integer;

X, Y : array [1..5] of real;

begin

read (A, B, N);

for i := 1 to N do

begin

read ( X [i] );

Y [i] := (A + B + X[i])/2;

Write ( Y [i] );

end;

end.

Завдання 1: (масиви)

Введення одномірного масиву і виведення у вигляді:

а) вектора-рядка;

б) вектора-стовпчика.

a) Var M : array [1..10] of real;

i : integer;

begin

i := 0;

repeat

i := i + 1;

reat (M [i] );

until i =10 ;

for i := 1 to 10 do

write (X [i] : 5 : 2,'');

end.

b) Var M : array [1..10] of real;

i : integer;

begin

i := 0;

repeat

i := i + 1;

reat (M [i] );

until i =10 ;

for i := 1 to 10 do

writeln (X [i] : 5 : 2);

end.

4. Стандартні модулі ТР. Їх призначення

Модуль - це окремо транслюєма програмна одиниця.

Підключення модуля до програми виконують за допомогою ключового слова:

USES <ім'я модуля>.

Основна частина засобів ТР розташована в стандартних модулях, які поставляються разом з компілятором.

Існує вісім стандартних модулів:

SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3, GRAPH3

Модуль SYSTEM - основний, в який входять всі процедури і функції стандартного Паскаля і ТР. Він підключається автоматично і не потребує запрошення USES.

Модуль DOS - призначений для забезпечення інтерфейса з програмами ОС.

Модуль CRT - містить засоби керування дисплеєм в текстовому режимі, клавіатурою, динаміком. За допомогою його процедур можна змінювати колір, створювати вікна, звукові тона.

Модуль PRINTER - забезпечує зв'язок між процесором і принтером.

Модуль GRAPH - містить 90 графічних процедур і функцій, які дозволяють відтворювати на екрані точки, відрізки, кола та ін.. фігури різних кольорів і розмірів; засоби замальовування та виводу тексту у графічному режимі.

Модуль OVERLAY - розбиває великі програми на сегменти перекриття (оверлейні сегменти), які використовують загальну область пам'яті.

Модуль TURBO3 i GRAPH3 - для сумісності з версією ТР 3.0.

SYSTEM, CRT, DOS розміщені у файлі TURBO.TPL. GRAPH - окремий файл GRAPH.TPU.

Всі модулі крім SYSTEM стають доступними після їх підключення:

USES <ім'я модуля>.

5. Символьні масиви

Символьний тип даних дозволяє працювати з окремими символами тексту. Для обробки більшої кількості текстових одиниць використовують символьні масиви або рядкові типи даних.

Розглянемо одномірні масиви, які складаються з елементів символьного типу (Char).

Наприклад:

Var

S: array [1..12] of char;

Паскаль містить деякі додаткові засоби роботи з такими масивами:

Конкретні значення символьних масивів записують за допомогою зображення рядка та використання їх в присвоюванні та передачі параметрів:

S: = `Приклад рядка';

Зображення рядка будується з символів масиву і обмежується апострофами.

Якщо необхідно задати апостроф, то його удвоюють {` ” '}.

Допускають формування рядків з використанням десяткових кодів символів і спеціальних позначень: ( #7#17C^A^B…)

для символьних масивів операцію “+” конкатенації (зчеплення, поєднання). Смисл операції полягає у формуванні нового символьного масиву, кількість елементів якого дорівнює сумі розмірів масивів - операндів, а значення елементів - елементи масивів, які розміщюються послідовно один за одним.

Приклад:

Var S1 : array [1..8] of char;

S2 : array [1..5] of char;

Begin

S1 := 'рядковий';

S2 := 'масив';

Writln (S1+' '+S2);

{результат: на екрані}

end.

Особливість:

в операторах присвоювання рядків символьним масивам необхідна точна відповідність довжини рядків і розмірів масивів;

операція конкатенація для символьних масивів не допускається у правій частині присвоювання.

Приклад: S : S1+' '+S2; {помилка}

У таких випадках необхідно використовувати рядки, тобто рядкові типи даних.

6. Визначення рядкового типу даних

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

При використанні у виразах рядок обмежується апострофами. Кількість символів в рядку (довжина рядка) може динамічно змінюватись від 0 до 255.

Для визначення рядкових даних використовується ідентифікатор STRING, за якими у квадратних дужках вказується максимальна довжина рядка. Якщо значення не вказане, то по замовченню довжина рядка встановлюється 255 байт.

Приклад:

Line: string [80];

Line 1: string ;

Line 2: string [255];

В приведеному прикладі змінна Line може мати будь-яку послідовність символів (кожен з яких має стандартний тип char) довільної довжини в межах від 0 до 80 символів; Line1 і Line2 - від 0 до 255 символів.

Таким чином, важливіша різниця між рядками і символьними масивами, що рядки можуть динамічно змінювати свою довжину.

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

Рядкові дані також можна використовувати у програмі як константу.

Формат:

type

<ім'я типа > = string [max довжина рядка];

var

< ідентифікатор > : <ім'я типа >;

або

var

< ідентифікатор > : string [max довжина рядка];

Приклад:

Const

address = `пл. Соборна, 1';

Type Line = string [125];

Var

S1 : Line;

S2 : string;

S3 : string [50];

Механізм динамічних рядків реалізований в мові Турбо-Паскаль достатньо просто. Для рядкових змінних пам'ять виділяється відповідно максимального значення, а використовується лише частина, яка реально зайнята символами рядка у даний час, тобто для N символів виділяється N+1 байт пам'яті, із яких N байт призначено для зберігання символів рядка, а 1 байт - для значення поточної довжини цього рядка:

Елементи рядка нумеруються цілими числами, починаючи з 1. Це іноді використовують для визначення поточної довжини рядка.

Наприклад:

Line:= ` '; {пустий рядок}

WriteLn (ORD (Line [0] )); {на екрані число 0}

Line : =`ABCD';

WriteLn (ORD (Line [0])); {на екрані число 4}

Однак, для визначення поточної довжини рядка, як правило, використовують стандартну функцію length, яке повертає ціле значення поточної довжини рядка. Але це ми розглянемо далі.

У разі присвоювання рядковій змінній виразу з довжиною більше ніж максимально допустимо для даної змінної, то символи за межами максимальної довжини не використовуються (вилучаються). Ця ситуація не є помилковою, тому переривання виконання програми у даному випадку не відбувається.

Наприклад:

Var Line : string [4];

Begin

Line:= ` дуже довгий рядок';

WriteLn (Line);

Таким чином рядки можуть змінювати свою довжину.

7. Основні операції над рядковими даними

Над рядковими даними виконують такі операції :

1.присвоювання (:=);

2.ввод (Read);

3.вивод(Write);

4.порівняння (відношення);

5.поєднання (зчеплення, конкатенації, - ,+).

Перші три операції виконуються стандартно, без особливостей. Тому розглянемо дві останні операції.

Операція конкатенації.

Використовується для зчеплення декількох рядків в один, при чому довжина результуючого рядка не повинна перевищувати 255 символів (або вказану довжину N). Інакше останні символи будуть відкинуті.

Приклади:

st := `a'+'b';

st := st + `c';

writeLn (`st = `, st) {результат st =abc}

var st :

string [2];

begin

st :='1' + `2' + `3';

writeLn (st) {на екрані 12}

end.

Операції порівняння (відношення).

Проводить порівняння двох рядкових операндів за допомогою стандартних операторів: = , <>, >, <, >=, <=.

Правила порівняння:

проводиться з ліва-направо з урахуванням внутрішнього кодування таблиці символів ASCII. Рядок буде більшим, якщо перший не співпадаючий символ має більший номер.

У менший по довжині рядок додаються символи значення CHR(0).

Тому при однакових, символах короткий рядок завжди менше довгого рядка.

Результат виконання операції завжди має логічний тип і приймає значення TRUE або FALSE.

Приклади:

Вираз результат

1) ` “ ` < `.' TRUE

2) `A' > `2' TRUE

3) `AB' = `A'FALSE

4) `ABC' > `AB' TRUE

5) `12' <'2' TRUE

8. Cтандартні засоби обробки рядків: процедури і функції

Функції:

1) CONCAT(S1,S2,…,SN) - функція типа STRING. Виконує послідовне поєднання рядків S1,S2,…,SN , кожен з яких є вираз рядкового типу (STRING). Результатом є рядок не більше 255 символів. Дана функція еквівалентна операції конкатенації:

`S1' + `S2' + `S3'…

2) COPY(st : STRING; index : INTEGER; count : INTEGER): STRING;

або

COPY (st, index, count).

Функція копіює (повертає) частину рядка, виділеного з рядка st, довжиною count символів, починаючи з символу під номером index.

LENGTH(st : STRING) функція типу INTEGER; повертає довжину рядка.

POS(subst, st : STRING): BYTE. Функція шукає у рядку st рядок subst. Результатом є номер позиції, де рядок subst зустрічається перший раз. Якщо рядок subst не знайдено, то результатом буде 0 (нуль).

UPCASE(ch) - функція типу CHAR. Повертає для символьного виразу ch, яке повинно представляти собою рядкову (маленьку) латинську букву, відповідно їй велику букву. Якщо значенням функції ch є будь-який інший символ (в тому числі рядкова буква російського алфавіту), функція повертає його без змін.

Процедури:

DELETE(st : STRING; index, count : INTEGER) або

DELETE(st, index, count) - процедура вилучає (знищує) count символів у рядку st починаючи з символу під номером index.

INSERT(subst : STRING; st :STRING; index : INTEGER) або

INSERT(subst, st, index). - процедура вставляє рядок subst у рядок st, починаючи з символу під номером index.

STR(X[:width[:decimals]];st:STRING) - процедура перетворює число Х в рядок символів st так, як це робить це робить процедура WRITELN перед виводом. Параметри width і decimals (якщо вони присутні, тобто дужки [] показують на необов'язковість цих параметрів) задають формат перетворення: загальну ширину поля для представлення числа Х(width) та кількість символів дрібної частини (decimals), якщо X : REAL.

VAL(st, x, code) - процедура перетворює рядок символів st в значення числової змінної X (визначеного типу). Параметр code =0, якщо перетворення пройшло успішно, тоді X дорівнює результату перетворення. Якщо виявляється помилковий символ у рядку st, то значення Х не змінюється, а code дорівнює номеру позиції з помилковим символом.

Приклади:

Var x: real;

y: integer;

st, st1 : string;

begin

st: = concat (`12', `345'); {рядок st містить 12345}

st1: = copy (st, 3, Length(st)-2); {st1 містить 345}

insert (`-' , st1, 2); {рядок st1 містить 3-45}

delete (st, pos(`2', st), 3); {рядок st містить 15}

str (pi : 6 : 2, st ); {рядок st містить 3,14}

val (`3.1415', x, y); {y містить 2, х без змін}

end.

Висновок

Таким чином над рядками можна виконувати операції присвоювання, порівняння, з'єднання (конкатенації), введення та виведення. Для цього використовують широкий набір процедур та функцій.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.