что такое символьные строки
Содержание урока
Что такое символьная строка?
Что такое символьная строка?
Если в середине XX века первые компьютеры использовались, главным образом, для выполнения сложных математических расчётов, сейчас их основная работа — обработка текстовой (символьной) информации.
Символьная строка — это последовательность символов, расположенных в памяти рядом (в соседних ячейках). Для работы с символами во многих языках программирования есть переменные специального типа: символы и символьные массивы. Казалось бы, массив — это и есть символьная строка, однако в школьном алгоритмическом языке и в Паскале для строк используются специальные типы данных.
Почему возникла потребность в создании такого специального типа данных? Дело в том, что массив — это группа символов, каждый из которых независим от других. Это значит, что (в школьном алгоритмическом языке и в Паскале) вводить символьный массив нужно посимвольно, в цикле. Более того, размер массива задается при объявлении, и не очень ясно, как использовать массивы для работы со строками переменной длины. Поэтому нужен новый тип данных, который позволяет:
• работать с целой символьной строкой как с единым объектом;
• использовать строки переменной длины.
Такой тип данных в школьном алгоритмическом языке называется литерным и обозначается лит (от слова «литерный» — буквенный), а в Паскале — строковым и обозначается string (в переводе с англ. — строка). Вот пример объявления строки:
лит s var s: string;
Для того чтобы записать в строку значение, используют оператор присваивания:
s:=’Baca пошёл гулять’ s:=’Baca пошёл гулять’;
или оператор ввода с клавиатуры:
Обратите внимание, что при вводе строк в Паскале нужно использовать оператор readin (англ, read, line — читать до конца строки) вместо read.
Существуют стандартные функции, которые определяют длину строки (количество символов в ней). В школьном алгоритмическом языке такая функция называется длин, а в Паскале — Length (в переводе с англ. — длина). В следующем примере в целочисленную переменную п записывается длина строки s:
Для того чтобы работать с отдельными символами строки, к ним нужно обращаться так же, как к элементам массива: в квадратных скобках записывают номер символа. Например, так можно изменить четвёртый символ строки на ‘а’:
Приведём полную программу, которая вводит строку с клавиа туры, заменяет в ней все буквы ‘а’ на буквы ‘б’ и выводит полу ченную строку на экран.
Следующая страница Операции со строками
Cкачать материалы урока
Что такое символьные строки
Символьные строки хранят такую информацию, как имена файлов, названия книг, имена служащих и другие символьные сочетания. Большинство программ на C++ широко используют символьные строки. Далее вы узнаете, что в C++ символьные строки хранятся в массиве типа char, который заканчивается символом NULL (или ASCII 0). В данном уроке символьные строки рассматриваются более подробно. Вы узнаете, как хранить и обрабатывать символьные строки, а также как использовать функции библиотеки этапа выполнения, которые манипулируют символьными строками. К концу этого урока вы освоите следующие основные концепции:
Программы на C++ хранят символьные строки как массив типа char. Большинство программ широко используют символьные строки. Экспериментируйте с каждой программой, представленной в этом уроке, чтобы освоиться с символьными строками. Вы обнаружите, что работа с символьными строками подобна работе с массивами, описанной в уроке 16.
ОБЪЯВЛЕНИЕ СИМВОЛЬНЫХ СТРОК В ПРОГРАММАХ
Программисты на C++ широко используют символьные строки для хранения имен пользователей, имен файлов и другой символьной информации.
Для объявления символьной строки внутри программы просто объявите массив типа char с количеством элементов, достаточным для хранения требуемых символов. Например, следующее объявление создает переменную символьной строки с именем filename, способную хранить 64 символа (не забывайте, что символ NULL является одним из этих 64 символов):
Как видно из рис. 17.1, это объявление создает массив с элементами, индексируемыми от filename[0] до filename[63].
Рис. 17.1. C++ трактует символьную строку как массив типа char.
Главное различие между символьными строками и другими типами массивов заключается в том, как C++ указывает последний элемент массива, Как вы уже знаете, программы на C++ представляют конец символьной строки с помощью символа NULL, который в C++ изображается как специальный символ ‘\0’. Когда вы присваиваете символы символьной строке, вы должны поместить символ NULL (‘\0’) после последнего символа в строке. Например, следующая программа ALPHABET. CPP присваивает буквы от А до Я переменной alphabet, используя цикл for. Затем программа добавляет символ NULL в эту переменную и выводит ее с помощью cout.
<
char alphabet [34]; // 33 буквы плюс NULL char letter;
int index;
for (letter = ‘A’, index = 0; letter letter++, index++) alphabet[index] = letter;
alphabet[index] = NULL;
cout » >
Как видите, программа присваивает строке символ NULL, чтобы указать последний символ строки:
Когда выходной поток cout выводит символьную строку, он по одному выводит символы строки, пока не встретит символ NULL. Короче говоря, cимвол NULL указывает программе последний символ в строке.
Обратите внимание на цикл for, который появляется в предыдущей программе. Как видите, цикл инициализирует и увеличивает две переменные (letter и index). Когда цикл for инициализирует или увеличивает несколько переменных, разделяйте операции запятой (запятая тоже является оператором C++):
C++ автоматически добавляет NULL к строковым константам
Все созданные вами программы использовали символьные строковые константы, заключенные внутри двойных кавычек, как показано ниже:
При создании символьной строковой константы компилятор C++ автоматически добавляет символ NULL, как показано на рис. 17.2.
Рис. 17.2. Компилятор C++ автоматически добавляет символ NULL к строковым константам.
Когда ваши программы выводят символьные строковые константы с помощью выходного потока cout, cout использует символ NULL (который компилятор добавляет к строке) для определения последнего символа вывода.
Символьная строка представляет собой массив символов, за которыми следует символ NULL (‘\0’). При объявлении символьной строки вы объявляете массив типа char. Когда программа позднее присваивает символы строке, она отвечает за добавление символа NULL, который представляет конец строки.
Если вы используете строковые константы, заключенные в двойные кавычки, компилятор C++ автоматически добавляет символ NULL. Большинство функций C++ используют символ NULL для определения последнего символа строки.
Следующая программа LOOPNULL.CPP слегка изменяет предыдущую программу, используя цикл for для вывода содержимого строки:
<
char alphabet[34]; //33 символа плюс NULL char letter;
int index;
for (letter = ‘A’, index = 0; letter index++) alphabet[index] = letter;
alphabet[index] = NULL;
for (index = 0; alphabet[index] 1= NULL; index++) cout cout >
Как видите, цикл for по одному исследует символы строки. Если символ не NULL (не последний символ строки), цикл выводит символ, увеличивает индекс, и процесс продолжается.
Как ‘А’ отличается от «А»
При рассмотрении программ на C++ вы можете встретить символы, заключенные в одинарные кавычки (например, ‘А’) и символы, заключенные в
Рис. 17.3. Как компилятор C++ хранит символьную константу ‘А’ и строковую константу «А».
двойные кавычки («А»). Символ внутри одинарных кавычек представляет собой символьную константу. Компилятор C++ выделяет только один байт памяти для хранения символьной константы. Однако символ в двойных кавычках представляет собой строковую константу — указанный символ и символ NULL (добавляемый компилятором). Таким образом, компилятор будет выделять два байта для символьной строки. Рисунок 17.3 иллюстрирует, как компилятор C++ хранит символьную константу ‘А’ и строковую константу «А».
ИНИЦИАЛИЗАЦИЯ СИМВОЛЬНОЙ СТРОКИ
Как вы уже знаете из урока 16, C++ позволяет вам инициализировать массивы при объявлении. Символьные строки C++ не являются исключением. Для инициализации символьной строки при объявлении укажите требуемую строку внутри двойных кавычек, как показано ниже:
char title[64] = «Учимся программировать на языке C++»;
Если количество символов, присваиваемое строке, меньше размера массива, большинство компиляторов C++ будут присваивать символы NULL остающимся элементам строкового массива. Как и в случае с массивами других типов, если вы не указываете размер массива, который инициализируете при объявлении, компилятор C++ распределит достаточно памяти для размещения указанных букв и символа NULL:
char title[] = «Учимся программировать на языке C++»;
Следующая программа INIT_STR.CPP инициализирует символьную строку при объявлении:
<
char title[64] = «Учимся программировать на языке C++»;
char lesson[64] = «Символьные строки»;
cout cout » >
Некоторые программы, представленные в оставшейся части книги, будут инициализировать символьные строки подобным способом. Найдите время для эксперимента с этой программой, изменяя символы, присваиваемые каждой строке.
ПЕРЕДАЧА СТРОК В ФУНКЦИИ
Передача символьной строки в функцию подобна передаче любого массива в качестве параметра. Внутри функции вам нужно просто указать тип массива (char) и левую и правую скобки массива. Вам не надо указывать размер строки. Например, следующая программа SHOW_STR.CPP использует функцию show_string для вывода символьной строки на экран:
void show_string(char string[])
<
show_string(«Привет, C++!»);
show_string(«Учусь программировать на C++»);
>
Как видите, функция show_string трактует параметр символьной строки как массив:
Так как символ NULL указывает конец строки, функция не требует параметр, который задает количество элементов в массиве. Вместо этого функция может определить последний элемент, просто найдя в массиве символ NULL.
Как вы уже знаете, функции C++ часто используют символ NULL для определения конца строки. Следующая программа STR_LEN.CPP создает функцию с именем string_length, которая ищет символ NULL в строке для определения количества символов, содержащихся в строке. Далее функция использует оператор return для возврата длины строки вызвавшей функции. Программа передает несколько различных символьных строк в функцию, отображая длину каждой из них на экране:
int string_length(char string[])
<
char title[] = «Учимся программировать на языке C++»;
char lesson[] = «Символьные строки»;
cout » » cout » » >
Как видите, функция запускается с первого символа строки (элемент 0) и затем исследует каждый элемент до тех пор, пока не встретит NULL. Рассматривая программы на C++, вы встретите целый ряд функций, которые подобным образом просматривают символьные строки в поисках символа NULL.
ПРЕИМУЩЕСТВА ТОГО, ЧТО NULL ПРЕДСТАВЛЯЕТ СОБОЙ ASCII 0
Как вы уже знаете, символ NULL представляет собой символ ASCII 0. В уроке 7 вы изучали, что C++ использует значение 0, чтобы представлять ложь. Таким образом, поскольку символ NULL равен 0, ваши программы могут упростить многие операции цикла. Например, многие функции просматривают символьные строки символ за символом в поиске NULL. Следующий цикл for иллюстрирует, как программа может искать NULL в строке:
Поскольку символ NULL равен 0, многие программы упрощают циклы, которые ищут NULL, как показано ниже:
В данном случае пока символ, содержащийся в string[index] не NULL (0 или ложь), цикл продолжается.
ИСПОЛЬЗОВАНИЕ СТРОКОВЫХ ФУНКЦИЙ БИБЛИОТЕКИ ЭТАПА ВЫПОЛНЕНИЯ
Из урока 11 вы узнали, что большинство компиляторов C++ обеспечивает обширный набор функций, называемых библиотекой этапа выполнения. Рассматривая библиотеку этапа выполнения, вы обнаружите, что она содержат много разных функций, манипулирующих строками. Например, функция strupr преобразует символьную строку в строку верхнего регистра. Подобно этому, функция strlen возвращает количество символов в строке. Большинство библиотек этапа выполнения обеспечивают даже функции, которые позволяют вам просматривать строки в поисках определенного символа. Например, следующая программа STRUPR.CPP иллюстрирует использование функций strupr и strlwr библиотеки этапа выполнения:
#include // Содержит прототипы
// функций strupr и strlwr
void main(void)
<
char title[] = «Учимся программировать на языке C++»;
char lesson[] = «Символьные строки»;
cout » cout » >
Использование библиотечных функций, манипулирующих строками может сохранить вам время, требуемое для программирования. Выберите время напечатать копию заголовочного файла STRING.H для определения функций манипулирования строками, которые поддерживаются библиотекой вашего компилятора.
Вы должны играть по правилам
Как вы уже знаете, большинство функций, которые манипулируют строками, полагаются на символ NULL как на конец строки. Если ваши программы присваивают строки символам, то следует убедиться, что они добавляют символ NULL в качестве последнего символа строки. Если ваши программы не используют NULL соответствующим образом, то функции, которые полагаются на символ NULL, будут сбиваться.
ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ
Большинство программ на C++ широко использует символьные строки. Из этого урока вы узнали, как работать со строками. Из урока 18 вы узнаете, как сохранять связанную информацию различных типов в переменных, представляющих структуры C++. Используя структуру, вы можете хранить всю информацию о служащем, например его фамилию, возраст, оклад и номер телефона, в одной переменной. Однако, прежде чем приступить к уроку 18, убедитесь, что освоили следующие основные концепции:
Символьные строки
Урок 19. Основы алгоритмизации и программирования на языке Python
В данный момент вы не можете посмотреть или раздать видеоурок ученикам
Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобрев в каталоге.
Получите невероятные возможности
Конспект урока «Символьные строки»
· Определение символьной строки.
· Методы обработки строк.
Символьной строкой называется набор нумерованных символов, которые хранятся в оперативной памяти компьютера под одним именем и располагаются последовательно друг за другом. Индексы символов строки, как и индексы элементов списка, начинаются с нуля. Многие из вас наверняка обратили внимание на то, что это определение строки похоже на определение списка. Во многих языках программирования действительно символьные строки можно определить, как списки символов, для обработки которых определён ряд дополнительных инструментов, но в языке Python это не совсем так. Главное отличие символьной строки от списка состоит в том, что символьная строка – это неизменяемая величина. На практике это означает, что к символу строки можно обратиться, как и к элементу списка, указав его индекс, однако в отличие от элемента списка, символ строки таким образом изменять нельзя.
Однако над строками можно выполнять целый ряд других действий. Рассмотрим операции, реализованные для обработки символьных строк. Первая из них – сцепление строк. Она записывается знаком арифметического сложения между сцепляемыми строками. Результат этой операции – новая строка, состоящая из исходных.
Выделить часть строки можно, как и часть списка. Подробнее рассмотрим, как это работает. Выделение части строки происходит по номерам её срезов. Номер среза строки соответствует индексу символа строки, перед которым он располагается, то есть перед нулевым символом следует нулевой срез, а перед i—тым символом, соответственно, i—тый.
Для того, чтобы выделить часть строки, после названия строки в квадратных скобках, через двоеточие, нужно указать 2 числа – номера срезов строки, между которыми располагается часть строки, которую нужно выделить. При этом если номер первого среза – 0, то его можно не указывать, точно так же можно не указывать номер второго среза, если он равен длине строки. Если в качестве номеров срезов указываются отрицательные числа, то к ним автоматически прибавляется длина строки.
Рассмотрим несколько полезных методов для обработки строк. Методы upper и lower изменяют регистр всех символов строки, соответственно, на верхний и нижний. Логический метод isdigit проверяет, только ли цифры содержит строка. Он возвращает значение «истина», если строка состоит только из цифр, в противном случае будет возвращено значение «ложь». Этот метод можно использовать для того, чтобы определить, является ли строка целым положительным числом. Для отрицательных чисел и для чисел с плавающей точкой этот метод будет возвращать значение «ложь».
Данные любого из основных типов можно преобразовать в символьную строку, для этого используется функция str. Для того, чтобы преобразовать строку в число, можно воспользоваться одной из уже известных нам функций преобразования – int или float. Однако если использовать эту функцию для строки, содержимое которой не является числом, то исполнение программы будет завершено ошибкой несоответствия типов. Поэтому прежде, чем преобразовывать строку в число или другой тип данных, нужно проверить её содержимое. Напишем функцию проверки того, является ли содержимое символьной строки числом.
Назовём нашу функцию IsNumber. Она будет принимать на вход строку, которую нужно проверить. В функцию строка передаётся в виде своей копии. Если строка пуста, то она не является числом, в этом случае функция вернёт значение «ложь». Если строка состоит из одного символа, то для того, чтобы строка являлась числом, этот символ должен быть цифрой. Если это условие выполняется, то функция должна вернуть значение «истина», в противном же случае – «ложь». Если в строке два символа, то для того, чтобы строка являлась числом, это должны быть, соответственно, знак минус и цифра, или же две цифры. Если это условие выполняется, то функция вернёт значение «истина», в противном случае – «ложь». Если в строке больше двух символов, то для того, чтобы она являлась числом, её первый символ должен быть либо знаком минус, либо цифрой, последний же символ должен быть цифрой. Если это условие не выполняется, то функция вернёт значение «ложь». Каждый же символ, начиная с позиции с индексом 1 и заканчивая предпоследним, должен быть либо цифрой, либо точкой. Для проверки этого условия запишем цикл с параметром i, изменяющимся в диапазоне от 1 до индекса предпоследнего символа строки s. В цикле запишем ветвление с условием, что символ строки s[i] не является цифрой или точкой. Если это условие выполняется, то функция вернёт значение «ложь». Далее проверим, не идёт ли в начале строки точка после минуса. Если это условие выполняется, функция вернёт значение «ложь». Осталось лишь проверить количество точек в строке s. Если их больше одной, то строка не является числом. Заведём для этого переменную-счётчик k и присвоим ей значение 0, так как запятые мы ещё не считали. Далее напишем цикл с символьным параметром c, в котором будем перебирать символы строки s. Если на каком-то шаге цикла параметр c стал равен точке, то мы увеличим k на 1. После цикла в переменной k будет храниться количество точек в строке s. И мы вернём истинность высказывания о том, что k Оцените видеоурок
Учитель информатики
Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.
Символьные строки
Информатика. Учебник для 9 класса (по учебнику К. Ю. Полякова, Е.А. Еремина, базовый уровень)
§19. Символьные строки.
Что такое символьная строка?
Ключевые слова:
В середине XX века первые компьютеры создавались, прежде всего, для выполнения сложных математических расчётов, а сейчас они чаще всего обрабатывают текстовую (символьную) информацию.
Символьная строка — это последовательность символов.
В алгоритмическом языке и в Паскале для работы со строками используются специальные типы данных, которые позволяют:
• работать с целой символьной строкой как с единым объектом;
• использовать строки переменной длины.
Такой тип данных в алгоритмическом языке называется литерным и обозначается лит, а в Паскале называется строковым и обозначается string.
Используя дополнительные источники, выясните, что означают слова «литера» и «литерный».
Используя дополнительные источники, выясните значение английского слова string.
Вот пример объявления строки:
лит s var s: string;
Новое значение записывается в строку с помощью оператора присваивания:
s:=’Вася пошёл гулять’ s:=’Вася пошёл гулять’;
или оператора ввода с клавиатуры:
Обратите внимание, что при вводе строк в Паскале нужно использовать оператор readln (англ. read line — читать до конца строки) вместо read.
Существуют стандартные функции, которые определяют длину строки (количество символов в ней). В алгоритмическом языке такая функция называется длин, а в Паскале — length (в переводе с англ. — длина). В этом примере в целочисленную переменную п записывается длина строки s:
Напишите полную программу, которая вводит строку с клавиатуры и выводит на экран её длину. Проверьте, как эта программа реагирует на строку с пробелами.
Сравнение строк
Строки можно сравнивать между собой так же, как числа. Например, можно проверить равенство двух строк:
если s=’sEzAm’ то
вывод ‘Слушаюсь и повинуюсь!’
иначе
вывод ‘Пароль неправильный’
Та же программа на языке Паскаль:
if s=’sEzAm’ then
write(‘Слушаюсь и повинуюсь!’)
else
write ( ‘Пароль неправильный’);
Запишите в тетради, как нужно объявить в этой программе переменную s.
Можно также определить, какая из двух строк больше, какая — меньше. Если строки состоят только из русских или только из латинских букв, то меньше будет та строка, которая идёт раньше в алфавитном порядке. Например, слово «паровоз» будет меньше, чем слово «пароход»: они отличаются в пятой букве и «в»
Но откуда компьютер «знает», что такое алфавитный порядок? Оказывается, при сравнении используются коды символов (вспомните материал учебника для 8 класса). В современных кодировках и русские, и английские буквы расположены в алфавитном порядке, т. е. код буквы «в» меньше, чем код буквы «х».
С помощью программы сравните пары слов и сделайте выводы:
пар — парк Пар — пар steam — Пар
Steam — steam 5Steam — Steam
He используя программу, сравните пары слов:
парта — парк ПАрта — Парк СПАМ — Spam
ПОЧТА — spam П04та — ПОЧта почТА — Post
Посимвольная обработка строк
Для того чтобы работать с отдельными символами строки, к ним обращаются так же, как к элементам массива: в квадратных скобках записывают номер нужного символа. Например, так можно изменить четвёртый символ строки на «а» (конечно, длина строки должна быть не менее четырёх символов):
Приведём программу, которая вводит строку с клавиатуры, заменяет в ней все буквы «э» на буквы «е» и выводит полученную строку на экран:
мы перебираем все символы строки с первого до последнего, и если очередной символ — буква «э», делаем замену:
Вспомните, чем отличается запись s=’e’ от записи s: = ‘e’.
Запишите решение этой задачи, используя цикл пока (while).
Операции со строками
Оператор + используется для «сложения» (объединения, сцепления) строк, эта операция иногда называется конкатенацией. Например:
Здесь и далее считаем, что в программе объявлены строковые (литерные) переменные s, s1 и s2.
Запишите в тетради, какое значение будет иметь переменная s после выполнения этого фрагмента программы. Проверьте ответ с помощью компьютера.
Для обработки строк обычно используют готовые вспомогательные алгоритмы из библиотеки языка программирования — процедуры и функции. Различие между ними состоит в том, что процедура изменяет переданную ей строку, а функция возвращает результат — новое значение, — не изменяя исходную строку.
Для того чтобы выделить часть строки (подстроку), в алгоритмическом языке применяется операция получения среза (англ. slicing). Например, s[3:7] означает «символы строки s с 3-го по 7-й включительно». В Паскале для этого используется функция сору, она принимает три параметра: имя строки, номер начального символа и количество символов. Оба следующих фрагмента копируют в строку s1 символы строки s с 3-го по 7-й (всего 5 символов):
Запишите в тетради, какое значение будет иметь переменная si после выполнения этого фрагмента программы. Проверьте ответ с помощью компьютера.
Для удаления части строки нужно вызвать стандартную процедуру, указав имя строки, номер начального символа и число удаляемых символов:
s:=’123456789′ s: = ‘123456789 ‘ ;
удалить (s, 3, 6) delete (s, 3, 6) ;
Запишите в тетради, какое значение будет иметь переменная s после выполнения этого фрагмента программы. Проверьте ответ с помощью компьютера.
При вставке символов процедуре передают вставляемый фрагмент, имя исходной строки и номер символа, с которого начинается вставка:
s:= 11234567891 s:= ‘123456789’;
вставить(1 ABC 1, s, 3) insert(1 ABC 1, s, 3);
Запишите в тетради, какое значение будет иметь переменная s после выполнения этого фрагмента программы. Проверьте ответ с помощью компьютера.
Используя только операции выделения подстроки и «сложения» строк, постройте из строки
как можно больше слов русского языка. Постарайтесь использовать наименьшее возможное число операций. Проверьте ваши решения с помощью программы.
Приведите несколько способов построения строки
Какой из них лучше? Как вы сравнивали эти способы?
Поиск в символьных строках
Существуют функции для поиска подстроки (и отдельного символа) в строке. Им нужно передать образец для поиска и строку, в которой надо искать:
Функция позиция возвращает целое число — номер символа, с которого начинается образец (буква «с») в строке s. Если образец встречается в строке несколько раз, функция находит первый из них. В языке Паскаль функция pos (от англ. position — позиция, расположение) работает точно так же.
Выясните экспериментально, какое значение возвращает функция позиция (pos), если образец для поиска не найден в строке.
Как можно найти вторую букву «с» с начала строки?
Вводится строка, в которой сначала записана фамилия человека, а затем через пробел — его имя, например ‘Семёнов Андрей’.
Запишите операторы, которые позволяют:
а) найти номер пробела, разделяющего фамилию и имя, и записать его в переменную р;
б) выделить из строки фамилию и записать её в переменную fam;
в) выделить из строки имя и записать его в переменную name;
г) приписать перед фамилией первую букву имени, точку и пробел.
Преобразования «строка ↔ число»
Иногда символьная строка, которая передаётся программе, содержит запись числа. С таким значением нельзя выполнять арифметические операции, потому что это символы, а не число.
Чему будут равны значения переменных п и s после выполнения этих команд? Как нужно объявить эти переменные в программе?
Для того чтобы с данными можно было выполнять вычисления, нужно преобразовать число, записанное в виде цепочки символов, в числовое значение. Для этого в алгоритмическом языке есть стандартные функции:
лит_в_цел — переводит строку в целое число;
лит_в_вещ — переводит строку в вещественное число.
Разберём такой пример:
лит s, цел N, лог ОК
N:= лит_в_цел(s, OK) | N = 123
если не ОК то
Строку не всегда можно преобразовать в число (например, если в ней содержатся буквы). Поэтому функция лит_в_цел использует второй параметр — логическую переменную ОК. Функция записывает в эту переменную логическое значение да («истина»), если операция закончилась успешно, и нет (ложь), если произошла ошибка.
Изучите приведённый фрагмент программы и выясните, как объявляется логическая переменная.
А вот пример использования функции лит_в_вещ:
лит s, вещ X, лог ОК
Х:=лит_в_вещ(s, ОК) | Х= 123.456
если не ОК то
Какие из этих строк можно преобразовать в целое число, какие — в вещественное?
а) ’45’;
б) ‘5р.’;
в) ‘14.5’;
г) ’14;5′;
д) ‘tu154’;
е) ’543.0’;
ж) ’(30)’.
Обратное преобразование (из числа в строку) возможно всегда:
s:=вещ_в_лит(X) I s=’123.456′
Изучите приведённый фрагмент программы и выясните, как называются функции для преобразования целого числа и вещественного числа в символьную строку.
В языке Паскаль строка преобразуется в число (целое или вещественное) с помощью процедуры val:
Третий параметр г служит для того, чтобы определить, была ли ошибка. Если после вызова процедуры val значение г равно нулю, то ошибки не было, иначе в переменную г записывается номер первого ошибочного символа.
Преобразование числа в строку выполняет процедура str:
По умолчанию вещественные числа записываются в научном формате (‘1.234560Е+002’ означает 1,23456•10 2 ). В последней строке примера используется форматный вывод: запись Х:10:3 означает «вывести число в 10 позициях с тремя знаками в дробной части».
Выводы
• Символьная строка — это последовательность символов.
• Длина строки — это количество символов в строке.
• Подстрока — это часть символьной строки.
• При обращении к отдельному символу строки его номер записывают в квадратных скобках.
• Знак « + » при работе со строками означает объединение строк.
• Для обработки символьных строк используют вспомогательные алгоритмы стандартной библиотеки — процедуры и функции. Процедура изменяет переданную ей строку, а функция возвращает результат — новое значение, не изменяя исходную строку.
• Функции поиска подстроки возвращают номер символа, с которого начинается подстрока, или 0 в случае неудачи.
• Строку можно преобразовать в число для того, чтобы затем выполнять с ним вычисления. Число можно преобразовать в символьную строку.
Нарисуйте в тетради интеллект-карту этого параграфа.
Вопросы и задания
1. Во многих языках программирования можно использовать массивы символов, т. е. массивы, каждый элемент которых — один символ. Чем отличается строка от массива символов?
2. Чем отличается действие оператора + для чисел и для символьных строк?
3. Можно ли обойтись без стандартной функции для вставки подстроки? Если да, то чем её можно заменить?
4. Как определить, что при поиске в строке образец не найден?
5. Как бы вы искали первый символ «с» с конца строки?
6. Выполните по указанию учителя задания в рабочей тетради.