Скачать презентацию Строковый тип данных в Паскале Строки в Паскале Скачать презентацию Строковый тип данных в Паскале Строки в Паскале

Строки в Pascal.pptx

  • Количество слайдов: 24

Строковый тип данных в Паскале Строки в Паскале – это данные типа string. Если Строковый тип данных в Паскале Строки в Паскале – это данные типа string. Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки. Примеры описания строк: type str_type = string[12]; const n = 50; var s 1: string; s 2, s 3: str_type; s 4: string[n]; s 5, s 6, s 7: string[7]; … Длина строки хранится в первом ее байте, индекс которого равен 0. Объявление типизированной константы для типа string осуществляется так: const s: string = 'Free. Pascal' … Существует понятие пустой строки, т. е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами (например, st : = '').

Операции над строками Строки можно присваивать другу. Если максимальная длина переменной слева меньше длины Операции над строками Строки можно присваивать другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются. … s 1 : = 'this is text'; s 2 : = s 1; … Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +. … s 1 : = 'John'; s 2 : = 'Black'; s 1 : = s 1 + ' ' + s 2; …

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

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

К отдельному символу строки можно обращаться как к элементу массива символов, например s 1[3]. К отдельному символу строки можно обращаться как к элементу массива символов, например s 1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например: … s 1[3] : = 'h'; writeln (s 2[3] + 'r'); … Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента (например, str[3]: ='j').

Элементы строки нумеруются с единицы, т. к. в каждой строковой переменной имеется элемент с Элементы строки нумеруются с единицы, т. к. в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например: … writeln(ord(st[0])) … Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str[0]: =#50 устанавливает текущую длину равной 50.

Процедуры и функции для работы со строками При работе со строками, как правило, возникает Процедуры и функции для работы со строками При работе со строками, как правило, возникает необходимость выполнять их копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. Они кратко описаны ниже. Функция Concat (s 1, s 2, . . . , sn) возвращает строку, являющуюся слиянием строк s 1, s 2, . . . , sn. Выражение Результат Concat(‘язык’, ‘Pascal’) ‘язык Pascal’

Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s. Значение S Выражение Результат ‘строка символов’ Copy(S, 3, 3) рок

Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len. Исходное значение S Оператор процедуры Конечное зн-е S ‘abcdefg’ Delete(s, 2, 3) ‘aefg’

Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start. Исходное значение S Оператор процедуры Конечное зн-е S ‘рис. 2’ Insert(‘№’, S, 6) ‘рис. № 2’

Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte. Значение S Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte. Значение S Выражение Результат ‘(а+в)*с’ Length(s) 7

Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s. Значение S Выражение Результат ‘предложение’ Pos(‘е’, S) 3 ‘предложение’ Pos(‘a’, S) 0

Str(X: арифметическое выражение; var st: string) Процедура преобразует численное выражение X в его строковое Str(X: арифметическое выражение; var st: string) Процедура преобразует численное выражение X в его строковое представление и помещает результат в st. Оператор процедуры Значение S Str (sin(1): 6: 4, S) ‘ 0. 0175’ Str (3456, S) ‘ 3456’

Val(st: string; x: числовая переменная; var code: integer) Процедура преобразует строковую запись числа, содержащуюся Val(st: string; x: числовая переменная; var code: integer) Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x - может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании. Тип X Оператор процедуры Значение X Значение kod Real Val(’ 12. 34’, x, kod) 12. 34 0 Integer Val(’ 12. 34’, x, kod) 12 3

В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками. Chr(n: byte): char Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n. Ord(ch: char): byte; В данном случае функция возвращает код символа ch. Up. Case(c: char): char; Если c - строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

Строки и массивы символов В языке программирования Паскаль переменная типа array of char может Строки и массивы символов В языке программирования Паскаль переменная типа array of char может рассматриваться как строка постоянной длины. Переменные такого типа могут свободно использоваться в любых строковых выражениях. При этом компилятор автоматически преобразует такой массив в строку, длина которой равна количеству элементов массива. Массивы типа char можно сравнивать друг с другом и обращаться с ними почти так же, как с переменными типа string. Можно в операторе присваивания в левой части указывать имя такого массива, а в правой – строковую константу с длиной, равной количеству элементов в массиве. Кроме того, в Pascal массивам типа array of char разрешено присваивать строковые константы, длина которых меньше количества элементов массива; в оставшиеся при этом незаполненные элементы заносится символ #0. Однако нельзя переменной типа array of char присвоить значение строковой переменной или строкового выражения (кроме выражений над строковыми константами с результирующей длиной, равной размерности массива). Массивы типа array of char могут использоваться в процедуре val и функциях concat, copy и length.

Пример: Подсчитать количество слов во введенной с клавиатуры строке. program p 4; var s: Пример: Подсчитать количество слов во введенной с клавиатуры строке. program p 4; var s: string[30]; kol, i, n: integer; begin writeln ('введите строку'); readln (s); kol: =0; {счетчик количества слов} n: = length(s); {определяем длину введенного текста} s: = concat(' ', s); {добавляем пробел к первому слову} for i: =1 to n do if (copy (s, i, 1)=' ') and (copy (s, i+1, 1)<>' ') then kol : = kol+1; {подсчет количества слов} writeln (s, ' количество слов= ', kol); readln; end.

Пример: Найти в строке самое длинное слово. program p 5; var max, s, s Пример: Найти в строке самое длинное слово. program p 5; var max, s, s 1: string; m, ds, dm: integer; begin writeln ('введите строку'); readln (s); s: =s+’’; while pos(‘ ‘, s)>0 do delete(s, pos(‘ ‘, s), 1); max: =’’; while length(s)>0 do begin m: =pos(‘ ‘, s); s 1: =copy(s, 1, m); delete(s, 1, m); if m> length(max) then max: =s 1; end; delete(max, length(max), 1); writeln (max, ' - самое длинное слов '); readln; end.