jueves, 30 de marzo de 2017

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

Código Fuente de Ejemplo


Contador.cs

Se agrega el método getValor() a la clase Contador.

        //Método que Retorna el Valor actual del Contador
        //Incluyendo el Desfase Superior e Inferior.
        public int getValor()
        {
            return (Valor + DesfaseInferior + DesfaseSuperior);
        }



Semaforo.cs

Clase que representa los 3 colores del Semáforo y un contador en segundos para cada color.


    /// <summary>
    /// Representa los 3 colores del Semáforo
    /// </summary>
    public class Semaforo
    {
        /// <summary>
        /// Enumeración de los Colores
        /// </summary>
        public enum Color : int { Verde, Amarillo, Rojo }
        //Arreglo de los 3 Contadores
        Contador[] ContxColor;

        /// <summary>
        /// Constructor por omisión (sin argumentos)
        /// </summary>
        public Semaforo()
        {
            //Instancia el Arreglo
            ContxColor = new Contador[3];
            //Instancia cada Contador del Arreglo
            ContxColor[(int)Color.Verde] = new Contador(15);
            ContxColor[(int)Color.Amarillo] = new Contador(15);
            ContxColor[(int)Color.Rojo] = new Contador(15);
        }

        /// <summary>
        /// Constructor con Segundos para cada color especificados
        /// en los argumentos
        /// </summary>
        /// <param name="Verde">Cantidad de Segundos Verde</param>
        /// <param name="Amarillo">Cantidad de Segundos Amarillo</param>
        /// <param name="Rojo">Cantidad de Segundos Rojo</param>
        public Semaforo(int Verde, int Amarillo, int Rojo)
        {
            //Instancia el Arreglo
            ContxColor = new Contador[3];
            //Instancia cada Contador del Arreglo
            ContxColor[(int)Color.Verde] = new Contador(Verde);
            ContxColor[(int)Color.Amarillo] = new Contador(Amarillo);
            ContxColor[(int)Color.Rojo] = new Contador(Rojo);
        }

        /// <summary>
        /// Invoca al método decrementar de la clase Contador
        /// </summary>
        /// <param name="ColorSemaforo">El argumento específica que
        /// color del Semáforo va a decrementar
        /// </param>
        /// <returns></returns>
        private int decrementarColor(Color ColorSemaforo)
        {
            return ContxColor[(int)ColorSemaforo].decrementar();
        }
       
        /// <summary>
        /// Decrementa el contador del Color Verde
        /// </summary>
        /// <returns></returns>
        public int decrementarVerde()
        {
            return decrementarColor(Color.Verde);
        }

        /// <summary>
        /// Decrementa el contador del Color Amarillo
        /// </summary>
        /// <returns></returns>
        public int decrementarAmarillo()
        {
            return decrementarColor(Color.Amarillo);
        }

        /// <summary>
        /// Decrementa el Contador del Color Rojo
        /// </summary>
        /// <returns></returns>
        public int decrementarRojo()
        {
            return decrementarColor(Color.Rojo);
        }

        //Propiedades que Devuelven el Valor en Segundos
        //de Cada Color
        public int Verde
        {
            get { return ContxColor[(int)Color.Verde].getValor(); }
        }
        public int Amarillo
        {
            get { return ContxColor[(int)Color.Amarillo].getValor(); }
        }
        public int Rojo
        {
            get { return ContxColor[(int)Color.Rojo].getValor(); }
        }


    }



Program.cs

Se agrega el método para Probar la Clase Semaforo.

        /// <summary>
        /// Prueba un Semáforo específico
        /// a decrementar los contadores de los 3 colores
        /// </summary>
        /// <param name="mSemaforo"></param>
        static void TestSemaforo(Semaforo mSemaforo)
        {
            int i = 0, Despliegue = 0;
            //Verde
            Console.WriteLine("Verde");
            do
            {
                Despliegue = mSemaforo.decrementarVerde();
                i++;
                //Muestra Datos.
                Console.Write("{0,3}) {1:d2} ",
                    i, Despliegue);
            } while (Despliegue>0);
            Console.WriteLine();

            //Amarillo
            Console.WriteLine("Amarillo");
            do
            {
                Despliegue = mSemaforo.decrementarAmarillo();
                i++;
                //Muestra Datos.
                Console.Write("{0,3}) {1:d2} ",
                    i, Despliegue);
            } while (Despliegue > 0);
            Console.WriteLine();

            //Rojo
            Console.WriteLine("Rojo");
            do
            {
                Despliegue = mSemaforo.decrementarRojo();
                i++;
                //Muestra Datos.
                Console.Write("{0,3}) {1:d2} ",
                    i, Despliegue);
            } while (Despliegue > 0);
            Console.WriteLine();

        }

        /// <summary>
        /// Crea dos objetos en base a la Clase Semaforo
        /// y prueba funcionamiento.
        /// </summary>
        static void TestSemaforos()
        {
            //Dos Objetos Tipo Semaforo
            Semaforo S1, S2;
            //Semáforo con constructor por omisión
            S1 = new Semaforo();
            //Semáforo con constructor
            S2 = new Semaforo(45, 5, 50);

            Console.WriteLine();
            Console.WriteLine("Prueba Semáforo 1");
            TestSemaforo(S1);

            Console.WriteLine();
            Console.WriteLine("Prueba Semáforo 2");
            TestSemaforo(S2);
        }

        static void Main(string[] args)
        {
            //TestContador();
            TestSemaforos();
            //TestSerializarJSON();

            //Espera por una tecla presionada
            Console.ReadKey();
        }




Programación en C#: Módulo 01: Ejemplo Arreglo

Código Fuente de Ejemplo

Números Pares Utilizando un Arreglo



   static void Main(string[] args)
        {
            //Variables
            string sTemp = "0";
            //Conjunto de Números a Ingresar
            int[] Numeros;
            //Cantidad de Elementos
            int CantidadN = 0;
            //Variables de Trabajo
            int Num = 0, Residuo = 0;
            //Ingreso de Datos
            Console.Write("Ingrese Cantidad de Números?");
            //Lectura como string
            sTemp = Console.ReadLine();
            //Convierte a Entero
            CantidadN = int.Parse(sTemp);

            //Instancia o reserva en Memoria para el Arreglo
            Numeros = new int[CantidadN];
            //Ingreso de los Números en el Arreglo
            for (int i =0; i < Numeros.Length; i++)
            {
                sTemp = "0";
                //Lectura del Número
                Console.Write("Ingrese Número para Posición[{0:d2}] ?",
                    i);
                sTemp = Console.ReadLine();
                Numeros[i] = int.Parse(sTemp);
            }   //Fin del for(...

            //Mostrar Números Pares del Arreglo
            for(int i = 0; i < Numeros.Length; i++)
            {
                //Toma un elemento del Arreglo
                Num = Numeros[i];
                //Evalua si es Impar
                Residuo = Num % 2;
                if (Residuo == 0)
                {
                    Console.WriteLine("Posición [{0:d2}]  Número: {1:N0} es PAR.",
                        i, Numeros[i]);
                }   //Fin del if...
            }   //Fin del for(...
            Console.ReadKey();


        }   //Fin del Main...


lunes, 27 de marzo de 2017

Laboratorios C#

Laboratorio 1


Simular el funcionamiento de la Pantalla de Presentación del Tiempo en los Semáforos (Contador LED regresivo en Segundos para Cambio de Color).

  • Crear una clase Contador 
  • Método Constructor para asignar el valor inicial, 
  • Propiedad que permita asignar o leer el valor del Contador, 
  • Método que retorna un valor entero y decrementa el valor de la propiedad Contador.








Código Fuente de Ejemplo
http://galileotalentodigital.blogspot.com/2017/03/pro-c-modulo-02-laboratorio-codigo.html




Laboratorio 2


Agregar una clase Semaforo.cs, con estas características:

  1. Tener una enumeración para representar los 3 colores (Rojo, Amarillo, Verde)
  2. Debe tener objetos de tipo Contador para 3 colores (Rojo, Amarillo, Verde)
  3. Método Constructor por Omisión, inicializar los objetos Contador de Cada Color con 15 segundos.
  4. Método Constructor con 3 parámetros (Rojo, Amarillo, Verde) para inicializar cada objeto Contador correspondiente a cada Color.
  5.  Desplegar en la consola los valores que retorna el método decrementar() para cada color.


Código Fuente de Ejemplo:
http://galileotalentodigital.blogspot.com/2017/03/pro-c-modulo-04-laboratorio.html



Laboratorio 3



  • Implementación del Semáforo en una interfaz de Windows Forms.
  • Descargar el archivo de inicio, copiar al directorio de trabajo y desempacar el archivo.
  • https://drive.google.com/open?id=0B7Ct7K_LTJvSdDVzcWVKcVVjQ0U
  • Programar en el método timTiempo_Tick(...) la llamada al método private cuentaRegresiva(), el cual disminuye los contadores en el orden de Verde, Amarillo, Rojo, y cuando un contador llega a cero (0), entonces cambia el color de fondo (picSemaforo.BackColor) del objeto picSemaforo al color correspondiente.
  • El método timTiempo_Tick(...), ya está configurado para activarse cada 0.1 segundo
  • Probar con distintas cantidades de segundo para cada color.





Laboratorio 4


  • Agregar una clase Cliente.cs al proyecto de Consola o iniciar un nuevo proyecto de Consola.
  • La clase debe tener las siguientes propiedades:
  • int CodCliente
  • long CUI
  • string Apellido
  • string Nombre
  • Crear un método static void TestSerializarJSON() en la clase Program.cs
  • En este método instanciar dos Objetos de tipo Cliente.
  • Serializar a JSON un objeto y mostrar en Consola el resultado.
  • Agregar un objeto para manejar un List<Cliente> 
  • Agregar los dos objetos a la Lista Anterior.
  • Serializar a JSON La Lista Anterior y mostrar en Consola el resultado.

Laboratorio 6




Crear una interfaz de usuario, siguiendo el ejemplo de la imagen.
Agregar el código para registrar un evento en el registro de eventos de Windows.

Código Fuente de Ejemplo:
http://galileotalentodigital.blogspot.com/2017/04/pro-c-modulo-06-laboratorio-codigo.html


Al ejecutar la aplicación en el entorno de Visual Studio, reciben la siguiente ventana de diálogo:



Cerrar el Visual Studio, en la barra de tareas, utilizar el botón derecho del Mouse para ejecutarlo (Run As) como Administrador y volver a ejecutar su aplicación.






En el Visor de Sucesos (Event Viewer) pueden verificar el registro del evento.




Laboratorio 7




Crear una interfaz de usuario, siguiendo el ejemplo de la imagen.
Agregar el código para utilizar los métodos estáticos de la clase Debug, agregar el número a una lista de enteros y calcular promedio.

Código Fuente de Ejemplo:
http://galileotalentodigital.blogspot.com/2017/04/pro-c-modulo-06-laboratorio-7-codigo.html


Ventana de Debug.Assert(...)





Laboratorio 8 Servicios Web



https://drive.google.com/open?id=0B7Ct7K_LTJvSSUhfSHF2ZzNXWW8




Laboratorio 9 Servicio WCF y Cliente




https://drive.google.com/open?id=0B7Ct7K_LTJvSWTFfcnBGaVdiazQ




Laboratorio 10 Task


Interfaz de Usuario:



Archivos que pueden ser descargados:



Agregar el código para que descargue hacia un archivo Destino en la computadora local.
Agregar el código para que utilice la clase Task.

Código Fuente de Ejemplo:
http://galileotalentodigital.blogspot.com/2017/04/pro-c-modulo-09-laboratorio-10-codigo.html









Resumen C#

Contenido

http://galileotalentodigital.blogspot.com/2017/03/contenido.html


Laboratorios

http://galileotalentodigital.blogspot.com/2017/03/laboratorios.html


Referencias

http://galileotalentodigital.blogspot.com/2017/03/referencias-whats-new.html


Depuración de Aplicaciones
http://galileotalentodigital.blogspot.com/2017/03/pro-c-referencias-depuracion-de.html






Contenido C#


Módulo 01: Introducción a C#

http://galileotalentodigital.blogspot.com/2016/08/programacion-en-c-modulo-01-sintaxis.html


Módulo 02: Métodos y Manejo de Excepciones

http://galileotalentodigital.blogspot.com/2016/08/programacion-en-c-modulo-02-metodos-y.html

Ejemplos
http://galileotalentodigital.blogspot.com/2016/10/programacion-en-c-modulo-02-metodos-y.html


Módulo 03: Estructuras y Colecciones

http://galileotalentodigital.blogspot.com/2016/08/programacion-en-c-modulo-03-estructuras.html

Ejemplo Estructura EmpleadoEstatico (Código Fuente)
http://galileotalentodigital.blogspot.com/2017/04/pro-c-modulo-03-codigo-fuente.html


Módulo 04: Clases

http://galileotalentodigital.blogspot.com/2016/08/programacion-en-c-modulo-04-clases.html



Módulo 05: Lectura y Escritura de Datos Locales


http://galileotalentodigital.blogspot.com/2016/08/programacion-en-c-modulo-05-lectura-y.html



Módulo 06: Acceso a Base de Datos


http://galileotalentodigital.blogspot.com/2016/08/programacion-en-c-modulo-06-acceso-base.html




Módulo 07: Accesar Datos en el Web


http://galileotalentodigital.blogspot.com/2017/04/programacion-en-c-modulo-07-accesar.html




Módulo 08: Interfaz de Usuario


https://drive.google.com/open?id=0B7Ct7K_LTJvSV1RidXpIU0NPU1E

Windows Presentation Foundation (WPF) Application Development
https://www.youtube.com/watch?v=XuNTq-1Lu50


Módulo 09: Rendimiento de Aplicaciones


https://drive.google.com/open?id=0B7Ct7K_LTJvSeXhwWk56ZTRHOHM





Referencias C# (What's new)

What's new in C# 6.0
https://www.youtube.com/watch?v=YHWCFeE2L-4
https://blogs.msdn.microsoft.com/csharpfaq/2014/11/20/new-features-in-c-6/


New Features in C# 7.0
https://www.youtube.com/watch?v=5ju2MuqKf_8
https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/



What's New for .NET 2015
https://www.youtube.com/watch?v=I6SU7UTaA3E

Getting Started with Visual Studio - Tips & Tricks
https://www.youtube.com/watch?v=vmXqGwn1Glk


What's New in Visual Studio 2017
https://www.youtube.com/watch?v=TYEoJorFn54

Web Development in Visual Studio 2017
https://www.youtube.com/watch?v=gfjFJ-v_h2s

Getting to code faster with the redesigned Visual Studio 2017 Start Page
https://www.youtube.com/watch?v=KthmR5cmpKo

What's new for Desktop Developer in Visual Studio 2017
https://www.youtube.com/watch?v=lXoe2QecXhg



Code Snippets
https://msdn.microsoft.com/en-us/library/ms165392.aspx

Visual C# Code Snippets
https://msdn.microsoft.com/en-us/library/z41h7fat.aspx