Wednesday, July 20, 2011

Switch, Variable Global y Windows Forms

Programa ejercicio 8
Este programa va en Form1.cs
Ocupa un botón llamado button1 y una etiqueta llamada Etiqueta1


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ejercicio8
{
public partial class Form1 : Form
{
int estado1 = 0;
public Form1()
{
InitializeComponent();
}

private void Boton1_Click(object sender, EventArgs e)
{
estado1++;
switch (estado1)
{
case 1: { Etiqueta1.Text="EXCELENTE";break;}
case 2: { Etiqueta1.Text="MEJORANDO";break;}
case 3: { Etiqueta1.Text="FELICIDADES";break;}
default: { estado1 = 1; break; }

}
}


}
}

Tuesday, July 19, 2011

Variables Globales

Uso de variables globales.

Las variables globales existen para todos las funciones dentro de una clase, y su valor se preserva entre cada llamada. Se crean al hacer una instancia del objeto y se destruyen hasta que se destruye el objeto.

Ejemplo :

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

namespace Ejercicio7
{

class Program
{
static int global1;
const double PI=3.141592;

static void Main(string[] args)
{

global1 = 20;
CerrarV(10);
Console.WriteLine(global1);
Console.WriteLine("Presione enter para terminar.");
Console.ReadLine();
}

static bool CerrarV(int x)
{
Console.WriteLine(global1);
global1 += 2;
return true;
}
}
}


El programa imprime

20
22


Donde 20 es el valor de la variable global1 usandola desde una función. Antes de terminar la función incrementa el valor de la variable en 2. Después cuando se examina la variable en la función main() su valor ya ha cambiado.

Wednesday, July 6, 2011

Uso de ReadKey y KeyAvailable

La clase Console nos permite usar la consola de la aplicación. Esto data desde los años 50's cuando las computadoras ocupaban una o varias habitaciones.

Para los años 60's la consola o terminal de E/S estaba compuesta por el conjunto de teclado y/o lectora de tarjetas.

Para inicio de los 70's la terminal contenía el teclado, la pantalla (Display CRT) y la impresora de línea.

Parte de esto subsiste hasta nuestros días.

La clase Console provee mecanismos para leer las teclas que se oprimen en el teclado.

La propiedad Console.KeyAvailable regresa un valor booleano que permite saber si hay una tecla en el bufer de teclado esperando ser leíada, es decir, que se ha oprimido una tecla y aún no ha sido procesada.

Podemos usar Console.KeyAvailable dentro de una condición para evaluar si se ha oprimido una tecla por ejemplo

if (Console.KeyAvailable) { ...Leer la tecla...}

En este caso si hay una tecla que ha sido presionada se ejecuta el código condicional.

También se puede usar un bucle o ciclo que termina cuando se oprime una tecla

while (!Console.KeyAvailable)

{
... hacer algo en el ciclo mientras no se presione nada en el teclado
}



Una vez que se ha presionado una tecla podemos leer la tecla presionada con Console.ReadKey()

Console.ReadKey().Key es una propiedad que regresa una valor de tipo ConsoleKeyInfo. ConsoleKeyInfo es una estructura de datos que contiene varias constantes que representan las diferentes teclas.

Para saber que tecla es la que se ha presionado se puede comparar el valor que regresa ReadKey() contra las constantes definidas en ConsoleKeyInfo.


Ejemplo

ConsoleKeyInfo myKey;

myKey=Console.ReadKey();

if (myKey.Key == ConsoleKeyInfo.LeftArrow) { Si la tecla es la flecha izquierda se ejecuta este código }

if (myKey.Key == ConsoleKeyInfo.A) { Si la tecla es la 'A' se ejecuta este código }

if (myKey.Key == ConsoleKeyInfo.C) { Si la tecla es la 'C' se ejecuta este código }


Console.ReadKey().Key se pude usar en una estructura switch/case para comparar contra un grupo de valores como en este caso:

ConsoleKeyInfo mykey; // Declaración de variable

mykey = Console.ReadKey(); // Lectura de la tecla almacenada
switch (mykey.Key)
{
case ConsoleKey.X: { myChar = "X"; Console.Clear(); break;}
case ConsoleKey.Z: { myChar = "Z"; Console.Clear(); break;}
case ConsoleKey.C: { myChar = "C"; Console.Clear(); break;}
case ConsoleKey.UpArrow: myChar = " I"; Console.Clear(); break;
case ConsoleKey.LeftArrow: myChar = " " + myChar; break;
case ConsoleKey.RightArrow: myChar = myChar.Remove(0, 1); if (myChar.Length == 0) myChar = "I"; break;
case ConsoleKey.Enter:
case ConsoleKey.Spacebar: fin = true; break;

}


Se esperan sus comentarios y recuerden que la práctica hace al maestro.

Tarea 5 de Julio

Buenos días.

Este es un ejemplo de un pograma que usa la declaración switch para hacer algunos efectos en la pantalla.

Presione las teclas z, x, c y flechas arriba, izq y derecha para ver los diferentes efectos.

El programa termina cuando se oprime ENTER y la barra espaciadora.


Programa en MS Visual C# .Net para una Aplicación de Consola


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

namespace While_y_switch
{
class Program
{

static void Main(string[] args)
{
ConsoleKeyInfo mykey;
string myChar = "*";
bool fin = false;

while (!fin)
{

Console.Write(myChar);

if (Console.KeyAvailable)
{
mykey = Console.ReadKey();
switch (mykey.Key)
{
case ConsoleKey.X: { myChar = "X"; Console.Clear(); break;}
case ConsoleKey.Z: { myChar = "Z"; Console.Clear(); break;}
case ConsoleKey.C: { myChar = "C"; Console.Clear(); break;}
case ConsoleKey.UpArrow: myChar = " I"; Console.Clear(); break;
case ConsoleKey.LeftArrow: myChar = " " + myChar; break;
case ConsoleKey.RightArrow: myChar = myChar.Remove(0, 1); if (myChar.Length == 0) myChar = "I"; break;
case ConsoleKey.Enter:
case ConsoleKey.Spacebar: fin = true; break;

}
}
}

Console.WriteLine("\n\nFin. Presione ENTER para terminar.");
Console.ReadLine();
}
}
}