Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia No 2
Guia No 2
METODOLOGIA DE LA PROGRAMACION II
LABORATORIO DE PROGRAMACION – SIS 2210
LABORATORIO NRO 2.
Fundamento Teórico:
Variable Referencia: Una referencia o variable referencia es simplemente otro nombre o
alias de una variable. Actúa igual que un puntero. No se puede modificar la variable a la
que está asociada la referencia, pero si se puede modificar el valor de la variable asociada.
Las variables referencias se des-referencian automáticamente cuando se utilizan
Tipo &var;
Se inicializa con el valor de otra variable asociada, nunca por si misma;
Ej: int i;
int &r = i; //es un alias de i
r=400; //i es 400
Parámetro por referencia: Cuando una función debe modificar el valor de la variable
pasada como parámetro y esa modificación retorne a la función llamadora, se debe pasar el
parámetro por referencia. El compilador no realiza una copia del parámetro sino pasa una
referencia que indica a la función donde está la variable en memoria. La referencia que una
función recibe es la dirección de la variable.
La llamada a la función sería por ejemplo:
int x=10, y=5;
intercambiar ( x,y);
//solo se pueden pasar variables no se pueden pasar constantes ni expresiones
Argumentos Array: Los arrays son los únicos argumentos que se pasan por referencia, sin
tener que usar el operador &. El nombre de un array es un puntero a su primer elemento
Modificador const: Se Puede preceder a un tipo de argumento con el modificador const
para indicar que ese argumento no puede ser modificado de ningún modo.
Actividad de Clase:
Ejemplo 1: Buscar un elemento en un vector. El resultado da la posición del elemento en
el vector o el mensaje “No está en la lista”
#include <iostream>
int main()
{
float lista[N];
float numero;
int i=0; //encontrado;
int posicion;
char resp;
cout<<"Ingresar lista de numeros"<<endl;
while (i<N)
{
cin>>lista[i];
i++;
}
do
{
cout<<"indique el numero que desea buscar ";
cin>>numero;
encontrado=busquedaSecuencial(lista, i, numero);
if(!encontrado) cout<<"\nEste numero no esta en la lista \n";
else cout<<"\nEste numero esta en la posicion: "<<encontrado<<endl;
cout<<"\n\nDesea continuar? s/n: ";
do
{
cin>>resp;
}while(resp !='s' && resp !='n');
}while(resp=='s');
return 0;
}
//busqueda secuencial
int busquedaSecuencial(const float lista[N], int i, float nro)
{
int encontrado=0, k=0;
while (!encontrado && k<i)
{
if(lista[k++]==nro) encontrado =k;
}
return encontrado;
}
Ejemplo 3.- Hacer un programa genere una matriz con elementos aleatorios
comprendidos entre 0-99 y cuente todos los elementos pares
#include <iostream>
#include<cstdlib>
#include<ctime>
#include<iomanip>
int main()
{
srand(time(NULL));
int con;
generarMatriz(datos, F, C);
escribirMatriz(datos,F,C);
elementosPares(datos,F,C,con);
cout<< "Hay "<<con<< " elementos pares "<<endl;
return 0;
}
void elementosPares(int mat[][C], const int filas, const int cols, int &conta)
{
conta=0; mat[11][13]=100;
for (int f=0;f<filas ;f++ )
for (int c=0;c<cols ;c++ )
if(mat[f][c]%2==0)
conta++;
}
Problemas Propuestos:
1.- Hacer un programa que genere un vector de N elementos enteros y utilice funciones
para ordenar los elementos de menor a mayor.
2.- Modificar el ejemplo 2 para sumar a todos los elementos pares una unidad de tal modo
que todos los elementos sean impares. Mostrar estas dos matrices
Cuestionario:
1. ¿Se puede inicializar una variable referencia con una constante?
2. ¿Porque no se utiliza el operador & para referenciar arreglos?
3. ¿En qué casos se requiere utilizar el modificador const en los argumentos de una
función?
4. ¿Qué diferencia hay entre una variable puntero y una variable referencia?
5. ¿Cómo se genera una variable aleatoria en C++?