Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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 

  • Membro VIP
Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!