[ Foro de Pascal ]
holas, miren soy nuevo en la programación en pascal y estoy tratando de verificar si lo introducido(en mi caso letras minúsculas) no sea letras mayúsculas y si no esta correcto que vuelva a empezar el programa desde una determinada parte inicial. el ejercicio se basa en convertir una letra minuscula en ascii con su codigo, y despues que este muestre la misma letra en mayuscula y su codigo.
Uses CRT;
Var
a: char;
b:byte;
Begin
Writeln ('solo escribir letras!');
writeln ('Ingresa una letra minuscula para ver su codigo');
writeln ('en ASCII');
readln (a);
if (a >= 'a') and (a<= 'z') then begin
writeln ('Su codigo en ASCII es: ',ord(a));
end else
begin
writeln ('Usted a introducido un caracter, el cual no es una');
writeln('letra minuscula, por favor vuelva a introducir la letra');
writeln('en minuscula, por ejemplo "a"');
gotoxy(1,7);
end;
writeln ('');
b:= ord(a)-32 ;
writeln ('Presione Enter para saber su letra en mayuscula');
readkey();
write('su letra en mayuscula es: ');
for b := b to b do Write(Chr(b));
writeln(' ');
writeln ('Presiona Enter para saber el codigo de la letra en mayuscula');
readkey();
writeln ('el codigo de su letra en mayuscula es:',ord(a)-32);
writeln('');
writeln('presione Enter para cerrar el programa');
readkey();
END.
En este tipo de problemas en los que no se debe permitir avanzar hasta que el usuario introduzca el dato correcto es más útil usar la estructura Repeat-Until. Se repite la petición del dato hasta que este sea el correcto. Elaboré una porción de código que resultó muy bien, a continuación te la escribo:
program letraminuscula;
uses CRT;
var
letra: char;
BEGIN
Repeat
write('Introduzca una letra minuscula: ');
readln(letra);
If (letra<'a') and (letra>'z') then
Begin
writeln('Usted no introdujo un caracter valido. (PRESIONE ENTER)');
readln;
End;
Until (letra>='a') and (letra<='z');
Writeln('Usted introdujo una letra minuscula cuyo codigo es: ',ord(letra));
Readln;
END.
Espero te haya sido útil.
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.)