Upload
raul-pinto
View
110
Download
1
Embed Size (px)
Citation preview
1
Tema 3
Estructuras de Control
Tema 3. Estructuras de control 2
ObjetivosEstudiar las estructuras básicas de control (secuenciales, condicionales y repetitivas)
Aprender a diseñar algoritmos utilizando el pseudocódigocomo notación para describirlos
Conocer la sintaxis de las principales estructuras de control en pseudocódigo
Reconocer la importancia de diseñar algoritmos como paso previo a la resolución de problemas mediante la programación
Resolver los primeros problemas a través de técnicas de programación básicas
Tema 3. Estructuras de control 3
Estructuras de control1. Estructuras secuenciales
1. Asignación2. Lectura / Entrada3. Escritura / Salida
2. Estructuras condicionales1. Simple2. Anidadas3. Múltiple
3. Estructuras repetitiva1. Bucle MIENTRAS2. Bucle REPETIR-HASTA3. Bucle PARA4. Bucles infinitos y bucles anidados
4. Algunos ejemplos
Tema 3. Estructuras de control 4
Tipos de estructuras de controlEstructuras secuenciales
Sentencias que se realizan una a continuación de otra en el orden en el que están escritas
Estructuras Condicionales
Sentencias que dependiendo de la evaluación de una expresión lógica (una condición), se realiza una opción u otra
Estructuras Repetitivas o Iterativas (Bucles o Ciclos)
Sentencias que permiten la repetición de un grupo de acciones
Las acciones incluidas en un bucle se pueden repetir un número fijo de veces o bien un número variable determinado por la evaluación de una expresión lógica (una condición)
Tema 3. Estructuras de control 5
Estructuras secuenciales -Asignación Permite asignar un valor determinado a una variable
var exp
El valor de la variable “var” será el resultado de evaluar la expresión “exp”
El tipo de la variable implicada en la operación de asignación debe ser compatible con el tipo del resultado de evaluar la expresión
La asignación es una operación destructiva
Ejemplos:a 3.0 menor_ej1 (ej1<ej2) AND (ej1<ej3)
b (2.0*c+4)/8 hipotenusa SQRT(cateto1 2+cateto2 2)
c (d+2)<7
Tema 3. Estructuras de control 6
Ejemplos
A ← 3B ← 5C ← 2A ← BB ← CC ← A*BA ← B
A = 2B = 2C = 10
A ← 30B ← 10C ← 7A ← A DIV CB ← A*3 DIV C+2C ← A DIV B DIV C
A = 4B = 3C = 0
A ← 10B ← 5*AC ← B*2A ← C MOD 3B ← C DIV 3C ← A+2↑2
A = 1B = 33C = 5
A ← 13B ← 15C ← 12A ← (C-B) ↑(B-A)B ← AC ← A*B
A = 9B = 9C = 81
A ← 8B ← A*(3-A)C ← A-BA ← B MOD AB ← -C-(B-A)C ← A*B
A = 0B = -8C = 0
2
Tema 3. Estructuras de control 7
Estructuras secuenciales –Lectura/Entrada
Mediante la operación de entrada se asigna a una variable un valor dado desde el exterior
LEER(var)Se utiliza para que el usuario pueda introducir los datos requeridos por un algoritmoEl tipo de dato suministrado desde el exterior debe ser compatible con el tipo de la variable “var”Tras la operación de lectura, la variable “var” contiene el valor dado por el usuario a través de un dispositivo de entrada
LEER(cateto1)
La operación de lectura es destructivaEs posible leer los valores de varias variables en una misma operación de entrada (separando con comas)
LEER(nota1, nota2)es equivalente a las siguientes dos sentencias
LEER(nota1)LEER(nota2)
Tema 3. Estructuras de control 8
Estructuras secuenciales –Escritura/SalidaMediante la operación de salida se transfiere el valor de una expresión a un dispositivo de salida
ESCRIBIR(exp)Se utiliza para mostrar al usuario los resultados obtenidosEjemplos:
ESCRIBIR(hipotenusa)ESCRIBIR(b+3)
Se suele utilizar también para mostrar mensajes informativos al usuario que estarán delimitados por comillas
ESCRIBIR(‘Hola’)
También es posible, combinar expresiones y cadenas de caracteres encerradas entre comillas en una misma operación de salida siempre que se separen por comas
ESCRIBIR(‘La media de las notas es ’,media)
Tema 3. Estructuras de control 9
Estructura básica de un algoritmoALGORITMO nombre.
DescripciónCONSTANTES
id_cte1 = valor1………………………………………………………………………………id_cteN = valorN
VARIABLESid_var1 : tipo1………………………………………………………………………………id_varM : tipoM
1. [Inicio]………………………………………………………………………………Sentencias………………………………………………………………………………
F. [Fin]
ALGORITMO triangulo. Calcula la hipotenusa de un triángulo rectángulo tomando como entrada el valor de los dos catetosVARIABLES
cat1, cat2 : REALhipotenusa : REAL
1. [Entrada de datos]ESCRIBIR(‘Introduzca valor de cateto 1: ’)LEER(cat1)ESCRIBIR(‘Introduzca valor de cateto 2: ’)LEER(cat2)
2. [Cálculo de la hipotenusa]hipotenusa SQRT(cat1*cat1+cat2*cat2)
3. [Mostrar el resultado]ESCRIBIR(‘La hipotenusa es ’, hipotenusa)
4. [Fin]
Tema 3. Estructuras de control 10
Estructuras condicionalesEn una estructura condicional se evalúa una expresión lógica y dependiendo del resultado se ejecutan unas sentencias u otrasSI condición ENTONCES
Sentencias en caso de verdadSINO
Sentencias en caso de falsoFIN_SI
Si la condición resulta verdadera sólo se realizan las operaciones correspondientes al ENTONCES y si la condición resulta falsa sólo se realizan las del SINO. En ningún caso se ejecutarán ambos grupos de sentenciasLa parte SINO es opcionalSI condición ENTONCES
Sentencias en caso de verdadFIN_SI
Condición
Sentencias caso verdad
Sentencias caso falso
VerdadFalso
Condición
Sentencias caso verdad
Verdad
Falso
Tema 3. Estructuras de control 11
Estructuras condicionalesSI-ENTONCES-SINO
SI (a<b) ENTONCESMayor bESCRIBIR(‘El valor mayor es b=’,b)
SINOMayor aESCRIBIR(‘El valor mayor es a=’,a)
FIN_SI
SI-ENTONCESSI (longitud<=0) ENTONCES
ESCRIBIR(‘Imposible hacer el cálculo. La longitud debe ser un número positivo’)
FIN_SI
a<b
Mayor bMayor a
VerdadFalso
ESCRIBIR(a) ESCRIBIR(b)
Longitud<=0Verdad
FalsoESCRIBIR(‘Imposible
hacer el cálculo’)
Tema 3. Estructuras de control 12
Condiciones
Una condición o expresión booleana puede ser:Una variable booleana
TEST T
Una expresión aritmética seguida de un operador relacional, seguido de otra expresión aritmética
TEST 3<5
Una expresión booleana, seguida de un operador booleano, seguido de una expresión booleana
TEST A AND NOT B OR C
Se pueden utilizar condiciones tan complejas como se quiera siempre que estén bien formadas
3
Tema 3. Estructuras de control 13
Estructuras condicionales anidadasSe pueden anidar varias sentencias condicionales para formar condiciones complejas
SI COND1 ENTONCESSI COND2 ENTONCES
SENT1SINO
SENT2FIN_SI
SINOSI COND3 ENTONCES
SENT3SINO
SENT4FIN_SI
FIN_SI
Encontrar el mayor de 3 números
SI (a<b) ENTONCES SI (b<c) ENTONCES
Mayor cSINO
Mayor bFIN_SI
SINOSI (a<c) ENTONCES
Mayor cSINO
Mayor aFIN_SI
FIN_SI
Tema 3. Estructuras de control 14
Estructuras condicionales múltiples
La sentencia multicondicional CASO se puede ver como un estructura condicional simple, pero en lugar de haber dos alternativas, ahora hay múltiples alternativas
CASO varValor_1: S1Valor_2: S2
… Valor_n: SnEN OTRO CASO Sc
FIN_CASO
CASO num1: ESCRIBIR(‘El número es 1’)2: ESCRIBIR(‘El número es 2’)3,4: ESCRIBIR(‘El número es 3 o 4’)EN OTRO CASO ESCRIBIR(‘Entrada no válida’)
FIN_CASO
var=?
S1 SnS2 Sc………
var=valor_1 var=valor_2
Acciones para otros valores
de varvar=valor_n
Tema 3. Estructuras de control 15
Estructuras repetitivasÁmbito o Cuerpo del Bucle: sentencias que se repiten durante la ejecución del bucle Tipos de bucles:
Bucles controlados por contador• El cuerpo del bucle se repite un número fijo de iteraciones
dependiendo de una variable de control
Bucles controlados por condición• El número de veces que se ejecuta el bucle depende de una
condición
Estructuras repetitivasBucle MIENTRASBucle REPETIR-HASTABucle PARA
Tema 3. Estructuras de control 16
Bucle MIENTRASMIENTRAS condición HACER
Sentencias del bucle (cuerpo del bucle)FIN_MIENTRAS
El cuerpo del bucle se repite mientras la condición sea verdadera
Condición
Cuerpo delBucle
Sentencias
VerdadFalso
Tema 3. Estructuras de control 17
Bucle REPETIR-HASTAREPETIR
Cuerpo del bucle
HASTA condición
El cuerpo del bucle se repite
hasta que la condición sea
verdadera (es decir, mientras la
condición sea falsa)
Condición
Cuerpo delBucle
Sentencias
Verdad
Falso
Tema 3. Estructuras de control 18
Bucles infinitosLa condición de terminación nunca se cumpleDebe haber alguna sentencia dentro del cuerpo del bucle que haga que el valor de la condición que controla el bucle varíe
i 1MIENTRAS (i>0) HACER
i i+1i i-1
FIN_MIENTRASESCRIBIR(‘El valor de i es ’,i)
4
Tema 3. Estructuras de control 19
Bucles anidadosEl cuerpo de un bucle puede incluir cualquier tipo de sentencias, incluidas otras sentencias repetitivasLa estructura interna debe estar completamente dentro de la estructura externa, no pudiendo existir solapamientos
Correctos Incorrecto
Tema 3. Estructuras de control 20
Bucle PARA
El cuerpo del bucle se repite un número fijo de iteracionesVariable de control
Controla el número de iteracionesSe le asignan automáticamente valores sucesivosAl comienzo del bucle se debe especificar su valor inicial y su valor finalDebe ser de tipo entero, carácter o enumerado y su valor NO puede ser modificado dentro del bucleCuando el bucle termina, su valor es indeterminado
PARA var=inicio HASTA fin HACERCuerpo del bucle
FIN_PARA
var<=fin
Cuerpo delBucle
Sentencias
VerdadFalso
var <- inicio
var <- var+1
Tema 3. Estructuras de control 21
Equivalencia PARA - MIENTRAS
PARA var=inicio HASTA fin HACERSentencias
FIN_PARA
var inicioMIENTRAS (var<=fin) HACER
Sentencias var var + 1
FIN_MIENTRAS
Tema 3. Estructuras de control 22
Ejemplo: FactorialALGORITMO factorial_mientras.VARIABLES
N, i, fact: ENTERO1. [Entrada del número N]
LEER(N)2. [Calcular el factorial]
fact 1i 1MIENTRAS (i<=N) HACER
fact fact * ii i + 1
FIN_MIENTRAS3. [Mostrar el resultado]
ESCRIBIR(‘Factorial de ’,N, ‘ es ’,fact)4. [Fin]
ALGORITMO factorial_para.VARIABLES
N, i, fact: ENTERO1. [Entrada del número N]
LEER(N)2. [Calcular el factorial]
fact 1PARA i=1 HASTA N HACER
fact fact * iFIN_PARA
3. [Mostrar el resultado]ESCRIBIR(‘Factorial de ’,N, ‘ es ’,fact)
4. [Fin]
Tema 3. Estructuras de control 23
Validación de datos de entrada
ALGORITMO validacion_mientras.VARIABLES
nota: REAL1. [Entrada de datos]
ESCRIBIR(‘Introduzca la nota: ’)LEER(nota)MIENTRAS (nota<0.0) OR (nota >10.0) HACER
ESCRIBIR(‘La nota debe ser un nº realentre 0 y 10. Inténtelo de nuevo: ’)LEER(nota)
FIN_MIENTRAS2. [Salida de datos]
ESCRIBIR(‘La nota es ’, nota)3. [Fin]
ALGORITMO validacion_repetir.VARIABLES
nota: REAL1. [Entrada de datos]
REPETIRESCRIBIR(‘Introduzca la nota: ’)LEER(nota)
HASTA (nota>=0.0) AND (nota<=10.0)
2. [Salida de datos]ESCRIBIR(‘La nota es ’, nota)
3. [Fin]
Tema 3. Estructuras de control 24
Fin de ejecución controlada por el usuario
ALGORITMO repeticion.VARIABLES
respuesta: CARACTER1. [Inicio]
REPETIR
Desarrollo del algoritmo
ESCRIBIR(‘Desea volver a ejecutar el programa (S/N)? ’)LEER(respuesta)
HASTA (respuesta=‘N’) OR (respuesta=‘n’)F. [Fin]