13
PROGRAMACIO N ORIENTADA A OBJETOS 1 Actividad 3. Sobre parámetros UNIDAD 2 GUILLERMO DURAN GARCIA AL12524075

POO1_U2_A3_TTRE

Embed Size (px)

Citation preview

Page 1: POO1_U2_A3_TTRE

PROGRAMACION ORIENTADA A

OBJETOS 1

Actividad 3. Sobre parámetros

UNIDAD 2

GUILLERMO DURAN GARCIA AL12524075

Page 2: POO1_U2_A3_TTRE

Actividad 3. Sobre parámetros

Con el fin de distinguir lo qué son los parámetros, realiza lo siguiente: 1. Elabora una definición propia de parámetros.

2. Posteriormente investiga y responde ¿cuáles tipos de parámetros existen?, y ¿cómo se deben utilizar dentro de un programa?

3. Guarda la actividad con el nombre POO1_U2_A3_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno.

4. Envía el archivo a tu Facilitador(a) para recibir retroalimentación

Page 3: POO1_U2_A3_TTRE

Definición personal 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

PARAMETROS

Un parámetro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algún proceso. Estos valores que se pasan del cuerpo principal del programa al procedimiento se llaman parámetros.

Entonces la declaración completa de un procedimiento es:

Static void NomProc(lista de parámetros){ cuerpo de instrucciones; };prog.javaimport java.awt.*; import java.applet.*; import java.awt.event.*;public class prog25 extends Applet {static TextField t1=new TextField(10);static Button b1=new Button("ok");public void init() {// abajo no se puso el objeto a la propiedad, porque el default es el propio prog25 o appletadd(t1); add(b1);b1.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e) {int x = 500;proc1(x);} } );} // cierra initstatic void proc1(int x){ x=x+100;t1.setText(String.valueOf(x));};} // cierra clasecodigo.html que activa applet<HTML><APPLET CODE="prog25" width=100 height=100></APPLET></HTML>

Page 4: POO1_U2_A3_TTRE

corrida:

REGLAS PARA EL USO DE PARAMETROS1.- Cuando se usan variables como parámetros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se esta enviando.2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre.3.- La cantidad de variables que se envían deben ser igual en cantidad, orden y tipo a las variables que reciben.4.- La variable que se recibe tiene un ámbito local dentro del procedimiento, es decir solo la puede usar ese procedimiento.

http://www.programacionfacil.com/java/parametros

Page 5: POO1_U2_A3_TTRE

PARÁMETROS DE LOS SISTEMAS

El sistema se caracteriza por ciertos parámetros. Parámetros son constantes arbitrarias que caracterizan, por sus propiedades, el valor y la descripción dimensional de un sistema específico o de un componente del sistema.

Los parámetros de los sistemas son:

Entrada o insumo o impulso (input): Es la fuerza de arranque del sistema, que provee el material o la energía para la operación del sistema.

Salida o producto o resultado (output): Es la finalidad para la cual se reunieron elementos y relaciones del sistema. Los resultados de un proceso son las salidas, las cuales deben ser coherentes con el objetivo del sistema. Los resultados de los sistemas son finales, mientras que los resultados de los subsistemas con intermedios.

Procesamiento o procesador o transformador (throughput): Es el fenómeno que produce cambios, es el mecanismo de conversión de las entradas en salidas o resultados. Generalmente es representado como la caja negra, en la que entra los insumos y salen cosas diferentes, que son los productos. Retroacción o retroalimentación o retroinformación (feedback): Es la función de retorno del sistema que tiende a comparar la salida con un criterio prestablecido, manteniéndola controlada dentro de aquel estándar o criterio.

Ambiente: Es el medio que envuelve externamente el sistema. Está en constante interacción con el sistema, ya que éste recibe entradas, las procesa y efectúa salidas. La supervivencia de un sistema depende de su capacidad de adaptarse, cambiar y responder a las exigencias y demandas del ambiente externo. Aunque el ambiente puede ser un recurso para el sistema, también puede ser una amenaza.

Page 6: POO1_U2_A3_TTRE

Tipos de parámetros

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.

Parámetros por valorCuando surge la necesidad de obtener el valor o contenido de una variable original o local a una función, en otra función, se utiliza parámetros por valor. En este caso se produce una copia de la variable original hacia el 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.

void imprime_cantidad(int can){printf(“%d\n”,can);}void alguna_funcion(void){int cantidad;:imprime_cantidad(cantidad);:}

El valor de una variable original puede pasar de una función a otra y a su vez a otras funciones, sin inconvenientes. De pronto en 10- Ciclo de Seminarios y Talleres del Area de Programación.

Parámetros y Argumentos en el lenguaje de programación C++. Nuestro desarrollo, nos podemos encontrar con una hoja de ruta de valores de variables que pasan por funciones. 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);}

Page 7: POO1_U2_A3_TTRE

void main(void){char alias[35] = {"Pepe"};imprime_datos(alias,23);}

Parámetros por referencia

La referencia indica 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.

#include <iostream.h>void icrementa_sin_exito(int b){ b++;} // no afecta a la variable original avoid incrementa_con_exito(const int &b){ b++;} // Error de compilaciónvoid main(void){int a = 4;cout<<a<<"\n";

Page 8: POO1_U2_A3_TTRE

incrementa_sin_exito(a);cout<<a<<"\n";incrementa_con_exito(a);cout<<a<<"\n";}

Si extraemos la palabra reservada const del argumento b en la función incrementa_con_exito(), no habría error de compilación y la variable original a se vería afectada al incrementarse en uno por el b++. Parámetros por referencia puntero Kernighan y Ritchie3 el su capítulo apuntadores y arreglos nos hacen notar que la definición de los argumentos char s[]; y char *s; son completamente equivalentes cuando se pasa un nombre de un arreglo de caracteres a una función. Ya que al pasar un arreglo como parámetro, lo que en realidad se esta pasando es la dirección del comienzo del mismo. Recordemos la función carga() de nuestro ejemplo de un arreglode números enteros.

void carga(int &b){ // sin & funciona igual por que?for (int i = 0;i < 5;i++)cin>>b[i];}Si escribimosvoid carga(int * b){for (int i = 0;i < 5;i++)cin>>b[i];}o bienvoid carga(int * b){for (int i = 0;i < 5;i++)cin>>*b++;}En definitiva y aceptando los conceptos de Brian y Dennis la variable original de tipo arreglo de enteros se verá modificada al producirse la carga de elementos, manipulando el arreglo a partir de subíndices o bien un puntero a enteros. También podríamos haber escrito la función carga del siguiente modo:

void carga(int * b){for (int i = 0;*b == '\0';b++){i++;cin>>*b;}}

Page 9: POO1_U2_A3_TTRE

Siempre y cuando los elementos del arreglo estén inicializados en cero, ya que de lo contrario tendríamos algunos inconvenientes. Parámetros de tipo puntero o apuntadores siempre tomarán la dirección de la variable original, por consecuencia la referencia a la misma. Los parámetros por referencia puntero pueden tener el mismo cometido que los por referencia, solo en el concepto que al modificar un argumento, se afectará al parámetro. Pero no en su tratamiento, donde se trabaja siempre sobre la base de la aritmética de punteros. Completemos la idea, con un ejemplo sencillo:

#include <iostream.h>void incrementa(int *b) {(*b)++;}void main(void){int a = 4;incrementa(&a);cout<<a<<"\n"; // imprime 5}que sería totalmente equivalente a escribir#include <iostream.h>14- Ciclo de Seminarios y Talleres del Area de Programación.Parámetros y Argumentos en el lenguaje de programación C++.void incrementa(int *b) {(*b)++;}void main(void){int a = 4; int * ptero;ptero = &a;incrementa(ptero);cout<<a<<"\n"; // imprime 5}ya que el parámetro debe ser una variable de tipo puntero o bien ladirección de una variable.Ejemplo para una matriz bidimensional:#include <stdio.h>#include <iostream.h>typedef int matriz[2][2];void carga(int *a){ // recibe la dirección de m[0][0]for (int i = 0;i < 2;i++)for (int j = 0;j < 2;j++)cin>>*a++; // incrementa direcciones de la matriz}

Page 10: POO1_U2_A3_TTRE

void muestra(matriz b){for (int i = 0;i < 2;i++)for (int j = 0;j < 2;j++)printf("%d,",b[i][j]);}int suma(matriz c){int valor=0;for (int i = 0;i < 2;i++)for (int j = 0;j < 2;j++)valor += c[i][j];return(valor);UTN, FRT, Departamento de Sistemas de Información- 15Ing. Ubaldo José Bonaparte}void main(){matriz m = {0,0,0,0};cargapuntero(&m[0][0]);muestra(m);printf("\nLa suma de los elementos es = %d\n",suma(m));}

Al trabajar con una variable subindizada y bidimensional cuando invocamos a la función carga(), debemos pasarle como parámetro la dirección de la variable local entera m (&m[0][0]), para tratar la matriz con punteros. El argumento de la función carga(), recibe dicha dirección sobre una variable de tipo puntero a un entero a, y manipula las direcciones de memoria de la matriz m con la aritmética de punteros aplicada a dicha variable.

http://www.edutecne.utn.edu.ar/semin_progr_frt/param_y_argum_lenguaje_C.pdf