Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Questão de pascal comando if e case.


Posts recomendados

Olá tudo bem,poderia me ajudar a escrever um código em pascal aqui? Sou iniciante e estou com uma dúvida na seguinte questão:

Faça um algoritmo que receba um caractere qualquer do teclado e mostre as seguintes mensagens: *se* for uma letra do alfabeto, a mensagem mostrada deverá ser : 'esse caractere e uma letra do alfabeto', *caso* seja um número ela deverá ser: 'esse caractere e um número', e *caso* seja outro caractere,deverá aparecer essa outra essa outra mensagem: 'esse caractere e um outro caractere qualquer'. Esse algoritmo também deve mostrar o caractere digitado dessa maneira: O caractere digitado foi: CARACTERE'.
EU estou tendo dúvida no no *se*,mas o *case* eu sei,como eu consigo colocar a decisão se no tipo char? Pode passar o código pra mim ou dar uma explicação? Eu fiz assim,está certo?:

program caracteres;
var caracter: char;

begin
WriteLn('Digite um caractere qualqier no teclado');
ReadLn(caracter);
if caracter = 'a..z' then
begin
WriteLn('esse caractere e uma letra do alfabeto');
end
else if caracter <> 'a..z' then
begin
WriteLn('nao e uma letra do alfabeto');
end;
readln;
end.

Não está dando certo pois toda vez que dou Run e digito qualquer letra o compilador somente entende como 'não e uma letra do alfabeto' me ajudem.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@T_F   você pode pegar o valor acii do caractere e verificar se é letra ou número :

se o valor for de 65 até 90 é letra maiúscula e

se o valor for de 97 até 122 é letra minúscula e 

if ((a>64) and (a<91) or ((a>96) and (a<123))) then
begin
    WriteLn('esse caractere e uma letra do alfabeto');
end

se o valor for de 48 até 57 é número e

se for outro valor então é um caractere qualquer ,  e para pegar esse código ascii do caractere pode ser assim :

caractere : char;
a : integer;
a := ord(caractere);

e mude essa variável  com nome caracter para caractere para não dar erro 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

17 horas atrás, T_F disse:

if caracter = 'a..z' then

Nesse caso está comparando como um conjunto de caracteres "a...z", seria uma string. Assim como é "Maria".

 

Além dos conceitos apresentados por @devair1010, seria possível também usar o operador in. Ex.:

if (caracter in ['a'..'z']) or ((caracter in ['A'..'Z'])) then

ou

if (UpCase(caracter) in ['A'..'Z']) then

ou

if (caracter in ['a'..'z','A'..'Z']) then

 

Para os caracteres que representam o números, idem.

 

Obs. 1: o ".." serve para definir uma faixa e a "," serve para enumerar as opções, ou seja, se fosse, por exemplo, vogais, poderia enumerar uma a uma (pois elas não estão em sequência na tabela ASCII).

 

Obs. 2: Não é possível utilizar a sequência de minúsculos e maiúsculos de uma vez só pois elas também não estão em sequência, exista outros caracteres entre um e o outro. Se estivessem, seria algo como:

if (caracter in ['A'..'z']) then

Mas lembrando: não serve para o seu caso.

 

 

No aguardo.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...