Você está na página 1de 3

Diagrama de Flujo

Inico
Fila
Acumulador
AcumuladorKmInicial
AcumuladorKmFinal
AcumuladorKmTotal
FilaSalida
FilaSalida=2
Fila=2
Acumulador=Celda(Fila,67)
AcumuladorKmInicial=Celda(Fila,2)
Fila=Fila+1
Celda(Fila,1) != null
Acumulador != Celda(Fila,67)
Si
Celda(Fila,67) != null
Si
AcumuladorKmFinal = Ceda(Fila, 2)
KmTotal = AcumuladorKmFinal - AcumuladorKmInicial
Celda(FilaSalida, 107) = AcumuladorKmInicial
Celda(FilaSalida, 108) = AcumuladorKmFinal
Celda(FilaSalida, 109) = Acumulador
Celda(FilaSalida, 110) = KmTotal
Celda(FilaSalida, 111) = Cells(Fila - 1, 1)
Acumulador = Celda(Fila, 67)
AcumuladorKmInicial = Celda(Fila, 2)
FilaSalida = FilaSalida + 1
Fila=Fila+1 No
No
AcumuladorKmFinal = Ceda(Fila, 2)
KmTotal = AcumuladorKmFinal - AcumuladorKmInicial
Celda(FilaSalida, 107) = AcumuladorKmInicial
Celda(FilaSalida, 108) = AcumuladorKmFinal
Celda(FilaSalida, 109) = Acumulador
Celda(FilaSalida, 110) = KmTotal
Celda(FilaSalida, 111) = Cells(Fila - 1, 1)
No
Fin
Declaracion de
Variables.
Asignacin
inicial de
variables.
Si
Inicio de Ciclo
While, para
determinar si
ya finalizo la
corrida
Comparacin
de la celda
actual contra
el acumulador.
Permiso de escritura para
determinar si el valor
efectivamente es distinto
o simplemente no existe.
Asignacin de valores de km final y
calculo de kmtotal.
Salida de datos
Actualizacion de Datos de Control como
lo es el acumulador el kminicial y la fila
de salida.
Al finalizar regresa al ciclo.
Aumento en Contador para
analizar siguiente grupo de
datos
Registro de
ultimo valor de
corrida.
Asignacin de
valores finales
de la corrida.
Actualizacin de Datos

Explicacin de Cdigo
Declaracin de Variables:
o Fila ser la variable responsable de llevar un control de ubicacin ya que en base a esta
sabremos en que elemento nos encontramos.
o Acumulador es el encargado de retener el valor del espeso de la pared, ya que este valor
ser el eje sobre el cual se realizaran las comparaciones entre los elementos.
o AcumuladorKmInicial sirve para saber a partir de que kilometro cambio el espesor de
pared
o AcumuladorKmFinal en ella se guardara el valor del kilmetro donde finaliza la seccin
con el mismo espesor de pared que el anterior, con el fin de conocer la longitud total en la
cual
o AcumuladorKmTotal variable en la cual se restara el valor del KmInicial al Kmfinal para
determinar la longitud por la cual est conformado el segmento.
o FilaSalida es la encargada de llevar el control sobre que fila se acomodaran los datos de
salida.
Asignacin inicial de variables:
o FilaSalida = 2, ya que en la fila 2 es donde se pondrn la primer serie de valores.
o Fila = ya que al igual que FilaSalida nuestra tabla de valores comienza en la segunda
fila.
o Acumulador = Celda(Fila,67), en este punto el acumulador guardar el valor que existe en
la Celda(2,67), debido a que el primero valor a analizar se encuentra en la segunda fila, y el
valor a analizar en este caso espesor se encuentra en la columna 67.
o AcumuladorKmInicial = Celda(Fila,2), al igual que el acumulador esta variable equivale a
Celda(2,2), ya que en este lugar se encuentra el primer kilometraje
o Fila = Fila +1, debido a que ya analizamos el primer valor por lo cual es necesario
analizar el siguiente.
Ciclo while:
o En este punto evaluaremos el valor de Celda en la posicin (Fila, 1) ya que esta alberga el
nombre de la corrida, y en caso de que esta se encuentre vaca significa que la corrida
finalizo, y por lo tanto finalizan las comparaciones.
Comparacin de Celda Actual Contra valor de Acumulador:
o Aqu se realiza la comparacin para saber si el valor de la fila es distinto al guardado en el
acumulador, y en caso de que sea distinto pasa a al siguiente comparacin, en caso
contrario incrementa en uno el valor de fila para volver al ciclo while.
Permiso de escritura:
o Este candado sirve para descartar los eventos donde no existe valor de espesor ya que si
este estuviera vaco cumplira la condicin de orden superior donde el valor es distinto al
acumulador, por lo cual si la celda est en blanco incrementa en uno el valor de fila y
regresa al ciclo while, y en caso de que este valor efectivamente sea distinto, permite
actualizar los datos.
Actualizacin de Datos:
o En la primer parte encontramos que se asigna el valor faltante de KmFinal y se realiza la
resta para conocer el valor del KmTotal
o El siguiente Bloque es el encargado de escribir los valores de salida conformo es que se
desean visualizar por lo cual en la FilaSalida, podemos encontrar los valores de KmInicial,
KmFinal, Acumulador, KilometrajeTotal, asi como el nombre de la corrida al cual pertenece
la seccin.
o Una vez escritos los valores se deben actualizar los valores a evaluar, por lo cual el
acumulador es sobre escrito con el nuevo espesor a evaluar, se almacena el kilometraje
donde inicia la nueva seccin, y se aumenta el contador de FilaSalida y Fila en uno.
o Para finalizar aumenta en uno el contador de Fila y regresa al ciclo while.
Finalizado de CicloWhile
o Una vez que ya no cumple con el ciclo while registra el ultimo valor del KmFinal, y Kmtotal.
o Para finalizar escribe los datos con los ltimos valores en la posicin de FilaSalida
Cdigo
Sub ej()
'
' ej Macro
'
' Acceso directo: CTRL+j
'
' Declaracion de Variables
Dim Fila As Integer 'Contador de entrada de datos
Dim FilaSalida As Integer 'Contador para salida de datos

Dim Acumulador As Double 'Acumulador de espesor
Dim AcumuladorKmInicial As Double 'Acumulador de Kilometraje inicial de seccin
Dim AcumuladorKmFinal As Double 'Acumulador de Kilometraje final de seccin
Dim KmTotal As Double 'Valor para kilometraje total de seccin

FilaSalida = 2 'Valor de fila de datos de entrada inicial
Fila = 2 'Valor de fila de datos de salida inicial
Acumulador = Cells(Fila, 67) 'Primer Valor de espesor
AcumuladorKmInicial = Cells(Fila, 2) 'Inicio de Kilometraje
Fila = Fila + 1 'Aumento en contador de fila
While Cells(Fila, 1) <> "" 'Inicio de ciclo para conocer si la corrida finalizo
If Acumulador <> Cells(Fila, 67) Then 'Comparacin del espesor del acumulador
contra el valor de entrada
If Cells(Fila, 67) <> "" Then 'Permiso para evitar que se escriba un valor
vaco
'Asignacion de Valores Faltantes
AcumuladorKmFinal = Cells(Fila, 2) 'Asignacion de valor del
KilometrajeFinal
KmTotal = AcumuladorKmFinal - AcumuladorKmInicial 'Asignacin de
Kilometraje Total
'Escritura de datos
Cells(FilaSalida, 107) = AcumuladorKmInicial 'Escritura de valor de
kmInicial en la posision de FilaSalida, 107
Cells(FilaSalida, 108) = AcumuladorKmFinal 'Escritura de valor de
kmFinal en la posicin de FilaSalida, 108
Cells(FilaSalida, 109) = Acumulador 'Escritura de valor del espesor
guardado en la posicin de FilaSalida, 109
Cells(FilaSalida, 110) = KmTotal 'Escritura de valor de KmTotal en la
posicin FilaSalida, 110
Cells(FilaSalida, 111) = Cells(Fila - 1, 1) 'Escritura de nombre de la
corrida en la posicin FilaSalida, 111
'Actualizacion de datos
Acumulador = Cells(Fila, 67) 'Actualizacin del valor de acumulador
con el nuevo espesor
AcumuladorKmInicial = Cells(Fila, 2) 'Actualizacin del valor de
KmInicial
FilaSalida = FilaSalida + 1 'Incremento de contador de FilaSalida
End If
End If
Fila = Fila + 1 'Incremento de contador Fila
Wend
'Asignacin de Valores Finales
AcumuladorKmFinal = Cells(Fila - 1, 2) 'Asignacin de valor del KilometrajeFinal
KmTotal = AcumuladorKmFinal - AcumuladorKmInicial 'Asignacin de Kilometraje Total
'Escritura de datos
Cells(FilaSalida, 107) = AcumuladorKmInicial 'Escritura de valor de kmInicial en
la posicin de FilaSalida, 107
Cells(FilaSalida, 108) = AcumuladorKmFinal 'Escritura de valor de kmFinal en la
posicin de FilaSalida, 108
Cells(FilaSalida, 109) = Acumulador 'Escritura de valor del espesor guardado en la
posicin de FilaSalida, 109
Cells(FilaSalida, 110) = KmTotal 'Escritura de valor de KmTotal en la posicin
FilaSalida, 110
Cells(FilaSalida, 111) = Cells(Fila - 1, 1) 'Escritura de nombre de la corrida en la
posicin FilaSalida, 111
End Sub

Você também pode gostar