2 poo u1 10 salida con formato y flujos de entrada

38
M.C Ivan Rivalcoba PROGRAMACIÓN ORIENTADA A OBJETOS C# & .NET 1. FUNDAMENTOS POO (OOP) SALIDA CON FORMATO Y FLUJOS DE ENTRADA

Transcript of 2 poo u1 10 salida con formato y flujos de entrada

M.C Ivan Rivalcoba

PROGRAMACIÓN ORIENTADA A

OBJETOSC# & .NET

1. FUNDAMENTOS POO (OOP)SALIDA CON FORMATO Y

FLUJOS DE ENTRADA

SALIDA CON FORMATO

La sintaxis de llaves “{}” para la salida estándar permite realizar un formateo mas preciso sobre la salida.

Esto se logra anexando dos puntos y una letra correspondiente al tipo de formato que se desea, un ejemplo se presenta a continuación:

“{I,A:#P}” Donde I: Indice A: Alineamiento, #: Código P:Presición

SALIDA CON FORMATO

Para la salida estándar de números se tienen los siguientes ejemplos:

Para mas información: http://msdn.microsoft.com/en-us/library/txafckwd(v=vs.110).aspx

SALIDA CON FORMATO

Se puede especificar un alineamiento en cierto número de columnas, ejemplo:

SALIDA CON FORMATO

Ejercicio: Para una lista exhaustiva de todas las posibilidades del formateo con cadenas codificar el siguiente código:

SALIDA CON FORMATO

SALIDA CON FORMATO

SALIDA CON FORMATO

SALIDA CON FORMATO

La salida debiera mostrar el siguiente resultado:

FLUJO DE ENTRADA

El .Net Framework class library (FCL) dispone de dos métodos que permiten la lectura de datos desde la entrada estándar usando para ese propósito un buffer de entrada.

Por defecto ese buffer es llenado usando el teclado, ambos métodos pertenecen a la clase Console misma que pertenece al espacio de nombres System.

FLUJO DE ENTRADA

Las firmas (signatures) de dichos métodos se presentan a continuación:

1. public static int Read()

2. public static string ReadLine()

El método “ReadLine()” lee toda una línea hasta encontrar un fin de línea (“\r\n”).

A pesar de que lee hasta el carácter de fin de línea, solo retorna la cádena hasta antes del fin de línea.

El proceso de lectura de un ReadLine se describe a continuación.

MÉTODO “READLINE()”

El sistema Abre un buffer (memoria) y permite la escritura de dicho buffer desde la entrada estándar (por defecto el teclado).

El usuario ingresa caracteres desde el teclado, la operación termina hasta que el usuario ingresa el carácter de fin de línea (Enter o 0D+0A o “\r\n”).

El método ReadLine lee todo el buffer y retorna todo lo escrito hasta antes de los caracteres de fin de línea.

MÉTODO “READLINE()”

Console.ReadLine()

MÉTODO “READLINE()”

THIS IS A MESSAGE\r\n

Console.ReadLine ()

MÉTODO “READLINE()”

THIS IS A MESSAGE\r\n

“THIS IS A MESSAGE”

A continuación un ejemplo de uso.

MÉTODO “READLINE()”

¿Qué pasaría si en vez de cadena requerimos de datos numéricos?.

Un hecho es que ReadLine retorna una cadena de caracteres, una cadena no puede ser trabajada aritméticamente.

Cada tipo numérico de C# permite la conversión de una cadena de caracteres a su correspondiente valor en el tipo numérico, esta operación es llamada PARSEO.

A continuación un ejemplo:

MÉTODO “READLINE()”

Uso del Parseo.

MÉTODO “READLINE()”

Resultado.

MÉTODO “READLINE()”

El programa anterior se puede simplificar de la siguiente manera:

MÉTODO “READLINE()”

MÉTODO “READ()”

El método Read simplemente lee caracteres individuales desde el teclado.

Devuelve un entero correspondiente al código en ASCII del carácter leído.

O en su caso devuelve un valor negativo si se encuentra con el fin de flujo esto es \r\n.

MÉTODO “READ()”

Ejercicio 1: Crear un programa que lea un carácter desde el teclado, El programa deberá imprimir “Indique su sexo [H/M]: ” si el carácter es M o m que imprima “Bienvenida bella dama” si es H o h que imprima “Bienvenido honorable caballero”, En caso contrario que imprima “Opción no valida”.

MÉTODO “READ()”

Resultara importante contar con la tabla ASCII

MÉTODO “READ()”

Ejercicio 1: Código

MÉTODO “READ()”

Ejercicio 1: Código

El siguiente código no funciona como se espera, ¿Por qué será?

MÉTODO “READ()”

Se debe de tener mucho cuidado, ya que si el buffer esta lleno con mas de un carácter la siguiente lectura tomara el carácter formado en el buffer.

MÉTODO “READ()”

El proceso de lectura de Read() sucede de la siguiente manera: El sistema Abre un buffer (memoria) y permite la

escritura de dicho buffer desde la entrada estándar (por defecto el teclado).

El usuario ingresa caracteres desde el teclado, la operación termina hasta que el usuario ingresa el carácter de fin de línea (Enter o 0D+0A o “\r\n”).

El método Read lee el primer carácter del buffer y lo retorna en su equivalente ASCII, el tipo que regresa es entero.

MÉTODO “READ()”

Console.Read()

MÉTODO “READ()”

THIS IS A MESSAGE\r\n

Console.Read()

MÉTODO “READ()”

THIS IS A MESSAGE\r\n

T 84

Es importante notar que el Buffer se queda con la información restante, por lo que si se vuelve a invocar el método Read, el método retornaría el equivalente ASCII del siguiente carácter en el buffer en este caso “H”.

MÉTODO “READ()”

HIS IS A MESSAGE\r\n

Una forma de evitar que el buffer se quede con información es utilizando el método ReadLine().

Este método lee toda una línea hasta encontrar un fin de línea (“\r\n”).

Esto provoca una limpieza de Buffer, el código corregido queda de la siguiente manera.

MÉTODO “READ()”

Código con limpieza de buffer.

MÉTODO “READ()”

Para poder redireccionar la entrada estándar se realiza la siguiente invocación.

C:\>programa.exe < input.txtEjemplo:

REDIRECCIONAMIENTO

En donde estará localizado el ejecutable de dicho archivo agregar un archivo llamado input.txt.

REDIRECCIONAMIENTO

Desde la consola mandar a llamar el programa así:

La entrada la tomara desde el archivo input.txt, provocando la siguiente salida:

REDIRECCIONAMIENTO

También se puede redireccionar entrada y salida de la siguiente manera:

REDIRECCIONAMIENTO

Esta sentencia no provocará ninguna salida en el monitor pero sí en un archivo:

REDIRECCIONAMIENTO