SESIÓN 05: SUBFUNCIONES Y
SUBPROGRAMAS
CONTENIDO
OBJETIVO ................................................................................................................ 3
CONTENIDO............................................................................................................ 4
INTRODUCCIÓN ..................................................................................................... 5
CONCEPTOS TEÓRICOS........................................................................................ 6
Subfunciones ...................................................................................................... 6
Subprogramas.................................................................................................... 7
Comandos en M-Files ....................................................................................... 9
BIBLIOGRAFÍA ....................................................................................................... 15
INTRODUCCIÓN
Los subprogramas son rutinas, procedimientos o conjuntos de
instrucciones que realizan una labor específica. Los subprogramas se
realizar para no repetir innecesariamente un proceso ya hecho.
Pueden invocarse desde el programa principal cuantas veces se
desee.
CONCEPTOS TEÓRICOS
SUBFUNCIONES
Las funciones definidas mediante M-ficheros pueden contener código
para más de una función. La función principal en el M-fichero se
denomina función primaria, que es precisamente la función que invoca
el M-fichero. Pero adicionalmente puede haber subfunciones colgando
de la función primaria y que solo son visibles para dicha función primaria
o para otra subfunción dentro del mismo M-fichero. Cada subfunción
comienza con su propia línea de definición de función.
Ejemplo:
Crear una función 𝒕𝒆𝒏𝒅𝒆𝒏𝒄𝒊𝒂_𝒄𝒆𝒏𝒕𝒓𝒂𝒍(𝒗) que tenga dos subfunciones
𝑚𝑒𝑑𝑖𝑎(𝑣) y 𝑚𝑒𝑑𝑖𝑎𝑛𝑎(𝑣) que calculen la 𝒎𝒆𝒅𝒊𝒂 y la 𝒎𝒆𝒅𝒊𝒂𝒏𝒂 del vector 𝑣.
Imagen N° 01 – Ejemplo de subfunciones
Imagen N° 02 - Ejecución
SUBPROGRAMAS
Los subprogramas son como dice su propio nombre son subprogramas de
algún programa principal.
Ejemplo:
Escribir un programa que obtenga a partir de una serie de 15 datos
estadísticos 𝑥𝑖 , las siguientes medidas:
𝟏
a. Media aritmética 𝒙 = 𝒏 ∑ 𝒙𝒊
𝒙(𝒏+𝟏) , 𝑛 𝑒𝑠 𝑖𝑚𝑝𝑎𝑟
𝟐
b. Mediana 𝑴𝒆 = {𝒙(𝒏) +𝒙(𝒏+𝟏)
𝟐 𝟐
, 𝑛 𝑒𝑠 𝑝𝑎𝑟
𝟐
Cada una de estas medidas debe de ser llamadas desde el programa
principal.
Imagen N° 03 – Función media
Imagen N° 04 – Función mediana
Imagen N° 05 – Subprogramas
COMANDOS EN M-FILES
MATLAB ofrece ciertos comandos de procedimiento que se utilizan muy
a menudo en la escritura de M-ficheros. Entre ellos tenemos los siguientes:
El comando echo controla la visualización (o eco) de las
𝑒𝑐ℎ𝑜
declaraciones en una función durante su ejecución.
𝑒𝑐ℎ𝑜 𝑜𝑛 Activa el eco.
𝑒𝑐ℎ𝑜 𝑜𝑓𝑓 Desactiva el eco (por defecto).
Causa la interrupción de la ejecución de un M-file hasta
𝑝𝑎𝑢𝑠𝑒
que el usuario pulse una tecla para continuar.
Causa la interrupción de la ejecución de un M-file durante
𝑝𝑎𝑢𝑠𝑒(𝑛)
𝑛 segundos.
𝑝𝑎𝑢𝑠𝑒 𝑜𝑓𝑓 Deshabilita 𝑝𝑎𝑢𝑠𝑒 y 𝑝𝑎𝑢𝑠𝑒(𝑛)
Causa la interrupción de la ejecución de un M-file y pasa el
control al teclado para que el usuario realice otras tareas.
𝑘𝑒𝑦𝑏𝑜𝑎𝑟𝑑
Para finalizar la interrupción usar dbcont.
Para finalizar la interrupción y salir del archivo usar dbquit.
Desplaza el texto visible en la ventana de comandos y
ℎ𝑜𝑚𝑒
fuera de la vista. Para ver el contenido que estaba
Instituto Científico del Pacífico
www.icip.edu.pe
previamente en la pantalla podemos usar la barra de
desplazamiento.
Permite elegir entre varios tipos de menú para el input del
𝑚𝑒𝑛𝑢
usuario.
Ejemplo 1:
En el siguiente ejemplo se muestra un programa que realiza los cálculos
hasta antes del comando 𝑒𝑐ℎ𝑜 𝑜𝑛, luego muestra las operaciones que
realiza hasta el comando 𝑒𝑐ℎ𝑜 𝑜𝑓𝑓, y después continua con el programa.
Imagen N° 06 – Ejemplo de comando 𝑒𝑐ℎ𝑜
Imagen N° 07 – Ejecución de comando 𝑒𝑐ℎ𝑜
Ejemplo 2:
En la siguiente figura se muestra el código de un programa antes de ser
ejecutado.
Imagen N° 08 – Ejemplo de comando 𝑘𝑒𝑦𝑏𝑜𝑎𝑟𝑑
Luego de ejecutarlo aparece una flecha al lado de 𝒌𝒆𝒚𝒃𝒐𝒂𝒓𝒅. Y en la
línea de comandos se antecede la letra 𝑲 que indica la interrupción en
el código, permitiéndonos realizar en esta línea otros cálculos. Para
continuar con el programa debemos ingresar 𝒅𝒃𝒄𝒐𝒏𝒕.
Imagen N° 09 – Ejecución de comando 𝑘𝑒𝑦𝑏𝑜𝑎𝑟𝑑
Imagen N° 10 – Ejemplo de comando 𝑚𝑒𝑛𝑢
Imagen N° 11 – Ejecución 1 de comando 𝑚𝑒𝑛𝑢
Imagen N° 12 – Ejecución 2 de comando 𝑚𝑒𝑛𝑢
EJEMPLO 01: SENO HIPERBÓLICO INVERSO
OBJETIVO
El objetivo principal del ejemplo es crear una
función que aproxime el arco seno hiperbólico
y un programa que realice la gráfica usando
dicha función.
PLANTEAMIENTO
1. Crear una función 𝑎𝑟𝑐_𝑠𝑒𝑛ℎ(𝑥, 𝑡𝑜𝑙) que
aproxime la función sinh−1 (𝑥) =
(−1)𝑛 (2𝑛)!
∑∞
𝑛=0 𝑥 2𝑛+1 , |𝑥| < 1.
4 𝑛 (𝑛!)2 (2𝑛+1)
2. Crear un 𝑆𝑐𝑟𝑖𝑝𝑡 que realice la gráfica de
𝑎𝑟𝑐_𝑠𝑒𝑛ℎ.
DESARROLLO
1. Creamos la función 𝑎𝑟𝑐_𝑠𝑒𝑛ℎ.
Ejecución de la función:
2. Programa que llame a la función 𝑎𝑟𝑐_𝑠𝑖𝑛ℎ:
La gráfica es:
EJEMPLO 02: SISTEMA DE TEMPERATURA
OBJETIVO
El objetivo principal del ejemplo es crear
subfunciones que conviertan de un sistema de
temperatura a otro sistema.
PLANTEAMIENTO
1. Crear una subfunción 𝑘𝑒𝑙𝑣𝑖𝑛𝐴𝑐𝑒𝑙𝑠𝑖𝑢𝑠(𝐾)
que convierta la temperatura 𝐾 de grados
Kelvin a grados Celsius.
2. Crear una subfunción 𝑘𝑒𝑙𝑣𝑖𝑛𝐴𝑓𝑎ℎ𝑟𝑒𝑛ℎ𝑒𝑖𝑡(𝐾) que convierta la
temperatura 𝐾 de grados Kelvin a grados Fahrenheit.
3. Crear una función 𝐾𝑒𝑙𝑣𝑖𝑛_𝑎_𝐶𝑒𝑙𝑠𝑖𝑢𝑠_𝑦_𝐹𝑎ℎ𝑟𝑒𝑛ℎ𝑒𝑖𝑡(𝐾) que tenga
como argumento de entrada a la temperatura 𝐾 en grados Kelvin
y como argumentos de salida a la conversión de Kelvin a Celsius y
Fahrenheit, para ello usará las subfunciones anteriores.
DESARROLLO
Creando las subfunciones 𝑘𝑒𝑙𝑣𝑖𝑛𝐴𝑐𝑒𝑙𝑠𝑖𝑢𝑠(𝐾) y 𝑘𝑒𝑙𝑣𝑖𝑛𝐴𝑓𝑎ℎ𝑟𝑒𝑛ℎ𝑒𝑖𝑡(𝐾)
que realizan la conversión de Kelvin a Celsius y Kelvin a Fahrenheit,
espectivamente.
Ejecución:
EJEMPLO 03: OPERACIONES MATEMÁTICAS
OBJETIVO
El objetivo principal del ejemplo es crear un
programa que contenga 4 subprogramas de
operaciones matemáticas básicas.
PLANTEAMIENTO
Realizar un programa que contenga
subprogramas, los cuales realicen la resta, suma,
multiplicación y división de dos números.
DESARROLLO
Subprograma de la resta:
Subprograma de la suma:
Subprograma de la multiplicación:
Subprograma de la división:
Programa:
Ejecución:
EJEMPLO 04: GRÁFICO DE LA FUNCIÓN
EXPONENCIAL
OBJETIVO
El presente ejemplo tiene por objetivo el uso de
subprogramas para resolver problemas con
mayor complejidad.
PLANTEAMIENTO
Comparar las gráficas generadas por la función
𝑎𝑝𝑟𝑜𝑥𝑖𝑚𝑎𝑐𝑖𝑜𝑛𝐸( ) con 𝑡𝑜𝑙 = 0.01 (sesión 8) y la
función exp( ) de MATLAB. Considere −2 ≤ 𝑥 ≤ 2
DESARROLLO
Primero se crea la función para obtener la aproximación del
número 𝑒, luego se evalúa en el intervalo dado, y se realiza el gráfico.
EJEMPLO 05: DIVISORES PROPIOS
OBJETIVO
El presente ejemplo tiene por objetivo mostrar
la ventaja de usar subfunciones.
PLANTEAMIENTO
Dos números son amigos cuando la suma de
divisores propios de uno de ellos es igual al otro
número y viceversa.
Un ejemplo es el par de naturales (220, 284), ya que:
Los divisores propios de 220 son: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110,
que suman 284.
Los divisores propios de 284 son: 1, 2, 4, 71, 142 que suman 220.
Escribir una función, 𝑠𝑢𝑚𝑎_𝑑𝑖𝑣𝑖𝑠𝑜𝑟𝑒𝑠 que devuelva la suma de los divisores
propios de un número. Luego, escribir otra función 𝑎𝑚𝑖𝑔𝑜𝑠( ) que acepte
dos números como parámetros de entrada y devuelva True o False según
sean o no números amigos.
DESARROLLO
Se puede escribir subfunciones en el mismo archivo de una
función principal. Donde la función principal es la primera función
que aparece en el archivo.
Instituto Científico del Pacífico
www.icip.edu.pe
EJEMPLO 06: CONTADOR DE VOCALES
OBJETIVO
El objetivo del presente ejemplo es mostrar la
utilidad de subfunciones y subprogramas.
PLANTEAMIENTO
Escribir una función que compruebe si un
carácter dado es una vocal minúscula, después,
usar la función creada para realizar el conteo de
vocales minúsculas que hay en una cadena
ingresada por el usuario.
DESARROLLO
Se crea una función que verifica si un carácter dado es una vocal
minúscula, devuelve 𝑡𝑟𝑢𝑒 o 𝑓𝑎𝑙𝑠𝑒 según sea el caso.
Para verificar la cantidad de vocales minúsculas en una cadena de texto
ingresada por el usuario.
SESIÓN 05
RECOMENDACIONES
En la resolución de cada uno de los ejercicios debe indicar los
pasos realizados con capturas de pantalla.
También adjunte los archivos trabajados para dar seguimiento y
para mejor corrección de la tarea.
Todo lo solicitado debe encontrarse dentro de una carpeta
comprimida con su nombre:
TAREA
1. En electrónica, las resistencias suelen ir identificadas por un código
de colores que permite definir su valor en Ohmios (Ω) y su tolerancia
(%). Este código de colores está representado por la siguiente
tabla:
1era y 2da banda 3era banda 4ta banda
Color Factor
Dígito Tolerancia
Multiplicador (𝛀)
Ninguno 20%
Plata 0.01 10%
Oro 0.1 5%
Negro 0 1
Marrón 1 10
Rojo 2 102 2%
Naranja 3 103
Amarillo 4 104
Verde 5 105
Azul 6 106
Violeta 7 107
Gris 8
Blanco 9
Cada banda tiene un significado, que depende de cada color:
Las primeras 2 bandas indican un número de 2 dígitos: Esos dos
dígitos vienen dados por el color de esas bandas, según la columna
"Dígito" de la tabla.
La tercera banda es un valor por el que se multiplicará el número
obtenido por las bandas anteriores. Una vez multiplicados ambos
valores, obtenemos el valor de la resistencia en Ohmios (Ω).
La cuarta banda indica la tolerancia de la resistencia y, como
puede verse en la tabla, no puede ser de cualquier color.
a. Crear una función 𝑟𝑒𝑠𝑖𝑠𝑡𝑒𝑛𝑐𝑖𝑎_𝑡𝑜𝑙𝑒𝑟𝑎𝑛𝑐𝑖𝑎(𝑐𝑜𝑙𝑜𝑟, 𝑏𝑎𝑛𝑑𝑎) que reciba
como argumentos de entrada un color y el número de banda que
ocupa en la resistencia y devuelva la información siguiente: el dígito,
su factor multiplicador y/o tolerancia que le corresponda.
b. Usar la función de a) y luego implemente un programa que pida los
colores de las 4 bandas y muestre los valores devueltos por la función
anterior. El programa nos debe indicar el valor de la resistencia en
Ohmios (Ω) y la tolerancia (%). (Ver Ejemplo).
Ejemplo:
Unas resistencias con los siguientes colores, tienen los siguientes
valores de resistencia y tolerancia:
𝑽𝒆𝒓𝒅𝒆 − 𝑨𝒛𝒖𝒍 − 𝑨𝒎𝒂𝒓𝒊𝒍𝒍𝒐 − 𝑶𝒓𝒐: 56 × 104 Ω y 5% ⟹ 560𝑘Ω y 5%
𝑹𝒐𝒋𝒐 − 𝑵𝒆𝒈𝒓𝒐 − 𝑹𝒐𝒋𝒐 − 𝑹𝒐𝒋𝒐: 20 × 102 Ω y 2% ⟹ 2𝑘Ω y 2%
𝑹𝒐𝒋𝒐 − 𝑹𝒐𝒋𝒐 − 𝑴𝒂𝒓𝒓ó𝒏 − 𝑷𝒍𝒂𝒕𝒂: 22 × 10 Ω y 10% ⟹ 220Ω y 10%
Sugerencia:
Relacionar los colores Oro, Plata y Ninguno a los valores 10, 11 y 12
respectivamente.