C# Visual Studio y ejercicios

C#

Encuentra su origen en C, C++, Java (multiplataforma) y VisualBasic (aplicaciones tipo RADRapid Aplication Development). Debe ser asequible y fácil y rápido desarrollo.

Sube un escalón por encima de C++. Si c++ tenemos un proyecto para 14 meses con c# se podría quedar en 6 u 8 meses (en algunas aplicaciones mejora un 60% respecto de C++). Respecto de Java mejora la versatilidad del lenguaje y ofrece la multiplataforma sin ser un mensaje interpretado. Es multipropósito que quiere decir que con el mismo lenguaje podamos atacar soportes físicos muy distintos, rápidas presentación de datos, un poder de ejecución y desarrollo bastante fuerte. Esta cogiendo fuerza en el mundo web. A crecido mucho desde su aparición. Con el mismo código de la aplicación, serviría para presentarla en distintos dispositivos.

Nos proporciona una interfaz muy amigable, que es Visual Studio. El IDE (entorno de desarrollo) nos proporciona todas las herramientas que necesitamos sin que tengamos que hacer prácticamente nada. Está pensado par ano tener que “memorizar” las cosas. Tenemos que aprender que podemos hacer con los lenguajes, para el resto están las guías. Según escribimos nos va ofreciendo las alternativas al pulsar una sola letra. Se va haciendo una corrección de sintaxis a medida que vayamos escribiendo. Facilitan la compilación (botón de play).

Existe la versión, Visual Studio Express 2008 para C# (hay una con el kit de web) tiene alguna menos funcionalidad, pero nos sirve. En Codeplex hay un montón de plugins pero cuidado porque VisualStudio puede dejar de funcionar. Active Server Page ASP es .NET para web, son las librerías que nos permitirán atacar el mundo web.

C# funciona sobre Framework .NET. Es nativo de .NET. Tendremos una serie de framework concretos y el mismo framework generará una compilación intermedia que permitirá ejecutarse en ordenador normal, dispositivos móviles... Si queremos compilarlo para otras plataformas (android) MONO Project (para android, linux, iphone, mac). Cuando hacemos una aplicación hay que asegurarse que el equipo tenga instalado el framework. Hace falta este entorno para que la aplicación se pueda ejecutar.


El lenguaje Común usará las APIs que tenemos dentro del framework .NET (ASP.NET, formularios windows...
Las librerías de Clases Base, son comunes. El conjunto de clases sobre el que se asientan en resto de conjuntos de clases. A parte de las clases base ofrece otras librerias para entornos de desarrollo concretos, ADO.NET (admit data object), y permiten acceder a datos de cualquier tipo (bases de datos, xml, ficheros secuenciales, etc.) Encima, tenemos una división, una parte a ASP (en servidor que serán visualizados en un navegador) y otra a Formularios Windows. Visual Studio .NET nos permitirá acceder a todo ello.
A este entorno de trabajo le agregaremos el CLR (Entorno de Ejecución COmún de Lenguaje (common languaje runtime) sería lo equivalente a una máquina virtual de Java). Cuando usamos CLR usamos el motor JIT (Just In Time), el CLR dice, necesitas esto y bla bla bla, te lo compilo, ¿todo? no, solo lo necesario. El sistema operativo ataca a la salida del CLR.



Arrancamos


y se queda así tras el arranque....


Proyecto, una solución podrá estar formada por varios proyectos. Dentro de un proyecto están los archivos necesarios para compilar el mismo. Haremos aplicaciones de consola, así aprenderemos a trabajar con el lenguaje.

Crearemos nuestro primer proyecto.


seleccionamos aplicación de consola, y le llamaremos “mi primera aplicación”.


y se creará la siguiente ventana


Dentro de nuestro proyecto podremos tener distintas partes en distintos lenguajes de programación.

program.cs es lo que se crea por defecto para nuestro programa.

y guardamos, pulsamos el botón de todos los diquetes y dejamos marcada la casilla de crear directorio, así tendremos todo organizado dentro de ese directorio.


y se queda en el directorio así:


las { } son los delimitadores de código, lo que empieza a ser un bloque abro {, cuando cierro }.
Cuando abramos unas llaves inmediatamente las cerramos y nos ponemos en medio.

Por defecto nos va a tabular, y debemos usarlas y ser limpitos. Así que tendremos que usarlas para que el profe lo corrija.

En color azul están las palabras clave, en verde las clases...que ya lo veremos más adelante.

Todas las sentencias tienen que terminar en punto y coma ; los bloques de código por llaves { }.

¿qué tipos de operadores tiene c#?


Se escriben igual que como los hemos visto? sí.

  • +, -, *, /, (no tenemos división entera)
  • >, <, >=, <=, !=, !, son estos y punto, igualdad sería ==, el módulo sería %
  • con el AND tendremos & y &&. OR | y ||. Si ponemos una sola vez el carácter significa que evaluamos la primera parte, con el doble, directamente da el resultado sin evaluar la segunda (ya que el resultado daría igual). Como operador de negación tendríamos !.
  • Otros: [ ] nos permite indicar el índice de las matrices. ( ) permiten hacer agrupaciones que se ejecutarán primero. - es el cambio de signo. El operador de concatenación sería un + . El operador de acceso . , con el punto podremos acceder a características, propiedades y sus métodos. Las comillas dobles “ “, significan que tenemos un literal de cadena y en c# se llama Strings, algo que esté entre comillas simples ‘ ‘ es sólo un carácter.

“TODO SON OBJETOS, EXCEPTO LAS PALABRAS CLAVE Y LOS OPERADORES”


Vamos a hacer el típico programa del “Hola mundo”.


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

namespace miPrimeraAplicacion
{
    class Program
    {
       static void Main(string[] args)
       {
           Console.WriteLine("Hello world!");
Console.WriteLine("David");
Console.Read();
       }
    }
}

namespace: no hace nada de cara al código, no permite ejecutar nada, es meramente organizativo, sirven para ordenar las cosas. Todo lo que esta dentro de este espacio pertenece al espacio de nombres niPrimeraAplicacion.

Los using... System es un espacio de nombres lo que viene detras del punto son las caracteristicas de System, ej, System.Text, quiere decir que estoy accediendo al espacio de nombres Text que esta dentro del espacio de nombres System.

class: class Program, se puede llamar como queramos. Lo que hay entre esos corchetes.
Main es la primera función que se ejecuta, no hace falta que nadie lo invoque. Void, que no devuelve nada, simplemente hace algo.


ESTRUCTURAS CONDICIONALES


amEl condicional simple (si) y el SI, SI NO, es como prosigue:

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

namespace miPrimeraAplicacion
{
    class Program
    {
       static void Main(string[] args)
       {
           int edad = 19; //declaro variable de tipo entero llamada edad y la declaro con valor 19
           float porcentaje = 15.5f;
           bool respuesta = true;
           string nombre; //declaro la variable nombre
           //tipo nombre_varibale = valor de inicialización
           /* Esto es un comentario
            * de varias
            * lineas*/
           //inicializo nombre
           nombre = "Pedrito";
           Console.WriteLine("Hello world!");
           Console.WriteLine(nombre);
           Console.ReadLine();//con ReadLine sólo puedo pulsar INTRO
           if (edad > 18)
           {
               Console.WriteLine("Eres mayor de edad");
           }
           else
           {
               Console.WriteLine("Eres menor de edad");
           }
           Console.Read();
       }
    }
}

Los condicionales compuestos son como sigue...

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

namespace miPrimeraAplicacion
{
    class Program
    {
       static void Main(string[] args)
       {
           int edad = 13; //declaro variable de tipo entero llamada edad y la declaro con valor 19
           float porcentaje = 15.5f;
           bool respuesta = true;
           string nombre; //declaro la variable nombre
           //tipo nombre_varibale = valor de inicialización
           /* Esto es un comentario
            * de varias
            * lineas*/
           //inicializo nombre
           nombre = "Pedrito";
           Console.WriteLine("Hello world!");
           Console.WriteLine(nombre);
           Console.ReadLine();

           if (edad > 18)

           {

               Console.WriteLine("Eres mayor de edad");

           }
           else if (edad > 12)
           {
                   Console.WriteLine("Eres mayor de 12 y menor de edad");
           }
           else if (edad > 9)
           {
                   Console.WriteLine("Eres mayor de 9 y menor de 12");
           }
           else
           {
                   Console.WriteLine("Eres menor de 9 años");
           }
           Console.Read();
       }
    }
}

La sintaxis de los condicionales múltiples es como sigue:

using System;

using System.Collections.Generic;

using System.Linq;
using System.Text;

namespace miPrimeraAplicacion
{
    class Program
    {
       static void Main(string[] args)
       {
           int edad = 13; //declaro una variable de tipo entero llamada edad y la declaro con valor 19

           int iva = 2;

           float porcentaje = 15.5f;
           bool respuesta = true;
           string nombre; //declaro la variable nombre
           //tipo nombre_varibale = valor de inicialización
           /* Esto es un comentario
            * de varias
            * lineas*/
           //inicializo nombre
           nombre = "Pedrito";
           Console.WriteLine("Hello world!");
           Console.WriteLine(nombre);
           Console.ReadLine();
           if (edad > 18)
           {
               Console.WriteLine("Eres mayor de edad");
           }
           else if (edad > 12)
           {
               Console.WriteLine("Eres mayor de 12 y menor de edad");
           }
           else if (edad > 9)
           {
               Console.WriteLine("Eres mayor de 9 y menor de 12");
           }
           else
           {
               Console.WriteLine("Eres menor de 9 años");
           }
           Console.ReadLine();

           switch (iva)

           {

               case 1:

                   Console.WriteLine("IVA 21%");

                   break;

               case 2:

                   Console.WriteLine("IVA 18%");

                   break;

               case 3:

                   Console.WriteLine("IVA 8%");

                   break;

               default:

                   Console.WriteLine("IVA desconocido");

                   break; //En "default", "break" no es necesario escribirlo

           }

           Console.Read();

       }
    }
}

bucles determinados:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace miPrimeraAplicacion

{

    class Program

    {

       static void Main(string[] args)

       {

           int edad = 13; //declaro una variable de tipo entero llamada edad y la declaro con valor 19

           int iva = 2;

           float porcentaje = 15.5f;

           bool respuesta = true;

           string nombre; //declaro la variable nombre

           //tipo nombre_varibale = valor de inicialización

           /* Esto es un comentario

            * de varias

            * lineas*/

           //inicializo nombre

           nombre = "Pedrito";

           Console.WriteLine("Hello world!");

           Console.WriteLine(nombre);

           Console.ReadLine();

           //Bucles determinados;

           for (int i = 0; i < 10; i++)//Declaramos el contador dentro del bucle

           {

               Console.WriteLine("Número: " + i);//writeline escribe en una línea nueva

               Console.Write("Número: " + i);//write sólo escribe, asi pues sale una tras otra

           }

           Console.Read();

       }

    }

}


Indeterminado con condición inicial:

         //Bucles indeterminados;

           //Condición inicial:

           while (edad < 25)

           {

               Console.WriteLine(edad);

               edad += 2;//equivale a edad = edad + 2

           }

           Console.Read();


Indeterminado con condición final:

//Con la condición al final:

           do

           {

               Console.WriteLine(edad);

               edad += 2;            

           } while(edad<25);

           Console.Read();


Ejercicios:


Ejercicio1, Ejercicio2, Ejercicio3,


ejercicio1: Proyecto de consola. Cuenta hacia delante que muestre los números del 0 al 25.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Ejercicio1

{

    class Program

    {

       static void Main(string[] args)

       {

           for (int i = 0; i <= 25; i++)

           {

                   Console.WriteLine(i);

           }

           Console.Read();

       }

    }

}




ejercicio2: Proyecto de consola. Mostrar números multiplos de 3 del 0 al 30.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Ejercicio2

{

    class Program

    {

       static void Main(string[] args)

       {

           for (int i = 3; i <=30; i+=3)

           {

               Console.WriteLine(i);

           }

           Console.Read();

       }

    }

}



mismo ejercicio que también muestre los pares del 0 al 50:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Ejercicio2

{

    class Program

    {

       static void Main(string[] args)

       {

           for (int i = 3; i <=30; i+=3)

           {

               Console.WriteLine(i);

           }

           Console.ReadLine();

           for (int i = 0; i <= 50; i += 2)

           {

               Console.WriteLine(i);

           }

           Console.Read();

       }

    }

}



ejecicio3: cuenta regresiva del 20 al 0.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Ejercicio3

{

    class Program

    {

       static void Main(string[] args)

       {

           for (int i = 20; i >= 0; i--)

           {

               Console.WriteLine(i);

           }

           Console.ReadLine();

       }

    }

}


Ejercicio 4:
Vamos a aprender a dar formato a la salida con la función Console.WriteLine(). Poniendo dentro de una cadena de texto corchetes con un número le decimos que escriba el valor de la variable que ponemos como argumentos dentro de tal cadena separados por comas.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace ejercicio4

{

    class Program

    {

       static void Main(string[] args)

       {

           string nombre = "Juan";

           string apellidos = "Pérez";

           int numero = 12;

           nombre = nombre + "Pedro";

           Console.WriteLine("{0} es tu nombre\n{1} tu apellido ({2})", nombre, apellidos, numero);

           Console.ReadLine();

           for (int i = 0; i < 11; i++)

           {

               Console.WriteLine("-{0}-", i);

           }

           Console.ReadLine();

       }

    }

}




<<OJO CON LAS LLAVES QUE DELIMITAN BLOQUES DE CÓDIGO.>>


Programa que pide nombre de una persona y te dice como te llamas (jeje)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace entradaTexto //Programa que pide un nombre al user y muestra "tu nombre es: user"

{

    class Program

    {

       static void Main(string[] args)

       {

           string nombre = "";

           Console.Write("Dime tu nombre: ");

           nombre = Console.ReadLine();

           Console.WriteLine("Tu nombre es {0}", nombre);

           Console.ReadLine();

       }

    }

}



PROGRAMA DE LA DIVISIÓN DE DOS NÚMEROS ENTEROS:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Homework1

{

    class Program

    {

       static void Main(string[] args)

       {

           int num1 = 0;

           int num2 = 0;

           string dividendo = "";

           string divisor = "";

           int cociente = 0;

           int resto = 0;

           Console.Write("Introduce el dividendo: ");

           dividendo = Console.ReadLine();

           num1 = Convert.ToInt32(dividendo);

           Console.Write("Introduce el divisor: ");

           divisor = Console.ReadLine();

           num2 = Convert.ToInt32(divisor);

           if (num1 == 0 & num2 == 0)

           {

               Console.Write("El resultado de {0} entre {1} es una indeterminación", num1, num2);

           }

           else if (num2 == 0)

           {

               Console.Write("El resultado de {0} entre {1} tiende a infinito", num1, num2);

           }

           else if (num2 > num1)

           {

               Console.Write("{0} entre {1} es {2} y el resto es {0}", num1, num2, cociente, resto);

           }

           else

           {

               for (int i = num2; i <= num1; i += num2)

               {

                   resto = num1 - i;

                   cociente++;

               }

               Console.Write("{0} entre {1} es {2} y el resto es {3}", num1, num2, cociente, resto);

           }

           Console.ReadLine();

       }

    }

}


y aquí esta la versión 1.1

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Homework1_1 //programa para hacer la división de dos números enteros positivos;

{

    class Program

    {

       static void Main(string[] args)

       {

           int dividendo = 0, divisor = 0, cociente = 0, resto = 0;

           do

           {

                   Console.WriteLine("Introduce el dividendo: ");

                   int.TryParse(Console.ReadLine(), out dividendo);

           } while (dividendo <= 0);

           do

       {

               Console.WriteLine("Introduce el divisor: ");

               int.TryParse(Console.ReadLine(), out divisor);

           } while (divisor <= 0);

           for (resto=dividendo;resto>=divisor;resto-=divisor)

           {

           cociente++;

           }

           Console.WriteLine("El cociente es: {0}\nEl resto es: {1}", cociente, resto);

           Console.ReadLine();

       }

    }

}


y la versión con función de Adriano para solicitar los datos:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace ConsoleApplication1

{


    class DivisionResta

    {

       //CUERPO PRINCIPAL; EJECUTA LA DIVISIÓN DE DOS NÚMEROS ENTEROS SIN UTILIZAR EL OPERANDO "/"

       static void Main(string[] args)

       {

           int dividendo = 0, divisor = 0, cociente = 0, i;


           dividendo = NumCorrecto(dividendo, "dividendo");

           divisor = NumCorrecto(divisor, "divisor");


           for (i = dividendo; i >= divisor; i -= divisor)

           {

               cociente++;

           }


           Console.WriteLine("El cociente de esta operación es {0} y el resto {1}", cociente, i);

           Console.ReadLine();

       }


       //FUNCION QUE VERIFICA SI EL DÍGITO INTRODUCIDO ES UN NÚMERO ENTERO POSITIVO

       public static int NumCorrecto(int valor, string operando)

       {


           do

           {

               Console.WriteLine("Asigne un valor a {0}", operando);

               Int32.TryParse(Console.ReadLine(), out valor);

               if (valor <= 0)

               {

                   Console.WriteLine("El parámetro introducido no es correcto");

               }


           } while (valor <= 0);


           return valor;

    }

       }


}





Programa que solicita el nombre y los apellidos y muestra “te llamas ap1 ap2, nombre”.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace HomeWork3 //Pide nombre y apellidos y muestra mensaje

{

    class Program

    {

       static void Main(string[] args)

           {

           string nombre = "";

           string apellido1 = "";

           string apellido2 = "";

           Console.Write("Dime tu nombre: ");

           nombre = Console.ReadLine();

           Console.Write("Dime tu primer apellido: ");

           apellido1 = Console.ReadLine();

           Console.Write("Dime tu segundo apellido: ");

           apellido2 = Console.ReadLine();

           Console.WriteLine("Te llamas {0} {1}, {2}", apellido1, apellido2, nombre);

           Console.ReadLine();

           }

    }

}


Modificación con opción para volver a solicitar los datos y salir pulsando “n”.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace HomeWork3 //Pide nombre y apellidos y muestra mensaje

{

    class Program

    {

       static void Main(string[] args)

       {

           string nombre = "";

           string apellido1 = "";

           string apellido2 = "";

           string salir = "";

           do

           {

               Console.Write("Dime tu nombre: ");

               nombre = Console.ReadLine();

               Console.Write("Dime tu primer apellido: ");

               apellido1 = Console.ReadLine();

               Console.Write("Dime tu segundo apellido: ");

               apellido2 = Console.ReadLine();

               Console.WriteLine("Te llamas {0} {1}, {2}", apellido1, apellido2, nombre);

               Console.WriteLine("Para salir pulse 'n'");

               salir = Console.ReadLine();

           } while (salir != "n");

       }

    }

}



otra versión...

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace HomeWork3 //Pide nombre y apellidos y muestra mensaje

{

    class Program

    {

       static void Main(string[] args)

       {

           string nombre = "";

           string apellido1 = "";

           string apellido2 = "";

           int salir = 0;

           do

           {

                   Console.Write("Dime tu nombre: ");

               nombre = Console.ReadLine();

               Console.Write("Dime tu primer apellido: ");

               apellido1 = Console.ReadLine();

               Console.Write("Dime tu segundo apellido: ");

               apellido2 = Console.ReadLine();

           Console.WriteLine("Te llamas {0} {1}, {2}\nPara salir pulse 'n' o 'N'", apellido1, apellido2, nombre);

               salir = Console.Read();

               Console.ReadLine();

           } while (salir != 'n' && salir != 'N');

       }

    }

}






Ejercicio que solicita nombre de artículo, precio y cantidad del mismo, lo solicita hasta que se introduce la opción cero para salir. Una vez introducido el cero muestra el total de la operación.

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

namespace HomeWork4 //Ejercicio nombre artículo, cantidad, y precio y devuelve total
{
    class Program
    {
       static void Main(string[] args)
       {
           string nombre = "";
           double cantidad = 0;
           double precio = 0;
           string salir = "";
           double total = 0;
           do
           {
               Console.Write("Nombre del artículo\n");
               nombre = Console.ReadLine();
               Console.Write("Indique cantidad\n");
               cantidad = Convert.ToDouble (Console.ReadLine());
               Console.Write("Indique precio\n");
               precio = Convert.ToDouble(Console.ReadLine());
               total += cantidad * precio;
               Console.Write("Press any key to continue, for EXIT press 0 ");
               salir = Console.ReadLine();
           } while (salir != "0");
           Console.WriteLine("El total es:\n{0}", total);
           Console.ReadLine();
       }
    }
}


Ejercicio que se encarga de decir el precio de la entrada de cine. El precio base es 8,50€. Si el comprador es mayor de 20 años tiene descuento del 20%, si no le aplicamos un descuento del 5% siempre y cuando sea mujer.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace HomeWork5

{

    class Program

    {

       static void Main(string[] args)

       {

           double precio = 8.5;

           int edad = 0;

           string sexo = "0";

           Console.WriteLine("Introduce la edad:\n");

           edad = Convert.ToInt32(Console.ReadLine());

           if (edad >= 20)

           {

               precio *= 0.80;

           }

           else

           {

               Console.WriteLine("Introduce si es mujer (m)");

               sexo = Console.ReadLine();

               if (sexo == "m")

               {

                   precio *= 0.95;

               }

           }

           Console.WriteLine("El precio de la entrada es {0}", precio);

           Console.ReadLine();

       }

    }

}



Programa que permite elegir entre:
1.- Cálculo y desglose del IVA.
2.- Cálculo del IVA.
Si el usuario opta por 1, el programa solicita un precio, y partiendo del precio tiene que decir que parte es IVA y cual es el precio base. (IVA = 21%)
Si el usuario opta por 2, el programa solicita un precio, calcula el IVA e indicar el PVP (IVA incl.)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace HomeWork6

{

    class Program

    {

       static void Main(string[] args)

       {

           decimal IVA = 21;

           decimal precio = 0;

           decimal precioBase = 0;

           int opcion = 2;

           decimal importeIva = 0;

           do

           {

               Console.WriteLine("Marque una de las dos opciones:");

               Console.WriteLine("1. Cálculo desglose de IVA.");

               Console.WriteLine("2. Cálculo del IVA.");

               opcion = Convert.ToInt32(Console.ReadLine());

           } while (opcion < 1 | opcion > 2);

           Console.WriteLine("Escriba un precio:\n");

           precio = Convert.ToDecimal(Console.ReadLine());

           if (opcion == 1)

           {

               precioBase = precio / (1 + (IVA / 100));

               Console.WriteLine("El precio base es {0}", precioBase);

               Console.WriteLine("El importe de IVA es {0}", precio - precioBase);

               Console.ReadLine();

           }

           else

           {

               precioBase = precio;

               importeIva = precio * IVA / 100;

               Console.WriteLine("El importe de IVA es:\n{0}", importeIva);

               precio = importeIva + precioBase;

               Console.WriteLine("El PVP es:\n{0}", precio);

               Console.ReadLine();

           }            

       }

    }

}


Programa que pregunte cuantos datos queremos introducir.
Solita tantos números como nos hayan indicado. Calcular la media aritmética y mostramos todos los números y la media.






Código para ver la diferencia entre Read() y ReadLine():

MAIN();


int c;

string basura =””;

do

{

    Console.Write(“Pulsa una tecla”);

    c = Console.Read();


    ConsoleWriteLine(“codigo:{0}, caracter: {1}”, c, (char(c)));

    basura = Console.ReadLine(); //así vuelco el buffer a basura.

} while (c !=65); //si ponemos while (c!=10) usamos el ansi del retorno de carro.

}



para limpiar el buffer de entrada:

while (Console.In.Peek() != -1) {

    Console.In.Read();

}








int c;

string basura =””;

do

{

    Console.Write(“Pulsa una tecla”);

    c = Console.Read();

    dato = int.Parse(c);

    Console.WriteLine(“dato: {0}”, dato * 2);

}






Jugando con códigos ANSI y caracteres, operaciones con los mismos:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Ejercicio6

{

    class Program

    {

       static void Main(string[] args)

       {

           char caracter = 'A';

           int entero = 'A';

           for (caracter='A'; caracter <= 'Z'; caracter++)

           {

               Console.WriteLine("Cod {0} Char {1}", (short)caracter, caracter);

           }

           Console.ReadLine();

           for (caracter = (char)90; caracter <= (char)65; caracter--)

           {

               Console.WriteLine("Cod {0} Char {1}", (short)caracter, caracter);

           }

           Console.ReadLine();

           for (entero='A'; entero <= 'Z'; entero++)

           {

               Console.WriteLine("Cod {0} Char {1}", entero, (char)entero);

           }

           Console.ReadLine();

           for (entero = 90; entero >= 65; entero--)

           {

               Console.WriteLine("Cod {0} Char {1}", entero, (char)entero);

           }

           Console.ReadLine();

       }

    }

}



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Ejercicio6

{

    class Program

    {

       static void Main(string[] args)

       {

           char caracter = 'A';

           int entero = 'A';

           for (caracter='A'; caracter <= 'Z'; caracter++)

           {

               Console.WriteLine("Cod {0} Char {1}", (short)caracter, caracter);

           }

           Console.ReadLine();

           for (caracter = (char)90; caracter >= (char)65; caracter--)

           {

               Console.WriteLine("Cod {0} Char {1}", (short)caracter, caracter);

           }

           Console.ReadLine();

           for (entero='A'; entero <= 'Z'; entero++)

           {

               Console.WriteLine("Cod {0} Char {1}", entero, (char)entero);

           }

           Console.ReadLine();

           for (entero = 90; entero >= 65; entero--)

           {

               Console.WriteLine("Cod {0} Char {1}", entero, (char)entero);

           }

           Console.ReadLine();

           Console.Clear();


           caracter = 'A';

           caracter += (char)32;

           Console.Write(caracter);


           caracter -= ' ';

           Console.WriteLine(caracter);


           caracter = (char)('A' + 'B'); //El resultado de la operación con dos caracteres es un ENTERO.

           caracter = (char)('A' + 32); //El resultado de la operación con dos caracteres es un ENTERO.

           Console.Read();


       }

    }

}