Главная Минимаркер Информатика и вычислительная техника Минимаркер Программное обеспечение - Паскаль Минимаркер Работа со строковым типом

Работа со строковым типом

Строковый тип переменных имеется практически во всех языках программирования, и он используется для обработки текста. Строковый тип – цепочка символов, заключенные в разделители. В языке Pascal разделителями являются апострофы, а строковый тип относится к составным типам, состоящих из символьного типа Char.

Строковый тип можно связать с одномерным массивом символов.

Array[1..N] of Char;

Однако в отличие от массива, количество символов в строке может меняться от 0 до N, где N - максимальное количество символов в строке. При определении строкового типа в Var, в квадратных скобках за String, указывается максимальная длина строки.

Var Fam: String[12];

N определяется максимально допустимой длиной строки – 255. Строковая переменная после объявления занимает в памяти количество байт, равное определенному значению N. Кроме того автоматически выделяется один байт для записи текущего значения длины строки. Для этой цели используется нулевой байт.

Fam:=’Иванов’;

Fam[0]=6

Fam[1]=’И’

Fam[2]=’в’

Fam[6]=’в’

В языке Паскаль в программе к каждому символу в строке можно обратиться как к элементу одномерного массива типа Char.

Ввод и вывод строковых переменных

Переменные строкового типа могут быть введены в программу тремя способами:

  • Ввод с клавиатуры (Readln). При вводе двух или более переменных строкового типа с клавиатуры, для каждой переменой необходимо использовать разные ReadLn;

Fam, Im: String[13];

ReadLn(Fam); ReadLn(Im);

  • Ввод присвоением. При использовании оператора присвоения, для ввода строки, переменная строкового типа должна быть объявлена, а порядок использования стандартным;

Fam:=’Иванов’;

  • Под типизированной константой;

Const

Fam: String[13]=’Иванов’;

При выводе строковой переменой в Write или WriteLn можно задать формат. В этом случае формат не должен превышать размер строковой переменной, заданной при объявлении.

Var

Fam: String[20];

Fam:=’Иваноский Николай’;

Write(Fam:4);

Операции со строковым типом

Для строкового типа имеется строковая операция: Конкатенация (сцепление). Обозначается знаком ‘+’. При выполнении операции к первой строке пристыковывается вторая строка. Общая длина строки не должна превышать объявленной или максимально допустимой (255).

Кроме строковой операции с переменными строкового типа применимы операции отношения. Правомерность использования операций отношений, что строки состоят из отдельных символов, являющимися в свою очередь переменными символьного типа. Каждый символ может быть представлен кодом. В операциях отношения сравниваются коды. Строки сравниваются посимвольно слева на право. Строки считаются равными при равном подборе символов и длине. При сравнении строк разной длины, имеющих равные левые части, большей считается строка, имеющая большую длину. При сравнении строк необходимо учитывать, что коды символов цифр меньше кодов символов букв. Коды латинских букв меньше кодов русских букв. Коды строчных букв меньше кодов прописных.

Обработка текстов в программах осуществляется с помощью процедур и функций языка Паскаль для строкового типа. В зависимости от результата работы, можно рассматривать процедуры и функции результатом которых будет строка (строковые) или число (числовые).

Строковые процедуры и функции

Функция Concat

Формат: concat(st1, st2, stN): String;

При выполнении функции concat, строки st1,st2,…,stN сцепляются без пробелов в порядке перечисления. Длина результата не должна превышать объявленной или допустимой (255) длины.

Var

st1, st2: String[10];

st3: String[30];

st1:=’cтудент’; st2:=’отличник’;

st3:=concat(st1,’ Иванов’,st2);

Write(st3);

Concat по работе аналогичен Конкатенации.

Функция Copy

Формат: Copy(st: String; N, M: Integer): String;

Функция Copy выделяет из строки st подстроку начиная с позиции N в строке st и длинной M.N и M – целые числа. Если N+M больше длины строки, то выделяется часть символов в пределах строки. Если N больше длины строки, то выделяется пустая строка.

Var

st1, st2: String[20];

st1:=’Петров Николай’;

st2:=Copy(st1,1,4);  //Петр

st2:=Copy(st1,5,6); //ов Ник

st2:=Copy(st1,8,7); //Николай

Процедура Delete

Формат: Delete(st: String; N, M: Integer);

Процедура Delete удаляет из строки st, M-символов, начиная с позиции N в строке st.

Var

st1: String[30];

st1:=’Изучаем работу процедуры Delete’;

Delete(st1,16,10);

Write(st1); //Изучаем работу Delete

Процедура Insert

Формат: Insert(subst, st: String; M: Integer);

Процедура Insert вставляет подстроку subst в строку st, начиная с позиции M в строке st. Если M больше длины строки st, то подстрока пристыковывается справка к строке st. Если общая длина st и subst превышает объявленную st, то лишние символы отсекаются.

st1, st2, st3: String[30];

st1:=’процедуры Insert’;

st2:=’Изучаем работу  ’;

Insert(st2,st1,1);

WriteLn(st1); //Изучаем работу процедуры Insert

Числовые процедуры и функции

Length

Формат: length(st: String): Integer;

Определяет длину строки st.

st:=’Строка Length’;

N:=length(st); //N=13

Pos

Формат: pos(subst, st: String): Integer;

Отыскивает в строке st первое вхождение subst и выводит номер позиции с которой она начинается. Если подстрока не найдена результат 0.

st1:=’Поиск в строке pos’;

st2:=’строк’;

N:=Pos(st2, st1); //N=9

M:=Pos(‘к’, st1); //M=5


© 2013 - 2017 Учебно-образовательный портал "Все лекции"
Материалы, представленные на страницах нашего сайта, созданы авторами сайта, присланы пользователями, взяты из открытых источников и представлены на сайте исключительно для ознакомления. Все авторские права на материалы принадлежат их законным авторам.
Разработка сайта - Скобелев Алексей





Яндекс.Метрика