Programación I: Funciones y módulos



Documentos relacionados
LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

La ventana de Microsoft Excel

Centro de Capacitación en Informática

Centro de Capacitación en Informática

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Hoja1!C4. Hoja1!$C$4. Fila

MATERIAL 2 EXCEL 2007

Ejemplos de conversión de reales a enteros

LECCIÓN 4ª Operaciones Numéricas

Nano Taller de Python

Módulo II - PowerPoint

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Herramienta Solver. Activar Excel Solver

Capitulo V Administración de memoria

SISTEMAS DE NUMERACIÓN. Sistema decimal

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Hacer campos de solo lectura en ventanas.

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

Ahora comencemos!... Las operaciones matemáticas fundamentales pueden realizarse de forma rápida y sencilla con Miicrosofftt Excell.

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Índice Introducción Estructuras Algebraicas Listas Los Números Enteros Polinomios. Álgebra y Matemática Discreta Sesión de Prácticas 1

Interpolación polinómica

Introducción a PHP. * No es necesario declarar previamente las variables.

Instituto Mar de Cortés Elaborar Documentos en Procesador de Texto

LAS BARRAS. La barra de acceso rápido

15 CORREO WEB CORREO WEB

Tema : ELECTRÓNICA DIGITAL

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

ESPOCH ESCUELA DE MEDICINA HERNANDEZ MAYRA FORMULAS Y DUNCIONES BASICAS ESPOCH

SOLUCIÓN CASO PRÉSTAMOS II

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Modulo 1 El lenguaje Java

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Informática Bioingeniería

Conclusiones. Particionado Consciente de los Datos

Curso de Excel Avanzado

Módulo mod_banners para insertar y visualizar anuncios o publicidad (banners) en Joomla. Contador. (CU00446A)

Facturación Automática de Ventas WhitePaper Noviembre de 2006

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

Tutorial Sistema de indicadores Observatorio de la Persona Joven

Lección 9: Polinomios

Creación de Funciones de Conducción

Técnicas para mejorar nuestro Posicionamiento

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

DESCARGA E INSTALACIÓN DE LA DOCUMENTACIÓN PARA LAS CLASES DEL API DE JAVA. CONSULTAR EN LOCAL O EN INTERNET? (CU00910C)

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Análisis de los datos

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Definiciones. Tema 21_Módulos Menú 1

El proceso de edición digital en Artelope y CTCE

Marketing Jurídico, generando negocios online Por: Equipo Mi Guía Legal, El Salvador 23 de febrero de 2016

Manual Impress Impress Impress Impress Impress Draw Impress Impress


MANUAL DE AYUDA MODULO TALLAS Y COLORES

Cómo crear experiencias de cliente con Social Media. Whitepaper

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Programación: QBASIC

Álgebra y Matemática Discreta Sesión de Prácticas 1

UNIDAD 1. LOS NÚMEROS ENTEROS.

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Informática I Notas del curso

Ecuaciones de primer grado con dos incógnitas

Base de datos en Excel

Ingeniería de Software I

Mantenimiento Limpieza

Uso del programa CALC

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

/05/2009

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

Página 1 de 7. Qué es Scratch?

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Problemas y ventajas de medir con BIM

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

5 Ecuaciones lineales y conceptos elementales de funciones

Coordinación en un Centro TIC Tema 4 Control de impresoras

NOVEDADES Y MEJORAS. datahotel versión 9.00 TRABAJAR CON I.V.A INCLUIDO

Matrices Invertibles y Elementos de Álgebra Matricial

Operaciones con polinomios

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

ADEUDOS DOMICILIADOS SEPA ERP Microsa

GVisualPDA Módulo de Almacén

Título: Educar para fabricar ciudadanos emisión 49 (13/12/2009, 21:00 hs) temporada 14

Programación Orientada a Objetos en JAVA

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

5. PRESUPUESTO (GASTOS)

SUMA Y RESTA DE FRACCIONES

Internet Information Server

Antes de construir tu base de datos es conveniente saber que tipos de datos vas a almacenar y como distribuirlos.

Actividad: Qué es la energía mecánica?

CAPITULO II CARACTERISTICAS DE LOS INSTRUMENTOS DE MEDICION

Transcripción:

Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión.................................................. 2.3. Ejemplos.......................................................... 2.3.. Factorial....................................................... 2 2. Módulos 3 2.. Definición y uso de un módulo.............................................. 3 2.2. Ejemplos.......................................................... 4 2.2.. Autómata que reconoce cantidad impar de s.................................. 4 3. Recursividad 4 3.. Ejemplos.......................................................... 5 3... Factorial....................................................... 5 4. Ejercicios 5. Funciones Existen diversas situaciones donde queremos hacer una determinada acción varias veces en un mismo programa, por ejemplo: Escribir a salida estándar. Leer desde entrada estándar. Generar una lista de a n. Obtener el largo de un string. Cada vez que hemos estado en alguno de los escenarios anteriores lo que hemos hecho es hacer uso de alguna función para conseguir lo que queremos, no hemos programado la función propiamente tal, solo la hemos usado. Una función nos permitirá encapsular código que presenta una funcionalidad determinada y, generalmente, bastante específica. Por ejemplo, para los casos anteriores tenemos: Escribir a salida estándar: print(). Leer desde entrada estándar: input(). Generar una lista de a n: range(). Obtener el largo de un string: len().

.. Definición y llamado de funciones Para poder definir una función debemos establecer: Nombre de la función: el cual debe ser único. Parámetros de la función: si la función tendrá alguna entrada. Cuerpo de la función: lo que la función realizará. Retorno de la función: si la función tendrá alguna salida. De lo anterior, el nombre y el cuerpo siempre son obligatorios. Pudiendo existir funciones sin parámetros y/o sin retornos. Un ejemplo fome de función sin parámetros y sin retornos es: def fome () : a = La función anterior no hace nada útil, pero nos sirve para analizar la definición de una función. Se debe utilizar la instrucción def, seguida del nombre de la función, paréntesis (donde de existir parámetros irán dentro), dos puntos y luego el cuerpo de la función. O sea: def nombre de la función (parámetros de la función) : cuerpo de la función Una función más interesante, con parámetros y valor de retorno, sería la función para sumar dos números: def suma (a, b) : Una vez que tenemos nuestra función construída, por ejemplo la función suma del ejemplo anterior, la llamamos simplemente con su nombre: resultado = suma (, 2) Donde en resultado se almacenará el valor retornado por la función. Es muy importante mencionar que la función debe estar definida antes de ser llamada. De forma contraría se producirá un error indicando que la función no es encontrada..2. Parámetros por omisión A veces pueder ser útil especificar parámetros por omisión, esto es, si en el llamado a la función no se especifica el parámetro se utilizará algún valor por defecto. # definición def suma (a, b=5) : # llamado print(suma()) # 6 print(suma(,3)) # 4 Notar que solo se entregó un valor por omisión al parámetro b, por lo cual siempre se deberá pasar como mínimo un parámetro, el valor de a..3. Ejemplos.3.. Factorial es: Tomemos el ejemplo de la ayudantía anterior que permitía calcular Π n i=i = 2 3... n, la solución de dicho ejemplo 2

n = 3 multiplicacion = for i in range(2, n+) : multiplicacion *= i print(multiplicacion) Lo anterior permite calcular n!, n. Transformamos el código anterior a una función y a sus llamadas correspondientes para obtener los valores de!,!, 2!, 3!: # definición def factorial (n) : factorial = for i in range(2, n+) : factorial *= i return factorial # llamadas print(factorial()) # print(factorial()) # print(factorial(2)) # 2 print(factorial(3)) # 6 2. Módulos Supongamos que nuestro programa requiere funciones que hemos programado, estás habría que definirlas antes de poder ser utilizadas: función función 2... función programa principal Lo anterior claramente podría ser molesto. Pensemos ahora que tenemos un grupo de funciones que hemos programado y queremos compartirlas con otro programador pues este tiene necesidades que nuestras funciones resuelven, cómo integra el otro programador nuestras funciones en su programa? las copia y pega en su propio archivo.py?. Los módulos nos permitirán agrupar diferentes funciones en un mismo archivo, generalmente se agruparán funciones que están relacionadas entre si. Por ejemplo hasta ahora hemos utilizado el módulo math el cual agrupa diferentes funciones asociadas a matemáticas, específicamente hemos utilizado la función factorial. Existen dos formas de cargar un módulo y usar sus funciones:. Cargar el módulo completo y luego hacer los llamados indicando el módulo.función: import math print(math.factorial(3)) 2. Cargar solo una (o varias, pero no todas) función de un módulo y llamarla simplemente con su nombre. from math import factorial print(factorial(3)) Durante el curso se utilizará la primera forma, ya que esta dejará claro y de forma explícita que estamos utilizando un módulo. 2.. Definición y uso de un módulo Supongamos que queremos crear nuestro módulo llamado mimodulo, para hacer esto creamos el archivo mimodulo.py en el mismo directorio que nuestro programa principal y supongamos que nuestro programa principal se llama main.py). Con lo anterio definamos una función dentro de nuestro módulo y llamémosla desde nuestro programa principal. Entonces: 3

# esto va en el archivo mimodulo.py def suma (a, b) : # esto va en el archivo main.py import mimodulo print(mimodulo.suma(,2)) 2.2. Ejemplos 2.2.. Autómata que reconoce cantidad impar de s El autómata de la figura reconoce los strings w que contienen una cantidad impar de s, independientemente de los s que se puedan haber visto en el string. q start q Figura : AFD que reconoce strings de s y s con cantidad impar de s Se creará un módulo automata donde se definirá la función impar de ceros que contendrá el algoritmo del autómata de la figura. # @file automata.py def impar_de_ceros (w) : estado = for i in range (len(w)) : if int(w[i]) == : estado = (estado+) % 2 if estado == : return True else : return False # @file main.py import automata print(automata.impar_de_ceros("")) print(automata.impar_de_ceros("")) # True print(automata.impar_de_ceros("")) # True print(automata.impar_de_ceros("")) print(automata.impar_de_ceros("")) 3. Recursividad Las funciones recursivas consisten en que una función hace llamadas a si misma. Un mal ejemplo de llamada recursiva es: def f () : return f() El ejemplo anterior es malo puesto que la ejecución de f() se llamará por siempre de forma recursiva. Una función recursiva debe tener siempre una condición de término que permita retornar y empezar a devolverse en las llamadas. O sea se deberá ver como sigue: 4

def función recursiva () : # condición de termino de la recursivad (retornar algo "fijo") # llamada recursiva 3.. Ejemplos 3... Factorial Nuevamente utilicemos el ejemplo n!. La definición del factorial de n se puede hacer mediante inducción matemática (esto es de forma recursiva) según: Caso base:! = y! =. Caso inductivo: n! = n(n )!. Con lo anterior tenemos la forma de construir la función factorial, pero ahora de forma recursiva: def factorial (n) : if n <= : return return n * factorial(n-) 4. Ejercicios. Cómo utilizar un módulo que no está en el mismo directorio que nuestro programa principal, sino que está en un subdirectorio llamado modules? 2. En el módulo automata creado en el ejemplo 2.2., programe la función impar de ceros y unos que procese el string w según el autómata descrito en la figura 2. Casos de prueba: # @file main.py import automata print(automata.impar_de_ceros_y_unos("")) print(automata.impar_de_ceros_y_unos("")) print(automata.impar_de_ceros_y_unos("")) print(automata.impar_de_ceros_y_unos("")) print(automata.impar_de_ceros_y_unos("")) print(automata.impar_de_ceros_y_unos("")) # True # True q start q q 2 q 3 Figura 2: AFD que reconoce strings de s y s con cantidad impar de s y cantidad impar de s 3. Programar de forma recursiva la función que permite calcular la sucesión de Fibonacci:,,, 2, 3, 5, 8, 3, 2, 34, 55, 89, 44..., donde la sucesión comienza con los números y y luego el siguiente es la suma de los dos anteriores (hint: defina primero de forma inductiva la sucesión de Fibonacci y luego programe la función recursiva). 5