Está en la página 1de 28

Informática y Programación

Módulo 2. Algorítmica y
programación
Tema 2.3. Programación modular

Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


2

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Índice
• Introducción a la programación modular
• Definición de función

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


3

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Introducción
• Programación modular: Técnica que su utiliza
conjuntamente con la programación estructurada
▫ El algoritmo se divide en módulos (subprogramas,
subrutinas o funciones) más sencillos de programar y
depurar

• Un subprograma es un módulo o fracción del


algoritmo con funcionalidad propia y reutilizable

• Objetivo: Facilitar la depuración y reutilización de


código

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


4

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Necesidad de programación modular


Algoritmo Combinatorio_NoModular
variable entera n, k, i, num, denA, denB 𝑛𝑛 𝑛𝑛!
inicio C(n,k) = 𝑘𝑘 =
𝑘𝑘! 𝑛𝑛−𝑘𝑘 !
leer(n, k)
num = 1 n!
desde i=2 hasta n hacer
num = num*i
fin desde Código redundante para
denA= 1 (n-k)! realizar el factorial
desde i=2 hasta n-k hacer
denA= denA*i
fin desde
denB = 1 k!
desde i=2 hasta k hacer
denB = denB*i
fin desde
escribir("Resultado: ", num/( denA*denB))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
5

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Definición de función
• Una función es un conjunto de instrucciones que
poseen un identificador único, nombre de la función
▫ Puede recibir datos de entrada procedentes del módulo
llamador, parámetros de entrada
▫ Procesa los datos que recibe de entrada para generar un
resultado
▫ Puede devolver resultados al módulo llamador a través de
los parámetros de salida

función
Parámetros de Parámetros de
entrada salida
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
6

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Definición de función. Sintaxis


funcion [parámetros salida] = <nombre de funcion> (parámetros
entrada)
//definición de los parámetros de entrada y salida
variable //variables locales de la función
inicio
//cuerpo de la función
fin funcion
número función resultado
factorial
Parámetro de Parámetro de
entrada salida

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


7

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejemplo de algoritmo con función


funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero //parámetros de la función
variable entera i //variables de la función
inicio
resultado= 1
desde i=2 hasta numero hacer
resultado= resultado*i
fin desde
fin funcion

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


8

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Matlab (archivo Mifactorial.m)


El nombre de la función y del archivo DEBEN coincidir

function [resultado] = Mifactorial(numero)


resultado = 1
for i=2:numero
resultado = resultado * i
end
end

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


9

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Matlab
• Desde la línea de comandos
>> resultado=Mifactorial(3);

• Desde un script ejemplo.m:


numero=input(‘Introduce el numero:’);
resultado=Mifactorial(numero);
fprintf(‘El resultado es %d:’,resultado);

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


10

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Análisis de la definición de la función


• Si hay más de un parámetro (entrada y salida) van
separados por comas
▫ Inmediatamente después de la cabecera de la función se
define cada parámetro de la misma forma que se hizo para
la definición de variables
• Las variables locales a la función sólo son visibles
durante la ejecución del cuerpo de la función
▫ Las variables que se necesiten en el cuerpo de la función y
que no sean parámetros se declararán en la sección de
variables de la función
• El cuerpo de la función contiene cualquiera de las
instrucciones y sentencias de la programación
estructurada
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
11

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Llamada a una función


• La llamada a una función es la que activa su ejecución
• La llamada se realiza en el módulo llamador (algoritmo u
otra función) mediante la siguiente sintaxis:
[parámetro salida1, …] = <nombre función> (parámetro entrada1,…)
• El número de parámetros indicados en la llamada de una
función debe coincidir con el número de parámetros de
entrada indicados en la definición de la función
• La correspondencia entre los parámetros de entrada de la
llamada y los de la definición de la función se realiza por
posición de izquierda a derecha:
▫ Los de la llamada y definición en la misma posición deben tener
el mismo tipo
▫ Los de la llamada y definición en la misma posición no tienen
que tener el mismo nombre siempre y cuando coincida el tipo
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
12

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejemplo de algoritmo con función


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero //definición de parámetros de la función
variable entera i //variables de la función
inicio
resultado= 1
desde i=2 hasta numero hacer
resultado= resultado*i
fin desde
fin funcion

variable entera n,k, factorialn, factorialk, factorialnk //variables del algoritmo


inicio
leer(n, k)
factorialn = Mifactorial(n)
factorialk = Mifactorial(k)
factorialnk = Mifactorial(n-k)
escribir("Resultado: ", factorialn/(factorialk*factorialnk) )
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
13

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejemplo simplificado
Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero //definición de parámetros de la función
variable entera i //variables de la función Sólo son conocidas dentro
inicio del cuerpo de la función
resultado= 1
desde i=2 hasta numero hacer
resultado= resultado*i Cuerpo de la función
fin desde
fin funcion
Sólo son conocidas dentro
variable entera n,k //variables del algoritmo
del cuerpo del algoritmo
inicio
leer(n, k) Cuerpo del algoritmo
escribir("Resultado: ", Mifactorial (n)/(Mifactorial (k)*Mifactorial(n-
k)))
fin Llamada a la función: nombre de función (parámetros)

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


14

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Cambios en algoritmo con función


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero //definición de parámetros de la función
variable entera i //variables de la función
inicio
resultado= 1
desde i=2 hasta numero hacer
resultado= resultado*i Cuerpo de la función
fin desde
fin funcion
¿Serían correctos
variable entera n,i //variables del algoritmo los cambios?
inicio
leer(n, i)
escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (i)*Mifactorial (n-i)))

fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
15

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de algoritmo principal


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero
{0} n 3 k 2
variable entera i {1} Llamada a factorial con n=3
inicio
{2} resultado= 1
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i
{5} fin desde
fin funcion

variable entera n,k


inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
16

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de función factorial (n)


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero) numero 3
variable entera resultado, numero
variable entera i resultado ?
inicio i ?
{2} resultado= 1
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i {2} resultado 1
{5} fin desde
fin funcion {3} i 2 {3} i 3
{4} resultado 2 {4} resultado 6
variable entera n,k
inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
17

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de algoritmo principal


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero
{0} n 3 k 2
variable entera i {1} Llamada a factorial con k=2
inicio
{2} resultado= 1
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i
{5} fin desde
fin funcion

variable entera n,k


inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
18

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de función factorial (k)


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero) numero 2
variable entera resultado, numero
variable entera i resultado ?
inicio
{2} resultado= 1
i ?
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i {2} resultado 1
{5} fin desde
fin funcion {3} i 2
{4} resultado 2
variable entera n,k
inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
19

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de algoritmo principal


Algoritmo Combinatorio_Modular
funcion [resultado] = mifactorial (numero)
variable entera resultado, numero
{0} n 3 k 2
variable entera i {1} Llamada a factorial con n-k=1
inicio
{2} resultado= 1
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i
{5} fin desde
fin funcion

variable entera n,k


inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
20

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de función factorial (n-k)


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero) numero 1
variable entera resultado, numero
variable entera i resultado ?
inicio
{2} resultado= 1
i ?
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i {2} resultado 1
{5} fin desde
fin funcion {3} i 2

variable entera n,k


inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
21

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejecución de algoritmo principal


Algoritmo Combinatorio_Modular
funcion [resultado] = Mifactorial (numero)
variable entera resultado, numero
{0} n 3 k 2
variable entera i {1} Resultado: 3
inicio
{2} resultado= 1
{3} desde i=2 hasta numero hacer
{4} resultado= resultado*i
{5} fin desde
fin funcion

variable entera n,k


inicio
{0} leer(n, k)
{1} escribir("Resultado: ",
Mifactorial (n)/(Mifactorial (k)*Mifactorial (n-k)))
fin
CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC
22

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejemplo de función con varias salidas


• Realice una función que calcule las raíces reales de una
ecuación de segundo grado
𝑎𝑎 𝑥𝑥 2 +𝑏𝑏 𝑥𝑥 + 𝑐𝑐 = 0
a x1
b
raices_ecuacion x2
c

−𝑏𝑏 + 𝑏𝑏 2 − 4 𝑎𝑎 𝑐𝑐 𝑏𝑏 𝑏𝑏 2 − 4 𝑎𝑎 𝑐𝑐
𝑥𝑥𝑥 = 𝑥𝑥𝑥 = − + 𝑖𝑖
2 𝑎𝑎 2𝑎𝑎 2𝑎𝑎
−𝑏𝑏 − 𝑏𝑏 2 − 4 𝑎𝑎 𝑐𝑐 𝑏𝑏 𝑏𝑏 2 − 4 𝑎𝑎 𝑐𝑐
𝑥𝑥𝑥 = 𝑥𝑥𝑥 = − − 𝑖𝑖
2 𝑎𝑎 2𝑎𝑎 2𝑎𝑎

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


23

MÓDULO 2. Algorítmica y programación.

Solución
TEMA 3. Programación modular

Algoritmo EcuacionSegundoGrado
funcion [x1, x2] = raices_ecuacion(a,b,c)
variable reales x1,x2
variable reales a,b,c
variable real radicando
inicio
radicando = b^2-4*a*c
si radicando >= 0 entonces
x1 = (-b + sqrt(radicando))/(2*a)
x2 = (-b - sqrt(radicando))/(2*a)
si no
x1 = (-b + i *(abs(radicando)/(2*a))
x2 = (-b – i *(abs(radicando)/(2*a))
fin si continúa
fin funcion

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


24

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Programa principal
variable reales a,b,c, primera_raiz,segunda_raiz
inicio
escribir (‘Introduce los coeficientes de la ecuación:’)
leer (a,b,c)
[primera_raiz, segunda_raiz] = raices_ecuacion (a,b,c)
escribir (‘Las raíces son: ‘, primera_raiz, segunda_raiz)
fin

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


25

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Solución
Algoritmo EcuacionSegundoGrado
funcion [x1, x2] = raices_ecuacion(a,b,c)
variable reales x1,x2
variable reales a,b,c, radicando
inicio

fin funcion
variable reales a,b,c
variable real x1,x2
inicio ¿Serían correctos
escribir (‘Introduce los coeficientes de la ecuación:’) los cambios?
leer (a,b,c)
[x1,x2] = raices_ecuacion (a,b,c)
escribir (‘Las raíces son: ‘, x1, x2)
fin

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


26

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejemplo de función sin parámetros de entrada


Algoritmo LecturaVector
funcion [V] = leerVector()
variable entera V[100]
variable entera i
inicio
desde i=1 hasta 100 hacer
leer (V[i])
fin desde
fin función

variable entera Mi_vector[100]


inicio
Mi_vector = leerVector()
fin

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


27

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejemplo de función sin parámetros de salida


Algoritmo EscrituraVector
funcion [] = escribirVector (V)
variable entera V[100]
variable entera i
inicio
desde i=1 hasta 100 hacer
escribir (V[i])
fin desde
fin función

variable entera Mi_vector[100]


inicio
...//inicialización del vector Mi_vector
escribirVector(Mi_vector)
fin

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC


28

MÓDULO 2. Algorítmica y programación.


TEMA 3. Programación modular

Ejercicios
• Realice cualquiera de los ejercicios del listado de
Programación estructura mediante la combinación de
programación estructurada y modular

CURSO 2021-22 Informática y Programación. Grado en Ingeniería en Organización Industrial-EIIC

También podría gustarte