0% encontró este documento útil (0 votos)
8 vistas46 páginas

UT 3 Estructuras de Control

Este documento presenta las estructuras de control en Python. Introduce conceptos como condiciones, operadores lógicos y de comparación para crear expresiones condicionales. Explica las estructuras de selección como if/else y el operador ternario. También cubre las estructuras de repetición como for y while, incluyendo el uso de la función range(). Por último, discute temas como la documentación del código, comentarios, docstring y estilos de codificación.

Cargado por

antoniodaniel366
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas46 páginas

UT 3 Estructuras de Control

Este documento presenta las estructuras de control en Python. Introduce conceptos como condiciones, operadores lógicos y de comparación para crear expresiones condicionales. Explica las estructuras de selección como if/else y el operador ternario. También cubre las estructuras de repetición como for y while, incluyendo el uso de la función range(). Por último, discute temas como la documentación del código, comentarios, docstring y estilos de codificación.

Cargado por

antoniodaniel366
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 46

Programación

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:

 La programación se empieza siempre en papel desarrollando el algoritmo : PENSAR ANTES DE CODIFICAR

 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

 Las condiciones expresan circunstancias de ejecución que permiten decidir


 Las condiciones se usan en las estructuras de control: condicionales y bucles
 Determinarán el sentido de nuestro programa en una bifurcación
 Se forman con operadores y operandos
 Operador indica una operación
 Operando es el objeto de la operación
 Tipos de operadores
 Binarios: necesitan dos operandos  a < b
 Unarios: necesitan un operando  not a
Condiciones
Operadores

 Operadores de pertenencia: in, not in.


 Operadores de ser lo mismo: is, not is.
 Operadores de expresiones: and y or son operadores en cortocircuito, o que no siguen evaluando la expresión si
no es necesario.
 Operador de negación: not.
 Operadores de comparación: <, >, >=, <=, !=, ==.
 Operador morsa a partir de la versión 3.8 (:=).
Condiciones
Concatenación de operadores
 Las expresiones se pueden concatenar

variable > 5 and variable < 15

5 < variable < 15


Estructuras de selección

Condicional simple Condicional simple Condicional compuesta


if <condición>: if <condición1>: if <condición1>:
sentencias sentencias sentencias
else: elif <condición2>:
sentencias sentencias
elif <condición3>:
sentencias
else:
sentencias

if compra <= 100:


print("Pago en efectivo")
elif compra > 100 and compra < 300: # 100 < compra < 300
print("Pago con tarjeta de débito")
else:
print("Pago con tarjeta de crédito")
Estructuras de selección

Operador ternario
variable = Valor if <condición> else Valor2

Hacer los ejercicios de 1 al 12


Estructuras de repetición
Función range()
 Devuelve una lista de enteros
 Se utiliza para realizar bucles con un número fijo de vueltas
 Sintaxis: range(inicio, fin, salto), el fin nunca está incluido

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

Hacer los ejercicios 13 al 19


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

Hacer los ejercicios 20 al 26


Documentación del programa
Introducción

 Genera rechazo en el programador

 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

 Existe la documentación interna y la externa

 Interna, explicación del propio código

 Externa, documentación para crear la aplicación


Documentación del programa
Interna: comentarios de código
 Nuestro código se tiene que comentar
 Deben ser comentarios constructivos y explicativos del funcionamiento general
 No se debe comentar el funcionamiento de las estructuras de control

if edad < 18: # si la edad es menor de 18


print(“Error”)
else:
calcular_descuento() # calculamos el descuento

# si es menor de edad no puede usar la aplicación


if edad < 18:
print(“Error”)
else:
calcular_descuento()
Documentación del programa
Interna: docstrings
 Es un literal de cadena de caracteres que se coloca como primer enunciado de un módulo, clase, método o
función, y cuyo propósito es explicar su intención
 El sistema lo usa para presentar ayudas (función help) o los IDES para presentar la ayuda interactiva
 Recomendaciones
 La primera línea de la cadena de documentación debe ser una línea de resumen terminada con un punto.
Debe ser una breve descripción. Es importante que quepa en una sola línea y que esté separada del resto
del docstring por una línea en blanco.
 El resto de la cadena de documentación debe describir el comportamiento de la función, los valores que
devuelve, las excepciones que arroja y cualquier otro detalle que consideremos relevante.
 Se recomienda dejar una línea en blanco antes de las triples comillas que cierran la cadena de
documentación.
Documentación del programa
Interna: docstrings
def formula_cuadratica(a, b, c):
"""Resuelve una ecuación cuadrática.

Devuelve en una tupla las dos raíces que resuelven la ecuación cuadrática:

ax^2 + bx + c = 0.

Utiliza la fórmula general.

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

 Si documentamos mediante docstrings se puede generar la documentación de forma automática


 pydoc es la herramienta que genera html a partir de los docstring de nuestro código

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

 Usar cuatro espacios en vez de tabuladores.

 Escribir líneas de 79 caracteres máximo.

 Después de la definición de una función añadir una línea en blanco.

 Usar los comentarios de una línea.

 Utilizar espacios alrededor de los operadores.

 El nombrado de clases debería ajustarse a: NombreClase

 El nombrado de funciones y variables debería ajustarse a: nombre_funcion


Ejercicios

Ejercicio: Leer la guía de estilo. Hacer un resumen de los puntos que


nos parezcan más importantes por grupos.

http://www.recursospython.com/pep8es.pdf
Ejercicios

Terminar los ejercicios de 27 al 51


Escribir docstrings y aplicar pautas de estilo
Programación modular

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

def suma_multiplicacion(num_1, num_2):


return num1_+ num2, num_1 * num_2
Ejercicios

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

Crear los algoritmos en papel


 Buscar código repetido y crear funciones o procedimientos con dicho código
 Se deben devolver uno o dos elementos en la función
 En caso de devolver más crear un objeto para contenerlo (listas, tuplas, clase…)
 Deben tener un tamaño corto
 Los parámetros siempre serán de entrada, no utilizarlos para salida
 Tendrán un único punto de entrada y un único punto de salida (return), la última línea
Ejercicios

Bloque Ejercicios1
Ejercicios
code_0001_b.py

Ejercicio del ahorcado: Nivel 1

Acción Juego del Ahorcado


Pedir la palabra al primer jugador
Jugar con el segundo
Fin Acción
Ejercicios
Ejercicio del ahorcado: Nivel 2

Acción Pedir la palabra al primer jugador


Imprimir “Palabra?”
Leer Palabra
Borrar la pantalla
Fin Acción

Acción Jugar con el segundo


numero_fallos = 0
letras_faltan = palabra
letras_adivinadas= “-“ * longitud(palabra)
Mientras no_acabe_el_juego Hacer
Pedir letra al segundo jugador
Evaluar jugada
Imprimir resultado
Fin mientras
Fin Acción
Ejercicios
Ejercicio del ahorcado: Nivel 3
Acción Pedir letra al segundo jugador
Imprimir letras_acertadas, “Letra?”
Leer letra
Fin Acción

Acción Evaluar jugada


numero_aciertos_letra = 0
Para índice = 0 hasta longitud(letras_faltan)
Hacer
Si letras_faltan[índice] = letra Entonces
letras_acertadas[índice] = letra
letras_faltan[índice] = “-“
numero_aciertos_letra += 1
Fin si
Fin para
Si numero_aciertos_letra = 0 Entonces
Numero_fallos += 1
Fin Si
Fin Acción
Ejercicios

Ejercicios Juegos
Fin U.T. 3

También podría gustarte