UT 3 Estructuras de Control
UT 3 Estructuras de Control
1º DAW
CÉSAR SAN JUAN PASTOR
REVISADO: ENCARNA DELGADO
U.T. 3 Estructuras de control
Contenido
Introducción
Condiciones
Estructuras de selección o alternativas
Estructuras de repetición
Ruptura del flujo
Documentación del código del programa
Cuestiones de Estilo
Programación modular (Introducción)
Introducción
Objetivo:
Nos centraremos en hacer código legible aunque sea más largo: NUESTRO CÓDIGO SE DEBE LEER DE
ARRIBA ABAJO Y DE IZQUIERDA A DERECHA
Condiciones
Expresiones
Operador ternario
variable = Valor if <condición> else Valor2
range(5) #01234
range(5, 10) #56789
range(0, 10, 3) #0369
Estructuras de repetición
Introducción
Estas estructuras realizan un número finito de vueltas
Es importante el control del bucle para que termine
fin=False
while not fin:
print("Pago en efectivo")
print("Fin”) # Esta instrucción no se ejecutará nunca
Estructuras de repetición
Bucle for
for valor in range(5):
for variable in lista: print(“El valor es”, valor)
sentencias
else:
sentencias
words = ['cat', 'window', 'defenestrate']
for w in words:
print(w, len(w))
Estructuras de repetición
fin, numero = False, 0
while not fin:
Bucle while
print(numero)
if numero == 5:
while <condicion>: fin = True
sentencias numero += 1
else: # optativo
sentencias
Ejercicios
Ejercicios
• Contar el número de veces que aparece una letra en una frase, pedidas ambas al
usuario.
• Similar al anterior, pero a partir de una posición inicial pedida al usuario.
• Crear la cadena inversa a dos cadenas concatenadas que se pedirán al usuario.
• No se puede usar [::-1]
Ejercicios
Ejercicios
• A partir de una cadena que tiene separadores dividirla y mostrarla en sus partes. Se pedirá al usuario tanto el
separador como la cadena.
Ejemplo: separador: - cadena: la-casa-alta
mostrará:
la
casa
alta
• Crear un menú que termine cuando se pulse salir. Tendrá tres opciones más que mostrará solo el texto de la
opción seleccionada.
• A partir de la velocidad inicial de un móvil pedida al usuario, se calculará la distancia en los n primeros
segundos (pedidos al usuario) mostrando la distancia segundo a segundo.
• Dibujar con letras N y B un tablero de ajedrez usando bucles
soluciones_05.py
Ruptura del flujo
break continue
Termina la iteración (vuelta) actual
Termina el bucle actual completamente
del bucle
Si hay varios anidados solo en el que se ejecute
No se ejecutará la parte else del bucle
Ejercicios
Es imprescindible,
Para nosotros mismos: nos olvidamos de nuestro código al poco tiempo de crearlo
Para nuestros compañeros: necesitarán entender partes de un programa hechas por otros
Devuelve en una tupla las dos raíces que resuelven la ecuación cuadrática:
ax^2 + bx + c = 0.
Parámetros:
a -- coeficiente cuadrático (debe ser distinto de 0)
b -- coeficiente lineal
c -- término independiente
Excepciones:
ValueError -- Si (a == 0)
"""
if a == 0:
raise ValueError(
'Coeficiente cuadrático no debe ser 0.')
from cmath import sqrt
discriminante = b ** 2 - 4 * a * c
x1 = (-b + sqrt(discriminante)) / (2 * a)
x2 = (-b - sqrt(discriminante)) / (2 * a)
return (x1, x2)
Documentación del programa
Generación automática de documentación
https://docs.python.org/3/library/pydoc.html
Cuestiones de Estilo
Introducción
Recoge la forma en que los desarrolladores tienen que escribir su código
Conseguiremos un estilo consistente en todo el programa y que todos lo entiendan
Una guía de estilo
Promoverá que el código sea inteligible.
Promoverá que el código esté organizado en unidades de trabajo comprensibles (funciones no más
extensas de un cierto número de líneas, organización en párrafos, etc.).
Definirá las convenciones de nombres de variables, estilo de espaciados, etc.
Indicará cómo comentar el código.
https://www.python.org/dev/peps/pep-0008/
Cuestiones de Estilo
Guía de estilo bajo python
http://www.recursospython.com/pep8es.pdf
Ejercicios
Introducción
Tiene por finalidad obtener algoritmos que se basan en la descomposición reiterada del problema inicial en
subproblemas más simples.
En esta descomposición una acción se descompondrá en otras. El proceso se repite hasta que todas las acciones
sean inmediatamente identificables.
Programación modular
Introducción
Registrar todos los libros de una biblioteca
Primer nivel:
Mientras queden libros sin fichar Hacer
Registrar un libro
Fin Mientras
Programación modular
Introducción
Registrar todos los libros de una biblioteca
Primer nivel:
Segundo nivel:
Registrar un libro:
Coger un libro de los no registrados
Darle un número de referencia
Coger ficha
Escribir en ella el nombre del libro
Escribir el nombre del autor
Escribir la editorial
Escribir el número de referencia
Duplicar la ficha
Poner la ficha en el libro
Poner la otra ficha en el fichero
Programación modular
Introducción
Registrar todos los libros de una biblioteca
Primer nivel:
Segundo nivel:
Tercer nivel:
Poner la otra ficha en el fichero:
Mirar la primera ficha del fichero
Mientras la ficha del fichero se anterior Hacer
Pasar una ficha del fichero
Fin Mientras
Colocar la ficha en el fichero
Programación modular
Funciones en la programación modular
Python permite diversos paradigmas de programación y se pueden mezclar en un mismo fichero.
La programación modular determina crear códigos independientes que realizan una función y pueden o no
retornar un valor: funciones y procedimientos.
Para llamar a una función se utilizará su nombre y entre paréntesis se le pasarán los parámetros
correspondientes.
Programación modular
Funciones en la programación modular
Diferencia entre procedimientos y funciones
Formalmente una función y un procedimiento no es lo mismo.
Una función es una sección de un programa que calcula un valor de manera independiente al resto del
programa que tiene tres partes: parámetros de entrada, proceso o código y resultado.
Un procedimiento solo tiene dos partes: entrada y proceso, no devuelve nada.
A nivel de código la diferencia principal es que en los procedimientos no encontraremos una sentencia return,
mientras que en las funciones sí.
Programación modular
Funciones en la programación modular
Diferencia entre procedimientos y funciones
Bajo Python, no existen los procedimientos, incluso si omitimos la sentencia return en nuestra definición, el
intérprete devolverá de forma predefinida None como valor de nuestra función.
Para Python como para el resto de los lenguajes, una función es un bloque de código con autonomía propia de
ejecución que podremos reutilizar.
La mayor diferencia con los lenguajes tradicionales es que es un objeto con sus propiedades y métodos.
Una función se puede definir en cualquier parte del código, aunque es recomendable estructurar el código en
módulos.
Para que una función esté bien definida según la guía de estilo, ésta no debe ocupar más de veinticinco a
treinta líneas de código.
Programación modular
Funciones en la programación modular
Definición
def fib(n): # write Fibonacci series up to n
"""Print a Fibonacci series up to n."""
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
return False
Realizar ejercicios 52 al 57
Realizar ejercicios 65 al 68
Programación modular
Funciones en la programación modular
Ámbito de las variables
El ámbito es la zona de código que tiene acceso una variable.
Python, como todos los lenguajes, tiene varios ámbitos para definir las variables.
Uno local, uno nonlocal y otro global. Por defecto estos ámbitos no se mezclan y no podemos hacer uso
de uno dentro del otro.
El ámbito local se corresponde con el nivel de función, el ámbito global con el de programa, el nonlocal
con una función interna.
Para modificar una variable definida en el programa deberemos anteponer la palabra clave global y el nombre
de la variable para poder usarla.
Nunca podremos cambiar una variable local fuera de la función que la defina, aunque sí podremos acceder a
ella sin especificar global si no la modificamos.
Programación modular
Funciones en la programación modular
Ámbito de las variables
Ámbito de las variables
mi_var_global = 3
mi_var_global = 3
def mi_fun():
def mi_fun():
global mi_var_global
# global mi_var_global
mi_var_global = 4
mi_var_global = 4
mi_fun()
mi_fun()
print(mi_var_global)
print(mi_var_global)
Programación modular
Funciones en la programación modular
Parámetros
Un parámetro es un valor que se le pasa al método o función, un valor que espera para realizar su trabajo.
Python define el tipo de una variable (parámetro en este caso) en tiempo de ejecución, no es necesario
determinarlo en el parámetro, y no solo eso, el mismo parámetro aceptará cualquier tipo de datos para su
ejecución, por lo que tendremos que realizar una conversión explícita si fuera necesario.
Programación modular
Funciones en la programación modular
Parámetros de Entrada – Salida
El comportamiento común de un parámetro es como entrada, esto quiere decir que recibirá un dato almacenado
en el parámetro enviado desde el contexto en el que se llama a la función, se utilizará dentro de la función y no
se modificará.
Los parámetros de salida permiten modificar el valor de una variable externa a la función relacionada con el
parámetro. De esta manera, si la función modifica el valor del parámetro, la variable externa relacionada a este
parámetro se modificará también, inclusive después de que la función haya terminado de ejecutarse.
En Python todos los parámetros son de entrada.
Programación modular
Recomendaciones
Bloque Ejercicios1
Ejercicios
code_0001_b.py
Ejercicios Juegos
Fin U.T. 3