Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций программирование.doc
Скачиваний:
40
Добавлен:
31.08.2019
Размер:
5.03 Mб
Скачать

6.Строковый тип данных

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

var s: string[n];

var s: string;

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

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

Пример:

'Текстовая строка'

#54#32#61 'abcde'^A^M

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

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

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

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

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

a := 'Turbo';

b := 'Pascal';

c := a + b;

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

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

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

  • Процедура Delete(St, poz, n) – удаление n символов строки St, начиная с позиции Poz.

Значение St

Выражение

Результат

‘абвгде’

Delete(St, 4, 2);

‘абве’

‘река Волга’

Delete(St, 1, 5);

‘Волга’

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

Значение S1

Значение S2

Оператор

Результат

‘ ЕС ’

‘ЭВМ1841’

Insert (S1, S2, 4);

‘ЭВМ ЕС 1841’

‘ N’

‘ Рис. 2’

Insert (S1, S2 , 6);

‘ Рис. N2’

  • Процедура Str(N,St) – преобразование числового значения N в строковый и помещение результата в строку St.

Значение N

Выражение

Результат

1500

Str (N:6,St);

‘ 1500’

  • Процедура Val(St, N,Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено.

Значение St

Выражение

Результат

‘1500’

Val(St, N,Code);

Code=0

’14.2A+02

Val(St, N,Code);

Code=5

  • Функция Copy(S, Poz, N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz.

Значение S

Выражение

Результат

‘Мама мыла раму’

Copy(S, 6, 4);

‘мыла’

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

Выражение

Результат

Concat(‘Мама ’,’мыла ’,’раму’)

‘Мама мыла раму’

  • Функция Length(S) – определяет текущую длину строки S.

Значение S

Выражение

Результат

‘1500 символов’

Length(S)

13

  • Функция Pos(S1,S2) – определяет первое появление в строке S2 подстроки S1.

Значение S2

Выражение

Результат

‘abcdef’

Pos(‘cd’,S2)

3

‘abcdef’

Pos(‘k’,S2)

0

  • Функция UpCase (ch) – преобразует строчную букву в прописную. Обрабатывает буквы только латинского алфавита.

Значение Ch

Выражение

Результат

‘d’

UpCase (ch)

‘D’

Пример. Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.

Program Stroki;

Var S1, S2:string;

Begin

Write(‘Введите строку’);

Readln(S1);

S2:= ‘ ‘;

For i:=1 to length(S1) do

If (S1[i]>=’0’) and (S1[i]<=’9’)

Then S2:=S2+S1[i];

Writeln(‘Результат’, S2)

End.  

Перечень источников:

    1. Кинг Д. Создание эффективного программного обеспечения. –М.: мир, 1991 – 284с.

2. Немнюгин С.А. Turbo Pascal: учебник – СПб «Питер», 2007.- 455с.

3. Попов В.Б. Turbo Pascal для школьников. – М.: Финансы и статистика, 2009. – 525с.