Tema1:Controles de Programas estructurados 1)Estructuras Hacer mientras (Do While), 2)Ejercicios. Estructuras Mientras (Repeat), 3)Ejercicios. Estructuras Desde/Para (For), Entrada y salida de datos Los programas de C# utilizan normalmente los servicios de entrada y salida que ofrece la biblioteca en tiempo de ejecución de .NET Framework. La instrucción System.Console.WriteLine("Hello World!"); utiliza el método WriteLine, que es uno de los métodos de salida de la clase Console de la biblioteca en tiempo de ejecución. Muestra el parámetro cadena en la secuencia de salida estándar seguido por una nueva línea. Otros métodos de Console se utilizan para otras operaciones de entrada y salida. Si incluye la directiva using System; al principio del programa, puede utilizar directamente las clases y métodos de System sin escribir el nombre completo. Por ejemplo, puede llamar en su lugar Console.WriteLine, sin especificar System.Console.Writeline: 4)Ejercicios. ENTRADA Y SALIDA DE DATOS ● ● Frecuentemente un programa necesitará obtener nformació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 flujode información (en inglés stream). Un flujoes un objeto que hace de intermediario entre el programa y el origen o destino de la información. ENTRADA Y SALIDA FLUJOS DE ENTRADA - Dos métodos tienen un especial interés porque permiten a 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ídoo un valor negativoque indica el final del flujo. Ejemplo: char car; car = (char)Console.Read(); ENTRADA Y SALIDA 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 stringque 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. Entrada y salida 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 Writey WriteLineson 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. ENTRADA Y SALIDA using System; using System.Collections.Generic; using System.Text; 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(); } } } ENTRADA Y SALIDA using System; using System.Collections.Generic; using System.Text; 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); Estructuras Hacer mientras(Do While). Estructuras Hacer mientras(Do While). Hacer HACER A++ MIENTRAS A<B Proceso 1 intruccion1 intruccion2 intruccion3 mientras condicion V Condicion F Proceso 2 Estructuras Hacer mientras(Do While). public class TestDoWhile { public static void Main () { int x = 0; /*La instrucción do ejecuta una instrucción o un bloque de instrucciones entre {} repetidamente hasta que una expresión especificada se evalúe como false.*/do { Console.WriteLine(x); x++; } while (x < 5); } } A diferencia de la instrucción while, un bucle do-while se ejecuta una vez antes de que se evalúe la expresión condicional. Estructura MIENTRAS WHILE condicion instruccion1 instruccion2 instruccion3 END WHILE Diagrama de Flujo de While MIENTRAS A<B A++ Proceso 1 V Condicion WHILE(MIENTRAS) class WhileTest { static void Main() { int n = 1; while (n < 6) { Console.WriteLine("El Valor que toma n es{0}", n); n++;/*sentencia de codigo que imcrementa en 1 el de n*/ } } } La instrucción while ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false. F Proceso FOR(desde para) Estructura desde/para diagrama de flujo A PARA i=0 hasta 4 con INCREMENTO+1 ESCRIBIR “el valor de i es” i FIN PARA ● Estructura del FOR INICIALIZAR CONDICION FOR inicializar;condicion;incremento instrucciones END FOR INTRUCCIONES INCREMENTO B Codificación del FOR for(int i=0;i<10;i++) { //Esta instrucción se repetira siempre que Sea menor que 10 } ● While Ejemplos public static void Main(string[] args) { int i=0,j=1; while (i<=3) { System.Console.Write("para i="+i+":"); while(j<=4)//mientras jsea menor o igual que { System.Console.Write("j="+j+"."); j++; //aumenta j en una unidad } System.Console.Write("\n");//avanzar una nueva linea i++;//aumentar i en una unidad j=1;//iniciar j de nuevo a 1 } } ● While Ejemplos using System; public class Test { public static void Main(string[] args) { char car = '\0'; Console.Write("\nDesea continuar s/n (Si o no) "); car = (char)Console.Read(); // Eliminar los caracteres disponibles en el flujo de entrada Console.ReadLine(); while (car != 's' && car != 'n') { Console.Write("\nDesea continuar s/n (si o no) "); car = (char)Console.Read(); Console.ReadLine(); } } } Ejemplos de do while using System; public class CRaizCuadrada { // Raテュz cuadrada. Mテゥtodo de Newton. public static void Main(string[] args) { double n; // nテコmero double aprox; // aproximaciテウn a la raテュz cuadrada double antaprox; // anterior aproximaci テウn a la raテュz cuadrada double epsilon; // coeficiente de error do { Console.Write("Nテコmero: "); n=System.Console.Read(); } while ( n < 0 ); do { Console.Write("Raテュz cuadrada aproximada: "); aprox = System.Console.Read(); } Pag. 146 del libro Lenguaje de programacion c# Ejemplo estructura del for Ejemplos do { Console.Write("Coeficiente de error: "); epsilon = System.Console.Read(); } while ( epsilon <= 0 ); do { antaprox = aprox; aprox = (n/antaprox + antaprox) / 2; } while (Math.Abs(aprox - antaprox) >= epsilon); Console.WriteLine("La raテュz cuadrada de {0:F2} es {1:F2}", n, aprox); } } // Ejemplo de implementacion del form para pintar un tablero de ajedres using System; public class CAjedrez { // Imprimir un tablero de ajedrez. public static void Main(string[] args) { int falfil, calfil; // posiciテウn inicial del alfil int fila, columna; // posiciテウn actual del alfil Console.WriteLine("Posiciテウn del alfil:"); Console.Write(" fila "); falfil = Int32.Parse(Console.ReadLine()); Console.Write(" columna "); calfil = Int32.Parse(Console.ReadLine()); Console.WriteLine(); // dejar una lテュnea en blanco // Pintar el tablero de ajedrez for (fila = 1; fila <= 8; fila++) { for (columna = 1; columna <= 8; columna++) { if ((fila + columna == falfil + calfil) || (fila - columna == falfil - calfil)) Console.Write("* "); else if ((fila + columna) % 2 == 0) Console.Write("B "); else Console.Write("N "); } Console.WriteLine(); // cambiar de fila } } Bibliografia ● El Lenguaje de programacion C# Francisco Javier Ceballos ● La biblia de c# Francisco Javier Ceballos. }