Tema4 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 52

Estructuras de Control

Contenido del Tema


4.1. Introduccin.
4.2. Expresiones lgicas.
4.3. Estructuras selectivas.
4.3.1. Sentencia de seleccin simple.
4.3.2. Sentencia de seleccin binaria.
4.3.3. Sentencia de seleccin mltiple.
4.3.4. Anidamientos.
4.4. Estructuras repetitivas.
4.4.1. Sentencia repetitiva MIENTRAS.
4.4.2. Sentencia repetitiva REPETIR.
4.4.3. Sentencia repetitiva PARA.
4.4.4. Anidamientos.
T
E
M
A
4
T
E
M
A
4
Introduccin a los computadores
Introduccin a los computadores
Introduccin
Composicin secuencial de sentencias
Recurso insuficiente por s slo.
No permite resolver problemas que exijan una toma de
decisin.
No permite la ejecucin de un conjunto de acciones un
nmero determinado de veces.
accin1 accin2 accin3
Introduccin a los computadores
Necesidad de herramientas para alterar el orden lgico
de las sentencias
Ejecutar unas sentencias u otras
Estructura selectiva
Ejecutar un nmero de veces unas acciones
Estructura iterativa
Capacidad de realizar preguntas sobre objetos del programa
Expresiones lgicas
Introduccin
Introduccin a los computadores
Expresiones Lgicas
Condicionales, lgicas, booleanas.
Posibles valores una vez evaluadas:
VERDADERO
FALSO
Introduccin a los computadores
Expresiones lgicas
Construccin:
?Variable lgica Asignacin: Bool=VERDADERO
Bool
?Mediante operadores relacionales:(==,<=,<,>=,>,!=)
a>3
?Relaciones de comparacin combinadas mediante operadores lgicos:
Y(conjuncin),O(disyuncin),NO(negacin)
(a>3) Y (3+c!=9)
Los operandos de los operadores lgicos pueden ser expresiones cuya
evaluacin sea un resultado lgico (es decir, expresiones lgicas)
Introduccin a los computadores
Expresiones lgicas
Expresiones vlidas
NO((letra==Q)O(letra==z))Y(x>=6)
(largo==ancho)Y NO(x<5)
x Y (altura<=5)
((n+m)!=10) O (x<5)
Por qu los parntesis?
?Orden de precedencia. Cada operador tiene una prioridad.
Ejemplo: v= NO x Y y (B v,x,y)
x,y son FALSO
v==verdadero v==falso?
Introduccin a los computadores
Expresiones lgicas
Orden de precedencia
NO
*,/
+,-
relacionales
igualdad
Y, O
Si queremos cambiar el orden de ejecucin, parntesis Si queremos cambiar el orden de ejecucin, parntesis
En caso de duda, parntesis En caso de duda, parntesis
+
-
Introduccin a los computadores
Expresiones Lgicas
Evaluacin de expresiones lgicas en
CORTOCIRCUITO
(ExpLgica) Y (ExpLgica)
(ExpLgica) O (ExpLgica)
Ejemplo:
(100 DIV j<2) Y (j>0)
Evaluacin??
Introduccin a los computadores
Expresiones lgicas
Equivalencias de algunas expresiones lgicas.
Z A,B,C,D
? NO(A==B) es equivalente a A!=B
? NO((A==B)O(A==C)) (A!=B)Y(A!=C)
? NO((A==B)Y(C>D)) (A!=B)O(C<=D)
Leyes de De Mor gan
Introduccin a los computadores
Expresiones lgicas
Ejemplos:
a) Si B valor, cmo se puede poner de otra forma la
expresin lgica valor==FALSO?
b) y valor==verdadero?
c) B prueba,valor, prueba=valor==FALSO es
correcto?a qu es equivalente?
Introduccin a los computadores
Expresiones lgicas
d) Si B cierto
Z x,y
cierto=(x<y)Y(y<x) es equivalente a?
cierto=(x<=y)O(y<=x)
Introduccin a los computadores
Estructuras Selectivas
Control de seleccin, alternativas.
Ejecutar un bloque de acciones dependiendo de la
evaluacin de una condicin.
3 tipos de sentencias alternativas:
Sentencias de seleccin simple
Sentencias de seleccin binaria
Sentencias de seleccin mltiple
Introduccin a los computadores
Estructuras Selectivas
Sentencia de Seleccin simple.
Sintaxis
SI CondControl ENTONCES
accionesdentro
FINSI
accionseguida
Ejemplo: probar si un valor es positivo o negativo
SI dato>0 ENTONCES
Escribir( Incorrecto)
FINSI
Escribir(dato)
Introduccin a los computadores
Estructuras Selectivas
Diagrama de Flujo
Acciones
verdad
ero
falso
CondControl
Introduccin a los computadores
Estructuras Selectivas
Sentencia de seleccin binaria.
Sintaxis
SI CondControl ENTONCES
accionesSI
SINO
accionesEOC
FINSI
accionseguida
Introduccin a los computadores
Estructuras Selectivas
AccionesEOC
falso
CondControl
AccionesSI
verdad
ero
Diagrama de Flujo
Introduccin a los computadores
Estructuras Selectivas
Ejemplo: probar si un valor es positivo o negativo
SI dato>0 ENTONCES
Escribir(Positivo)
SINO
Escribir(Negativo o cero)
FINSI
Escribir(dato)
Introduccin a los computadores
Estructuras Selectivas
Ejemplo: Algoritmo que lea tres nmeros diferentes e imprima
en pantalla los valores mximo y mnimo
Ejemplo: Algoritmo que lea de teclado los coeficientes de una
ecuacin de segundo grado, e imprima las races de dicha
ecuacin.
Ejemplo: Algoritmo que lea un nmero de paquete seguido de
un peso en kilos, y que escriba a la salida el nmero de
paquete, seguido de CLASE1 si el peso del paquete es
menor de 32 kilos, CLASE2 si va de 32 a 128 kilos y
CLASE3 para ms de 128 kilos.
Introduccin a los computadores
Estructuras Selectivas
Sentencia de seleccin mltiple
Sintaxis
CASO expresin SEA
valores
1
: sentencias
1
valores
2
: sentencias
2
...... ......
valores
n
: sentencias
n
SINO
accionesEOC
FINCASO
accionseguida
Selector
Introduccin a los computadores
Estructuras Selectivas
Cmo funciona la sentencia CASO?
1.- Evaluacin del selector
2.- Comparacin del selector con los valores
i
3.- Ejecucin de las sentencias correspondientes
4.- Fin de la sentencia. Ejecucin de la accionseguida
Errores posibles
El valor del selector aparece en ms de una lista de valores
i
El selector no es de tipo ordinal
Introduccin a los computadores
Estructuras Selectivas
Ejemplo
CASO Mes SEA
1,2,4,5,6,8,9: /*no ejecutamos nada con estos valores*/
3:Escribir( Cumpleaos de Ana)
7:Escribir(Aniversario de Carolina)
11:Escribir(Mi cumpleaos)
Escribir(Habr que celebrarlo)
FINCASO
Mes=1,2,4,5,6,8,9 no ejecuta nada
Mes=10, 12 ERROR DE EJ ECUCIN
NOTA:es posible incluir un subrango en la lista de valores
i
1,2,4..6,8,9
Introduccin a los computadores
Estructuras Selectivas
Anidamientos
SI CondControl1 ENTONCES
acciones1
SINO
SI CondControl2 ENTONCES
acciones2
SINO
SI CondControl3 ENTONCES
acciones3
SINO
acciones4
FINSI
FINSI
FINSI
SI CondControl1 ENTONCES
acciones1
SINOSI CondControl2 ENTONCES
acciones2
SINOSI CondControl3 ENTONCES
acciones3
SINO
acciones4
FINSI
Introduccin a los computadores
Estructuras Selectivas
Objetivo metodolgico: LEGIBILIDAD
Realizar un sangrado o indentacin
Incluir comentarios
Ejemplo: SI CondControl ENTONCES /* 1 */
SINO
SI CondControl ENTONCES /* 2 */
SINO
SI CondControl ENTONCES /* 3 */
SINO
FINSI /* 3 */
FINSI /* 2 */
FINSI /* 1 */
A
L
G
O
R
I
T
M
O
M
A
Y
O
R
V
A
R
Z
m
a
y
,

a
,

b
,

c
I
N
I
C
I
O
E
s
c
r
i
b
i
r
(

I
n
t
r
o
d
u
z
c
a

t
r
e
s

n
u
m
e
r
o
s

)

L
e
e
r
(
a
,
b
,
c
)
S
I
a
>
b

E
N
T
O
N
C
E
S
/
*
1
*
/
S
I
a
>
c

E
N
T
O
N
C
E
S
m
a
y


=

a
S
I
N
O
m
a
y


=

c
F
I
N
S
I
S
I
N
O
S
I
b
>
c

E
N
T
O
N
C
E
S
m
a
y


=

b
S
I
N
O
m
a
y


=

c
F
I
N
S
I
F
I
N
S
I
/
*
1
*
/
E
s
c
r
i
b
i
r
(

m
a
y

)
F
I
N
M
A
Y
O
R
E
j
e
m
p
l
o
:
A
l
g
o
r
i
t
m
o

p
a
r
a

d
e
t
e
r
m
i
n
a
r

e
l

m
a
y
o
r

d
e

t
r
e
s

v
a
l
o
r
e
s
Introduccin a los computadores
Estructuras Selectivas
? Matiz referente a la legibilidad
Los siguientes grupos de sentencias ejecutan lo mismo:
CASO Operador SEA
+ : Resultado = a+b
- : Resultado = a-b
* : Resultado = a*b
/ : Resultado = a/b
SINO
Escribir( Operador Indefinido)
FINCASO
Introduccin a los computadores
Estructuras Selectivas
SI Operador ==+ENTONCES
Resultado=a+b
SINO
SI Operador==- ENTONCES
Resultado=a-b
SINO
SI Operador==* ENTONCES
Resultado= a*b
SINO
SI Operador==/ENTONCES
Resultado=a/b
SINO
Escribir(Operador Indefinido)
FINSI
FINSI
FINSI
FINSI
Insertar los nmeros de las sentencias
SI entre comentarios
Introduccin a los computadores
Estructuras Selectivas (C)
if (CondControl) {
accionesSI
}
accionseguida
if (CondControl) {
accionesSI
}
else {
accionesEOC
}
accionseguida
Introduccin a los computadores
Estructuras Selectivas (C)
if (CondControl) {
accionesSI
}
else if ( CondControl1) {
accionesCC1
}
else if (CondControl2) {
accionesCC2
}
else {
accioneselse
}
accionseguida
Introduccin a los computadores
Estructuras Selectivas (C)
switch (expresion){
case exp-const: proposiciones
break;
case exp-const: proposiciones
break;
case exp-const: proposiciones
break;
default : proposiciones
break;
}
Introduccin a los computadores
Estructuras Repetitivas
Necesarias en la mayora de los algoritmos.
Estructura repetitiva = bucle = lazo.
Iteracin
Ejecutan un conjunto de operaciones un nmero
determinado o indeterminado a priori de veces.
Cuantas veces se ejecutan las instrucciones?
Condicin de control
Introduccin a los computadores
Estructuras Repetitivas
A) Nmero de veces indeterminado a priori.
Estructura MIENTRAS
Sintaxis :
MIENTRAS CondControl HACER
Acciones
FINMIENTRAS
Introduccin a los computadores
Estructuras Repetitivas
Acciones
CondControl
falso
Diagrama de flujo
verdad
ero
Introduccin a los computadores
Estructuras Repetitivas
Condicin de control del bucle = expresin lgica
Las sentencias que forman el cuerpo del bucle se ejecutan 0
o ms veces.
BUCLE PREPRUEBA.
Condicin verdadero seguir ejecutando el cuerpo
Algunos ejemplos de bucles con nombre:
Bucle controlado por contador
Bucle controlado por centinela
Bucle contador
Introduccin a los computadores
Estructuras Repetitivas
Bucle controlado por contador
Se ejecuta un nmero determinado de veces.
Variable de control del bucle
inicializacin, evaluacin, incremento
i=1 /*Inicializacin*/
MIENTRAS i<10 HACER /*Evaluacin*/
acciones
i=i+1 /*Incremento*/
FINMIENTRAS
Cuantas veces se ejecuta el anterior bucle?
Introduccin a los computadores
Estructuras Repetitivas
Bucle controlado por centinela
Centinela = valor especial que controla el final del bucle
Es necesario actualizar el centinela en cada iteracin
LECTURA ADELANTADA
Leer(centinela)/*lectura adelantada*/
MIENTRAS centinela!=0 HACER
acciones
Leer(centinela)/*actualizacin*/
FINMIENTRAS
Introduccin a los computadores
Estructuras Repetitivas
Bucle contador
til cuando se quiere contar el nmero de veces que se
ejecuta el bucle.
La expresin lgica no depende del contador
cont=0
Leer(ch)
MIENTRAS ch!= . HACER
Escribir(ch)
cont=cont+1
Leer(ch)
FINMIENTRAS
Introduccin a los computadores
Estructuras Repetitivas
Estructura REPETIR
Sintaxis :
REPETIR
Acciones
HASTA QUE CondControl
Introduccin a los computadores
Estructuras Repetitivas
Diagrama de flujo.
Acciones
CondControl
falso
verdad
ero
Introduccin a los computadores
Estructuras Repetitivas
Condicin de control del bucle = expresin lgica
Las sentencias que forman el cuerpo del bucle se
ejecutan 1 o ms veces.
BUCLE POSTPRUEBA.
Condicin falso seguir ejecutando el cuerpo
Menos general que el bucle MIENTRAS.
Introduccin a los computadores
Estructuras Repetitivas
B) Nmero de veces determinado a
priori.
Estructura PARA
Sintaxis :
PARA vcb=vi HASTA vf ( PASO p)HACER
acciones
FINPARA
Introduccin a los computadores
Estructuras Repetitivas
Cmo se ejecuta?
Ejemplo: Suma=0
PARA i= 1 HASTA 10 HACER
Leer(valor)
Escribir(valor)/*Eco*/
Suma=Suma + valor
FINPARA
Introduccin a los computadores
Estructuras Repetitivas
?La vcb se incrementa (decrementa) automticamente.
?El valor de la vcb puede usarse, pero no cambiarse
dentro del bucle.
?La vcb queda indefinida al salir del bucle.
?La vcb puede ser de cualquier tipo ordinal.
?El bucle se ejecuta en su totalidad.
?Los valores de vi y vf se evalan una sola vez.
Introduccin a los computadores
Estructuras Repetitivas
Fcilmente podemos disear un bucle MIENTRAS
equivalente
vcb=vi
MIENTRAS (vcb<=vf) HACER
/*si paso negativo MIENTRAS (vcb>=vf)*/
acciones
vcb=vcb + paso
FINMIENTRAS
Igual podemos construir un bucle REPETIR
Introduccin a los computadores
Estructuras Repetitivas
Ejemplo: Calcular el factorial de un nmero.
ALGORITMO Factorial;
VAR
Z factorial, n, indice
INICIO
factorial=1
Leer(n)
PARA indice= 2 HASTA n HACER
factorial=factorial * indice
FINPARA
Escribir(factorial)
FIN Factorial
Introduccin a los computadores
Estructuras Repetitivas
Ejemplo:Sumar los n ( n>=0 ) primeros nmeros naturales.
ALGORITMO Sumanaturales
VAR
N num,suma,contador
INICIO
Escribir(Introduzca el nmero n:)
Leer(num)
suma=0
PARA contador= 1 HASTA num HACER
suma=suma+contador
FINPARA
Escribir(suma)
FIN Sumanaturales
Introduccin a los computadores
Estructuras Repetitivas
Anidamientos
Al igual que en las estructuras selectivas, no hay
restricciones en las sentencias del cuerpo del bucle
La estructura interna debe de estar incluida en la externa
totalmente
Introduccin a los computadores
Estructuras Repetitivas
La vcb toma valores de modo tal que por cada valor de la
variable control del bucle del ciclo externo se debe ejecutar
totalmente el bucle interno.
Ejemplo:
PARA i= 1 HASTA 20 HACER
PARA j= 1 HASTA 10 HACER
acciones
FINPARA
FINPARA
Introduccin a los computadores
Sentencias Repetitivas
Ejemplo:Algoritmo que escriba un tringulo de
nmeros. La altura se introduce como dato y debe ser
menor de 10.
Con altura=4 quedara como sigue:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
Observaciones:
Una iteracin por cada lnea de dgitos
Cada lnea se realiza en dos mitades:ejemplo:la lnea 3
123--21
Introduccin a los computadores
Estructuras Repetitivas
ALGORITMO triangulo
CONST
C consblanco=
VAR
Z altura,blancos,fila
Z mitad1,mitad2
INICIO
Leer(altura)
PARA fila=1 HASTA altura HACER
PARA blancos=1 HASTA (altura-fila) HACER
Escribe(consblanco)
FINPARA
PARA mitad1=1 HASTA fila HACER
Escribe(mitad1)
FINPARA
PARA mitad2=fila-1 HASTA 1 (PASO -1) HACER
Escribe(mitad2)
FINPARA
Saltar_Linea
FINPARA
FIN triangulo
Introduccin a los computadores
Estructuras Repetitivas (C)
while (expresion) {
acciones
}
for (expr1;expr2;expr3) {
acciones
}
do {
acciones
} while (expresion);
Introduccin a los computadores
Programacin Estructurada
BOHM Y JACOPINI: 1.965
Bases de la Programacin Estructurada
"Se demuestra que todo problema que pueda resolverse en un numero
finito de pasos puede expresarse usando nicamente 3 tipos de
estructuras o bloques fundamentales con una sola entrada y una sola
salida para organizar dichos pasos:
- Una caja proceso o de tratamiento secuencial.
- Un mecanismo de decisin binaria.
- Un mecanismo de bucle generalizado."
Introduccin a los computadores
Bibliografa
Programacin en C++. Algoritmos, estructuras de datos y
obj etos. L. Joyanes. McGraw-Hill, 2000
Cmo programar en C/ C++. H.M. Deitel, P.J. Deitel. Prentice
Hall, 1995
Pascal. Dale/Orshalick. Ed. McGrawHill 1986
Programacin I . Jos A. Cerrada y Manuel Collado. U.N.E.D.
1993.
Fundamentos de Programacin. Joyanes Aguilar. McGrawHill.
2 Edicin, 1996.

También podría gustarte