Ir ao conteúdo
  • Cadastre-se

VisualG Data de nascimento com cálculo!!!


Visitante

Posts recomendados

Como meio de contribuição para o mundo da programação espero que muitos possa encontrar este conteúdo aqui, vai ai a data de nascimento em ordem porém com um breve calculo antes e colocando tudo em ordem...

algoritmo "Colocando a data de nascimento em ordem com calculo"
var
   DataNascimento, Dia, Mes, Ano: inteiro
inicio
   escreval("Vamos fazer um programa para calcular a data de seu aniversário")
   escreval("Digite aqui a sua Data de Nascimento sem a necessidade de qualquer caracter: ")
   leia (DataNascimento)
   Dia <- (DataNascimento div 1000000)
   Mes <- (DataNascimento mod 1000000) div 10000)
   Ano <- (DataNascimento mod 1000000) mod 10000)
   escreval ("Sua data de nascimento é: ", Dia, "/", Mes, "/", Ano)
fimAlgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • 11 meses depois...
  • Membro VIP

Sobre:

38 minutos atrás, Luiz Claudio Costa Dantas disse:

[...] já que eles são Operadores, que armazena o quociente e o resto de uma operação. 

@Luiz Claudio Costa Dantas, o DIV e o MOD não armazenam algo... eles são apenas operadores aritméticos, ou seja, apenas indica "que tipo de conta deverá ser feita"... é análogo à + (adição), - (subtração), * (multiplicação), / (divisão) e ^ (potencialização) etc.

 

Assim como 9 + 3 resulta em 11; 4*12 resulta em 48; e o 11 MOD 3 resulta em 2. São "contas"!

 

Ex.:

algoritmo "FCdH"
var
  x:inteiro
inicio
x <- 23+4
escreval(x) //vai exibir na tela 27, pois 23+4=27. E esse resultado foi atribuído a variável x
fimAlgoritmo

O computador faz a conta e apenas retorna o resulta resultado... Aí, como usou o comando de atribuição "<-", o x passará a ser igual a esse resultado. O DIV e MOD são a mesma coisa, fazendo "as contas" das formas que eles  se proproem...

 

 

 

Sobre:

38 minutos atrás, Luiz Claudio Costa Dantas disse:

Sim,  eu to querendo tirar minha duvida sobre o modo de digitar no visualg, as DATAS [...]

Por enquanto esqueça o DIV e o MOD, beleza? Apenas nos indique o que você precisa.. como quer receber as datas? é para fazer o que com elas? foque e explique apenas o problema! O que quer fazer!   (o como vem depois).

 

Veja, o DIV e o MOD podem ser apenas um dos mecanismos para achar uma solução para o seu problema, mas sem expor qual o problema, fica difícil explicar o que você precisa.

 

No aguardo.

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

 Entendi que no caso de 11 mod 3 o resto seria 2 . O que seria impresso se mandasse escrever (mod)  mais ta um pouco vago.

  No caso do,    dia recebe o leia ( datanascimento)   entrando com a data 

 Dia <- (DataNascimento div 1000000)   porque indica o primeiro numero   de uma sequencia , e porque 1Milhão como esse numero funciona já que a data de nacimento seria 30/04/2000 são 8 digitos.

Mes <- (DataNascimento mod 1000000) div 10000)  indica os dois numeros do mes  e os parenteses não estão fechado.

 Ano <- (DataNascimento mod 1000000) mod 10000) e aqui estão os dois representados por mod

 

OBS: Eu to fazendo um curso pelo YOUTUBE.  mais isso eu não vi, e estou exercitando , vou precisar usar datas nos exercicios . Pesquisando encontrei esse exercicio,  me desculpe se estiver te atrapalhando em alguma coisa.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Sobre:

1 hora atrás, Luiz Claudio Costa Dantas disse:

Entendi que no caso de 11 mod 3 o resto seria 2 . O que seria impresso se mandasse escrever (mod)  mais ta um pouco vago.

 

Não dá para escrever o mod, pois ele é apenas um "operador aritmético"... da mesma forma que não dá para escrever "*". 

 

Veja, quando se usa um operador como esses, significa que "está solicitando o resultado da resposta da tal operação". Se usar * vai retornar a multiplicação do primeiro pelo segundo número; se usar div, vai retornar a parte inteira da divisão do primeiro pelo segundo; se usar -, vai retornar a subtração do primeiro pelo segundo... etc... 

Por exemplo:

algoritmo "FCdH"
var
   a, b      :inteiro
   resultado :inteiro
inicio
escreva ("Escreva o valor de 'a':")
leia(a)
escreva ("Escreva o valor de 'b':")
leia(b)
resultado <- a+b
//EXPLICANDO A LINHA ACIMA: o operador "+" diz que é para o computador
//"calcular a soma do valor que contém em "a" com o valor que contém em "b",
//ou seja, vai fazer "a+b".
//se "a" valer, por exemplo, 7 e "b" valer "6", essa estrutura "a+b" vai
//resultar em "13".
//após, como tem um "<-" (comando de atribuição), o computor vai atribuir o
//valor de "a+b" (que deu 13 no exemplo) na variável "resultado", logo, a
//variável "resultado" terá o valro 13.
escreval("a + b deu",resultado) //vai aparecer "a + b deu 13"
fimAlgoritmo

Entende? o operador funciona como a capacidade de "pegar os valores que estão no lado do operador, efetuar o calculo e retornar a resposta"...

 

Veja outro exemplo:

algoritmo "FCdH"
inicio
escreval("11 * 7 deu",8*3) //vai aparecer "11 * 7 deu 24"
fimAlgoritmo

Percebe que em vez de uma variável, usei números... como tem um * ali, o computador vai pegar o 8 e multiplicar por 3... logo, onde tem "8*3" vai ser o mesmo que ter "24". Ai você se pergunta? 11*7 = 24? lógico que não, fiz de propósito... apenas para mostrar que o computador não relacionada uma coisa com a outra... ele vê que tem um texto e imprimir, após ver que tem uma operação aritmética calcula e imprime.. a relação de uma coisa com a outra é nossa (do programador e usuário do programa)!!!, ou seja, o computador só faz o que mandou ele fazer... a "coerência" do resultado vem da implementação do que você quer que ele faça...  

 

 

Com o mod e div é mesma coisa.. são operadores... pegam os valores adjacentes e fazem algo... Ex.:

algoritmo "FCdH"
inicio
escreval("O resto da divisão de 29 por 8 é",29 mod 8)
//vai aparecer "O resto da divisão de 29 por 8 é 5"
//(pois 29 por 8 dá 3, e tem 5 de resto)
fimAlgoritmo

Etc...

 

 

Sobre:

2 horas atrás, Luiz Claudio Costa Dantas disse:

   No caso do,    dia recebe o leia ( datanascimento)   entrando com a data 

Mais ou menos isso.. apenas tente entender melhor como funciona o fluxo do programa... a datanascimento é uma variável do tipo inteiro correto? ou seja, ela é capaz de armazenar na memória do computador "números inteiros". Já o com comando leia() serve para "ficar aguardando o usuário digitar algo pelo teclado e pressionar ENTER. Ai, o que foi enviado pelo teclado vai ser atribuído a variável que foi usada no comando", ex.:

algoritmo "FCdH"
var
  num :inteiro
inicio
escreval("Escreva um número e pressione ENTER")
leia(num)
escreval("Você escreveu",num)
fimAlgoritmo

O número que foi informado vai ser "jogado" na variável num.  Já o escreval() pega o valor da memória e imprime na tela. Entende? a variável funciona meio que "reservando um pedaço da memória". O nome num é o apelido dado a aquela região, ou seja, para o computador saber em qual parte quer usar a memória. Já o tipo inteiro, que foi usado para definir a variável lá no var, serviu para "formatar" aquela região da memória... tipo, cada tipo de dado (inteiro, caractere, lógico etc) tem uma estrutura diferente para funcionar... não dá para escrever uma letra numa variável que está estruturada como inteiro... nem um número em uma variável que está estrutura como caractere.

 

Por ai vai...

 

 

 

Sobre:

3 horas atrás, Luiz Claudio Costa Dantas disse:

Dia <- (DataNascimento div 1000000)   porque indica o primeiro numero   de uma sequencia , e porque 1Milhão como esse numero funciona já que a data de nacimento seria 30/04/2000 são 8 digitos.

Mes <- (DataNascimento mod 1000000) div 10000)  indica os dois numeros do mes  e os parenteses não estão fechado.

 Ano <- (DataNascimento mod 1000000) mod 10000) e aqui estão os dois representad

 

Vamos agora tentar entender o código do @JESSÉ ÁVILA:

algoritmo "Colocando a data de nascimento em ordem com calculo"
var
   DataNascimento, Dia, Mes, Ano: inteiro
   
//Inicialmente percebe que o problema foi concebido para receber uma data
//segundo o formato ddmmaaaa (8 digitos), para então poder exibir aa/mm/aaaa.
//Do jeito que o código está, se não for digitado no padrão ddmmaaaa o
//resultado provavelmente vai dar errado!

   
inicio
   escreval("Vamos fazer um programa para calcular a data de seu aniversário")
   escreval("Digite aqui a sua Data de Nascimento sem a necessidade de qualquer caracter: ")
   //supondo que será inserido a data 01011972 (nascimento do Bahia)
   leia (DataNascimento)
   //O dia precisa receber a parte que corresponde o dd, correto? uma forma
   //encontrada seria "transformar os últimos 6 dígitos em decimal, e ficar
   //apenas com a parte inteira (os 2 primeiros). É é justamente isso que o div
   //faz!
   
   
   //divide por 1000000 e pega a parte inteira
   Dia <- (DataNascimento div 1000000)
   
   //já o mês, é necessário obter o que corresponde ao mm. Como fazer?
   //observe que mm está entre dd e aaaa. A lógica usada foi "transformar os
   //últimos 6 dígitos em decimal, e ficar apenas com a parte decimal (os 6
   //últimos). Aí, já tirou os 2 primeiros dos 8 iniciais... mas agora falta
   //pegar os 2 primeiros dos 6 restantes... oras! "pegar os dois primeiros já
   //sabemos como faz... só usar o div....


   //divide o número por 1000000 e pega a parte da fração (fica mmaaaa), após,
   //divide esses 6 dígitos por 10000 e pega a parte inteira! (fica mm)
   Mes <- (DataNascimento mod 1000000) div 10000)
   
   
   //para o ano, utilizam-se a parte fracionada, da parte fracionda...
   //Ano <- (DataNascimento mod 1000000) mod 10000)
   Ano <- (DataNascimento mod 1000000) mod 10000)
   escreval ("Sua data de nascimento é: ", Dia, "/", Mes, "/", Ano)
fimAlgoritmo

 

 

Obs.: para pegar o ano só precisam-se das últimas 4, correto? logo, poderia simplesmente fazer assim:

   Ano <- (DataNascimento mod 10000)

Veja, se temos:

ddmmaaaa

logo, transforma o número de 8 dígitos para ter 4 casas decimais... ficando

ddmm,aaaa

Ai pega só a parte decimal. (o mod faz isso)

 

 

Qual quer dúvida é só perguntar.

 

No aguardo.

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

  • Membro VIP

Sobre:

Em 18/07/2018 às 22:09, Luiz Claudio Costa Dantas disse:

Só mais uma perguntinha o parentese no ultimo código só fecha. O sistema não sente falta de onde ele começou , por que ?

 

Se estiver se referindo a por exemplo:

Em 24/07/2017 às 21:18, JESSÉ ÁVILA disse:

   Dia <- (DataNascimento div 1000000)
   Mes <- (DataNascimento mod 1000000) div 10000)
   Ano <- (DataNascimento mod 1000000) mod 10000)

 

Não tinha reparado.. De fato faltou um "(" para segunda e terceira linhas...  ou seja, teria que ficar em pares... creio que o correto seria:

   D̶i̶a̶ ̶<̶-̶ ̶(̶(̶D̶a̶t̶a̶N̶a̶s̶c̶i̶m̶e̶n̶t̶o̶ ̶d̶i̶v̶ ̶1̶0̶0̶0̶0̶0̶0̶)̶  //<-- [UPDATE 20/07/2018] essa linha está errada, tem um "(" a mais.
   Dia <- (DataNascimento div 1000000)
   Mes <- ((DataNascimento mod 1000000) div 10000)
   Ano <- ((DataNascimento mod 1000000) mod 10000)

 

Outra forma seria assim:

   Dia <- (DataNascimento div 1000000)
   Mes <- (DataNascimento mod 1000000) div 10000
   Ano <- (DataNascimento mod 1000000) mod 10000

 

 

Também poderia ser assim:

   Dia <- DataNascimento div 1000000
   Mes <- DataNascimento mod 1000000 div 10000
   Ano <- DataNascimento mod 1000000 mod 10000

 


 

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

  • Membro VIP
15 horas atrás, Luiz Claudio Costa Dantas disse:

Engraçado eu fiz o teste e funcionou, por isso que vim perguntar sobre os detales, mais ta bom meu amigo muito obrigado.

 

Só para reforçar:

 

Pois é, o código original está faltando um "(". Apesar de "funcionar", está com erro de sintaxe.

Em 24/07/2017 às 21:18, JESSÉ ÁVILA disse:

   Mes <- (DataNascimento mod 1000000) div 10000)
   Ano <- (DataNascimento mod 1000000) mod 10000)

 

 

Observação: os 3 outros códigos que postei anteriormente estão funcionando, apenas que um deles eu tinha colocado um "(". Já corrigir o código para evitar confusões...

 

 

Att

 

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