|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Программирование с использованием строкПрограммирование с использованием строк
1. Понятие строки 2. Строковые процедуры и функции Строка - это последовательность символов в паскале. Существуют 3 вида строк: 1) стандартные (string); 2) определяемые программистом на основе типа string; 3) строки динамические — введены в паскаль для обеспечения возможности работы с длинными строками и программирования над Windows. Каждый символ сроки занимает 1 байт памяти. Количество символов строки называют её длиной. Длина строки может находиться в диапазоне от нуля до 255. Строковые величины могут быть константами и переменными. Строковая константа — это последовательность символов заключенная в апострофы. Пример 1: 'язык программирования паскаль' Пример 2: '33-45-12' Строковая переменная описывается в разделе описание переменных следующим образом: var name : string [20]; Для коротких строк использовать стандартную строку неэффективно, поэтому в язык введена возможность самостоятельно задавать максимальную длину строки. Пример: Type str = string [4]; Длина строки должна быть константой или константным выражением, потому что инструкция по выделению памяти формируется компилятором до начала выполнения программы. Примеры описание строк: Const n = 15; var s: string; - строка стандартного типа. S1: STR; - строка типа описанного выше. S2: string [n]; - описание типа задано при описании переменной. Если параметр длины не указывается в описании, то подразумевается, что он равен максимальной величине. Строковая переменная занимает в памяти на 1 байт больше чем указанная в описании длина. 1 (нулевой) байт содержит значение текущей длины строки. Если строковой переменой не присвоено никакого значения, то её текущая длина равна 0. По мере заполнения строки символами, её текущая длина возрастает, но она не должна превышать максимальной по описанию величины. Символы внутри строки индексируются (нумеруются) от 1. Каждый отдельный символ идентифицируется именем строки с индексом заключенном в [ ]. Пример: Name [5] name [i] slovо [k+1] Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания. Инициализация строк выполняется в разделе описание констант. Строковая константа в исходном тексте программы должна размещаться в пределах одной строки, простой перенос части символьного значения на другую строку приведет к ошибке компиляции (длина строковой константы превосходит допустимые значения). Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях. Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операция сцепления и операция отношения. Операция сцепления применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные. Длина результирующей строки не должна превышать 255. Операции отношения производят сравнение двух строк, в результате чего получается логическая величина. Операция отношения имеет более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого, не совпадающего символа, и больше считается та строка, в которой первый не совпадающий символ имеет больший номер в таблице символьного кодирования. Если строки имеют различную длину, но в общей части символы совпадают, то считается что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. ВЫРАЖЕНИЕ РЕЗУЛЬТАТ 'cosm1' < 'cosm2' true 'pаscal1' > 'PАSCAL' true 'ключ_' < > 'ключ' true 'ms dos' = 'ms dos' true Строки можно присваивать друг другу. Если максимальная длина результирующей строки меньше длины исходной, то лишние символы справа отбрасываются. ПРИМЕР: S2:='чтобы'; S1:=S2. B S1 будут помещены символы 'чтоб'. Имя строки может использоваться в процедуре ввода и вывода: readln (S1,S2); Write (S1); При вводе в строку считывается из входного потока количество символов, равное длине строки, или меньше, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равных её фактической длине. При работе со строками, как правило, возникает необходимость выполнять определенный набор действий со строкой и ее фрагментами, например копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. 1) Функция Concat(s1, s2,…, sn) возвращает строку, являющуюся слиянием строк s1,s2,…sn. Ее действие аналогично операции конкатенации. Пример:
2) Функция Copy(s, n, k) возвращает подстроку длиной k, начинающуюся с позиции n строки s. Параметры n и k должны быть целого типа. Пример:
3) Процедура Delete(s, n, k) удаляет из строки s, начиная с позиции n, подстроку длиной k. В результате выполнения процедуры уменьшается текущая длина строки в переменной s. Пример:
4) Процедура Insert(s1, s, k) вставляет в строку s подстроку s1, начиная с позиции k. Пример:
5) Функция Length(S) возвращает фактическую длину строки s, результат имеет тип byte.
Пример:
6) Функция Pos(s1,s) ищет вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в s или нуль, если s1 не содержится в s. Результат - целое число. Пример:
7) Процедура Str(x, s) преобразует числовое значение x в строку s, при этом для x может быть задан формат, как в процедуре вывода write, writeln, например str(x:6:2,s).
8) Процедура Val(s, x, errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|