Acciones y Funciones

Anuncio
UNIVERSIDAD CENTRAL DE VENEZUELA
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN
LABORATORIO #4
ACCIONES Y FUNCIONES en C++
Acciones y Funciones
La definición de acciones y funciones permite asociar un nombre o identificador a un bloque de instrucciones. Luego, dicho
identificador puede ser usado para indicar en algún punto de un algoritmo que se utilizará el bloque de instrucciones al cual
hace referencia el identificador, pero sin tener la necesidad de repetirlas, sólo invocando a la acción o función por su
nombre.
La sintaxis de las Acciones y Funciones, tanto en PseudoFormal como en C++ es la siguiente:
• Acciones:
Pseudoformal
Acción <Nombre_de_la_Acción> (<lista_Parámetros>)
// cuerpo de la acción
FinAcción
C++
void <Nombre_de_la_Acción> (<lista_Parámetros>){
// cuerpo de la acción
}
• Funciones:
Pseudoformal
Función <Nombre_de_la_Función> (<lista_parámetros>) : <tipo_de_dato_a_devolver>
// cuerpo de la función
Retornar <valor_devolver_como_resultado>
FFunción
C++
<tipo_de_dato_a_devolver> <Nombre_de_la_Función> (<lista_parametros>){
// cuerpo de la función
return (<valor_devolver_como_resultado>);
}
1
UNIVERSIDAD CENTRAL DE VENEZUELA
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN
Es importante resaltar que en las funciones siempre debe existir la sentencia de retorno (return).
Al ejecutarse la sentencia return, se devuelve el valor a la sección del programa que invocó dicha función y continúa el flujo
del programa desde dicho punto. La sentencia debe “devolver” una variable o un valor “<valor_devolver_como_resultado>”,
del tipo de dato que se define que devuelve la función “<tipo_de_dato_a_devolver>”.
Las acciones se caracterizan por no retornar valores al algoritmo que las llama, mientras que las funciones retornan un
valor. Sin embargo, aunque las acciones no retornan valores, sí pueden informar al algoritmo que las llamó (a veces
llamado algoritmo principal) de cambios realizados por sus instrucciones en algunos valores a través del pase de
parámetros por referencia.
Ejemplo:
Función que calcula el cuadrado de un número entero dado (n) como parámetro de la función
#include <iostream>
using namespace std;
int Cuadrado (int n){
int cuadrado = 0;
cuadrado=n*n;
return cuadrado;
}
int main(){
int n,resultado;
cout << "Indique el valor de n" << endl;
cin >> n;
resultado=Cuadrado(n);
cout << "El valor obtenido es " <<
resultado << endl;
}
Pase de Parámetros:
Los parámetros son aquellos argumentos o datos que se proporcionan al procedimiento en la invocación, y que este
utilizará para sus cálculos. Los parámetros pueden ser pasados por referencia o por valor. La utilización de parámetros es
opcional.
En C++ el paso por valor significa que al compilar la función y el código que llama a la función, ésta recibe una copia de los
valores de los parámetros que se le pasan como argumentos. Las variables originales no se pasan a la función, sólo copias
de su valor. Sin embargo, cuando es necesario modificar el valor de la variable que se pasa como parámetro dentro de la
función y reflejar dicho cambio en la función invocante, el parámetro se pasa por referencia. En este método, el compilador
no pasa una copia del valor del argumento; en su lugar, pasa una referencia, que indica a la función dónde existe la variable
en memoria.
2
UNIVERSIDAD CENTRAL DE VENEZUELA
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN
Pseudoformal
Acción Suma (Entero val1, Entero val2, Ref Entero Resultado){
// cuerpo de la acción
FinAcción
C++
void Suma (int val1, int val2, int& Resultado){
// cuerpo de la acción
}
Ejemplo:
Muestra el paso de parámetros por valor. Se puede cambiar la variable del parámetro en la función, pero su modificación no
se puede salir al exterior
#include <iostream>
using namespace std;
void DemoLocal(int valor);
int main (){
int n=10;
cout << "Antes de llamar a DemoLocal, n=" << n << endl;
DemoLocal(n);
cout << "Despues de llamada a DemoLocal, n="<< n << endl;
cout << "Pulse enter para continuar";
cin.get();
}
void DemoLocal(int valor){
cout << "Dentro de DemoLocal, valor (1)="<< valor << endl;
valor = 999;
cout << "Dentro de DemoLocal, valor (2)="<< valor << endl;
}
3
UNIVERSIDAD CENTRAL DE VENEZUELA
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y PROGRAMACIÓN
Ejemplo:
Muestra el paso de parámetros por referencia. Se puede cambiar la variable del parámetro en la función y dicho cambio se
ve reflejado en el Algoritmo Principal
#include <iostream>
using namespace std;
void DemoLocal(int& valor);
int main (){
int n=10;
cout << "Antes de llamar a DemoLocal, n=" << n << endl;
DemoLocal(n);
cout << "Despues de llamada a DemoLocal, n="<< n << endl;
cout << "Pulse enter para continuar";
cin.get();
}
void DemoLocal(int& valor){
cout << "Dentro de DemoLocal, valor (1)="<< valor
valor = 999;
<< endl;
cout << "Dentro de DemoLocal, valor (2)="<< valor << endl;
}
Ejercicios
1. Construir una función llamada Factorial que solicite al usuario un numero n≥0 y calcule y retorne el resultado
de su factorial(n!). Nota: 0!=1
2. Construir un procedimiento que intercambie los valores de dos variables. Invocar desde la acción principal a este
procedimiento para que intercambie dos valores leídos desde teclado y los muestre por pantalla.
3. Hacer una función que reciba como parámetro 2 valores y diga cuantos números pares e impares existen entre
los 2 números.
4. Escribir una función sumarDigitos(Entero n) que calcule y devuelva la suma de los dígitos del parámetro n.
Escribe un algoritmo equivalente pero utilizando una acción.
5. Escriba una acción que solicite un carácter al usuario y luego lea una secuencia de caracteres terminada en ‘*’.
Encuentre y escriba en que iteraciones apareció el carácter por primera y por última vez. Si el carácter
suministrado no está en la secuencia deben escribirse como resultados cero (0) para ambos casos.
Prep. María F. Vitola. GDAYP, Octubre. 2010
Revisión: Prof. Adriana Liendo Sánchez, Abril 2011
4
Descargar