estructuras de control - lccrusman/docencia/ic/tema4.pdf · estructuras de control contenido del...
Post on 10-Feb-2018
227 Views
Preview:
TRANSCRIPT
Estructuras de ControlContenido del Tema
4.1. Introducción.4.2. Expresiones lógicas.4.3. Estructuras selectivas.
4.3.1. Sentencia de selección simple.4.3.2. Sentencia de selección binaria.4.3.3. Sentencia de selección múltiple.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.
TEMA
4
TEMA
4
Introducción a los computadores
Introducción a los computadores
Introducción
• Composición secuencial de sentencias
• Recurso insuficiente por sí sólo.
• No permite resolver problemas que exijan una toma de decisión.
• No permite la ejecución de un conjunto de acciones un número determinado de veces.
acción1 acción2 acción3
Introducción a los computadores
Necesidad de herramientas para alterar el orden lógico de las sentencias
Ejecutar unas sentencias u otras
Estructura selectivaEjecutar un número de veces unas acciones
Estructura iterativaCapacidad de realizar preguntas sobre objetos del programa
Expresiones lógicas
Introducción
Introducción a los computadores
Expresiones Lógicas
• Condicionales, lógicas, booleanas.
• Posibles valores una vez evaluadas:
VERDADEROFALSO
Introducción a los computadores
Expresiones lógicas
• Construcción:?Variable lógica Asignación: Bool=VERDADERO
Bool ?Mediante operadores relacionales:(==,<=,<,>=,>,!=)
a>3? Relaciones de comparación combinadas mediante operadores lógicos: Y(conjunción),O(disyunción),NO(negación)
(a>3) Y (3+c!=9)Los operandos de los operadores lógicos pueden ser expresiones cuya
evaluación sea un resultado lógico (es decir, expresiones lógicas)
Introducción a los computadores
Expresiones lógicas
• Expresiones válidasNO((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 paréntesis??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?
Introducción a los computadores
Expresiones lógicas
• Orden de precedencia
NO*,/+,-
relacionalesigualdadY, O
Si queremos cambiar el orden de ejecución, paréntesisSi queremos cambiar el orden de ejecución, paréntesisEn caso de duda, paréntesisEn caso de duda, paréntesis
+
-
Introducción a los computadores
Expresiones Lógicas
• Evaluación de expresiones lógicas en CORTOCIRCUITO
(ExpLógica) Y (ExpLógica)(ExpLógica) O (ExpLógica)
Ejemplo:(100 DIV j<2) Y (j>0)
Evaluación??
Introducción a los computadores
Expresiones lógicas
•Equivalencias de algunas expresiones lógicas.
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 Morgan
Introducción a los computadores
Expresiones lógicas
• Ejemplos:a) Si B valor, ¿cómo se puede poner de otra forma la
expresión lógica valor==FALSO?
b) ¿y valor==verdadero?
c) B prueba,valor, ¿prueba=valor==FALSO es correcto?¿a qué es equivalente?
Introducción a los computadores
Expresiones lógicas
d) Si B cierto Z x,y
cierto=(x<y)Y(y<x) es equivalente a?
cierto=(x<=y)O(y<=x) “
Introducción a los computadores
Estructuras Selectivas
• Control de selección, alternativas.• Ejecutar un bloque de acciones dependiendo de la
evaluación de una condición.• 3 tipos de sentencias alternativas:
Sentencias de selección simpleSentencias de selección binariaSentencias de selección múltiple
Introducción a los computadores
Estructuras Selectivas
Sentencia de Selección simple.• Sintaxis
SI CondControl ENTONCESaccionesdentro
FINSIaccionseguida
• Ejemplo: probar si un valor es positivo o negativo
SI dato>0 ENTONCESEscribir( “Incorrecto”)
FINSIEscribir(dato)
Introducción a los computadores
Estructuras Selectivas
Diagrama de Flujo
Acciones
verdadero
falsoCondControl
Introducción a los computadores
Estructuras Selectivas
Sentencia de selección binaria.•Sintaxis
SI CondControl ENTONCESaccionesSI
SINOaccionesEOC
FINSIaccionseguida
Introducción a los computadores
Estructuras Selectivas
AccionesEOC
falsoCondControl
AccionesSI
verdadero
• Diagrama de Flujo
Introducción a los computadores
Estructuras Selectivas
• Ejemplo: probar si un valor es positivo o negativo
SI dato>0 ENTONCESEscribir(“Positivo”)
SINOEscribir(“Negativo o cero”)
FINSIEscribir(dato)
Introducción a los computadores
Estructuras Selectivas
Ejemplo: Algoritmo que lea tres números diferentes e imprima en pantalla los valores máximo y mínimo
Ejemplo: Algoritmo que lea de teclado los coeficientes de una ecuación de segundo grado, e imprima las raíces de dicha ecuación.
Ejemplo: Algoritmo que lea un número de paquete seguido de un peso en kilos, y que escriba a la salida el número 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 más de 128 kilos.
Introducción a los computadores
Estructuras Selectivas
Sentencia de selección múltiple
• SintaxisCASO expresión SEA
valores1: sentencias1valores2: sentencias2
...... ......valoresn: sentenciasn
SINOaccionesEOC
FINCASOaccionseguida
Selector
Introducción a los computadores
Estructuras Selectivas
• ¿Cómo funciona la sentencia CASO?1.- Evaluación del selector2.- Comparación del selector con los valoresi
3.- Ejecución de las sentencias correspondientes4.- Fin de la sentencia. Ejecución de la accionseguida• Errores posiblesEl valor del selector aparece en más de una lista de valoresi
El selector no es de tipo ordinal
Introducción a los computadores
Estructuras Selectivas
• EjemploCASO Mes SEA
1,2,4,5,6,8,9: /*no ejecutamos nada con estos valores*/3:Escribir( “Cumpleaños de Ana”)7:Escribir(“Aniversario de Carolina”)11:Escribir(“Mi cumpleaños”)
Escribir(“Habrá que celebrarlo”)FINCASO• Mes=1,2,4,5,6,8,9 no ejecuta nada• Mes=10, 12 ERROR DE EJECUCIÓN
NOTA:es posible incluir un subrango en la lista de valoresi
1,2,4..6,8,9
Introducción a los computadores
Estructuras Selectivas
AnidamientosSI CondControl1 ENTONCES
acciones1SINO
SI CondControl2 ENTONCESacciones2
SINOSI CondControl3 ENTONCES
acciones3SINOacciones4
FINSIFINSI
FINSI
SI CondControl1 ENTONCESacciones1
SINOSI CondControl2 ENTONCESacciones2
SINOSI CondControl3 ENTONCESacciones3
SINOacciones4
FINSI
Introducción a los computadores
Estructuras Selectivas
•Objetivo metodológico: LEGIBILIDADRealizar un sangrado o indentación
Incluir comentarios
Ejemplo: SI CondControl ENTONCES /* 1 */SINO
SI CondControl ENTONCES /* 2 */SINO
SI CondControl ENTONCES /* 3 */SINOFINSI /* 3 */
FINSI /* 2 */FINSI /* 1 */
ALGO
RITM
OMA
YOR
VAR
Zma
y, a
, b,
cIN
ICIO
Escr
ibir
(“In
trod
uzca
tre
s nu
mero
s”)
Leer
(a,b
,c)
SIa>
b EN
TONC
ES/*
1*/
SIa>
c EN
TONC
ESma
y =
aSI
NOma
y =
cFI
NSI
SINOSI
b>c
ENTO
NCES
may
= b
SINO
may
= c
FINS
IFI
NSI
/*1*
/Es
crib
ir(
may
)FI
NMA
YOR
Eje
mpl
o:A
lgor
itmo
para
det
erm
inar
el m
ayor
de
tres
val
ores
Introducción a los computadores
Estructuras Selectivas
? Matiz referente a la legibilidadLos siguientes grupos de sentencias ejecutan lo mismo:CASO Operador SEA‘+’ : Resultado = a+b‘-’ : Resultado = a-b‘*’ : Resultado = a*b‘/’ : Resultado = a/b
SINOEscribir(“ Operador Indefinido”)
FINCASO
Introducción a los computadores
Estructuras SelectivasSI Operador ==‘+’ENTONCES
Resultado=a+bSINO
SI Operador==‘-’ ENTONCESResultado=a-b
SINOSI Operador==‘*’ ENTONCES
Resultado= a*bSINO
SI Operador==‘/’ENTONCESResultado=a/b
SINOEscribir(“Operador Indefinido”)
FINSIFINSI
FINSIFINSI
Insertar los números de las sentencias SI entre comentarios
Introducción a los computadores
Estructuras Selectivas (C)
if (CondControl) {accionesSI
}accionseguida
if (CondControl) {accionesSI
}else {accionesEOC
}accionseguida
Introducción a los computadores
Estructuras Selectivas (C)
if (CondControl) {accionesSI
}else if (CondControl1) {
accionesCC1}else if (CondControl2) {
accionesCC2}else {
accioneselse}accionseguida
Introducción 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;}
Introducción a los computadores
Estructuras Repetitivas
• Necesarias en la mayoría de los algoritmos.• Estructura repetitiva = bucle = lazo.• Iteración• Ejecutan un conjunto de operaciones un número
determinado o indeterminado a priori de veces.• ¿Cuantas veces se ejecutan las instrucciones?
Condición de control
Introducción a los computadores
Estructuras Repetitivas
A) Número de veces indeterminado a priori.Estructura MIENTRAS
• Sintaxis : MIENTRAS CondControl HACERAcciones
FINMIENTRAS
Introducción a los computadores
Estructuras Repetitivas
AccionesCondControl
falso
Diagrama de flujo
verdadero
Introducción a los computadores
Estructuras Repetitivas
• Condición de control del bucle = expresión lógica• Las sentencias que forman el cuerpo del bucle se ejecutan 0
o más veces.• BUCLE PREPRUEBA.• Condición verdadero seguirá ejecutando el cuerpo• Algunos ejemplos de bucles con nombre:
Bucle controlado por contadorBucle controlado por centinela
Bucle contador
Introducción a los computadores
Estructuras Repetitivas
Bucle controlado por contador• Se ejecuta un número determinado de veces.• Variable de control del bucle
inicialización, evaluación, incremento
i=1 /*Inicialización*/MIENTRAS i<10 HACER /*Evaluación*/accionesi=i+1 /*Incremento*/
FINMIENTRAS
• ¿Cuantas veces se ejecuta el anterior bucle?
Introducción 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 iteración • LECTURA ADELANTADA
Leer(centinela)/*lectura adelantada*/MIENTRAS centinela!=0 HACER
accionesLeer(centinela)/*actualización*/
FINMIENTRAS
Introducción a los computadores
Estructuras Repetitivas
Bucle contador• Útil cuando se quiere contar el número de veces que se
ejecuta el bucle.• La expresión lógica no depende del contador
cont=0Leer(ch)MIENTRAS ch!= ‘.’ HACEREscribir(ch)cont=cont+1Leer(ch)
FINMIENTRAS
Introducción a los computadores
Estructuras Repetitivas
Estructura REPETIR• Sintaxis :
REPETIRAcciones
HASTA QUE CondControl
Introducción a los computadores
Estructuras RepetitivasDiagrama de flujo.
Acciones
CondControl
falsoverdad
ero
Introducción a los computadores
Estructuras Repetitivas
• Condición de control del bucle = expresión lógica• Las sentencias que forman el cuerpo del bucle se
ejecutan 1 o más veces.• BUCLE POSTPRUEBA.• Condición falso seguirá ejecutando el cuerpo• Menos general que el bucle MIENTRAS.
Introducción a los computadores
Estructuras Repetitivas
B) Número de veces determinado a priori.
Estructura PARA• Sintaxis : PARA vcb=vi HASTA vf ( PASO p)HACERacciones
FINPARA
Introducción a los computadores
Estructuras Repetitivas
• ¿Cómo se ejecuta?
• Ejemplo: Suma=0PARA i= 1 HASTA 10 HACER
Leer(valor)Escribir(valor)/*Eco*/Suma=Suma + valor
FINPARA
Introducción a los computadores
Estructuras Repetitivas
?La vcb se incrementa (decrementa) automáticamente.?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 evalúan una sola vez.
Introducción a los computadores
Estructuras Repetitivas
• Fácilmente podemos diseñar un bucle MIENTRASequivalente
vcb=viMIENTRAS (vcb<=vf) HACER
/*si paso negativo MIENTRAS (vcb>=vf)*/accionesvcb=vcb + paso
FINMIENTRAS
• Igual podemos construir un bucle REPETIR
Introducción a los computadores
Estructuras Repetitivas
• Ejemplo: Calcular el factorial de un número.ALGORITMO Factorial;VARZ factorial, n, indice
INICIOfactorial=1Leer(n)PARA indice= 2 HASTA n HACER
factorial=factorial * indiceFINPARAEscribir(factorial)
FIN Factorial
Introducción a los computadores
Estructuras Repetitivas
• Ejemplo:Sumar los n ( n>=0 ) primeros números naturales.ALGORITMO SumanaturalesVARN num,suma,contador
INICIOEscribir(“Introduzca el número n:”)Leer(num)suma=0PARA contador= 1 HASTA num HACER
suma=suma+contadorFINPARAEscribir(suma)
FIN Sumanaturales
Introducción 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
Introducción 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 HACERPARA j= 1 HASTA 10 HACER
accionesFINPARA
FINPARA
Introducción a los computadores
Sentencias Repetitivas
• Ejemplo:Algoritmo que escriba un triángulo de números. La altura se introduce como dato y debe ser menor de 10.
Con altura=4 quedaría como sigue:
11 2 1
1 2 3 2 11 2 3 4 3 2 1
Observaciones: Una iteración por cada línea de dígitosCada línea se realiza en dos mitades:ejemplo:la línea 3
123--21
Introducción a los computadores
Estructuras RepetitivasALGORITMO trianguloCONST
C consblanco=“ “VARZ altura,blancos,filaZ mitad1,mitad2
INICIOLeer(altura)PARA fila=1 HASTA altura HACER
PARA blancos=1 HASTA (altura-fila) HACEREscribe(consblanco)
FINPARAPARA mitad1=1 HASTA fila HACER
Escribe(mitad1)FINPARAPARA mitad2=fila-1 HASTA 1 (PASO -1) HACER
Escribe(mitad2)FINPARASaltar_Linea
FINPARAFIN triangulo
Introducción a los computadores
Estructuras Repetitivas (C)
while (expresion) {acciones
}
for (expr1;expr2;expr3) {acciones
}
do {acciones
} while (expresion);
Introducción a los computadores
Programación Estructurada
BOHM Y JACOPINI: 1.965Bases de la Programación Estructurada
"Se demuestra que todo problema que pueda resolverse en un numerofinito 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 decisión binaria.- Un mecanismo de bucle generalizado."
Introducción a los computadores
Bibliografía
• Programación en C++. Algoritmos, estructuras de datos y objetos. L. Joyanes. McGraw-Hill, 2000
• Cómo programar en C/C++. H.M. Deitel, P.J. Deitel. PrenticeHall, 1995
• Pascal. Dale/Orshalick. Ed. McGraw Hill 1986
• Programación I. José A. Cerrada y Manuel Collado. U.N.E.D. 1993.
• Fundamentos de Programación. Joyanes Aguilar. McGraw Hill. 2ª Edición, 1996.
top related