FUNCIONES Y MATRICES
Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.
Ejemplo de una función
Para comenzar, vamos a considerar el caso en el cual se desea crear la función cuadrado(), que deberá devolver el cuadrado de un número real (de punto flotante), es decir, cuadrado() aceptará números de punto flotante y regresará una respuesta como número flotante.
Nota: aunque para la función que veremos el tipo de retorno coincide con el tipo de parámetro pasado, algunas veces las cosas pueden cambiar, es decir, no es obligatorio que una función reciba un parámetro de un tipo y que tenga que regresar una respuesta de dicho tipo.
// regresar el cuadrado de un número
double Cuadrado(double n)
{
return n*n;
}
Parámetros
Normalmente, las funciones operan sobre ciertos valores pasados a las mismas ya sea como constantes literales o como variables, aunque se pueden definir funciones que no reciban parámetros. Existen dos formas en C++ de pasar parámetros a una función; por referencia o por valor. El hecho es que si en una declaración de función se declaran parámetros por referencia, a los mismos no se les podrá pasar valores literales ya que las referencias apuntan a objetos (variables o funciones) residentes en la memoria; por otro lado, si un parámetro es declarado para ser pasado por valor, el mismo puede pasarse como una constante literal o como una variable. Los parámetros pasados por referencia pueden ser alterados por la función que los reciba, mientras que los parámetros pasados por valor o copia no pueden ser alterados por la función que los recibe, es decir, la función puede manipular a su antojo al parámetro, pero ningún cambio hecho sobre este se reflejará en el parámetro original.
Parámetros por valor
La función cuadrado() (ver arriba) es un clásico ejemplo que muestra el paso de parámetros por valor, en ese sentido la función cuadrado() recibe una copia del parámetro n. En la misma función se puede observar que se realiza un calculo ( n*n ), sin embargo el parámetro original no sufrirá cambio alguno, esto seguirá siendo cierto aún cuando dentro de la función hubiera una instrucción parecida an = n * n; o n*=n;.
Parámetros por referencia
Para mostrar un ejemplo del paso de parámetros por referencia, vamos a retomar el caso de la función cuadrado, salvo que en esta ocasión cambiaremos ligeramente la sintaxis para definir la misma. Veamos:
// regresar el cuadrado de un número
double cuadrado2(double &n)
{
n *= n;
return n;
}
Al poner a prueba las funciones cuadrado() y cuadrado2() se podrá verificar que la primera de estas no cambia el valor del parámetro original, mientras que la segunda sí lo hace.
Llamar a una función
para llamar a la función cuadrado() vista anteriormente, podemos emplear:
cout << cuadrado(25);
cout << cuadrado(X);
R = cuadrado(X); // guardar en R el cuadrado de X
Funciones void
Bajo ciertas circunstancias se deseará escribir funciones que no regresen valor alguno (esto sería algo parecido a escribir procedures en Pascal) y para ello podemos declarar a la función como void. La palabra reservada void es utilizada para declarar funciones sin valor de retorno y también para indicar que una función específica no requiere de parámetros. Por ejemplo, la función pausa() que se verá en seguida, no devolverá valor alguno y la misma no requiere de parámetros.
// esta función requiere de la librería iostream
void pausa(void)
{
cout << "Por favor presione <Enter> HOLA...";
cin.get();
cin.ignore(255, '\n'); // rechazar caracteres introducidos antes de <Enter>
}
;
Notas: se debe de aclarar que el uso de la palabra void dentro de los parentesis es opcional al momento de declarar una función. Así, la función pausa() podría haberse declarado como void pausa(), y la misma puede invocarse como: pausa();.
Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es C++ es similar a un vector:
int matrix[rows][cols]; |
int es el tipo de dato, matrix es el nombre del todo el conjunto de datos y debo de especificar el numero de filas y columnas.
Las matrices también pueden ser de distintos tipos de datos como char, float, double, etc. Las matrices en C++ se almacenan al igual que los vectores en posiciones consecutivas de memoria.
Usualmente uno se hace la idea que una matriz es como un tablero, pero internamente el manejo es como su definición lo indica, un vector de vectores, es decir, los vectores están uno detrás del otro juntos.
La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los 2 subíndices que van en los corchetes.
Si coloco int matriz[2][3] = 10; estoy asignando al cuarto elemento de la tercera fila el valor 10.
No olvidar que tanto filas como columnas se enumeran a partir de 0. Bueno y para recorrer una matriz podemos usar igualmente un bucle. En este caso usando 2 for:
1
2
3
4
5
| for ( int i = 0; i < rows; i++) { for ( int j = 0; j < cols; j++) { matrix[i][j] = i % j; } } |
//ESTRUCTURA 4 EN BLANCO CON FUNCIONES
// USO DE VECTORES
#include<iostream>
#include<math.h>
using namespace std;
// ZONA DE DECLARACION PUBLICA
const int m=3, n=3;
int i, j, sumatoria, Busca, YY, R;
int M[n][m]; // DECLARACION DE UNA MATRIZ
void LeerMatriz(); // DECLARACION FUNCIONES
void EscribirMatriz();
void Buscar(int YY);
int SumarElementos();
int main ()
{
int opcion;
do
{ //INICIO DEL DO - WHILE
cout<<"********* MENU DE UNA MATRIZ **********\n\n";
cout<<" 1) LECTURA DE LA MATRIZ n*m \n";
cout<<" 2) ESCRITURA DE LA MATRIZ n*m \n";
cout<<" 3) ENCONTRAR EL ELEMENTO \n";
cout<<" 4) SUMAR ELEMENTOS EN LA MATRIZ \n\n";
cout<<" DIGITE <0> PARA SALIR \n";
cout<<" Elija una Opcion < > \n\n";
cout<<"*************************************\n\n";
cout<<" ELIJA UNA OPCION : "; cin>>opcion;
//2)ASIGNACION
switch (opcion)
{ //INICIO DEL CASO 1
case 1:
{// CONTENIDO 1 (INICO)
cout<<"******* LECTURA DE LA MATRIZ ******\n\n";
LeerMatriz();
cout<<"************************************\n\n";
} //FIN DEL CASO 1
break;
case 2:
{//INICIO DEL CASO 2
cout<<"******* ESCRITURA DE LA MATRIZ ******\n\n";
EscribirMatriz();
cout<<"*********************************\n\n";
} //FIN DEL CASO 2
break;
case 3:
{//INICIO DEL CASO 3
cout<<"******* ENCONTRAR UN ELEMENTO DE LA MATRIZ ******\n\n";
cout<<"Ingrese el e-nesimo elemento a Buscar: "; cin>> Busca;
Buscar(Busca);
cout<<"*********************************\n\n";
} //FIN DEL CASO 2
break;
case 4:
{//INICIO DEL CASO 4
cout<<"******* SUMAR ELEMENTOS EN LA MATRIZ ******\n\n";
R = SumarElementos();
cout<<"LA SUMA DE LOS ELEMENTOS DE LA MATRIZ ES:"<< R<< endl;
cout<<"\n******************************************\n\n";
} //FIN DEL CASO 2
break;
}// FIN DE SWITCH
}while (opcion !=0); // FIN DEL DO - WHILE
cout<<endl;cout<<"\n";
system("pause");
return 0;
} //FIN DEL PROGRAMA
// ZONA DE DESARROLLO DE FUNCIONES
void LeerMatriz()
{
cout<<endl;
cout<<"LECTURA DE LA MATRIZ M "<<endl;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
cout<<"ingrese valor del elemento M["<<i<<"]["<<j<<"] = "; cin>>M[i][j];
}
cout<<endl;
}
void EscribirMatriz()
{
cout<<endl;
cout<<"ESCRITURA DE LA MATRIZ M "<<endl;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
cout<<"El elemento M["<<i<<"]["<<j<<"] = "<<M[i][j]<<endl;
}
cout<<endl;
}
void Buscar(int YY)
{
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
if (M[i][j]==YY)
cout<<" Encontrmos al elemento M["<<i<<"]["<<j<<"] = "<<M[i][j] <<endl;
}
} // FIN DE BUSCAR
int SumarElementos()
{
sumatoria = 0;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
sumatoria = sumatoria + M[i][j];
}
return sumatoria;
} // FIN DE SUMAR
EJERCICIO 1
//Huarcaya Parra Bryan IIIEE-02
#include <iomanip.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
float m[2][2];
int main()
{
cout<<setw(30)<<"Lanzador de Proyectiles\n";
cout<<setw(30)<<"-----------------------\n";
cout<<setw(3)<<"ingrese los datos del lanzamiento:\n";
cout<<setw(3)<<"velocidad inicial (m/s):\n";cin>>m[0][0];
cout<<setw(3)<<"angulo de lanzamiento:\n";cin>>m[0][1];
m[1][0]=(pow(m[0][0],2)*sin(m[0][1]))/9.8;
m[1][1]=(m[0][0]*2*sin(m[0][1]))/9.8;
cout<<setw(3)<<"El alcance maximo es de: "<<m[1][0]<<" metros\n";
cout<<setw(3)<<"Para llegar al objetivo tomara: "<<m[1][1]<<"segundos";
getch();
}
0 comentarios:
Publicar un comentario