Реферат Курсовая Конспект
Процедура Val - раздел Программирование, О.Ф. Власенко, И.В. Беляева СИМВОЛЫ И СТРОКИ В ЯЗЫКЕ TURBO PASCAL Procedure Val(S; Var V; Var Code: Integer); Преобраз...
|
Procedure Val(S; var V; var Code: Integer);
Преобразовывает символьное представление числа S в целое или вещественное число V. Code – код ошибки, возникающей при переводе строки в число. Если все хорошо, то Code=0.
Пример использования:
“Безопасный” ввод данных.
При вводе информации с клавиатуры или из файла при помощи процедур read/readln возможно возникновение ошибки времени выполнения программы (runtime error) в результате которой выполнение программы прерывается. Ошибка возникает в том случае, когда обнаруживается несоответствие между типом переменной, указанной в read/readln, и той строкой, которую этот read/readln получил для обработки.
Например, если x – переменная целого типа, в программе она читается таким образом: read(x), а пользователь вводит строку “два”, то программа завершит свою работу, выведя сообщение “Invalid numeric format” - “неподходящий формат числа”.
Это происходит потому, что контроль ошибок выполняет сам Turbo Pascal. В простых задачах это удобно, но в более или менее серьезных задачах такое решение недопустимо. В реальных задачах все ошибки пользователя должны обрабатываться самой программой. Средства, обеспечивающие контроль правильности ввода, называются “защитой от дурака”. Существует несколько способов реализации этой защиты. Один из них состоит в следующем: весь ввод пользователя ВСЕГДА читается в виде строк (или кодов отдельных клавиш). Затем введенные строки анализируются. Если введена правильная строка, то программа идет дальше, если нет, то выдается сообщение об ошибке, и данные требуют ввести повторно.
{Процедура "безопасного" ввода целого числа X
Msg - выводимая строка-подсказка
[ minVal .. maxVal ] - допустимый интервал значения X }
procedure ReadInt(msg: string; var x: integer;
minVal, maxVal: integer);
var
s: string; {Вводимая строка}
errCode: integer; {Код ошибки}
isError: boolean; {Флаг ошибки}
begin
repeat
write(msg); {Вывод приглашения}
readln(s); {Чтение строки, ВВЕДЕННОЙ ПОЛЬЗОВАТЕЛЕМ}
val(s,x,errCode); {Попытка получить целое число из строки}
{Ошибка есть, если код ошибки не 0, или если код ошибки 0,
но введенное число лежит вне допустимого интервала}
isError := (ErrCode<>0) or
(ErrCode=0) and ( (x<=minVal) or (x>=maxVal) );
{Если есть ошибка, то вывести сообщение об ошибке}
if isError then writeln('Error! Please repeat input!');
until not isError; {Если нет ошибки, то выходим из цикла,
а если ошибка есть, то снова вводим число}
end;
{Функция перевода целого числа X в строку
возвращается строка}
function IntToStr(x: integer): string;
var
s: string;
begin
Str(x, s);
IntToStr := s;
end;
{Демонстрация “безопасного” ввода
на примере ввода одномерного массива}
var
a: array[1..10] of integer; {Массив}
n: integer; {Количество элементов в массиве}
i: integer; {Счетчик}
begin
{Безопасный ввод N}
ReadInt('Введите n=', n, 1, 10);
{Безопасный ввод элементов массива}
for i:=1 to n do
ReadInt('Введите a[' + IntToStr(i) + ']=',a[i],10,99);
{Вывод элементов для контроля}
for i:=1 to n do
write(a[i],' ');
writeln;
end.
– Конец работы –
Эта тема принадлежит разделу:
Министерство образования Российской Федерации... Ульяновский государственный технический университет...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Процедура Val
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов