Arreglos

 

Las variables de tipos de datos simples son las variables declaradas int, float y char. Esto significa que pueden tener un solo valor en un momento dado. Las variables simples están predefinidas en C++ (son parte del lenguaje). Sin embargo, muchas veces se trabaja con una colección o grupo de datos relacionados y es más apropiado usar variables que tienen la capacidad de tener más de un valor a la vez. Estas variables son llamadas variables estructuradas y se componen de tipos de dato simple. Este es el concepto de arreglo o “array”. A continuación las reglas de los arreglos:

  1. Se componen de elementos.
  2. Todos los elementos son de un tipo de datos simple.
  3. Todos los elementos deben ser del mismo tipo de datos, no se pueden mezclar los tipos de datos en un arreglo.

 

¿Cómo se declara un arreglo?

            TipoDeDatosSimple  NombreDelArreglo  [NúmeroDeElementos]

 


ejemplo:

                                       int edad[6]

 

¿Cómo se acceden los elementos de un arreglo?

Ø      Para acceder un elemento del arreglo, se especifica el nombre del arreglo y se añade un índice entre [ ]. Este índice describe cuán lejos está el elemento deseado del primer elemento del arreglo. En otras palabras, indica la distancia entre el primer elemento y el elemento deseado. No se especifica el número del elemento.

Ø      El primer elemento tiene como índice 0, pues está desplazado 0 posiciones del elemento inicial.

Ø      El índice también se conoce como “offset” y siempre es uno menos que el número del elemento.

 

 Ejemplo:  int edad[6]

 

5

6

21

4

5

26

3

4

20

2

3

23

1

2

19

0

1

25

 

índice            elemento          contenido

 

Arreglos con “float”:

            float numero[20];

 

Arreglos con “char”:

            char nombre[20];                      esto es un “string”

 

string – arreglo de caracteres. Para entrar datos en un string se usa la función getline que está en la librería string.h. La función getline lee los espacios entre las letras y los acepta en el campo. La instrucción cin lee hasta donde encuentra espacios; elimina los caracteres después de los espacios.

 

Ejemplo:

# include <iostream.h>

#include <string.h>

main()

{

      char nombre[20];

      cout << “Entre un nombre: ”;

      cin.getline(nombre,20);

      cout << endl << nombre << endl;

      return(0);

}

 

Resumen de arreglos:

1.      Un arreglo se compone de varios datos de tipo simple; todos del mismo tipo.

2.      Un arreglo se define escribiendo el tipo de datos que tendrá, el nombre y la cantidad de elementos entre [ ].

3.      Para accesar un elemento del arreglo, se especifica el nombre del arreglo junto con un índice entre [ ]. Este índice especifica cuán lejos está el elemento que se desea accesar del elemento inicial.

4.      Una forma rápida de inicializar un arreglo (inicialización en línea) es:

int numero[4] = {34, 22, 45,7};

5.      Se puede usar arreglos de tipos de datos float, int y char.

6.      Un arreglo de caracteres (char) es un string.

 

 

Funciones

 

Como en el mundo real los programas son largos y complicados, se usa un diseño “top-down”, en el que se descomponen problemas complejos en tareas más pequeñas y manejables. Estas pequeñas tareas forman los módulos, los cuales se unen para hacer el programa completo. Toda función tiene un Input, con el que realiza un Proceso para generar un Output.

 

Ventajas del diseño top-down:

1.      Cada módulo es pequeño y fácil de componer o escribir.

2.      Cada módulo se puede probar por separado, lo que facilita eliminar errores.

3.      Cuando se trabaja en grupo, cada módulo puede ser desarrollado por personas diferentes, acelerando el desarrollo del programa total.

4.      Un módulo se escribe tan solo una vez, pero se puede usar cada vez que sea necesario.

5.      Cuando un módulo defina una acción en particular, puede ser guardado en una librería y ser usado en programas futuros.

 

En C++ los módulos se conocen como funciones y consisten de un prototipo y una definición:

-         El prototipo se escribe antes de comenzar el programa principal (main).

-         La definición se escribe después de que el programa principal ha terminado.

 

 

El prototipo:

ð     El Input de la función se coloca entre paréntesis y se conoce como parámetro de input; el parámetro es simplemente una variable. Siempre se especifica el tipo de datos del parámetro y se le da un nombre. Esta variable pertenece tan solo a esa función, por lo que se llama variable local o interna.

ð     A la función se le da un nombre único. Se puede usar cualquier nombre, siempre que no sea una palabra reservada de C++. Se recomienda que el nombre tenga relación con el proceso que realiza la función.

ð     Es necesario especificar el tipo de datos que genera la función. Cuando la función termina sus acciones, regresa un dato al programa principal. La función tan solo puede regresar un dato de tipo simple, hasta ahora los estudiados son int, char y float.

 

Con las funciones se puede usar otro tipo de datos: void. El "void" significa que la función no tiene input o output, dependiendo de dónde se coloque.

 

Ejemplo de prototipos:           void Show(int x);

                                                int Gather(void);

                                                int Square(int x);

 

 

Cómo definir una función en el programa:

      La definición es donde están escritas las instrucciones que se realizarán en la función. Es como un programa normal de C++, donde se puede incliur sus propias variables, instrucciones y operaciones. Todo lo que se defina en la función pertenece tan solo a ella y no tiene efecto en ningún otro lugar; o sea las variables, instrucciones y operaciones son localesd o internas en la función.

 

Ejemplo de definición:

void Show(int x)                       // Igual que en el prototipo, pero sin punto y coma (;)

{

   cout << "El número es: " <<  x  << endl;

}

 

Para llamar una función:

      Al llamar una función, el programa salta a la definición de la función y la ejecuta. Si la función tiene un parámetro de input, se debe proveer ese valor cuando se llama la función. Si tiene un output, se debe proveer un lugar donde guardarlo.

 

Ejemplo de una función sin input, con output:

 

Prototipo:         int Tomar(void);

 

Definición:        int Tomar(void)

                        {

                                    int num;

                                    cout << "Entre un numero: ";

                                    cin >> num;

                                    return(num);

                        }

 

Llamada:          numero = Tomar();

 

 

Ejemplo de una función con input, sin output:

 

Prototipo:         void Presentar(int x);

 

Definición:        void Presentar(int x)

                        {

                                    cout << "El resultado es: "<< x << endl;

                        }

 

Llamada:          Presentar(numero);

 

 

Ejemplo de una función con input, con output:

 

Prototipo:         int Cuadrado(int x);

 

Definición:        int Cuadrado(int x)

                        {

                                    x = x * x;

                                    return(x);

                        }

 

Llamada:

                        respuesta = Cuadrado(numero);

 

 

Ejemplo del programa que llamaría a los módulos:

 

# include <iostream.h>

void Presentar(int x);                 // Prototipos

int Tomar(void);

int Cuadrado(int x);

 

main()

{

      int numero;

      int respuesta;

      numero = Tomar();

      respuesta = Cuadrado(numero);

      Presentar(respuesta);

      return(0);

}

 

// Aquí se escriben las definiciones

 

 

 

Pasando el valor:

      Cuando un valor es pasado a una función en su parámetro de input, el contenido de la variable se copia a la variable interna declarada en la función. Dentro de la función solo se manipula el valor copiado; el valor original (fuera de la función) no cambia. El resultado del valor manipulado es el output de la función y es totalmente independiente del valor original.

      Cualquier declaración de variable realizada antes de main() es conocida como declaración externa o global. Una variable global puede ser usada en cualquier lugar en el programa.

      Cualquier declaración de variable realizada dentro de una función es una declaración interna. Estas declaraciones pertenecen a la función y no se pueden accesar desde ningún lugar fuera de la función.