"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Строка «25» и число 25 записаны похоже, но для программы это данные разных типов. Чтобы выполнить вычисления над текстом, содержащим запись числа, его нужно преобразовать процедурой Val. Обратное преобразование выполняет Str: она помогает подготовить число для соединения с текстом или вывода. Важно правильно указать аргументы процедур, проверить код ошибки Val и сохранить результат Str в строковую переменную.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Преобразование строки в число — получение числового значения из строки, содержащей запись числа. Например, символы в строке «25» сами по себе не подходят для арифметики, а после преобразования программа получает число 25. Это нужно, когда запись числа поступает в виде текста, но её требуется использовать в вычислениях.
Процедура Val — средство Pascal для преобразования строки в числовую переменную; при преобразовании она может сообщить о позиции ошибки. Вызов Val передаёт процедуре исходную строку, переменную для результата и место, куда записать код ошибки. Так программа может не только получить число, но и проверить, удалось ли прочитать запись.
Процедура Str — средство Pascal для преобразования числового значения в его строковую запись. Число остаётся числом в исходной переменной, а его текстовое представление помещается в отдельную строковую переменную. Это нужно, например, чтобы соединить результат вычисления с поясняющим сообщением.
Код ошибки Val — целое число, указывающее, удалось ли преобразование и где в строке обнаружена ошибка. Нулевой код означает, что запись распознана; ненулевой показывает позицию, с которой возникла проблема. Переменная для кода позволяет программе решить, продолжать ли работу с результатом или сообщить о неверном вводе.
Текст и число хранятся по-разному, даже если выглядят одинаково. Строка «25» состоит из символов, поэтому оператор сложения не обязан воспринимать её как число: строковые операции могут, например, соединять текст. Преобразование нужно, чтобы программа явно поняла, что запись следует интерпретировать как числовое значение, и могла применить к нему арифметические действия.
Вызов Val имеет вид Val(S, X, Code). Здесь S — строковая переменная или строковое значение, X — числовая переменная, в которую записывается результат, а Code — целочисленная переменная для сообщения об ошибке. Порядок важен: сначала указывают источник, затем место для числового результата, после него — место для кода. Переменная X должна иметь подходящий числовой тип, иначе выбранный тип не сможет представить нужное значение.
Если строка содержит корректную запись, Val присваивает соответствующее значение переменной X, а в Code записывает 0. Если строка не соответствует ожидаемой записи числа, ненулевой код указывает позицию, в которой преобразование не удалось. Проверка нужна потому, что введённый пользователем текст может содержать лишний символ или вообще не быть числом; нельзя без проверки считать, что ожидаемый результат получен.
Процедура Str выполняет обратную задачу: Str(X, S) формирует строковое представление числа X и записывает его в S. Первым аргументом передают число, вторым — строковую переменную-приёмник. Такая строка пригодится, когда к числовому результату нужно добавить слова или включить его в текстовое сообщение; для самих вычислений строка уже не подходит.
После преобразования ориентируйтесь на тип переменной, а не на вид записи. Значение, полученное с помощью Val, используют в арифметике, а результат Str — в соединении строк и других текстовых операциях. Если требуется сначала вычислить, а потом показать результат с пояснением, действия выполняют именно в таком порядке: преобразуют текст в число, считают, затем превращают число в строку.
| Операция | Средство | Аргументы и результат | Что проверить |
|---|---|---|---|
| Строка → число | Val | Val(S, X, Code): S — строка, X — числовой результат | Код ошибки и подходящий числовой тип |
| Число → строка | Str | Str(X, S): X — число, S — строковый результат | Порядок аргументов и переменную-приёмник |
| Назначение аргументов | Порядок в вызове | Источник указывают перед переменной для результата | Соответствие каждого аргумента своей роли |
| Обработка некорректной записи | Code у Val | 0 — успешно, ненулевое значение — позиция ошибки | Не использовать результат без проверки Code |
Сначала определите, в каком направлении нужно преобразование: Val принимает строку и даёт число, а Str принимает число и даёт строку. Затем сверяйте аргументы со столбцом «Аргументы и результат». Для Val обязательно проверьте код ошибки, а для Str — куда записывается текст.
Нужно получить число для дальнейшей работы, поэтому выбираем целый тип: запись не содержит дробной части. Помимо переменной результата заранее потребуется целочисленная переменная для кода ошибки. Выводить число следует после проверки: так программа не выдаст неверный результат, если исходная запись изменится.
При успешном преобразовании N будет равна 125, поэтому на экран выводится 125. Значение S при этом остаётся строкой.
В записи есть дробная часть, поэтому целая переменная для результата не подходит. Выберем вещественный тип, чтобы сохранить значение 12.5, и заведём Code для проверки. Существенно не только вызвать Val, но и посмотреть, какой код он вернул.
При корректной записи для используемого Pascal значение X станет равным 12.5, а Code — 0. Если запись или её формат не распознаются, проверка Code обнаружит проблему до дальнейших вычислений.
Пусть программа получает строку S с числом, должна увеличить его на заданное значение D и вывести пояснение вместе с результатом. Поскольку ввод — текст, сначала потребуется числовая переменная; после вычисления понадобится строка для результата. Разделение этапов помогает не смешивать арифметику и составление сообщения.
Ответ: сначала строка превращается в число и увеличивается на D, затем результат превращается в строку для сообщения. Исходный текст S и числовой результат N имеют разные типы и выполняют разные роли.
Считать строку «25» числом без преобразования — ошибка: тип данных остаётся строковым. Так поступают, потому что смотрят на цифры, а не на тип переменной; арифметическая операция может быть недоступна или сработать не так, как задумано. Проверьте объявление переменной и вызовите Val, если нужны вычисления.
Перепутать порядок аргументов Val или Str — значит передать процедуре значения не в ожидаемые позиции. Ошибка возникает, когда аргументы запоминают как список, не связывая каждый с его назначением. Перед запуском подпишите роли: у Val сначала строка, затем числовая переменная и код ошибки; у Str сначала число, потом строка.
Не проверять код ошибки Val опасно: при неверном вводе программа может продолжить работу, хотя ожидаемое число не получено. Проверку пропускают, если тестовая строка заведомо правильная, но реальный ввод может отличаться. Сразу после Val проверьте, равен ли Code нулю, и используйте результат только при успешном преобразовании.
Ожидать, что Str изменит исходную числовую переменную, тоже неверно: результат записывается в строковую переменную. Это путают, принимая преобразование за замену типа той же переменной. Проверьте обе переменные после вызова: числовая хранит прежнее число, а строковая — его запись.
Чтобы пользоваться Val и Str, нужно знать, чем отличаются строковые и числовые переменные, как объявляют переменные и вызывают процедуры с аргументами. Эти знания помогают выбрать тип результата и не перепутать источник с переменной-приёмником. Преобразование особенно полезно, когда числа считываются как текст, например при пользовательском вводе, или когда числовые результаты нужно подготовить для вывода. Поэтому оно связывает ввод данных, вычисления и формирование сообщений.
Почему строка «25» не считается числом?
Кавычки указывают, что «25» — строка, то есть последовательность символов. Для арифметических вычислений её нужно преобразовать в числовое значение.
Как в Pascal преобразовать строку в число?
Используйте процедуру Val: Val(S, X, Code), где S — исходная строка, X — числовая переменная для результата, Code — переменная для кода ошибки. После вызова проверьте Code.
Зачем процедуре Val нужен код ошибки?
Код показывает, успешно ли прочитана запись числа. Значение 0 означает, что преобразование прошло успешно, а ненулевое значение указывает на позицию ошибки в строке.
Как преобразовать число в строку?
Вызовите процедуру Str, передав ей сначала числовое значение, затем строковую переменную для результата: Str(X, S). Полученную строку можно использовать в текстовых операциях.
Можно ли выполнять арифметические действия над строкой с записью числа?
Нет, строка не становится числом из-за того, что в ней записаны цифры. Сначала преобразуйте её процедурой Val, а затем выполняйте вычисления с числовой переменной.
9.3. Преобразование строк в числа и чисел в строки