2 programación modular y estructurada€¦ · fundamentos de la programación 08/10/2015 tema2:...
Post on 03-Oct-2020
5 Views
Preview:
TRANSCRIPT
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 1
Programacioacuten
Modular y
Estructurada
TEMA 2
1
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 2
IacuteNDICE
21 Introduccioacuten(2-5)
22 Principios de la Programacioacuten Estructurada(67)
23 Pasos para la construccioacuten de un programa Modular(8-15)
24 Aacutembito de las variables (Globales y Locales)(16-21)
25 Creacioacuten de subprogramas (22-52)
251 Paso de paraacutemetros por valor y por referencia(2425)
252 Definicioacuten de funcioacuten (26-40)
253 Definicioacuten de Procedimientos (41-52)
Tema 2 Fundamentos de Programacioacuten
2
Final de estos
apartados
EJEMPLOS
ILUSTRATIVOS
TRABAJO
PERSONAL
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 3
Tema 3 Fundamentos de Programacioacuten
Hasta ahora nosotros hemos aprendido a invocar funciones predefinidas (absroundhellip)
Otras funciones las hemos utilizado importaacutendolas de algunos moacutedulos (moacutedulo mathsin loghellip)
En este capiacutetulo se explicaraacuten todos los elementos necesarios para crearlas
Programacioacuten modular Disentildeo de programas mediante la descomposicioacuten del
problema en moacutedulos sencillos e independientes
Programacioacuten estructurada Programacioacuten de cada uno de estos moacutedulos de forma
estructurada Unioacuten de moacutedulos para la resolucioacuten del problema global
3
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 4
Tema 3 Fundamentos de Programacioacuten
Recordemos el principal objetivo de la asignatura
ldquoAprender a programar seguacuten este paradigma =gtEscribir programas
que funcionen correctamente y sean claros legibles y faacutecilmente actualizables y depurablesrdquo
21 Introduccioacuten
4
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 5
Tema 3 Fundamentos de Programacioacuten
Evitar determinados malos haacutebitos de programacioacuten que llevan a problemas como
Coacutedigo demasiado largo enrevesado y poco claro ilegible en la mayoriacutea de los casos
no solo para otros programadores tambieacuten para el autor del mismo
Dificultades en la correccioacuten de errores siendo generalmente difiacutecil la localizacioacuten de los
mismos Las modificaciones o actualizaciones son costosas por lo que generalmente se
recurre a parches que contribuyen a su vez a un empeoramiento en la loacutegica inicial del
programa
A estos inconvenientes se suele antildeadir una documentacioacuten escasa e incompleta y no
siempre actualizada
5
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 6
Tema 3 Fundamentos de Programacioacuten
Programacioacuten Estructurada
Principios
Abstraccioacuten
No se disentildea la solucioacuten de un problema pensando en una maacutequina y lenguaje concreto
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio cualquiera que sea el trabajo que tenga que realizar se
puede implementar utilizando las tres estructuras de control baacutesicas que son la secuencial
alternativa o selectiva y repetitiva o iterativa
La importancia de este teorema radica en que estas tres estructuras tienen un uacutenico punto
de entrada y un uacutenico punto de salida =gt Todo lo que se construya con estas tres estructuras
tendraacute tambieacuten un uacutenico inicio y un uacutenico final
Disentildeo descendente (Top-down)
Resolver el problema original apoyaacutendonos en una serie de subtareas o moacutedulos
622 Principios de la Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 2
IacuteNDICE
21 Introduccioacuten(2-5)
22 Principios de la Programacioacuten Estructurada(67)
23 Pasos para la construccioacuten de un programa Modular(8-15)
24 Aacutembito de las variables (Globales y Locales)(16-21)
25 Creacioacuten de subprogramas (22-52)
251 Paso de paraacutemetros por valor y por referencia(2425)
252 Definicioacuten de funcioacuten (26-40)
253 Definicioacuten de Procedimientos (41-52)
Tema 2 Fundamentos de Programacioacuten
2
Final de estos
apartados
EJEMPLOS
ILUSTRATIVOS
TRABAJO
PERSONAL
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 3
Tema 3 Fundamentos de Programacioacuten
Hasta ahora nosotros hemos aprendido a invocar funciones predefinidas (absroundhellip)
Otras funciones las hemos utilizado importaacutendolas de algunos moacutedulos (moacutedulo mathsin loghellip)
En este capiacutetulo se explicaraacuten todos los elementos necesarios para crearlas
Programacioacuten modular Disentildeo de programas mediante la descomposicioacuten del
problema en moacutedulos sencillos e independientes
Programacioacuten estructurada Programacioacuten de cada uno de estos moacutedulos de forma
estructurada Unioacuten de moacutedulos para la resolucioacuten del problema global
3
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 4
Tema 3 Fundamentos de Programacioacuten
Recordemos el principal objetivo de la asignatura
ldquoAprender a programar seguacuten este paradigma =gtEscribir programas
que funcionen correctamente y sean claros legibles y faacutecilmente actualizables y depurablesrdquo
21 Introduccioacuten
4
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 5
Tema 3 Fundamentos de Programacioacuten
Evitar determinados malos haacutebitos de programacioacuten que llevan a problemas como
Coacutedigo demasiado largo enrevesado y poco claro ilegible en la mayoriacutea de los casos
no solo para otros programadores tambieacuten para el autor del mismo
Dificultades en la correccioacuten de errores siendo generalmente difiacutecil la localizacioacuten de los
mismos Las modificaciones o actualizaciones son costosas por lo que generalmente se
recurre a parches que contribuyen a su vez a un empeoramiento en la loacutegica inicial del
programa
A estos inconvenientes se suele antildeadir una documentacioacuten escasa e incompleta y no
siempre actualizada
5
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 6
Tema 3 Fundamentos de Programacioacuten
Programacioacuten Estructurada
Principios
Abstraccioacuten
No se disentildea la solucioacuten de un problema pensando en una maacutequina y lenguaje concreto
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio cualquiera que sea el trabajo que tenga que realizar se
puede implementar utilizando las tres estructuras de control baacutesicas que son la secuencial
alternativa o selectiva y repetitiva o iterativa
La importancia de este teorema radica en que estas tres estructuras tienen un uacutenico punto
de entrada y un uacutenico punto de salida =gt Todo lo que se construya con estas tres estructuras
tendraacute tambieacuten un uacutenico inicio y un uacutenico final
Disentildeo descendente (Top-down)
Resolver el problema original apoyaacutendonos en una serie de subtareas o moacutedulos
622 Principios de la Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 3
Tema 3 Fundamentos de Programacioacuten
Hasta ahora nosotros hemos aprendido a invocar funciones predefinidas (absroundhellip)
Otras funciones las hemos utilizado importaacutendolas de algunos moacutedulos (moacutedulo mathsin loghellip)
En este capiacutetulo se explicaraacuten todos los elementos necesarios para crearlas
Programacioacuten modular Disentildeo de programas mediante la descomposicioacuten del
problema en moacutedulos sencillos e independientes
Programacioacuten estructurada Programacioacuten de cada uno de estos moacutedulos de forma
estructurada Unioacuten de moacutedulos para la resolucioacuten del problema global
3
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 4
Tema 3 Fundamentos de Programacioacuten
Recordemos el principal objetivo de la asignatura
ldquoAprender a programar seguacuten este paradigma =gtEscribir programas
que funcionen correctamente y sean claros legibles y faacutecilmente actualizables y depurablesrdquo
21 Introduccioacuten
4
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 5
Tema 3 Fundamentos de Programacioacuten
Evitar determinados malos haacutebitos de programacioacuten que llevan a problemas como
Coacutedigo demasiado largo enrevesado y poco claro ilegible en la mayoriacutea de los casos
no solo para otros programadores tambieacuten para el autor del mismo
Dificultades en la correccioacuten de errores siendo generalmente difiacutecil la localizacioacuten de los
mismos Las modificaciones o actualizaciones son costosas por lo que generalmente se
recurre a parches que contribuyen a su vez a un empeoramiento en la loacutegica inicial del
programa
A estos inconvenientes se suele antildeadir una documentacioacuten escasa e incompleta y no
siempre actualizada
5
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 6
Tema 3 Fundamentos de Programacioacuten
Programacioacuten Estructurada
Principios
Abstraccioacuten
No se disentildea la solucioacuten de un problema pensando en una maacutequina y lenguaje concreto
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio cualquiera que sea el trabajo que tenga que realizar se
puede implementar utilizando las tres estructuras de control baacutesicas que son la secuencial
alternativa o selectiva y repetitiva o iterativa
La importancia de este teorema radica en que estas tres estructuras tienen un uacutenico punto
de entrada y un uacutenico punto de salida =gt Todo lo que se construya con estas tres estructuras
tendraacute tambieacuten un uacutenico inicio y un uacutenico final
Disentildeo descendente (Top-down)
Resolver el problema original apoyaacutendonos en una serie de subtareas o moacutedulos
622 Principios de la Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 4
Tema 3 Fundamentos de Programacioacuten
Recordemos el principal objetivo de la asignatura
ldquoAprender a programar seguacuten este paradigma =gtEscribir programas
que funcionen correctamente y sean claros legibles y faacutecilmente actualizables y depurablesrdquo
21 Introduccioacuten
4
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 5
Tema 3 Fundamentos de Programacioacuten
Evitar determinados malos haacutebitos de programacioacuten que llevan a problemas como
Coacutedigo demasiado largo enrevesado y poco claro ilegible en la mayoriacutea de los casos
no solo para otros programadores tambieacuten para el autor del mismo
Dificultades en la correccioacuten de errores siendo generalmente difiacutecil la localizacioacuten de los
mismos Las modificaciones o actualizaciones son costosas por lo que generalmente se
recurre a parches que contribuyen a su vez a un empeoramiento en la loacutegica inicial del
programa
A estos inconvenientes se suele antildeadir una documentacioacuten escasa e incompleta y no
siempre actualizada
5
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 6
Tema 3 Fundamentos de Programacioacuten
Programacioacuten Estructurada
Principios
Abstraccioacuten
No se disentildea la solucioacuten de un problema pensando en una maacutequina y lenguaje concreto
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio cualquiera que sea el trabajo que tenga que realizar se
puede implementar utilizando las tres estructuras de control baacutesicas que son la secuencial
alternativa o selectiva y repetitiva o iterativa
La importancia de este teorema radica en que estas tres estructuras tienen un uacutenico punto
de entrada y un uacutenico punto de salida =gt Todo lo que se construya con estas tres estructuras
tendraacute tambieacuten un uacutenico inicio y un uacutenico final
Disentildeo descendente (Top-down)
Resolver el problema original apoyaacutendonos en una serie de subtareas o moacutedulos
622 Principios de la Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 5
Tema 3 Fundamentos de Programacioacuten
Evitar determinados malos haacutebitos de programacioacuten que llevan a problemas como
Coacutedigo demasiado largo enrevesado y poco claro ilegible en la mayoriacutea de los casos
no solo para otros programadores tambieacuten para el autor del mismo
Dificultades en la correccioacuten de errores siendo generalmente difiacutecil la localizacioacuten de los
mismos Las modificaciones o actualizaciones son costosas por lo que generalmente se
recurre a parches que contribuyen a su vez a un empeoramiento en la loacutegica inicial del
programa
A estos inconvenientes se suele antildeadir una documentacioacuten escasa e incompleta y no
siempre actualizada
5
Tema 2 Fundamentos de Programacioacuten
21 Introduccioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 6
Tema 3 Fundamentos de Programacioacuten
Programacioacuten Estructurada
Principios
Abstraccioacuten
No se disentildea la solucioacuten de un problema pensando en una maacutequina y lenguaje concreto
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio cualquiera que sea el trabajo que tenga que realizar se
puede implementar utilizando las tres estructuras de control baacutesicas que son la secuencial
alternativa o selectiva y repetitiva o iterativa
La importancia de este teorema radica en que estas tres estructuras tienen un uacutenico punto
de entrada y un uacutenico punto de salida =gt Todo lo que se construya con estas tres estructuras
tendraacute tambieacuten un uacutenico inicio y un uacutenico final
Disentildeo descendente (Top-down)
Resolver el problema original apoyaacutendonos en una serie de subtareas o moacutedulos
622 Principios de la Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 6
Tema 3 Fundamentos de Programacioacuten
Programacioacuten Estructurada
Principios
Abstraccioacuten
No se disentildea la solucioacuten de un problema pensando en una maacutequina y lenguaje concreto
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio cualquiera que sea el trabajo que tenga que realizar se
puede implementar utilizando las tres estructuras de control baacutesicas que son la secuencial
alternativa o selectiva y repetitiva o iterativa
La importancia de este teorema radica en que estas tres estructuras tienen un uacutenico punto
de entrada y un uacutenico punto de salida =gt Todo lo que se construya con estas tres estructuras
tendraacute tambieacuten un uacutenico inicio y un uacutenico final
Disentildeo descendente (Top-down)
Resolver el problema original apoyaacutendonos en una serie de subtareas o moacutedulos
622 Principios de la Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 7
Tema 3 Fundamentos de Programacioacuten
Observacioacuten la instruccioacuten ldquoir ardquo (goto)
Esta instruccioacuten fue la base de lenguajes como BASIC o FORTRAN y muchos otros pero
desde la aparicioacuten de la programacioacuten estructurada esta instruccioacuten esta proscrita puesto
que va contra los principios de la misma
Esta instruccioacuten permite saltar desde cualquier punto del programa a cualquier otro y por
tanto va contra el principio enunciado en el Teorema de la estructura
Esta instruccioacuten nos impide hacer una descomposicioacuten del problema puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en aacutereas
claras todo estaraacute mezclado con todo Nuestro objetivo es trabajar de forma
estructurada
Norma importantiacutesima se llega al fin del programa por un soacutelo camino de la misma forma
que se sale de un bucle por una uacutenica viacutea
En programacioacuten estructurada esta totalmente prohibido el uso de la instruccioacuten goto
7
221 Instruccioacuten goto
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 8
Tema 3 Fundamentos de Programacioacuten
Programacioacuten modular
Divisioacuten del problema a resolver en varios subproblemas maacutes sencillos con entidad y sentido
propios
Buacutesqueda de la abstraccioacuten =gt no importa como se hace sino que hace cada uno de los
moacutedulos
Para cada uno de estos subproblemas o moacutedulos se construye un algoritmo que los resuelve
Terminada esta fase se componen todos los moacutedulos para obtener un algoritmo global que
resuelva el problema Esto se conoce como la teacutecnica Divide y venceraacutes
Existen dos formas de realizar el disentildeo modular
Disentildeo descendente (Top Down) Resolver el problema original apoyaacutendonos en una
serie de subtareas o moacutedulos que se suponen ya resueltos y obtener la solucioacuten del
problema posponiendo la solucioacuten de dichas subtareas
Disentildeo ascendente (Bottom Up) Se comienza por resolver las subtareas maacutes pequentildeas
que contiene el problema original para posteriormente unirlas obteniendo la solucioacuten
del problema
8
23 Pasos para la construccioacuten de un programa modular
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 9
Tema 3 Fundamentos de Programacioacuten
Algoritmo para el calculo del aacuterea de un cilindro
leer radio y altura
Calcular aacuterea circunferencia ()
calcular longitud circunferencia
Calcular aacuterea rectaacutengulo ()
Calcular aacuterea cilindro
() aacuterea circunferencia = p radio radio
Longitud = 2 p radio
() aacuterea rectaacutengulo = longitud altura
aacuterea cilindro= 2 aacuterea circunferencia + aacuterea rectaacutengulo
9
231 Ejemplo 1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 10
Tema 3 Fundamentos de Programacioacuten
Disentildeo del organigrama modular donde se muestran los diferentes moacutedulos en los que se divide el
problema inicial y la comunicacioacuten entre ellos
Disentildeo del modulo principal que realiza la distribucioacuten del trabajo entre los diferentes submoacutedulos
Incluye baacutesicamente las llamadas a los diferentes submoacutedulos y algunas operaciones de
caraacutecter general
Cuando se llama a un moacutedulo el moacutedulo que llama cede el control al submoacutedulo llamado y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros moacutedulos si las hay)
Los moacutedulos se pueden llamar tantas veces como sea necesario es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir coacutedigo
10
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 11
Tema 3 Fundamentos de Programacioacuten
Prog Principal
Moacutedulo 1 Moacutedulo 2 Moacutedulo 3
Moacutedulo 4 Moacutedulo 5 Moacutedulo 6 Moacutedulo 7
Moacutedulo 8
11
232 Organigramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 12
Tema 3 Fundamentos de Programacioacuten
Calcular el aacuterea de un cilindro
Calcular el aacuterea de un ciacuterculo
de radio r (S)
Calcular el aacuterea de la pieza
frontal de altura h
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el aacuterea de un rectaacutengulo de
altura h y base L (F)
Leer radio (r) y altura (h) Sumar 2S y F
S = p r2
L = 2 p r F = L S
12
233 Organigrama Ejemplo1
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 13
Tema 3 Fundamentos de Programacioacuten
Establecer la comunicacioacuten entre los moacutedulos Queacute informacioacuten necesitan queacute informacioacuten
devuelven y quieacuten y a quieacuten se la proporcionan Los moacutedulos deben cumplir las siguientes
caracteriacutesticas
Maacutexima cohesioacuten es decir las salidas de un moacutedulo deben ser compatibles con las entradas de
otros moacutedulos
Miacutenimo acoplamiento es decir la cantidad de informacioacuten que recibe un moacutedulo de otro
moacutedulo debe ser la miacutenima
El resultado de un moacutedulo debe ser funcioacuten directa de sus entradas y no depender de ninguacuten
estado interno
Los moacutedulos seraacuten como cajas negras que recibe un unos valores de entrada y devuelven un
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas)
Moacutedulo 1 Moacutedulo 2 E1 S1 E2 S2
IF 1 IF 2
Programa E1 S2
13
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 14
Tema 3 Fundamentos de Programacioacuten
Describir en detalle cada moacutedulo baacutesico como paso previo a su implementacioacuten
En el caso de que el proceso que realiza un moacutedulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submoacutedulos con ideacutentica filosofiacutea (disentildeo
descendente)
Unioacuten de los subprogramas construidos para obtener la solucioacuten del problema (disentildeo
ascendente)
Esta teacutecnica aporta dos caracteriacutesticas importantes
Reutilizacioacuten de coacutedigo
Abstraccioacuten
La programacioacuten modular se implementa utilizando moacutedulos que toman diferentes nombres
seguacuten los lenguajes funciones en C y C++ subrutinas en BASIC y FORTRAN funciones y
procedimientos en PASCAL secciones en COBOL
14
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 15
Tema 3 Fundamentos de Programacioacuten
En programacioacuten Estructurada normalmente se trabaja con dos tipos de moacutedulos
Funciones y Procedimientos
En este curso se aprenderaacute a implementar Funciones y Procedimientos en Python (En python
existen dos tipos de funciones dependiendo de su salida una de ellas simularaacute el concepto
que veremos de funcioacuten y la otra el concepto de procedimiento )
15
234 Comunicacioacuten entre moacutedulos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 16
Tema 3 Fundamentos de Programacioacuten
Aacutembito de las variables
La zona del programa en la que una variable puede ser utilizada es lo que se conoce como su
aacutembito (Es decir el aacutembito es la parte del algoritmo en el que se define una variable =gt parte
en la que la variable es accesible El mismo concepto para las constantes)
Las variables en programacioacuten estructurada pueden ser globales o locales
Una variable global generalmente se declara para el programa o algoritmo completo es
decir en el modulo principal Su valor estaacute disponible tanto en el cuerpo del programa
principal como en el de cualquiera de los subprogramas declarados
Una variable local es la que estaacute declarada y definida dentro de un subprograma y es
distinta de las posibles variables con el mismo nombre definidas en otros moacutedulos que no
esteacuten anidados en su interior puesto que se refieren a posiciones diferentes de memoria Su
valor soacutelo estaacute disponible mientras se ejecuta el subprograma
El programa principal no tiene conocimiento alguno de las variables locales de sus
procedimientos y funciones Estas variables hacen a los moacutedulos totalmente
independientes
1624 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 17
Tema 3 Fundamentos de Programacioacuten
Diagrama
Vbles definidas
en
Accesibles desde
A A B C D E F G
B B C
C C
D D E F G
E E F G
F F
G G
A
B C
D E
F
G
1724 Aacutembito de las variables
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 18
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables locales
INICIO Modulo 1
leer (x) Suponer lectura 3
y x100
escribir (x y) Salida 3 300
Fin Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y) Suponer lectura 10 20
Llamada a Moacutedulo 1
z x + y
Escribir (x y z) Salida 102030
Fin Moacutedulo Principal
18241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 19
Moacutedulo Principal
VARIABLE x y z entero Declaracioacuten de variables globales
Modulo 1
VARIABLE x y entero Declaracioacuten de variables localesINICIO Modulo 1
leer (x y ) Suponer lectura 32
z x + y
escribir (z) Salida 5
FIN Moacutedulo 1
Inicio Moacutedulo Principal
Leer (x y z) Suponer lectura 123
Llamada a Moacutedulo 1
Llamada a Moacutedulo 2
Escribir (x y z) Salida 125 se ha modificado z en Modulo 1
Fin Moacutedulo Principal
La uacutenica variable global
modificada ha sido z
(en Moacutedulo 1)
19241 Ejemplos
Modulo 2
VARIABLE x z entero Declaracioacuten de variables locales
INICIO Modulo 2
leer (x z) Suponer lectura 1020
z x + z
escribir (x y z) Salida 10 2 30
FIN Moacutedulo 2
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 20
Moacutedulo Principal
VARIABLE xyz entero variables globales
Modulo 1
VARIABLE xy entero datoreal variables locales
INICIO
leer (xy) Suponer lectura 32
z x+y
escribir ( xy z) salida 32 5
dato= 1095
escribir (dato) salida 1095
Fin Moacutedulo 1
Modulo 2
VARIABLE xz entero variables locales
INICIO
leer (xz) Suponer lectura 1020
z x+z
escribir (x y z) salida 10 2 30
Fin Moacutedulo 2
Inicio Moacutedulo Principal
Leer (xyz) Suponer lectura 123
Llamada a Moacutedulo 1
Escribir (xyz) salida 12 5
Escribir (dato) salida ERROR variable desconocida
Llamada a Moacutedulo 2
Escribir (xyz) Salida 125 modificado z en Modulo 1
Fin Moacutedulo Principal
20241 Ejemplos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 21
Tema 3 Fundamentos de Programacioacuten
21242 Variables globales y locales en Python
Los conceptos explicados son exactamente igual en Python
Recordemos en Python las variables no se declaran Se crean justo en el momento en el que
reciben por asignacioacuten un valor por primera vez y a partir de ese momento ya pueden formar
parte de una expresioacuten
Variables globales residen fuera de toda funcioacuten son visibles en todo el programa
Variables locales Son creadas dentro de las funciones y solo son visibles dentro de las mismas
En python existen ademaacutes Variables no locales Si a una variable no se le asigna valor en una
funcioacuten Python la considera libre y busca su valor en los niveles superiores de esa funcioacuten
empezando por el inmediatamente superior y continuando hasta el programa principal Si a la
variable se le asigna valor en alguacuten nivel intermedio la variable se considera no local y si se le
asigna en el programa principal la variable se considera global
Las variables locales al contrario que las globales tienen una vida efiacutemera Solo existen durante el
momento en el que es llamada la funcioacuten En el momento en el que esta concluye desaparecen
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 22
Tema 3 Fundamentos de Programacioacuten
Los tipos de subprogramas que estudiaremos
Las funciones devuelven un soacutelo valor
Los procedimientos devuelven cero uno o varios valores en caso de que devuelva cero
valores devuelve un dato a la unidad de programa
Paraacutemetros Un argumento o paraacutemetro es el medio a partir del cual podemos
expandir el aacutembito de variables locales de subprogramas hacia otros
subprogramas y ademaacutes quienes nos permiten establecer comunicaciones entre
las diferentes partes de un programa
25 Creacioacuten de subprogramas22
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 23
Tema 3 Fundamentos de Programacioacuten
La comunicacioacuten de un moacutedulo con el resto de partes del programa se debe realizar a
traveacutes de los valores de su interfaz Cualquier otra comunicacioacuten entre el moacutedulo y el resto
del programa se denomina efectos laterales considerados como una mala teacutecnica de
programacioacuten que dificulta el entendimiento de los programas
Los moacutedulos se escriben generalmente antes que el programa principal (en el bloque
declarativo) y constan de las mismas partes que un programa es decir seccioacuten de
declaraciones y cuerpo del moacutedulo
La interfaz de un moacutedulo estaacute formada por una lista de paraacutemetros denominados
paraacutemetros formales
La llamada a un moacutedulo se realiza mediante los paraacutemetros actuales
Cuando el moacutedulo es llamado se realiza una correspondencia entre los paraacutemetros formales
y los paraacutemetros actuales que son utilizados en lugar de los paraacutemetros formales
permitiendo asiacute el intercambio de informacioacuten Es lo que se conoce como paso de
paraacutemetros
2325 Creacioacuten de subprogramas
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 24
Tema 3 Fundamentos de Programacioacuten
Paso por valor
Los paraacutemetros se tratan como variables locales y los valores iniciales se proporcionan
copiando los valores de los correspondientes paraacutemetros actuales
Los cambios que se produzcan por efecto del subprograma no producen cambios en los
valores originales es decir no se devuelven valores de retorno al punto de llamada
Por tanto este paso puede ser una constante variable o expresioacuten
El paso por valor se corresponde con paraacutemetros de entrada Y se especificara
anteponiendo la palabra reservada E al paraacutemetro correspondiente en la lista de
paraacutemetros formales
24251 Paso de paraacutemetros por valor y por referencia
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 25
Tema 3 Fundamentos de Programacioacuten
Paso por referencia
El moacutedulo que llama pasa al moacutedulo llamado la direccioacuten del paraacutemetro actual de
forma que la variable que actuacutea como paraacutemetro formal es compartida por ambos
moacutedulos siendo visibles las modificaciones que se realicen en el moacutedulo llamado se
devuelven por tanto valores de retorno al punto de llamada
Por tanto no podemos usar constantes ni expresiones solo variables
El paso por referencia se corresponde con paraacutemetros de entrada salida o simplemente
de salida La notacioacuten que utilizaremos para los paraacutemetros de salida es S y para los de
entrada salida ES
25
Tema 2 Fundamentos de Programacioacuten
251 Paso de paraacutemetros por valor y por referencia
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 26
Tema 3 Fundamentos de Programacioacuten
Funciones
Una funcioacuten es un moacutedulo que recibe uno o varios datos de entrada y devuelve un uacutenico valor
Las funciones siempre devuelven un valor al programa que las invocoacute
La sintaxis de una funcioacuten consta por un lado de la definicioacuten o declaracioacuten de la funcioacuten y
por otro de la llamada a la funcioacuten
Sintaxis en pseudocoacutedigo de la Declaracioacuten o Definicioacuten de una funcioacuten
Funcion identFuncion (lista de paraacutemetros formales) tipo_dato
declaraciones
Inicio
cuerpo de la funcioacuten
identFuncion valor imprescindible para que la funcioacuten devuelva un valor
Fin
26252 Definicioacuten de Funcioacuten
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 27
Tema 3 Fundamentos de Programacioacuten
Funciones
Sintaxis de la llamada a una funcioacuten
identVble identFuncioacuten (lista de paraacutemetros actuales)
oacute bien la llamada se utiliza dentro de una expresioacuten
La variable debe ser del mismo tipo que el valor de la salida de la funcioacuten
27
Tema 2 Fundamentos de Programacioacuten
252 Definicioacuten de Funcioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 28
Tema 3 Fundamentos de Programacioacuten
La lista de paraacutemetros formales es la informacioacuten que se le tiene que pasar a la funcioacuten debeindicar el tipo de datos que se trasfiere Estos paraacutemetros dentro de la funcioacuten se utilizan como sifueran variables locales definidas en la funcioacuten
Para cada paraacutemetro hay que poner su nombre (identificador) y tipo de dato Sintaxis(ident_F1 tipo1 ident_F2 tipo2)
La lista de paraacutemetros actuales estaacute formada por un conjunto de identificadores correspondientesa variables constantes expresiones o literales separados por comas definidas en el modulo quellama del mismo tipo especificado en la lista de paraacutemetros formales y coincidiendo en nuacutemero yorden con los paraacutemetros formales Sintaxis
(ident_A1 ident_ A2hellip ident_AN)
El nombre de la funcioacuten lo da el usuario y tiene que ser significativo
En las variables locales se declaran las variables que solo se necesita usar dentro de la funcioacuten
Entre las acciones existiraacute necesariamente una del tipo retorno ltvalorgt Esta sentencia pondraacute fin ala ejecucioacuten de la funcioacuten y devolveraacute el valor de la funcioacuten asociado al nombre o identificadorde la funcioacuten que seraacute del mismo tipo que el indicado al declarar la funcioacuten en la parte final de lacabecera
No se permiten funciones que no devuelvan nada
282521 Caracteriacutesticas de las Funciones
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 29
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es o no un diacutegito
Funcion es_digito(carcaraacutecter)booleano
Inicio
es_digito(cargt=rsquo0rsquo) y (carlt=rsquo9rsquo)
Fin
inicio modulo principal
helliphelliphelliphelliphellip
si es_digito(car)
escribir ( el caraacutecter es un diacutegito)
sino
escribir( el caracter no es un digitorsquo)
fin
292522 Ejemplos Funciones pseudocoacutedigo
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 30
Tema 3 Fundamentos de Programacioacuten
En Python las subrutinas reciben el nombre de funciones
Las funciones se pueden definir en cualquier punto de un programa aunque siempre antes de ser
utilizadas NOSOTROS LAS IMPLEMENTAREMOS EN EL BLOQUE DECLARATIVO
La primera liacutenea de la definicioacuten de una funcioacuten contiene la palabra reservada def
El nombre de la funcioacuten (la guiacutea de estilo de Python recomienda escribir todos los caracteres
en minuacutesculas separando las palabras por guiones bajos)
Pareacutentesis (que pueden incluir los argumentos de la funcioacuten como se explica maacutes adelante)
Las instrucciones que forman la funcioacuten se escriben con sangriacutea con respecto a la primera
liacutenea
Por comodidad se puede indicar el final de la funcioacuten con la palabra reservada return (maacutes
adelante se explica el uso de esta palabra reservada) aunque no es obligatorio
Ver ejemplo en apartado 2524
302523 Definicioacuten de Funcioacuten en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 31
Tema 3 Fundamentos de Programacioacuten
Disentildear una funcioacuten booleana o loacutegica que comprueba si un caraacutecter dado es
o no un diacutegito
algoritmo para ver si un caraacutecter es un diacutegito
def es_digito(car)
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
return (cargt=0) and (carlt=9)
Cuerpo del programa
n = input( Introduce el caraacutecter a comprobar )
if es_digito(n) Llamada a la funcioacuten en el cuerpo principal
print( el caraacutecter es un diacutegito)
else
print( el caracter no es un digito)
31
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 32
Tema 3 Fundamentos de Programacioacuten
En los ejemplos anteriores hemos documentado la funcioacuten mediante docstring
``` (str)-gtbool
Esta funcioacuten dado un caraacutecter me dice si es un diacutegitorsquorsquorsquo
Este comentario sirve para documentar cualquier funcioacuten podremos acceder a eacutel en la Shell
mediante la funcioacuten help(nombre de la funcioacuten) ejemplo
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
Es importante crear esta informacioacuten para todas las funciones que implementemos
posteriormente visualizar lo que hace la funcioacuten en la shell ejemplo
gtgtgt help(es_digito)
iexcliexcliexclEsta es una costumbre muy recomendable
32
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 33
Tema 3 Fundamentos de Programacioacuten
Ejemplo Disentildear una funcioacuten que calcule x3
Programa eleva un nuacutemero al cubo
def Eleva_cubo(x)
resultado= 1
for i in range(14)
resultado = resultado x
return resultado
cuerpo del programa
base = int(input( Dime la base ))
potencia = Eleva_cubo(base)
print( El nuacutemero base elevado al cubo es potencia)
33
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 34
Tema 3 Fundamentos de Programacioacuten
Ejemplo
Disentildear una funcioacuten que compruebe si un nuacutemero es par
algoritmo para comprobar si un nuacutemero es par
def es_par(n)
return n2 == 0
MISMA FUNCIOacuteN PROGRAMADA POR NOVATOS
def es_par()
n = int(input(lsquo Dame un nuacutemero lsquo))
return n2 == 0
este coacutedigo esta mal demuestra falta de soltura esta funcioacuten solicita un numero entero
Si piden una funcioacuten que recibe uno o maacutes datos se sobreentiende que los datos debes
suministrarlos como argumentos en las llamadas
34
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 35
Tema 3 Fundamentos de Programacioacuten
def es_perfecto (n) 1 cabecera incluye nombre y paraacutemetros
2 docstring es un comentario que siempre antildeadiremos indicando los paraacutemetros de entrada y salida y un resumen de lo
que hace el moacutedulo y a veces tambieacuten por aclarar podemos antildeadir casos de uso
lsquorsquorsquo (n)-gtbool Esta funcioacuten dado un nuacutemero evaluacutea si es un nuacutemero perfecto es un entero que es igual a la suma de los
divisores propios menores que eacutel mismorsquorsquorsquo
3 Cuerpo de la funcioacuten
sumatorio = 0
for i in range (1n)
if n i == 0
sumatorio += i
return sumatorio == n
35
Tema 2 Fundamentos de Programacioacuten
2524 Ejemplos Funciones en Python
Resumen Partes de una Funcioacuten con Python
3 Cuerpo del programa
m = int(input(Dame dato))
a = es_perfecto(m)
if a
print (es perfecto)
else
print(no es perfecto)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 36
Tema 3 Fundamentos de Programacioacuten
gtgtgt import builtins estas dos instrucciones muestran todas las funciones de python
gtgtgt dir(builtins)[ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeErrorBufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionErrorConnectionRefusedError ConnectionResetError DeprecationWarning EOFError EllipsisEnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointErrorFutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexErrorInterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryErrorNameError None NotADirectoryError NotImplemented NotImplementedError OSErrorOverflowError PendingDeprecationWarning PermissionError ProcessLookupError ReferenceErrorResourceWarning RuntimeError RuntimeWarning StopIteration SyntaxError SyntaxWarningSystemError SystemExit TabError TimeoutError True TypeError UnboundLocalErrorUnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateErrorUnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError__build_class__ __debug__ __doc__ __import__ __loader__ __name__ __package____spec__ abs all any ascii bin bool bytearray bytes callable chr classmethodcompile complex copyright credits delattr dict dir divmod enumerate eval exec exitfilter float format frozenset getattr globals hasattr hash help hex id input intisinstance issubclass iter len license list locals map max memoryview min nextobject oct open ord pow print property quit range repr reversed round set setattrslice sorted staticmethod str sum super tuple type vars zip]
362525 Llamada a Funciones predefinidas en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 37
Tema 3 Fundamentos de Programacioacuten
gtgtgt help(nombre de una funcioacuten )Ayuda para funciones
gtgtgt help(abs)
Help on built-in function abs in module builtins
abs()
abs(number) -gt number
Return the absolute value of the argument
gtgtgt n=abs(-2) Ejemplos
gtgtgt n
2
372525 Llamada a Funciones en Python
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 38
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
38
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 39
Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos con Python empleando la sentencias maacutes adecuada
1 Suma de 2 nuacutemeros
2 Calculo de la longitud de una circunferencia
3 Calculo del cuadrado de un nuacutemero
4 Dada la edad de una persona ver si alguien es mayor de edad
Tema1 Fundamentos de Programacioacuten
39
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 40
Tema 3 Fundamentos de Programacioacuten
Procedimientos
Un procedimiento es un subprograma que recibe cero o maacutes valores de entrada y puede devolver cero o maacutes valores de
salida
En los procedimientos tanto la entrada como la salida de informacioacuten se realizan a traveacutes de Los paraacutemetros
De nuevo es necesario distinguir entre la sintaxis de la declaracioacuten o definicioacuten de un
procedimiento y la sintaxis de la llamada al mismo
La sintaxis de la declaracioacuten o definicioacuten de un procedimiento es
Procedimiento identProcedimiento (lista de paraacutemetros formales)
Declaraciones
Inicio
Cuerpo
Fin
Sintaxis de la llamada a un procedimiento
identProcedimiento (lista de paraacutemetros actuales)
40253 Definicioacuten de Procedimientos
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 41
Tema 3 Fundamentos de Programacioacuten
Procedimientos
En los procedimientos la lista de paraacutemetros formales debe indicar el tipo de datos que se
trasfiere y el tipo de paso de paraacutemetro Sintaxis
([E o ES o S] ident_P1 tipo1 [E o ES o S] ident_P2 tipo2)
La lista de paraacutemetros actuales seraacuten variables definidas en el modulo que llama del mismo tipo
especificado en la lista de paraacutemetros formales y en el mismo orden
(ident_A1 ident_ A2hellip ident_AN)
Los paraacutemetros actuales deben coincidir en tipo nuacutemero y orden con los paraacutemetros Formales
41
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 42
Tema 3 Fundamentos de Programacioacuten
Diferencias entre funciones y procedimientos
Una funcioacuten devuelve un uacutenico valor y un procedimiento puede devolver 01 o N
Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como
ocurriacutea con la funcioacuten
Mientras que la llamada a una funcioacuten forma siempre parte de una expresioacuten la llamada a
un procedimiento es una instruccioacuten que por siacute sola no necesita instrucciones
Esta llamada consiste en el nombre del procedimiento y va entre pareacutentesis van los
paraacutemetros que se le pasan
42
Tema 2 Fundamentos de Programacioacuten
253 Definicioacuten de Procedimientos
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 43
Tema 3 Fundamentos de Programacioacuten
No todas las funciones devuelven un valor Una funcioacuten que no devuelve un valor se
denomina procedimiento
iquestPara queacute sirve una funcioacuten que no devuelve nada
Mostrar mensajes o resultados por pantalla No te equivoques mostrar algo por pantalla no
es devolver nada Mostrar un mensaje por pantalla es un efecto secundario
Veaacutemoslo con un ejemplo Vamos a implementar ahora un programa que solicita al usuario
un nuacutemero y muestra por pantalla todos los nuacutemeros perfectos entre 1 y dicho nuacutemero
En Python no existe el paso de paraacutemetro por valor y por referencia en realidad los valores
mutables se comportan como paso por referencia y los inmutables como paso por valor
httpslibroswebeslibropythoncapitulo_4definiendo_funcioneshtml
43
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 44
Tema 3 Fundamentos de Programacioacuten
Sintaxis
def mi_funcion(param1 param2)
print (param1)
print (param2)
Es decir la palabra clave def seguida del nombre de la funcioacuten y entre pareacutentesis los argumentos
separados por comas A continuacioacuten en otra liacutenea indentado y despueacutes de los dos puntos
tendriacuteamos las liacuteneas de coacutedigo que conforman el coacutedigo a ejecutar por la funcioacuten
Tambieacuten podemos encontrarnos con una cadena de texto como primera liacutenea del cuerpo de la
funcioacuten Estas cadenas se conocen con el nombre de docstring (cadena de documentacioacuten
sirven para documentar la funcioacuten)
def mi_funcioacuten(param1 param2)
Esta funcioacuten imprime los dos valores pasados como parametrosldquo
print (param1)
print (param2)
44
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 45
Tema 3 Fundamentos de Programacioacuten
Funcioacuten tabla perfecto utiliza funcioacuten anterior Observar la llamada en el cuerpo del programa
def es_perfecto (n)
sumatorio = 0
for i in range (1 n)
if n i == 0
sumatorio += i
return sumatorio == n
def tabla_perfectos(m) Muestra todos los nuacutemeros perfectos entre 1 y m
for i in range(1m+1)
if es_perfecto(i)
print(i es un nuacutemero perfecto)
cuerpo de programa
n = int(input( Tabla de nuacutemeros perfecto de 1 a ))
tabla_perfectos(n)
45
Tema 2 Fundamentos de Programacioacuten
2531 Definicioacuten de Procedimientos en Python
gtgtgt
Tabla de nuacutemeros perfecto de 1 a 100
6 es un nuacutemero perfecto
28 es un nuacutemero perfecto
gtgtgt
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 46
Algoritmo EjercicioA
Variable
ac entero
Procedimiento pa (E b entero)
Variable
c entero
inicio
c b+5
b 2
fin
Inicio
c 3
a 2
pa (a)
Escribir (c a) Salida 3 2
fin
Implementacioacuten coacutedigo Python
def pa(b)
c = b+5
b = 2
c = 3
a = 2
pa (a)
print (c a) Salida 3 2
a se esta utilizando como variable global
paso de paraacutemetro a por valor la variable c
Aparece en cuerpo principal y se vuelve a llamar en funcioacuten (var global)como no se dice nada se volveria a definir y seriacutea tambieacuten una variable local del procedimiento
462532 Ejemplos de Procedimientos Python (Parametros por valor)
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 47
Algoritmo ejercicioB
Variable
a c entero
Procedimiento pb (E b entero)
Inicio
a 4
b 5
fin
Inicio
c3
a 2
pb(c)
Escribir (ca) salida 3 4
Fin
a se esta utilizando como variable global
47
Implementacioacuten coacutedigo Python
def pb (b)
global a En programacioacuten Estruc Prohibido toma valor del cuerpo principal
a = 4
b = 5
Cuerpo Principal
c = 3
a = 2
pb(c)
print(ca)
salida 3 4 La variable a se ha modificado en el procedimiento pb Prohibido en Programacioacuten Estructurada
Tema 2 Fundamentos de Programacioacuten
2532 Ejemplos de Procedimientos Python (Uso variables globales)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 48
Tema 3 Fundamentos de Programacioacuten
Algoritmo ejercicioC
Variable a b entero
Procedimiento pc (E i entero ES j entero)
Inicio
i i+10
j j+10
Escribir(i j) salida 12 13
Fin
Inicio
a 2
b 3
pc(ab)
Escribir (a b) salida 2 13
Fin
48
Tema 2 Fundamentos de Programacioacuten
Implementacioacuten coacutedigo Python
def pc (ib)
i = i+10
b= b+10
print(i b)
return b
salida funcion 12 13
a = 2
b = 3
b = pc(ab)
print (a b)
salida 2 13 Parametro b por referencia se modifica valor variable global
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 49
Pi= 31416
def Calculos ( r)
a = 2 Pi r
l = Pi r r
return al
def respuesta()
while True
resp = input(iquestQuieres salir (SN))
if respupper()== S or respupper()==N
return resp
break
Cuerpo principal
print(iquestDesea calcular el aacuterea y longitud de una circunferencia)
resp = respuesta()
while respupper() == N
radio = int(input( Dime el radio))
area long = Calculos (radio)
print(area long)
resp = respuesta()
area y long simularian el paso de paraacutemetro por referencia cuando las
variables son solo de salida
radio paso de paraacutemetro por valor
49
Tema 2 Fundamentos de Programacioacuten
Programa que calcula el aacuterea y la longitud de una Circunferencia
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 50
def es_par (x)
return es_par == ((x 2) == 0)
def modulo( t b)
a = 0
while t == 1
a = a + 1
t = 2
b = b + a
return b
Cuerpo Principal
x = 10
k = 1
while True
if es_par(x)
x = modulo(kx)
else
k = k+1
if k gt 2
break
print (x k)
50
Tema 2 Fundamentos de Programacioacuten
2533 Ejemplos de Procedimientos Python (Parametros por valor y por
referencia)
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 51
Tema 3 Fundamentos de Programacioacuten
Paraacutemetros por valor
Aparecen en cabecera de procedimiento y no salen en return
Paraacutemetros por referencia
1 Salida-gt Han de salir mediante instruccioacuten return del procedimiento y ser asignados a
una variable
2 ES -gtAparecen en cabecera de procedimiento y han de salir mediante instruccioacuten
return del procedimiento y ser asignados a una variable
51
Tema 2 Fundamentos de Programacioacuten
2534 Resumen para simular paraacutemetros por valor y referencias con Python
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 52
TRABAJO PERSONAL
Tema1 Fundamentos de Programacioacuten
52
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
Fundamentos de la Programacioacuten 08102015
Tema2 Fundamentos de la Programacioacuten 53
262 Trabajo personal
Lectura recomendada
Cap 6 Libro Introduccioacuten Programacioacuten Python (Andreacutes Marzal)
Laboratorio Tema 2
Resolver ejemplos
Implementar los ejercicios del tema 1 parte 3 bucles modularizaacutendolos
53
Tema 2 Fundamentos de Programacioacuten
top related