miércoles, 18 de enero de 2012

NO A LA LEY SOPA (Stop Online Pirancy ACT) (INTERNET BLACKOUT)

Al parecer el capitalismo, el deseo insaciable por la acumulación de riqueza hasta el infinito exterminará definitivamente con los menos pudientes hasta quedar probablemente dos o tres personas en el mundo, ahora en el tapete tenemos la maldita ley SOPA (Stop Online Pirancy ACT), de la cual su principal autor de la iniciativa en la Cámara de Representantes es el legislador republicano Lamar Smith y, la misma busca supuestamente combatir la piratería en la red. Esta misma ley de llevarse a cabo de la forma que pretenden hacerlo, violaría otras leyes como la de libertad de expresión entre otras leyes.

El grupito de millonarios de Hollywood y las compañías discográficas que refuerzan la aprobación de esta maldita ley simplemente por querer hacerse mas millonarios de lo que son, aparentemente no entienden el gran Armagedón que le provocarían a la internet, tal como dice Wikipedia: imagina un mundo sin conocimiento libre, donde nada se pueda compartir por temor al maldito copyright, las redes sociales automáticamente quebrarían como Facebook, twitter y las demás, así como también los buscadores mas grandes del mundo: Google, Yahoo, entre otros;
casi todas las empresas grandes y pequeñas de la internet se extinguirían en poco tiempo.

Yo me pregunto, dónde quedaría la esencia de la internet? Para nosotros será como volver a la edad de piedra literalmente hablando.

Por suerte tenemos muchos a favor que piensan como yo y quizás como tu, cabe mencionarlos por la majestuosidad con la que han manejado el tema: Google, Yahoo, Twitter, eBay, Wikipedia, Fundación Mozilla, Wordpress, entre otros no menos importantes pero que no menciono porque son demasiados.

Para su conocimiento la iniciativa fue propuesta por la web sopastrike.com, liderada por la organización sin ánimo de lucro Fight for the Future a la cual se han agregado todas las que menciono en el párrafo anterior.

No me imagino el blackout de la internet por control una maldita supuesta piratería, pero a ese congreso estadounidense que no me hable a mí de maldita piratería porque todos sabemos quienes han sido los más piratas del mundo y hasta son primera potencia del planeta precisamente por ser los mejores piratas del mundo. Algunos NO ignoramos la historia como ellos creen que la ignoramos. Les hare saber a los lectores de este articulo algunas cositas, maniobritas de piratas (para mi también de doble moral) que ellos han hecho y que están ahí en la historia escritas para todo aquel que lo quiera confirmar, también se lo recodare a los que ya lo
saben:

El Tratado de Guadalupe Hidalgo en 1848, una de las jodidas más grandes de la historia hecha por ellos a Méjico, donde México cedería más de la mitad de su territorio, que comprende la totalidad de lo que hoy son los estados de California, Nevada, Utah, Nuevo México y Texas, y partes de Arizona, Colorado, Wyoming, Kansas y Oklahoma. Además, México renunciaría a todo reclamo sobre Texas y, la frontera internacional se establecería en el Río Bravo, todo esto por nada más y nada menos que 15 millones de dólares…
Hacen algo parecido también con Alaska, se la compran a Rusia por 7 millones y pico (tres cheles tambien.)

En el caso de la Florida, también hacen algo parecido con España, se la quitaron por “tres cheles” reclamándola como parte de la compra de la Luisiana al cónsul francés de ese momento Napoleón Bonaperte por 23 millones y pico (tres cheles también).

Le hicieron otro truco a Las Filipinas Al final de la Guerra Hispano-Estadounidense, donde ellos
decidieron tomar el control alegando la validez el Tratado de París y aduciendo que "los filipinos eran incapaces de auto gobernarse" y necesitaban "ser cristianizados", a pesar de haber sido un país católico durante varios siglos.

Ni hablar de lo que hicieron con Hawaii, tampoco hablar de lo que hicieron con Guantanamo; entonces, de qué piratería esta hablando ese congreso o mas bien ese grupito que le quiere dar pa’ lante’ a esa fkn ley?

Tampoco tocare el tema de la política antinmigrante de ellos la cual para mi también es de doble moral: inmigrantes en ese territorio sacando inmigrantes…!!! :@

Hay votaciones de usuarios para hacer llegar la voz a ese congreso de quienes no estamos de acuerdo con la censura de la web a través de esta ley prevista para discutir el próximo 24 de enero.

E aquí algunos enlaces relacionados:
- Web sopastrike.com (http://sopastrike.com/).
- Protesta Google (https://www.google.com/landing/takeaction/).
- Protesta Wikipedia (http://en.wikipedia.org/wiki/Main_Page).
- Protesta Fundación Mozilla (http://blog.mozilla.com/blog/2012/01/17/mozilla-to-join-tomorrows-virtual-protests-of-pipasopa/).
- Protesta Wordpress (http://wordpress.org/).

NO A LA LEY SOPA.

lunes, 19 de abril de 2010

Practica Estructura de Datos (Arreglos)

Ingenieros, aqui les he dejo un ejemplo que hace poco hice, el mismo tiene el principio del programa que ustedes deben de hacer, si lo leen y estudian bien, se daran cuenta de que las demas opciones seran casi las mismas. Deben de saber que por el hecho de que ho se lo haya hecho quiere decir que ninguno de ustedes deberan llevar uno igual a este. La idea es que tengan luz de como deben de trabajar.

using System;
using System.Collections.Generic;
using System.Text;

namespace RegistroCalificaciones
{
class Program
{
static void Main(string[] args)
{
//Entonces en su metodo static Main pueden tener sus operaciones de la siguiente forma

string[,] mat1; // declaracion del arreglo

int f1, c1; // El número de filas y columnas del arreglo

//Aqui Llaman al menu y recojen la opción seleccionada
byte opcion;
do
{
opcion = menu();
} while (opcion >= 5);

switch (opcion)
{
case 1: // Registro de estudiantes

// Leemos el número de filas y columnas de la matriz
Console.WriteLine("Introduzca el número de filas de la matriz");
f1 = int.Parse(Console.ReadLine());
Console.WriteLine("Introduzca el número de columnas de la matriz");
c1 = int.Parse(Console.ReadLine());

// Pedimos los datos de filas y columnas
Console.WriteLine("Introduzca los datos de los estudiantes: Nombres y Notas");
mat1 = leer(f1, c1);
Console.Clear();
Main(null);

//Aqui si quieren imprimen en pantalla los datos que introdueron en el arreglo
/*Para mas utilidad en vez de imprimir la matriz directamente crean un metodo

que se llame imprimir y que el mismo espere una matriz*/

break;



case 2: // Segunda Opcion
Console.WriteLine("Metan mano de aqui pa lante, ya lo ma fuerte esta hecho");
break;



//Tercera opcion
default: //Aqui iria cualquier otro desnivel que quieran controlar
break;
}
Console.ReadKey();
}

// Mas o menos pueden hacer un menu que tenga vida pripia, es decir un metodo, asi:
public static byte menu()
{
try {
byte opcion;
Console.SetCursorPosition(10,1);
Console.WriteLine("Sistema de Registro de Notas");
Console.SetCursorPosition(0,3);
Console.WriteLine("Elija la operación que quiere hacer:");
Console.WriteLine("1 - Registrar Estudiantes");
Console.WriteLine("2 - Registrar Notas");
Console.WriteLine("3 - Imprimir Notas con Promedio");

opcion = byte.Parse (Console.ReadLine());

if (opcion >=1 && opcion <=3) {
Console.Clear();
return opcion;
}
else {
Console.Clear();
return 5;
}
}

catch { //En caso de error
Console.Clear();
return 5;
}
}

// Función que lee los datos de la matriz
public static string[,] leer(int filas, int columnas)
{
string[,] ret = new string[filas, columnas];
for (int fila = 0; fila < filas; fila++)
{
for (int columna = 0; columna < columnas; columna++)
{
ret[fila, columna] = Console.ReadLine();
}
}
return ret;
}
}
}

viernes, 9 de abril de 2010

Nuevo Curso de Programación en C#

Curso : Programando con C#
Cupos : 20 cupos
Inicio : 17-04-2010
Horario : Sábados de 03:00 p.m. a 6:00 p.m.
Duración : 30 horas aproximadamente.

Más información:
Poyson1@hotmail.com
809-758-9834
aybarpedro@hotmail.com
809-607-9069
809-288-2637


Instructores:
Jonathan Núñez Y Pedro Antonio Aybar Asencio
Ingenieros en Informática
Especialistas en Desarrollo de Aplicaciones con Microsoft Visual Studio.Net
Consultores en Tecnologías de la Información

Objetivos
• Proporcionar un alto nivel de conocimientos del lenguaje C#.
• Dotar de herramientas eficaces para la solución de problemas apoyados en las características del lenguaje.
• Desarrollar las destrezas del participante en el afinamiento de procesos.

Descripción
• El curso está orientado para estudiantes y/o profesionales en el área de informática (Licenciatura o Ingeniería), donde se enfatizará en el diseño de patrones de Programación Orientada a Objetos que permitan mejorar el estilo de desarrollo y conocimientos en esta tecnología de cada participante.

Requisitos
• Manejar conceptos de POO.
• Logica de Progrmacion

Recomendablemente cada estudiante debe asistir a las clases con:
• Portátil
• Visual Studio 2005 o Visual C# Express 2005 (o superior) 


Temario

CAPITULO 1. INTRODUCCION AL MUNDO .NET

UNIDAD I. FUNDAMENTOS DE PROGRAMACIÓN
1.1 Tipos de datos primitivos
1.2 Estructuras básicas de control
1.3 Procedimientos y funciones
1.4 Visibilidad de variables
1.5 Bibliotecas
1.6 Arreglos
1.7 El estilo de programación
1.8 .NET Framework (CLR, CLS, CTS)

UNIDAD II. ABSTRACCIÓN DE DATOS
2.1 Clases y objetos
2.2 Modificadores de acceso
2.3 UML
2.4 Paradigma orientado a objetos

UNIDAD III. INTRODUCCIÓN A LA PROGRAMACIÓN CON C#
3.1 Sintaxis de C#
3.2 Tipos de datos
3.3 Alcance de miembros
3.4 Declaración de variables
3.5 Operadores
3.6 Sentencias
3.7 Métodos
3.8 Constructores
3.9 Sobrecarga de métodos
3.10 Métodos estáticos
3.11 Propiedades
3.14 Herencia
3.15 Namespaces
3.16 Control de excepciones


UNIDAD IV. DESRROLLO DE APLICACIONES CON MS VISUAL STUDIO.NET
4.1 Aplicaciones de Consola
4.1.1 Generalidades
4.2 Aplicaciones de Escritorio (Windows Form)
4.2.1 Generalidades
4.2.2 El Diseñador de Formularios
4.2.3 Controles de Windows
4.2.4 Controles Contenedores
4.2.5 Menú
4.2.6 Anchor y Docking
4.2.7 Controles Extender Providers
4.2.8 Colecciones


CAPITULO 2. PROGRAMANDO OPERACIONES DESCONECTADAS CON C#

UNIDAD I. ADO.NET
1.1 Generalidades
1.2 Arquitectura
1.3 Data Providers
1.4 Ejecución de comandos en una base de datos

UNIDAD II. DESARROLLO DE UNA APLICACIÓN DE ESCRITORIO
2.1 Desarrollo en Capas
2.2 Diseño de la Capa de Acceso a Datos
2.3 Diseño de la Capa de Negocios
2.4 Diseño de la Capa de Presentación

viernes, 12 de marzo de 2010

Colecciones - List, ArrayList

Las colecciones de clases de C# son un conjunto de clases diseñadas específicamente para agrupar objetos y llevar a cabo tareas con ellos.

Tanto la list‹T› como la ArrayList y otras clases de la Collections tienen propiedades muy similares a los arrays de C# (para más detalles sobre estos busquen nueva el tema Matrices y confirmen). Una ventaja fundamental de estas clases sobre los arrays es que puedan crecer y reducir el número de objetos almacenados.

La clase list‹T› esta contenida en System.Collections.Generic, mientras que la clase ArrayList figura en el System.Collections.

La sintaxis para crear una colección list‹T› es la siguiente:
Listtipo› nombre = new Listtipo›();

ArrayList es un objeto creado de una manera similar, aunque sin el argumento de tipo:
ArrayList nombre = new ArrayList ();

Con esta sintaxis ahora podemos crear una list‹T› denominada listacolores:

using System;
using System.Collections.Generic;

public class Lists
{
static void Main()
{
Liststring› listacolores = new Liststring›();
}
}

Añadir artículos a las listas
Una vez que una lista se ha creado hay una serie de métodos que pueden ser llamados a realizar tareas en la lista. En este caso para agrear elementos a la lista de objetos se utiliza el método Add(). Ejemplo:

Liststring› ListaColores = new Liststring›();

ListaColores.Add ("Azul");
ListaColores.Add ("Rojo");
ListaColores.Add ("Verde");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");



Acceso a los elementos
A los elementos individuales en una lista se puede acceder mediante el índice del valor de la partida (teniendo en cuenta que el primer punto del índice es 0, el segundo índice 1 y así sucesivamente). El valor del índice se encuentra entre corchetes tras el nombre de la lista. Por ejemplo, para acceder al segundo punto del objeto ListaColores:

Console.WriteLine (ListaColores[1]);

Un elemento de la lista puede cambiar su valor de manera similar usando el índice combinado con el operador de asignación. Por ejemplo, para cambiar el color de verde a mamey:

ListaColores[2] = "mamey";

Todos los elementos de una lista se puede acceder mediante un bucle foreach. Por ejemplo:

foreach (string color in ListaColores)
{
Console.WriteLine ( color );
}


Cuando compilado y ejecutado, el código de salida anterior mostrara todos los colores.


Inserción de artículos en una lista
Anteriormente se utilizó el método Add() para añadir elementos a una lista. El método Add(), sin embargo, sólo añade elementos al final de una lista. A veces es necesario añadir un nuevo tema en una ubicación específica en una lista. Insert() es el método para este fin específico. Insert() recibe dos argumentos, un entero que indica el índice de localización de la inserción y el tema que se incluirá en ese lugar. Por ejemplo, para insertar un elemento en la posición 2 de la lista seria:

ListaColores.Insert(2, "Blanco");
Ordenando Listas
No hay manera de decirle a C# que ordene automáticamente una lista de artículos despues de añadir. Si los elementos de una lista deben estar siempre ordenados se debe llamar al metodo Sort una vez se añaden nuevos elementos:

ListaColores.Sort();


Búsqueda de elementos en una lista

Se proveen un buen número de métodos con las clases listas y la ArrayList. El método más básico es el Contains(), en el cual cuando se pide a un objeto ArrayList o List devuelve true si el tema se encuentra en la lista, o false si no se encuentra.

El IndexOf() devuelve el valor de un índice de un elemento de la lista. Por ejemplo, el código siguiente muestra el valor de salida de 2, que es el índice de la posición de "Amarillo" en la cadena:

Liststring› ListaColores = new Liststring›();

ListaColores.Add ("Red");
ListaColores.Add ("Green");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");
ListaColores.Add ("Mamey");

Console.WriteLine(ListaColores.IndexOf("Amarillo"));

Si el elemento no se encuentra en la lista devuelve -1.

Esta técnica podría utilizarse para reemplazar un valor con otro. Por ejemplo, sin conocer de antemano el valor del índice del "Amarillo" cadena podemos cambiar a "Negro":

ListaColores[ListaColores.IndexOf("Amarillo")] = "Negro";

El LastIndexOf() método devuelve el valor del índice del último elemento de la lista para que coincida con el punto especificado. Esto es particularmente útil cuando la lista contiene elementos duplicados.

Obtener informacion de una lista

Hay dos miembros de la clase que son útiles para obtener información acerca de una lista de C # o colección de objetos ArrayList. La propiedad Capacity puede ser utilizada para identificar el número de artículos que puede almacenar una colección sin tener que cambiar el tamaño.

El propiedad Count, por otra parte, identifica cuantos artículos se encuentran actualmente almacenados en la lista. Por razones obvias, Capacity sera siempre superior a Count.

En los casos en que existe una gran diferencia entre el Count y Capacity los elementos pueden ser borrados con el método TrimExcess().

Borrado de elementos

Todos los elementos de una lista podrán ser borrados mediante el método Clear():

ListaColores.Clear();

Clear() elimina los elementos de la lista y establece la propiedad Count a cero. La propiedad Capacity, sin embargo, sigue siendo la misma. Para eliminar la Capacity despues de el método Clear() hay que llamar a TrimExcess().

jueves, 11 de marzo de 2010

Matrices

En las matrices de C#, los índices empiezan en cero. Las matrices de C# funcionan de forma similar a como lo hacen en la mayoría de los lenguajes populares; existen, sin embargo, algunas diferencias que se deben conocer.
Cuando se declara una matriz, los corchetes ([]) deben ir después del tipo, no después del identificador. Colocar los corchetes después del identificador no es sintácticamente válido en C#.


int[] table; // no int table[];Otro detalle es que el tamaño de la matriz no forma parte de su tipo. Esto permite declarar una matriz y asignarle cualquier matriz de objetos int, independientemente de la longitud de la matriz.


int[] numeros; // declare numeros de tipo array int de cualquier tamañonumeros = new int[10]; // numeros es un array de 10 elementosnumeros = new int[20]; // ahora es un array de 20 elementos
Declarar matricesC# admite matrices de una dimensión, matrices multidimensionales (matrices rectangulares) y matrices de matrices (matrices escalonadas). El siguiente ejemplo muestra cómo declarar diferentes tipos de matrices:

Matrices unidimensionales:

int[] numeros;


Matrices multidimensionales:

string[,] nombres;


Matrices de matrices (escalonadas):

byte[][] notas;


La declaración de matrices (como se muestra arriba) no crea realmente las matrices. En C#, las matrices son objetos cuyas instancias deben crearse. Los siguientes ejemplos muestran cómo crear matrices:

Matrices unidimensionales:

int[] numeros = new int[5];


Matrices multidimensionales:

string[,] nombres = new string[5,4];


Matrices de matrices (escalonadas):

byte[][] notas = new byte[5][];
for (int x = 0; x < notas.Length; x++)
{
notas[x] = new byte[4];
}



También se pueden utilizar matrices más grandes. Por ejemplo, se puede utilizar una matriz rectangular de tres dimensiones:


int[,,] buttons = new int[4,5,3];


Incluso, se pueden combinar matrices rectangulares y escalonadas. Por ejemplo, el siguiente código declara una matriz unidimensional que contiene matrices tridimensionales de matrices bidimensionales de tipo int:

int[][,,][,] numeros;


Ejemplo
El siguiente es un programa completo en C# que declara y crea instancias de las matrices comentadas anteriormente.


// arrays.csusing System;
class DeclararArraySimples
{
public static void Main()
{
// array de una dimensionint[] numeros = new int[5];

// Array Multidimensional
string[,] nombres = new string[5,4];

// Array-de-arrays (matriz escalonada)
byte[][] notas = new byte[5][];

// Crear la matriz escalonadafor (int i = 0; i < notas.Length; i++)
{
notas[i] = new byte[i+3];
}

// Imprimir la longitud por cada filafor (int i = 0; i < notas.Length; i++)
{
Console.WriteLine("Longitud de la fila {0} es {1}", i, notas[i].Length);
}
}
}

Resultado

Longitud de la fila 0 es 3
Longitud de la fila 1 es 4
Longitud de la fila 2 es 5
Longitud de la fila 3 es 6
Longitud de la fila 4 es 7


Inicializar matricesC# proporciona métodos simples y sencillos para inicializar matrices en el momento de la declaración encerrando los valores iniciales entre llaves ({}). Los siguientes ejemplos muestran diferentes modos de inicializar diferentes tipos de matrices.
Nota Si no inicializa una matriz en el momento de la declaración, sus miembros se inicializan automáticamente con el valor inicial predeterminado para el tipo de matriz. Además, si declara la matriz como campo de un tipo, se establecerá con el valor predeterminado null cuando cree la instancia del tipo.
Matrices unidimensionales

int[] numeros = new int[5] {1, 2, 3, 4, 5};
string[] nombres = new string[3] {"John", "Fer", "Juan"};
El tamaño de la matriz se puede omitir, como se indica a continuación:


int[] numeros = new int[] {1, 2, 3, 4, 5};
string[] nombres = new string[] {"John", "Fer", "Juan"};
También se puede omitir el operador new si se utiliza un inicializador como el siguiente:

int[] numeros = {1, 2, 3, 4, 5};
string[] nombres = {"John", "Fer", "Juan"};
Matrices multidimensionales

int[,] numeros = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] hermanos = new string[2, 2] { {"John","Willy"}, {"Fer","Juan"} };
El tamaño de la matriz se puede omitir, como se indica a continuación:

int[,] numeros = new int[,] { {1, 2}, {3, 4}, {5, 6} };
string[,] hermanos = new string[,] { {"John","Willy"}, {"Fer","Juan"} };

También se puede omitir el operador new si se utiliza un inicializador como el siguiente:

int[,] numeros = { {1, 2}, {3, 4}, {5, 6} };
string[,] hermanos = { {"John","Willy"}, {"Fer","Juan"} };
Matriz escalonada (matriz de matrices)
Las matrices escalonadas se pueden inicializar como en el siguiente ejemplo:

int[][] numeros = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

El tamaño de la primera matriz se puede omitir, como se indica a continuación:


int[][] numeros = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
O tambien


int[][] numeros = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

Observe que no existe sintaxis de inicialización para los elementos de una matriz escalonada.
Acceso a miembros de matrices
El acceso a los miembros de una matriz es sencillo. Por ejemplo, el siguiente código crea una matriz denominada numeros y, a continuación, asigna un 5 al quinto elemento de la matriz:


int[] numeros = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
numeros[4] = 5;
El siguiente código declara una matriz multidimensional y asigna el valor 5 al miembro ubicado en [1, 1]:


int[,] numeros = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };
numeros[1, 1] = 5;
La siguiente es una declaración de una matriz escalonada de una sola dimensión que contiene dos elementos. El primer elemento es una matriz de dos enteros, mientras que el segundo es una matriz de tres enteros:


int[][] numeros = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5} };

La siguiente instrucción asigna 58 al primer elemento de la primera matriz y 667 al segundo elemento de la segunda matriz:


numeros[0][0] = 58;
numeros[1][1] = 667;
Las matrices son objetos
En C#, las matrices son realmente objetos. System.Array es el tipo base abstracto de todos los tipos de matrices. Las propiedades y otros miembros de la clase System.Array se pueden utilizar cuando sea necesario. Un ejemplo de esto sería utilizar la propiedad Length para obtener la longitud de una matriz. El siguiente código asigna la longitud de la matriz numeros, que es 5, a una variable denominada LogitudDeNumeros:


int[] numeros = {1, 2, 3, 4, 5};
int LongitudDeNumeros = numeros.Length;

La clase System.Array proporciona muchos otros métodos y propiedades útiles, como métodos para ordenar, buscar y copiar matrices.
Usar foreach con matrices
C# dispone de la instrucción foreach. Esta instrucción proporciona un modo simple y limpio de iterar en los elementos de una matriz. Por ejemplo, el siguiente código crea una matriz denominada numeros y la recorre mediante la instrucción foreach:


int[] numeros = {4, 5, 6, 1, 2, 3, -2, -1, 0};
foreach (int i in numeros)
{
System.Console.WriteLine(i);
}

Con matrices multidimensionales, se puede utilizar el mismo método para recorrer los elementos, por ejemplo:


int[,] numeros = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}};
foreach(int i in numeros)
{
Console.Write("{0} ", i);
}
El resultado de este ejemplo es:
9 99 3 33 5 55