
- •О.Ф. Власенко, и.В. Беляева символы и строки в языке turbo pascal
- •Оглавление
- •Введение
- •Символьный тип Символьный тип char
- •Функция Ord
- •Функция Chr
- •Функция Succ
- •Функция Pred
- •Функция UpCase
- •Процедура Inc
- •Процедура Dec
- •Примеры использования стандартных процедур и функций обработки символов
- •Строки Встроенный тип string
- •Операции над строками string
- •Правила сравнения двух строк
- •Стандартные процедуры и функции для работы со строками string
- •Процедура Delete
- •Процедура Insert
- •Процедура Str
- •Процедура Val
- •Функция Length
- •Функция Concat
- •Функция Copy
- •Функция Pos
- •Примеры использования стандартных процедур и функций обработки строк
- •Множества
- •Операции над множествами
- •Пример использования множеств
- •Пример Обработки массива строк Задача “Поиск символов в тексте”
- •Задача “Поиск слов в строке и удаление символов”
- •Лабораторная работа “обработка строк” Цель работы
- •Общее задание
- •Простые варианты
- •Средние варианты
- •Сложные варианты
- •Список литературы
- •Символы и строки в языке turbo pascal
- •432027, Г. Ульяновск, Сев. Венец, 32.
Стандартные процедуры и функции для работы со строками 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.