08/03/2013 UNIVERSIDAD DE MANAGUA UDEM SUMARIO Entrada y Salida. Flujos de entrada. Flujos de salida. Salida con formato. ¿InputBox de VB .NET en C#? ENTRADA Y SALIDA Frecuentemente un programa necesitará obtener información desde un origen o enviar información a un destino. La comunicación entre el origen de cierta información y el destino, se realiza mediante un flujo de información (en inglés stream). Un flujo es un objeto que hace de intermediario entre el programa y el origen o destino de la información. La figura siguiente muestra las clases relacionadas con flujos. Object Console TextReader Subclases Stream Subclases TextWriter Subclases 1 08/03/2013 FLUJOS DE ENTRADA Dos métodos tienen un especial interés porque permiten a - Flujo desde la entrada estándar (el teclado): In. Flujos identificados por las propiedades de la clase Console un programa leer datos de la entrada estándar son: public static int Read() public static string ReadLine() Read simplemente lee caracteres individuales del flujo de entrada estándar; concretamente lee el siguiente carácter disponible. Devuelve un entero correspondiente al código del carácter leído o un valor negativo que indica el final del flujo. Ejemplo: char car; car = (char)Console.Read(); - Un flujo hacía la salida estándar (la pantalla): Out. - Un flujo hacia la salida estándar de error (la pantalla): Error. using System; using System.Collections.Generic; using System.Text; ReadLine lee una línea del flujo vinculado con la entrada estándar; concretamente lee la siguiente línea disponible. Devuelve una referencia a un objeto string que envuelve la línea leída, o bien un valor null cuando no haya datos disponibles. Una línea está definida como una secuencia de caracteres seguidos por ‘\r’, ‘\n’, o bien por ‘\r\n’. La cadena devuelta no contiene el carácter o caracteres de terminación. namespace FlujoEntrada { class Program { static void Main(string[] args) { string sDato; //Variable para almacenar una //línea de texto. Console.Write("Introduzca un texto: "); sDato = Console.ReadLine(); //Leer una línea de texto. Console.WriteLine(sDato); //Escribir la línea leída. Console.Read(); } } } 2 08/03/2013 using System; using System.Collections.Generic; using System.Text; FLUJOS DE SALIDA Dos métodos tienen un especial interés, porque permiten a un programa escribir datos en la salida estándar, son: public static void Write([arg]); public static void WriteLine([arg]); Los métodos Write y WriteLine son esencialmente los mismos; ambos escriben su argumento en el flujo de salida. La única diferencia entre ellos es que WriteLine añade un carácter ‘\n’ al final de su salida, y Write no. namespace FlujoSalida { class Program { static void Main(string[] args) { string sCadena = "Lenguaje C#"; int dato_int = 4; long dato_long = long.MinValue; float dato_float = float.MaxValue; double dato_double = Math.PI; bool dato_bool = true; Console.WriteLine(sCadena); Console.WriteLine(dato_int); Console.WriteLine(dato_long); Console.WriteLine(dato_float); Console.WriteLine(dato_double); Console.WriteLine(dato_bool); Console.Read(); } } } SALIDA CON FORMATO Los métodos Write y WriteLine también permiten mostrar los datos según un formato. Para ello se utilizarán las siguientes formas de estos métodos: public static void Write(formato[,argumento]…); public static void WriteLine(formato[,argumento]…); Donde: formato: Representa el valor o valores a escribir. Es una secuencia de caracteres formados por caracteres ordinarios, secuencias de escape y especificaciones de formato. Secuencias de Escape predefinidas en C# Argumento: representa el valor a escribir. Cada argumento debe tener su correspondiente especificación de formato. 3 08/03/2013 Una especificación de formato está compuesta por: {posición[, ancho][:tipo-decimales]} Donde: posición: Posición 0, 1, 2, etc. ancho: Opcional. Mínimo número de posiciones para la salida. Si el ancho se omite o el valor a escribir ocupa más posiciones de las especificadas, el ancho es incrementado en lo necesario. Si este valor es negativo el resultado se justifica a la izquierda dentro del ancho especificado; si es positivo la justificación se hace a la derecha. tipo: Opcional. Uno de los caracteres de la tabla mostrada a continuación. decimal: Opcional. Número de dígitos a mostrar en el caso de enteros o de decimales en el caso de fraccionarios. using System; using System.Collections.Generic; using System.Text; namespace SalidaConFormato { class Program { static void Main(string[] args) { Console.WriteLine("{0,9:C2}", 4.5); Console.WriteLine("{0,9:C2}", -4.5); Console.WriteLine("{0:D5}", 45); Console.WriteLine("{0,5:D}", 45); Console.WriteLine("{0:E}", 450000); Console.WriteLine("{0:F2}", 45); Console.WriteLine("{0:F0}", 45); Console.WriteLine("{0,8:F2}", 45); Console.WriteLine("{0,8:F2}", 145.3); Console.WriteLine("{0:G}", 4.5); Console.WriteLine("{0:N}", 4500000); Console.WriteLine("{0:P}", 0.12345); Console.WriteLine("{0:X}", 450); Console.WriteLine("{0:X}", 0xff7a); Console.Read(); } } } ¿INPUTBOX DE VB .NET EN C#? ¿Como? Agregar la referencia a Microsoft.VisualBasic.dll Utilizar el espacio de nombres: Microsoft.VisualBasic Acceder al método InputBox de la clase Interaction using using using using System; System.Collections.Generic; System.Text; Microsoft.VisualBasic; namespace InputBoxEnCSharp { class Program { static void Main(string[] args) { string sCadena; sCadena = Interaction.InputBox("Dato", "Atención", "", 0, 0); Console.WriteLine(sCadena); Console.Read(); } } } 4