martes, 23 de septiembre de 2008

Día Decimonoveno (19º) - 25/7/08

Comenzamos la clase dedicandonos a rediseñar el programa de apogeo que habíamos creado la clase anterior. Nos propusimos otro enfoque para programarlo ya que el otro se basaba en un método bastante más grosero y propenso a fallas (recordamos que nunca funcinó). Le damos las gracias al Profesor Mariano Foullier por la idea.

El primer programa, lo llamaremos Apogeo 1.0, consistía en la siguiente secuencia de programación:

  • Se crea una variable de un solo Byte llamada Index y un array 16 de Bytes llamado Array
  • Index se inicializa en 00 y se utiliza para direccionar a Array
  • Se ingresa un dato en Array{Index}
  • Se incrementa Index
  • Se ingresa otro dato en Array{Index}
  • Se compara Array{Index} con Array{Index-1} si es mayor Array{Index-1} se vuelve a empezar, sino continua
  • Se incrementa Index nuevamente
  • Se ingresa un tercer dato en Array{Index}
  • Se realiza la misma comparación, si es mayor Array{Index-1} se vuelve a empezar, sino continua
  • Apogeo Detectado (Sub-rutina de Apogeo)

Es decir, el programa tomaba una muestra, luego otra, y las comparaba, si la primera era mayor que la segunda, el cohete estaba descendiendo, para evitar que el ruido haga activar la rutina de apogeo se tomaba una tercera muestra que compruebe definitivamente el descenso del cohete. Este programa era altamente falible y de hecho nunca anduvo como debía.

Es por esto que programamos el programa que llamamos Apogeo 2.0, cuya secuencia de programación era:

  • Se crea un Array de 16 Bytes y una variable de 1 Byte que lo direcciona, son Array e Index.
  • Se crea una variable de 1 Byte usada para contar llamada Cont inicializada en 0.
  • Se inicializan todos los elementos en 0
  • Se ingresa el primer dato en Array{0}
  • Se rotan todos los datos hacia el final del Array (Array{0} pasa a Array{1}, etc.) el último dato se pierde.
  • Se comparan los datos contiguos desde el principio del Array hasta el final, si los valores van en ascenso es porque el cohete va en descenso, cada vez que hay un descenso de un valor al contiguo se suma Cont.
  • Si al finalizar la comparación de todo el Array Cont es 3 o más, se ejecuta la subrutina de apogeo. Si no, se ingresa otro dato en Array{0} y se sigue desde ese paso.

Este programa era mucho más efectivo. lo que hacía era ir ingresando los datos de a uno en un Array vacío y compararlo con los demás. De esta forma, cada vez que se ingresa un dato, se ejecuta la comparación completa del Array. Hasta que no haya 3 descensos seguidos, no se salta a la sub-rutina de Apogeo. Este programa si funcionó correctamente y cumple con nuestras necesidades.

No hay comentarios.: