
Процедури
Delete(Str,Poz,N) – вилучення N символів з рядка Str, починаючи з позиції Poz. Якщо Poz>255, виникає програмне переривання. N, Poz :integer
Insert(Str1,Str2,Poz)–вставка рядка Str1 у Str2, починаючи з позиції Poz (має бути значенням типу integer).
Str(Number,St) – перетворення числового значення величини Number і занесення результату в рядок St. Після Number може записуватися формат, аналогічний формату виведення. Якщо у форматі зазначена недостатня кількість розрядів, поле виведення розширюється до потрібної довжини.
Значення Number |
Вираз |
Результат |
1500 |
Str(Number:6, St) |
‘__1500’ |
4.8Е+03 |
Str(Number:10, St) |
‘______4800’ |
76854 |
Str(-Number:3, St) |
‘-76854’ |
Val(St,Number,Cod) – перетворює значення St у величину цілого або дійсного типу і розміщує результат у Number. Значення St не повинно містити зайвих пробілів на початку і наприкінці рядка. Cod – ціла змінна, значення якої не дорівнює нулю, якщо під час перетворення виявлена помилка. Cod буде містити номер позиції першого помилкового символу, a Number не буде визначено.
Значення Str |
Вираз |
Результат |
‘1450’ |
val (Str, Number, Cod) |
1450 Cod=0 |
‘14.2Е+02’ |
val (Str, Number, Cod) |
1420 Cod=0 |
‘14.5А+01’ |
val (Str, Number, Cod) |
? Cod=5 |
Функції
Copy(St,Poz,N) – копіює (запам’ятовує) зі змінної St підрядок довжиною N символів, починаючи з позиції Poz. Якщо Poz > Lenght(Sf), то результатом буде пробіл; якщо Poz > 255, то виникне помилка при виконанні.
Pos(St1,St2) – виявляє номер першої появи в рядку St2 рядка St1. Результат має цілий тип і дорівнює номеру тієї позиції, де знаходиться перший символ рядка Stl. Якщо в St2 рядок Stl не знайдений, результат дорівнює 0.
UpCase(Ch) – перетворює малу літеру на велику. Параметр і результат мають літерний тип. Обробляються тільки літери латинського алфавіту.
Concat(A, В, ...) – з’єднує рядки в один рядок.
Рядком нульової довжини називається вираз ‘ ‘. Розглянемо задачу, що зумовлює застосування такого даного.
Тотожні й сумісні типи
Два типи можуть бути тотожними, і ця тотожність (ідентичність) є обов'язковою в деяких контекстах. В інших випадках два типи повинні бути тільки сумісні або сумісні по присвоюванню. Два типи є тотожними, якщо вони описані разом, або якщо їхні визначення використовують той самий ідентифікатор типу.
Тотожність типів
Тотожність типів потрібна тільки для змінних фактичних і формальних параметрів при виклику процедур і функцій.
Два типи, скажімо T1 і T2, є тотожними, якщо є істинним одне з наступних тверджень:
-
T1 і T2 являють собою той самий ідентифікатор типу;
-
T1 описаний як еквівалентний типу, тотожному T2.
Друга умова означає, що T1 не обов'язково повинен бути описаний як безпосередньо еквівалентний T2. Наступні описи типів:
T1 = integer; T2 = T1; T3 = integer; T4 = T2;
означають, що T1, T2, T3, T4 і integer є тотожними типами.
Наступні описи типів: T5 = set of integer; T6 = set of integer; – не визначають T5 і T6 як тотожні, оскільки set of integer не є ідентифікатором типу. Дві змінні, описані в тому самому описі, наприклад: V1, V2: set of integer; мають тотожні типи, оскільки їх описи не роздільні. Опис:V1: set of integer; V2: set of integer; V3: integer; V4: integer; означають, що V3 і V4 мають тотожний тип, а V1 і V2 – ні.
Сумісність типів
Іноді, наприклад, у виразах і операціях порівняння, потрібна сумісність типів. Сумісність типів, крім того, є важливою передумовою для сумісності по присвоюванню.
Сумісність типів має місце, якщо виконується принаймні одна з наступних умов:
-
Обидва типи є тотожними.
-
Обидва типи є дійсними типами.
-
Обидва типи є цілочисловими.
-
Один тип є піддіапазоном іншого.
-
Обидва типи є відрізками того самого основного типу.
-
Обидва типи є множинними типами із сумісними базовими типами.
-
Один тип є рядковим, а інший тип є або рядковим типом, або символьним типом.
-
Один тип є вказівником (Pointer), а інший є будь-яким типом вказівників.
-
Обидва типи є процедурними з ідентичними типами результатів, однаковим числом параметрів і відповідністю між параметрами.