Laboratorio 03: Ejercicios de Programación con la estructura para (for) Solicitado: Ejercicios 03: Ejercicios con for y la función gotoxy() 1 M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) • Sentencia for • Ejemplos con for • Mover el cursor gotoxy() • Simulación de gotoxy() • Ejercicios 03 “Ejercicios con for y la función gotoxy()” Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Contenido 2 • C proporciona una estructura repetitiva o iterativa que facilita la programación de (ciclos o bucles) si de antemano se conoce a priori la cantidad de repeticiones que se realizarán. • La estructura for permite definir un bucle controlado por un contador, denominado variable de control o de inducción. for(i=0,n=10000;i<n;i++) i←x { i≤n } no si instrucciones i ← i+1 Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Sentencia for 3 Iterativa "para" i←x si i≤n no instrucciones i ← i+1 Diagrama de flujo for(i=x;i<=n;i++) { instrucciones; } Pseudocódigo Código en C Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Sentencia for 4 • El encabezado de un bucle for tiene tres partes separadas por ";". En la primera se inicializan las variable de control y sólo se ejecuta una vez, antes de la primera iteración, la segunda es una expresión que indica la condición lógica que debe cumplirse para que la próxima iteración se ejecute; esta condición se evaluá antes de cada iteración y, cuando deja de satisfacerse, el bucle for termina. La tercera parte del encabezado es la actualización de las variables de control y se ejecuta después de cada iteración. 1 . ; 2. .5 .;. 4. .) 7 for(. . { 3 6 sentencias; } n Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Sentencia for 5 Ejemplo 1: "ej1.c" #include<stdio.h> int main(void) { int i,n; for(i=100;i>=0;i--) { printf("\t%d",i); } return 0; } Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Ejemplos con for 6 #include<stdio.h> int main(void) { int i,n; for(i=0,n=10000;i<n;i++,n=n-i) { printf("\t%3d",i); } printf("\nn=%3d",n); return 0; } Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Ejemplo 2: "ej2.c" 7 #include<stdio.h> int main(void) { int i,j; for(i=1;i<=10;i++) { for(j=0;j<i;j++) { printf("*"); } printf("\n"); } return 0; } Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Ejemplo 3: "ej3.c" 8 #include <stdio.h> int main(void) { unsigned long anterior,actual,aux; int i; anterior = 0; actual = 1; printf("Introduce la cantidad de elementos a mostrar a partir del 0, 1, de la serie de fibonacci: "); for(scanf("%d",&i);i>0;i--) { aux=anterior+actual; printf("%lu, ",aux); anterior=actual; actual=aux; }; printf("\b\b."); return 0; }; Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Ejemplo 4: Serie de fibonacci "ej4.c" 9 • La función gotoxy (int columna, int fila) es una función declarada en el encabezado <conio.h>, la cual viene en los compiladores de la línea de Turbo C (y también Borland C++) de la compañía Borland. #include<stdio.h> Código funcional en Turbo C #include<dos.h> y Borland C "dos.h: Uso de #include<conio.h> delay() & conio.h: uso de int main(void) { gotoxy()" int fila,columna; for(columna=0;columna<80;columna++) { for(fila=0;fila<20;fila++) { gotoxy(columna,fila); printf("*"); delay(500); }; }; return 0; } Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Mover el cursor con gotoxy 10 • En el compilador MinGW incluye <conio.h>, pero no contiene todas las funciones de Borland como la de gotoxy. • Windows ofrece un conjunto de funciones para manejar la consola, entre las cuales está una equivalente a gotoxy, pero para poder usar estas funciones se tiene que verificar si el compilador puede usarlas. Si el compilador incluye el archivo de libreria windows.h en el directorio include. (MinGW lo incluye). • La función es SetConsoleCursorPosition (HANDLE hConsoleOutput, COORD coord), pero su uso no es inmediato como la función gotoxy. Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez • Si se usa otro compilador se debe de buscar una función equivalente. 11 • Ejemplo sencillo que mueve el cursor a la posición (10, 10) (aquí tienes que tomar en cuenta de que el origen es (1,1), mientras que con la otra función comienza en (0, 0)). #include<windows.h> #include<stdio.h> int main (void) { HANDLE hConsoleOutput; COORD coord; hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE); coord.X = 5; coord.Y = 5; SetConsoleCursorPosition (hConsoleOutput, coord); printf("Hola desde la coordenada %d, %d",coord.X,coord.Y); coord.X = 10; coord.Y = 10; SetConsoleCursorPosition (hConsoleOutput, coord); printf("Hola desde la coordenada %d, %d",coord.X,coord.Y); return 0; } Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Simulación de gotoxy 12 #include<stdio.h> #include<windows.h> void gotoxy( int x, int y ); int main(void) { int fila,columna; for(columna=0;columna<80;columna++) { for(fila=0;fila<20;fila++) { gotoxy(columna,fila); printf("*"); Sleep(5); }; }; return 0; } void gotoxy( int x, int y ) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); COORD position = { x, y }; SetConsoleCursorPosition( hStdout, position ); }; Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez • Programa que simula la función gotoxy() de borland. "gotoxy.c" 13 80 columnas 24 filas Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Observaciones • Considerar que generalmente (según configuración de la consola) el tamaño de la consola es de 80 columnas x 24 filas. (Si se excede el número de columnas o filas simplemente se obtendrán resultados no deseados) 14 • Ejercicio 1: Realizar un programa que dibuje un marco en la pantalla. #include<stdio.h> #include<windows.h> void gotoxy(int x, int y ); int main(void) { int fila,columna; system("cls"); //Llamada al sistema para limpiar la pantalla (Solo funciona en Windows) fila=0; for(columna=0;columna<80;columna++) { gotoxy(columna,fila); printf("*"); }; columna=79; for(fila=0;fila<24;fila++) { gotoxy(columna,fila); printf("*"); }; fila=23; for(columna=0;columna<80;columna++) { gotoxy(columna,fila); printf("*"); }; columna=0; for(fila=0;fila<24;fila++) { gotoxy(columna,fila); printf("*"); }; return 0; } void gotoxy(int x, int y ) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); COORD position = { x, y }; SetConsoleCursorPosition( hStdout, position ); }; Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Ejercicios con for y la función gotoxy 15 (De exterior a centro) Algoritmia y programación estructurada Laboratorio 04: Ejercicios de programación con la sentencia for Ejercicios con for y gotoxy()(Tarea 05) • Ejercicio 02: Realice un programa que imprima la siguiente figura poco a poco hasta llegar al centro de la pantalla. Rectángulos concéntricos 16 Algoritmia y programación estructurada Laboratorio 04: Ejercicios de programación con la sentencia for Ejercicios con for y gotoxy()(Tarea 05) • Ejercicio 03: Modifique el ejercicio 02 y haga que al llegar al centro el programa regrese borrando los rectángulos concéntricos dibujados. 17 • Realizar cada uno de los ejercicios anteriores mediante el uso de la estructura for en lenguaje C. • Observaciones 1. Reportar el texto del ejercicio y el código en C (con colores) y las pruebas de sus programas. 2. Incluir al reporte las capturas de pantalla 3. El reporte es individual y tiene portada, índice y encabezados de pagina con número de pagina , titulo y nombre del alumno. 4. Enviar vía Web en un archivo comprimido (ZIP, RAR o TAR), reporte y códigos de C de cada problema. *Se entregará antes del día Domingo 17 de Abril de 2016 (23:59:59 hora limite). Grupo Contraseña 1CV8 algoritmia1cv8 Algoritmia y programación estructurada Laboratorio 03: Ejercicios de Programación con la estructura para (for) Prof. Edgardo Adrián Franco Martínez Ejercicios 02: Ejercicios con for y la función gotoxy 18