PROGRAMACIÓN laboratorio 2007-1 PRÁCTICA 6. CICLOS REPETITIVOS ANIDADOS OBJETIVOS: Hacer uso de ciclos repetitivos anidados. Hacer uso de contadores crecientes y decrecientes. EQUIPO: Computadora Disco Flexible o algún otro medio para almacenar sus prácticas Turbo C (TC) G ENERALIDADES CICLOS REPETITIVOS ANIDADOS En la solución de problemas es necesario hacer uso de ciclos dentro de ciclos, así la complejidad de un problema se resuelve en la menor cantidad de líneas de código. Una aplicación es la implementación de menús y submenús, no solamente con una opción que el usuario introduzca, sino activar un menú por medio del teclado y de esta manera el usuario navegar en el menú. Los caracteres ASCII nos ayudan a identificar que tecla es presionada por el usuario en un teclado, ya que cada tecla tiene definido un caracter ASCII propio Las teclas más comunes utilizadas son: TECLA Backspace Tab Enter Esc Barra Espaciadora CODIGO ASCII 8 9 13 27 32 HEXADECIMAL 0x8 0x9 0xD 0x1B 0x20 Para teclas especiales como flechas, F’s y de edición (insertar, borrar) se reconocen por medio de dos caracteres, donde el caracter inicial es detectado como un CERO y luego el caracter ASCII correspondiente, por ejemplo los siguientes caracteres son para las teclas de flechas : TECLA Flecha Izquierda Flecha Arriba Flecha Abajo Flecha Derecha CODIGO ASCII 0, 72 0, 75 0, 77 0, 80 HEXADECIMAL 4B 4D 48 50 1 de 4 PROGRAMACIÓN laboratorio 2007-1 MENÚS Un menú es un conjunto de opciones para que el usuario seleccione, y al activar una de estas opciones realiza un procedimiento específico. Si una de las opciones manda activar otro conjunto de opciones, entonces estamos implementando el manejo de submenús. La implementación de un menú se realiza con la aplicación de un ciclo selectivo SWITCH utilizando como opción seleccionada un caracter, el cual puede ser letra o dígito. La terminación del ciclo dependerá de un ciclo repetitivo WHILE el cual terminará al seleccionar una de las opciones como opción de salida. En el caso de los submenús se utilizan los mismos ciclos, mas cabe hacer notar que no debe ciclarse la lógica entre ellos, con las opciones de terminación debe lograrse el acceso y salida de los submenús anidados. EJEMPLO # i nc lu d e < g ra p h ic s. h> # i nc lu d e < st di o. h> # i nc lu d e < c o n i o. h> # i nc lu d e < st dli b. h> vo id i n ic ia liz a ( ) { i nt g d= D E T E C T , g m ; i nit g ra p h( &g d, &g m, “ C: \ \ T C \ \ B G I ” ) ; } vo id c u a dr o( i nt x 1, i nt y 1 , i nt x 2, i nt y 2 , i nt re lle n o , in t c ol o r) { i nt p oly [8 ]; p oly [ 0 ]= x1; p oly [2 ] = x 2; p o ly [ 4 ]= x2 ; p oly [6 ] = x1 ; p oly [ 1] = y 1; p oly [ 3 ] = y 1; p oly [ 5 ]= y 2 ; p oly [ 7] = y 2; se t fi lls t y le ( re lle n o,c ol o r) ; fil lp oly ( 4, p oly ) ; } vo id me nu ( ) { c le a rv ie wp or t ( ) ; c u a d r o( 0, 0 ,g e t ma x x( ) ,g e t ma xy ( ) , 1, B LU E ) ; c u a d r o( 22 0 , 5 0 , 42 0 , 1 00 , 9 , M AG E NT A) ; ou t t e x t xy ( 2 5 0 , 7 5, “ O p c i ó n U n o” ) ; c u a d r o( 22 0 ,1 5 0 , 42 0 , 2 0 0, 9 , M AG E NT A) ; ou t t e x t xy ( 2 5 0 ,1 7 5,” O p c ió n D os” ) ; c u a d r o( 22 0 , 25 0 , 4 20 , 3 0 0 , 9 , MAG E NT A) ; ou t t e x t xy ( 2 5 0 ,2 7 5 ,” O p c i ó n T re s” ) ; c u a d r o( 22 0 , 35 0 , 4 20 , 4 0 0 , 9 , M AG E NT A) ; ou t t e x t xy ( 2 5 0 ,3 7 5 ,” Sa li da “ ) ; } vo id u no ( ) { c le a rv ie wp or t ( ) ; c i rc le ( g e t ma x x( ) / 2 ,g e t ma xy ( ) / 2, 2 0 0) ; g e t c h( ) ; } vo id d o s( ) { 2 de 4 PROGRAMACIÓN laboratorio 2007-1 c le a rv ie wp or t ( ) ; fil le ll ip se ( g e t ma xx ( ) / 2, g e t ma xy ( ) / 2, 3 0 0 , 5 0) ; g e t c h( ) ; } vo id t re s( ) { c le a rv ie wp or t ( ) ; ou t t e x t xy ( 5 0 , 3 00 ,” FE LI CI D A D E S” ) ; g e t c h( ) ; } vo id mu e ve ( ) { c ha r t e c la ; i nt i= 1; m e nu ( ) ; do { s wit c h ( i) { c a se 1 : c a se 2 : c a se 3 : c a se 4 : c u a dr o ( 2 2 0 , 5 0, 4 2 0 , 1 0 0 , 9, R E D ) ; ou t t e xt xy ( 2 5 0, 7 5 , “ O p c i ón U no” ) ; bre a k; c u a dr o ( 2 2 0 ,1 5 0, 4 2 0 , 2 00 , 9 , R E D ) ; ou t t e xt xy ( 2 5 0, 1 75 , “ O p c i ón D o s” ) ; bre a k; c u a dr o ( 2 2 0 ,1 5 0, 4 2 0 , 2 00 , 9 , R E D ) ; ou t t e xt xy ( 2 5 0, 2 7 5, “ O p c i ó n T re s” ) ; bre a k; c u a dr o ( 2 2 0 ,1 5 0, 4 2 0 , 2 00 , 9 , R E D ) ; ou t t e xt xy ( 2 5 0, 3 7 5, “ Sa l ida ” ) ; bre a k; } t e c la =g e t c h( ) ; s wit c h ( i) { c a se 1 : c a se 2 : c a se 3 : c a se 4 : c u a dr o ( 2 2 0 , 5 0, 4 2 0 , 1 0 0 , 9, M AG E N T A ) ; ou t t e xt xy ( 2 5 0, 7 5 , “ O p c i ón U no” ) ; bre a k; c u a dr o ( 2 2 0 ,1 5 0, 4 2 0 , 2 00 , 9 , M AG E NT A) ; ou t t e xt xy ( 2 5 0, 1 75 , “ O p c i ón D o s” ) ; bre a k; c u a dr o ( 2 2 0 ,1 5 0, 4 2 0 , 2 00 , 9 , M AG E NT A) ; ou t t e xt xy ( 2 5 0, 2 7 5, “ O p c i ó n T re s” ) ; bre a k; c u a dr o ( 2 2 0 ,1 5 0, 4 2 0 , 2 00 , 9 , M AG E NT A) ; ou t t e xt xy ( 2 5 0, 3 7 5, “ Sa l ida ” ) ; bre a k; } s wit c h ( t e c la ) { c a se ‘\ x 0’ : t e c la =g e t c h( ) ; sw it c h ( t e c la ) { c a se ‘\ x 48 ’ : c a se ‘\ x 5 0’ : i= i == 1? 4: i- 1 ; bre a k; i= i == 4? 1: i+ 1; bre a k; } 3 de 4 PROGRAMACIÓN laboratorio 2007-1 c a se ‘\ xD ’ : b re a k; sw it c h ( i) { c a se 1 : c a se 2 : c a se 3 : c a se 4 : } if ( i! =4 ) me nu ( ) ; bre a k; u n o( ) ; b re a k; do s( ) ; b re a k; t re s( ) ; b re a k; t e c la =‘\ x 1B ’; b re a k; } } w hi le ( t e c la ! =‘\ x 1B ’) ; } vo id ma i n( ) { i nic ia l iz a ( ) ; mu e v e ( ) ; } ACTIVIDAD Codifique un programa que se comporte como una calculadora simple. Para ello deberá tener las siguientes características: 1. Solo efectuará operaciones con dos operandos. 2. Operaciones permitidas: +,-,*,/. Limpieza de memoria: C 3. Se trabajará con operandos enteros. 4. Pedirá en primer lugar el operador, y a continuación los dos operandos. Validar para evitar que se introduzcan cadenas de caracteres no válidas. 5. El calculador dejará de trabajar cuando se introduzca como código de operación &. Ejemplo: Operacion : * Operando 1 : 13 Operando 2 : 10 Resultado : 130 Operacion : + Operando 1 : <130> Operando 2 : 3 Resultado : 133 Operacion : C LIMPIEZA DE MEMORIA!!! Operación: Operando 1 : 125 Operando 2 : 20 Resultado : 105 Operacion : & FIN DEL PROGRAMA. _ 4 de 4