Estructuras algorítmicas básicas

Anuncio
Bloque 1. Conceptos y técnicas básicas
en programación
UNIVERSIDAD
DE CANTABRIA
1. Introducción
2. Datos y expresiones. Especificación de algoritmos
3. Estructuras algorítmicas básicas
4. Iteración y recursión
5. Iteración y recursión sobre secuencias
6. Iteración y recursión sobre tablas
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA
Y COMPUTACIÓN
4
© Michael González Harbour y José Luis Montaña
28/oct/09
Notas:
1
UNIVERSIDAD
DE CANTABRIA
1. Introducción
2. Datos y expresiones. Especificación de algoritmos
3. Estructuras algorítmicas básicas
• La asignación. Composición secuencial de instrucciones. La instrucción alternativa simple y múltiple.
Alternativa exclusiva y general.
4. Iteración y recursión
5. Iteración y recursión sobre secuencias
6. Iteración y recursión sobre tablas
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
2
3.1. La asignación
UNIVERSIDAD
DE CANTABRIA
La instrucción de asignación consiste en dar valor a una variable
Sintaxis:
Variable:=expresión
• primero se evalúa la expresión
• después el resultado se guarda en la variable
• el valor anterior de la variable se pierde
- aunque se puede usar en la expresión
El tipo de la expresión debe ser compatible con el tipo de la
variable
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Corrección de la asignación: Ejemplo
3
UNIVERSIDAD
DE CANTABRIA
Podemos averiguar la corrección de un algoritmo que dispone de
una asignación, comprobando la precondición y postcondición
algoritmo ejemplo
// debemos encontrar la expresión E que hace
// correcto el algoritmo
var
entero x,y;
fvar
{Pre: x+y=X, y=Y}
x:=E;
{Post: x=X, y=Y}
falgoritmo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
4
Corrección de la asignación:
solución al ejemplo
UNIVERSIDAD
DE CANTABRIA
E es la expresión x+y
Explicación:
• la postcondición es {x=X, y=Y}
• si sustituimos x por x+y en la postcondición obtenemos
{x+y=X, y=Y}
- que es justamente la precondición
x X-Y
valor inicial
y Y
x:=x+y
x X
valor final
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
y Y
© Michael González Harbour y José Luis Montaña
28/oct/09
Corrección de la asignación
5
UNIVERSIDAD
DE CANTABRIA
x
Llamamos R E a la sustitución en el predicado R de toda aparición
de la variable x por la expresión E
Axioma de la asignación
• para toda variable x y toda expresión válida E del mismo tipo y
todo predicado R, la especificación siguiente es correcta
x
{ RE }
x:=E;
{R }
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
6
Regla de inferencia de la asignación
UNIVERSIDAD
DE CANTABRIA
Combinando el axioma de la asignación con la primera regla de
consecuencia de una especificación (ver capítulo 2), se obtiene
• Para que esta especificación sea correcta
{P }
x:=E;
{Q}
• se debe cumplir que
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
P ⇒ QE
x
© Michael González Harbour y José Luis Montaña
28/oct/09
3.2. Composición secuencial de
instrucciones
7
UNIVERSIDAD
DE CANTABRIA
Una de las estructuras algorítmicas básicas es la composición
secuencial
• ejecutar un algoritmo a continuación de otro
• el orden en que se ejecutan influye en el resultado
Sintaxis
algoritmo 1;
algoritmo 2
o
algoritmo 1;
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
algoritmo 2
© Michael González Harbour y José Luis Montaña
28/oct/09
8
Composición secuencial de asignaciones
UNIVERSIDAD
DE CANTABRIA
Una composición de dos asignaciones
var
tipo1 x1;
tipo2 x2;
fvar
{Pre:P}
x1:=E1;
x2:=E2;
{Post:Q}
x2 x1
Es correcta si P ⇒ Q E2 ) E1
xn xn – 1
Si son n expresiones, P ⇒ Q En ) En – 1
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
x1
… ) E1
© Michael González Harbour y José Luis Montaña
28/oct/09
Ejemplos
9
UNIVERSIDAD
DE CANTABRIA
algoritmo intercambiar
// debemos intercambiar los valores de x y de y
var
entero x,y;
fvar
{Pre: x=X, y=Y}
var
entero temp;
fvar
temp:=x;
x:=y;
y:=temp;
{Post: x=Y, y=X}
falgoritmo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
10
Traza de intercambiar
valor inicial
x X
y Y
UNIVERSIDAD
DE CANTABRIA
temp ?
temp:=x
valor inter.
x X
y Y
temp X
y Y
temp X
x:=y
valor inter.
x Y
y:=temp
valor final
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
x Y
y X
temp X
© Michael González Harbour y José Luis Montaña
28/oct/09
11
Corrección de intercambiar
postcondición
x=Y, y=X
UNIVERSIDAD
DE CANTABRIA
sustituir
y por temp
x=Y, temp=X
x por y
y=Y, temp=X
temp por x
precondición
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
y=Y, x=X
© Michael González Harbour y José Luis Montaña
28/oct/09
12
Ejemplo: clase Circulo
UNIVERSIDAD
DE CANTABRIA
Circulo
real centroX
real centroY
real radio
Circulo(real x,
real y,
real r)
real centroX()
real centroY()
real radio()
real area()
dibuja()
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Especificación de los métodos
13
UNIVERSIDAD
DE CANTABRIA
método Circulo(real x, real y, real r)
{Pre: x=X, y=Y, r=R, r>=0}
constructor
{Post: centroX=X & centroY=Y & radio=R}
fmétodo
método centroX() retorna real
{Pre:}
obtener la coordenada x del centro
{Post: valor retornado=centroX}
fmétodo
// centroY y radio son similares
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
14
Especificación de los métodos (cont.)
UNIVERSIDAD
DE CANTABRIA
método area() retorna real
{Pre:}
cálculo del área
{Post: valor retornado=π⋅radio2}
fmétodo
método dibuja(
{Pre:}
dibuja el círculo en la pantalla
{Post: el círculo se ha dibujado en la pantalla}
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Diseño de los métodos
15
UNIVERSIDAD
DE CANTABRIA
método Circulo(real x, real y, real r)
{Pre: x=X, y=Y, r=R, R>=0}
centroX:=x;
centroY:=y;
radio:=r;
{Post: centroX=X & centroY=Y & radio=R}
fmétodo
método centroX() retorna real
{Pre:}
retorna centroX;
{Post: valor retornado=centroX}
fmétodo
// centroY y radio son similares
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
16
Diseño de los métodos (cont.)
UNIVERSIDAD
DE CANTABRIA
método area() retorna real
{Pre:}
retorna π⋅radio2;
{Post: valor retornado=π⋅radio2}
fmétodo
// el método dibuja es complejo y requiere
// instrucciones que aún no conocemos
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
3.3. La instrucción alternativa
17
UNIVERSIDAD
DE CANTABRIA
La instrucción alternativa, o condicional, nos permite ejecutar
unas instrucciones u otras en función de:
• una condición booleana: alternativa simple
• múltiples condiciones booleanas: alternativa múltiple
- alternativa exclusiva: las condiciones son disjuntas (es decir, sólo
una puede ser cierta)
- alternativa general: pueden cumplirse varias de las condiciones
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
18
Sintaxis de la alternativa simple
UNIVERSIDAD
DE CANTABRIA
Ejecución condicional de instrucciones
si condición entonces
instrucciones
fsi
Ejecución condicional de una de entre dos alternativas
si condición entonces
instrucciones
si no
instrucciones
fsi
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Ejemplo 1: valor absoluto
19
UNIVERSIDAD
DE CANTABRIA
método valorAbsoluto(real x) retorna real
{Pre:}
si x>=0 entonces
retorna x;
si no
retorna -x;
fsi
{Post: valor retornado=|x|}
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
20
Ejemplo 2: máximo de dos enteros
UNIVERSIDAD
DE CANTABRIA
método maximo(real x,y) retorna real
{Pre:}
si x>=y entonces
retorna x;
si no
retorna y;
fsi
{Post: valor retornado=máximo(x,y)}
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Sintaxis de la alternativa múltiple
21
UNIVERSIDAD
DE CANTABRIA
La condición depende de múltiples predicados booleanos
si
condicion1 -> instrucciones;
condicion2 -> instrucciones;
condicion3 -> instrucciones;
fsi
Las condiciones se evalúan en el orden en que aparecen
• cuando una es cierta, se ejecutan sus instrucciones y se termina
la instrucción condicional
Cada conjunto de instrucciones debe conducir a la postcondición
Recomendación: Deben cubrirse todos los casos (al menos una de
las condiciones debe ser cierta)
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
22
3.4. Alternativa exclusiva y general
UNIVERSIDAD
DE CANTABRIA
Alternativa exclusiva
• Las condiciones son disjuntas (es decir si una es cierta, ninguna
de las otras puede ser cierta)
Alternativa general
• Las condiciones no tienen por qué ser disjuntas
• el orden en que se escriben influye en el resultado
La alternativa simple es siempre exclusiva
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Ejemplo: ordenación de tres números
23
UNIVERSIDAD
DE CANTABRIA
Especificación:
var
p,q,s : real
fvar
método ordenar3Numeros (real x,y,z)
{Pre:}
ordenar
{Post: p<=q<=s, (p,q,s) es permutación de (x,y,z)}
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
24
Ejemplo: alternativa general
UNIVERSIDAD
DE CANTABRIA
método ordenar3Numeros (real x,y,z)
{Pre:}
si
(x<=y)&(y<=z) -> p:=x; q:=y; s:=z;
(x<=z)&(z<=y) -> p:=x; q:=z; s:=y;
(y<=x)&(x<=z) -> p:=y; q:=x; s:=z;
(y<=z)&(z<=x) -> p:=y; q:=z; s:=x;
(z<=x)&(x<=y) -> p:=z; q:=x; s:=y;
(z<=y)&(y<=x) -> p:=z; q:=y; s:=x;
fsi
{Post: p<=q<=s, (p,q,s) es permutación de (x,y,z)}
fmétodo
Observar que, por ejemplo, si x=y=z, se cumplen todas las
condiciones
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Ejemplo: alternativa exclusiva
25
UNIVERSIDAD
DE CANTABRIA
método ordenar3Numeros (real x,y,z)
{Pre:}
si
(x<y)&(z<x)
-> p:=z; q:=x; s:=y;
(x<y)&(x<=z)&(z<y) -> p:=x; q:=z; s:=y;
(x<y)&(y<=z)
-> p:=x; q:=y; s:=z;
(y<=x)&(z<y)
-> p:=z; q:=y; s:=x;
(y<=x)&(y<=z)&(z<x)-> p:=y; q:=z; s:=x;
(y<=x)&(x<=z)
-> p:=y; q:=x; s:=z;
fsi
{Post: p<=q<=s, (p,q,s) es permutación de (x,y,z)}
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
26
Ejemplo: dos alternativas exclusivas
método ordenar3Numeros (real x,y,z)
si x<y entonces
si
(z<x)
-> p:=z; q:=x;
(x<=z)&(z<y) -> p:=x; q:=z;
(y<=z)
-> p:=x; q:=y;
fsi
si no
si
(z<y)
-> p:=z; q:=y;
(y<=z)&(z<x) -> p:=y; q:=z;
(x<=z)
-> p:=y; q:=x;
fsi
fsi
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
Ejemplo: tres alternativas
UNIVERSIDAD
DE CANTABRIA
s:=y;
s:=y;
s:=z;
s:=x;
s:=x;
s:=z;
27
UNIVERSIDAD
DE CANTABRIA
Método de la burbuja
método ordenar3Numeros (real x,y,z)
{Pre:}
p:=x; q:=y; s:=z;
si (p>q) entonces
intercambiar p y q;
fsi
si (p>s) entonces
intercambiar p y s;
fsi
si (q>s) entonces
intercambiar q y s;
fsi
{Post: p<=q<=s, (p,q,s) es permutación de (x,y,z)}
fmétodo
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
28/oct/09
28
Descargar