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; просмотров: 542;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.