Операторы цикла и уметь применять их при обработке строк.
Уметь составить схему программы (алгоритм) циклической структуры для задачи по обработке строк и записать программу по готовому алгоритму.
Теоретический минимум:
1. Строки.
Строки – представляют собой последовательность символов, иными словами структуры, состоящие из элементов простого типа (Char).
Значение типа string представляет собой строку длиной от 0 (пустая строка) до 255 символов. При этом нулевой байт строки содержит сведения о текущей длине строки.
Примеры строковых значений:
‘12345’ ‘@#$%^’ ‘TRUE’ ‘АБВГДЕЖЗ’ ‘2007 год’
Следует помнить, что строка ‘12345’ не имеет ничего общего с числом и с ней нельзя производить арифметических действий. Строка ‘TRUE’ также вовсе не является значением типа Boolean.
Пример описания переменных строкового типа:
Var
A: string; {если длина строки не указана, то по умолчанию}
{она считается равной 255 символам}
B: string [80]; {максимальную длину строки можно указать явно}
Текущая длина строки – величина изменяющаяся, определяемая реальными данными.однако она не может превышать максимальную длину, указанную для данной строковой переменной.
Строки занимают промежуточное положение между простыми и структурированными типами данных. Строка – это структура, состоящая из элементов простого типа (Char). И в тоже время к строкам применимы некоторые действия, неприменимые к данным структурированного типа. Например, строку можно ввести с клавиатуры или вывести на экран, воспользовавшись операторами Read(A) и Write(A), где А-переменная строкового типа. Также допустимо сравнивать строки. Эти действия невозможны с другими данными структурированного типа – массивами и записями, обработка которых осуществляется только в цикле.
Обратиться к отдельному символу строки можно, указав имя строковой переменной и порядковый номер символа в строке, например:
A[5]:=’F’; {5-му символу в строке присваивается значение типа Char }
Write(A[33]); {значение 33-го символа строки выводится на экран}
Переменную типа string можно сравнить с другой переменной или константой типа string, используя знаки >, <, >=, <=, <>. Строки сравниваются посимвольно от первого символа. Если все символы строк одинаковы, то строки считаются равными. Если в одинаковых позициях строк находятся разные символы, то большей считается та строка, у которой в этой позиции находится символ с большим кодом.
К строкам применимы некоторые специальные процедуры и функции, приведенные в таблице.
Таблица 9. Стандартные строковые процедуры и функции.
Процедура или функция
Назначение
Тип результата
Length(x)
Определяет текущую длину строки х.
Целое число – количество символов строки х.
Delete(x, p, n)
Позволяет удалить часть строки х, начиная с позиции p, длиной n символов.
Строка.
Pos(x1, x)
Позволяет определить положение подстроки х1 в строке х.
Целое число, номер позиции вхождения подстроки в строку. Если подстрока не найдена, возвращает ноль.
Copy(x, p, n)
Позволяет скопировать фрагмент строки х, начиная с позиции p, длиной n символов.
Строка.
Insert (x1, x, n)
Вставка подстроки х1 в строку х, начиная с позиции n.
Строка.
Val(x, p, n)
Позволяет преобразовать изображение числа х в число, р - переменная, которой присваивается полученное число, n - код ошибки.
Если строка успешно преобразована в число, то код ошибки ноль, если преобразование невозможно, то код ошибки равен номеру позиции в строке, содержащей недопустимый символ.
Для того, чтобы обработать строку посимвольно от первого символа до последнего, можно применить цикл, например:
For i:=1 to Length(x) do{ переменная i перебирает номера символов строки }
If x[i]=’a’ then k:=k+1; { подсчитываем в цикле количество букв ‘а’ в строке }