Readln(st1); writeln(st2);
Строковые данные используются в строковых выражениях. Операндами строковых выражений могут быть строковые константы, переменные, встроенные функции для обработки строк. Над строковыми данными могут выполняться операции присваивания, сцепления, отношения.
Операция присваивания. При записи операции присваивания строка символов заключается с двух сторон в апострофы, например:
FIO:= 'Иванов И.И.';
Если длина строкового выражения превышает максимальную длину строковой переменной, то все лишние символы справа отбрасываются.
Ввод с клавиатуры значений строковых переменных осуществляется оператором READLN, причем строка символов, предназначенная для ввода, набирается на клавиатуре без апострофов, начиная с первой позиции. Например, для ввода в переменную STROK с клавиатуры строки символов STROKA необходимо записать:
READLN(STROK);
На клавиатуре набрать STROKA и нажать клавишу Enter.
Для исключения ошибок надо использовать для ввода оператор READLN, а не READ.
Операция сцепления.Операция сцепления применяется для объединения нескольких строк в одну результирующую строку. Для обозначения операции сцепления применяется знак '+'.
Пример:
STR1:= 'Студенты';
STR2:= 'университета';
STR:= STR1 + ' ' +STR2;
В результате получится Студенты университета'.
Операции отношения.Операции отношения осуществляют сравнение двух строковых операндов и имеют более низкий приоритет, чем операции сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается большей, в которой первый несовпадающий символ имеет больший номер в кодовой таблице ПК. Результат выполнения операций отношения над строковыми операндами всегда имеет логический тип и принимает значение TRUE или FALSE.
Строки считаются равными, если они полностью совпадают по текущей, а не по объявленной длине и содержат одни и те же символы. Например, в результате выполнения программы:
program primer;
var
str1: string[6];
str2: string[8];
begin
str1:= 'stroka';
str2:= str1;
if str1 = str2 then
writeln('str1 равна str2')
else
writeln('str1 не равна str2');
end.
будет выведено Str1 равна Str2.
Необходимо учитывать, что одинаковые строчные (маленькие) и прописные (большие) буквы имеют разные номера в кодовой таблице ПК, поэтому они определяют разные значения строковых переменных. Так, если ST1:= 'abc', а ST2:= 'ABC', то строки ST1 и ST2 не равны.
Для обработки строковых переменных применяются процедуры и функции, которые специально предназначены для работы со строками. Для упрощения описания примем, что STR, STR1 и STR2 переменные типа STRING, а I, K – переменные типа INTEGER.
1. LENGTH(STR) – функция, которая вычисляет фактическое количество символов в строке.
2. COPY(STR,I,K) - функция, которая выделяет из строки STR подстроку длиной K, начиная с позиции I. Если I > LENGTH(STR), то результат будет пробел.
3. DELETE(STR,I,K) – процедура, которая удаляет из строки STR подстроку, начиная с позиции I, длиной K символов.
4. INSERT(STR1,STR2,I) –процедура, которая вставляет строкуSTR1в строку STR2, начиная с позиции I.
5. POS(STR1,STR2) – функция, которая определяет наименьший номер (позицию) символа в строке STR2, начиная с которого строка STR1входит в строку STR2.
6. STR(I,STR) – процедура, которая преобразует численное значение Iв строку STR.
Пример программы, использующей строковый тип данных: Ввести с клавиатуры n строк, каждая из которых содержит фамилию, имя и отчество уч-ся. Ввод каждой строки завершается нажатием клавиши Enter. Вывести список уч-ся в алфавитном порядке.
program fio;
var
i,n,j: integer;
st: string;
fios: array[1..30] of string;
begin
readln(n);
for i:= 1 to n do
readln(fios[i]);
for i:= 1 to n-1 do
for j:= 1 to n-1 do
begin
if fios[j] > fios[j+1] then
begin
st:= fios[j];
fios[j]:= fios[j+1];
fios[j+1]:= st;
end;
end;
for i:= 1 to n do
writeln(fios[i]);
end.
Числа и строки
Часто возникает необходимость получить строковое представление числа и наоборот (например, получить строку '13' из числа 13). Для работы с числами и строками применяются две процедуры.
1. Str(N, St) − переводит числовое значение N в строковое и присваивает результат строке St, причем можно переводить как целые числа, так и вещественные.
Примеры
- Str(1234, St) − после выполнения St='1234';
- Str (452.567, St) − переводим вещественное число с фиксированной запятой, результат St='452.567';
- Str(4.52567е+2, St) − переводим вещественное число в экспоненциальной форме, результат St='4.52567e+2'.
2. Val(Str, N, К) − переводит строковое значение в числовое. Если данная строка действительно является записью числа (целого или вещественного), то значение К=0, а N − это искомое число, иначе К будет равно номеру первого символа, с которым процедура Val "не справилась".
Примеры
- Val('1234', n, k) - n=1234, k=0;
- Val('234.56', n, k) - n=234.56, k=0;
- Val('2.3456e+2', n, k) - n=2.3456e+2, k=0;
- Val('12-45', n, k) k=3, так как знак "−" в записи чисел может быть только на первом месте;
- Val('2,567m', n, k) k=2, так как разделительным знаком между целой и дробной частями является точка, а не запятая;
- Val ('5.87с-5') k=5, так как символ 'с' не должен встречаться в записи вещественного или целого числа.
Пример программы на закрепление темы:
Составить программу, определяющую курс обучения в университете студентов. Применить процедуру преобразования числа в строку для вывода результата на экран.
uses crt;
var
c: string;
d,k,m: integer;
begin
writeln('Введите год поступления);
readln(d);
writeln('Введите текущий год');
readln(k);
writeln('Введите текущий месяц');
readln(m);
case m of
9..12: str((k-d)+1,c);
1..8: str((k-d),c);
end;
writeln('Вы учитесь на '+ c +' курсе «КазИТУ»');
end.
Дата добавления: 2017-11-04; просмотров: 589;