- •Лекция 2. Переменные
- •Типы переменных
- •Комментарии
- •Лекция 3. Операции и операнды. Выражения. Стандартные функции и процедуры Операции и операнды. Выражения
- •Стандартные функции и процедуры
- •Лекция 4.Операторы.Ввод-вывод информации. Операторы
- •Ввод-вывод информации
- •Лекция 5.Создание консольного приложения
- •Лекция 6. Управляющие конструкции. Управляющая конструкция if
- •Самостоятельная работа.
- •Цикл for
- •Самостоятельная работа.
- •Инструкция (цикл) while
- •Самостоятельная работа.
- •Оператор цикла с постусловием repeat
- •Самостоятельная работа.
- •Оператор выбора case
- •Оператор перехода goto
- •Лекция 7.Строки Строковые типы
- •Стандартные подпрограммы для строк
- •Строковые выражения
- •Лекция 8. Преобразования типов Преобразования типов
- •Другие преобразования
- •Подстановка значений
- •Глобальная переменная DecimalSeparator
Строковые выражения
Под строковым будем понимать выражение, результатом которого является символь¬ная строка. Напомним, что символьные значения можно трактовать как строки единич¬ной длины. Кроме операций отношения, над строками определена операция сцепления (конкатенации), которая обозначается знаком плюс — «+». Это бинар¬ная операция. Ее результатом является последовательность символов первою операц¬ии после которой располагается последовательность символов второго операнда. Операндами могут быть строки, массивы типа char или символы. Например:
Выражение Результат
' Object'+' Pascal' ‘Object Pascal’
'Петров'+' П.П'+’.’ ‘Петров П.П.’
Строки разных типов могут смешиваться в одном выражении, переменным одного строкового типа можно присваивать значения другого строкового типа. Компилятор при этом осуществляет автоматическое приведение типов. Если переменной типа ShortString присваивается в качестве значения строка, длина которой превышает длину переменной,то срока усекается до длины переменной.
Очень часто при обработке символьных строк используются стандартные подпрограммы. Рассмотрим пример программы, в котором демонстрируется использование некоторых из этих подпрограмм.
Пример 3.
Составить программу выполняющую следующие действия:
1.Ввод с клавиатуры строку 'Bloomed apples and pears' (Расцветали яблони и гру¬ши).
2.Определяет длину строки.
3.Выделяет из исходной строки подстроки 'apples’(яблони) и 'pears’ (груши).
4.Удаляет из исходной строки подстроку 'apples and’ (яблони и).
5.Вставляет удаленную подстроку на прежнее место.
6.Определяет номер позиции, в которой находится буква r в исходной строке.
Решение
Для решения этой задачи нам потребуются стандартные функции length, copy, pos и процедуры delete и insert.
Программа
program 3;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,b,c,d:string;
begin
writeln('Enter string');
readln(a);
writeln('length(a) = ',length(a));
b:= copy(a,9,6);
writeln(‘copy(a,9,6) = ',b);
с :=copy(a,20,5);
writeln('copy(a,20,5) = ',c);
d : = copy(a,9,11);
delete(a,9,ll);
writeln('after delete a = ‘,a);
insert(d,a,9);
writeln('after insert a = ' ,a);
writeln('pos(‘r’,a) = ',pos('r',a));
readln
end.
Результаты работы программы
Enter string
Bloomed apples and pears
length(a) = 24
copy(a,9,6) = apples
copy(a,20,5) = pears
after delete a = Bloomed pears
after insert a = Bloomed apples and pears
pos(‘r’,a) = 23
Следует отметить, что для ввода символьных строк необходимо использовать процедуру readln, а не read. Это объясняется тем, что в конце каждой символьной строки, вводимой с клавиатуры, стоит так называемый разделитель строк EOLN – последовательность кодов #13 (CR) и #10 (LF). Разделитель строк вставляется во вводимый текст при нажатии на клавишу Enter. В результате каждая символьная строка отображается в отдельной строке дисплея. Процедура Read может считывать данные только до символа EOLN. Данные расположенные в следующей символьной сроке, т.е за разделителем строк EOLN ,для нее не доступны. Процедура readln считывает все символы, расположенные до разделителя строк, а затем и сам разделитель строк. Поскольку символы #13 (перевод каретки) и #10 (переход в начало строки) являются управляющими, то в результате их считывания курсор дисплея переходит в начало следующей строки. Расположенная в новой строке дисплея символьная строка может быть считана следующей процедурой readln. Из сказанного следует, в частности, что, если переменная x имеет тип string,то процедура
readln(x);
эквивалентна последовательности процедур
read(x);
readln;
