Arreglos
Arreglos
Arreglos
En clase ya conocimos algunos tipos bsicos como por ejemplo los tipos char, int y float. El lenguaje C++ permite, adems, construir estructuras ms complejas a partir de estos tipos bsicos. Una de las construcciones que podemos definir son los arreglos.
Arreglo: Coleccin ordenada de elementos de un mismo tipo. Ordenada significa que cada elemento tiene una ubicacin determinada dentro del arreglo y debemos conocerla para accederlo.
Sintaxis:
Definicin de un arreglo:
<tipo> nombre_variable[longitud];
Con esto diremos que nombre_variable es un arreglo de longitud elementos del tipo <tipo>. Cabe destacar que longitud debe ser cualquier expresin entera constante mayor que cero.
Asignacin de un arreglo:
Esta instruccin asigna el valor asociado de la expresin a la posicin ndice del arreglo nombre_variable. El ndice debe ser una expresin del tipo entero en el rango [0, longitud1]. Cabe destacar que C++ no chequea que el valor de la expresin sea menor a longitud, simplemente asigna el valor a esa posicin de memoria como si formara parte del arreglo, pisando, de esta manera, otros datos que no forman parte del mismo, con lo que finalmente el programa no funciona correctamente.
nombre_variable[ndice] es valor del tipo <tipo> que puede ser asignado a una variable, o pasado como parmetro, imprimirlo, etc. Aqu tambin vale la aclaracin de que el ndice debe estar dentro del rango de definicin del arreglo, C++ no chequear que esto sea cierto y devolver lo contenido en la posicin de memoria correspondiente a un arreglo de mayor longitud, el dato obtenido de esta manera es basura.
Ejemplo:
void main() { int i; // Pedimos el ingreso de 5 nmeros for(i=0; i<4; i++) { cout << Ingrese el elemento Nro: << i <<endl; cin >> a[i]; } // Los imprimimos imprimir(a,5); } //No olvidar que los arreglos van de 0 a longitud-1
Notar que el parmetro b de la funcin imprimir es un arreglo, pero no se indica la longitud del mismo. Esto no es necesario ya que solo especificamos que recibiremos un arreglo sin importar su longitud (en este caso particular su longitud viene indicada en tamano). De esta manera la funcin imprimir funciona para arreglos de cualquier longitud.
Pasaje de parmetros
En Gofer cuando pasamos parmetros a las funciones lo nico que podemos hacer es operar con ellos para generar el resultado de la funcin, estos parmetros no se ven afectados ya que simplemente son expresiones del tipo de la aridad de la funcin.
En C++ existen diferentes posibilidades en el pasaje de parmetros, ya que estos pueden ser pasados por Valor o Copia o por Referencia, y cada uno tiene caractersticas diferentes.
Funcin llamadora
Funcin llamada
Funcin llamadora
Funcin llamada
Ejemplo
Tenemos el siguiente programa:
void main() { float a = 10, b = 20, c ; cout << a << b ; c = suma(a,b) cout << A+B= << c; cout << A es << a; }
a = 10 b = 20 c = ?
a = 10 b = 20 c = ? asuma = 10 bsuma = 20
a = a + b;
a = 10 b = 20 c = ? asuma = 30 bsuma = 20
a = 10 b = 20 c = 30
Como vemos en este caso los parmetros no se ven afectados ya que suma realiza copias de ayb
a = 10 b = 20 c = ?
a = a + b;
a = 30 b = 20 c = 30
Como vemos en este caso el parmetro a se ve afectado ya que suma utiliza una referencia aa
a = a + b;