Estructuras De Control En C - Universidad Técnica Federico Santa María

Transcription

Departamento de InformáticaUniversidad Técnica Federico Santa MaríaEstructuras de Control en CProgramación de ComputadoresProfesor Teddy AlfaroSecuencia El secuencialismo está inserto en todoprograma como tal. Al ejecutar unprograma las instrucciones siguen elextricto orden secuencia en la forma quefueron programadas (escritas).1

Acción simple y accióncompuesta Acción simple,corresponde a unainstrucción simple aejecutar. Es unasentencia seguida de ; Acción compuesta,corresponde a unconjunto de sentenciasque se ejecutan dentrode un bloque. Unbloque de instrucciónse puede indentificarpor estar entre un { yun }Acción simple y compuesta Ejemplo acciónsimple Ejemplo accióncompuesta{X 4*Pi*sqr( r );X 4*Pi;r2 sqr( r );area X*r2;}2

Estructuras de control Trabajaremos con 3 estructuras de selecciónde Cif( ) { }if( ) { } else { }switch ( ) { } Y con 3 estructuras de repeticiónwhile ( ){ }do { } while( );for( ; ; ) { }Selección: If Formato acción simpleif condiciónacción; Formato acción compuestaif condición{acción 1;acción 2;.acción n;}VcondiciónAcción;FcondiciónFVAcción 1;Acción 2;.Acción n;3

Selección: if.else Formato:if condición{accion 1a;.accion n}else{accion 1b;.accion m};FcondiciónAccion 1b;.Accion mVAccion 1a;.Accion nEjemplo if-elsefloat a,b,c;// solucionando ax 2 bx c 0scanf(“%f %f %f”,&a,&b,&c);if( (b*b-4*a*c 0) && (a! 0) ) {x1 (-b sqrt(b*b-4*a*c))/(2*a);x2 (-b - sqrt(b*b-4*a*c))/(2*a);printf("resultado de ax 2 bx c 0 es x1 %f y x2 %f\n",x1, x2);}Elseprintf(“ax 2 bx c 0 no tiene solucion real\n”);4

Sentencia: switch La estructura SWITCH podría considerarse como un IFpero de un mayor nº de alternativas.switchif . elseNos permite elegirentre una o más deuna alternativa.Nos permite elegirentre una o dosalternativas.alternativaNo 3Sentencia: SWITCH Formato General:switch expresión {case valor1 1:case valor1 2, . ,case valor1 m : instruccion1;case valor2 : instruccion2 1; instruccion2 2; .break;case valor3 : instrucción3 1; .; instruccion3 n;case valor4 : instrucción4 1; break;.case valor p: instrucción p; break;default: instrucción x; break;}5

Ejemplo switchint n;char c;scanf("%c",&c);switch (c) {case '0':n (int)c-(int)'0'; break;case '1':n (int)c-(int)'0'; break;case '2':n (int)c-(int)'0'; break;case '3':n (int)c-(int)'0'; break;case '4':n (int)c-(int)'0'; break;case '5':n (int)c-(int)'0'; break;case '6':n (int)c-(int)'0'; break;case '7':n (int)c-(int)'0'; break;case '8':n (int)c-(int)'0'; break;case '9':n (int)c-(int)'0'; break;default:n -1; break;}printf("\nel valor numero es %d\n",n);int n;char c;scanf("%c",&c);switch (c) {case '0':case '1': case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':n (int)c-(int)'0'; break;default:n -1; break;}printf("\nel valor numero es %d\n",n);//programas equivalentesEstructuras de Repetición Esta sentencias se utilizan para repetir unaacción simple o compuesta bajo el controlde una condición; además conocerse o no deantemano en número iteraciones. Repetición con iteraciones condicionales:while(condicion) { }do { } while(condicion); Repetición con iteraciones fijasfor(inicializacion; condicion ; accion )6

Repetición: WHILE Formato: acción simplewhile (condición)acción: Formato: acción compuestawhile (condición){acción1;acción2;.;acción n}condiciónVacción;FAcción n.acción2;condiciónVacción1;FEjemplo while Factorial de un número positivoi 1;d 1;while(i n 1) {d * i;i ;}printf(" el factorial de %d es %f\n",n,d);7

Repetición: DO.WHILE Formato: acción simpledoacción;while (condición); Formato: acción compuestado {acción 1;acción 2;.acción n;} while cción;condiciónFVEjemplo do-while Factorial de un númerod 1;i 1;do{d* i;i ;}while (i n 1);printf(" el factorial de %d es %f\n",n,d);8

Sentencia Repetitiva: FOR La sentencia FOR se emplea para indicar que unaacción será repetidamente ejecutada, mientras seasigna una progresión ordenada de valores a unavariable de control. Es similar al while y al do-while, y en general esutilizado cuando se conoce de antemano elnúmero de repeticiones. Existen dos tipos de for:– Progresivo– RegresivoSentencia For Formato general Forfor( inicia1,.,iniciaN; condiciones; accina-1,.,acciona-N ){acción 1;.acción n} Formato For estandar progresivofor(i 0; i N; i ) { . } Formato For estandar regresivofor(i N; i 0; i--) { . }for.9

Ejemplo: FOR Cálculo del factorialint i,n;double d 1.0;scanf(“%d”, &n);for(i 1; i n 1; i )d * i;printf(“el factorial de %d es %f\n”,n,d);Usos avanzados con FOR El for es una sentencia la cual podemosmanejar muchas operaciones en una soladeclaración. Sólo basta ver los siguientesejemplos:for (x 0;((x 3) && (x 9)); x )for (x 0,y 4;((x 3) && (y 9)); x ,y 2)for (x 0,y 4,z 4000;z; z/ 10)10

Ejercicio Desarrollar un Algoritmo cuya entrada dedatos a,b,c corresponden a los lados de untriángulo cualquiera. El algoritmo debedetectar si se trata de un triángulorectángulo, sino si es isóceles y/oequilátero, y por último si no corresponde aninguno de estos 3 tipos de triángulos.Ejercicios La función seno puede ser aproximada:La precisión del en esta serie infinita puede ser ajustada deacuerdo a n, es decir, mientras mayor sea el n más preciso.Se pide desarrollar un programa C, que permita calcularaproximación del seno de un determinado número y un ndado. Además del resultado de la aproximación, se debemostrar el error real al compararla con la función sin( ) de C.Suponga que la función factorial( ) y sin( ) ya existen.11

Ejercicios Si x e y son ambos enteros, no cero, su máximo comúndivisor puede ser obtenido con el algoritmo de euclides:“Mientras los nºs sean diferentes , deje el menor, y forme elotro restando el menor con el mayor. El algoritmo finalizacuando los nºs quedan iguales, y este corresponde al MCD” Se define Paridad Aditiva como la propiedad de un nº, talque cumple que la suma de sus dígitos resulta ser par (de locontrario no lo es). Desarrollar un programa cuya entradasea en entero N, y el programa debe ser capaz de discernir sieste cumple con la Paridad Aditiva o no.Ejercicios Un número entero positivo se dice alternante si estácompuesto de una secuencia de dígitos que alternaentre uno par y otro impar. Ejemplo: 1236781, 238 y1347 son alternantes. Desarrollar un programa quedetermine si el nº es alternante. Los números de Fibonacci son una secuencia denúmero de la forma:1,1,2,3,5,8,13,21,55,89,144,233,377,610,.f1 1, f2 1, f3 2 . f14 610 . fn (n-2) (n-1)Desarrollar un programa que muestre por pantalla laserie de nºs hasta un N ingresado por teclado.12

Estructuras de Control en C Programación de Computadores Profesor Teddy Alfaro Departamento de Informática Universidad Técnica Federico Santa María Secuencia El secuencialismo está inserto en todo programa como tal. Al ejecutar un programa las instrucciones siguen el extricto orden secuencia en la forma que fueron programadas (escritas).