jueves, 30 de marzo de 2017

Pro C#: Módulo 02: Laboratorio: Código Fuente

Código Fuente de Ejemplo



Contador.cs

public class Contador
    {
        //Campos Privados
        //Valor del Contador
        private int Valor = 0;
        //Valor a decrementar
        private int Paso = 1;
        //Valor Máximo del Contador
        private int Max = 99;
        //Valor Mínimo del Contador
        private int Min = 0;
        //Desfase Superior e Inferior al Valor Máximo
        private int DesfaseSuperior = 0;
        private int DesfaseInferior = 0;

        //Método Constructor por Omisión
        public Contador()
        {
            Valor = 0;
        }

        //Método Constructor Sobrecargado (Overloaded)
        public Contador(int Valor)
        {
            setValor(Valor);
        }

        //Método Asigna o Inicializa el Valor del Contador
        public void setValor(int Valor)
        {
            if (Valor > Min)
            {
                this.Valor = Valor;
                if (this.Valor > Max)
                {
                    DesfaseSuperior = (this.Valor - Max) / 2;
                    if (DesfaseSuperior < Min) DesfaseSuperior = Min;
                    DesfaseInferior = this.Valor - Max - DesfaseSuperior;
                    DesfaseInferior = (DesfaseInferior < Min) ? Min : DesfaseInferior;
                    this.Valor = this.Valor - DesfaseSuperior - DesfaseInferior;
                }
            }
            else
                this.Valor = Min;
        }
     
        //Tag para agregar comentarios generados por el compilador
        /// <summary>
        /// Retorna Valores entre Max y Min
        /// Repite Max y Min varias veces para
        /// representar el valor completo
        /// </summary>
        /// <returns>int</returns>
        public int decrementar()
        {
            int ValorRetorno = Min;
            if ( (Valor + DesfaseSuperior) > Max)
            {
                ValorRetorno = Max;
                //Si el DesfaseSuperior es Mayor que Paso solo resta
                if (DesfaseSuperior > Paso)
                    DesfaseSuperior -= Paso;
                else
                {   //Sino la diferencia la aplica a Valor
                    //Variable Diferencai declarada dentro de un bloque
                    int Diferencia = DesfaseSuperior - Paso;
                    DesfaseSuperior = 0;
                    //Operador Terciario
                    Valor = (Valor > Diferencia) ? Valor - Diferencia
                        : Min;
                }
            }
            else if (Valor + DesfaseInferior > Paso)
            {
                if (Valor > Paso)
                {
                    Valor = Valor - Paso;
                    ValorRetorno = Valor;
                }
                else
                {
                    int Diferencia = Valor - Paso;
                    // TODO : Validar si es 0 o Min
                    Valor = 0;
                    if (DesfaseInferior > Diferencia)
                    {
                        // TODO : Validar si esta es la mejor forma
                        ValorRetorno = Min + 1;
                        DesfaseInferior = DesfaseInferior + Diferencia;
                    }
                    else
                    {  
                        // TODO : Validar si es 0 o Min
                        Valor = 0;
                        DesfaseInferior = 0;
                        ValorRetorno = Min;
                    }
                }
            }
                            
            return ValorRetorno;
        }
    }


Program.cs

class Program
    {
        static void Main(string[] args)
        {
            int Segundos = 120, Despliegue = 0, i = Segundos;
            //Declaración de un Objeto e Instancia
            Contador xCont = new Contador(Segundos);
            //Invoca al Método del Objeto y Presenta Resultados
            do
            {
                //Invoca el método de la Clase
                Despliegue = xCont.decrementar();
                //Muestra Datos, la ventana de la consola
                //Debe tener 120 columnas.
                Console.Write("{0,3}) {1:d2} ",
                    i, Despliegue);
                //Decrementa i
                i--;
            } while (Despliegue > 0);
            //Espera por una tecla presionada
            Console.ReadKey();
        }

    }

No hay comentarios.:

Publicar un comentario