C#

Manejo de Base de datos [SQL] con C-Sharp [C#]


Hola, buenas tardes! como van? Espero que con ánimos de aprender, pues hoy vamos a manejar transacciones a una base de datos usando SQL Server 2008 y C# bajo el poder del IDE de Visual Studio 2010, principalmente se detallará como comenzar con el proyecto, al final de este post podrán descargar las fuentes!
En este ejemplo emplearemos una base de datos [MusicaBD] con una sola tabla[Cancion], trabajaremos a 3 capas: Acceso a datos, Reglas de Negocio, conocido también como la capa lógica y finalmente nuestra Presentación donde van las interfaces, veremos sentencias básicas de sql: select, insert, update, delete, desde la funcionalidad de este ejemplo son: buscar, registrar, actualizar y eliminar;
Seguir leyendo …

Conexion CSharp [C#] a MySQL

En nuestra estimada carrera que llevamos en la UPAO tenemos el curso de Programación de Aplicaciones de Gestión, más conocido como P.A.G en el cual se realizan proyectos muy interesante con Visual Studio.net [algunos VB, otros C#] donde al final dichos proyectos, deben estar implementados con conexión a base de datos y manipulación de éstos, en aquella ocasión nos enseñaron a utilizar SQL Server 2008. En la carrera, comenzamos a programar con Java, lenguaje que nos acompaña durante los 3 primeros ciclos, en 4to ciclo aprendemos Base de datos con Oracle. Me gustaría hacer un paréntesis, y mostrar que también es posible utilizar MySQL vinculado con el poder de C# en Visual Studio.net, así que sin dar más vueltas veamos como hay que hacer!

Seguir leyendo …

Crear Hash MD5, SHA en C Sharp


Los Hash son utilizados para aumentar el nivel de seguridad en los proyectos informáticos que se tenga, si antes no habías programado empleando algoritmos de encriptación hoy aprenderás! MD5, SHA1, SHA256, SHA384, SHA512.
Cabe mencionar que éstos algoritmos de encriptación “sólo son de ida” pues al obtener un Hash, no puedes conocer de dónde salió, motivo por el cual se aplican a los campos de contraseñas en las bases de datos. En el siguiente código, podemos ver cómo poco a poco se puede optimizar la forma de obtener el HASH deseado.
Seguir leyendo …

Programando en C Sharp – VI

Para concluir con el bloque de programación básica en C#, les he compartido un “mini proyecto” hecho en Visual Studio 2010; se emplea un objeto Persona con 3 atributos: dni, nombre y edad, los cuales están validados respectivamente, se emplea una lista “List personas = new List ();” para almacenar los datos, se cuenta con un menú de presentación de opciones para que el usuario seleccione, métodos Set y Get, y los métodos de agregar, modificar, buscar, eliminar, reportar [los clásicos de toda la vida]; traté en lo posible comentar el código, espero puedan entenderlo, y sin más rodeos, veamos el código:
Seguir leyendo …

Algoritmo en C Sharp

Tiempo atrás llevé el curso de Sistemas Operativos, donde aprendí a codificar scripts ubunteros en aquellas clases la profesora nos enseñaba programación básica en bash, de todos los ejercicios que dejó, uno de ellos no pude resolver a tiempo, sin embargo encontré la solución al día siguiente mientras estaba conversando con una de mis amigas, pues gracias a las palabras que ella me dijo: “Piensa en qué necesitas, luego ves cómo haces“, las ideas llegaron a mi mente de una manera alucinante, recordé la clase de simulación de algoritmos del curso de matemática discreta, con cuaderno abierto y lapicero en mano, jugué con algunas variables, pensé cómo resolver el ejercicio desde otro punto de vista y listo!!!  Veamos el resultado del análisis del enunciado…
Seguir leyendo …

Programando en C Sharp – 05


Un array [arreglos/matrices] es una estructura de datos que contiene diversas variables del mismo tipo que comparten un nombre en común, a los cuales se puede acceder por la posición [en referencia a un índice] que ocupa cada uno de ellos en la matriz, ésta puede ser de una ó múltiples dimensiones, tal y como se ve en la imagen: a la izquierda tenemos una matriz 4×4 [recordemos un poco de matemática básica] lo que nos da 16 elementos contando desde el 0 hasta el 15, y  la derecha la representación en memoria de la computadora; para declarar un arreglo en C# se tiene la siguiente sintaxis:


//Declaración de un array
string[] nombres;
//Instanciación del arreglo
nombres = new string[3];

// Declaración de un arreglo simple
int[] array1 = new int[5];

// Declaración y definición de elementos del arreglo
int[] array2 = new int[] { 1, 3, 5, 7, 9 };

// Sintaxis alternativa
int[] array3 = { 1, 2, 3, 4, 5, 6 };

// Arreglo de 2 dimensiones
int[,] multiDimensionalArray1 = new int[2, 3];

// Declaramos y definimos los elementos
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

En esta ocasión veremos arreglos unidimensionales, nos acompaña un ejemplo donde se visualiza los métodos de agregar, modificar, listar, buscar y eliminar elementos de un arreglo, vamos!
Seguir leyendo …

Programando en C Sharp – 04

Saludos lectores, hoy vamos aprendiendo un poco más de programación nivel básico; revisaremos las estructura repetitiva “while” y “do while“; ¿Cuál es la diferencia? -El do while se ejecuta por lo menos una vez el bucle y luego se comprueba la condición, mientras que el while, primero se comprueba la condición y luego si es verdadera se ejecuta el bucle.
Veamos un ejemplo usando la cadena matemática “Fibonacci :Seguir leyendo …

Bibliotecas en C++

Cuando uno empieza a programar, la forma de modularización del nuestro código es bien pobre; es mas!, tanto así que hasta a veces metemos todo en el main. Luego que superamos la fase de meter todo el main, comenzamos a modularizar mediantes funciones, las cuales las ubicamos dentro del mismo archivo. Hasta aquí ya sabemos programar; y pues ya no aparecen los errores en tiempo de compilación, pero nos falta algo aun para hacer proyectos mas grandes, ese algo, es aprender a usar y crear bibliotecas o librerías.

En C++ y en algunos otros lenguajes de programación, se pueden crear 2 tipos de bibliotecas: dinámicas y estáticas. En Windows, las primeras toman la extensión *.dll y las segundas *.lib o *.a. En linux cambia la extensión de estas por *.so y *.a, respectivamente. Si quieren saber mas sobre el uso de bibliotecas en linux, pueden pasarse por el site de chuidiang.com (sitio que, cuando empecé a programar, me sacó de muchos apuros).

Ahora, para comprender un poco mas de las bibliotecas hay que comprender un poco como funciona el proceso de hacer un programa en un lenguaje de programación compilado, desde su codificación hasta su ejecución. Repasando un poco de teoría, hay que saber que cuando creamos un fichero fuente, este al compilar crea ficheros objeto con extensión .o u .obj. Haciendo un paréntesis, quisiera decir que cuando comencé en la programación me malacostumbré a que con un boton “Build all” o “Make all”, me tuviera todo el proyecto listo para ejecutar y distribuir. Es por eso, que antes de usar cualquier IDE –creo yo- hay que conocer que sucede al hacer clic sobre estos botones. Como habia dicho lineas atras, al trabajar con un lenguaje compilado, al compilar se crean ficheros objeto y NO ejecutables. Los ejecutables son creados recien por el linker, el cual junta todos los ficheros objeto -que no es mas que codigo de maquina- para poder crear un ejecutable. Si alguna vez han programado en lenguaje ensamblador, se podran dar cuenta que el proceso es parecido, solo que en lugar del compilador, esta el ensamblador(MASM, TASM, NASM, etc.). Como dijo mi profesor del curso de arquitectura de computadoras, ya con los ficheros objeto tenemos una pista para poder comunicar varios lenguajes de programación, pero ese es otro tema. Por ultimo, también está el no menos importante “librarian”, que es el que se encarga de extraer los ficheros objeto de las bibliotecas, para que así el linker pueda crear el fichero ejecutable apropiadamente.

Todo esto es un poco de teoría de los lenguajes de programación, que la verdad es un poco aburrido, A MENOS QUE lo pongamos en practica. Quizás la mayoría de nosotros al querer usar una librería en C++, tenemos que buscar un pequeño tutorial de como instalarlo si estamos usando Dev C++ o si usamos Codeblocks, Visual C++, etc. Pero, como les decía antes, esto va contra mi pensamiento de hacer clic sobre botones que me esconden su funcionalidad. Debido a esto, cogeremos uno de estos IDE, pero NO USAREMOS EL IDE, sino SOLAMENTE EL COMPILADOR CON EL QUE VIENE. En este caso usaremos el Codeblocks, el cual viene con el G++(compilador de C++ de GNU) y además usaremos el API OpenGL y GLUT.

El API OPENGL ya viene incluido en los últimos sistemas operativos; y como toda api, tiene sus bibliotecas estáticas y dinámicas, solo hay que saber cuales son necesarias. En este caso para nuestro ejemplo necesitamos opengl, glu y glut. Entonces, como estamos en windows debemos buscar las librerías estáticas y dinámicas y los headers con los mismos nombres. Generalmente, las librerías dinámicas llevan el mismo nombre y terminan en 32, si nuestro windows es de 32 bits y las librerías estáticas comienzan con libNOMBREDELALIBRERIA32.a, como mi computadora es de 32 bits, encontré los siguientes archivos:

  • libopengl32.a
  • libglu32.a
  • libglut32.lib

Como OPENGL y GLU ya vienen con el compilador y/o el sistema operativo, no es necesario especificarle al compilador donde están las librerías dinámicas, ni los headers; ya que el compilador al instalarse, siempre setea la variable de entorno PATH y pone ahi las rutas. Si quieren probar usando solo el compilador y el linker, prueben, debería funcionarles normal, solo que habría que indicarle al compilador donde estan los .dll y los headers de opengl y glu.

Para glut, si hay q bajarse la librería completa, es decir: headers, librerias estaticas y dinámicas y luego decirle al compilador donde las puede encontrar para que al momento de linkear, pueda crear el ejecutable sin problemas.

Finalmente, todo esto que he escrito, lo pondremos en practica, como les dije antes, usando el compilador gcc. Para esto, solo hay q saber que parámetros hay q darle al compilador. En este caso sería:

g++ -omain main.c -I”D:\My OPENGL\Ejemplo-BIEN\PruebaOpengl-Notepad” -L”D:\My OPENGL\Ejemplo-BIEN\PruebaOpengl-Notepad” -lopengl32 -lglu32 –lglut32

donde –I indica donde encontrar los headers, –L donde buscar las librerías y –l, es la llamada al linker para que cree el ejecutable incluyendo los ficheros objeto que se encuentran en “opengl32, glu32 y glut32”, los cuales van a ser manipulados por el librarian.

Olvidaba que hay que tener en cuenta que el archivo g++.exe esta en la carpeta /bin de Codeblocks y que para que podamos llamarlo directamente hay que agregar dicha ruta al path, manualmente o en todo caso poner toda la ruta del archivo, ejemplo:

“C:\Archivos de programa\CodeBlocks\MinGW\bin\g++.exe” -omain main.c -I”D:\My OPENGL\Ejemplo-BIEN\PruebaOpengl-Notepad” -L”D:\My OPENGL\Ejemplo-BIEN\PruebaOpengl-Notepad” -lopengl32 -lglu32 –lglut32

Para no aburrirlos mas, pondré un ejemplo de programa de opengl que me pasaron en un minicurso de opengl que lleve en el congreso pasado de la UPAO. Lo principal es que pueden editar este código desde el bloc de notas y compilarlo desde línea de comandos (en este caso use un .bat).

Aquí pueden bajar el ejemplo:

Ejemplo OPENGL con bloc de notas

Hasta otro post =).

Programando en C Sharp – 03

Hola!!! como van estimados lectores? todo bien? pues yo ando con las ganas de programar en C#, motivos? mmm… mejorar y compartir :D En esta ocasión vamos con la selección múltiple, para qué sirve? pues para evitar escribir tantos IFs como sean necesarios, es decir una manera óptima de reducir código fuente, veamos:


namespace Estaciones
{
 class Estaciones
 {
 static void Main(string[] args)
 {
 Console.WriteLine("Determinando la estación del año");
 Console.WriteLine("--------------------------------");
 Console.Write("Ingrese número de día: ");
 byte dia = byte.Parse(Console.ReadLine());
 // byte representa a un número de tamaño relavitamente
 // pequeño como se requiere[0-255], que sea hábito el tener en cuenta
 // los tipos de datos para trabajar pensando en la memoria...

y continuando con el ejemplo: Seguir leyendo …

Programando en C Sharp – 02

Buenos días!!! regreso de unas vacaciones otorgadas por la directiva de iFX, y continuando con el curso de programación en C#, vamos viendo estructuras condicionales simples, y sin más que agregar, aqui está el código:


using System;
namespace RendimientoEscolar
{
 class Promedio
 {
 //Método principal
 static void Main(string[] args)
 {
 Console.WriteLine("Determinando el rendimiento de alumno");
 Console.WriteLine("-----------------------------");
 Console.Write("Ingrese promedio: ");

 // Declaramos la variable: double promedio
 double promedio;
 promedio = double.Parse(Console.ReadLine());
 // La cual es asignada mediante un Console.ReadLine()
 // pero! tiene que ser "parseada" porque ReadLine lee los valores
 // del tipo string, asi que al momento de "parsear" va del siguiente modo:
 // tipo.Parse(Console.ReadLine());
 // tipo -> Int32, Int64, double, long, entre otros
 // cuidado con los valores tipo bool.

 if (promedio < 0 || promedio > 20)
 // Las barras significan "o" lógico.
 Console.WriteLine("Dato erróneo");
 else if (promedio <= 5)
 Console.WriteLine("Échale más ganas, tu puedes!");
 else if (promedio <= 10)
 Console.WriteLine("Venga vamos! puedes ser mejor, fala poco!");
 else if (promedio <= 15)
Console.WriteLine("Vas por buen camino! ");

 // En el siguiente caso, van las llaves porque se emplea 2 lineas
 // de código y el IF sin llaves solo permite una.
 else if (promedio <= 20)
 {
 Console.WriteLine("Bien, seguid adelante!");
 Console.WriteLine("Ahora, comparte lo que sabes");
 }
 // Finalmente el clásico .ReadLine() para detener la aplicación
 // y apreciar sus resultados.
 Console.ReadLine();
 }
 }
}

Saludos!