Issuu on Google+

UNIDAD IV T茅cnicas de Programaci贸n Estructurada

UNIDAD IV

Técnicas de Programación Estructurada

4.1.1 Estructura Selectiva Simple

4.1 Algorítmicas Selectivas

4.0 Estructuras

4.1.3 Estructura Selectiva Múltiple

4.1.4 Estructura Selectiva Anidada 4.2.1 Estructura Repetitiva Fija (for)

4.2.3 Estructura Repetitiva Condicionada ( do-while)

4.2 Algorítmicas Repetitivas 4.2.2 Estructura Repetitiva Condicionada ( while)

4.1.2 Estructura Selectiva Doble

El Lenguaje de Programación C, se basa en la implementación de las siguientes estructuras:

  

Secuencia Selección Iteración

La estructura secuencial se refiere a que cada instrucción de un programa será ejecutada de acuerdo al orden en que aparezca. En un diagrama de flujo por ejemplo, la secuencia se representa mediante una instrucción debajo de la otra como lo podemos ver en el diagrama siguiente:

Inicio

“¿Como te llamas? ”

Nombre “Hola” Nombre Fin

En el diagrama de flujo anterior, se puede apreciar la estructura secuencial en la programación. Las instrucciones se van presentando ordenadamente una bajo la otra y éstas se irán ejecutando secuencialmente de arriba hacia abajo. El programa pregunta al usuario su nombre y lo guarda en la variable Nombre; después despliega un mensaje de saludo “Hola” incluyendo en el mensaje el nombre del usuario que se guardo en dicha variable.

#include <stdio.h> main() { char Nombre[30];

}

printf("多Como te llamas?"); scanf("%s",&Nombre); printf("Hola %s ", Nombre);

Se refiere a un algoritmo que contiene una estructura de Selecci贸n. Lo anterior quiere decir que el programa seguir谩 cierto camino, dependiendo si se cumple o no con una condici贸n.

Esta estructura se refiere al “SI ENTONCES”, lo que quiere decir que si se cumple con cierta condición, entonces el programa realizará algunas instrucciones, de lo contrario se seguirá con el flujo normal del programa. Supongamos que necesitamos un programa que divida un número entre 2; sólo si el número es mayor a cero. Tendremos el diagrama de flujo siguiente:

selectiva0.vsd

En el ejemplo anterior observamos que si se cumple con la condición de que el número es mayor a cero, entonces será divido entre dos. Pero si no se cumple con esa condición, el programa seguirá con su flujo, que este caso es el fin del programa; ya que no existen instrucciones fuera del “SI ENTONCES”.

#include <stdio.h> main() { int Numero,R; printf("Proporciona un numero "); scanf("%d",&Numero); if(Numero>0) { R=Numero/2; printf("El resultado de la division es: %d ",R); } }

Esta estructura se refiere al : “SI ENTONCES / SINO”, significa que si se cumple con cierta condición, entonces el programa realizará algunas instrucciones, de lo contrario se ejecutarán otras. Para este caso tenemos el diagrama de flujo siguiente:

selectiva.vsd

Como pudimos observar en el ejemplo anterior el flujo del programa puede tomar dos caminos, dependiendo si se cumple o no con la condición. Si la edad del usuario es mayor o igual a 18 años, el programa le informará mediante un mensaje: que es mayor de edad; de lo contario le informará: que es menor de edad.

#include <stdio.h> main() { int Edad; printf("Proporciona tu edad "); scanf("%d",&Edad);

}

if(Edad>=18) { printf("Eres mayor de edad "); } else { printf("Eres menor de edad "); }

Esta estructura se refiere que se tendrรกn varias alternativas para ejecutarse; dependiendo de que valor tome la variable a evaluar; se ejecutarรก cierto caso y cada caso tendrรก diferentes instrucciones. Como ejemplo se muestra el diagrama de flujo siguiente:

switch.vsd

En el ejemplo anterior observamos que dependiendo del valor que tenga la variable Valor, será el camino que seguirá el programa. Esto es, que si Valor vale 1, se ejecutarán las instrucciones para ese caso. Si Valor vale un número diferente al que está indicado en alguna opción del programa. El programa ejecutará las instrucciones de la opción default.

#include <stdio.h> main() { int Valor, numero1, numero2, Resultado; printf(" MENU de Operaciones\n\n"); printf("1. SUMA\n"); printf("2. RESTA\n"); printf("3. MULTIPLICACION\n"); printf("4. DIVISION\n"); printf("\n Proporciona el NUMERO de la opcion que deseas "); scanf("%d",&Valor);

switch (Valor) { case 1: printf("Proporciona los valores a sumar separados por una coma: "); scanf("%d,%d",&numero1, &numero2); Resultado = numero1 + numero2; printf("El resultado de la suma es: %d", Resultado); break; case 2: printf("Proporciona los valores a restar separados por una coma: "); scanf("%d,%d",&numero1, &numero2); Resultado = numero1 - numero2; printf("El resultado de la resta es: %d", Resultado); break; case 3: printf("Proporciona los valores a multiplicar separados por una coma: "); scanf("%d,%d",&numero1, &numero2); Resultado = numero1 * numero2; printf("El resultado de la multiplicacion es: %d", Resultado); break; case 4: printf("Proporciona los valores a dividir separados por una coma: "); scanf("%d,%d",&numero1, &numero2); Resultado = numero1 / numero2; printf("El resultado de la division es: %d", Resultado); break; default: printf("La opcion que proporcionaste no es valida"); } }

En esta estructura se manejan varios SI ENTONCES/SINO; dentro uno de otro.

Es decir, que si tengo un SI ENTONCES/SINO, dentro de las instrucciones que se deben ejecutar si se cumplo o no con tal condición, estará otro SI ENTONCES/SINO y dentro de éste; puede haber otro SI ENTONCES/SINO contenido. De esa forma se podrá hacer, las veces que sea necesario.

Enseguida se muestra un ejemplo:

anidado.vsd

En el ejemplo anterior vemos como se puede anidar una estructura selectiva. Dentro de la primera condición, donde se pregunta si el Numero1 es mayor que el Numero2; si se cumple con dicha condición, se incluye otra condición, donde ahora se compara el Numero1 con el Numero3. Si no se cumple con la primer condición, en el SINO se incluye una nueva condición, del Numero2 con el Numero3. Enseguida se muestra la codificación en lenguaje C:

#include <stdio.h> int main() { int Numero1, Numero2, Numero3; printf("Proporciona tres numeros separados por comas\n"); scanf("%d,%d,%d",&Numero1,&Numero2,&Numero3); if (Numero1 > Numero2) { if(Numero1 > Numero3) printf("El numero: %d es el mayor", Numero1); else printf("El numero: %d es el mayor", Numero3); } else { if(Numero2 > Numero3) printf("El numero: %d es el mayor", Numero2); else printf("El numero: %d es el mayor", Numero3); } }

Una Algorítmica Repetitiva se utiliza como su nombre lo dice, para repetir líneas de código, con lo cual implementamos un ciclo. Dicho ciclo se rompe, cuando se deja de cumplir con cierta condición ó cuando se llega al límite de veces que ha establecido . En el lenguaje C tenemos 3 tipos de ciclos, que son los siguientes: • FOR (Estructura repetitiva Fija) • WHILE (Estructura repetitiva Condicionada) • do-WHILE (Estructura repetitiva Condicionada)

El ciclo for se ocupa para repetir un bloque de código de acuerdo a tres parámetros que son: • Valor de inicio de la variable de control. • Condición con la cual se dará fin al ciclo. • El incremento o decremento que sufrirá la variable de control. Usualmente el ciclo for se ocupa, cuando tenemos definidas cuantas veces se necesitan repetir el bloque de código. Enseguida podemos ver el diagrama de flujo que representa este ciclo.

For.vsd

Un ejemplo de c贸digo en lenguaje C, que utiliza el ciclo for #include <stdio.h> main() { int i; printf("La palabra HOLA se repetira 5 veces \n\n"); for(i=0; i<5; i++) { printf("HOLA \n"); } }

En el código C anterior, podemos apreciar el funcionamiento del ciclo implementado mediante un FOR. Dentro de los paréntesis del FOR se especifica: • La inicialización de la variable i, que en este caso se le asigna el valor de 0. • La condición ( i<5 ), la cual especifica que el bloque de código que está dentro de las llaves del For, se ejecute sólo 5 veces. En este caso el bloque de código contenido dentro del For, sólo cuenta con una instrucción de la función printf, que sirve para imprimir el “HOLA”. • La actualización de la variable i; que en este caso se incrementa en uno ( i++), cada vez que se repite el ciclo.

El ciclo while se ocupa para repetir un bloque de código de acuerdo a una condición. Mientras se cumpla con dicha condición, las instrucciones estarán repitiéndose. Cuando el resultado de evaluar la condición sea falso; el ciclo se rompe y entonces termina la ejecución de ese bloque de código. Usualmente el ciclo while se usa, para cuando NO tenemos definidas cuantas veces se necesitan repetir el bloque de código. Enseguida podemos ver el diagrama de flujo que representa este ciclo.

While.vsd

Un ejemplo de c贸digo en lenguaje C, que utiliza el ciclo while: #include <stdio.h> main() { float calif=0, acum=0, prom=0; char resp; int cont=0; while(resp != 'N') { printf("Proporciona la calificacion: "); scanf("%f",&calif); printf("\n Deseas capturar otra calificacion S/N: "); scanf("%s",&resp); acum = acum + calif; cont++;

}

} prom= acum / cont; printf("Tu promedio es: %.2f \n", prom);

En el ejemplo anterior, se declaran e inicializan (con valor de 0) las variables de tipo flotantes: • calif; que sirve para guardar la calificación. •acum; que sirve para guardar la suma de las calificaciones acumuladas. •prom ; que sirve para realizar el promedio de las calificaciones acumuladas. La variable de tipo char: • resp; que sirve para almacenar la letra S o N que da respuesta a la pregunta de que si se quiere introducir otra calificación y que además controla el ciclo while. La variable inicializada en cero y de tipo entero: • cont; que se ocupa para contar el total de calificaciones que fueron introducidas por el usuario.

Dentro de las llaves del while se implementan las instrucciones para solicitar al uuario que introduzca la calificación; dicha calificación se almacena en calif. Después se pregunta si se requiere capturar otra calificación y la respuesta se almacena en la variable resp. También se utiliza una instrucción de operación, donde se realiza la acumulación de las calificaciones capturadas y el resultado se va guardando en la variable acum. El ciclo se estará ejecutando mientras que el valor de la variable resp sea diferente de N. Una vez fuera del ciclo se obtiene el promedio de las calificaciones; para obtener el promedio: se divide el valor de la variable acum, entre la variable que contiene el número total de calificaciones introducidas por el usuario, la variable es: cont. Para finalizar, se despliega en pantalla el promedio obtenido.

El ciclo do-while al igual que el while, se ocupa para repetir un bloque de código de acuerdo a una condición. Mientras se cumpla con dicha condición, las instrucciones estarán repitiéndose. Cuando el resultado de evaluar la condición sea falso; el ciclo se rompe y entonces termina la ejecución de ese bloque de código. La diferencia es que en este ciclo la condición se evalúa hasta el fin del bloque de código; garantizando de esta forma, que las instrucciones dentro del ciclo se ejecuten por lo menos una vez. Enseguida podemos ver el diagrama de flujo que representa este ciclo.

do-While.vsd

#include <stdio.h> #include <stdlib.h> #include <conio.h> main() { float orig=0; float conv=0; int opc=0; do {

system("cls"); printf("1- Pulgadas a Yardas\n"); printf("2- Yardas a Metros\n"); printf("3- Millas a km\n"); printf("4- Salir\n"); printf(â&#x20AC;&#x153;Que opcion eliges\n"); scanf("%d",&opc);

switch(opc) { case 1: printf(â&#x20AC;&#x153;Dame las pulgadas"); scanf("%f",&orig); conv=orig*0.0278; printf("%f yardas",conv); break; case 2: printf(â&#x20AC;&#x153;Dame las yardas"); scanf("%f",&orig); conv=orig*0.9; printf("%f metros",conv); break; case 3: printf("dame las millas"); scanf("%f",&orig); conv=orig/1609; printf("%f kilometros",conv); break;

case 4: printf("bye"); break; default: printf("opcion erronea"); } getch(); }while(opc!=4); }

En el programa anterior podemos apreciar el comportamiento del ciclo do-while. Es muy útil usarlo para implementar un menú, mediante la función switch. Por medio del ciclo do-while se garantiza que por lo menos se muestre una vez el menú que se proporciona al usuario y le permita elegir una opción. Se agregan dos librerías más: • stdlib.h que sirve para que reconozca la función system, la cual ocupamos para limpiar la pantalla, mediante el comando cls. • conio.h que sirve para que reconozca la función getch(), la cual nos proporciona una pausa en donde se posiciona dicha instrucción. La función switch se coloca dentro del do-while para que se esté repitiendo hasta que el usuario proporcione el número 4. Ya que en la condición está: while(opc!=4) lo que quiere decir que el ciclo se estará ejecutando mientras el número sea diferente de 4.

BIBLIOGRAFIA Curso de Programaci贸n con C, Francisco Javier Ceballos, Macrobit. Como programar en C/C++, H.M Deitel, Prentice Hall


TECNICAS DE PROGRAMACION ESTRUCTURADA