



O exercício foi baseados na seguinte página:
https://www.ifmg.edu.br/ceadop3/apostilas/algoritmos-e-programacao
Vamos ao exercício!
Fazer um projeto em Delphi ou Lazarus para ler o ano e o mês de nascimento (1 a 12) de uma pessoa, bem como o mês atual.
Ou seja ler o ano de nascimento e o ano atual.
Também ler o mês de nascimento e o mês atual.
Caso o mês atual seja igual ao mês de nascimento,
escrever uma mensagem dizendo que é mês referente a seu aniversário”,
caso contrário,
escrever uma mensagem informando que “não é o mês do seu aniversário”.
A etapa acima basicamente é um “IF”.
Calcular e mostrar a idade dessa pessoa levando-se em conta apenas o mês e o ano.
Esta etapa é o relatório dos dados processados.
Aproveitando o exercício, vamos criar uma função para ir se familiarizando
com o código.
Dentro da função, vamos aproveitar e utilizar um “CASE” também para ir treinando.
Agora sim vamos ao código fonte, lembrando que há comentários explicando
os comandos.
Esta é uma sugestão de resposta em Pascal, Delphi, Lazarus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | program project25; uses SysUtils; { Exemplo de função } function NomeMes(pNumeroMes : Integer) : string; begin case pNumeroMes of 1: Result := 'janeiro'; 2: Result := 'fevereiro'; 3: Result := 'março'; 4: Result := 'abril'; 5: Result := 'maio'; 6: Result := 'junho'; 7: Result := 'julho'; 8: Result := 'agosto'; 9: Result := 'setembro'; 10: Result := 'outubro'; 11: Result := 'novembro'; 12: Result := 'dezembro'; else Result := 'inválido'; end; end; { Inicio do programa principal } var anoNascimento: integer; mesNascimento: integer; mesAtual: integer; anoAtual: integer; idadeA: integer; mes: integer; begin Write(Utf8ToAnsi('Informe o seu ano de nascimento: ')); ReadLn(anoNascimento); Write(Utf8ToAnsi('Informe o ano atual: ')); ReadLn(anoAtual); { Validando anos } if anoAtual < anoNascimento then begin WriteLn(Utf8ToAnsi('O ano atual não pode ser inferiror ao ano de nascimento!')); Readln; Exit; end; { Deixando uma linha em branco } WriteLn(''); WriteLn(Utf8ToAnsi('Agora informe o Mês de nascimento seguindo a regra.')); WriteLn(Utf8ToAnsi('Infome 1 para o mês de janeiro, 2 para fevereiro e assim sucessivamente até o 12. ')); WriteLn(''); Write(Utf8ToAnsi('Mês de nascimento: ')); ReadLn(mesNascimento); Write(Utf8ToAnsi('Informe o mês atual: ')); ReadLn(mesAtual); { Validando mês de nascimento } if ((mesNascimento > 12) or (mesNascimento < 1)) then begin WriteLn(Utf8ToAnsi('Mês de nascimento inválido!')); Readln; Exit; end; { Validando mês atual } if ((mesAtual > 12) or (mesAtual < 1)) then begin WriteLn(Utf8ToAnsi('Mês de nascimento inválido!')); Readln; Exit; end; { Relatorio } WriteLn(''); WriteLn(Utf8ToAnsi('Mês de Aniversário: ' + NomeMes(mesNascimento) )); WriteLn(Utf8ToAnsi('Mês Atual: ' + NomeMes(mesAtual) )); if mesAtual = mesNascimento then begin Write( Utf8ToAnsi(NomeMes(mesAtual) + ' é o mês referente a seu aniversário.')); end else begin WriteLn( Utf8ToAnsi(NomeMes(mesAtual) + ' não é o mês do seu aniversário.')); end; idadeA := anoAtual - anoNascimento; mes := mesAtual - mesNascimento; if mes < 0 then begin { Atualiza o tempo em anos } idadeA := idadeA - 1; { PAra quem ainda não completou 1 ano } if idadeA < 0 then begin idadeA := 0; end; { Contando os meses 12 menos a diferença do mes atual e mes de nascimento Exemplo Mes Atual agosto, Mes aniver novembro 11 - 8 = 4 12 - 4 = 8 8 meses } { Deixa sempre positivo a quantidade } mes := abs(mes); { Calculando com a formula acima } mes := 12 - mes; end; WriteLn(Utf8ToAnsi('A sua idade é de: '), idadeA, ' anos e ', mes, ' meses. '); ReadLn; end. |
Olha pessoal, acredito que ficou excelente, gostei bastante do efeito.
Para o teste do fonte utilize o Lazarus 2.0.
Lembrando que se vocês quiserem em outras linguagens, por favor indiquem nos comentários.
Precisamos de vários pedidos para fazer, uma vez que o tempo é apertado.
Dúvidas ou sugestões? Também deixem seus comentários!
Um Abraço e até a próxima.
Você precisa fazer o login para publicar um comentário.
Mário Reis, a princípio o código está totalmente compatível.