Работа со строками.pptx
- Количество слайдов: 43
Работа со строками Ст. преподаватель: Леонов Ю. А. Выполнила: Сулейманова П. Г. гр. 10 -САПР
Содержание Строковый тип данных Представление в памяти Понятие строки Индексация строки Ввод и вывод строки на экран • Пример 6. Тип данных String • Константы типа String • Пример 7. Тип Char 1. 2. 3. 4. 5. 2
Содержание Функции, применяемые к порядковому типу Char Пример использования функций Тип Pсhar Функции применяемые к типу PСhar Строки с завершающим нулем Пример описания символьных массивов с нулевой базой 14. Операции со строками • Операция конкатенация 8. 9. 10. 11. 12. 13. 3
Содержание Операция сравнения • Пример сравнения 15. Стандартные процедуры • Процедуры преобразования типов • Примеры 16. Стандартные функции • примеры • 4
Строковый тип данных – тип, который относится к числу структурированных. Каждый символ занимает 1 байт памяти (если 8 -разрядная кодировка – ASCII) или 2 байта (если 16 -разрядная кодировка – Unicode). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255 (код ASCII). Один (нулевой) байт содержит значение текущей длины строки. 5
Представление в памяти ü строки могут иметь достаточно существенный размер (до нескольких десятков мегабайтов); ü изменяющийся со временем размер – возникают трудности с добавлением и удалением символов. 6
Понятие строки Строка – это линейно упорядоченная последовательность символов, принадлежащих конечному множеству символов, называемому алфавитом. Синтаксис описания строк: VAR <имя>: STRING[<[max длина строки]>]; Пример: Var Strl 1: String[30]; Strl 2: String; { длина 255 } 7
Индексация Символы внутри строки индексируются (нумеруются) от единицы. Обращение к отдельному символу идентифицируется именем строки с индексом, заключенным в квадратные скобки. Пример: N[5], S[i], slovo[k+l]. Индекс может быть константой, переменной, выражением целого типа. 8
Ввод переменных и вывод их на экран Переменные типа String выводятся на экран посредством стандартных процедур Write и Writeln. Ввод осуществляется с помощью стандартных процедур Read и Readln. 9
Пример Ввод данных с клавиатуры Вывод данных на экран var N: integer; begin Clr. Scr; Write (‘ введите число’); Readln(N); Writeln (‘вы ввели число’ , N); Readln End. s: string; n: integer; begin write'введите число’); readln(n); s: =str(n, s); writeln(s); readln; End. 10
Примечание Если при вводе задать символов больше, чем максимально допустимо, то лишние символы будут проигнорированы. 11
Тип String Для описания строковых переменных в Паскале существует предопределенный тип String. Пример: Var s 1: string[10]; s 2: string[20]; smax: string; 12
Константы типа String При объявлении констант типа String используются типизированные и нетипизированные константы. 13
Пример объявления констант Типизированные константы Нетипизированные константы Type colors = (white, red, black); Const Cur. Col: colors = red; name: String = ‘Pascal’; year: word = 1993; x: real = 0. 1; max: integer = 10; days: 1. . 31 = 1; answer: char = ‘y’ Type colors = (white, red, black); Const Cur. Col = red; name = ‘Pascal’; year = 1993; x = 0. 1; max = 10; days = 1; answer = ‘y’; 14
Тип char Символьный тип Char принимает значения из упорядоченной последовательности символов. Каждый символ имеет номер от 0 до 255 (код ASCII). В памяти под символьную константу отводится один байт, в который помещается код символа ASCII. Если символ имеет графическое изображение, то он заключается в апострофы (‘A’), если это управляющий символ, то перед числом ставится # (#13) 15
Функции, применяемые к порядковому типу Char
Pred(x 1); Возвращает предшествующий элемент относительно значения переменной x 1 Succ(x 1); Возвращает последующий элемент относительно значения переменной x 1 17
Пример использования функций Задача. Написать программу, для считывания нажатия клавиши и вывести на экран ее символьное значение, а также последующего и предыдущего символов. var x 1, x 2, x 3, x 4: Char; Begin x 1: =Read. Key; writeln(x 1); x 2: =Pred (x 1); { Возвращает предшествующий элемент относительно значения х1 } writeln(‘Pred=‘ , x 2) ; x 3: =Succ (x 1); { Возвращает последующий элемент относительно значения переменной х1 } writeln(‘Succ=‘ , x 3); readln End. 18
Операции со строками
Операция конкатенации Операция конкатенация (слияния, сцепления) применяется для соединения нескольких строк в одну, обозначается знаком «+» . Операция сцепления применима для любых строковых выражений, как констант, так и переменных. Синтаксис описания: операнд 1 + операнд 2 Пример: T: =‘Home’+’work’ ; {‘T=Homework’} 20
Примечание «Склеить» строки можно также при помощи функции: Concat (Strl 1, Strl 2, Strl 3); конкатенация. Пример: Var S : String; begin S : = Concat('ABC', 'DEF'); {Строка'ABCDEF' } End. 21
Операция отношения Отношения происходит посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не кончится одна из строк (или обе сразу). В результате сравнения двух строк получается логическое значение (true или false). 22
Отношения Две строки называются равными, если они равны по длине и совпадают посимвольно. Синтаксис описания: операнд 1 = операнд 2 Оператор «больше» вычисляет числовое значение каждого из операндов и затем производит их числовое сравнение. Если числовое значение операнда 1 больше, чем операнда 2, то результат операции 1 (т. е. "истина"), иначе равен 0 (т. е. "ложь"). Синтаксис описания: операнд 1 > операнд 2 Оператор «меньше» вычисляет числовое значение каждого из операндов и затем производит их числовое сравнение. Синтаксис описания: операнд 1 < операнд 2 23
Отношения «Проверка включения» . Операнд 1 считается включенным в операнд 2, если все его элементы содержатся во втором. Обратное утверждение может быть и несправедливым. Операции проверки включения обозначаются ‘<=’ и ‘>=’. Синтаксис описания: операнд 1 >= (<=) операнд 2 Операция «не равенство» . Строки считаются равными (эквивалентными), если все элементы опернд 1 присутствуют в опернд 2 и наоборот. Если это не так, считается что множества не равные. Для операции неравенство используются символы ‘<>’. Синтаксис описания: операнд 1 <> операнд 2 24
Примеры сравнения ‘стол’<‘столик’ ‘ABC’ <‘ADBA’ ‘ 12’ > ‘ 2’ 'Cat' = 'Cat‘ letter >= glasn; soglan <= letter; A: = [2, 1, 3]; D: = [1, 3, 2]; A<>D true false false 25
Стандартные процедуры Procedure <имя_процедуры>(<параметры>); begin {тело процедуры} end;
DELETE(Str, n, m) Удаление Из строки Str вырезает m символов начиная с n позиции. INSERT(Str 1, Str 2, n) Вставка Вставляет строку Str 1 в строку Str 2 начиная с n-го символа. Первая строка не изменяется, вторая получает новое значение. 27
Процедуры преобразования типов Часто возникает необходимость получить строковое представление числа и наоборот. Для работы с числами и строками применяются две процедуры STR (N, Str 1) VAL (Str 1, N, K) Переводит числовое значение N в строковое Str 1. N - целое или вещественное. Обратное действие. Переводит строковое значение в числовое. N – искомое число (целое или вещественное). 28
Процедуры для работы над строками Примеры Входные данные Функции Результат Описание S 1: =’Коробочка’ DELETE(S 5, 4, 2) S 1=’Корочка’ DELETE удаляет из строки S 1 2 символа начиная с 4 S 2: =’Рука’ S 3: =’Баш’ INSERT(S 3, S 2, 3) S 2=’Рубашка’ INSERT вставляет в строку S 2 строку S 3 начиная с 3 символа X: =2. 73284 Y: =1234 STR(X: 4: 2, S 4) STR(Y, S 5) S 3=’Трон’ STR преобразует число в строку; 4: 2 желаемый формат числа. S 6: =’ 2. 73’ S 7: =’ 12 -45’ S 8: =‘ 2, 567 m’ VAL(S 6, X, K) VAL(S 7, X, K) VAL(S 8, X, K) X=2. 73, K=0 K=3 K=2 VAL преобразует строку в число. 29
Стандартные функции function <имя_функции>(<параметры>): тип_возвращаемого значения; begin {тело_функции} end;
Concat(s 1, s 2, …, sn) Слияние строк Выполняет слияние строк s 1, s 2, . . . , sn в одну строку. Length(Str) Длина строки Определяет длину строки Str, т. е. количество символов в строке. 31
Set. Length Позволяет изменить длину строки Если строка содержала количество символов больше, чем задано в функции, то "лишние" символы обрезаются. Пример: Str: ='Hello, world!'; Set. Length(Str, 5); { Str = "Hello" } 32
Pos(Str 1, Str 2) Поиск подстроки Определяет позицию подстроки в строке. Результат этой функции – целое число, эта функция определяет номер элемента с которого начинается первое вхождение подстроки Str 1 в строку Str 2. Если вхождения нет, то значение функции равно 0. 33
COPY(Str, n, m) Копирование Копирует из строки Str m символов начиная с n позиции. Исходная строка не меняется 34
Функции для работы над строками Примеры Входные данные Функции Результат Описание S 1: =’Мотороллер’ K: =POS(‘Рол’, S 1) K=5 Возвращает позицию на, которой находится строка ‘Рол’ в строке S 1 S 3: =’Мотороллер’ L: =LENGTH(S 3) L=10 Выдаёт количество символов в строке S 2: =’Астроном’ S 3: =COPY(S 2, 3, 4) S 3=’Трон’ Возвращает часть строки длиной 4 символа начиная с 3 символа S 1: =’TAL’ S 2: =’LINN’ S 3: =CONCAT(S 1, S 2) S 3=’TALLINN’ Выдаёт результат сцепления строк. 35
Тип PChar Для работы со строками длиной более 255 символов в язык Паскаль введен тип PChar, определяемый, как указатель на символ: type PChar =^Char; 36
Функции применяемые к типу PChar
Function Str. Cat(Dest, Source: PChar): PChar; Копирует строку Source в конец строки Dest и возвращает указатель на начало Dest. Function Str. ECopy(Dest, Source: PChar): PChar; Эта функция работает в точности как Str. Cat, но возвращает указатель на конец сцепленных строк, т. е. на терминальный ноль. 38
Function Str. LCat(Dest, Source: PChar; Max. Len: Word): PChar; Копирует символы строки Source в конец строки Dest до тех пор, пока не будут скопированы все символы или когда длина сцепленной строки Dest не достигнет Max. Len. Возвращает указатель на сцепленную строку. Function Str. Lower(Str: PChar): PChar; Преобразует заглавные буквы строки Str к строчным и возвращает указатель на результат. 39
Строки с завершающим нулем хранятся в виде символьных массивов с нулевой базой (начинающихся с 0) и индексом целого типа: array[0. . X] of Char; где X – положительное ненулевое целое число. 40
Примеры описаний символьных массивов с нулевой базой Данные массивы могут использоваться для хранения строк завершающихся нулем. type TIdentifier = array[0. . 15] of Char; TFile. Name = array[0. . 79] of Char; TMemo. Text = array[0. . 1023] of Char; 41
Контрольные вопросы 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Дайте определение строкового типа даных. Дайте определение понятия строки. Как осуществляется индексацию строк? Как осуществляется вывод переменных типа String на экран? Для чего служит тип данных String? Какие функции применяются к типу Char? С какой целью введен тип PChar? Какие функции применяются к типу PСhar? Что такое строки с завершающим нулем? Какие существуют операции со строками? Какие существуют операции отношения? Перечислите стандартные процедуры и функции для работы со строками. 42
Список используемой литературы 1. 2. 3. 4. 5. 6. Фаронов, В. В. Turbo Pascal: учебное пособие / В. В. Фаронов. – М. : Изд. : ОМД Групп, 20010. – 368 с. Информатика: базовый курс: учебник для вузов / О. А. Акулов, Н. В. Медведев Немнюгин, С. А. Turbo Pascal: программирование на языке высокого уровня / С. А. Немнюгин. – 2 -е изд. – СПб. : Питер, 2006. – 544 с. Марченко, А. И. Программирование в среде Turbo Pascal 7. 0. / А. И. Марченко, Л. А. Марченко. – М. : Бином Универсал, К. : ЮНИОР, 2007. – 496 с. Культин, Н. Б. Turbo Pascal в задачах и примерах / Н. Б. Культин. – СПб. : БХВ-Петербург, 2009. – 160 с. Коффман, Э. М. Turbo Pascal / Э. М. Коффман. – 5 -е изд. – М. : Вильямс, 2005. – 896 с. 43
Работа со строками.pptx