Скачать презентацию О знаках и строках замолвите слово Скачать презентацию О знаках и строках замолвите слово

О знаках и строках.ppt

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

 «О знаках и строках замолвите слово…» , или Несколько занимательных задач на работу «О знаках и строках замолвите слово…» , или Несколько занимательных задач на работу со строками и множествами Усенков Д. Ю. , Богомолова О. Б.

Типы текстовых данных Паскаль Бейсик 1. Символьный тип char – представление одного любого символа. Типы текстовых данных Паскаль Бейсик 1. Символьный тип char – представление одного любого символа. Единый строковый тип данных без разделения на символы и строки. Отдельный символ понимается как строка, состоящая из одного символа. Символьная константа записывается в апострофах, например: 'a', '0', '+'. Определение типа: var <переменная> : char; 2. Строковый тип string – представление текстовой строки как последовательности символов. Строковая константа также записывается в апострофах, например: 'Строка'. Определение типа: var <переменная> : string; или var <переменная> : string[<длина>]; Как правило, для обозначения строкового типа данных используется записываемый после имени переменной, функции или процедуры символ $.

Типы текстовых данных Определение типа: var <переменная> : string[<длина>]; <длина> – целое число, указывающее Типы текстовых данных Определение типа: var <переменная> : string[<длина>]; <длина> – целое число, указывающее максимально допустимую длину строки, записываемой в переменную. Фактически этот параметр указывает, что для хранения переменной необходимо отвести указанное количество ячеек памяти для символов строки (плюс резервируется одна ячейка для хранения реальной длины строки, записанной в переменную). По умолчанию длина равна 255 символов. Пример var stroka : string[10]; 0 Ячейка, содержащая длину строки Десять ячеек для хранения символов

Типы текстовых данных Определение типа: var <переменная> : string[<длина>]; Записанная в переменную строка по Типы текстовых данных Определение типа: var <переменная> : string[<длина>]; Записанная в переменную строка по длине может быть меньше, чем зарезервированная длина строковой переменной (и даже может быть пустой – не содержать символов вообще!). Тогда часть зарезервированных ячеек памяти не используется. Пример stroka : = 'Привет!'; 7 П Реальная длина строки – семь символов р и в е т ! Неиспользуемые ячейки переменной

Типы текстовых данных Определение типа: var <переменная> : string[<длина>]; При попытке записать в строковую Типы текстовых данных Определение типа: var <переменная> : string[<длина>]; При попытке записать в строковую переменную значение (строку), длина которой превышает объявленную длину строковой переменной, в этой переменной уместится только заявленное количество символов с начала строки, а всё остальное будет отброшено. Пример stroka : = 'Приветствие!'; 10 П Реальная длина строки – семь символов р и в е т с т в Эти символы не уместились и были отброшены и е !

Массивы текстовых данных Массив символов: var <имя массива> : array[<кол-во элементов>] of char; Массив Массивы текстовых данных Массив символов: var <имя массива> : array[<кол-во элементов>] of char; Массив строк: var <имя массива> : array[<кол-во элементов>] of string; В языке Паскаль существует дуализм представления строк: к любой строке, определенной как тип string, можно обращаться и как к единой переменной типа string, и как к одноименному одномерному массиву символов, указывая после имени строковой переменной в квадратных скобках номер (индекс) желаемого символа в строке! (При этом символы в строках всегда нумеруются с единицы. ) Пример var str : string[10]; str Переменная – строка str[1]. . str[10] Массив символов

Стандартные функции и процедуры для работы с текстом Chr(x) Функция Chr. Unicode(x) Функция Ord(с) Стандартные функции и процедуры для работы с текстом Chr(x) Функция Chr. Unicode(x) Функция Ord(с) Функция Ord. Unicode(с) Функция Upper. Case(c) Upper. Case(s) Функция Lower. Case(c) Lower. Case(s) Функция Pos(subs, s) Функция Pos. Ex(subs, s, from) Функция Length(s) Функция Set. Length(s, n); Процедура Insert(source, s, index); Процедура Delete(s, index, count); Процедура Copy(s, index, count) Функция Concat(s 1, s 2, . . . ) Функция Возвращает символ (типа char) по заданному 8 -битному char) Возвращает символ (типа коду (типа byte) в кодировке Windows по заданному 16 -битному коду Возвращает 8 -битный код символа (типа word) кодировке Unicode (типа byte) ввкодировке Windows Возвращает 16 -битный код символа по заданному символу (типа char) (типа word) в кодировке Unicode по заданному символу (типа char) Возвращает символ (типа char) либо строку (типа string), преобразованные в прописной Возвращает номер позиции Возвращает символ (типа char) либо (заглавный, верхний) регистрs (число типа (типа string), строку integer) в строке Возвращает записи имени (два string), номер позиции (типа варианта которой в этой с преобразованные в строчный (число типа integer) в строке s функции реализованы subs строке содержится подстрока (нижний) регистр (типа string), с совместимости для обеспечениякоторой в этой (типа string), но поиск вхождения Изменяет заданную строку s строке содержится подстрока subs с другими версиями ведется в целое число Возвращаетстроку Паскаля) (типаподстроки. Фактически это поиск (типа string), удаляя из нее часть string). не(типа integer), указывающее с начала, а начиная с заданной символов (количество задается вхождения подстроки Возвращает строкудля заданной Изменяет count –(типа string), Устанавливает целое unteger). позиции fromзаданную строку s (число типа число реальную длину текстовой строки параметром. Если такое вхождение в строку. «склеенную» (операциянее (типа строки вставляя в текстовойstring), (типа вхождения То есть возможные с позиции (типа integer)записанной, например, типа string), начиная string) новое не найдено, то возвращается Возвращает подстроку (типа более string) конкатенации) из двух илипозиции заданную подстрокупеременную значение длины подстроки строковую число в некоторую до указанной indexcount (целое число типа (также целое source нулевое длиной значение (которое можно заданных строк (целое число s s 1 начиная типа s 2, . . . будут типа string), integer)что типа (такжепроигнорированы. Если integer). Следует помнить, использовать как «флаг» ) integer), начинающуюся с позиции (типа string). длинане найдено, то с реальнаяindex самое можно позиции То же такое вхождение(целое число index (также целое строки типа число s сделать и возвращаетсяпомнить, при уменьшается помощи нулевое типа integer). Важно операции такжеэтом при integer) что конкатенации строк, реальная длина строки s значение (которое можно записываемой знаком + при этом увеличивается использовать как «флаг» )

Стандартные функции и процедуры для работы с текстом String. Of. Char(c, count) Функция Reverse. Стандартные функции и процедуры для работы с текстом String. Of. Char(c, count) Функция Reverse. String(s) Функция Compare. Str(s 1, s 2) Функция Left. Str(s, count) Функция Right. Str(s, count) Функция Trim(s) Функция Trim. Left(s) Функция Trim. Right(s) Функция Str. To. Int(s) Str. To. Int 64(s) Str. To. Float(s) Функция Try. Str. To. Int(s, value) Try. Str. To. Int 64(s, value) Try. Str. To. Float(s, value) Функция Val(s, value, err); Процедура Str(x, s); Процедура Int. To. Str(x) Float. To. Str(x) Функция Возвращает строку (типастроки Сравнивает заданные string), в составленнуюи возвращает которой порядок следования (типа string) из заданного количества (count (типа integer): символов изменен – целое число Данные функции на обратный. числовое значение также служат типа integer) заданныхстроки , Например, если символов Возвращает функция для преобразования s 1 < отрицательное, подстроку s 2 (типа char). Например, s 1 > s 2, Reverse. String("привет") (типа string), длиной count string) содержащей положительное, если функция Возвращает подстроку String. Of. Char('*', 5) числа (целое число типа integer), символьную запись цели, иливернет для той"тевирп" s 2. равноестроку же вернет Служит нулю, если s 1 = (типа строкус"*****"исходной string) длиной начинающуюся начала count (цифры, точку, строки string) Напомним, что знак функции, Возвращает строку (типаможно – что(целое число типа integer), и описанные выше минуса) строки впытается (слева, «напрямую» , собственно число позиции 1) сравнивать и с из нее с исходной строки строку преобразовать string) Возвращает строку типа integer, из концаудаленными(типа (справа) int 64, в условном операторе real, записываяsingleвида) пробелами (из (типаудаленными(типа string) ее исходного содержащую с string), илииз нее но Возвращает иначе. Если такое строку имена в Данные функции переменных в(изработаютконце (пробелы внутри начале истроковыхпреобразуют символьную вида) числа, ее исходногозапись пробелами с удаленными из нее преобразование выполнено строкустроки(пробелы в конце (типа не. Результат такого в само и требуемые знаки число. вида) пробелами в начале string), содержащую (из ее исходногоудаляются) успешно, то число нечисло(цифры, логических операций символьную(пробелыудаляются) в преобразования записывается и внутри строки –числа типа, в конце запись в начале качестве значения параметра value точку, знак минуса) в собственно который строки не удаляются) и внутри имеет параметр value (он должен иметь число типа integer, int 64 integer, и (byte, word, longword, или real соответствующий тип), а uint 64, возвращают это число. shortint, smallint, int 64, функция возвращает логическое Распознавание числапри успехе single или real) – выполняется (типа boolean) значение True. настолько, насколько это значения записывается в качестве возможно Иначе (если в value, аsзначение Выполняют аналогичнуюсодержится операцию, параметра строке Преобразуетдля заданного числа x заданное числопросто напараметра err функция x (типа запись возвращая числа)(типа integer) integer или real) в строкуreal) (типа возвращает логическое (типа integer, int 64 нулю. приравнивается или значение False в string), (типа string), символьную строку содержащую Если такое преобразование запись этого числа (цифры, точку, символьную удалось, то числа выполнить не запись этогозначение знак минуса) параметра err будет больше нуля

Стандартные функции и процедуры для работы с текстом Функции возвращают значение, которое нужно куда-то Стандартные функции и процедуры для работы с текстом Функции возвращают значение, которое нужно куда-то записать или использовать. Поэтому функцию надо записывать в операторе присваивания (например: d : = Length(s); ) или в операторе вывода на экран ( writeln(Length(s)); ); Процедуры, в отличие от функций, изменяют значение некоторых заданных параметров (аргументов), поэтому в составе оператора присваивания или вывода на экран их записывать нельзя. Процедура записывается отдельным оператором, например: Delete(stroka, 5, 1); – правильная запись (из строки stroka удаляется один символ, стоящий в 5 -й позиции). stroka 1 : = Delete(stroka, 5, 1); – неправильная запись.

Задача 1 Удаление знака препинания 1 a (k – 1) = (4 – 1) Задача 1 Удаление знака препинания 1 a (k – 1) = (4 – 1) = 3 символа 2 b Номера позиций символов 3 4 5 6 7 8 9 10 c ! d e f g h i k=4 (dl – k) = (10 – 4) = 6 символов dl = 10

Задача 4 «Размножение» знака препинания Стало: Было: 1 2 3 4 5 6 7 Задача 4 «Размножение» знака препинания Стало: Было: 1 2 3 4 5 6 7 8 a b ! c d e a b ! ! ! c d e +3 i=3 i=6

Задача 5 Количество символов между двумя точками 1 2 a b t 1 = Задача 5 Количество символов между двумя точками 1 2 a b t 1 = 4 Номера позиций символов 3 4 5 6 7 8 9 10 c . d e f . h i (t 2 – t 1 – 1) = (8 – 4 – 1) = 3 символа t 2 = 8

Задача 5 «Вырезание» части строки между двумя точками Было: 1 2 3 4 5 Задача 5 «Вырезание» части строки между двумя точками Было: 1 2 3 4 5 6 7 8 9 10 a b c . d e f . h i Номер позиции уменьшается на t 1 Стало после переписывания символов: t 1 = 4 1 3 4 5 6 7 8 9 10 d Количество символов равно (t 2 – t 1 – 1) = (8 – 4 – 1) = 3 символа 2 e f . d e f . h i t 2– t 1 = 4 dl = 10 Стало после затирания пробелами: 1 2 3 d e f 4 5 6 7 8 9 10

Задача 6 Использование функции «реверса» строки Строка после зеркального отражения: 1 2 3 4 Задача 6 Использование функции «реверса» строки Строка после зеркального отражения: 1 2 3 4 5 6 7 8 9 10 i h . f e d . c b f t 2 = Pos('. ', st) = 3 1 2 3 a b c Исходная строка: 4 5 6 7 8 9 10 . d e f . h i t 2 = dl – t 2 – 1 3

Задача 9 Зеркальное отражение строки Длина строки четна: Длина строки нечетна: dl div 2 Задача 9 Зеркальное отражение строки Длина строки четна: Длина строки нечетна: dl div 2 = 6 div 2 = 3 dl div 2 = 7 div 2 =3 1 2 3 4 5 6 1 a b c d e f a 2 3 4 5 6 7 b c d e f g Меняем местами: · элемент 1 элемент dl · элемент 2 элемент dl – 1 · элемент 3 элемент dl – 2

Задача 13 Поиск последней цифры в записи числа в строке Исходная строка: 1 2 Задача 13 Поиск последней цифры в записи числа в строке Исходная строка: 1 2 3 4 5 6 7 8 9 10 a b c 1 2 3 4 d e f fl = false fl = true k = (i – 1) = 8 – 1 = 7 break

Задача 14 Поиск записи числа в строке Исходная строка: 1 2 3 4 5 Задача 14 Поиск записи числа в строке Исходная строка: 1 2 3 4 5 6 7 8 9 10 a b c 1 2 3 4 d e f fl = false fl = true k 1 = i = 4 k 2 = (i – 1) = 8 – 1 = 7 break