Está en la página 1de 26

Curso de

Algoritmia
Unidad 4.
Programación modular

Laboratorio de
Innovación Nacional Esap
Jaime Alberto Echeverri Arias
Autor

ENTORNOS Y SERVICIOS VIRTUALES ESAP


EQUIPO TÉCNICO

Bibiana Muñoz Bocanegra


Diseño curricular y pedagógico

José Eduardo Ramos


Diseñador Gráfico

Juan Pablo Muñoz


Corrector de estilo

ESCUELA SUPERIOR DE ADMINIS-


TRACIÓN PÚBLICA (ESAP)

Octavio Duque Jiménez


Director nacional

Carlos Arturo Correa Mojica


Director Fortalecimiento y Apoyo a la Gestión Estatal

Miguel Dario Aristizábal Gómez


Líder del Laboratorio de Innovación ESAP
Director de Entornos y Servicios Virtuales
UNIDAD 04
Programación modular

Tabla de Contenido
Introducción 4
1. Subalgoritmos 6
2. Parámetros 9
2.1. Parámetros según su ubicación 10
2.2 Parámetros según su función 10
3. Funciones 11
3.1 Definición de funciones externas 12
3.2. Elementos de las funciones 13
3.3. Procedimientos 15
Referencias 25
Bibliografía 25

3
Curso de Algoritmia

Introducción

4
UNIDAD 04
Programación modular

En esta unidad, vamos a aprender a abordar los problemas complejos a


través del empleo de subalgoritmos. Es así que pueden resolverse fácilmente
dividiéndolos en subproblemas y, para cada subproblema, se plantea un sub-
algoritmo o módulo que lo solucione. Así, la solución del problema complejo
se construye a partir de la invocación ordenada de subalgoritmos desde un
algoritmo principal. Cada subalgoritmo se diseña para solucionar un único
problema y se puede utilizar tantas veces como sea necesario, sin necesidad
de diseñarlo nuevamente. Esta forma de proceder facilita el diseño y la eva-
luación de algoritmos, porque el algoritmo principal es más corto, es más fá-
cil la búsqueda de errores, el mantenimiento y la comprensión del algoritmo
y permite reutilizar subalgoritmos.

5
Curso de Algoritmia

1
Subalgoritmos

6
UNIDAD 04
Programación modular

Figura 1
Mapa conceptual
subalgoritmo

Subalgoritmo

surge de la idea de Se concoce como


solucionar un

es un Se divide en Consta de Subprograma


Problema

Algortimo Funciones Procedimientos Encabezado Cuerpo de Definción

subdividiendolo que resuelve un formado por


en varios único donde se específica
el
devuelven un los cuales pueden
que se clasifican no devolver o
como único
devolver más de
un

Subproblema
Internas Externas Valor
Nombre Datos de entrada Datos de salida

si hacen parte cuando son perteneciente a llamados que se someten para generar los
de definidas por el un a un

Parámetros Formales Proceso


Programador Tipo de dato

Seudocódigo Lenguaje de cuando se trata


Programación en un

Fuente: Elaboración propia.

Un subalgoritmo es una secuencia de declaraciones e instrucciones que realiza una


tarea específica. Además, se dividen en funciones y procedimientos. La diferencia básica
entre los dos es que las funciones siempre deben devolver un valor y los procedimientos
pueden devolver más de un valor o no devolver.

7
Curso de Algoritmia

Los subalgoritmos se componen de dos A. Cada subalgoritmo se define o especi-


partes principales: encabezado y cuerpo de fica de manera independiente, por fuera
definición. En el encabezado, se especifica su de cualquier algoritmo o subalgoritmo.
nombre y los datos de entrada y de salida. En
el cuerpo de definición, se declaran variables B. Se pueden invocar (utilizar) en un al-
y se describe la secuencia de pasos que solu- goritmo principal o en otro subalgoritmo.
cionan un problema. Cuando se programa no
se trabaja con un cumulo de líneas de código C. Los datos de entrada se le deben su-
sueltas sin orden, por fortuna, disponemos de ministrar en el lugar donde se invoque.
las funciones y los procedimientos, estos nos
permiten disfrutar de un código mucho más D. La ejecución del algoritmo principal
legible y mucho más cómodo de trabajar. Por se pausa mientras se ejecutan las ins-
medio de estos, se facilita la realización de trucciones del subalgoritmo invocado.
cambios sobre los algoritmos al igual que su
mantenimiento, disponer del código separado
por módulos nos permite disfrutar de un códi- En la Figura 2 se muestra la forma en la
go reutilizable (Echeverri-Arias & Orrego Villa, que cooperan distintos subalgoritmos con un
2012). algoritmo principal para solucionar un proble-
Ahora bien, los lenguajes de programa- ma, cada subalgoritmo es una unidad lógica
ción de alto nivel están diseñados pensando independiente que colabora con las demás
en esta forma de trabajo y se les da el nombre para resolverlo. La comunicación entre ellos se
de subprogramas. Es así que al trabajar con logra por medio de sus datos de entrada y de
subalgoritmos se debe tener en cuenta que: salida.

Figura 2
Invocación de subalgoritmos

Algoritmo Subalgoritmo 1 Subalgoritmo 3


Principal

Subalgoritmo 2

Subalgoritmo 4 Subalgoritmo 2

Fuente: Elaboración propia.

8
2
UNIDAD 04
Programación modular

Parámetros

9
Curso de Algoritmia

2.1. Parámetros según su ubicación


Los de ubicación, se dividen en parámetros formales y paráme-
tros actuales. Parámetros formales es el nombre dado a los paráme-
tros que se especifican en la definición del subalgoritmo. Los pará-
metros actuales son los valores pasados al subalgoritmo cuando se
llama o invoca. Estos también son conocidos como argumentos. Por
tanto, para invocar correctamente un subalgoritmo, los argumentos
deben corresponder con los parámetros formales, en cantidad, or-
den y tipo de dato.

2.2 Parámetros según su función


Los de función pueden ser de entrada para funciones y proce-
dimientos, así como de salida (únicamente para procedimientos).
Dichos parámetros se diferencian porque los de entrada están an-
tecedidos por la letra E (Entrada) y los de salida por la letra S (Salida).

10
UNIDAD 04

3
Programación modular

Funciones

11
Curso de Algoritmia

Cuando hablamos en términos matemá-


ticos, las funciones se deben entender como 3.1 Definición de
operaciones que toman uno o más valores.
También se conocen como argumentos y pro-
funciones externas
ducen un valor determinado (Oposinet, s.f.).
Veamos un ejemplo: Frente a la definición de funciones, se hará
de forma independiente, es decir, por fuera de
cualquier algoritmo o subalgoritmo. Por ejem-
plo, la siguiente figura muestra una función en
f(x,y)=x^2+y
Python que permite determinar si un número
es par o impar:

Esta función tiene dos argumentos: x, y. Si Figura 3


x = 2, y = 1 el valor de la función es 5: Definición de funciones en Python

f(2,1)=2^2+1=4+1=5

Las funciones en programación operan


de una manera similar: reciben argumentos,
realizan operaciones sobre los argumentos y def Paridad(n):
devuelven un resultado. if(n % 2 == 0):
return True
Los lenguajes de programación tienen else:
funciones incorporadas (internas o intrínse- return False
cas) y permiten definir o crear nuevas funcio-
nes definidas por el programador (funciones
externas). En el seudocódigo empleado en el
texto, se han incorporado algunas funciones
matemáticas básicas. Veamos ahora cómo de- Fuente: Elaboración propia.
finir funciones utilizando seudocódigo (Ospi-
na, 2006).
1. Def
Figura 5
Función en Python para calcular el área
de2.unNombre de la función
triangulo
3. Argumento

4. Cuerpo de la función

5. Retorno de la función
def CalcularAreaTriangulo(base, altura):
return base*altura/2

print(CalcularAreaTriangulo(4, 5))

12
UNIDAD 04
Programación modular

3.2. Elementos de las


funciones
Nombre de la Función: Nombre asociado
con la función, debe identificar lo que hace la
función y debe válido seguido de paréntesis.
El nombre debe seguir las mismas reglas para
nombrar variables del lenguaje.

Argumentos o parámetros: Conjunto de


declaración de variables sobre las cuales ope-
rará la función para producir el resultado. Estas
variables son locales a la función donde se de-
claran. Constituyen los datos de entrada de la
función. Las variables declaradas dentro de la
función pertenecen exclusivamente a esta.

Instrucciones: Instrucciones que consti-


tuyen la definición de la función. En esa parte
se especifican las operaciones que se harán
con los datos de entrada para generar el resul-
tado o salida.

Devolver (return): Se utiliza para regresar


el resultado de la función. Cuando se ejecuta,
esta instrucción termina inmediatamente la
función y el control del programa se transfiere
al llamador de la función.

13
Curso de Algoritmia

Veamos un ejemplo, a continuación, se ilustra, por medio de la Figura 4, los dife-


rentes elementos de una función en Python. Allí se presenta la definición de una fun-
ción llamada divisores, que tiene un argumento (n), utiliza una variable local strDiviso-
res (String o cadena de caracteres) para almacenar los divisores de n. En el cuerpo de
la función se tiene un ciclo para (for) que permite recorrer los números entre 1 y (n-1)
(sin incluir al mismo n), la función utiliza a la vez otra función interna propia de Python
str(i) para concatenar los números que son divisores de n. Al final la función retorna
(return) los números que cumplieron la condición.

Figura 4
Elementos de una
función en Python

Palabra reservada
Nombre de Parámero de Cuerpo de
del lenguaje Python
la función la función la función
para la función

def divisires (n) :


Variable Local strDivisores = “ ”
de la función
for i in range (1, n) :
if (n % i == 0 ) :
strDivisores = strDivisores + str (i) + “ - ”

return strDivisores Palabra resevada del lenguaje


para retornar un valor
print (divisores (24) )

Llamado de la función

Fuente: Elaboración propia.

14
UNIDAD 04
Programación modular

Sugerencia: Procure no utilizar el proce-


dimiento lea (input) dentro de los subalgorit-
mos. Los datos de entrada se deben propor-
cionar por medio de los parámetros.

3.3. Procedimientos
Los procedimientos, al igual que las fun-
ciones, realizan una tarea específica. Las fun-
ciones
Figuraretornan
3 un único valor, pero en ocasio-
nes se requieren subalgoritmos
Definición de funciones en Pythonque realicen
una determinada operación, por ejemplo: im-
primir un conjunto de valores, invocar varias
funciones, etc. En estas situaciones, las funcio-
nes pierden utilidad y se requiere disponer de
otro tipo
defde subalgoritmo.
Paridad(n):
if(n % 2 == 0):
return
Ejemplo 1 True
else:
Diseñe
returnuna función que calcule el área de
False
un triángulo.

Solución: Para calcular el área de un trián-


gulo necesitamos conocer la base y la altura.
Por tanto, la función debe tener dos paráme-
tros formales.

Figura 5
Función en Python para calcular el área
de un triangulo

def CalcularAreaTriangulo(base, altura):


return base*altura/2

print(CalcularAreaTriangulo(4, 5))

Fuente: Elaboración propia.

15
Curso de Algoritmia

Ejemplo 2
Diseñe un algoritmo principal y calcu-
le el área de un triángulo llamando la fun-
ción del ejemplo anterior.

Figura 6
Función y procedimiento para calcular y
mostrar el área de un triángulo

def CalcularAreaTriangulo(base, altura):


return base*altura/2

def llamar_funcion():
base=int(input("Ingrese la base del
triangulo")
altura=int(input("ingrese la altura del
triangualo"))
area= CalcularAreaTriangulo(base,
altura)
print(" el area del triangulo es ", area)

llamar_funcion()

Fuente: Elaboración propia.

Figura 7
Resultado ejecución de función

16
print(" el area del triangulo es ", area)

llamar_funcion()

UNIDAD 04
Programación modular

Resultado:

Figura 7
Resultado ejecución de función

Ingrese la base del triangulo 10

ingrese la altura del triangualo 29


el area del triangulo es 100.0

Funciones: Elaboración propia.

El ejercicio permite el ingreso de va-


lores para b (base) y h (altura), respectiva-
mente. Supongamos que un usuario asig-
nó el 4 a la variable b y 5 a la variable h.
Para calcular el área invocamos la función
calcularAreaTriangulo pasándole los va-
lores almacenados en las variables b y h.
El valor del argumento b se almacena en
el primer parámetro formal de la función
(base) y el valor del segundo argumento
h se almacena en el segundo parámetro
formal de la función (altura). Cuando se
invoca la función correctamente se ejecu-
tan las instrucciones que la componen y el
algoritmo principal detiene su ejecución
hasta que la función devuelva un valor.
En el cuerpo de definición de la función
calcularAreaTriangulo se calcula el área,
se asigna el resultado a la variable área y
se devuelve el valor almacenado en esta
variable. Cuando devuelve el valor termi-
na la ejecución de la función y continúan
ejecutándose las instrucciones del algorit-
mo principal. Por esto, el valor devuelto se
asigna a la variable “a” del algoritmo prin-
cipal y se muestra el resultado.

17
Curso de Algoritmia

Ejemplo 3
Diseñe una función que reciba un entero
n y retorne la suma de los números enteros
entre uno y n.

Figura 8
Función suma de número en un rango

def suma_numeros(n):

suma = 0
for i in range(1,n+1):
suma = suma + i
return suma

def llamar_funcion():
numero=int(input ("Ingrese el numero
deseado"))

s=suma_numeros (numero)
print(” la suma de los numeros entre 1
y ", numero, es", s)

llamar_funcion()

Figura 9
Función yFunciones: Elaboración
procedimiento propia.
para determinar los números primo

def primo(n):
18
UNIDAD 04
Programación modular

En la función anterior podemos apreciar va- Ejemplo 4


rios elementos:
Diseñe una función que determine si un
1. La palabra reservada def número es primo.

Solución: Para saber si un número es pri-


2. El nombre de la fución suma_numeros
mo, basta saber que únicamente tiene dos divi-
sores, estos son 1 y el mismo número, la función
3. El argumento de la función n
recibe un número entero y devuelve un valor
lógico (True, False). Por lo tanto, si la función
4. La variable local suma (acu-
encuentra un divisor entre dos y la mitad del
mulador, iniciada en cero)
número este número no cumple la condición
para ser primo y la función retorna un False, in-
5. El ciclo for para recorrer los números en-
dicando que el numero no es primo, pero si en
tre 1 y n, nótese que en la función interna
el rango indicado no encuentra ningún divisor
range, es necesario especificar el rango
del número la función retorna True, indicando
(1, n+1), para que sume desde 1 hasta n 6.
que le número ingresado es primo. Observe al
igual que en los ejemplos anteriores el diseño
La instrucción interna al ciclo for, en la que
del procedimiento llamar_funcion() el cual se
la variable acumuladora suma = suma + i
encarga de hacer la evaluación de la función y
la entrega de los resultados para que
7. La palabra reservada return para
que retorne el valor de la función

19
s=suma_numeros (numero)
print(” la suma de los numeros entre 1
y ", numero, es", s)

Curso de Algoritmia
llamar_funcion()

Figura 9
Función y procedimiento para determinar los números primos

def primo(n):

for i in range(2,2nt(0/2)):
if ( n% i ==0):
Return False
return True

def 1lamar_funcion():
numero=int(input(” Ingrese el nunero
deseado:
if(primo(numero)):
print(” el numero " , numero,

else:
print(" el nunero es primo") Numero, "
NO es primo")

Ilamar_fancion()

Fuente: Elaboración propia.

Figura 10
Resultado de la función cuando se ingresa el numero 27

Ingrese el numero deseado|: 27


el numero 27 NO es primo

Fuente: Elaboración propia.


Figura 11
Función para determinar la cantidad de primos

def cuantos_primos(n):
contador_primos=9 20
UNIDAD 04
Programación modular
Ejemplo 5
Diseñe una función que retorne la
cantidad de números primos que hay
Figura 10
entre uno y n.
Resultado de la función cuando se ingresa el numero 27

Solución: el diseño de esta función se


simplifica porque utilizaremos la función
Ingrese elen
que definimos numero deseado|:
el ejemplo 27
anterior
el numero
para verificar si un27 NO es es
número primo
primo.

Figura 11
Función para determinar la cantidad de primos

def cuantos_primos(n):
contador_primos=9
for i in range (2, m1):
if(primo(1))
contador_primos = contador_primos + 1
return contador_primos

def primo(n):
for i in range(2,int(n/2)):
1f(n % d == 0):

return False
return True

def l1amar_funcion():
numero=int(input(” Ingrese el numero deseado
cantidad = cuantos_primos(numero)

print(" primos entre 1 y ",numero,))es: ", cantidad)

llamar_funcion()

Fuente: Elaboración propia.

21
Curso de Algoritmia

Figura 12
Resultado de la función cantidad de primos

Ingrese el numero deseado: 1000


primos entre 1 y 1008 es: 169

Fuente: Elaboración propia.


Figura 14
Función que recibe arreglo y devuelve el mayor elemento del arreglo
La función cuantos_primos recibe un número entero n y ge-
nera los números enteros desde dos hasta n mediante las itera-
ciones de un ciclo. En cada iteración se le pasa a la función primo
la variable controladora del ciclo para y verificamos si el valor que
retorna "fauthor: Jaime
es True para Echeverri"
contarlo como numero primo. Si devuelve
arreglo=[12, 45, 67, 4, 34,
verdadero incrementamos la variable 5, 89, contadora
12, 67, 2] en una unidad,
def
al final la mayor_en_arreglo(arreglo):
función retorna la cantidad de primos contados.
mayor=arreglo[9]
La siguiente figura ilustra la manera en que se invocan los
for i in arreglo:
módulos diseñados, inicialmente llamar función se le especificar
if (mayor < 4):
el numero deseado y luego en la variable cantidad nos almacena
mayor=i
el resultado que retorna la función cuantos_primos (), a su vez la
funciónreturn
invoca mayor
a la función primo ().

def llamar_funcion():
may=mayor_en_arreglo(arreglo)
Figura 13
Como
print("seelinvocan
mayor las
delfunciones
arreglo es, May)

llamar_funcion()

Llamar_función() Cuantos_primos(n) primo(n)

Fuente: Elaboración propia.

22
Figura 12
Resultado de la función cantidad de primos UNIDAD 04
Programación modular
Ejemplo 6
Diseñe una función en Python que
reciba Ingrese el numero
un arreglo deseado:
y devuelva 1000
el elemento
mayorprimos entre 1 y 1008 es: 169
del arreglo.

Figura 14
Función que recibe arreglo y devuelve el mayor elemento del arreglo

"fauthor: Jaime Echeverri"


arreglo=[12, 45, 67, 4, 34, 5, 89, 12, 67, 2]
def mayor_en_arreglo(arreglo):
mayor=arreglo[9]
for i in arreglo:
if (mayor < 4):
mayor=i
return mayor

def llamar_funcion():
may=mayor_en_arreglo(arreglo)
print(" el mayor del arreglo es, May)

llamar_funcion()

Fuente: Elaboración propia.

En este ejercicio se declara un arreglo con valores predefinidos, luego


se define la función mayor_en_arreglo que recibe como argumento
el arreglo. La primer línea dentro de la función consiste en la asig-
nación a la variable mayor del arreglo a la posición cero del arreglo,
luego viene el ciclo for que permite el recorrido sobre cada una de las
posiciones del arreglo, preguntando en cada caso si el valor en la po-
sición actual es mayor que el valor almacenado. Si se cumple la con-
dición cambia de valor hasta llegar a la última posición del arreglo. Al
final retorna el mayor del arreglo.

23
Curso de Algoritmia

Ejemplo 7
Diseñe una función que reciba una matriz
y devuelva la suma de los elementos en cada
una de sus filas.

Figura 15
Función y procedimiento para obtener la suma de las
filas de una matriz en Python

"fauthor: Jaime Echeverri”

def suma_filas(Matriz, filas, columnas):

for i in range(columas):

Sumaf = sunaf + Matriz[3](3]


sumas .append(sunaf)
sunaf=o
return sumas

def llamar_funcion():
Matriz=[[10, 40, 67], [43, 34, 57], [89, 12, 671]
sumasf=suma_filas (Matriz, 3,3)
print(sumasF)

llamar_funcion()

Fuente: Elaboración propia.

24
UNIDAD 04
Programación modular

Referencias
Echeverri-Arias, J. A., & Orrego Villa, G. (2012).
Programación: teoría y aplicaciones. Medellin: Sello
Editorial Universidad de Medellin.

Oposinet. (s.f.). Programación estructurada. ht-


tps://www.oposinet.com/temario-de-informatica/te-
mario-1-informatica/tema-25-programacin-estruc-
turada/#:~:text=Matem%C3%A1ticamente%2C%20
una%20funci%C3%B3n%20es%20una,funciones%20
definidas%20por%20el%20usuario.

Ospina, C. A. (2006). Fundamentos de progra-


mación guia de autoenseñanza. Caldas, Colombia:
RA-MA.

Bibliografía
Cairo, O. (2006). Metodología de la programa-
ción: Algoritmos, Diagramas de Flujo y programas.
México: Algaomega.

Hernández, R. (2001). Estructura de datos y algo-


ritmos. Madrid: Prentice Hall.

Joyanes, L. E. (2016). Programación: teoría y apli-


caciones 2.ª ed. Medellín, Colombia. : Sello Editorial
Universidad de Medellín.

Trejos, O. (1999). Lógica de Programción. Pereira:


Ediciones U.

25
Curso de Algoritmia

Laboratorio de
Innovación Nacional Esap

26

También podría gustarte