На Горох
Информатика, 9 класс

9.3. Преобразование строк в числа и чисел в строки

"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович

Объяснение темы В оглавлении: 9.3. Преобразование строк в числа и чисел в строки

Кратко о теме

Строка «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 — в соединении строк и других текстовых операциях. Если требуется сначала вычислить, а потом показать результат с пояснением, действия выполняют именно в таком порядке: преобразуют текст в число, считают, затем превращают число в строку.

Преобразование строк и чисел в Pascal

ОперацияСредствоАргументы и результатЧто проверить
Строка → числоValVal(S, X, Code): S — строка, X — числовой результатКод ошибки и подходящий числовой тип
Число → строкаStrStr(X, S): X — число, S — строковый результатПорядок аргументов и переменную-приёмник
Назначение аргументовПорядок в вызовеИсточник указывают перед переменной для результатаСоответствие каждого аргумента своей роли
Обработка некорректной записиCode у Val0 — успешно, ненулевое значение — позиция ошибкиНе использовать результат без проверки Code

Сначала определите, в каком направлении нужно преобразование: Val принимает строку и даёт число, а Str принимает число и даёт строку. Затем сверяйте аргументы со столбцом «Аргументы и результат». Для Val обязательно проверьте код ошибки, а для Str — куда записывается текст.

Разбор задач

Строку «125» преобразовать в целочисленную переменную и вывести значение

Нужно получить число для дальнейшей работы, поэтому выбираем целый тип: запись не содержит дробной части. Помимо переменной результата заранее потребуется целочисленная переменная для кода ошибки. Выводить число следует после проверки: так программа не выдаст неверный результат, если исходная запись изменится.

  1. Объявим строку S со значением «125», целую переменную N и целую переменную Code.
  2. Вызовем Val(S, N, Code): строка идёт первой, N получает число, Code — состояние преобразования.
  3. Проверим Code. Если он равен 0, выведем N; иначе сообщим, что строку нельзя преобразовать.

При успешном преобразовании N будет равна 125, поэтому на экран выводится 125. Значение S при этом остаётся строкой.

Строку «12.5» преобразовать в вещественную переменную и проверить результат

В записи есть дробная часть, поэтому целая переменная для результата не подходит. Выберем вещественный тип, чтобы сохранить значение 12.5, и заведём Code для проверки. Существенно не только вызвать Val, но и посмотреть, какой код он вернул.

  1. Зададим строку S со значением «12.5», вещественную переменную X и целочисленную Code.
  2. Выполним Val(S, X, Code), передав аргументы именно в этом порядке.
  3. Если Code = 0, преобразование прошло успешно и можно использовать X; если Code не равен 0, обработаем ошибку, а не будем считать X достоверным результатом.

При корректной записи для используемого Pascal значение X станет равным 12.5, а Code — 0. Если запись или её формат не распознаются, проверка Code обнаружит проблему до дальнейших вычислений.

Считать строку, увеличить число и подготовить сообщение

Пусть программа получает строку S с числом, должна увеличить его на заданное значение D и вывести пояснение вместе с результатом. Поскольку ввод — текст, сначала потребуется числовая переменная; после вычисления понадобится строка для результата. Разделение этапов помогает не смешивать арифметику и составление сообщения.

  1. Объявим S и Text как строковые переменные, N и D как числовые, а Code как целочисленную.
  2. Вызовем Val(S, N, Code) и проверим Code. При ненулевом коде сообщим о неверном вводе и не продолжим вычисление.
  3. При Code = 0 вычислим N := N + D. Теперь N хранит число, к которому уже можно применять арифметику.
  4. Вызовем Str(N, Text), затем соединим Text с поясняющей строкой и выведем сообщение.

Ответ: сначала строка превращается в число и увеличивается на D, затем результат превращается в строку для сообщения. Исходный текст S и числовой результат N имеют разные типы и выполняют разные роли.

Типичные ошибки

Считать строку «25» числом без преобразования — ошибка: тип данных остаётся строковым. Так поступают, потому что смотрят на цифры, а не на тип переменной; арифметическая операция может быть недоступна или сработать не так, как задумано. Проверьте объявление переменной и вызовите Val, если нужны вычисления.

Перепутать порядок аргументов Val или Str — значит передать процедуре значения не в ожидаемые позиции. Ошибка возникает, когда аргументы запоминают как список, не связывая каждый с его назначением. Перед запуском подпишите роли: у Val сначала строка, затем числовая переменная и код ошибки; у Str сначала число, потом строка.

Не проверять код ошибки Val опасно: при неверном вводе программа может продолжить работу, хотя ожидаемое число не получено. Проверку пропускают, если тестовая строка заведомо правильная, но реальный ввод может отличаться. Сразу после Val проверьте, равен ли Code нулю, и используйте результат только при успешном преобразовании.

Ожидать, что Str изменит исходную числовую переменную, тоже неверно: результат записывается в строковую переменную. Это путают, принимая преобразование за замену типа той же переменной. Проверьте обе переменные после вызова: числовая хранит прежнее число, а строковая — его запись.

Связь с другими темами

Чтобы пользоваться Val и Str, нужно знать, чем отличаются строковые и числовые переменные, как объявляют переменные и вызывают процедуры с аргументами. Эти знания помогают выбрать тип результата и не перепутать источник с переменной-приёмником. Преобразование особенно полезно, когда числа считываются как текст, например при пользовательском вводе, или когда числовые результаты нужно подготовить для вывода. Поэтому оно связывает ввод данных, вычисления и формирование сообщений.

Что запомнить

  • Строковая запись числа и само число — данные разных типов.
  • Для преобразования строки в число в Pascal используют Val.
  • Вызов Val предусматривает переменную для кода ошибки.
  • Для преобразования числа в строку используют Str.
  • Результат Str нужно сохранить в строковой переменной.
  • Проверяйте тип данных перед вычислениями и строковыми операциями.

Частые вопросы по теме

Почему строка «25» не считается числом?

Кавычки указывают, что «25» — строка, то есть последовательность символов. Для арифметических вычислений её нужно преобразовать в числовое значение.

Как в Pascal преобразовать строку в число?

Используйте процедуру Val: Val(S, X, Code), где S — исходная строка, X — числовая переменная для результата, Code — переменная для кода ошибки. После вызова проверьте Code.

Зачем процедуре Val нужен код ошибки?

Код показывает, успешно ли прочитана запись числа. Значение 0 означает, что преобразование прошло успешно, а ненулевое значение указывает на позицию ошибки в строке.

Как преобразовать число в строку?

Вызовите процедуру Str, передав ей сначала числовое значение, затем строковую переменную для результата: Str(X, S). Полученную строку можно использовать в текстовых операциях.

Можно ли выполнять арифметические действия над строкой с записью числа?

Нет, строка не становится числом из-за того, что в ней записаны цифры. Сначала преобразуйте её процедурой Val, а затем выполняйте вычисления с числовой переменной.

Спросить по теме параграфа

9.3. Преобразование строк в числа и чисел в строки

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович