Tema 07: Programación estructurada en C 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) 1
Contenido Estructuras secuenciales Estructuras selectivas Selectiva simple (si) Selectiva doble (si-sino) Selectiva múltiple (si-sino si-sino) Switch Estructuras iterativas o repetitivas Mientras Repetir Para sds 2
La programación estructurada y el lenguaje C C es un lenguaje de programación que permite programar de manera estructurada ya que establece una sintaxis y semántica propia para expresar computaciones, ofreciendo sentencias de control para describir secuencias, selecciones e iteraciones. SECUENCIA SELECCIÓN if..else switch ITERACIÓN while do...while for 3
Estructuras secuenciales Son las sentencias (asignaciones e invocaciones a funciones) escritas en el código fuente, cada una de estas será ejecutada de manera secuencial (en orden de aparición) una vez compilado el fuente. Instrucción1 Instrucción2 Instrucción3 Instrucción4 #include<stdio.h> int main(void) int byte=0xff; printf("\nel valor de byte es: %4X H",byte); byte&=0x00; printf("\nel valor de byte es: %4X H",byte); byte =0xFF; printf("\nel valor de byte es: %4X H",byte); Instrucciónn byte>>=1; printf("\nel valor de byte es: %4X H",byte); byte<<=2; printf("\nel valor de byte es: %4X H",byte); return 0; Diagrama de flujo Pseudocódigo Código en C 4
Estructuras selectivas (if) Las estructuras selectivas se utilizan para tomar decisiones con bases en la evaluación de una condición. Selectiva simple condición no si Instrucciones if(condición) Instrucciones; ; Diagrama de flujo Pseudocódigo Código en C 5
no condición si Instrucciones2 Instrucciones1 Selectiva doble if(condición) Instrucciones1; else Instrucciones2; ; Diagrama de flujo Pseudocódigo Código en C 6
condición1 si Instrucciones1 no condición2 si Instrucciones2 no condición3 si no Selectiva múltiple if(condición1) Instrucciones1; else if (condición2) Instrucciones2; else if (condición3) Instrucciones3; else Instruccionesn; ; Diagrama de flujo Pseudocódigo Código en C 7
La preposición de control de flujo if se utiliza para expresar decisiones, formalmente la sintaxis es: if(expresión1) sentencias1; else if(expresión2) sentencias2; else if(expresión3) sentencias3; else sentencias4; Si la expresión1 se evaluá y si esta es verdadera (diferente de 0) entonces se lleva a cabo el código inmediato entre llaves. Sino si (else if) la expresión2 se evaluá y si esta es verdadera (diferente de 0) entonces se lleva a cabo el código inmediato entre llaves. Sino si (else if) la expresión3 se evaluá y si esta es verdadera (diferente de 0) entonces se lleva a cabo el código inmediato entre llaves. Sino (else) si ninguna condición ha sido verdadera entonces se lleva a cabo el código inmediato entre llaves. *Las preposiciones else if (sino si) y else (sino) pueden omitirse. 8
Ejemplo (if-else) #include<stdio.h> int main(void) float a,b; printf("\nintroduce dos números reales separados por una coma: "); scanf("%f,%f",&a,&b); if(a<0&&b<0) printf("\nambos numeros son negativos"); else if(a>0&&b>0) printf("\nlos dos numeros son positivo"); else if(a>0 b>0) printf("\nuno de los dos numeros es positivo"); else if(a==0&&b==0) printf("\nambos numeros son igual a cero"); else printf("\n..."); return 0; 9
Estructura selectiva (switch) Una estructura selectiva del lenguaje c, que facilita implementar algunas decisiones múltiples cuando se presentan todas con base en la evaluación de una expresión es switch-case. switch(expresión) case exp-constante1: <acción 1>; break; case exp-constante2: <acción 1>; break;... case exp-constanten: <acción N>; break; default: <acción M>; *El uso de switch es valido si se utiliza apropiadamente bajo la teoría de la programación estructurada, ya que incluye una sentencia de salto que no debería de ser utilizada indiscriminadamente (break) 10
Ejemplo (switch) #include<stdio.h> int main(void) short opcion; printf("\nopción 1"); printf("\nopción 2"); printf("\nopción 3"); printf("\nopción 4"); printf("\nopción 5"); printf("\nselecciona una opción..."); scanf("%d",&opcion); switch(opcion) case 1: printf("\nopción 1 seleccionada"); break; case 2: printf("\nopción 2 seleccionada"); break; case 3: printf("\nopción 3 seleccionada"); break; case 4: printf("\nopción 4 seleccionada"); break; case 5: printf("\nopción 5 seleccionada"); break; default:printf("\nopción no valida"); 11
Estructuras iterativas o repetitivas Las estructuras repetitivas se utilizan para realizar varias veces el mismo conjunto de operaciones con base en una condición. Iterativa "mientras" condición no si instrucciones while(condición) Instrucciones; ; Diagrama de flujo Pseudocódigo Código en C 12
Con "repetir" se asegura que las instrucciones de dentro del ciclo se ejecutan al menos una vez. Iterativa "repetir" instrucciones condición no do Instrucciones; while(!(condición)); si Diagrama de flujo Pseudocódigo Código en C 13
Estructura while & do-while La estructura de control while evaluá la expresión antes de comenzar cada iteración, si esta es verdadera (diferente de 0) se realizan las sentencias de dentro de las llaves. La estructura de control do-while se utiliza cuando se quiere asegurar que las sentencias de dentro del ciclo se ejecuta al menos una vez puesto que la evaluación de la expresión lógica se hace al final de este. while(expresión) Sentencias; ; do Sentencias; while(expresión); 14
La estructura for permite definir un bucle controlado por un contador, denominado variable de control o de inducción. i x i n no si instrucciones i i+1 Iterativa "para" for(i=x;i<=n;i++) instrucciones; Diagrama de flujo Pseudocódigo Código en C 15
Estructura iterativa para (for) 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. for(... ;...;...) sentencias; 16
Ejemplo (for) #include<stdio.h> int main(void) int i,n; for(i=0,n=10000;i<n;i++,n=n-i) printf("\t%3d",i); return 0; 17