Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая_Строковые переменные.doc
Скачиваний:
16
Добавлен:
16.11.2018
Размер:
109.06 Кб
Скачать

Процедура delete

Процедура delete позволяет удалить часть строки. В общем виде обращение к процедуре выглядит так:

Delete (Строка, p, n);

Где строка-переменная строкового типа; p- номер символа, с которого начинается удаляемая подстрока; n- длина удаляемой строки.

Например, в результате выполнения инструкции

S:=’Город Санкт -Петербург’;

Delete (s, 7, 6)

Значением переменной s будет строка ‘Город Петербург’

Функция pos

Функция pos позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:

Переменная pos (Подстрока, Строка);

Где подстрока –строковая константа или переменная, которую надо найти в стоковой константе или переменной Строка.

Например, в результате выполнения инструкции

P:=pos (‘Пе’,’Санкт –Петербург’);

Значение переменной p будет равно 7.

Если в строке нет искомой подстроки, то функция pos возвращает нуль. Следующая программа, е текст приведен на листинге 7,использует функцию pos и процедуру delete для удаления пробелов в начале введенной с клавиатуры строки.

Листинг 7. Удаление начальных пробелов строки

Program dledspa;

Var

St: string [30];

Begin

Write (‘Введите строку’);

Readln (st);

While (pos (‘ ‘,st)=1) and (length(st)>0) do

Delete (st,1, 1);

Write (‘Строка без начальных пробелов:’, st);

End.

Пробелы удаляются в цикле while до тех пор, пока функция pos обнаруживает пробел в начале строки (значение pos при этом равно еденице). Необходимость проверки условия length(st)>0 объясняется возможностью того, что введенная с клавиатуры строка состоит из пробелов. Вот пример работы программы:

Ведите строку: ул. Садовая

Строка без начальных пробелов: ул. Садовая

Функция copy

Функция copy позволяет скопировать фрагмент строки. В общем виде обращение к функции copy выглядит так:

Переменная copy (Строка, p, n);

Где строка – переменная строкового типа, содержащая строку, фрагмент которого надо получить; p- номер первого символ в строке Строка, с которого начинается выделяемая подстрока; n- длина выделяемой строки.

Например, в результате выполнения инструкции

St: =’Инженер Иванов’;

Fam:= copy (st, 9,6);

Значением переменной fam будет строка ‘Иванов’.

Процедура val

Процедура VAL позволяет преобразовать изображение числа в число. В общем виде обращение к процедуре выглядит так:

Val (Строка, Число, Код);

Где строка - строковая константа или переменная, содержащая изображение числа; Число- переменная целого или дробного типа, которой должно быть присвоено значение, изображенное строкой Строка; Код- возвращаемый процедурой код ошибки (целое число). Если строка не может быть преобразована в число из-за того, что строка не является изображением числа, то значение Код будет равно номеру символа строки, которой явился причиной невозможности преобразования.

Например, в результате выполнения инструкции

Val (‘1,25’, n, code);

Значение переменной code равно 2, так как строк1,25 не является изображением числа, поскольку для отделения дробной части числа от целой используется точка, а не запятая.

Процедура val полезна при организации ввода с клавиатуры. Например, если в программе объявлена переменная moth (месяц) типа integer, и ее значение вводится с клавиатуры инструкцией read, то в результате возможной ошибки оператора, задавшего месяц строкой символов, например, ‘июнь’, а не цифрой, программа завершится ошибкой времени выполнения. Однако если числовые данные вводить как строку, а затем преобразовывать в число с помощью процедуры val, то можно избежать подобного неприятного завершения программы.

На листинге 8 приведен текст программ, которая выполняет проверку введенных данных при помощи процедуры val.

Листинг 8. пример использования val для контроля вводимых с клавиатуры данных

Program month;

Var

Mon: integer; {месяц}

Buf: string [10]; {буфер для ввода строки}

Code: integer; {код ошибки преобразования строки в число}

Begin

Repeat

Write (‘Месяц- > ‘);

Readln (buf) ; {вводим номер месяца как строку}

Val (buf, mon, code);{преобразуем строку в число}

If code <>0 {введенная строка не цифра}

Then Writeln (‘Ошибка! Месяц следует задать цифрой.’);

Until code=0;

End.

Вот пример работы программы:

Месяц –> май

Ошибка! Месяц следует задать цифрой.

Месяц ->5