Ir ao conteúdo

Posts recomendados

Postado

Estou com dificuldade nesse programa, preciso criar um programa que leia a idade de uma pessoa. Caso ela tenha mais de 18 anos escreva acesso liberado. Caso contrário, informe que o acesso é somente para adultos. 

Mas está acontecendo esse erro, alguém sabe me dizer porque está errado?:

Program Pzim ;
    var idade: Real;
Begin
    writeln('Para acessar esse site, será necessario informar sua idade');
    write('Digite sua idade: ');
    read(idade);
        If(idade>18) then;
            Writeln('Acesso permetido');
        Else(idade<18) then;
            Writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
    
End.

Sem ee.png

  • Curtir 2
  • Membro VIP
Postado

Olá.

 

Segue orientações no próprio código abaixo:

program Pzim;
var
  idade:real;
begin
writeln('Para acessar esse site, será necessario informar sua idade');
write  ('Digite sua idade: ');
{read(idade);} //não use read(), use apenas readln()
readln(idade);
{if(idade>18) then;} //depois do than não tem ";" e seria ">="
if (idade>=18) then
  {writeln('Acesso permetido')} //antes do else não tem ";"
  writeln('Acesso permetido') 
{else(idade<18) then;} //a sintaxe do else está errada e não tem ";" depois do then
else
  if (idade<18) then
    writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

 

Obs.: se observar, as condições são contraditórias... em se não for o primeiro, será o segundo e vice-versa.

Logo pode (deveria ficar) assim:

if (idade>=18) then
  writeln('Acesso permetido') 
else
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

Perceba que o else é um comando relacionado ao if anterior, ou seja, está "amarrado a ele", por isso o comando anterior não pode ter ";". Se o if precisasse de mais de um comando, usaria begin/end, ai no caso o end não teria ";'. Ex.:

if (idade>=18) then
  begin
  writeln('Acesso permetido');
  writeln('SEJA BEM VINDO  ');
  write  ('Pressione qualquer tecla para continuar');
  ReadKey;
  end
else
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

Da mesma forma poderia ter ou não mais de uma instrução do else, ex.:

if (idade>=18) then
  begin
  writeln('Acesso permetido');
  writeln('SEJA BEM VINDO  ');
  write  ('Pressione qualquer tecla para continuar');
  ReadKey;
  end
else
  begin
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
  writeln('Você será redirecionado para pagina do conselho tutelar!!!')
  end;
end.

 

Obs.: só precisa begin/end quando tem mais de uma instrução "dentro" do comando. A mesma regra vale para o for, assim como o enquanto, ou cada uma das opções do case etc. 

 

Obs.: por curiosidade, o repeat/until não precisa. Assim como o else do case.

 

 

 

Dúvidas ou críticas?

No aguardo.

adicionado 8 minutos depois

Adendo:

Segue o código enxuto:

program Pzim;
var
  idade:real;
begin
writeln('Para acessar esse site, será necessario informar sua idade');
write  ('Digite sua idade: ');
readln(idade);
if (idade>=18) then
  writeln('Acesso permetido')
else
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

obs.: teria que ser ">=" a 18, pois se a pessoa faz aniversário no dia do acesso, ele já teria direito. Se usar ">" só vai entrar quando tiver 19 em diante.

obs. 2: a idade pode ser inteiro (integer), já que não dizemos, por exemplo, que tem "22.78" anos.  (lembrando que usam-se "." no lugar da "," no Pascal).

  • Curtir 2
Postado
2 horas atrás, Simon Viegas disse:

Olá.

 

Segue orientações no próprio código abaixo:


program Pzim;
var
  idade:real;
begin
writeln('Para acessar esse site, será necessario informar sua idade');
write  ('Digite sua idade: ');
{read(idade);} //não use read(), use apenas readln()
readln(idade);
{if(idade>18) then;} //depois do than não tem ";" e seria ">="
if (idade>=18) then
  {writeln('Acesso permetido')} //antes do else não tem ";"
  writeln('Acesso permetido') 
{else(idade<18) then;} //a sintaxe do else está errada e não tem ";" depois do then
else
  if (idade<18) then
    writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

 

Obs.: se observar, as condições são contraditórias... em se não for o primeiro, será o segundo e vice-versa.

Logo pode (deveria ficar) assim:


if (idade>=18) then
  writeln('Acesso permetido') 
else
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

Perceba que o else é um comando relacionado ao if anterior, ou seja, está "amarrado a ele", por isso o comando anterior não pode ter ";". Se o if precisasse de mais de um comando, usaria begin/end, ai no caso o end não teria ";'. Ex.:


if (idade>=18) then
  begin
  writeln('Acesso permetido');
  writeln('SEJA BEM VINDO  ');
  write  ('Pressione qualquer tecla para continuar');
  ReadKey;
  end
else
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

Da mesma forma poderia ter ou não mais de uma instrução do else, ex.:


if (idade>=18) then
  begin
  writeln('Acesso permetido');
  writeln('SEJA BEM VINDO  ');
  write  ('Pressione qualquer tecla para continuar');
  ReadKey;
  end
else
  begin
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
  writeln('Você será redirecionado para pagina do conselho tutelar!!!')
  end;
end.

 

Obs.: só precisa begin/end quando tem mais de uma instrução "dentro" do comando. A mesma regra vale para o for, assim como o enquanto, ou cada uma das opções do case etc. 

 

Obs.: por curiosidade, o repeat/until não precisa. Assim como o else do case.

 

 

 

Dúvidas ou críticas?

No aguardo.

adicionado 8 minutos depois

Adendo:

Segue o código enxuto:


program Pzim;
var
  idade:real;
begin
writeln('Para acessar esse site, será necessario informar sua idade');
write  ('Digite sua idade: ');
readln(idade);
if (idade>=18) then
  writeln('Acesso permetido')
else
  writeln('Acesso negado, esse site é somente para pessoas maiores de 18 anos');
end.

 

obs.: teria que ser ">=" a 18, pois se a pessoa faz aniversário no dia do acesso, ele já teria direito. Se usar ">" só vai entrar quando tiver 19 em diante.

obs. 2: a idade pode ser inteiro (integer), já que não dizemos, por exemplo, que tem "22.78" anos.  (lembrando que usam-se "." no lugar da "," no Pascal).

Valeuuuu cara, muito obrigado pela ajuda, TMJ

  • Curtir 2

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!