funciones “paso a parÁmetros” - programación de computadoras ii - io

12
FUNCIONES “PASO A PARÁMETROS” TEMA: PROGRAMACIÓN DE COMPUTADORAS II CURSO: MARIA EUGENIA PALMA FLORIÁN NOMBRE: 11140478 CODIGO: JAVIER ELMER CABRERA DÍAZ PROFESOR : 22/08/13 FECHA: UNIVERSIDAD NACONAL MAYOR DE SAN MARCOS FACULTAD DE CIENCIAS MATEMATICAS – ESCUELA ACADEMICA PROFESIONAL DE INVESTIGACION DE OPERACIONES

Upload: maria-eugenia-palma-florian

Post on 13-Jul-2016

224 views

Category:

Documents


1 download

DESCRIPTION

FUNCIONES “PASO A PARÁMETROS” - Programación de Computadoras II - IOdefinicionesintroducciónprogramacion

TRANSCRIPT

FUNCIONES “PASO A PARÁMETROS”TEMA:

PROGRAMACIÓN DE COMPUTADORAS IICURSO:

MARIA EUGENIA PALMA FLORIÁNNOMBRE:

11140478CODIGO:

JAVIER ELMER CABRERA DÍAZPROFESOR:

22/08/13FECHA:

UNIVERSIDAD NACONAL MAYOR DE SAN MARCOSFACULTAD DE CIENCIAS MATEMATICAS – ESCUELA ACADEMICA PROFESIONAL DE INVESTIGACION DE OPERACIONES

A) Introducción

Los parámetros y argumentos forman parte esencial para la comunicación entre funciones o procedimientos de nuestros programas nuestro recurso de comunicación se acrecienta a partir de parámetros y argumentos. O sea, el ámbito de nuestras variables debe ser la función donde fueron declaradas y si necesitamos dichas variables en otras funciones, haremos uso de parámetros y argumentos para disponer de ellas adecuadamente.

B) Parámetros y argumentos (concepto):

Son el medio a partir del cual podemos expandir el ámbito de variables locales de funciones, hacia otras funciones y además quienes nos permiten establecer comunicaciones entre funciones. Si nos vemos ante la necesidad de visualizar o modificar el valor de una variable local en otra función que llamaremos, debemos invocar a dicha función haciendo referencia de su nombre, seguido de los parámetros o nombres de variables para las cuales, en teoría ampliaríamos su ámbito.

Acción principal1 ( )| r <-- 3| i <-- 4| m <-- modulo(r, i)| escribe (m)Facción

Función modulo(r, i)| retorno RAIZ(r*r + i*i)Función

void funcion_llamada(int x){ // función que recibe un argumento:}void una_funcion(void){int a,b; // variables de ámbito local::funcion_llamada(a); // llamada de la función con un parámetro:}

Función que recibe un parámetro

Variables de ámbito local

Llamada de la Función con un parámetro

La expresión funcion_llamada(a); se denomina llamado a la funciónfuncion_llamada con un parámetro a de tipo entero. Y la expresión voidfuncion_llamada(int x) se denomina cabecera de la funciónfuncion_llamada con un argumento, en este caso x, también de tipoentero.

Entonces, pasamos como parámetros nombres de variables al llamar una función, que deben corresponderse en su tipo al ser recibidos sobre los argumentos de dicha función.

C) Definición de Parámetro:

En Ciencias de la computación, un argumento o parámetro es una variable que puede ser recibida por una rutina o subrutina. Una subrutina usa los valores asignados a sus argumentos para alterar su comportamiento en tiempo de ejecución. La mayor parte de los lenguajes de programación pueden definir subrutinas que aceptan cero o más argumentos.

D) Paso de argumentos:

Diagrama del funcionamiento de una subrutina.

E) Tipos de paso a parámetros:

Existen cinco formas de pasar un argumento a una función (subrutina) o procedimiento: por valor, por referencia, por resultado, por valor-resultado y por nombre. Nosotros solo emplearemos la definición de Paso de parámetros por valor y por referencia, ya que son de mayor necesidad.

Los tipos de parámetros a utilizar van a depender siempre de la necesidad que se le presente al programador. De todos modos hay dos necesidades básicas que generalmente están vigentes:

1. Poder obtener el contenido de una variable.2. Poder modificar el contenido de una variable.

a) Paso a Parámetros por valor

El paso de parámetros por valor se da cuando surge la necesidad de obtener el valor o contenido de una variable original o local a una función, en otra función dentro del ámbito local, se utiliza parámetros por valor.

En este caso se produce una copia del contenido de la variable original hacia la memoria del argumento formal de la función receptora.

Dicha variable tendrá como ámbito la función receptora y al culminar esta liberará el espacio de memoria que ocupa, con lo que la modificación de uno no afecta al otro. Entonces se tendrán dos valores duplicados e independientes.Si usamos parámetros por valor, nunca podremos modificar los valores de las variables originales ya que se producen copias de las mismas hacia las variables de la función llamada y su ámbito es local.Al utilizar parámetros por valor, éstos pueden ser constantes como por ejemplo:

#include <stdio.h>void imprime_datos(char nombre[], int edad){printf("Nombre :%s , edad: %d\n",nombre, edad);}void main(void){char alias[35] = {"Pepe"};Imprime_datos(alias,23);}

b) Paso a Parámetros 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.

Entonces lo que nos indica es que debemos trabajar sobre la dirección de memoria que ocupa el parámetro o variable original.

void ingresar_cantidad(int &can){cin>>can;}void alguna_funcion(void){int cantidad;:ingresar_cantidad(cantidad);:}

Como se observa en este ejemplo, el argumento de la función receptora, presenta el operador unario “&” precediendo al nombre de la variable. Esto indica que se tome la dirección del parámetro hacia el argumento, produciendo un espejo o alias de la variable original cantidad. Lo cual significará, que toda alteración producida sobre el argumento can, afectará a la variable original o parámetro cantidad.

Siempre que surja la necesidad de afectar a las variables originales debemos usar parámetros por referencia. Algunos casos serían: cargar un dato o recalcular un dato. Ya que las funciones devuelven solo un valor, es habitual usar varios parámetros por referencia cuando necesitamos que una función provoque varios resultados y no solo uno.

Si al argumento por referencia lo precedemos de la palabra const, dicha variable no podrá ser alterada en el ámbito de la función receptora, por lo tanto nunca afectará a la variable original.

F) Ejemplos para cada tipo de paso a parámetros:

a) Paso a parámetros por valor

Ejemplo 01:Este ejemplo nos da a ver el cambio de valores entre dos variables

#include <stdio.h>#include <iostream.h>#include <conio.h>//tenemos la siguiente función void que//intercambia los valores de dos enteros x e y:

void cambiar(int x, int y){int aux;aux=x;x = y;y = aux;//agreguemos un printf al final//de la función para ver si se// Habían modificado o no los valores:printf("en la función: x:%d y:%d \n",x,y);}int main(){

//Declaramos dos variables de tipo// int en el main, mostramos sus valores,//llamamos a la función y volvemos//a mostrarlos de la siguiente manera:int x=5,y=10;printf("x:%d y:%d \n",x,y);cambiar (x,y);printf("x:%d y:%d \n",x,y);getch();return 0;}

Función que recibe un parámetro

Variables de ámbito local

Llamada de la Función con un parámetro

Ejemplo 02:Este ejemplo nos da a ver la suma de valores entre dos variables:

#include <stdio.h>#include <iostream.h>#include <conio.h>

//tenemos la siguiente función que//suma los valores de dos enteros a y b:

int suma(int a, int b){return a+b;}

//Declaramos dos variables de tipo// int en el main, mostramos sus valores,//llamamos a la función y volvemos//a mostrarlos de la siguiente manera:

int main(){int a=5,b=8;int s=suma(a,b);cout<<s<<endl;

getch(); return 0;

}

b) Paso a parámetros por referencia:

Ejemplo 01:Este ejemplo nos da a ver el cambio de valores entre dos variables

#include <stdio.h>#include <iostream.h>#include <conio.h>

Función que recibe un parámetro

Variables de ámbito local

Llamada de la Función con un parámetro

//tenemos la siguiente función void que//intercambia los valores de dos enteros x e y:

void cambiar(int&x, int&y);

//Declaramos dos variables de tipo// int en el main, mostramos sus valores,//llamamos a la función y volvemos//a mostrarlos de la siguiente manera:

main()

{int x=5,y=10;printf("x:%d y:%d \n",x,y);cambiar(x,y);printf("x:%d y:%d \n",x,y);getch();return 0;}

void cambiar(int &x, int &y)

{int aux;aux=x;x = y;y = aux;printf("en la funcion: x:%d y:%d \n",x,y);

//agreguemos un printf al final//de la función para ver si se// Habían modificado o no los valores:

}

Función que recibe un parámetro

Variables de ámbito local

Llamada de la Función con un parámetro

Ejemplo 02:Este ejemplo nos da a ver la suma de valores entre dos variables:

#include <stdio.h>#include <iostream.h>#include <conio.h>

//Declaramos dos variables de tipo// int en el main, mostramos sus valores,//llamamos a la función y volvemos//a mostrarlos de la siguiente manera:

int suma(int &a, int &b) ;int main(){int a=5,b=8;int s=suma(a,b);cout<<s<<endl;getch();return 0;}

//tenemos la siguiente función que//suma los valores de dos enteros a y b:

int suma(int &a, int &b){return a+b;}

Función que recibe un parámetro

Variables de ámbito local

Llamada de la Función con un parámetro