2. CONTROL DE FLUJO
Controlar el flujo es determinar el orden en
el que se ejecutarán las instrucciones en nuestros
programas. Si no existiesen las sentencias de
control entonces los programas se ejecutarían de
forma secuencial, empezarían por la primera
instrucción e irían una a una hasta llegar a la
última.
Pero, obviamente este panorama sería muy malo para el
programador. Por un lado, en sus programas no existiría la
posibilidad de elegir uno de entre varios caminos en función de
ciertas condiciones (sentencias alternativas). Y por el otro, no
podrían ejecutar algo repetidas veces, sin tener que escribir el
código para cada una (sentencias repetitivas)
3. CONTROL DE FLUJO
Para estos dos problemas tenemos dos soluciones: las sentencias de control alternativas y las repetitivas. Estos dos conjuntos de sentencias forman en
Pascal el grupo de las sentencias estructuradas. Y se les llama estructuradas porque a diferencia de las simples pueden contener en su cuerpo otras sentencias.
Las sentencias alternativas también son conocidas como sentencias selectivas porque permiten seleccionar uno de entre varios caminos por donde seguirá
la ejecución del programa. En algunos casos esta selección viene determinada por la evaluación de una expresión lógica. Este tipo de sentencias se dividen
en dos:
• La sentencia if
• La sentencia case
4. CONTROL DE FLUJO
A las sentencias repetitivas se les conoce también como sentencias iterativas ya que permiten realizar algo varias veces (repetir,
iterar). Dentro de ellas distinguimos tres:
5. ESTRUCTURA SECUENCIAL
La estructura secuencial es
aquella en la que una acción
(instrucción) 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 fin del
proceso.
En Pseudocódigo una Estructura
Secuencial se representa de la
siguiente forma:
6. ESTRUCTURA SECUENCIAL
Observe el siguiente problema de tipo cotidiano y sus respectivos
algoritmos representados en Pseudocódigo y en diagramas de flujos:
Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo.
7. ESTRUCTURA SECUENCIAL
• El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra
de una estructura secuencial. Ahora veremos los componentes que pertenecen a ella:
•Asignación
La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con
el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
• Simples: Consiste en pasar un valor constante a una variable (a 15)
• Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a a + 1)
• Acumulador: Consiste en usarla como un sumador en un proceso (a a + b)
• De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a c +
b*2/4).
En general el formato a utilizar es el siguiente:
< Variable > <valor o expresión >
El símbolo debe leerse “Asigne”
10. ESTRUCTURA SECUENCIAL
DECLARACION DE VARIABLES Y CONSTANTES
La declaración de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarán, además de colocar el nombre
de la variable se debe decir qué tipo de variable es.
• Contador: ENTERO
• Edad, I: ENTERO
• Dirección : CADENA_DE_CARACTERES
• Salario Básico : REAL
• Opción : CARACTER
En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero; Salario Básico es una variable de tipo real, Opción es de tipo
carácter y la variable Dirección está declarada como una variable alfanumérica de cadena de caracteres.
En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor.
• CONSTANTE Pi 3.14159
• CONSTANTE Msg “Presione una tecla y continúe”
• CONSTANTE ALTURA 40
Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es
decir, no es camisa de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos
hacerlos más entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre ellos el
C++) requieren que necesariamente se declaren las variables que se van a usar en los programas.
11. ESTRUCTURAS DE CONTROL
SELECTIVA
En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se
realiza una operación u otra. Las condiciones se especifican usando expresiones lógicas(ejemplo: 5>6
)se clasifican en:
• Simples
• Dobles
• múltiples
Dobles
múltiples
12. ESTRUCTURA DE CONTROL SIMPLE
Sentencia IF
Toma una decisión referente a la acción a ejecutar en un programa
entre dos alternativas basándose en el resultado (verdadero o falso) en
una expresión.
13. ESTRUCTURA DE CONTROL SIMPLE
Sintaxis
if (condición) Instrucción ejecutada cuando
la condición es "verdadera";
else
Instrucción ejecutada
cuando la condición es
"falsa";
Cuando en un programa que se esté ejecutando se encuentra la instrucción if, la condición será evaluada
para determinar su valor numérico, el cual será interpretado como verdadero o falso. Si la condición produce
cualquier valor numérico positivo o negativo que no sea cero, será considerada como condición "verdadera"
y se ejecutará la instrucción que sigue al if. Si la condición produce un valor numérico de cero, será
considerada "falsa" y se ejecutará la instrucción que sigue al else La parte del else es opcional y se puede
omitir.
Los operadores relacionales o lógicos serán utilizados para operar con números enteros, flotantes, dobles
o carácter en la instrucción if.
14. ESTRUCTURA DE CONTROL SIMPLE
edad > 40 largo <= 50 temp > 98.6
3 < 4 marcador ==
terminar
num_id ==682
día != 5 2.0 > 3.3 hora > 40
Ejemplos
edad > 40 && edad < 20 // si edad es mayor a 40 Y edad es menor
que 20
numero > 2 && numero <= 9 // si numero es mayor a 2 Y numero es
menor o igual que 9
numero > 5 || numero <= 15 // si numero es mayor a 5 O numero es
menor o igual que 15
numero > 8 || numero <= 12 // si numero es mayor a 8 O numero es
menor o igual que 12
15. ESTRUCTURA DE CONTROL SIMPLE
argo =< 50 // operador fuera de orden
2.0 >>3 // operador invalido
marcador = = terminar // no se permiten espacios
intermedios
Ejemplos inválidos:
Sintaxis a utilizar dentro de un programa:
#include<iostream.h>
#include<dos.h>
#include<conio.h>
int main ( )
{
textbackground(3) ; // sirve para asignar color al fondo de
pantalla
clrscr() ;
textcolor(2) ; // sirve para asignar color al texto
clrscr() ;
int num;
cout<<"Dame un numero al azar no
mayor a 30" << endl;
cin>>num;
if ( num > 30 )
cout<<"Número invalido";
if ( num > 1 ) && (num < 30)
cout<<"Bien acertaste el rango";
getch();
return 0;
}
16. ESTRUCTURA MULTIPLE
Con frecuencia es necesario que existan
más de dos elecciones posibles. Este
problema se podría resolver por estructuras
selectivas simples o dobles, anidadas o en
cascada, pero si el número de alternativas
es grande puede plantear serios problemas
de escritura y de legibilidad.
Usando la estructura de decisión múltiple
se evaluará una expresión que podrá tomar
n valores distintos, 1, 2 , 3, ....,n y según
que elija uno de estos valores en la
condición, se realizará una de las n acciones
o lo que es igual, el flujo del algoritmo
seguirá sólo un determinado camino entre
los n posibles.
Esta estructura se representa por un
selector el cual si toma el valor 1 ejecutará
la acción 1, si toma el valor 2 ejecutará la
acción 2, si toma el valor N realizará la
acción N.
17. ESTRUCTURA DOBLE
Son estructuras lógicas que permiten controlar la ejecución de varias acciones y se utilizan
cuando se tienen dos opciones de acción, por la naturaleza de estas se debe ejecutar una o la
otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
Representación pseudocodificada.
Español Inglés
Si <condición> entonces If <condición> then
<acción S1> <acción S1>
sino else
<acción S2> <acción S2>
Fin_Si End_if
Entonces, si una condición C es
verdadera, se ejecuta la acción S1 y si es
falsa, se ejecuta la acción S2.
18. ESTRUCTURAS ITERATIVAS: REPETIR
MIENTRAS, HASTA, DESDE.
Estructuras iterativas. Estructura mientras.
Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte
verdadera. Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada,
llamada el cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana, y si todavía es cierta
se ejecuta de nuevo el cuerpo. Este proceso de evaluación de la expresión booleana y ejecución del
cuerpo se repite mientras la expresión sea cierta.
Cuando se hace falsa, finaliza la repetición. En la lección anterior iniciamos con las estructuras
repetitivas. La estructura While y la estructura Repeat, se conocen como Iterativas. Se usan cuando no
se conoce con anticipación el número de veces que se ejecutará la acción.
La diferencia entre ambas es que la condición se sitúa al principio (Mientras) o al final (Repetir) de la
secuencia de instrucciones. Entonces, en el primero, el bucle continúa mientras la condición es
verdadera (la cual se comprueba antes de ejecutar la acción) y en el segundo, el bucle continúa hasta
que la condición se hace verdadera (la condición se comprueba después de ejecutar la acción, es
decir, se ejecutará al menos una vez).
19. ESTRUCTURAS ITERATIVAS: REPETIR
MIENTRAS, HASTA, DESDE.
La estructura Desde/Para suele utilizarse
cuando se conoce con anterioridad el número
de veces que se ejecutará la acción y se le
conoce como Estructura Repetitiva en lugar
de iterativa, para diferenciarla de las dos
anteriores.
Las estructuras Mientras y Para/Desde
suelen en ciertos casos, no realizar ninguna
iteración en el bucle, mientras que Repetir
ejecutará el bucle al menos una vez.
Existe otro caso de estructura conocida
como Salto (Goto), la cual no es muy
recomendable de usar ya que su uso dificulta
la legibilidad de un programa y tiende a
confundir por el hecho de recurrir a
numerosas etiquetas o números de línea.
20. ESTRUCTURAS ITERATIVAS: REPETIR
MIENTRAS, HASTA, DESDE.
Centinelas
En un ciclo While controlado por tarea, la condición de While especifica que el cuerpo del ciclo debe continuar ejecutándose mientras la tarea no
haya sido completada.
En un ciclo controlado por centinela el usuario puede suspender la introducción de datos cuando lo desee, introduciendo una señal adecuada
llamada centinela. Un ciclo Repetir controlado por centinela es cuando el usuario digita una letra para salir como por ejemplo S o N para indicar si
desea continuar o no. El bucle debe repetirse hasta que la respuesta del usuario sea "n" o "N".
Cuando una decisión toma los valores de -1 o algún posible valor que no esté dentro del rango válido en un momento determinado, se le
denomina centinela y su función primordial es detener el proceso de entrada de datos en una corrida de programa.
Por ejemplo, si se tienen las calificaciones de un test (comprendida entre 0 y 100); un valor centinela en esta lista puede ser -999, ya que nunca
será una calificación válida y cuando aparezca este valor se terminará de ejecutar el bucle.
Si la lista de datos son números positivos, un valor centinela puede ser un número negativo. Los centinelas solamente pueden usarse con las
estructuras Mientras y Repetir, no con estructuras Desde/Para. ¿PODRÍAS DECIR POR QUÉ?
Centinelas y banderas
21. ESTRUCTURAS ITERATIVAS: REPETIR
MIENTRAS, HASTA, DESDE.
Centinelas ejemplos:
Suponga que debemos obtener la suma de los gastos que hicimos en nuestro último viaje, pero no
sabemos exactamente cuántos fueron.
Si definimos gasto1, gasto2, gasto3, ...., -1 donde gastoi: real es el gasto número i y sumgas: real
es el acumulador de gastos efectuados. -1 es el centinela de fin de datos.
Algoritmo:
Centinelas y banderas
Inicio
Sumgas . 0
Leer (gasto)
Mientras gasto <> -1 hacer
Sumgas . sumgas + gasto
Leer (gasto)
Fin_mientras
Escribir (sumgas)
Fin
22. ESTRUCTURAS ITERATIVAS: REPETIR
MIENTRAS, HASTA, DESDE.
Banderas
Conocidas también como interruptores, switch, flags o conmutadores, son variables que pueden tomar
solamente dos valores durante la ejecución del programa, los cuales pueden ser 0 ó 1, o bien los valores
booleanos True o False. Se les suele llamar interruptores porque cuando toman los valores 0 ó 1 están
simulando un interruptor abierto/cerrado o encendido/apagado.
Centinelas y banderas
Ejemplo 1:
Leer un número entero N y calcular el resultado de la siguiente serie: 1 - 1/2+ 1/3 - 1/4
+.... +/- 1/N.
23. ESTRUCTURAS ITERATIVAS: REPETIR MIENTRAS,
HASTA, DESDE.
Algoritmo:
Centinelas y banderas
Inicio
Serie . 0
I . 1
Leer (N)
Band . "T"
Mientras I <= N
hacer
Si band = "T"
entonces
Serie . serie + (1/I)
Band . "F
Sino
Serie . serie - (1/I)
Band . "T"
Fin_si
I ¬ I + 1
Fin_mientras
Escribir (serie)