- •Кафедра прикладной математики лекция № 16. Тема: «структурированные типы данных»
- •1. Пользовательские типы.
- •1.1. Перечисляемый тип.
- •1.2. Интервальный тип (диапозон).
- •2. Структурированные типы данных.
- •3. Тождественность и совместимость типов.
- •4. Массивы.
- •4.1. Объявление массива.
- •4.3. Действия над элементами массива.
- •4.2. Действия над массивами.
- •4.4. Многомерные массивы.
- •5. Строковый тип данных.
- •5.1. Строковые выражения.
- •5.2. Строковые процедуры и функции.
- •6. Множественный тип данных.
- •6.1. Операции над множествами.
- •Пример 3.
- •7. Запись.
- •7.1. Оператор with.
- •7.2. Записи с вариантами.
- •Контрольные вопросы
- •Задачи для самостоятельной работы
- •Лекция № 16 по курсу «информатика»
5.1. Строковые выражения.
Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, указателей функций и знаков операций. Над строковыми данными допустимы операция сцепления и операции отношения.
Операция сцепления (+) применяется для сцепления строк в одну результирующую строку. Например:
Выражение |
Результат |
‘A’+’T’+’ ‘+’386’ |
‘AT 386’ |
‘Turbo’+’ ‘+’Pascal’+’ ‘+’7.0’ |
‘Turbo Pascal 7.0’ |
Следует учитывать, что в операциях сцепления длина результирующей строки не должна превышать 255.
Операции отношения (=, <>, <, >, >=, <=) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операции сцепления, т.е. вначале всегда выполняются все операции сцепления, если они присутствуют, и лишь потом реализуются операции отношения. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строковыми операндами всегда имеет булевский тип и принимает значение true, если выражение истинно, и false, выражение ложно. Если строки имеют различную длину, но в общей части символы совпадают, считается, сто более короткая строка меньше, чем более длинная. Строки считаются равными, если они полностью совпадают по длине и содержат те же символы. Допускается смешение в одном выражении операндов строкового и литерного типа. Если при этом литерной переменной присваивается значение строкового типа, длина строки должна быть равна единице, иначе возникает ошибка выполнения.
5.2. Строковые процедуры и функции.
Delete(St,Poz,N) – удаление N символов строки St, начиная с позиции Poz. Если значение Poz>255, возникает программное прерывание.
Insert(Str1,Str2,Poz) – вставка строки Str1 в строку Str2, начиная с позиции Poz.
Str(IBR,St) – преобразование числового значения величины IBR и помещение результата в строку St. После IBR может записываться формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода расширяется автоматически до нужной длины.
Значение IBR |
Выражение |
Результат |
1500 |
Str(IBR:6,St) |
‘__1500’ |
4.8E+03 |
Str(IBR:10,St) |
‘______4800’ |
76854 |
Str(-IBR:3,St) |
‘-76854’ |
Val(St,IBR,Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в IBR. Значение St не должно содержать незначащих пробелов в начале и конце. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружилось, значение Code равно нулю, если ошибка обнаружена, Code будет содержать номер позиции первого ошибочного символа, а значение IBR не определено.
Значение St |
Выражение |
Результат |
‘1450’ |
Val(St,IBR,Code) |
Code=0 |
’14.2E+02’ |
Val(St,IBR,Code) |
Code=0 |
’14.2A+02’ |
Val(St,IBR,Code) |
Code=5 |
Concat(Str1,Str2,…,StrN) – выолняет сцепление строк Str1, Str2, …, StrN в том порядке, в каком они указаны в списке параметров. Сумма символов всех сцепленных строк не должна превышать 255.
Length(St) – вычисляет текущую длину в символах строки St. Результат имеет целочисленный тип.
Pos(Str1,Str2) – обнаруживает первое появление в строке Str2 подстроки Str1. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ подстроки Str1. Если в Str2 подстроки Str1 не найдено, результат равен 0.
UpCase(Ch) – преобразует строчную букву в прописную. Параметр и результат имеют литерный тип. Обрабатывает буквы только латинского алфавита.
Copy(St,Poz,N) – выделяет из St подстроку длиной N символов, начиная с позиции Poz. Если Poz>Lenght(St), то результатом будет пробел; если Poz>255, возникает ошибка при выполнении.
Значение St |
Выражение |
Результат |
‘ABCDEFG’ |
Copy(St,2,3) |
‘BCD’ |
‘ABCDEFG’ |
Copy(St,4,10) |
‘DEFG’ |
