parametros por valor de una función

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
PARAMETROS POR VALOR DE UNA FUNCIÓN
En el caso de parámetros por valor: el valor de la variable que se esté pasando, es
asignado a la variable local que es declarada al definir la función. Tanto la variable
que se utilice al efectuar la invocación como la que la recibe "por valor" deben ser
del mismo tipo, en caso contrario se presentará un error.
Es hora de llevar lo anterior a la práctica, realizaremos un ejemplo para determinar
cada una de las partes que conforman un programa con funciones:
//********************************************************
// Programa que permite realizar una multiplicación
// y una suma mediante a la utilización de funciones
//********************************************************
#include <iostream>
void divide (int x, int y); //prototipo de funciones
int multiplica (int, int);
// Función principal
int main()
{
int x, y,r;
cout << "Introduzca dos numeros" << endl;
cin >> x
Está pasando los valore de la función divide,
cin >> y;
primero el valor X inicial y en el segundo llamado
divide(x, y); // llama a la función "Divide"
el valor y
divide(y, x);
r = multiplica(x, y);
cout << "La multiplicación de X y Y es = a: " << r << endl;
return 0;
}
Los valores x y y, se convierten en valor x y valor y,
// Función divide
lo mismo sucede en la función multiplica
void divide (int valorx, int valory)
{
int respuesta; // variable local
La variable local, afecta solo a esta función
respuesta= (valorx / valory;);
cout << "La división de los dos valores es: " << resultado << endl;
}
// Función multiplica
int multiplica(int valorx, int valory)
{
int mult; // variable local
mult = valor1 * valor2;
return mult;// retorna el valor del proceso
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
}
La instrucción RETURN es quien regresa un, y solo un dato a la parte del
programa que este llamando o invocando. Sin embargo, es de considerar que
return puede regresar un dato, una variable o una expresión algebraica (no
ecuación o formula) como lo muestran los siguientes ejemplos:
a) return 3.1416;
b) return area;
c) return x+15/2;
El siguiente programa lee por teclado un año y calcula y muestra si es bisiesto.
Para realizar el cálculo utiliza una función llamada bisiesto.
La función bisiesto recibe el año leído por teclado, comprueba si es o no bisiesto y
devuelve 1 si lo es ó 0 si no lo es.
// Programa que lee un año y muestra si es o no bisiesto
#include <iostream>
#include <stdlib.h>
using namespace std;
int bisiesto(int); //declaración o prototipo de la función
int main()
{
int anio;
cout<<"Introduce a"<<(char)164<<"o: "; //164 ascii de ñ
cin >> anio;
if(bisiesto(anio)) //llamada a la función
cout << "Bisiesto" << endl;
else
cout << "No es bisiesto" << endl;
system("pause");
}
int bisiesto(int a) //definición de la función
{
if(a%4==0 && a%100!=0 || a%400==0)
return 1;
else
return 0;
}
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Paso de parámetros por referencia
“Otra forma de comunicación, adicional al retorno de un valor, el cual puede
producir una función, consiste en el paso de parámetros por referencia, en el cual
cada variable pasada como parámetro, puede ser modificada por las instrucciones
contenidas en el ámbito de la función.
En la invocación se pasa la variable de igual forma que se hace por valor, esto es
una "desventaja" ya que al ver la instrucción no nos daríamos cuenta si se está
pasando por referencia o valor, la costumbre nos haría pensar que es por valor,
pero para estar seguros debemos ver la definición de la función; al identificador
que recibe, en la definición de la función, se le antepondrá el operador de
dirección, &; de esta forma, en la memoria RAM tomará la misma dirección del
parámetro de invocación”
No nos inquietemos, en el siguiente capítulo se estudiará lo referente a punteros,
esto nos permitirá una mayor claridad, sin embargo es bueno que el estudiante
vaya indagando acerca de este apasionante tema.
Miremos el siguiente ejemplo: donde se hace el intercambio de dos valores en la
memoria ram del computador
//Paso de parámetros por referencia //
#include <stdio.h>
#include <iostream>
Using namespace std;
void intercambio(int *, int *); // prototipo de la función
main()
{
int a = 20, b = 30;
intercambio(&a, &b); // a y b son pasados por referencia
cout<<"a es "<<a;
cout <<" b es " <<b;
}
void intercambio(int *x, int *y)
{
int z = *x; // z toma el contenido de la dirección x
*x = *y; // x toma el contenido de y
*y = z; // contenido de y = z
}
Descargar