лит s, цел N, лог ОК
s:='123'
N:= лит_в_цел(s, OK) | N = 123
если не ОК то
вывод 'Ошибка!'
все
Преобразования «строка ↔ число»
Практическая работа № 12 «Посимвольная обработка строк»
Практическая работа № 13 «Обработка строк. Функции»
Практическая работа № 14 «Преобразования "строка ↔ число"»
Иногда символьная строка, которая передаётся программе, содержит запись числа. С таким значением нельзя выполнять арифметические операции, потому что это символы, а не число.
Чему будут равны значения переменных п и s после выполнения этих команд? Как нужно объявить эти переменные в программе?
n:= 12 + 34;
s: = '12' + '34';
Для того чтобы с данными можно было выполнять вычисления, нужно преобразовать число, записанное в виде цепочки символов, в числовое значение. Для этого в алгоритмическом языке есть стандартные функции:
лит_в_цел — переводит строку в целое число;
лит_в_вещ — переводит строку в вещественное число.
Разберём такой пример:
лит s, цел N, лог ОК
s:='123'
N:= лит_в_цел(s, OK) | N = 123
если не ОК то
вывод 'Ошибка!'
все
Строку не всегда можно преобразовать в число (например, если в ней содержатся буквы). Поэтому функция лит_в_цел использует второй параметр — логическую переменную ОК. Функция записывает в эту переменную логическое значение да («истина»), если операция закончилась успешно, и нет (ложь), если произошла ошибка.
Изучите приведённый фрагмент программы и выясните, как объявляется логическая переменная.
А вот пример использования функции лит_в_вещ:
лит s, вещ X, лог ОК
s:='123.456';
Х:=лит_в_вещ(s, ОК) | Х= 123.456
если не ОК то
вывод 'Ошибка!'
все
Какие из этих строк можно преобразовать в целое число, какие — в вещественное?
Обратное преобразование (из числа в строку) возможно всегда:
N:=123
s:=цел_в_лит(N) | s='123'
X:=123.456
s:=вещ_в_лит(X) I s='123.456'
Изучите приведённый фрагмент программы и выясните, как называются функции для преобразования целого числа и вещественного числа в символьную строку.
В языке Паскаль строка преобразуется в число (целое или вещественное) с помощью процедуры val:
var r: integer;
• • •
s : = '123';
val(s, N, r); {N=123}
s:='123.456';
val (s, X, r); {X=123.456}
Третий параметр г служит для того, чтобы определить, была ли ошибка. Если после вызова процедуры val значение г равно нулю, то ошибки не было, иначе в переменную г записывается номер первого ошибочного символа.
Преобразование числа в строку выполняет процедура str:
n : = 123;
str(N, s); {s='123'}
х:=123.456;
str (X, s); {s='1.234560E+002'}
str(X:10:3, s); {s=' 123.456'}
По умолчанию вещественные числа записываются в научном формате ('1.234560Е+002' означает 1,23456•102). В последней строке примера используется форматный вывод: запись Х:10:3 означает «вывести число в 10 позициях с тремя знаками в дробной части».
Следующая страница Выводы