Слайд 1Работа со строками
Ст. преподаватель:
Леонов Ю. А.
Выполнила:
Сулейманова П. Г.
гр.
10-САПР
Слайд 2Содержание
Строковый тип данных
Представление в памяти
Понятие строки
Индексация строки
Ввод и вывод строки
на экран
Пример
Тип данных String
Константы типа String
Пример
Тип Char
Слайд 3Содержание
Функции, применяемые к порядковому типу Char
Пример использования функций
Тип Pсhar
Функции применяемые
к типу PСhar
Строки с завершающим нулем
Пример описания символьных массивов с
нулевой базой
Операции со строками
Операция конкатенация
Слайд 4Содержание
Операция сравнения
Пример сравнения
Стандартные процедуры
Процедуры преобразования типов
Примеры
Стандартные функции
примеры
Слайд 5Строковый тип данных
Строковый тип данных – тип, который относится к
числу структурированных. Каждый символ занимает 1 байт памяти (если 8-разрядная
кодировка – ASCII) или 2 байта (если 16-разрядная кодировка – Unicode).
Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255 (код ASCII). Один (нулевой) байт содержит значение текущей длины строки.
Слайд 6Представление в памяти
строки могут иметь достаточно существенный размер
(до нескольких десятков мегабайтов);
изменяющийся со временем размер – возникают трудности
с добавлением и удалением символов.
Слайд 7Понятие строки
Строка – это линейно упорядоченная последовательность
символов, принадлежащих конечному
множеству символов,
называемому алфавитом.
Синтаксис описания строк:
Пример:
Var Strl1: String[30];
Strl2:
String; { длина 255 }
VAR <имя>: STRING[<[max длина строки]>];
Слайд 8Индексация
Символы внутри строки индексируются (нумеруются) от единицы. Обращение к отдельному
символу идентифицируется именем строки с индексом, заключенным в квадратные скобки.
Пример:
N[5], S[i], slovo[k+l].
Индекс может быть константой, переменной, выражением целого типа.
Слайд 9Ввод переменных и вывод их на экран
Переменные типа String выводятся
на экран посредством стандартных процедур Write и Writeln.
Ввод осуществляется с
помощью стандартных процедур Read и Readln.
Слайд 11Примечание
Если при вводе задать символов больше, чем максимально
допустимо, то лишние символы будут проигнорированы.
Слайд 12Тип String
Для описания строковых переменных в Паскале существует предопределенный тип
String.
Пример:
Var s1: string[10];
s2: string[20];
smax: string;
Слайд 13Константы типа String
При объявлении констант типа String используются типизированные и
нетипизированные константы.
Слайд 15Тип char
Символьный тип Char принимает значения из упорядоченной последовательности символов.
Каждый символ имеет номер от 0 до 255 (код ASCII).
В
памяти под символьную константу отводится один байт, в который помещается код символа ASCII.
Если символ имеет графическое изображение, то он заключается в апострофы (‘A’), если это управляющий символ, то перед числом ставится # (#13)
Слайд 16Функции, применяемые к порядковому типу Char
Слайд 17Pred(x1);
Возвращает предшествующий элемент относительно значения переменной x1
Succ(x1);
Возвращает последующий элемент относительно
значения переменной x1
Слайд 18Пример использования функций
Задача. Написать программу, для считывания нажатия клавиши и
вывести на экран ее символьное значение, а также последующего и
предыдущего символов.
var
x1, x2, x3, x4: Char;
Begin
x1:=ReadKey;
writeln(x1);
x2:=Pred (x1); { Возвращает предшествующий элемент относительно значения х1 }
writeln(‘Pred=‘ ,x2) ;
x3:=Succ (x1); { Возвращает последующий элемент относительно значения переменной х1 }
writeln(‘Succ=‘ ,x3);
readln
End.
Слайд 20Операция конкатенации
Операция конкатенация (слияния, сцепления) применяется для соединения нескольких строк
в одну, обозначается знаком «+».
Операция сцепления применима для любых строковых
выражений, как констант, так и переменных.
Синтаксис описания:
Пример:
T:=‘Home’+’work’ ; {‘T=Homework’}
операнд1 + операнд2
Слайд 21Примечание
«Склеить» строки можно также при помощи функции:
Concat (Strl1, Strl2, Strl3);
- конкатенация.
Пример:
Var
S : String;
begin
S := Concat('ABC', 'DEF'); {Строка'ABCDEF' }
End.
Слайд 22Операция отношения
Отношения происходит посимвольно слева направо: сравниваются коды соответствующих символов
до тех пор, пока не кончится одна из строк (или
обе сразу). В результате сравнения двух строк получается логическое значение (true или false).
Слайд 23Отношения
Две строки называются равными, если они равны по длине и
совпадают посимвольно.
Синтаксис описания:
Оператор «больше» вычисляет числовое значение каждого из
операндов и затем производит их числовое сравнение. Если числовое значение операнда1 больше,чем операнда2, то результат операции 1 (т.е. "истина"), иначе равен 0 (т.е. "ложь").
Синтаксис описания:
Оператор «меньше» вычисляет числовое значение каждого из операндов и затем производит их числовое сравнение.
Синтаксис описания:
операнд1 = операнд2
операнд1 > операнд2
операнд1 < операнд2
Слайд 24Отношения
«Проверка включения». Операнд1 считается включенным в операнд2, если все его
элементы содержатся во втором. Обратное утверждение может быть и несправедливым.
Операции проверки включения обозначаются ‘<=’ и ‘>=’.
Синтаксис описания:
Операция «не равенство». Строки считаются равными (эквивалентными), если все элементы опернд1 присутствуют в опернд2 и наоборот. Если это не так, считается что множества не равные. Для операции неравенство используются символы ‘<>’.
Синтаксис описания:
операнд1 >= (<=) операнд2
операнд1 <> операнд2
Слайд 26Стандартные процедуры
Procedure ();
begin
{тело процедуры}
end;
Слайд 27DELETE(Str, n, m)
Из строки Str вырезает m символов начиная с
n позиции.
INSERT(Str1, Str2, n)
Вставляет строку Str1 в строку Str2
начиная с n-го символа. Первая строка не изменяется, вторая получает новое значение.
Удаление
Вставка
Слайд 28Процедуры преобразования типов
VAL (Str1, N, K)
STR (N, Str1)
Часто возникает необходимость
получить строковое представление числа и наоборот. Для работы с числами
и строками применяются две процедуры
Переводит числовое значение N в строковое Str1. N - целое или вещественное.
Обратное действие. Переводит строковое значение в числовое. N – искомое число (целое или вещественное).
Слайд 29Процедуры для работы над строками
Примеры
Слайд 30Стандартные функции
function ():
тип_возвращаемого значения;
begin
{тело_функции}
end;
Слайд 31Length(Str)
Определяет длину строки Str, т.е. количество символов в строке.
Длина
строки
Concat(s1, s2, …, sn)
Слияние строк
Выполняет слияние строк s1, s2,...,sn
в одну строку.
SetLength
Позволяет изменить длину строки
Если строка содержала количество символов больше, чем задано в функции, то "лишние" символы обрезаются.
Пример:
Str:='Hello, world!';
SetLength(Str, 5); { Str = "Hello" }
Слайд 33Pos(Str1, Str2)
Поиск подстроки
Определяет позицию подстроки в строке. Результат этой функции
– целое число, эта функция определяет номер элемента с которого
начинается первое вхождение подстроки Str1 в строку Str2. Если вхождения нет, то значение функции равно 0.
Слайд 34Копирует из строки Str m символов начиная с n позиции.
Исходная строка не меняется
COPY(Str, n, m)
Копирование
Слайд 35Функции для работы над строками
Примеры
Слайд 36Тип PChar
Для работы со строками длиной более 255 символов в
язык Паскаль введен тип PChar, определяемый, как указатель на символ:
type
PChar =^Char;
Слайд 37Функции применяемые к типу PChar
Слайд 38Function StrCat(Dest, Source: PChar): PChar;
Копирует строку Source в конец строки
Dest и возвращает указатель на начало Dest.
Function StrECopy(Dest, Source: PChar):
PChar;
Эта функция работает в точности как StrCat, но возвращает указатель на конец сцепленных строк, т.е. на терминальный ноль.
Слайд 39Function StrLCat(Dest, Source: PChar; MaxLen: Word): PChar;
Копирует символы строки Source
в конец строки Dest до тех пор, пока не будут
скопированы все символы или когда длина сцепленной строки Dest не достигнет MaxLen.
Возвращает указатель на сцепленную строку.
Function StrLower(Str: PChar): PChar;
Преобразует заглавные буквы строки Str к строчным и возвращает указатель на результат.
Слайд 40Строки с завершающим нулем
Строки с завершающим нулем хранятся в виде
символьных массивов с нулевой базой (начинающихся с 0) и индексом
целого типа:
array[0..X] of Char;
где X – положительное ненулевое целое число.
Слайд 41Примеры описаний символьных массивов с нулевой базой
Данные массивы могут использоваться
для хранения строк завершающихся нулем.
type
TIdentifier = array[0..15] of Char;
TFileName
= array[0..79] of Char;
TMemoText = array[0..1023] of Char;
Слайд 42Дайте определение строкового типа даных.
Дайте определение понятия строки.
Как осуществляется индексацию
строк?
Как осуществляется вывод переменных типа String на экран?
Для чего служит
тип данных String?
Какие функции применяются к типу Char?
С какой целью введен тип PChar?
Какие функции применяются к типу PСhar?
Что такое строки с завершающим нулем?
Какие существуют операции со строками?
Какие существуют операции отношения?
Перечислите стандартные процедуры и функции для работы со строками.
Контрольные вопросы
Слайд 43 Список используемой литературы
Фаронов, В.В. Turbo Pascal: учебное пособие /
В.В. Фаронов. – М.: Изд.: ОМД Групп, 20010. – 368с.
Информатика:
базовый курс: учебник для вузов / О.А. Акулов, Н.В. Медведев
Немнюгин, С.А. Turbo Pascal: программирование на языке высокого уровня / С.А. Немнюгин. – 2-е изд. – СПб.: Питер, 2006. – 544с.
Марченко, А.И. Программирование в среде Turbo Pascal 7.0. / А.И. Марченко, Л.А. Марченко. – М.: Бином Универсал, К.: ЮНИОР, 2007. – 496с.
Культин, Н.Б. Turbo Pascal в задачах и примерах / Н.Б. Культин. – СПб.: БХВ-Петербург, 2009. – 160с.
Коффман, Э.М. Turbo Pascal / Э.М. Коффман. – 5-е изд. – М.: Вильямс, 2005. – 896с.