Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
Значениями строкового типа (string) в Паскале являются последовательности символов длиной от 0 (пустая строка) до 255 символов. Можно описать строку, предельная длина которой меньше 255, эту длину в квадратных скобках. Примеры описания строк:
var s1, s2: string; {Обычные строки длиной до 255 символов} name: string[20]; {Строка длиной не более 20 символов} group: string[3]; {Строка длиной не более 3 символов} txt: array [0..99] of string[80]; {Массив из 100 строк длиной не более 80 символов}
Строку можно рассматривать как массив символов, то есть обращаться из программы к отдельным символам строки:
s1[2] – второй символ строки s1;
s2[i] – i-й символ строки s2;
txt[3][10] – десятый символ третий строки из массива txt.
Нумерация символов в строке начинается с 1. В памяти строка занимает на 1 байт больше, чем это необходимо для хранения символов. Самый первый (нулевой) байт хранит длину строки. Поэтому присваивание вида: s1[10]:=’x’ приведет к желаемому результату, только если в строке десять или больше символов. Та же операция по отношению к более короткой строке не приведет к ее изменению.
Строки можно считывать и печатать обычными процедурами ввода/вывода: read, readln, write, writeln.
Для строк определена операция сложения. При этом складываемые строки объединяются в одну. Например:
s1:='abra'; s1[1]:=Upcase(s1[1]); s2:='kadabra'; s1:=s1+' '+s2+'!'; writeln(s1);
Здесь первый символ строки s1 (строчная «a») был заменен на прописную «A». Затем к этой строке был добавлен пробел и строка s2. В итоге программа напечатает строку ‘Abra kadabra!’.
Переменную или выражение типа Char также можно прибавить к строке.
Отдельные символы строки (s1[1], s1[2] и т.д.) можно рассматривать как переменные типа Char. В примере мы воспользовались этим, заменив строчную букву заглавной.
Строка может быть пустой, то есть вовсе не содержать символов и иметь нулевую длину. Такая строка задается как две одинарные кавычки, между которым ничего нет:
S := '';
Обратите внимание, что «ничего» в данном случае, значит совсем ничего. Часто, пытаясь задать пустую строку, ставят между кавычками пробел, что неправильно.
Некоторые процедуры и функции для работы со строками:
1) Length(s) – получение длины строки.
2) Pos(Substr, S) – функция, в качестве результата выдающая номер символа, начиная с которого в строке s начинается подстрока Substr. Если S не содержит подстроки Substr, то результат будет равен 0.
Например: Pos(‘ ‘, s) – найдет номер позиции, на которой в строке s находится пробел. Pos(‘Ivan’, s) найдет имя ‘Ivan’.
3) Copy(s, i, n) – функция, выделяющая из строки s подстроку, начиная с символа за номером i, и включающую n символов. Например:
s1:='abracadabra'; s1:=Copy(s1, 5, 6);
В результате строка s1 будет равна ‘cadabr’.
4) Delete(s, i ,n) – процедура, удаляющая из строки s n символов, начиная с символа с номером i.
5) val(s, n, code) – процедура, переводящая строку s в число n. Если преобразование произошло успешно, то code будет равна 0, если нет, то в эту переменную будет записан код ошибки. Конкретнее, Pascal ABC при неудаче запишет туда 1, а все прочие Паскали (Borland pascal, Delphi, Free pascal) — номер первого неправильного символа, то есть не являющегося цифрой, знаком «-«, символами «e» или «E» или десятичной точкой.
6) str(n, s) – процедура, переводящая число n в строку s.
7) Для преобразования чисел в строки и обратно также удобно пользоваться функциями:
StrToInt(s) — функция, возвращающая целочисленное значение, записанное в строке s.
StrToFloat(s) — функция, возвращающая вещественное значение, записанное в строке s.
IntToStr(x) — функция, возвращающая строковое значение, содержащее целое число x.
FloatToStr(x) — функция, возвращающая строковое значение, содержащее вещественное число x.
Заметим, что данные функции не будут работать, если вы программируете в среде Borland Pascal.
Следующий раздел:
Предыдущий раздел:
Предлагаю дописать характеристику функции val. А именно о коде ошибки. Она выдает не просто номер ошибки, а номер первого символа в переводимом тексте, который не является числом.Это полезно знать при решении некоторых задач.
Спасибо за замечание. Описание дополнил.
И Вам спасибо за информацию, я даже не знал, что в АВС только нуль или единица:)
а это одинаковые функции?:
StrToInt(s) — функция, возвращающая целочисленное значение, записанное в строке s.
StrToFloat(s) — функция, возвращающая целочисленное значение, записанное в строке s.
StrToFloat — превращает строку в вещественное число. Опечатка. Спасибо.
Таррас покажете мне эти все программы полностью на языка С++ . Спасибо заранее.
«txt[3][10] – десятый символ третий строки из массива txt.»
Непонятное предложение. Может имели ввиду:
» txt[3][10] – десятый символ третЬЕй строки из массива txt.»