[МУЗЫКА] [МУЗЫКА] Рассмотрим типы данных, предназначенные для обработки единичных символов и символьных строк. Символьный тип данных, он называется char, от слова character («символ»), предназначен для хранения ровно одного символа. Дли символьного типа данных имеются следующие операции: во-первых, это ввод и вывод. Во-вторых, это присваивание. И, в-третьих, это сравнение. При сравнении будут сравниваться коды символов по кодировочной таблице. Например, я могу объявить константу символьного типа, это c1, и присвоить ей значение символа c малое. Кроме того, я могу объявить константу, указывая тип явным образом, например, константа c2 типа char будет содержать заглавную латинскую букву A. К ней я обращаюсь при помощи номера в кодировочной таблице, функция chr вычисляет символ по номеру в таблице. И, кроме того, я могу объявить переменную типа char, назовем ее C. Для этой переменной будут допустимы следующие присваивания: во-первых, можно присвоить любой символ, заключив его в апострофы. Во-вторых, при помощи функции chr можно указать код этого символа в кодировочной таблице, например, chr от 48 — это цифра 0. И, кроме того, можно использовать операцию «решетка», которая также будет вычислять символ по его коду. При сравнении мы можем получить результат типа булеан. Если у нас, например, рассматривается выражение a < b, это строчные латинские буквы, и та, и другая, то значением этого выражения будет «истина». Потому что латинские буквы у нас в кодировочной таблице расположены по алфавиту, по возрастанию. Отдельно строчные, так и прописные буквы. Если я рассмотрю сравнение A = a, то результатом будет «ложь» (false), потому что у этих символов разные коды. Теперь перейдем к рассмотрению строкового типа данных. Строковый тип данных у нас предназначен для обработки символьных строк. Символьная строка представляет собой массив, каждый элемент которого является буквой, то есть имеет тип char. Длина символьной строки, если мы ее явно не указали, то есть по умолчанию, равна 255 символам и не может быть больше этого значения. И, кроме того, длину символьной строки можно задать явно при объявлении. Например, переменная s типа string будет иметь 255 символов, а переменная s1, раз мы явно указали ее длину, будет максимально содержать 80 символов. Далее, в Pascal символьные строки должны заключаться в апострофы. Ни в коем случае ни в кавычки. Причем апостроф не является частью строки, а просто обозначает начало и конец этой строки. Например, если я переменной S присвою в апострофах 'мама', то в этой переменной будет содержаться четыре буквы — «м», «а», «м», «а», начиная с первого номера в этой строке. К любому символу строки можно обращаться точно так же, как к элементу одномерного массива. Например, если я на первое место в строке 'мама' поставлю букву «п» и на третью позицию также поставлю такую букву, то строка изменится и в ней будет содержаться слово 'папа'. Могу вывести ее на экран. Если рассмотреть более подробно, как устроена символьная строка, то в ней есть нулевой байт — символ с номером 0. Этот символ предназначен для того, чтобы в нем сохранять длину строки. То есть в этом байте содержится символ, код которого равен текущей длине. Например, для строки 'мама' там будет содержаться chr от 4. Если мы с вами изменяем строку, то при изменении длины необходимо соответствующим образом подкорректировать этот нулевой символ. Для этого в Pascal есть специальная процедура, которая называется SetLength («установить длину»). Например, пусть у меня в строке S находится слово 'папа', тогда в нулевом байте находится символ, код которого равен 4 — в моей строке 4 символа. Далее я хочу добавить букв в это слово. Я сначала должна изменить длину, например, я хочу добавить две буквы, тогда длина станет равна 6, то есть в нулевом байте появится символ, код которого равен 6. И затем я могу в пятую ячейку поставить букву «ш», а в шестую поставить букву «а». И вывести полученный результат. Рассмотрим стандартные процедуры и функции языка Pascal, предназначенные для обработки символьных строк. Ниже у нас приведена таблица процедур и таблица функций. И в этих таблицах будут приняты следующие типы параметров: все имена, которые начинаются с буквы s, будут типа string. Перечисленные ниже имена index, code, n, m, count и k будут целого типа; x, v и l будут вещественного типа; и переменные c и с1 будут иметь тип char. Начнем со стандартных процедур. Первая процедура — это процедура delete, у нее три параметра: s, index и count. Из строки s удаляется count символов и удаление начинается с позиции index. Например, если я в строке s присвою слово 'барбарис' и рассмотрю процедуру delete (s, 3, 5), то есть, начиная с третьего символа удаляется 5, то останется слово «бас». Если я снова рассмотрю исходное значение этой строки 'барбарис' и запишу delete (s, 1, 5), то в этом случае, начиная с первого символа, удаляются 5, то есть остается «рис». Далее стандартная процедура insert. По-английски insert — это «вставка». И в языке Pascal это тоже «вставка». Происходит вставка подстроки, которая находится на первом месте в subs в строку s, и index обозначает номер позиции, откуда начнется вставка. Например, если я рассмотрю subs? равное слову 'лица' и s присвою значение 'сто', то при выполнении процедуры insert с параметрами (subs s, 4), получу слово «столица». Далее известная уже нам процедура SetLength. SetLength устанавливает длину строки s, равной заданному числу. Например, если я в строку s запишу слово 'парапет' и затем выполню процедуру SetLength(s, 4) — от нашей строки останутся первые 4 символа. Далее группа процедур Str. Мы видим, что у нас здесь 4 таких процедуры — это два варианта процедур, когда мы не используем формат, и когда мы его используем. Здесь происходит преобразование числа x к строковому типу. Причем, если мы рассмотрим второй и четвертый случай, то можно использовать формат. Во втором случае это формат для целого числа, то есть мы указываем общее количество символов, которые нам нужно, а далее в четвертом случае мы указываем формат для вещественного числа, то есть показываем, сколько всего символов используется и сколько из них содержится после точки. Результат записывается в строку s. Например, если я рассмотрю Str (3, s), то в переменной s будет символ равный 3, в отличие от исходного числа. Если я рассмотрю Str для значения 3 и 14, то в строке будут располагаться символы 3.14. Если я укажу формат, например для числа −13, обращаю вообще внимание, что число −13 записано, как вещественное, то есть −13.0, и укажу формат 6:2, то в строке s я получу символы −13.00, в соответствии с используемым форматом. Далее у меня процедура Val, от слова value («величина»). Это преобразование наоборот строки к числовому представлению, результат будет записан в переменную v. Третья переменная code показывает, удалось произвести преобразование или нет. Если преобразование произвести удалось, то код будет равен 0, если преобразование невозможно, то он будет равен 1. Например, если я рассмотрю процедуру val для строки 1 2 3, результат помещу в переменную v и признак того, что преобразование свершилось, помещу в переменную code. V будет равно 123, а code будет равен 0. Если я рассмотрю строку, в которой находятся не только цифры и точки, но и буквы, то преобразование невозможно, в этом случае значение переменной v будет равно 0, а code будет равен 1. Далее перейдем к стандартным функциям для работы со строками. Напоминаю, что в отличие от процедур функция возвращает результат и этот результат помещается, как правило, в переменную, которая указана слева от символа присвойки. Первая стандартная процедура — это Length. Length, по-английски — это «длина». И эта функция возвращает длину строки, то есть количество символов в этой строке. Например, для слова 'привет' результат будет равен 6. Далее у нас есть стандартная функция copy. По-английски copy — это «копирование». И у нее есть следующие параметры: это s, это index и это count. Берется строка s, начиная с номера index из нее вырезается подстрока длиной count и результат помещается в переменную subs. Например, если я применю эту функцию к слову 'гимназия' и укажу параметры 5,4, то в переменной subs у меня останется «азия». Следующая стандартная функция — это pos, от слова position. Здесь определяется позиция начала, первого вхождения указанной подстроки subs в указанную строку s. Эта функция возвращает 0, если подстрока не будет найдена. Например, если я рассмотрю эту функцию для подстроки 'ма' и строки 'мама', то результатом будет 1 — первое вхождение этого слога в это слово. Если я укажу такую подстроку, которая не входит в данную строку, результат будет равен 0. Далее у нас есть стандартная функция Concat, от слова concatenation, то есть «cлияние». Здесь возвращается строка, которая является результатом слияния всех указанных в скобках подстрок и результат помещается в переменную, имя которой мы укажем слева. Замечу, что тот же самый результат можно получить, если записать просто сумму этих подстрок. Например, если я рассмотрю concat для слов 'при' и 'ставка', результатом будет «приставка» — это слово помещается в строку, имя которой указано слева. Далее UpCase. UpCase — это функция, которая преобразует один символ к верхнему регистру. Например, если у меня была буква «а», то результат выполнения функции UpCase будет также буква «А», но заглавная. Замечу, что эта и последующие функции работаюn в языке Pascal ABC, как с русскими, так и с латинскими буквами. Далее есть LowCase. LowCase — это преобразование к нижнему регистру для одного символа. Соответственно, если у меня была буква «B» заглавная исходными данными, то в результате я получу строчную букву «b». Далее UpperCase. UpperCase делает то же самое, что UpCase, но только не для одного символа, а для целой строки. То есть возвращается строка, преобразованная к верхнему регистру. Например, если исходными данными было слово «Москва», то применив функцию UpperCase, я получу то же самое «МОСКВА», все буквы в котором будут заглавными. И также LowerCase, наоборот, преобразует все символы в данной строке к нижнему регистру. Например, если у меня было слово «ПрИвет», в котором были, как строчные, так и прописные буквы, применив LowerCase, я получу то же самое слово, все буквы в котором будут строчными. [МУЗЫКА] [МУЗЫКА] [МУЗЫКА]