Язык программирования Pascal Работа со строкамиА. Жидков
Строковые переменные Тип данных (string) определяет строки с максимальной длиной 255 символов. Длину строки можно регулировать в секции описаний.Например,var MaxLine : string; //длина строки до 255 City : string[30]; // длина строки до 30 символовДля переменных типа string выделяют память, на 1 байт больше максимальной длины строки.Начальный байт с номером 0 отводится для хранения количества записанных в строку символов.Встроенная функция Length возвращает фактическое количество литер в записанных в строку.
Выражения, в которых операндами служат строки, называются строковыми.Над строками определены два вида операций:1. Операция сцепления (конкатенации) обозначают как (+) .Например: SumStr := ‘Язык'+‘ программирования'+‘ Pascal'2. Операции отношения (=, , >, =,
Для изменения строковой переменной используется оператор присваивания (:=) или оператор ввода данных. Например:Name:=‘Михаил’;Write (‘Укажите Вашу фамилию’);Read (fam);Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, то все лишние символы справа отбрасываются.
Обращение к отдельным символам строки К символам строки можно обратиться по номеру (индексу) символа в строке. Например, чтобы обратиться к третьему символу строки SumStr надо записать SumStr[3].Запись SumStr[0] возвращает значение текущей длины строки.
Delete (Str,Poz,N) - удаление N символов строки Str, начиная с позиции Poz.Insert (What,Where,Poz) - вставка строки What в строку Where, начиная с позиции Poz.Copy (Str,Poz,Nstr) - строка длиной Nstr, начиная с позиции Poz, из строки Str.Concat (Str1,Str2,...,StrN) - сцепление строк в указанном порядке.Poz (What,Where) - обнаруживает появление подстроки What в строке Where.UpCase (Ch) - преобразует строчную букву в прописную.Str (Number,Stroka) - преобразует число в строку.Val (Stroka,Number,Code) - преобразует строку в число и выдает код правильности преобразования.
Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной (а не величину предельного размера строки, установленную при декларации):Program DemoFunctionLength;Var Word : string;Begin write ('Введите слово :'); readln(Word); writeln('Это слово состоит из ',Length (Word),' букв');End.Примечание. При подсчете фактической длины строки учитываются все входящие в нее символы, в том числе и пробелы.
Функция Upcase позволяет преобразовывать символ любой литеры из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Поэтому для обработки строки символов с помощью этой функции приходится организовывать цикл.Program DemoFunctionUpcase;Var Word : string; i : integer;Begin Word := 'фирма Microsoft'; for i := 6 to Length (Word) do Word[i] := UpCase (Word[i]); writeln(Word); End.В результате работы программы на терминал выдается строка, содержащая большие английские буквы и маленькие русские.
Функция Copy позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая эту функцию нужно указать следующие параметры:имя строки, из которой должен извлекаться копируемый фрагмент,позицию в строке, начиная с которой будет копироваться фрагмент,число копируемых символов.Program DemoFunctionCopy;Var Word : string; Word1 : string[20];Begin Word := ‘Кадетский корпус'; writeln(Word); Word1 := Copy (Word,11,6); writeln(Word1); End.Примечание. Если начальная или конечная позиции копируемого текста находятся вне пределов исходной строки символов, то сообщение об ошибке не выдается. Результатом выполнения операции в первом случае будет строка нулевой длины, во втором - фрагмент от начальной позиции копирования до конца исходной строки.
Функция Pos осуществляет поиск фрагмента в строке.Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции, с которой он начинается.Если фрагмент не найден, то функция возвращает нуль. Program DemoFunctionPos;Var Word : string; SearchWord : string[20]; Position : integer;Begin Word := ‘Кадетский корпус'; writeln(Word); SearchWord:=‘детский’; Position := Pos(SearchWord, Word); if Position 0 then begin write ('Фрагмент содержится в строке , начиная с позиции ',Position ); end else writeln('Фрагмент не содержится в строке
Функция Concat (Str1,Str2,...,StrN) выполняет конкатенацию (или сцепление) строк Str1,Str2,...,StrN в том порядке, в каком они указаны в списке параметров. Сумма символов сцепленных строк не должна превышать 255.Program DemoFunctionConcat;Var Word : string; Word1, Word2 : string[20];Begin Word1 := ‘кадетского'; Word2 := ‘корпуса'; Word := Concat('Кадеты ',Word1,Word2); writeln(Word);end.
Посчитайте количество цифр в веденной строке символов. Проверьте правописание “жи” и “ши” в тексте. Выведите на экран количество сделанных ошибок и исправленную строку. Применяйте подпрограммы.Выясните, сколько раз встречается каждая буква алфавита в предложенном тексте. В заданном тексте найти и распечатать слово максимальной длины.Заданы разделенные пробелами фамилия, имя и отчество учащегося и три оценки за экзамены. Напечатайте его фамилию и инициалы и средний балл. Применяйте подпрограммы.
Задание на самоподготовкуПосчитайте количество цифр в введенной строке символов.
Задание на самоподготовкуПроверьте правописание “жи” и “ши” в тексте. Выведите на экран количество сделанных ошибок и исправленную строку. Применяйте подпрограммы.
Задание на самоподготовкуВыясните, сколько раз встречается каждая буква алфавита в предложенном тексте.
Задание на самоподготовкуВ заданном тексте найти и распечатать слово максимальной длины.
Задание на самоподготовкуЗаданы разделенные пробелами фамилия, имя и отчество учащегося и три оценки за экзамены. Напечатайте его фамилию и инициалы и средний балл.
Процедура Insert Процедура Insert вставляет в исходную строку, начиная с указанной позиции, другую строку. Процедура Insert (Word1,Word2,5) вставляет строку Word1 в строку Word2, начиная с 5-ой позиции.Program DemoFunctionConcat;VarWord1, Word2 : string;BeginWord1 := ‘ кадетский ';Word2 := ‘Санкт-Петербургский корпус';Insert(Word1,Word2,21);writeln(Word2);end.
Процедура Delete Процедура Delete удаляет в строке фрагмент определенной длины, начиная с указанной позиции. Так, оператор Delete(Word1,2,3) удаляет из указанной строки фрагмент, длиной в три символа, начиная со второго.
Общий вид Str(Chislo,Stroka)Процедура Str преобразует числовое значение переменной Chislo в строковую переменную Stroka. После первого параметра может указываться формат, аналогичный формату вывода. Program DemoProcedureStr;Var Word : string; Chislo : integer;Begin Chislo := 1560; Str(Chislo:8, Word); writeln(Word); End.
Общий вид Val(Stroka,Chislo,Code)Процедура Val преобразует строку Stroka в величину целочисленного или вещественного типа и помещает результат в Chislo. Строка Stroka не должна содержать пробелов в начале и в конце. Code целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно нулю, если же ошибка обнаружена, Code будет содержать номер позиции первого ошибочного символа, а значение Chislo будет не определено.Program DemoProcedureVal;Var Word : string; Chislo, Code : integer;Begin writeln('Введите строку цифр '); readln(Word); Val(Word, Chislo, Code); if Code 0 then writeln('Ошибка! В позиции ',Code,' не цифра!',); End.
Составьте алгоритм замены в какой-нибудь литерной величине всех букв "а" на буквы "б" и наоборот (при такой замене, например, из слова "баба" должно получиться слово "абаб"). Выведите полученную строку на экран.Составьте алгоритм, вычеркивающий из данного текста любую букву. Выведите полученную строку на экран. Если такого символа нет, то выведите соответствующее сообщение. Составьте алгоритм, который каждую встреченную в слове букву "б" заменял бы сочетанием букв "ку". Если такого символа нет, то выведите соответствующее сообщение. Выведите полученную строку на экран. Составьте алгоритм, выясняющий, является ли данное слово "перевертышем" (так называются слова, читающиеся одинаково слева направо и справа налево, например: ПОТОП, КАЗАК).