Паскаль тип стринг - Мир ПК
Fruitsekta.ru

Мир ПК
18 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Паскаль тип стринг

Паскаль тип стринг

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:

n — максимально возможная длина строки — целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.

Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).

Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.

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

Выражения типа char можно присваивать любым строковым переменным.

В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st — это ‘Строка’, то st[1] — это ‘С’, st[2] — это ‘т’, st[3] — ‘р’ и так далее.

Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:

В этом примере переменная c приобретет значение ‘TurboPascal’.

Кроме слияния над строками определены операции сравнения ,=,<>, =. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.

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

В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями. Функция возвращает в качестве результата значение текущей длины строки-параметра

Пример.
Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации «+» и работает немного менее эффективно, чем эта операция.
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.

Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

Пример.
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.

Пример.
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x — может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.

В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.
Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.
В данном случае функция возвращает код символа ch.
Если c — строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Строковый тип данных в Паскале

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

Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки.

Примеры описания строк:

Длина строки хранится в первом ее байте, индекс которого равен 0.
Объявление типизированной константы для типа string осуществляется так:

Читать еще:  Гост требования безопасности к производственному оборудованию

Существует понятие пустой строки, т.е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами (например, st = «color : #339 933 ; «> : = / span> = «color : #ff0000 ; «> » / span> ).

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

Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.

Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +.

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

Имя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.

К отдельному символу строки можно обращаться как к элементу массива символов, например s1 = «color : #009 900 ; «> [ / span> = «color : #cc66cc ; «> 3 / span> = «color : #009 900 ; «> ] / span> . Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:

Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента (например, str [ 3 ] : = ‘j’ ).

Элементы строки нумеруются с единицы, т.к. в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:

Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str [ 0 ] : = #50 устанавливает текущую длину равной 50.

Паскаль тип стринг

Далее познакомимся с типом данных, который относится к числу структурированных. Это строковый тип данных (строка). Строка — это последовательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов в строке называется ее длиной . Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Особенностью строки в Turbo Pascal является то, что с ней можно работать как с массивом символов, с одной стороны, и как с единым объектом, — с другой. За счет этого обработка строк достаточно гибка и удобна. Строковая константа есть последовательность символов, заключенная в апострофы. Например: ‘это строковая константа’, ‘272’. Строковая переменная описывается в разделе описания переменных следующим образом:

Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255. Например: Var slovo : string.

Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.

Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например: N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях.

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

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

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

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

Читать еще:  История языка паскаль

ВыражениеРезультат
‘True1’ ’MOTHER’True
‘Мама ‘ <> ‘Мама’True
‘Cat’=’Cat’True

Функция Copy(S, Pozition, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pozition. Здесь N и Pozition — целочисленные выражения.

Значение SВыражениеРезультат
‘Мама мыла раму’Copy(S, 6, 4)‘мыла’
‘Маша ела кашу’Copy(S, 1, 8)‘Маша ела’

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

ВыражениеРезультат
Concat(‘Маша ‘, ‘ела ‘, ‘кашу’)‘Маша ела кашу’

Функция Length(S) — определяет текущую длину строки S . Результат — значение целого типа.

Значение SВыражениеРезультат
‘test-5’Length(S)6
‘(A+B)*C’Length(S)7

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

Значение S2ВыражениеРезультат
‘abcdef’Pos(‘cd’, S2)3
‘abcdcdef’Pos(‘cd’, S2)3
‘abcdef’Pos(‘k’, S2)

Процедура Delete(S, Poz, N) — удаление N символов из строки S , начиная с позиции Poz.

Исходное значение SОператорКонечное значение S
‘abcdefg’Delete(S, 3, 2)‘abefg’
‘abcdefg’Delete(S, 2, 6)‘a’

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

Процедура Insert(S1, S2, Poz) — вставка строки S1 в строку S2, начиная с позиции Poz.

Исходное значение S2ОператорКонечное значение S2
‘ЭВМ РС’Insert(‘IBM-‘, S2, 5)‘ЭВМ IBM-PC’
‘Рис. 2’Insert(‘N’, S2, 6)‘Рис. N 2’

Контрольные вопросы и задания

  1. Как можно объявить величину строкового типа?
  2. К каким типам данных относятся строки?
  3. Какова максимально возможная длина строки?
  4. С величиной какого типа данных совместим по присваиванию отдельный символ строки?
  5. Расскажите об операциях, которые можно выполнять над строковыми величинами.
  6. Расскажите о функциях, определенных для величин строкового типа.
  7. Расскажите о процедурах, определенных для величин строкового типа.
  8. Как осуществляется доступ к отдельному сииволу строки?
  9. Почему значение отношения ‘Мама’<>‘мама’ равно TRUE?
  10. Дан фрагмент программы: Какое значение пулучит переменная S после его исполнения?
  11. Дан фрагмент программы. Точно и однозначно сформулировать условие задачи, решение которой приведенно в данном фрагменте.
  12. Имеется следующая переменная Какое из обращений к J -му символу I -той строки ( I -го элемента массива S ) будет правильным? 1) S[I][J]; 2) S[I,J]; 3) S[J][I]; 4) ответы 1–2 правильны; 5) среди ответов нет ни одного правильного.
  13. Какая функция (процедура) является аналогом операции сцепления (+) при работе со строками?
  14. Каков будет результат выполнения операции сцепления, если длина результирующей строки превысит значение 255?

Язык паскаль онлайн

Тип string (строковый) в паскале – Процедуры и функции для работы со строками

    Browse: Home / Самоучитель паскаль онлайн / Тип string (строковый) в паскале – Процедуры и функции для работы со строками

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

У этого типа есть определенные особенности , которые мы рассмотрим в данной статье.

Строковый тип может хранить в себе до 255 символов ( пробелы так же следует учитывать ).

Объявление переменный строкового типа :

Тип данных string можно объявить двумя способами : с обозначением длины строки и без обозначения. При простом объявлении строки в блоке var :

для переменной text будет предоставлено 255 символов ( максимальное количество ). Но мы можем заранее понимать , что какая-либо переменная будет очень короткой и тогда мы используем объявление с обозначением длины :

В данной строке поместятся всего 20 символов , которые будут занимать 21 байт , в отличии от 256 байт , которые займет целая строка. Экономия памяти на лицо.

Вы наверное уже задались вопросом : Почему строка в 255 символов занимает 256 байт ? все дело в том что строка хранит в себе не только символы , но и размер самой строки в нашем случае это 255.

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

Несколько строк можно складывать. Например вывод имени и фамилии одного человека может выглядеть так :

В данном случае , если мы введем Игорь Петров , то получим на выходе программы ИгорьПетров.

Строки также можно сравнивать ( больше , меньше или равно ). Пример сравнения легче всего рассмотреть на сравнении имен : Игорь и Иван.
Строки сравниваются по символам : чем ближе символ к началу алфавита тем меньше он «весит». Получается , что имя Игорь будет больше , так как 2 символ в их имени больше у Игоря.

Функция length :

Функция length возвращает длину строки. Например функция length(‘привет’) вернет нам число 6 , так как слово привет состоит из 6 символов. С помощью этой функции вы сможете узнать длину любой строки.

Функция pos :

Давайте рассмотрим такую задачу : нам нужно найти на какой позиции в строке встречается некоторое слово :

В этом случае на выходе программы мы получим позицию слова , которое встречается в строке в первый раз. Если такого слова нет , то функция возвращает 0.

Как работает функция pos : pos( какое слово ищем , в какой строке );

Функция insert :

Данная функция добавляет в строку любую другую строку . Она принимает в себя 3 атрибута : insert( какую строку добавить , в какую строку , на какую позицию ).

Функция delete :

Эта функция удаляет определенное количество символов из строки и несет в себе 3 атрибута : delete( из какой строки , с какой позиции , сколько символов удалить ).

На заметку :

Строку так же можно представить в виде массива длинной в 255 ячеек , заполненных символами. Пример :

В результате выполнения данной программы мы получим первый символ из введенного имени.

Для закрепления всех этих функция давайте рассмотрим такую задачу : Требуется ввести строку и ввести слово , которое будет заменено на слово «( удалено )».

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

Length (s: string): integer;

Функция Length возвращает в качестве результата значение текущей длины строки-параметра.

Пример. n: = length (‘Pascal’);

Concat (s1, [s2, …, sn]: string): string

Функция Concat выполняет слияние строк-параметров, которые могут быть произвольное количество. Каждый параметр выражением строчной типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Эта функция эквивалентна операции конкатенации «+» и работает чуть менее эффективно, чем эта операция.

Функция Copy возвращает подстроку, выделенный из исходной строки s, длиной count символов, начиная с символа под номером index.

Пример. s: = ‘Система Turbo Pascal’;

s4 = copy (s, 15, 6);

Delete (var s: string; index, count: integer)

Процедура Delete удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

Пример. s: = ‘Система Turbo Pascal’;

Insert (source: string; var s: string; index: integer)

Процедура Insert предназначена для вставки строки source в строку s, начиная с символа index этой строки.

Пример. s: = ‘Система Pascal’;

insert ( ‘Turbo’, s, 9);

Pos (substr, s: string): byte

Функция Pos осуществляет поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Пример. s: = ‘Система Turbo Pascal’;

x1 = pos ( ‘Pascal’, s);

x2 = pos ( ‘Basic’, s);

Str (X: арифметическое выражение; var st: string)

Процедура Str преобразует числовое выражение X в его строчное представление и помещает результат в st.

Val (st: string; x: числовая переменная; var code: integer)

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

В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.

Chr (n: byte): char

Функция Chr возвращает символ по коду, равный n. Если n можно представить как числовую константу, то можно пользоваться записью #n.

Ord (ch: char): byte;

Функция Ord возвращает код символа ch.

UpCase (c: char): char;

Если c — маленькая латинская буква, то функция UpCase возвращает соответствующую большую латинскую букву, в противном случае символ c возвращается без изменения.

Ссылка на основную публикацию
Adblock
detector