русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции над строками


Дата добавления: 2014-11-28; просмотров: 638; Нарушение авторских прав


Значение строковой переменной может быть присвоено оператором присваивания либо прочитано из некоторого файла, например, текстового, соответствующей процедурой присваивания или чтения:

S3 := 'Тульский государственный университет'

S5 := S3;

readln(F, S5) ; {Чтение из файла F}

При вводе строковых переменных вводимые символы размещаются с начала строкового массива. Если количество введённых символов меньше заданной длины строки, то оставшиеся байты заполняются пробелами. Если заданная длина строки меньше, чем длина присваиваемого значения, то лишние символы отбрасываются.

Строка в Паскале трактуется одновременно как простое (скалярное) значение, так и как массив символов. Поэтому некоторые операции могут выполняться над строкой целиком (например, ввод и вывод), а некоторые над каждым символом по отдельности.

К конкретному символу строки можно обратиться как к элементу массива, указав в квадратных скобках после имени строки порядковый номер элемента строки.

В отличие от массивов переменные строкового типа могут участвовать как операнды в инструкциях ввода-вывода, например, в виде readln (S3) или в виде write (S3).

Самый первый байт в строке имеет индекс "0" и содержит текущую длину строки. Поэтому по операторуwrite (S3 [0]) на экран монитора будет выведен символ, описывающий длину строки S3. Количество символов в строке при её вводе определяется автоматически, при этом также автоматически заполняется нулевой байт.

К строкам можно применять операцию объединения (сцепления) строк, называемую конкатенацией и обозначаемую знаком "+". Например, после выполнения оператора

S6 := 'a' + 'b' + 'c';

строка S6 будет содержать текст "abc", а после выполнения оператора

S6 := S6 + 'd' + 'e' + 'f';

– текст "abcdef".

Все остальные действия над строками реализуются с помощью четырёх стандартных строковых функций Concat, Length, Copy, Pos и четырёх строковых процедур Delete, Insert, Str и Val, находящихся в модуле System.



Строковая функция Concat (St1, St2 [, St3, .., StN]) – конкатенация – имеет тип string и возвращает строку, полученную в результате слияния ("сцепления") строк-параметров St1, St2, .., StN. Например, функция

Concat ('abc', 'def');

эквивалентна действию оператора S6 := S6 + 'd' + 'e' + 'f';

Строковая функция Length (St) – "длина" – имеет тип byte и возвращает текущую длину строки St. Функцию Length удобнее использовать вместо выражения St [0], т.к. оно не даёт никаких преимуществ, а только затрудняет чтение текста программы.

Строковая функцияCopy (St, m, n) – "копирование" – имеет тип string и возвращает подстроку длиной n символов из строки St, начиная с символа номера m. Параметры m и n должны имеет тип integer, параметр St – тип string.

Строковая функцияPos (SubSt, St) – "позиция" – имеет типbyte и предназначена для поиска в строке St первого участка текста, совпадающего с текстом строки ("подстроки") SubSt. Если такой участок найден, то функция получит номер позиции, с которой начинается совпадение текстов. Если совпадения нет, то функция получит значение "ноль".

Строковая процедура Delete(St, m, n) – "удаление" – удаляет n символов из строки St, начиная с позиции m. Параметры m и n должны имеет тип integer или byte, параметр St – тип string.

Строковая процедураInsert(SubS, S,n) – "вставка" – вставляет подстроку SubS в строку S, начиная с позиции n. Параметр n должен иметь типinteger или byte.

Строковая процедураStr (X [: width [: decimals]], St) преобразует число Х любого вещественного или целого типов в строку символов St. Такое же преобразование делает процедура Writeln перед выводом. Если количество полей width под строковое представление значения Х не задано, то целое число будет занимать фактическое количество позиций, а вещественное будет записано в показательной форме в виде мантиссы и порядка числа и займёт 22 позиции (16 – мантисса, 8 – порядок). Если количество полей width под строковое представление значения Х задано, то целое число будет занимать width позиций. Если Х – вещественное число, то оно будет представлено в десятичной форме и также занимать width позиций, включая decimals позиций после десятичной точки.

Строковая процедураVal(St, x, y) преобразует строковое изображение числа St в число x целого или вещественного типа. Параметр y содержит признак ошибки преобразования. Если преобразование прошло успешно, то в x помещается результат преобразования, а переменная y будет равна 0. В противном случае параметр y будет содержать номер позиции строки St, где обнаружен ошибочный символ, а содержимое x не изменится.

В Паскале различают ведущие и ведомые пробелы. Пробел в начале строки перед символом называют ведущим, а в конце строки после конечного символа – ведомым.

При обращении к процедуре Val ведомые пробелы недопустимы. Поэтому, например, обращение

Val (' 125', x, y);

будет успешным, x станет равным 125, y – 0, а обращение

Val ('125 ', x, y);

будет ошибочным: значение x станет равным 125, т.е. не изменится, а y станет равным 4, т.е. укажет на ошибку в четвёртой позиции.

Если имеет место обращение

Val ('3,1416', x, y);

то x станет равным3,1416, т.е. не изменится, а y станет равным 2, т.к. имеет место ошибка: вместо десятичной точки поставлена запятая. Если же написано

Val ('3.1416', x, y);

то х будет равен 3.1416, а y станет равным нулю.

Кроме того, к строкам можно применять функцию Upcase (Ch) типа char, которая преобразует латинскую букву Ch в заглавную. Если значение символа Ch не является латинской буквой, то функцияUpcase его не изменит.

К строкам также применимы операции отношения =, <>, <, <=, >, >=. Сравнение строк происходит посимвольно слева направо. При этом один символ считается больше другого, если его код в таблице ASCII больше.

Как только в одной из строк впервые обнаружится больший символ, то эту строку считают большей и на этом их сравнение заканчивают.

Строки считаются равными, если имеют одинаковую длину и у них совпадают соответствующие символы.

Если длина одной строки больше, чем у другой, то строка большей длины считается большей.

Например, приведённые далее соотношения являются правильными:

'A' > '1', 'abcd' < 'acbd', 'abcd' > 'abc', 'abc ' = 'abc', 'c' < 'bbb'.

Любая заглавная буква всегда меньше соответствующей ей строчной, т.к. в кодовой таблице ASCII сначала располагаются все заглавные буквы, а затем строчные, т.е. заглавные буквы имеют меньшие номера.



<== предыдущая лекция | следующая лекция ==>
Строковый тип данных | Понятие файла


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.028 сек.