Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Criar um programa que leia a idade de uma pessoa. e liberar acesso ao site


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
Compartilhar em outros sites

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