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

Стандартные процедуры и функции для работы со строками string

В Turbo Pascal определены 4 процедуры и 4 функции для работы со строками string.

Процедуры:

Delete – удаление подстроки из строки.

Insert – вставка подстроки в строку.

Str – преобразование числа в строку.

Val – преобразование строки в число.

Функции:

Length – длина строки.

Concat – объединение строк.

Copy – выделение подстроки.

Pos – поиск подстроки в строке.

Заметим, что в языке Turbo Pascal значение типа STRING можно возвращать из функции.

Процедура Delete

Procedure Delete(var S: string; Index, Count: Integer);

Удаляет из строки S подстроку, задаваемую параметрами Index и Count.

Index – номер первого удаляемого символа.

Count – число удаляемых символов.

Пример использования:

var

s: string; {строка}

begin

s := 'Тяжелый и горячий утюг'; {Исходное содержание

строки}

writeln(s); {Выводим исходную строку}

delete(s, 9, 10);{Удаляем из строки 10 символов, начиная с 9-го,

то есть удаляется подстрока ‘и горячий ’}

writeln(s); {Выводится строка ‘Тяжелый утюг’}

end.

Процедура Insert

Procedure Insert(Source: string; var S: string;

Index:Integer);

Вставляет подстроку Source в строку S, начиная с позиции Index.

Пример использования:

S := 'Жаркий климат';

insert('и влажный ', s, 8);

writeln(s); {Будет выведено ‘Жаркий и влажный климат’}

Процедура Str

Procedure Str(X[:Width[:Decimal]]; var S: string);

Преобразовывает число X в последовательность символов (строку) S в соответствии с заданными значениями форматирования Width и Decimal. (Если какие-то параметры указаны в квадратных скобках, то это значит, что эти параметры могут быть указаны, а могут и не быть указаны).

Пример использования:

В графическом режиме вывод текста производится при помощи процедур outtext и outtextxy, в которых для вывода можно указывать только строки. Если возникает необходимость вывода чисел, то приходится делать примерно так:

K := 1034;

Str(k, s);

OuttextXY(100, 200, s); {Вывод строки s=’1034’, начиная

с точки с координатами X=100, Y=200 }

Процедура Val

Procedure Val(S; var V; var Code: Integer);

Преобразовывает символьное представление числа S в целое или вещественное число V. Code – код ошибки, возникающей при переводе строки в число. Если все хорошо, то Code=0.

Пример использования:

“Безопасный” ввод данных.

При вводе информации с клавиатуры или из файла при помощи процедур read/readln возможно возникновение ошибки времени выполнения программы (runtime error) в результате которой выполнение программы прерывается. Ошибка возникает в том случае, когда обнаруживается несоответствие между типом переменной, указанной в read/readln, и той строкой, которую этот read/readln получил для обработки.

Например, если x – переменная целого типа, в программе она читается таким образом: read(x), а пользователь вводит строку “два”, то программа завершит свою работу, выведя сообщение “Invalid numeric format” - “неподходящий формат числа”.

Это происходит потому, что контроль ошибок выполняет сам Turbo Pascal. В простых задачах это удобно, но в более или менее серьезных задачах такое решение недопустимо. В реальных задачах все ошибки пользователя должны обрабатываться самой программой. Средства, обеспечивающие контроль правильности ввода, называются “защитой от дурака”. Существует несколько способов реализации этой защиты. Один из них состоит в следующем: весь ввод пользователя ВСЕГДА читается в виде строк (или кодов отдельных клавиш). Затем введенные строки анализируются. Если введена правильная строка, то программа идет дальше, если нет, то выдается сообщение об ошибке, и данные требуют ввести повторно.

{Процедура "безопасного" ввода целого числа X

Msg - выводимая строка-подсказка

[ minVal .. maxVal ] - допустимый интервал значения X }

procedure ReadInt(msg: string; var x: integer;

minVal, maxVal: integer);

var

s: string; {Вводимая строка}

errCode: integer; {Код ошибки}

isError: boolean; {Флаг ошибки}

begin

repeat

write(msg); {Вывод приглашения}

readln(s); {Чтение строки, ВВЕДЕННОЙ ПОЛЬЗОВАТЕЛЕМ}

val(s,x,errCode); {Попытка получить целое число из строки}

{Ошибка есть, если код ошибки не 0, или если код ошибки 0,

но введенное число лежит вне допустимого интервала}

isError := (ErrCode<>0) or

(ErrCode=0) and ( (x<=minVal) or (x>=maxVal) );

{Если есть ошибка, то вывести сообщение об ошибке}

if isError then writeln('Error! Please repeat input!');

until not isError; {Если нет ошибки, то выходим из цикла,

а если ошибка есть, то снова вводим число}

end;

{Функция перевода целого числа X в строку

возвращается строка}

function IntToStr(x: integer): string;

var

s: string;

begin

Str(x, s);

IntToStr := s;

end;

{Демонстрация “безопасного” ввода

на примере ввода одномерного массива}

var

a: array[1..10] of integer; {Массив}

n: integer; {Количество элементов в массиве}

i: integer; {Счетчик}

begin

{Безопасный ввод N}

ReadInt('Введите n=', n, 1, 10);

{Безопасный ввод элементов массива}

for i:=1 to n do

ReadInt('Введите a[' + IntToStr(i) + ']=',a[i],10,99);

{Вывод элементов для контроля}

for i:=1 to n do

write(a[i],' ');

writeln;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]