






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento, perteneciente al departamento de lenguajes y ciencias de la computación de la e.t.s. De ingeniería informática, forma parte del tema v de elementos de programación y aborda los conceptos de estructuras de control, con énfasis en las estructuras de selección (como expresiones booleanas, variables booleanas y operadores booleanos) y las estructuras de iteración (como bucles y algoritmos de repetición). También se presentan ejemplos y ejercicios para ilustrar su uso.
Tipo: Apuntes
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







UNIVERSIDAD DE MALAGA
DPTO. DE LENGUAJES Y C. DE LA COMPUTACION
E.T.S. DE INGENIERIA INFORMATICA
INGENIERIA INFORMATICA
(CURSO 2004-2005)
V. 1. Estructuras de selección.
V.1.1. Condiciones y expresiones booleanas.V.1.2. Sentencias de selección.V.1.3. Anidamientos.
V. 2. Estructuras de iteración.
V.2.1. Diseño de bucles. Concepto de invariante.V.2.2. Bucles anidados.
Bibliografía: [DALE89a], [JOYA03]
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
orden físico <--------> orden lógico
a)
Posibilidad
de
realizar
preguntas
sobre
lo
sucedido
anteriormente.b)
Herramienta
capaz
de
desviar
el
flujo
de
control
dependiendo de la respuesta a esas preguntas.
V.1.1.- Condiciones y expresiones booleanas.
puede ser verdadera o falsa (TRUE o FALSE).expr_booleana ::=
TRUE | FALSE |variable_booleana |expresión oper_relacional expresión |expr_booleana oper_bool_bin expr_booleana |oper_bool_una expr_booleana |“(“expr_booleana”)”
oper_relacional ::=
oper_bool_una ::=
oper_bool_bin ::=
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
2
Variables booleanas.
En nuestro pseudolenguaje :
variable :
Sólo puede contener TRUE o FALSE.
-^
Sus
valores
generalmente
no
pueden
ser
leidos
desde
dispositivos de entrada ni escritos en dispositivos de salida.
-^
Se les da un valor mediante la asignación ("
Ejemplo:
v :
v
v
v
expr. booleana
En un programa, en cualquier momento, se puede realizar unapregunta escribiendo simplemente v. Siendo v : B.
Operadores relacionales.
n, m, x : Z3 < 8n
n * m
x + 18
n
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
3
Operadores booleanos.
operadores relacionales.
--> conjunción lógica.
-^
--> disyunción lógica.
-^
--> negación lógica.
Expr. 2
Expr. 1
v, w : Bx, y, z : Zv
w v
(x = 3)
(z <>4)
(((x + z) - 4) <> 4)
w
(v
(x
y))
La
mayoría
de
los
lenguajes
de
programación
evaluan
las
expresiones booleanas “
en cortocircuito
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
6
V.1.2.- Sentencias de selecciÛn. - Es la herramienta que va a posibilitar alterar el flujo de control de un
programa dependiendo de la evaluación de una expresión booleana.
Sentencia de selección SI:
SI expr_booleana ENTONCES
sentencias
SINOSI expr_booleana ENTONCES
Sentencias
Sentencias
Exp. Bool.
TRUE
FALSE
Sentencias
Exp. Bool.
TRUE
FALSE
Sentencias
Exp. Bool.
TRUE
Sentencias
Exp. Bool.
TRUE
Sentencias
FALSE
Sentencias
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
E xp. B ool.
T R U E
F A L S E
S entencias
S entencias
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
8
Sentencia de selección CASO:
CASO expresión SEA
valores1:
Sentencias
valores2:
Sentencias
valoresn:
Sentencias
Sentencias
Expresión.
Sentencias
Sentencias
Sentencias
Sentencias
valores
valores
valoresn
OTRO CASO
[
]
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
V.1.3.- Anidamientos. - No hay restricciones sobre las sentencias que pueden aparecer en las
distintas ramas de esas sentencias de selección.
anidamiento.
Ejemplo:
cuando coste < 100
--> incrementar en uno el
número de artículos a pedir
cuando coste
100 y < 200
--> incrementar en dos en
número de artículos a pedir
cuando coste
--> incrementar en tres el
número de artículos a pedir
Utilizando sentencias de selección no anidadas:
SI
coste
< 100
ENTONCES
articulos
articulos
FINSI SI
(coste
(coste < 200)
ENTONCES
articulos
articulos
FINSI SI
coste
200
ENTONCES
articulos
articulos
FINSI
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
12
tenemos dos tipos de bucles:
sentencias
HASTA QUE cond de control
Sentencias Cond. Cont. TRUE
FALSE
La condición de control es una expresión booleana que actúa comocondición para la salida del bucle.Esquema MIENTRAS.
MIENTRAS cond de control HACER
sentencias
TRUE Sentencias
FALSE
Cond. Cont.
La condición de control es una expresión booleana que actúa comocondición para la salida del bucle.
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
: un algoritmo para realizar la división entera de dos números
naturales mediante sumas y restas.
Primer nivel de refinamiento:
Algoritmo
DivisionEntera
Inicio
Leer dividendo y divisor
Utilizar restas sucesivas para calcular el cociente y el resto.
Escribir el resultado (cociente y resto)
Fin
Segundo nivel de refinamiento (definitivo):
// Leer los
operandos asegurandose que son
validos
PROC
LeerOperandos(
↑
dividendo,
divisor:
N
)
Inicio
leer(dividendo) REPETIR
leer(divisor)
HASTA
QUE
(divisor >
Fin /*
un proceso de
restas
para
calcular cociente
y resto
*/ PROC
Dividir(
↓
dividendo,
divisor:
N;
↑
cociente,
resto:
N
)
Inicio
resto
dividendo
cociente
0
REPETIR
resto
resto -
divisor
INC
(cociente)
HASTA QUE
resto < divisor
Fin
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
14
/*
Realiza
la division
dos numeros
naturales leidos
por teclado
*/ Algoritmo
DivisionEntera
Variables
dividendo, divisor,
cociente, resto:
N
Inicio
LeerOperandos(dividendo,divisor)Dividir(dividendo, divisor, cociente,
resto)
escribir(cociente,resto)
Fin
inicialmente.
bucle, antes del conjunto de sentencias que lo componen.
en
el
ejemplo
anterior
utilizamos
el
esquema
solucionamos el problema:
PROC
Dividir(
↓
dividendo, divisor:
N;
↑
cociente, resto:
N
)
Inicio
resto
dividendo
cociente
0
MIENTRAS
resto
divisor
HACER
resto
resto - divisor
INC
(cociente)
FINMIENTRAS
Fin
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
15
repetitivas
o
de
iteración
con
un
número
fijo
de
iteraciones.Esquema PARA.
Los dos esquemas anteriores se caracterizan porque no seconoce de antemano el número de veces que se van a repetir lassentencias que contienen.
-^
En el esquema PARA sí se conoce de antemano.
PARA vc
vi HASTA vf (PASO p) HACER
sentencias
donde: vc
es la variable de control del bucle. Su tipo debe ser
ordinal
vi
es el valor inicial que toma la variable de control. vf
es el valor final que puede tomar la variable de control. p es el entero (positivo o netativo) que se le va sumando a lavariable de control en cada iteración del bucle. Si se omite setoma por defecto 1.
-^
En el cuerpo del bucle no se puede modificar ninguno de loselementos anteriores (
vc
, vi
, vf
, p
Al salir del bucle,
vc
tiene un valor indefinido.
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
18
V.2.1.- DiseÒo de bucles. Concepto de invariante de un bucle. - El
invariante
de un bucle establece su comportamiento. Se expresa
mediante un conjunto de condiciones que se deben cumplir antes deentrar por primera vez en el bucle, que se mantienen después de cadaiteración y que por tanto se siguen cumpliendo cuando éste acaba.
invariante.
teclado. Primer nivel de refinamiento:
Algoritmo
EscribirFactorial
Inicio
Leer número n.
Si n es cero el resultado será uno. Si no, generar y multiplicaracumulativamente todos los números naturales comprendidosentre el uno y el número leido.
Escribir el resultado.
Fin
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
En la segunda acción aparece un proceso iterativo cuyo invariante podríaser:
generados sucesivamente.
todos los números naturales comprendidos entre uno y el valor decontador.
contador
fact =
Π
i i=
como valor final n para que fact contenga el factorial de n. Porotro lado, como n puede ser uno, el valor inicial de contadordebe ser como máximo 1. Y como mínimo debe ser también unopuesto que fact
fact
1
contador
1
MIENTRAS
(contador < num)
HACER
contador
contador + 1
fact
fact
FINMIENTRAS
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
20
Segundo y definitivo nivel de refinamiento
Algoritmo
EscribirFactorial
PROC
Factorial(
↓
num:
N ;
↑
fact:
N
)
Variables
contador:
N
Inicio
SI
num = 0
ENTONCES
fact
1
SINO
fact
1
contador
1
MIENTRAS
(contador
< num)
HACER
contador
contador
fact
fact *
contador
FINMIENTRAS
FINSI
Fin
Variables
num, fact:
N
Inicio
escribir("Introduzca
el numero n:")
leer(num)Factorial(num,
fact)
escribir("El factorial es:",fact)
Fin
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Elementos de Programación
Tema V. Estructuras de control
21
aspectos:
a) Condición de terminación del bucle.b) La forma de inicializar y actualizar esa condición.
a) El proceso que se repiteb) La forma de iniciarlo y actualizarlo.
V.2.2.- Bucles anidados.
diseñar
una
estructura
iterativa
anidada
debemos
empezar
diseñando la más externa y terminar con las más internas.
mismo bucle que lo anida.
øQuÈ es ProgramaciÛn Estructurada? Un programa estructurado es esencialmente aquel que se puede entenderfácilmente, y la abstracción es la herramienta más útil para llevar a cabodicho cometido.La
abstracción
se
basa
en
la
identificación
de
los
elementos
a
un
determinado
nivel,
ignorando
los
detalles
especificados
en
niveles
inferiores.Sólo podremos emplear la abstracción en el análisis del software siutilizamos las estructuras de control de una forma disciplinada.