4754

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

Лекция

Информатика, кибернетика и программирование

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

Русский

2012-11-25

1.12 MB

41 чел.

Работа со строками

В реальных задачах часто встречаются объекты символьного типа – строки. Строка в Pascal трактуется как последовательность символов. В состав строки могут входить буквы латинского алфавита, кириллица, цифры, всевозможные знаки, скобки, пробел и др. Каждый символ строковой величины занимает 1 байт памяти (десятичный код от 0 до 255, зафиксированный в кодовой таблице ASCII).

Фрагмент таблицы символьной кодировки ASCII

Количество символов в строке называется ее длиной. Длина строки может динамически изменяться от 0 до 255. Пустая строка имеет нулевую длину.

Строковая константа – последовательность символов, заключенных в апострофы. Например:

’Это строковая константа’, ’123’.

Таким образом, при использовании в выражениях строка обязательно заключается в кавычки.

Два следующих друг за другом апострофа (’’), обозначают пустую строку, т.е. строку с нулевой длиной.

Строковая переменная описывается в разделе описания переменных:

Var <имя> : string [<максимальная длина строки>]

Например:
Var
Name: string[20];

St: string;

Если максимальная длина не указана, то она принимается равной 255 (по умолчанию).

Элементы строки идентифицируются именем строки с индексом, заключенным в квадратные скобки. Т.е. к любому символу в строке можно обратиться точно также, как к элементу одномерного массива по его номеру.

Например: N[5], S[i], slovo[k+1] 

Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Для хранения и обработки отдельных символов используют переменные типа char. Значением переменной такого типа может быть любой один символ.

Например: var a: char; ch: char; 

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

Выражения, в которых операндами служат строковые данные, называются строковыми. Над строковыми данными допустимы операции сцепления и операции отношения. 

Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и строковые переменные.

Например:

’Бейсик’ + ’Паскаль’ + ’Си’ + ’–’ + ’языки программирования высокого уровня’.
В результате получится строка:
’Бейсик Паскаль Си – языки программирования высокого уровня’.
Длина результирующей строки не должна превышать 255 символов.

Операции отношения =, <, >, <=, >=, <> позволяют произвести сравнения двух строк, в результате чего получается логическое значение (True или False). Операции отношения имеют более низкий приоритет, чем операции сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

Например:

Выражение

Результат

’True1’ < ’True2’

True

’Student’ > ’STUDENT’

True

’Студент’ <> ’ Студент’

True

Группа’ = ’Группа

True

 

Все остальные действия над строками и символами реализуются с помощью встроенных процедур и функций.

Стандартные функции и процедуры для работы со строками

Функции  для работы с данными строкового типа

Обращение к функции

Действие

Пример

Copy (S, Poz, N)

Выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Здесь N и Poz - целочисленные выражения.

S:=’IBM-PC’;
S1:=Copy(S,5,2);

Результат: S1=’PC

Concat(S1,…,Sn)

Выполняет сцепление (конкатенацию) строк S1,S2,..,Sn в одну строку.

S1:=’Test’;
S2:=’-’;
S3:=’5’;
S:=Concat(S1,S2,S3);

Результат: S:=’Test-5’

Length(S)

Определяет текущую длину строки S. Результат – значение целого типа.

S:=’Test-5’;
n:=Length(S);

Результат: n=5

LowerCase(S)

Возвращает копию строки S, в которой все символы преобразованы в символы нижнего регистра (в строчные буквы). Работает только с буквами латинского алфавита.

S:= ’STUDENT’;
S:=LowerCase(S);

Результат:S=’student’

UpperCase(S)

Возвращает копию строки S, в которой все символы преобразованы в символы верхнего регистра (в прописные буквы). Работает только с буквами латинского алфавита.

S:= ’student’;
S:=UpperCase(S);

Результат:S=’STUDENT’

Trim(S)

Удаляет из строки S лидирующие и завершающие пробелы, а также управляющие символы.

S:='  Студент  ';
S:=Trim(S);

Результат: S='Студент'

TrimLeft(S)

Возвращает копию строки S с удаленными лидирующими пробелами и управляющими символами.

S:='  Студент  ';
S:=TrimLeft(S);

Результат:
S='Студент  '

TrimRight(S)

Возвращает копию строки S с удаленными завершающими пробелами и управляющими символами.

S:='  Студент  ';
S:=TrimRight(S);

Результат:
S='  Студент'

Chr(X)

Возвращает символ, указанный его ASCII-кодом. Здесь Х – значение целого типа. Результат – значение типа Char.

for i:=65 to 71 do
S:=S+Chr(i);

Результат: S=’ABCDEFG ’

Ord(S)

Возвращает ASCII-код указанного символа. Здесь S – переменная типа Char. Результат – значение целого типа.

S:='F';
Cod:=Ord(S);

Результат: Cod=70

Pos(S1, S2)

Обнаруживает первое появление в строке S2 подстроки S1. Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1. Если такое появление не обнаружено, то результат равен 0.

S:=’abcdef’;
n:=Pos(’cd’,S);

Результат: n=3

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

Обращение к процедуре

Действие

Пример

Delete(S, Poz, N);

Удаление N символов из строки S, начиная с позиции Poz.

S:=’abcdef’;
Delete(S,3,2);

Результат: S=’abef’

Insert(S1,S2,Poz);

Вставка строки S1 в строку S2, начиная с позиции Poz.

S:=’ЭВМ PC’;
Insert(’IBM-’,S,5);

Результат:
S=’ЭВМ IBM-PC

Str(X[:N[:M]],S);

Преобразовывает числовое значение X в строку S. Параметр X является выражением целочисленного или действительного типа, а параметры N и M – это целочисленные выражения, определяющие форматирование строки S.

x:= -23.60;
Str(x:6:1,S);

Результат: S=’ -23.6’

a:=-23.60;
b:=20.5;
Str(a+b:6:1,S);

Результат: S=’  -3.1’

Val(S,x,Cod);

Преобразовывает строку S в числовое значение. Параметр S должен содержать последовательность символов, которая может быть воспринята как действительное число со знаком. Параметр x может быть как действительным, так и целочисленным. В параметр Cod заносится код выполнения преобразования: 0, если преобразование выполнено успешно, или номер позиции, в которой произошла ошибка.

S:='-23.60';
val(S,x,Cod);

Результат: x=-23,6

Типовые задачи на обработку строк

Анализ символьных строк

 Пример. Ввести строку символов. Определить

1.      Сколько цифр в строке.

2.      Есть ли в заданной строке одинаковые символы.

3.      Составить перечень всех гласных латинских букв.

Изменение строк (замена, удаление, вставка символов, лексем) Пример Заменить во введенной строке строчные русские буквы на прописные.

Программный код

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

Фрагмент кода программы

Пример. Дана строка длиной до 254 символов. Удалить все знаки «+» перед символами, не являющимися цифрами.

Фрагмент программного кода

Пример. В заданной строке заменить все слова «всегда» на «часто».

Фрагмент программного кода

Пример. Дана строка, содержащая слова, разделенные пробелами. Преобразовать строку в массив слов (лексем -последовательность допустимых символов языка программирования для последующего разбора транслятором).

 

Фрагмент программного кода

Использование компонента Memo для ввода данных символьного типа, состоящих из нескольких строк

Пример. Ввести с помощью компонента Memo текст из русских букв, состоящий из нескольких строк. Сосчитать сколько в этом тексте букв ’а’.


 

А также другие работы, которые могут Вас заинтересовать

29388. Пропедевтический этап в системе литературного образования школьников 49 KB
  Важнейшей особенностью предмета является формирование и развитие навыка чтения а также таких качественных характеристик чтения как сознательность и выразительность. Развитие навыка чтения предполагает на первом году обучения становление механизма чтения овладение слоговым и комбинированным способами чтения; на втором году обучения интенсивное овладение способом чтения целыми словами наращивание темпа чтения освоение способа чтения молча; на третьем году обучения становление способа чтения целыми словами в темпе соответствующем...
29389. Принципы построения учебных книг по литературному чтению: традиционное и инновационное. Детские книги как особый учебный материал для формирования читателя 23 KB
  Эту функцию выполняет учебник. Учебник рассматривает текст как информационное поле на котором состоится встреча автора и читателя. Типы книг для начальной школы: Обязательные: учебник хрестоматия учебникхрестоматия Факультативные: справочник энциклопедия словари рабочие тетради Принципы организации учебника: тематический по темам жанровый стихи рассказы сезонный Виды вопросов и заданий в учебниках: до текста и после текста репродуктивные на выявление первичного восприятия на анализ на синтез продуктивные...
29390. Урок литературного чтения и его особенности. Моделирование урока литературного чтения в логике одной из образовательных программ (на примере одного литературного произведения) 57 KB
  Урок литературного чтения и его особенности. Моделирование урока литературного чтения в логике одной из образовательных программ на примере одного литературного произведения Современный урок литературного чтения имеет свои особенности: Каждый урок рассматривается как часть более широкой системы литературное развитие школьника Урок это этап в изучении литературного произведения Урок это художественнопедагогическое целое содержание форма уока будет определяться жанром и особенностями произведения а так же художественным миром...
29391. Конструктивное исполнение электрооборудования в НГП 30 KB
  Конструктивное исполнение электрооборудования в НГП должно соответствовать условиям его эксплуатации. исполнение характеризуется тем что электродвигатели имеют специальные приспособления крышки кожухи сетки. Водозащищенное IP55 IP56 исполнение электродвигатели недоступны проникновению внутрь струй воды любого направления.
29392. Нерегулируемый ЭП буровых насосов 27.5 KB
  Двигатели брызгозащишенные с влагостойкой изоляцией с самовентиляцией; наверху корпуса двигателя смонтирован возбудитель связанный клиноременной передачей с валом двигателя. Номинальное напряжение двигателя 6 кВ частота вращения 750 об мин. Так как условия пуска двигателя бурового насоса сравнительно легкие момент статического сопротивления на валу двигателя составляет примерно 20 от номинального момента двигателя а время разгона составляет 34 сек в схеме предусмотрен прямой пуск двигателя с наглухо подключенным возбудителем. Для...
29393. Особенности конструкции ЭД станка-качалки 21 KB
  имеют повышенный пусковой момент который обеспечивается за счет специальной конструкции обмотки ротора это может быть или глубокопазная обмотка 10:1 или двойная беличья клетка причем внутренняя клетка выполнена из меди а наружная из латуни имеющей большее удельное сопротивление чем медь. После вытеснения тока на поверхность сечение проводника по которому течет ток уменьшается при этом активное сопротивление обмотки ротора увеличивается и момент развиваемый ЭД при пуске возрастает так как он пропорционален приведенному активному...
29394. Регулируемый ЭП буровых насосов 66.5 KB
  В небольших пределах регулирование скорости электродвигателя буровых насосов можно осуществлять при применении асинхронных двигателей АД с фазным ротором при помощи включении в цепь ротора регулировочных реостатов. При снижении скорости на 2030 скольжение становится равным 0203 и потеря мощности в пусковых реостатах достигнет также 2030. Поэтому в настоящее время реостатный способ регулирования скорости АД не применяется. Схема обеспечивает изменение скорости вращения АД на 40 выше от номинальной.
29395. СИНХРОННЫЕ МАШИНЫ 37 KB
  Синхронные машины обладают свойством обратимости то есть могут работать как генератором так и двигателем.1а изображена схема синхронной машины с явно выраженными полюсами.1 Конструкция и электрическая схема синхронной машины с явно выраженными полюсами а б.
29396. Электрооборудование установок для насосной добычи нефти 237.5 KB
  Глубинный насос 1 станкакачалки подвешивается на колонне насосных труб 3рис. Плунжеру 2 насоса сообщается возвратнопоступательное движение с передачей энергии от балансира станкакачалки при помощи колонны штанг 4. Колонна штанг станкакачалки на устье скважины через шток соединена с головкой балансира 6 станкакачалки. Балансирный и кривошипный противовесы служат для уравновешивания нагрузки подвижной системы станкакачалки и двигателя при ходе колонны штанг вниз и вверх рис.