Вы находитесь на странице: 1из 34

Charlens lvarez Jimnez Programacin de Computadores Universidad Nacional de Colombia

FLUJO DE CONTROL

Introduccin
Uno de los mas importantes avances fue el reconocimiento a finales del los sesenta de que cualquier algoritmo, no importaba su complejidad, poda ser construido utilizando combinaciones de tres estructuras de control estandarizadas: secuencial, seleccin, repetitiva o iterativa; y una cuarta denominada invocacin o salto. Seleccin: if, switch Repeticin: for, while, do-while Salto o bifurcacin: break, continue, goto, return, throw

Flujo de control de un programa


El trmino flujo de control se refiere al orden en que se ejecutan las sentencias del programa. Otro trmino utilizado es secuenciacin. A menos que se especifique expresamente, el flujo normal de control de todos los programas es secuencial. El trmino significa que las sentencias se ejecutan en secuencia, una detrs de otra, en el orden en que se sitan dentro del programa. Las estructuras de seleccin, repeticin e invocacin permiten que el flujo secuencial del programa sea modificado al definido antes.

ESTRUCTURA SECUENCIAL

Estructura secuencial
Es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el final del proceso. Ejercicio: Calculo de la suma y producto de dos nmeros:
Inicio leer(A) leer(B) sA+B pA*B escribir(s,p) fin

ESTRUCTURA SELECTIVA

Estructura selectiva
Se utilizan para tomar decisiones lgicas, de ah que suelen denominarse tambin estructuras de decisin o alternativas. En las estructuras selectivas se evala una condicin y en funcin del resultado de la misma se realiza una opcin u otra. Las condiciones se especifican usando expresiones lgicas. Pueden ser: Simples Dobles Mltiples

Alternativa simple - if
Ejecuta una determinada accin cuando se cumple una determinada condicin. La seleccin if evala la condicin y: Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones). Si la condicin es falsa, entonces no hace nada
si <condicion> <acciones> fin_si

Alternativa doble if else


La estructura anterior es muy limitada y normalmente se necesitar una estructura que permita elegir entre dos opciones o alternativas posibles, en funcin del cumplimiento o no de una determinada condicin. Si la condicin es verdadera se ejecuta S1 y si es falsa se ejecuta S2
si <condicion> <accion S1> si_no <accion S2> fin si

Ejemplo
Empleo de la estructura selectiva para averiguar si un ao ledo de teclado es o no bisiesto.
si (ao%4==0) y (ao%100!=0) o (ao%100==0) imprima(ao bisiesto) si_no imprima(ao no bisiesto) fin si

Alternativa mltiple - switch


Con frecuencia en la prctica es necesario que existan ms de dos elecciones posibles. La estructura de decisin mltiple evaluar una expresin que podra tomar n valores distintos, 1, 2, 3,, n. Segn se elija uno de estos valores en la condicin, se realizar una de las n acciones.

Ejemplo
Se desea disear un algoritmo que escriba los nombres de los das de la semana en funcin del valor de una variable DIA introducida por teclado.

Estructuras de decisin anidadas (en escalera)


Es posible tambin utilizar la instruccin if para disear estructuras de seleccin que contentan mas de dos alternativas.
si <condicion1> si <condicion2> <accion S1> fin_si fin_si if (condicion 1){ if (condicion 2){ instrucciones; } }

Estructuras de decisin anidadas en C++


Otro ejemplo si<condicion1> <accion S1> fin_si si_no si<condicion2> <accion S2> fin_si si_no <accion S3> fin_sino fin_sino
if (condicion 1){ instrucciones; } else{ if (condicion 2){ instrucciones; } else{ instrucciones; } }

ESTRUCTURA REPETITIVA

Introduccin
Muchos problemas requieren de caractersticas de repeticin en las que algunos clculos o secuencia de instrucciones se repiten una y otra vez, utilizando diferentes conjuntos de datos (ej.Validacin de datos). Las estructuras que repiten una secuencia de instrucciones un numero determinado de veces se denominan bucles y se denomina iteracin al hecho de repetir la ejecucin de una secuencia de acciones.

Ejemplo
Se desea sumar una lista de nmeros escritos desde el teclado. El medio conocido hasta ahora es leer los nmeros y aadir sus valores a una variable suma que contenga las sucesivas sumas parciales
algoritmo suma entero suma, num inicio suma=0 leer(num) suma=suma+num leer(num) suma=suma+num leer(num) suma=suma+num fin

Ejemplo
Y asi sucesivamente para cada nmero de la lista. En otras palabras, el algoritmo repite muchas veces las acciones:
leer(num) suma=suma+num

Tales operaciones repetidas se denominan bucle o lazos. La accin o acciones que se repiten en un bucle se denominan iteracin. Las dos principales preguntas de un bucle son: Qu contiene el bucle? Y Cuntas veces se debe repetir?

Estructura de un bucle
Cuando se utiliza un bucle para sumar una lista de nmeros se necesita saber cuntos nmeros se han de sumar. Para ello necesitamos conocer algn medio para detener el bucle. En el ejemplo anterior se le puede solicitar al usuario que digite la cantidad N de nmeros que desea sumar. Existen dos procedimientos para contar el nmero de iteraciones:
Inicio total=N suma=0 mientras total>0 hacer leer(numero) suma=suma+numero total=total-1 fin_mientras fin

Estructura mientras (while (while) )


La estructura repetitiva mientras (en ingles while o dowhile: hacer mientras) es aquella en que el cuerpo del bucle se repite mientras que se cumpla determinada condicin. Cuando se ejecuta la instruccin mientras, la primera cosa que sucede es que se evala la condicin (una expresin booleana) si se evala falsa, no se toma ninguna accin y el programa prosigue en la siguiente instruccin despus del bucle. Si la expresin booleana es verdadera, entonces se ejecuta el cuerpo del bucle, y se vuelve a evaluar de nuevo la condicin. Este proceso se repite una y otra vez mientras la expresin booleana sea verdadera.

Estructura mientras (while (while) )

Un poco ms de esta estructura


Inicio n=5 s=0 mientras n<=4 hacer leer(x) s=s+x fin_mientras fin Inicio leer(capital) /* dinero tasa=10 mientras tasa !=20 hacer interes=tasa*0.01*capital escribir(interes) tasa=tasa+3 fin_mientras fin

Qu sucede con cada uno de estos bucles?

Un poco ms de esta estructura


Inicio n=5 s=0 mientras n<=4 hacer leer(x) s=s+x fin_mientras fin Inicio leer(capital) /* dinero tasa=10 mientras tasa !=20 hacer interes=tasa*0.01*capital escribir(interes) tasa=tasa+3 fin_mientras fin Ejecucin de bucle infinito

Ejecucin del bucle cero veces

Ejercicios
1.

Qu visualizar y cuntas veces se ejecuta cada uno de los siguientes bucles?


i=0 mientras i<6 hacer escribir(i) i=i+1 fin_mientras i=0 mientras i<6 hacer i=i+1 escribir(i) fin_mientras

Ejercicios
1.

Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos y se detiene el bucle si se lee un nmero negativo o cero.

Estructura para (for (for) )


En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el numero de iteraciones es fijo, se debe usar la estructura para (for en ingles). La estructura ejecuta las acciones del cuerpo del bucle un numero especificado de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle.

Estructura para (for (for) )

VARIABLES TILES PARA LAS ITERACIONES

Tipo de variables tiles para iteraciones


Cuando se disean algoritmos que incluyen estructuras repetitivas, existen ciertas variables que cumplen una funcin especfica en cada iteracin del ciclo, las mas comunes son: Contadoras Acumuladoras Bandera

Variables contadoras
Como su nombre lo indica estas variables se usan fundamentalmente para contar, por lo tanto debe ser del tipo entero. Una variable contadora se incrementa (o decrementa) en un valor constante en cada iteracin del ciclo. Es as como en el algoritmo presentado anteriormente para resolver el problema de calcular la cantidad de nmeros que el usuario ha digitado, la variable c es una variable contadora.

Variables acumuladoras
La funcin de una variable acumuladora es almacenar valores numricos que generalmente se suman (o multiplican) en cada iteracin, por lo tanto la variable debe ser de tipo entero o real. Por ejemplo, en los diferentes algoritmos presentados para solucionar el problema de calcular la suma de los nmeros naturales desde 1 hasta n, la variable suma es una variable acumuladora.

Variable bandera
Una variable bandera es utilizada dentro de la condicin de un ciclo, para determinar cundo un ciclo se sigue iterando o cuando no. De esta manera una variable bandera debe ser de tipo booleano o entero. Un ejemplo podra ser: realizar un programa que lea una serie de nmeros reales y los sume. El programa debe preguntar al usuario cuando desea ingresar un siguiente dato. Si el usuario desea continuar ingresando datos se debe seguir solicitando datos y si el usuario confirma su deseo de salir, el programa debe mostrar la suma de los datos ledos y terminar.

Laboratorio
1. 2. 3.

4.

5. 6.

Escribir los nmeros del 1 al 100 Validacin de datos: mes 1 a 12 Disear algoritmo para imprimir la suma de los nmeros impares menores o iguales a un n dado por el usuario. Leer sucesivamente nmeros del teclado hasta que aparezca un nmero comprendido entre 1 a 5. Calcular el mximo de una serie de 20 nmeros. Determinar simultneamente los valores, mximo y mnimo de 20 nmeros.