lunes, 30 de noviembre de 2015



Ejemplos de vectores y matrices de Cobol

EJEMPLOS DE VECTORES:

Tipo nombre [tamaño];

Ejem.

/* Declaración de un array. */
#include <stdio.h>
main() /* Rellenamos del 0 - 9 */
{             
int vector[10],i;
                for (i=0;i<10;i++) vector[i]=i;
                for (i=0;i<10;i++) printf(" %d",vector[i]);
}



     Ejemplos:

                int vector[]={1,2,3,4,5,6,7,8};
                char vector[]="programador";
                char vector[]={'p','r','o','g','r','a','m','a','d','o','r'};




     Ahora veremos un ejemplo de como se rellena un vector de tipo char.

Ejem.

/* Vector de tipo char. */

#include <stdio.h>

main() /* Rellenamos un vector char */
{
                char cadena[20];
                int i;
                for (i=0;i<19 && cadena[i-1]!=13;i++)
                               cadena[i]=getche( );
                if (i==19) cadena[i]='\0';
                else cadena[i-1]='\0';
                printf("\n%s",cadena);
}




EJEMPLOS DE MATRICES

Ejem.

/* Matriz bidimensional. */
#include <stdio.h>
main() /* Rellenamos una matriz */
{
int x,i,numeros[3][4];          /* rellenamos la matriz */    
for (x=0;x<3;x++)
                               for (i=0;i<4;i++)                    
                scanf("%d",&numeros[x][i]);           
                 /* visualizamos la matriz */

                for (x=0;x<3;x++)                 
  for (i=0;i<4;i++)                                 
printf("%d",numeros[x][i]);
}


MANEJO DE VECTORES Y MATRICES CON COBOL Y EJEMPLOS

 VECTORES

     Un vector es un array unidimensional, es decir, sólo utiliza un índice para referenciar a cada uno de los elementos. Su declaración será:


                tipo nombre [tamaño];


     El tipo puede ser cualquiera de los ya conocidos y el tamaño indica el número de elementos del vector ( se debe indicar entre corchetes [ ] ). En el ejemplo puedes observar que la variable i es utilizada como índice, el primer for sirve para rellenar el vector y el segundo para visualizarlo. Como ves, las posiciones van de 0 a 9 ( total 10 elementos ).

Ejem.

/* Declaración de un array. */
#include <stdio.h>
main() /* Rellenamos del 0 - 9 */
{             
int vector[10],i;
                for (i=0;i<10;i++) vector[i]=i;
                for (i=0;i<10;i++) printf(" %d",vector[i]);
}

Podemos inicializar (asignarle valores) un vector en el momento de declararlo. Si lo hacemos así no es necesario indicar el tamaño. Su sintaxis es:

                tipo nombre []={ valor 1, valor 2...}


     Ejemplos:

                int vector[]={1,2,3,4,5,6,7,8};
                char vector[]="programador";
                char vector[]={'p','r','o','g','r','a','m','a','d','o','r'};


     Una particularidad con los vectores de tipo char (cadena de caracteres), es que deberemos indicar en que elemento se encuentra el fin de la cadena mediante el caracter nulo (\0). Esto no lo controla el compilador, y tendremos que ser nosotros los que insertemos este caracter al final de la cadena.

     Por tanto, en un vector de 10 elementos de tipo char podremos rellenar un máximo de 9, es decir, hasta vector[8]. Si sólo rellenamos los 5 primeros, hasta vector[4], debemos asignar el caracter nulo a vector[5]. Es muy sencillo: vector[5]='\0'; .

     Ahora veremos un ejemplo de como se rellena un vector de tipo char.

Ejem.

/* Vector de tipo char. */

#include <stdio.h>

main() /* Rellenamos un vector char */
{
                char cadena[20];
                int i;
                for (i=0;i<19 && cadena[i-1]!=13;i++)
                               cadena[i]=getche( );
                if (i==19) cadena[i]='\0';
                else cadena[i-1]='\0';
                printf("\n%s",cadena);
}



     Podemos ver que en el for se encuentran dos condiciones:

          1.- Que no se hayan rellenado todos los elementos (i<19).

          2.- Que el usuario no haya pulsado la tecla ENTER, cuyo código ASCII es 13. (cadena[x-i]!=13).

     También podemos observar una nueva función llamada getche( ), que se encuentra en conio.h. Esta función permite la entrada de un caracter por teclado. Después se encuentra un if, que comprueba si se ha rellenado todo el vector. Si es cierto, coloca el caracter nulo en el elemento nº20 (cadena[19]). En caso contrario tenemos el else, que asigna el caracter nulo al elemento que almacenó el caracter ENTER.

     En resumen: al declarar una cadena deberemos reservar una posición más que la longitud que queremos que tenga dicha cadena.


     .- Llamadas a funciones con arrays

     Como ya se comentó en el tema anterior, los arrays únicamente pueden ser enviados a una función por referencia. Para ello deberemos enviar la dirección de memoria del primer elemento del array. Por tanto, el argumento de la función deberá ser un puntero.

Ejem.

/* Envío de un array a una función. */
#include <stdio.h>
void visualizar(int []); /* prototipo */
main() /* rellenamos y visualizamos */
{
                int array[25],i;      
for (i=0;i<25;i++)   {
                               printf("Elemento nº %d",i+1);
                               scanf("%d",&array[i]);       
}              visualizar(&array[0]);
}

void visualizar(int array[]) /* desarrollo */
{             
int i;
                for (i=0;i<25;i++) printf("%d",array[i]);
}

     En el ejemplo se puede apreciar la forma de enviar un array por referencia. La función se podía haber declarado de otra manera, aunque funciona exactamente igual:

                declaración o prototipo
                               void visualizar(int *);

                desarrollo de la función
                               void visualizar(int *array)


MATRICES


     Una matriz es un array multidimensional. Se definen igual que los vectores excepto que se requiere un índice por cada dimensión.

     Su sintaxis es la siguiente:

                tipo nombre [tamaño 1][tamaño 2]...;


     Una matriz bidimensional se podría representar gráficamente como una tabla con filas y columnas.

     La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos con objetos 3D.

     En el ejemplo puedes ver como se rellena y visualiza una matriz bidimensional. Se necesitan dos bucles para cada una de las operaciones. Un bucle controla las filas y otro las columnas.






Ejem.

/* Matriz bidimensional. */
#include <stdio.h>
main() /* Rellenamos una matriz */
{
int x,i,numeros[3][4];          /* rellenamos la matriz */    
for (x=0;x<3;x++)
                               for (i=0;i<4;i++)                    
                scanf("%d",&numeros[x][i]);           
                 /* visualizamos la matriz */

                for (x=0;x<3;x++)                 
  for (i=0;i<4;i++)                                 
printf("%d",numeros[x][i]);
}


     Si al declarar una matriz también queremos inicializarla, habrá que tener encuenta el orden en el que los valores son asignados a los elementos de la matriz. Veamos algunos ejemplos:

                int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};


     quedarían asignados de la siguiente manera:

                numeros[0][0]=1   numeros[0][1]=2     numeros[0][2]=3     numeros[0][3]=4
                numeros[1][0]=5   numeros[1][1]=6     numeros[1][2]=7     numeros[1][3]=8
                numeros[2][0]=9   numeros[2][1]=10   numeros[2][2]=11   numeros[2][3]=12


     También se pueden inicializar cadenas de texto:

                char dias[7][10]={"lunes","martes","miércoles","jueves","viernes","sábado","domingo"};


     Para referirnos a cada palabra bastaría con el primer índice:


                printf("%s",dias[i]);

Definición de vectores

Variables dimensionales

Definición de vectores:
Es una zona de almacenamiento  contiguo, que contiene una serie de elementos del mismo tipo y se distinguen entre sí por un índice.

Vector también es la clase de la librería estándar de C++, que funciona como arreglo dinámico. El vector es una de las múltiples estructuras llamadas contenedores (otras son los conjuntos, mapas y listas). Es implementada como una plantilla de clase y puede ser iniciada como vector de números enteros, vector de cadenas, vector de instancias de una clase definida por el usuario, etc. 


Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.
Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc.
Crear un vector en C++ es sencillo, seguimos la siguiente sintaxix: Tipo nombre[tamanyo];
Ejmplo:
int a[5]; // Vector de 5 enteros
float b[5]; // vector de 5 flotantes
Producto product[5]; // vector de 5 objetos de tipo Producto
Podríamos también inicializar el vector en la declaración:
int a[] = {5, 15, 20, 25, 30};
float b[] = {10.5, 20.5, 30.5, 12.5, 50.5}
Producto product[] = {celular, calculadora, camara, ipod, usb}
Como hay 5 elementos en cada array, automáticamente se le asignará 5 espacios de memoria a cada vector, pero si trato de crear el vector de la forma int a[] , el compilador mostrará un error, porque no indiqué el tamaño del vector ni tampoco inicializé sus elementos.
Asigno valores a los elementos de un vector indicando su posición:
int a[4] = 30; // le asigno el valor 30 a la posición 4 del vector.
product[2].setPrecio(300) // le asigno un precio de 300 al producto en la posición 2.
Obviamente el método setPrecio() debe de estar implementado. Para llenar, recorrer e imprimir un vector podemos utilizar un bucle for:
#include <iostream>
using namespace std;

int main()
{
  int dim;
  cout << "Ingresa la dimension del vector" << endl;
  cin >> dim; // Supongamos que ingrese 10
  int vector[dim]; // mi vector es de tamanyo 10

  for(int i = 0; i < dim; i++){
    vector[i] = i * 10;
    cout << vector[i] << endl;
  }

  return 0;
}
La salida del programa mostrará: 0 10 20 30 40 50 60 70 80 90 Fàcil verdad? Bien ahora creen 2 o más vectores y empiecen a hacer funciones básicas como sumar, restar, buscar, ordenar, moda, etc que ayudan mucho a ir desarrollando la lógica. No vale copiar y pegar, mejor es practicar, practicar y practicar.
Aquí una función simple para sumar 2 vectores a y b y poner el resultado en un tercer vector c:
#include <iostream>
using namespace std;

void sumar(int a[], int b[], int c[],int dim) {
    for (int i = 0; i < dim; i++) {
        c[i] = a[i] + b[i];
    }
}

void imprimir(int v[], int dim)
{
   for(int i = 0; i < dim; i++) {
        cout << v[i] << endl;
   }
   cout << endl << endl;
}

int main()
{
    int dim;
    cout << "Ingresa la dimensión" << endl;
    cin >> dim;

    int a[dim];
    int b[dim];
    int c[dim];

    for(int i = 0; i < dim; i++) {
        a[i] = i * 10;
        b[i] = i * 5;
    }

    cout << "Vector A " << endl;
    imprimir(a, dim);

    cout << "Vector B " << endl;
    imprimir(b, dim);

    sumar(a, b, c, dim);
    cout << "Vector C " << endl;

    imprimir(c, dim);
    return 0;
}
Si ingreso una dimensión de 10, este programa me daría:
Vector A
0 10 20 30 40 50 60 70 80 90
VECTOR B
0 5 10 15 20 25 30 35 40 45
VECTOR C
0 15 30 45 60 75 90 105 120 135
Entonces para tomar en cuenta:
Todo vector debe tener definido un tipo de dato.
Todo vector necesita de una dimensión o tamanyo.
El código de arriba se puede mejorar muchísimo con objetos y clases, este es solo un pequeño ejemplo.
Definición De Matriz En La Programación:

Desde el punto de vista del programa, una matriz (array ó vector) es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz.
Desde el punto de vista lógico podemos considerarlas como un conjunto de elementos ordenados en fila. Así pues, en principio todas las matrices son de una dimensión, la dimensión principal, pero veremos que los elementos de esta fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multi-dimensionales, aunque las más fáciles de "ver" o imaginar son las de dos y tres dimensiones.

Las matrices:

Son arreglos con dos dimensiones, es decir se puede decir que tienen filas y columnas
Los valores de las variables se llaman elementos, de la misma forma que en los arreglos y sus índices están compuestos por dos caracteres que indican su posición. Para poder acceder a un elemento se debe poner su posición compuesta de los dos índices.

Por ejemplo para la matriz A y la posición en la fila 1 y columna 2 se debe poner A [1][2], denotándose que el primer índice indica la posición de la fila y el segundo la posición de la columna.



Definición En Términos Informáticos:


 Es como una variable que tiene varios compartimentos para guardar la información y a cada uno de esos compartimentos hay que acceder con un índice. 
Antes de utilizar un array debemos declararlo de manera obligatoria. 
Se pueden construir matrices multidimensionales, es decir, que nos permitan crear matrices de varias coordenadas. Para trabajar con ellos se utiliza una coma que separa los dos índices.

VARIABLE DIMENCIONALES

                                                            VARIABLE DIMENSIONALES