Составим программу, которая запрашивает две строки по четыре символа, состоящие из цифр. В случае ввода символов, отличных от цифр, должно отображаться соответствующее сообщение, а программа должна завершаться. Программа объединяет введенные строки, затем преобразует исходные строки в числа, подсчитывает их сумму, преобразует результат в строку и печатает строки, полученные в результате объединения и преобразования суммы чисел в строку.
Работу программы можно представить в виде трех самостоятельных фрагментов: ввод первой и второй строк и преобразование их в число, вывод на экран результата объединения строк и суммирования чисел.
Вывод на экран результатов организуем с помощью стандартных процедур вывода Writeln, а для ввода строк и преобразования их в числа создадим процедуру Inp_Str. Для передачи данных между процедурой и основной программой введем формальные параметры-переменные S типа string и X типа integer.
Для преобразования введенной строки в число применим стандартную функцию Val, а для анализа операции преобразования строки в число введем локальную переменную Code целого типа. После преобразования строки в число проверим значение переменной Code, если оно не равно 0, то значит в строке не все символы являются цифрами. Значение Code укажет позицию первого символа в строке, не являющегося цифрой. В этом случае напечатаем на экране сообщение об ошибке и укажем позицию неверно введенного символа в строке, после чего прервем работу программы, используя стандартную процедуру Halt. Текст процедуры Inp_Str будет выглядеть следующим образом:
procedure Inp_Str(var S: string: var X:integer);
{Процедура ввода строки цифр и преобразования строки в число}
var
Cod: integer; {Результат преобразования строки в число}
begin
Write(‘Введите строку цифр’);
Readln(S);
VAR(S, X, Cod); {Преобразование строки S в целое число X}
if Cod <> 0 then {Если не все символы в строке являются цифрами}
begin
Writeln(‘Ошибка! В позиции ‘.Cod.’ введенной строки не цифра’);
Halt(l); {Прерывание программы}
end;
end;
С учетом вышесказанного полный текст программы решения задачи будет записан следующим образом:
program Demo_Val_Str;
var SI. S2 : string:
XI, X2 : integer;
procedure Inp_Str(var S; string; var X:integer);
{Процедура ввода строки цифр и преобразования строки в число}
var
Cod: integer; {Результат преобразования строки в число}
begin
Write(‘Введите строку цифр’);
Readln(S):
VaR(S, X, Cod); {Преобразование строки S в целое число X}
if Cod <> 0 then {Если не все символы в строке являются цифрами}
begin
Writeln(‘Ошибка! В позиции ‘.Cod,’ введенной строки не цифра’);
Halt(l); {Прерывание программы}
end;
end;
begin {Начало основной программы}
Inp_Str(Sl,Xl); {Вызов процедуры ввода строки с фактическими параметрами-переменными S1.X1}
Inp_Str(S2,X2); {Вызов процедуры ввода строки с фактическими параметрами-переменными S2,X2}
Writeln(‘Результат склеивания строк -> ‘,Concat(Sl.S2));
Writelп(‘Сумма введенных чисел= ‘.Х1+Х2);
end.
Запустите интегрированную среду программирования. Введите текст программы Demo_Val_Str и запишите файл на диск под соответствующим именем, а затем откомпилируйте его. После успешного завершения компиляции проверьте работу программы с отладкой в пошаговом режиме, отслеживая значения переменных SI, S2, XI, Х2.