Строковые функции и процедуры в Pascal
Обновлено: 20.04.2026
Данные в программах существуют не просто так. С ними выполняются различные действия. Так с числами мы выполняли в основном арифметические операции, операторами которых являются знаки +, -, *, /, ключевые слова div и mod. Также для ряда действий требовалось вызывать специальные процедуры и функции языка Pascal. Вспомните про sqr, sqrt, inc, odd и другие.
Со строками также выполняют различные действия, только, понятное дело, они имеют иные цели, не такие как с числами. Для работы со строками в языках программирования, в том числе Паскале, есть свой набор строковых функций и процедур. Рассмотрим основные и начнем с функции concat, которая выполняет конкатенацию, то есть соединение, строк. Вместо этой функции можно использовать оператор +:
var a, b, c: string; begin a := 'one'; b := 'two'; c := 'three'; writeln(concat(a, b, c)); // onetwothree writeln(a + b + c); // onetwothree end.
Как добавить пробел между соединяемыми словами? В обоих ли случаях (с concat и знаком плюса) это возможно сделать?
Нередко возникает необходимость выполнять "взятие" из строки ее части, вставку в строку, удаление части строки или поиск подстроки в строке.
Функция copy(s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.
var s, user: string; begin s := 'Hello, Tomas!'; user := copy(s, 8, 5); writeln(user); // Tomas end.
Напишите программу, которая с ввода запрашивает строку и номер первого символа подстроки. Далее выводит на экран подстроку, начиная с этого символа и до конца исходной строки.
Процедура delete(s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.
var s: string; begin s := 'Hello, Tomas!'; delete(s, 8, 5); writeln(s); // Hello, ! end.
Обратите внимание, процедура — это не функция. Процедура меняет саму строку, а функция возвращает новую, что мы наблюдали в случае copy.
Процедура insert(subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.
var s: string; begin s := 'Hello, !'; insert('Edward', s, 8); writeln(s); // Hello, Edward! end.
Функция pos(subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или 0, если subs не содержится в s.
const s = 'one, two, three, four, five'; var part: string; i: byte; begin readln(part); i := pos(part, s); writeln(i); end.
Примеры выполнения:
red 0
two 6
В программе содержится строка, которая выводится на экран. Пользователь вводит слово, которое он хочет удалить из этой строки. После этого программа должна вывести строку без указанного слова. При решении задачи вспомните про функцию length.
Мы уже сталкивались с процедурой val и знаем, что она преобразует строку к числу. Однако есть и обратная процедура — str, которая число превращает в строку. Процедура str(x, s) преобразует числовое значение x в строку s, при этом для x может быть задан формат, как в процедурах вывода write и writeln:
var x: integer; s: string; begin x := 123; str(x:6, s); writeln(s); end.
123
Задания для дополнительной или самостоятельной работы:
С клавиатуры вводятся десять слов через пробел. Для их хранения в программе объявлен строковый массив. Каждое слово должно помещаться в свою ячейку этого массива. Как данная задача может быть реализована на языке Pascal? Необходимо ли для этого использовать строковые функции?