Autor Tema: Ayuda con código!  (Leído 1548 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Ayuda con código!
« en: 02 de Septiembre de 2009, 00:07:28 »
Hola,no entiendo esta parte de un código:
Código: [Seleccionar]

const int16 SEGUNDOS_EN_UNA_HORA=3600;
const int SEGUNDOS_EN_UN_MINUTO=60;
int Horas,Minutos,Segundos;
int32 Conta_Segundos,MomentoActual;
 
void  Mi_Hora()
      {
      Conta_Segundos++;
      MomentoActual=Conta_Segundos;
      Horas=MomentoActual/SEGUNDOS_EN_UNA_HORA;
      MomentoActual%=SEGUNDOS_EN_UNA_HORA;//En especial esta linea no la caxo  :(
      Minutos=MomentoActual/SEGUNDOS_EN_UN_MINUTO; 
      MomentoActual%=SEGUNDOS_EN_UN_MINUTO;   
      Segundos=MomentoActual;
      MomentoActual=1;

No entiendo como es el cálculo siendo que son todas variables enteras,si me pueden dar una mano,Gracias.

Desconectado yopepe

  • PIC10
  • *
  • Mensajes: 19
Re: Ayuda con código!
« Respuesta #1 en: 02 de Septiembre de 2009, 02:01:24 »
Que tal, antes que nada, el operador % lo que hace es darte el resto de la división entera, es decir, 39 % 5 da como resultado 4 (cociente igual a 7, 7 por 5 igual a 35, sobran 4). Otra cosa, por las dudas, cuando escribimos:

Código: [Seleccionar]
MomentoActual%=SEGUNDOS_EN_UNA_HORA;
es lo mismo a escribir:

Código: [Seleccionar]
MomentoActual = MomentoActual % SEGUNDOS_EN_UNA_HORA;
es una abreviación nomás. Con respecto a como es el cálculo es bastante simple o que hace. Suponiendo que la instrucción

Código: [Seleccionar]
Conta_Segundos++;
se ejecuta cada un segundo (para que sea un reloj en tiempo real, sino no lo va a ser); a partir de la cantidad total de segundos transcurridos, calcula la cantidad de horas, minutos y segundos asociada a esa cantidad total de segundos. (Ejemplo: 928 segundos totales son 0 horas, 15 minutos y 28 segundos).

Entonces, la primer linea incrementa la cantidad de segundos, uno a uno.

La segunda linea copia el valor de "Conta_Segundos" a una variable auxiliar para realizar las cuentas y no tocar el valor original.

La tercera, calcula la cantidad de horas transcurridas, realizando la division entera entre la cantidad total de segundos hasta el momento y la constante SEGUNDOS_EN_UNA_HORA. En este caso (operador "/"), a diferencia de cuando se utiliza el operador "%", en vez de quedarse con el resto de la división entera, se queda con el cociente. (Ejemplo: si la cantidad de segundos totales transcurrida es menor a 3600, la cantidad de horas va a dar cero, ya que el cociente va a dar cero, y el resto va a ser igual a la cantidad de segundos transcurridos, porque "sobra todo" digamos. Si, por ejemplo, la cantidad de segundos totales transcurridos es igual a 11520, el cociente de la división entera va a dar 3 [horas], y el resto va a dar 720 [segundos]).

La cuarta, calcula el resto de la división entera entre la cantidad de segundos totales y la constante SEGUNDOS_EN_UNA_HORA. Dicho más fácil, guarda en MomentoActual la  parte que queda sin usar en la linea anterior, es decir, el resto. (Ejemplo: si otra vez estamos en el caso de una cantidad total de segundos transcurridos igual a 11520, en vez de guardar el numero 3 [que representa las horas], guarda el número 720 [ que representa la cantidad de segundos sobrantes que aún no alcanzan a completar una hora]).

La quinta, en base al mismo principio que en la linea tres, calcula la cantidad de minutos (que no alcanzan para completar una hora), utilizando la cantidad de segundos obtenida en la linea 4.

La sexta, en base al mismo principio que la linea 4, guarda en MomentoActual la cantidad de segundos sobrantes que no alcanzan para completar un minuto.

La séptima, bueno, es obvia.

Y la octava, Idem anterior.

Bueno, ya estamos, espero que te sea útil. Cualquier cosa consultá nomás. Saludos

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Ayuda con código!
« Respuesta #2 en: 02 de Septiembre de 2009, 18:58:10 »
Hola yopepe,bueno gracias y que molestia te tomaste  ;-) re claro,si no entendi el operador % y andube buscando hasta tarde un manual de ccs porque no tengo y no conseguia,gracias y nos vemos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda con código!
« Respuesta #3 en: 02 de Septiembre de 2009, 22:19:28 »
En la ayuda del CCS también esta  ;-)
El papel lo aguanta todo

Desconectado yopepe

  • PIC10
  • *
  • Mensajes: 19
Re: Ayuda con código!
« Respuesta #4 en: 02 de Septiembre de 2009, 22:22:08 »
Citar
Hola yopepe,bueno gracias y que molestia te tomaste  wink re claro,si no entendi el operador % y andube buscando hasta tarde un manual de ccs porque no tengo y no conseguia,gracias y nos vemos

No hay de que che. Un saludo y éxitos.