miércoles, 15 de julio de 2015

Introducción a .NET

Introducción a .NET Framework

.NET Framework es un entorno de ejecución runtime que administra aplicaciones cuyo destino es .NET Framework. Incorpora Common Language Runtime, que proporciona administración de la memoria y otros servicios del sistema, y una biblioteca de clases completa, que permite a los programadores aprovechar el código sólido y confiable de todas las áreas principales del desarrollo de aplicaciones.


¿Qué es .NET Framework?


.NET Framework es un entorno de ejecución administrado que proporciona diversos servicios a las aplicaciones en ejecución. Consta de dos componentes principales: Common Language Runtime (CLR), que es el motor de ejecución que controla las aplicaciones en ejecución, y la biblioteca de clases de .NET Framework, que proporciona una biblioteca de código probado y reutilizable al que pueden llamar los desarrolladores desde sus propias aplicaciones.
Dentro del .NET framework están integrados los lenguajes .NET (C#, VB.NET, J#), el CRL, el CLSADO.NETASP.NET ...
.NET soporta varios lenguajes de programación, siendo los más populares:
  • C#
  • VB.NET
  • C++
  • J#
  • Delphi

CLR

El Common Language Runtime (CLR) es el núcleo de la plataforma .NET. Es el motor encargado de gestionar la ejecución de las aplicaciones para ella desarrolladas y a  las  que ofrece numerosos servicios que simplifican su desarrollo y favorecen su fiabilidad y seguridad. 
El CLR permite que excepciones lanzadas desde código para .NET escrito en un cierto lenguaje se puedan capturar en código escrito usando otro lenguaje, e incluye mecanismos de depuración que pueden saltar desde código escrito para .NET en un determinado lenguaje a código escrito en cualquier otro. Por ejemplo, se puede recorrer la pila de llamadas de una excepción aunque ésta incluya métodos definidos en otros módulos usando otros lenguajes.


MSIL - Microsoft Intermediate Language


    Ninguno de los compiladores que generan código para la plataforma .NET produce código máquina para CPUs x86 ni para ningún otro tipo de CPU concreta, sino que generan código escrito en el lenguaje intermedio conocido como Microsoft Intermediate Lenguage (MSIL) El CLR da a las aplicaciones la sensación de que se están ejecutando sobre una máquina virtual, y precisamente MSIL es el código máquina de esa máquina virtual. Es decir, MSIL es el único código que es capaz de interpretar el CLR, y por tanto cuando se dice que un compilador genera código para la plataforma .NET lo que se está diciendo es que genera MSIL.
Es un lenguaje de un nivel de abstracción mucho más alto que el de la mayoría de los códigos máquina de las CPUs existentes, e incluye instrucciones que permiten trabajar directamente con objetos (crearlos, destruirlos, inicializarlos, llamar a métodos virtuales, etc.), tablas y excepciones (lanzarlas, capturarlas y tratarlas)
    Ya se comentó que el compilador de C# compila directamente el código fuente a MSIL, que Microsoft ha desarrollado nuevas versiones de sus lenguajes Visual Basic (Visual Basic.NET) y C++ (C++ con extensiones gestionadas) cuyos compiladores generan MSIL, y que ha desarrollado un intérprete de JScript (JScript.NET) que genera código MSIL. Pues bien, también hay numerosos terceros que han anunciado estar realizando versiones para la plataforma .NET de otros lenguajes como APL, CAML, Cobol, Eiffel, Fortran, Haskell, Java (J#), Mercury, ML, Mondrian, Oberon, Oz, Pascal, Perl, Python, RPG, Scheme y Smalltalk.
    La principal ventaja del MSIL es que facilita la ejecución multiplataforma y la integración entre lenguajes al ser independiente de la CPU y proporcionar un formato común para el código máquina generado por todos los compiladores que generen código para .NET.


Metadatos

 En la plataforma .NET se distinguen dos tipos de módulos de código compilado: ejecutables (extensión .exe) y librerías de enlace dinámico (extensión.dll generalmente) Ambos son ficheros que contienen definiciones de tipos de datos, y la diferencia entre ellos es que sólo los primeros disponen de un método especial que sirve de punto de entrada a partir del que es posible ejecutar el código que contienen haciendo una llamada desde la línea de comandos del sistema operativo. A ambos tipos de módulos se les suele llamar ejecutables portables (PE), ya que su código puede ejecutarse en cualquiera de los diferentes sistemas operativos de la familia Windows para los que existe alguna versión del CLR.


Emsamblados - Assemblies


Un ensamblado es una agrupación lógica de uno o más módulos o ficheros de recursos (ficheros .GIF, .HTML, etc.) que se engloban bajo un nombre común. Un programa puede acceder a información o código almacenados en un ensamblado sin tener que conocer cuál es el fichero en concreto donde se encuentran, por lo que los ensamblados nos permiten abstraernos de la ubicación física del código que ejecutemos o de los recursos que usemos. Por ejemplo, podemos incluir todos los tipos de una aplicación en un mismo ensamblado pero colocando los más frecuentemente usados en un cierto módulo y los menos usados en otro, de modo que sólo se descarguen de Internet los últimos si es que se van a usar.


La Librería de Clase Base (BCL)


La Librería de Clase Base (BCL) es una librería incluida en el .NET Framework formada por cientos de tipos de datos que permiten acceder a los servicios ofrecidos por el CLR y a las funcionalidades más frecuentemente usadas a la hora de escribir programas. Además, a partir de estas clases prefabricadas el programador puede crear nuevas clases que mediante herencia extiendan su funcionalidad y se integren a la perfección con el resto de clases de la BCL. Por ejemplo, implementando ciertos interfaces podemos crear nuevos tipos de colecciones que serán tratadas exactamente igual que cualquiera de las colecciones incluidas en la BCL.
Espacio de nombres
Utilidad de los tipos de datos que contiene
System
Tipos muy frecuentemente usados, como los tipos básicos, tablas, excepciones, fechas, números aleatorios, recolector de basura, entrada/salida  en consola, etc.
System.Collections
Colecciones de datos de uso común como pilas, colas, listas, diccionarios, etc.
System.Data
Manipulación de bases de datos. Forman la denominada arquitectura ADO.NET.
System.IO
Manipulación de ficheros y otros flujos de datos.
System.Net
Realización de comunicaciones en red.
System.Reflection
Acceso a los metadatos que acompañan a los módulos de código.
System.Runtime.Remoting
Acceso a objetos remotos.
System.Security
Acceso a la política de seguridad en que se basa el CLR.
System.Threading
Manipulación de hilos.
System.Web.UI.WebControls
Creación de interfaces de usuario basadas en ventanas para aplicaciones Web.
System.Windows.Forms
Creación de interfaces de usuario basadas en ventanas para aplicaciones estándar.
System.XML
Acceso a datos en formato XML.




Common Type System



    El Common Type System (CTS) o Sistema de Tipo Común es el conjunto de reglas que han de seguir las definiciones de tipos de datos para que el CLR las acepte.
El Common Language Specification (CLS) o Especificación del Lenguaje Común es un conjunto de reglas que han de seguir las definiciones de tipos que se hagan usando un determinado lenguaje gestionado si se desea que sean accesibles desde cualquier otro lenguaje gestionado. Obviamente, sólo es necesario seguir estas reglas en las definiciones de tipos y miembros que sean accesibles externamente,  y no la en las de los privados. Además, si no importa la interoperabilidad entre lenguajes tampoco es necesario seguirlas. A continuación se listan algunas de reglas significativas del CLS:
Los tipos de datos básicos admitidos son bool, char, byte, short, int, long, float, double, string y object.  Nótese pues que no todos los lenguajes tienen porqué admitir los tipos básicos enteros sin signo o el tipo decimal como lo hace C#.
Las tablas han de tener una o más dimensiones, y el número de dimensiones de cada tabla ha de ser fijo. Además, han de indexarse empezando a contar desde 0.
Se pueden definir tipos abstractos y tipos sellados. Los tipos sellados no pueden tener miembros abstractos.
Las excepciones han de derivar de System.Exception, los delegados de System.Delegate, las enumeraciones de System.Enum, y los tipos por valor que no sean enumeraciones deSystem.ValueType.

miércoles, 3 de junio de 2015

Diagramas de flujo

Definición

Un diagrama de flujo es una forma gráfica de representar ideas y conceptos relacionados. A menudo, se utiliza para especificar algoritmos de manera gráfica. S
e utilizan para esquematizar conceptos vinculados a la programación, la economía, los procesos técnicos y/o tecnológicos, la psicología, la educación y casi cualquier temática de análisis.

Componentes
  • Terminador: Un terminador es representado por un pequeño rectángulo con esquinas curvas. Los terminadores aparecen al inicio y al final de los diagramas de flujo. El terminador final aparece solamente una vez en un diagrama.
  • Procesos: Un proceso es representado por un rectángulo. Éste se refiere a una acción en un proceso de negocios y debe describirse de forma clara y concisa. Un proceso puede ser descrito usando una frase única del tipo verbo-sustantivo, por ejemplo "Ordenar material de oficina". Este mismo nivel de detalle debe mantenerse en los procesos de un diagrama de flujo.
  • Subprocesos: Un subproceso está representado por un rectángulo con líneas dobles en cada lado. Un subproceso es un proceso importante que puede descomponerse en procesos más simples que pueden desarrollarse en otro diagrama de flujo.
  • Decisión: Una decisión está representada por un diamante. Un proceso que puede responder a una decisión de "sí" o "no" requiere un cuadro de decisión.
  • Conector: Un conector está representado por un pequeño círculo o un cuadro conector y se etiqueta usando letras. Un diagrama de flujo escrito en una sola página es más claro que un diagrama en varias páginas. Un conector asegura que los procesos estén conectados de forma lógica y correcta en varias páginas.
  • Líneas de flecha: Las líneas de flecha dibujadas en una dirección, de preferencia de arriba hacia abajo, mantienen la claridad de un diagrama de flujo. Evita líneas de flecha que se ciclen debido a que esto puede indicar redundancia en el proceso de negocios. Si los ciclos son necesarios extiende las líneas de flecha hacia arriba y a la izquierda para mayor claridad.

Ejemplo


Dev C++

Definición 

Dev C++ es un compilador y entorno de desarrollo para C/C++

Consiste en un editor de múltiples ventanas integrado con un compilador que nos permitirá una compilación, un enlace y una ejecución de aplicaciones rápida y de fácil uso.


Estructura de un programa

Para mostrar como se ve un programa en Dev C++ vamos a hacer un programa que me imprima los números primos del 1 al 20. 






Librerías

Las librerías son un cierto tipo de archivos que podemos importar o incluir en un nuevo programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables. Ejemplos: 

  • List: Parte de la STL relativa a los contenedores tipo list, lista doblemente enlazada.
  • Math: contiene los prototipos de las funciones, otras definiciones para el uso y manupulacion de funciones matemáticas.
  • Memory: utilidades relativas a la gestion de memoria incluyendo asignadores y punteros inteligentes.
  • New: Manejo de memoria dinámica
  • Numeric: Parte de la libreria numerica de la STL relativa a operaciones numéricas.
  • Ostream: Algoritmos estándar para los flujos de salida
  • Queve: Parte de la STL relativa a contenedores tipo queve (Colas de Objeto)
  • Studio: Contiene los prototipos de las funciones macros, para para utilidades de uso general.
  • String: Parte de la STL relativa a contenedores tipo string, una generalización de las cadenas alfanuméricas para albergar cadenas de   objetos, pues eliminan muchas de las dificultades que generan las char.
  • Typcinto: Mecanismo de identificación de tipo en tiempo de ejecución.
  • Vector: Parte de la STL relativa a los contenedores tipo vector, una generación de las matrices unidimensionales.

Palabras Reservadas

Las palabras reservadas son identificadores predefinidos que tienen significados especiales y no pueden usarse como identificadores creados por el usuario en los programas.

Ejemplo:

auto const double float int short struct unsigned break continue else for long signed switch void case default enum goto register sizeof typedef volatile char do extern if return static union while


Estructuras en programación

Estructuras

Las estructuras en la programación son formas de hacer el código que escribimos mas eficiente y confiable, es decir, que nuestro código  tenga organización y sea un poco mas entendible. Lo que representa lo anterior dicho se puede ver mas claro en la siguiente explicación:


  • Estructuras selectivas: La estructura lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. Las utilizamos cuando en  el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.
    • Sí simple: El sí simple es una palabra reservada del lenguaje que me compara dos o mas expresiones, variables, números, entre otros, y si la comparación se cumple ejecuta el código que estará dentro de el sí.
    • Sí compuesto: El sí compuesto es, a diferencia del sí simple, que al final de si se le agregan o mas sí o un sí no, es decir, si la primer condición no se cumple se siguen evaluando condiciones o en caso de que no se ejecute una acción. 


  • Estructuras cíclicas: Las estructuras cíclicas son operaciones que se deben ejecutar un número repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama ciclo.
    • Mientras: El bucle “mientras” es una estructura que se repite mientras una condición sea verdadera. La condición, en forma de expresión lógica, se escribe en la cabecera del bucle, y a continuación aparecen las acciones que se repiten






    • Para: La estructura para esta disponible en todos los lenguajes de programación y lo que hace es repetir una instrucción un numero especifico y determinado de veces, se utiliza mas que todo para la manipulación de vectores.

Fundamentos de la Programación

Fundamentos de la Programación


En esta entrada vamos a ver algunos de los conceptos fundamentales en el desarrollo de software, estos términos se utilizan demasiado y es necesario conocerlos y entenderlos a fondo:

  • Que son los datos... Los datos son expresiones del contexto que describen características de algo, para luego ser utilizados en un algoritmo.
  • Que es información... La información esta formada a base de datos ya ordenados y que expresan un mensaje claro acerca de un tema. La información sirve para tomar decisiones y resolver problemas.
  • Que es software... Software en español, es un extranjerismo, que hace referencia a la parte lógica de un dispositivo u ordenador, el software es un conjunto de tareas y algoritmos para ejecutar algo determinado en un ordenador.
  • Que es un programa... Un programa se puede tomar parte del significado de software y puede resolver un problema especifico de un nicho. Los tipos de programas pueden ser:

    • Programas de contabilidad
    • Programas educativos
    • Programas de juegos
    • Programas de producción
    • Programas de publicación
    • Programas comerciales

  • Que es un lenguaje de programación... Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Ejemplos de ello puede ser:
    • C++
    • PHP
    • HTML
    • PYTHON
    • RUBY
    • JAVASCRIPT



  •  Que es un entorno de programación... Es un programa en donde podemos editar e interpretar, o compilar,  uno o mas lenguajes de programación. Es como un editor de texto pero mas especializado. Ejemplos: 
    • Sublime Text
    • EMACS
    • Visual Studio
    • Vim
    • Eclipse





  • Que es una plataforma... Una plataforma es un lugar donde podemos procesar, gestionar y manipular todo lo que hacemos en un ordenador. Ejemplos:
    • Windows
    • OS X
    • Android
    • iOS
    • Linux

Presentación

Este soy yo

Mi nombre es Juan Sebastian Henao Parra, tengo 14 años, estudio en el Instituto Técnico San Rafael, me encuentro en el taller de Programación de Software, el cual esta articulado con el SENA, ya que me gusta mucho programar y crear cosas nuevas e innovadoras.