Está en la página 1de 11

TAREA 04: Elabora procedimientos y funciones DESARROLLO DE SOFTWARE

Fundamentos de Programación
Aplicar funciones, procedimientos y recursividad
Semestre II HT-04 1/1

N° OPERACIONES MATERIALES/INSTRUMENTOS
01 Aplicar declaración de procedimientos ▪ Computadora/Laptop de
02 Aplicar declaración de funciones laboratorio
▪ Proyector Multimedia
03 Aplicar recursividad ▪ Televisor LED
04 ▪ DFD
05 ▪ PseInt
06
07
08

DENOMINACIÓN TAREA TIEMPO HOJA


HT 04 5 hrs. 1/1
INSTRUCTOR
Elabora procedimientos y funciones
Rosel Pacora, Guillermo Martin

Instructor: Ing. Guillermo Rosel Pacora Página |1


DESARROLLO DE SOFTWARE
HOJA DE OPERACIÓN 11
Fundamentos de Programación
Aplicar declaración de procedimientos
Semestre II HO-11 1/1

PROCEDIMIENTOS Y FUNCIONES
SUBPROCESO
Un subproceso es un subprograma, procedimiento o función que realiza una tarea específica y que puede ser definido
mediante 0 , 1 o más parámetros. Tanto en entrada de información al subproceso como la devolución de resultados desde
la subrutina se realiza mediante parámetros, el cual nos sirve para introducir o modificar información del programa principal.
Sintaxis
SubProceso NombreSubProceso
// ...hacer algo con los argumentos
FinSubProceso
Los subprocesos pueden o no tener valores de retorno.
En general, un problema complejo puede resolverse de manera eficiente si se divide en procesos pequeños. Esto implica
que el problema original será resuelto por medio de varios módulos, cada uno de los cuales se encargará de solucionar
alguna parte determinada. Esos módulos se conocen con el nombre de subprocesos o subalgoritmos, es decir, algoritmos
cuya función es resolver un subproblema.
Los subalgoritmos se escriben solo una vez y, luego, podemos hacer referencia a ellos desde diferentes puntos de un
pseudocódigo. De esta forma, podemos reutilizar el código y evitar la duplicación de procesos.
Es importante tener en cuenta que los subalgoritmos son independientes entre sí; esto quiere decir que se pueden escribir
y verificar en forma separada. Por eso, será más fácil localizar un error en la codificación que estamos creando y, también,
modificarlo, sin tener que rehacer varias partes de él.
Existen dos clases de subalgoritmos: funciones y procedimientos, que también encontraremos con los nombres de
subrutinas o subprogramas.
NOTA: El saber cuándo usar una función y cuándo un procedimiento es uno de los dilemas más frecuentes entre los
principiantes en programación. Nos referimos a las funciones y procedimientos definidos por el usuario.
ÁMBITO DE LAS VARIABLES
En programación, existen dos tipos de variables, las locales y las globales. Las primeras son aquellas que se encuentran
dentro de un subprograma, ya sea un procedimiento o una función, y son distintas de las que están en el algoritmo principal.
El valor se confina al subprograma en el que está declarada. En cambio, las globales son las que se definen o están declaradas
en el algoritmo principal, y tienen efecto tanto en él como en cualquiera de sus subprogramas.
Los subalgoritmos pueden recibir valores del algoritmo principal, llamados parámetros, trabajar con ellos y devolverle un
resultado. También pueden llamar a otros o a sus propios subprogramas; incluso, puede llamarse a sí mismo, lo que se conoce
como recursividad.
1. PROCEDIMIENTOS
Los procedimientos son básicamente un conjunto de instrucciones que se ejecutan sin retornar ningún valor, hay quienes
dicen que un procedimiento no recibe valores o argumentos, sin embargo, en la definición no hay nada que se lo impida.
Un procedimiento es un subprograma o un subalgoritmo que ejecuta una determinada tarea, pero que tras ejecutar esa
tarea no tienen ningún valor asociado a su nombre como en las funciones, sino que si devuelve información, lo hace a través
de parámetros.
Al llamar a un procedimiento, se le cede el control, comienza a ejecutarse y cuando termina devuelve el control a la siguiente
instrucción a la de llamada.

Una función puede retornar más de un valor si ella usa parámetros por referencia. En
este texto los parámetros por referencia sólo se usarán en los procedimientos ya que,
es una muy mala técnica de programación el uso de parámetros por referencia en
funciones. Esta consideración se hace pues, desde el punto de vista matemático, una
función no puede modificar los valores de los parámetros.

Instructor: Ing. Guillermo Rosel Pacora Página |2


DESARROLLO DE SOFTWARE
HOJA DE OPERACIÓN 12
Fundamentos de Programación
Aplicar declaración de funciones
Semestre II HO-12 1/7

2. FUNCIONES
Desde el punto de vista matemático, una función es una expresión que toma uno o más valores llamados argumentos y
produce un resultado único. Algunos ejemplos de funciones matemáticas son: los logaritmos y las funciones trigonométricas
(seno, coseno, etc.).
En el ambiente de la programación de algoritmos, las funciones tienen exactamente el mismo significado. Se realizan ciertos
cálculos con una o más variables de entrada, y se produce un único resultado, que podrá ser un valor numérico, alfanumérico
o lógico. Es decir, una función puede devolver como resultado una cadena, un número o un valor de tipo lógico. Esto hace
que en los lenguajes de programación debamos especificar el tipo de la función.
La función será de tipo numérica cuando devuelva un número, y será alfanumérica cuando devuelva una cadena. En el
caso de las funciones numéricas, existen subdivisiones que están dadas por los tipos de datos soportados por algún lenguaje.
EJEMPLO 01: Ejemplo de la función matemática sen(x). En este caso, la función se llama sen (seno), y el argumento o valor
que se le pasa para que lo procese es x. Así, sen(90º)=1. Este valor, como es único, se denomina función; es decir, no existe
ningún otro número que la
función pueda procesar y devolver 1, más que 90º.
Cuando utilicemos esta función en un pseudocódigo y necesitemos el valor del sen(90º), debemos asignarlo de la siguiente
forma:

Aquí, como la variable valor es 1 (0.8939966636), nuestra función es numérica. Es así como se llama a las funciones desde
un pseudocódigo, asignándolas siempre a una variable que contendrá el valor devuelto por la función. Si no hacemos esta
asignación, la función no podrá ejecutarse, porque no tendrá un espacio o lugar donde descargar el resultado. Por lo tanto,
la llamada a una función tendrá la siguiente sintaxis:
variable <- funcion (parámetros)
EJEMPLO 02: si a la función MES, que devuelve el nombre del mes, le pasamos el valor numérico correspondiente, el
resultado será:

La función es de tipo texto, porque devuelve una cadena como resultado en la variable nombre_mes.
1.1. ESCRIBIR FUNCIONES O PROCEDIMIENTOS
Las funciones y los procedimientos no se escriben en el algoritmo principal, ya que, en programación, existen
espacios destinados a ellos. Todas las funciones y los procedimientos que utilicen un algoritmo podrán escribirse
antes o después del algoritmo principal.

Una función se identifica por su nombre, como cuando escribimos un algoritmo utilizando inicio y fin para indicar
dónde comienza y dónde termina. A continuación, veamos cómo sería la sintaxis:

Cuerpo principal del programa

Declaración de la función o
procedimiento

Hay dos tipos de funciones:

Instructor: Ing. Guillermo Rosel Pacora Página |3


✓ Internas: Son las que vienen definidas por defecto en el lenguaje.
✓ Externas: Las define el usuario y les da un nombre o identificador.
1.2. Paso de parámetros a una función
Utilizando la lista de argumentos podemos pasar parámetros a una función. En esta lista se suele colocar un
conjunto de identificadores, separados por comas, que representan cada uno de ellos a uno de los parámetros de
la función. Obsérvese que el orden de los parámetros es importante. Para llamar a la función habrá que colocar
los parámetros en el orden en que la función los espera. Observe la imagen.

En los lenguajes de programación estructurada hay dos formas de pasar variables a una función:

✓ por referencia, o
✓ por valor
Cuando la variable se pasa por referencia, la función puede acceder a la variable original. Este enfoque es habitual
en lenguajes como el Pascal. En C, sin embargo, todos los parámetros se pasan por valor. La función recibe una
copia de los parámetros y variables, y no puede acceder a las variables originales. Cualquier modificación que
efectuemos sobre un parámetro no se refleja en la variable original. Esto hace que no podamos alterar el valor de
la variable por equivocación.

Sin embargo, en determinadas ocasiones necesitaremos alterar el valor de la variable que le pasamos a una
función. Para ello en el C se emplea el mecanismo de los punteros.

Diferencias entre funciones y procedimientos:


1. Una función devuelve un único valor y un procedimiento no devuelve valores.
2. Mientras que la llamada a una función forma siempre parte de una expresión, la llamada a un procedimiento es una
instrucción que por sí sola no necesita instrucciones. Esta llamada consiste en el nombre del procedimiento y va entre
paréntesis van los parámetros que se le pasan.
3. Una función debe especificar el tipo de dato a devolver. Los procedimientos no.
4. Las funciones deben ser cortas. Los procedimientos suelen ser largos.
5. Procedimiento: Es un conjunto de instrucciones que cumplen una tarea y no necesariamente debe devolver un valor
6. Función: Como un procedimiento, pero retorna un valor. La función SI O SI debe devolver un valor.

Ámbitos: variables locales y globales:


Según el ámbito hay 2 tipos de variables, locales y globales:
Local: Aquella que está declarada y definida dentro de un subprograma luego su ámbito coincidirá con el ámbito del
subprograma en la que este definida.

Instructor: Ing. Guillermo Rosel Pacora Página |4


Esto quiere decir que la variable no tiene ningún significado, no se conoce y no se puede acceder a ella desde fuera del
subprograma y que tiene una posición de memoria distinta a la de cualquier otra, incluso si es de una variable que tiene el
mismo nombre pero que está definida fuera del subprograma.
Las variables locales a un subprograma se definen en la parte de la definición de variables del mismo. Los parámetros
formales que se le ponen a un subprograma se comportan dentro de él como si fueran también variables locales a él.
Globales: Son las que están definidas a nivel del programa, es decir, su ámbito es el programa o algoritmo principal y todos
los subprogramas que van junto con él.
A esta variable podemos acceder desde cualquiera de los subprogramas y el programa principal, salvo que alguno de esos
subprogramas tenga definida una variable local con el mismo nombre que la variable global, en este caso si utilizo el nombre
de esa variable me referiré a la local, nunca a la global (ya que tienen 2 zonas de memoria distintas).
Las variables definidas dentro de una función son variables locales, en el sentido de que son inaccesibles desde “fuera” de
esta funcion. Se puede decir que pertenecen al espacio de trabajo propio de la función y no son vistas desde otros espacios
de trabajo.

A continuación, veremos varios ejemplos de procedimientos y funciones:


Ejem 01: Procedimientos

Ejem 02: Funciones

Ejem 03:

Observe la salida en ambos casos

Instructor: Ing. Guillermo Rosel Pacora Página |5


Ejercicios de funciones y/o procedimientos

1. Ingresar el nombre de un usuario y mostrarlo por pantalla, realizarlo por función y por procedimiento:

2. Sumar dos números ingresados por teclado


1. Se llama a la función Mi_funcion, la cual
envía 02 parámetros o argumentos a su
definición: Mi_funcion(num1, num2)
2. Estos valores son pasados por valor (La
función recibe una copia de los parámetros y
variables, y no puede acceder a las variables
originales, por eso usamos a y b que puede ser
cualquier otra variable).
3. Dentro de la función en la línea 19 se asigna
la suma a la variable resultado del tipo entero
que es el valor que regresará la función en la
línea 17.
4. Ya cuando se regresa a la línea 11 la función
ha devuelto el resultado el cual lo asigna a la
variable suma que es de ámbito local para el
proceso principal.
5. El contenido de la variable suma es impreso
por pantalla en la línea 12.

Instructor: Ing. Guillermo Rosel Pacora Página |6


3. Ingresar un número del 1 al 12 y devolver el nombre del mes:

Desde la línea 1 hasta la 16 está la estructura del cuerpo


principal del programa.
Desde la línea 18 hasta la 49 está definida la función.
En la línea 13 se llama a la función func_mes y se le envía
como parámetro a la variable numero_mes
func_mes(numero_mes);
El programa salta hasta la línea 19 en donde está definida el
comportamiento (lo que tiene que hacer) esa función.
Observamos que en la línea 19 llega la función con su
parámetro del número que fue ingresado por el usuario en la
variable numero_mes (número entre 1 y 12), la cual es
comparada en la estructura “según”, dependiendo de
numero_mes ingresará al caso correspondiente y el nombre
del mes se le asigna a una variable Nombre del tipo cadena
que es lo que retorna la función en la línea 19, a la línea desde
donde fue invocada (línea 13)
Nombre <- func_mes(numero_mes)
Ya cuando regresó la función con un valor a la línea 13, ese
contenido del nombre del mes devuelto se le asigna a la
variable nombre_mes del tipo cadena para luego imprimirse
en la línea 14 junto a un mensaje final.

4. Subrayar 03 textos usando funciones

5. Variar el ejercicio anterior subrayando cualquier longitud de texto ingresado por el usuario.

Instructor: Ing. Guillermo Rosel Pacora Página |7


6. Aplicación del paso de variables por valor y por referencia

7. Implementación del cálculo de una potencia mediante una función recursiva. El paso recursivo se basa en
que A^B = B*(A^(B-1)), El paso base se base en que A^0 = 1

Instructor: Ing. Guillermo Rosel Pacora Página |8


8. Mostrar los números de 1 hasta el 100
9. Mostrar los números desde el 1 hasta un valor asignado por el usuario
10. Crear una función que calcule el área de un triángulo ingresando la base y la altura, además que borre
pantalla al presionar “B” y pida hacer el cálculo nuevamente

Algoritmo sin_titulo
AREA <- ingresar();
ver(AREA);
Escribir "Presione una tecla";
Leer tecl;
Mientras tecl == "B" hacer
Limpiar Pantalla
AREA <- ingresar();
ver(AREA);
Escribir "Presione una tecla";
Leer tecl;
FinMientras
Escribir "Terminò el programa";
FinAlgoritmo

////////////////////////////////////////////////////
Funcion A_Tri <- ingresar()
Escribir "Ingresa la base" Sin Saltar;
Leer Base;
Escribir "Ingresa la altura" Sin Saltar;
Leer Altura;
A_Tri <- calcular(Base, Altura);
FinFuncion

Funcion Area <- calcular(B,A)


Area <- B * A / 2 ;
FinFuncion

Funcion ver(AR)
Escribir "El area es ", AR;
FinFuncion

11. Elaborar una la función que toma dos números, los compara y nos dice cuál es mayor.
12. Calcula los N primeros números primos

Instructor: Ing. Guillermo Rosel Pacora Página |9


13. Diseñar una función que calcule el promedio de varios números introducidos por el teclado. Hacer dos
versiones, una para un número fijo de valores y otra para un número cualquiera de valores.
14. Escribir una función que intercambie el valor de dos variables, es decir si X=5 e Y=7 tras aplicar la función,
por ejemplo haciendo "intercambiar(X,Y)" se tiene que X=7 e Y=5.
15. Diseñar una función que calcule la potencia enésima de un número, es decir que calcule X n para X, real y n
entero
16. Escribir una función "EsMultiplo" que sirva para determinar si un número es múltiplo de otra.
17. Elaborar un programa que reciba tres datos y los ordene descendentemente. El programa debe elaborarse
en base a procedimientos. Utilice el procedimiento intercambio
18. Crea una función CantidadDeDivisores, que reciba un número entero y devuelva la cantidad de divisores (por
ejemplo, para el número 16, sus divisores son 1, 2, 4, 8, 16, por lo que la respuesta debería ser 5).
19. Crea una función Cubo, que reciba un número y lo devuelva elevado al cubo.
20. Programa que pida dos números enteros al usuario y diga si alguno de ellos es múltiplo del otro. Crea una
función Es Múltiplo que te ayude a que el proceso principal sea legible.
21. Crea una función MayorDeTres, que reciba tres números enteros y devuelva el valor del mayor de ellos. Por
ejemplo, para los números 5, 7 y 5, devolvería el valor 7.
22. Crea una función EsPar que devuelva el valor lógico "verdadero" o "falso" según si el número que se indique
como parámetro es par o no lo es.
23. programa que determine la suma de los números desde 1 hasta un límite que lee. Se usa una función para
calcular la suma de los números desde 1 hasta el límite.
24. Construir un programa que reciba 3 valores y devuelva el mínimo valor. El programa pregunta al usuario si
quiere entrar más datos y se repita mientras el usuario quiera. Utilizar un procedimiento.
Puede resolver cualquier otro ejercicio de las guías anteriores

Instructor: Ing. Guillermo Rosel Pacora P á g i n a | 10


DESARROLLO DE SOFTWARE
HOJA DE OPERACIÓN 13
Fundamentos de Programación
Aplicar recursividad
Semestre II HO-13 1/1

3. RECURSIVIDAD
Se dice que un subprograma es recursivo cuando se llama a sí mismo. La recursividad se va a poder usar en subprogramas
que pueden definirse en términos recursivos, es decir, en termino de sí mismo, como procesos de alguna manera repetitivos.
La recursividad trataremos de evitarla siempre que sea posible, es decir, siempre que lo mismo se pueda solucionar con un
bucle, ya que cada vez que un subprograma se llama a sí mismo hay que almacenar en la pila del sistema la dirección de
retorno de ese subprograma, con lo cual si hacemos muchas llamadas recursivamente iremos llenando la pila del sistema, y
se desbordara acabando con la memoria.
Todo programa recursivo tiene que tener alguna condición que ponga fin a la recursividad, es decir, que el programa deje de
llamarse a sí mismo cuando se cumpla la condición, sino se formaría un bucle infinito.
1.3. Ventajas:
✓ Se escribe poco código.
✓ resuelve problemas recurrentes.
1.4. Desventajas:
✓ Creación y uso de muchas variables, lo que consume tiempo.
✓ Requiere memoria adicional, para cada llamada de la función o método de si misma.
1.5. Requerimientos y Rendimiento:
✓ Llamarse a si misma dentro de su código.
✓ Retornar un valor.
✓ Especificar un caso base, es cuando debe de terminar llamarse a si mismo e iniciar el retorno de los valores
generados en cada llamada.
✓ Hacer un análisis comparativo de uso de memoria y velocidad para saber si aplicar recursividad o su
equivalente iterativo en caso de haberlo.

El factorial de 7 es
7!=7·6·5·4·3·2·1
Y en general el factorial cualquier número es
n! = n · (n-1) · (n-2) · (n-3) · ... · 2 · 1
Si comparas con el factorial de 6, verás que se parece
mucho al de 7:
6!=6·5·4·3·2·1
De modo que podrías escribir el factorial de 7 a partir del
factorial de 6:
7!=7·6!
Sólo falta pensar cual es el "caso base", la solución más
sencilla posible para este problema. En el caso del
factorial, se trata del factorial de 0, que tiene como valor
1:
0!=1
Esa es la idea que hay que aplicar. Así, una función
"Factorial" recursiva en PseInt podría ser así:

Instructor: Ing. Guillermo Rosel Pacora P á g i n a | 11

También podría gustarte