[ Foro de Pascal ]
Saludos.
Busco modificar el programa.
Problema:
Si ingreso un numero con dos decimales, el programa se cierra. (Porque actualmente mi programa, carece de lógica)
Si ingreso una letra o varias letras, el programa se cierra.
¿Qué modificación le harías al programa?
program Temperature;
var
F,C,R,K:real;
begin
(*Presentación del programa*)
writeln('Convertidor de temperatura');
writeln('Programa creado por wind.');
(*Captura de datos*)
write('Escribe la temperatura en grados celcius:');
readln(C);
F:=1.8*C+32;
R:=F+459.67;
K:=C+273.15;
writeln('La temperatura en grados Fahrenheit es:',F:2:2);
writeln('La temperatura en grados Rankine es:',R:2:2);
writeln('La temperatura en grados Kelvin es:',K:2:2);
readln;
end.
Los números con dos decimales deberían funcionar.
Las letras, obviamente, no van a funcionar, si tu tipo de datos es "real". Si lo que pretendes es que el programa sea robusto, deberías pedir un "string", convertirlo a número usando "val", y volver a pedir (con un "repeat..until") en caso de que no se puede hallar ese valor numérico.
He estado investigando aquellos comandos que has mencionado.
También sirve el try, except, para el manejo de errores.
Me gustaría ver algún día aquella información en el curso de pascal. (Try, Except)
Gracias por tus respuesta!
Saludos.
No necesitas usar try - except para validar tu programa, con la recomendación del profesor de leer datos en variables tipo cadena y luego convertirlos a números es suficiente. El procedimiento val(Cadena,Numero,Codigo_error) te permite realizar la conversión de una Cadena Numérica a un Número, la cadena deberá estar almacenada en la variable Cadena y el número se generará en la variable Numero, si todo se realizó sin ningún problema Codigo_error tomará el valor cero. Un ejemplo de su uso te lo dejo a continuación, el número estará almacenado en la variable Cr, o sea que, con Cr podrás realizar las operaciones de conversión a grados Farenheit, y no con la variabe C:
var
C: string[20];
Cr: boolean;
error: integer;
valido: boolean;
Begin
valido:= false;
repeat
write('Temperatura en Celcius: ');
readln(C);
val(C,Cr,error);
if error<>0 then
writeln('Usted ingreso un dato incorrecto.')
else
valido:= true;
until valido;
readln;
End.
Saludos.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)