sábado, 10 de diciembre de 2016

Programación Funcional en LINQ No. 2-2 - Matemática y Estadística - Generar Tripletas Pitagóricas

Resumen

Explicación del proceso funcional para la generación de tripletas -o ternas- pitagóricas a través del operador de proyección Select. Se usa la fórmula babilónica como definición matemática para definir tripletas pitagóricas.

Videotutorial

Literatura & Enlaces

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Terna pitagórica (2016). Recuperado desde: https://es.wikipedia.org/wiki/Terna_pitag%C3%B3rica
Enumerable.Select Method (System.Linq) (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.linq.enumerable.select(v=vs.110).aspx
Enumerable.Range Method (Int32, Int32) (System.Linq) (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.linq.enumerable.range(v=vs.110).aspx


O

viernes, 9 de diciembre de 2016

Programación Funcional en LINQ No. 2-1 - Matemática y Estadística - Calcular el Producto Punto de Dos Vectores

Resumen

Descripción del proceso de solución del producto punto usando programación funcional.

Videotutoriales

Literatura & Enlaces

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Dot product (2016). Recuperado desde: https://en.wikipedia.org/wiki/Dot_product
Enumerable.Zip(TFirst, TSecond, TResult) Method (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/dd267698(v=vs.110).aspx


O

jueves, 8 de diciembre de 2016

Programación Funcional en LINQ No. 1-5 - Instalación y Exploración de LINQPad

Resumen

Explicación del proceso de instalación de LINQPad 5, y descripción de las características principales de este editor de código.

Videotutorial

Literatura & Enlaces

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
LINQPad - The .NET Programmer's Playground (2016). Recuperado desde: http://www.linqpad.net/
LINQPad Command-Line and Scripting (2016). Recuperado desde: https://www.linqpad.net/lprun.aspx


O

miércoles, 7 de diciembre de 2016

Programación Funcional en LINQ No. 1-4: Beneficios de la Programación Funcional

Resumen

Estudio de los beneficios de la programación funcional:
  • Composición
  • Evaluación Perezosa
  • Inmutabilidad
  • Evaluación Paralela
  • Enfoque Declarativo

Videotutorial

Literatura & Enlaces

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Composition II (2016). Recuperado desde: https://en.wikipedia.org/wiki/Piet_Mondrian#/media/File:Piet_Mondriaan,_1930_-_Mondrian_Composition_II_in_Red,_Blue,_and_Yellow.jpg
Single responsibility principle (2016). Recuperado desde: https://en.wikipedia.org/wiki/Single_responsibility_principle
Lazy evaluation (2016). Recuperado desde: https://en.wikipedia.org/wiki/Lazy_evaluation


O

martes, 6 de diciembre de 2016

Programación Funcional en LINQ No. 1-3: Tipos de Funciones

Resumen

Descripción de los tipos de funciones disponibles para realizar programación funcional:
  • Generadores
  • Estadísticas
  • Proyección
  • Filtrado

Videotutorial

Literatura & Enlaces

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Enumerable.Range Method (Int32, Int32) (System.Linq) (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.linq.enumerable.range(v=vs.110).aspx


O

lunes, 5 de diciembre de 2016

Programación Funcional en LINQ No. 1-2: Declaración de Métodos Funcionales en C#

Resumen

En este vídeotutorial se exploran los delegados estándar y genéricos con los que es posible definir métodos funcionales. Se demuestra a través de ejemplos las diferencias entre estos dos tipos de delegados; por otra parte, también se implementa la composición gof=g(f(x)) usando delegados Func.

Videotutorial

Literatura & Enlaces

Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Delegates (C# Programming Guide) (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/ms173171(v=vs.110).aspx
Delegados en C# - Parte 5: Delegados Func y Action de .NET Framework (2016). Recuperado desde: https://ortizol.blogspot.com.co/2014/05/delegados-en-csharp--parte-5-delegados-func-y-action-de-dotnet-framework.html
Composition of Functions (2016). Recuperado desde: https://www.mathsisfun.com/sets/functions-composition.html


O

domingo, 4 de diciembre de 2016

Programación Funcional en LINQ No. 1-1: ¿Qué es la programación funcional?

Resumen

En este primer videotutorial se presenta el concepto de programación funcional a través de un enfoque matemático básico; el cual incluye la definición de composición de funciones, metáfora gráfica entre programación funciona e imperativa y una serie de recursos que extienden la explicación de este paradigma de programación.

Videotutorial

Literatura & Enlaces


Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
Functional programming (2016). Recuperado desde: https://en.wikipedia.org/wiki/Functional_programming
Programación Funcional (2016). Recuperado desde: https://openlibra.com/es/book/programacion-funcional-2011-2012
Composition of Functions (2016). Recuperado desde: https://www.mathsisfun.com/sets/functions-composition.html
F# - Putting the Fun into Functional Programming (2016). Recuperado desde: https://www.youtube.com/watch?v=ALr212cTpf4



O

sábado, 3 de diciembre de 2016

Introducción a Videotutoriales de Programación Funcional con LINQ

Resumen

Videotutorial de introducción a la serie de videotutoriales Programación Funcional con LINQ.

Presentación




O

viernes, 2 de diciembre de 2016

Videotutorial - Uso de LINQPad para Ejecución de Expresiones C#

Resumen

En este videotutorial se explica el proceso de ejecución de código C# en LINQ a través de tres mecanismos; a saber:

  1. Expresión: permite ejecutar una única expresión del lenguaje C#.
  2. Sentencias: múltiples sentencias con expresiones.
  3. Programa: un programa compuestos por diferentes elementos de programa disponibles en C#.

Vídeotutorial




O

jueves, 1 de diciembre de 2016

Clases Utilitarias en C#

Índice

1. Introducción
2. Palabras Clave
3. Clase Console
4. Clase Environment
5. Clase Process
6. Conclusiones
7. Literatura & Enlaces

1. Introducción

En los artículos previos se exploró la infraestructura de comparación que provee Microsoft .NET Framework para efectuar comparaciones de igualdad y equivalencia de valores y tipos de datos. Ahora, en este último artículo de la serie Fundamentos Framework se describe tres de las clases utilitarias en .NET: Console, Environment y Process.

2. Palabras Clave

  • .NET
  • Clase utilitaria
  • Console
  • Environment
  • Process

3. Clase Console

Esta clase se haya definida en el namespace System. Su funcionalidad corresponde con las operaciones básicas de entrada y salida requeridas por aplicaciones de consola ("Console Class", 2016). Cuenta, por una parte, con métodos static para aceptar la entrada desde el teclado: 
  • Read
  • ReadKey
  • ReadLine
De manera análoga, existen métodos para presentar información textual en la salida estándar -i.e., la pantalla-; entre ellos se encuentran: 
  • Write, y 
  • WriteLine
Ambos static

Ejemplo de uso:

var texto = Console.ReadLine();
Console.WriteLine(texto);

Además, esta clase posee otras propiedades para para cambiar el tamaño de la ventana de la consola; como son:
  • WindowHeight, y 
  • WindowWidth.
Ejemplo de uso:

Console.Height = 200;
Console.Width = 200;

Estas dos sentencias hacen que el tamaño de la ventana de la consola se establece en 200 de alto por 200 de ancho.

Por otra parte, la clase Console cuenta con el método SetOut. Método útil para establecer el destino de la salida. Este flujo de salida puede ser útil para registrar información de la actividad de la aplicación (Albahari, 2012).

Ejemplo de uso:

using (System.IO.TextWriter w = System.IO.File.CreateText("C:\\etc\\registro.txt"))
{
Console.SetOut(w);
Console.WriteLine("xCSw");
}

Este fragmento de código genera un archivo de texto con el texto xCSw en la ruta especificada en el método CrateText.

4. Clase Environment

Esta clase, localizada en System, facilita el acceso a información del ambiente de ejecución o sistema operacional. En la siguiente tabla se muestra la lista de propiedades para accedar a esa información ("Environment Class", 2016):
Figura 1. Propiedades de Environment ("Environment Class", 2016).
También provee métodos, por ejemplo, para conocer las variables de entorno del sistema operacional:

Ejemplo de código:

Console.WriteLine(Environment.GetEnvironmentVariable("windir"));


Esta expresión da como resultado la cadena de texto:

C:\WINDOWS


la cual corresponde con el directorio del sistema operacional.

5. Clase Process

La clase System.Diagnostics.Process (Albahari, 2012) permite el acceso local y remoto a procesos. También permite lanzar nuevos procesos a través del método Start

string ie = "iexplore.exe";

string url = "https://ortizol.blogspot.com";

System.Diagnostics.Process.Start(ie, url);

El resultado de la ejecución de esta sentencia es el inicio del navegador Internet Explorer con la apertura del URL https://ortizol.blogspot.com.

En la receta Receta C# No. 4-15: Cómo Iniciar un Nuevo Proceso se explica con más detalle las capacidades de esta clase.

6. Conclusiones

Se explicaron varias de las clases utilitarias que provee .NET Framework: manejo de la consola -clase Console-, conocimiento del ambiente de ejecución o sistema operacional -la clase Environment-, y el acceso y ejecución de procesos a través de la clase Process.

Este artículo es el cierre de la serie Fundamentos de .NET Framework. El siguiente artículo da inicio a la serie Colecciones; la cual consiste en el estudio de los tipos de datos y estructuras de datos para el almacenimiento y recuperación eficientes de información: arreglos, listas, pilas, colas, tablas de hash, etc.

7. Literatura & Enlaces

Albahari, J., Albahari, B. (2012). C# 5.0 in a Nutshell. United States: O'Reilly Media.
Console Class (System) (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.console(v=vs.110).aspx
Environment Class (System) (2016). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.environment(v=vs.110).aspx
Receta C# No. 4-15: Cómo Iniciar un Nuevo Proceso (2016). Recuperado desde: https://ortizol.blogspot.com.co/2014/09/receta-csharp-no-4-15-como-iniciar-un-nuevo-proceso.html


O