Основы программирования на языке Паскаль
8. Строковые данные
8.1. Общие замечания
Строка – это последовательность символов длиной 0-255. Для описания данных строкового типа используется слово string, за которым могут следовать в квадратных скобках цифры, определяющие количество символов в строке. Если цифры в квадратных скобках и сами скобки отсутствуют, то для данной ячейки памяти будет выделятьс
я максимально возможная длина: 256 байт для хранения 265 символов. Символьные константы (которые могут храниться) имеют вид совокупности символов, заключенных в апострофы.
Пример: 'a, b, с - символы'.
Примеры описаний:
Var а, b, с: string [70];
Выделяются ячейки с именами а, b, с, в каждую из которых может быть занесена совокупность символов в количестве до 70.
Например, возможны операторы:
а: = 'улица Садовая';
b: = улица Чкалова, 17, хаи';
с: = г. Харьков – большой город';
возможно предварительное описание типа:
Туре a=string [70];
Var b, с: а;
8.2. Строковые выражения
Выражения, в которых операндами служат строки, являются строковыми выражениями. Результат – строка. Опишем операции, которые можно применять при написании строковых выражений:
Операция сцепления, знак операции '+'.
'Дом'+' номер'+'43' дает результирующую строку 'Дом номер 43'.
Операции отношения: =, < >, >, <, >=, <=.
Операции отношения выполняются раньше операции сцепления, т.е. имеют более высокий приоритет.
Сравнения между строками производятся посимвольно, слева направо, до первого несовпадающего символа. Та строка считается больше, в которой первый несовпадающий символ имеет больший код по таблице кодов. Результаты сравнения – True или False.
Если строки имеют различную длину и более короткая совпадает с началом более длинной, то последняя считается большей.
При использовании оператора присваивания, если значение результата вычисления строкового выражения имеет большую длину, чем ячейка памяти, в которую записывается результат, то лишние правые символы отбрасываются. Если значение результата вычисления строкового типа короче, чем ячейка памяти, отведенная для его хранения, то результат записывается в ячейку памяти «прижатым» вправо, а лишние левые разряды заполняются пробелами.
Допускается при записи выражений строкового типа применять данные, описанные с атрибутом char. В этом случае эти данные интерпретируются как string [ 1]. К отдельным символам данного строкового типа можно обратиться по номеру этого символа в строке (аналогично индексу в массивах). В нулевом байте хранится длина строки.
ProgramPrim39; varst1,st2:string[30]; BEGINst1:='отдел № 256'; writeln(st1); {на экране "отдел № 256"} st2:=st1[10]; writeln(st2); {на экране "5"} writeln(ord(st1[0])); {на экране "11"}
readln; END.
Если бы в var было указано string[10], то writeln(st1), вывел бы результат "отдел № 25"
8.3. Стандартные процедуры и функции для обработки строк
8.3.1. Процедуры обработки строк
Delete (st, Poz, N) – удаление N символов из строки с именем st, начиная с позиции Poz.
st:='река_Волга'; Delete (st, 1, 5);
Результат 'Волга'.
insert (stl, st2, poz); – вставка строки stl в строку st2, начиная с позиции Poz.
st1: = 'Дом_25_'
st2: =' На_улице_живет_петух_';
insert (stl, st2, 10);
Результат: "На_улице_дом 25_живет_петух";
str (IBR, st); преобразует число IBR (типа integer, byte или Real) и помещает результат в строку st. Возможно после IBR указать ширину поля. Если ширины поля не хватает, оно автоматически расширяется до нужной величины.
str (1500:6, stl); даст результат '_1500';
str (4.8е+03:10, stl); – результат '_ 4.800E+03';
str (-46854:3, stl); – результат '-46854'.
Val (st, IBR, Cod); процедура преобразует значение st в величину целочисленного или вещественного типа и помещает результат в IBR. Значение st должно содержать символьное изображение числа и не содержать символов, не присущих изображению чисел (например, пробелов перед цифрами), букв и т.п. Cod - целочисленная переменная индуцирующая ошибку. Если Cod=0, преобразование произведено без ошибки, если Cod=5, то ошибка при преобразовании – 5 символов.
Программа Program Prim 40; иллюстрирует работу вышеописанных процедур:
Program Prim40; var st1,st2:string[30];
BEGIN st1:=' река Волга ';
delete(st1,1,5); writeln(st1);
st1:='дом 25 '; st2:='наулицеживетпетух';
insert(st1,st2,10); writeln(st2);
str(1500:6,st1); writeln(st1);
str(4.8e+03:10,st1); writeln(st1);
str(-46854:3,st1); writeln(st1);
readln;END.
8.3.2. Функции обработки строк
Сору (st, Poz, N) выделяет из st подстроку длиной N символов, начиная с позиции Poz.
stl:='absdefg'; writeln (Сору (stl, 2, 3));
результат bсd
Const (stl, st2, ., stn) выполняет сцепление строк stl . stn. Длина суммарной строки не должна превышать 255 символов.
Length (st) определяет длину строки, результат – integer.
Pos (stl, st2) обнаруживает первое появление строки stl в строке st2. Результат – целое число, определяющее номер позиции, в которой находится первый символ подстроки st1. Если st1 не содержится в строке st2, то результат равен 0.
UpCase (ch) преобразует строчную букву в прописную.
Параметр и результат имеют литерный тип.
ch:=a'; UpCase (ch) имеет результат 'A'.
Program Prim 41, Prim 42, Prim 43 иллюстрируют работу вышеописанных функций.
Program Prim41; var st1,st2:string[30]; s:char; BEGIN st1:='отдел № 256'; writeln(copy(st1,7,5)); st2:='находитсявНИИ 5';
writeln(concat(st1,st2));
writeln(length(st2));
st2:='n 256';
writeln(pos(st2,st1));
s:='a';
writeln(upcase(s));
readln;END.
Program Prim42; {программа удаляет все пробелы в строке, стоящие в строке слева, если они имеются}
Var str:string[255]; { Var str: string; будетработатьтакже} function del(stroka:string):string;
Var dlina:byte;
Begin dlina:=Ord(stroka[0]);
while ((dlina>0)and(copy(stroka,1,1)=' '))do
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности