texto argumentativo, ejemplos y ejercicios prácticos
Actividad grupal
1. ESCUELA SUPERIOR POLITÉCNICA DE
CHIMBORAZO
INTEGRANTES:
SAÚL CHUQUÍN
RONI URQUIZO
ANGEL APUGLLÓN
Funciones y procedimientos como parámetros
Grupo N 13
2. TEMARIO
• Funciones y procedimientos como parámetros
• Los efectos laterales
• En procedimientos
• En funciones
• Recursión (recursividad)
3. Funciones y procedimientos como
parámetros
• Hasta ahora los subprogramas que hemos
considerado implicaban dos tipos de
parámetros formales: parámetros valor y
parámetros variable. Sin embargo, en
ocasiones se requiere que un procedimiento o
función dado invoque a otro procedimiento o
función que ha sido definido fuera del ámbito
de ese procedimiento o función.
4. Efectos laterales
Las modificaciones que se produzcan mediante una función o
procedimiento en los elementos situados fuera del
subprograma (función o procedimiento) se denominan efectos
laterales. Aunque en algunos casos los efectos laterales pueden
ser beneficiosos en la programación, es conveniente no
recurrir a ellos de modo general.
Consideramos a continuación los efectos laterales en:
funciones y en procedimientos.
5. EFECTOS LATERALES EN
funciones
• Una función toma los valores de los argumentos y
devuelve un único valor. Sin embargo, al igual que
los procedimientos una función – en algunos
lenguajes de programación – puede hacer cosas
similares a un procedimiento o subrutina.
• Una función puede tener parámetros variables
además de parámetros valor en la lista de
parámetros formales.
• Una función puede cambiar el contenido de una
variable global y ejecutar instrucciones de E/S
(escribir un mensaje en la pantalla, leer un valor
del teclado, etc). Estas operaciones se conoce
como parámetros laterales y se deben evitar.
6. EFECTOS LATERALES EN
procedimientos
• La comunicación del procedimiento con el resto del
programa se debe realizar normalmente a través de
parámetros.
• Si un procedimiento modifica una variable global
(distinta de un parámetro actual), este es un efecto
lateral. Por ello, excepto en contadas ocasiones, no
debe aparecer en la declaración del procedimiento. Si
se necesita una variable temporal en un procedimiento,
utilicé una variable local, no una variable global.
• Si se desea que el programa modifique el valor de una
variable global, utilice un parámetro formal variable en
la declaración del procedimiento y a continuación
utilice la variable global como el parámetro actual en
una llamada al procedimiento.
7. AMBITO: VARIABLES LOCALES Y
GLOBALES
• Las variables utilizadas en los programas
principales y subprogramas se clasifican en
dos tipos:
Variables
locales
Variables
Globales
8. VARIABLE LOCAL
Una variable local es aquella cuyo ámbito se restringe a la función que la ha
declarado se dice entonces que la variable es local a esa función. Esto implica
que esa variable sólo va a poder ser manipulada en dicha sección, y no se
podrá hacer referencia fuera de dicha sección. Cualquier variable que se
defina dentro de las llaves del cuerpo de una función se interpreta como una
variable local a esa función.
Definición:
9. VARIABLE GLOBAL
Una variable global es aquella que se define fuera del cuerpo de cualquier
función, normalmente al principio del programa, después de la definición de
los archivos de biblioteca (#include), de la definición de constantes simbólicas
y antes de cualquier función. El ámbito de una variable global son todas las
funciones que componen el programa, cualquier función puede acceder a
dichas variables para leer y escribir en ellas. Es decir, se puede hacer
referencia a su dirección de memoria en cualquier parte del programa.
Definición:
12. Comunicación con subprogramas:
paso de parámetros
• Cuando un programa llama a un subprograma, la información se comunica a
través de la lista de parámetros y se establece una correspondencia
automática entre los parámetros formales y actuales. Los parámetros
actuales son sustituidos o utilizados en lugar de los parámetros formales.
• La declaración del subprograma se hace con:
• Y la llamada al subprograma con Llamar_a nombre (A1, A2, ...,An )
13. Sintaxis para el llamado de un
subprograma
• La declaración del subprograma se hace con:
• Y la llamada al subprograma con
• Donde F1, F2, . . . Fn son los parámetros formales y A1, A2, . . . An los
parámetros actuales o reales.
Llamar_a nombre (A1, A2, ...,An )
14. Existen dos métodos para establecer la
correspondencia de parámetros:
• Correspondencia posicional. La correspondencia
se establece aparejando los parámetros reales y
formales según su posición en las listas: así, Fi se
corresponde con Ai, donde i= 1, 2, . . . n. este
método tiene algunas desventajas de legibilidad
cuando el número de parámetros es grande.
• Correspondencia por el nombre explicito:
también llamado método de paso de
parámetros por nombre. En este método, en las
llamadas se indica explícitamente la
correspondencia entre los parámetros reales y
formales.
Sub (Y => B, X => 30);
15. PASO POR VALOR
• El paso de parámetros por valor consiste en
copiar el contenido de la variable que
queremos pasar en otra dentro del ámbito
local de la subrutina, consiste pues en copiar
el contenido de la memoria del argumento que
se quiere pasar a otra dirección de memoria,
correspondiente al argumento dentro del
ámbito de dicha subrutina. Se tendrán dos
valores duplicados e independientes, con lo
que la modificación de uno no afecta al otro.
16. Ejemplo:
En la función principal
tenemos 2 valores a y b
cuando se llama a la
función “función” los
valores se pasan a n y m
porque solo se pasan los
valores de las variables
y no se modifica nada
17. PASO POR REFERENCIA
• El paso de parámetros por referencia consiste
en proporcionar a la subrutina a la que se le
quiere pasar el argumento la dirección de
memoria del dato. En este caso se tiene un
único valor referenciado (o apuntado) desde
dos puntos diferentes, el programa principal y
la subrutina a la que se le pasa el argumento,
por lo que cualquier acción sobre el parámetro
se realiza sobre la misma posición de memoria
•
18. Ejemplo:
#include <iostream>
using namespace std;
int funcion(int &n, int &m);
int main() {
int a, b;
a = 10; b = 20;
cout << "a,b ->" << a << ", " << b << endl;
cout << "funcion(a,b) ->" << funcion(a, b) << endl;
cout << "a,b ->" << a << ", " << b << endl;
return 0;
}
int funcion(int &n, int &m) {
n = n + 2;
m = m - 5;
return n+m;
Sucede lo mismo que el
anterior caso pero este
hacen que con el &
retornen las variables con
el orden que estuvieron
19. Concepto de recursión
Recursión (recursividad, recurrencia)
Definición recursiva: En la definición aparece lo que se define
Factorial(N) = N x Factorial(N-1) (N >= 0)
(wikipedia.org)
La imagen del paquete
aparece dentro del propio
paquete,... ¡hasta el infinito!
21. ANEXOS.
1. Elija la palabra correcta que complete el párrafo
Hasta ahora los subprogramas que hemos considerado implicaban dos tipos de parámetros
formales: parámetros…………. y parámetros……………..
Respuestas:
A. local 1) A,D
B. variable 2) D,C
C. valor 3) B,C
D. global 4) B,A
2. Las modificaciones que se produzcan mediante una función o procedimiento en los
elementos situados fuera del subprograma (función o procedimiento) se denominan:
Respuestas:
A. efectos globales. 1) A
B. efectos laterales. 2) D
C. efectos secundarios. 3) B
D. efectos de programación. 4) C
22. 3. Una variable local es aquella cuyo ámbito se………………. a la función que la ha declarado se
dice entonces que la variable es……………a esa función.
Respuestas:
A. Parcial. 1) D,A
B. local. 2) D,B
C. Prohíbe. 3) A,B
D. Restringe 4) C,D
4. Una variable global es aquella que se define fuera del cuerpo de cualquier función,
normalmente al principio del………
Respuestas:
A. Programa. 1) C
B. Subprograma. 2) A
C. Software. 3) D
D. Documento 4) B
23. Referencias:
Bibliográficas
• LUÍS, J. (2003): “Fundamentos de
Programación, Algoritmos, Estructuras de
Datos y Objetos.” Mc-Graw Hill. Madrid.
• http://es.slideshare.net/julius77/fundamento
s-de-programacin-4ta-edicin-luis-joyanes-
aguilar