Introducción a la programación

La idea de vector, en inform�tica, es la siguiente: imaginad que en vuestro programa necesitais 10.000 variables de tipo entero que representen cada una de ellas la temperatura de unos pueblos. Imagino que a nadie se le habr� ocurrido ponerse, en la declaraci�n de variables, a declarar una por una las 10.000 variables que se necesitan. Dado que son variables que est�n relacionadas entre s� por su significado (y eso es algo que lo decide siempre el programador), parece l�gico querer ponerles un nombre com�n, y que sea el �ndice (en qu� componente de vector se encuentran) lo que las distinga. Vemos pues que los vectores nos dan unas ciertas ventajas: declarar muchas variables relacionadas entre s� de un mismo tipo de una vez, y acceder a cualquiera de ellas usando tan s�lo un �ndice.

Declararemos algo como esto (lo precisamos un poco m�s adelante):

Temperaturas: es un vector de reales con 10.000 componentes

Para referirnos a los elementos de un vector, tenemos que especificar el �ndice del elemento que estamos tratando: v[i]. As�, asignaremos un valor haciendo v[i] <- 3 y leeremos un valor haciendo m <- v[i].

Asignaremos valores a cada una de esas componentes, bien a mano:

 Temperaturas(1) <- 23.5
 Temperaturas(2) <- 22.7
 Temperaturas(3) <- 25.2
 Temperaturas(4) <- 20.4
 ...

o bien en un bucle:

 desde i=1 hasta i=10.000 hacer
  Temperaturas(i) <- Medida_Temperatura
 fin desde

y, en la memoria del ordenador, lo que tendremos ser� algo como:

 |--------|
 |  23.5  |   Este es Temperaturas(1)
 |--------|
 |  22.7  |   Este es Temperaturas(2)
 |--------|
 |  25.2  |   Este es Temperaturas(3)
 |--------|
 |  20.4  |   Este es Temperaturas(4)
 |--------|
 | ...... |
 |--------|
 |  19.2  |   Este es Temperaturas(10000)
 | -------|

Para acceder a cualquier componente del vector, s�lo tendremos que poner Temperaturas(posicion), donde posicion ser� el n�mero de orden.

Vamos a ser un poco m�s precisos con la nomenclatura: para declarar un vector de N elementos (numerados del 1 al N) de tipo X, lo haremos de la siguiente manera:

Variable: Vector[1..N] de Tipo;

Por ejemplo, para declarar un vector de 20 enteros, haremos:

 v: Vector[1..N] de Entero;

�Qu� cosas podemos hacer con un vector?

Esto depende de qui�nes lo integren; me explico: si nuestro vector est� formado por n�meros, podremos sumar, restar y multiplicar vectores. Sin embargo, estas funciones ya NO forman parte del lenguaje de programaci�n, si no que tendremos que hac�rnoslas nosotros. En el caso de vectores num�ricos, veremos c�mo se puede escribir el pseudoc�digo para algunas de ellas.

Ya he mencionado que los vectores no s�lo pueden ser de n�meros, sino tambi�n de caracteres. Por ejemplo, podemos tener el siguiente vector de caracteres:

 |-----|
 |  A  |
 |-----|
 |  G  |
 |-----|
 |  J  |
 |-----|
 |  H  |
 |-----|
 |  R  |
 |-----|

Quiz� sin mucho sentido, pero s� con caracteres :)

Ahora, no hace falta un alarde mucho mayor de imaginaci�n para poner el siguiente vector de caracteres:

 |-----|
 |  H  |
 |-----|
 |  O  |
 |-----|
 |  L  |
 |-----|
 |  A  |
 |-----|

Vaya sorpresa: una palabra ;) S�, los vectores de caracteres se usan para formar lo que se conoce bajo el nombre de "cadenas de caracteres".

Las forma de trabajar con las cadenas de caracteres depende del lenguaje de programaci�n usado. Nosotros emplearemos la siguiente convenci�n: para declarar una cadena de caracteres, usaremos el tipo "cadena", diciendo cu�ntos caracteres tiene la cadena. Por ejemplo:

str: Cadena[10];

Esto ser� una cadena de 10 caracteres. Adem�s, escribiendo str estamos haciendo referencia a la cadena completa, mientras que si escribimos str[i] nos estamos refiriendo al car�cter i-�simo de la cadena.

Como dec�a m�s arriba, la suma de dos vectores tiene sentido si hablamos de vectores num�ricos, pero, �qu� sentido tiene "sumar" dos cadenas de caracteres? Pues el que nosotros le queramos dar, y este suele ser el de CONCATENAR, es decir, obtener una nueva cadena de caracteres, de mayor tama�o, y que tenga, primero, los caracteres de la primera cadena para, a continuaci�n, pasar a tener los caracteres de la segunda cadena (mucho ojo, que esto no es tan trivial como suena).

Por ejemplo, supongamos que tenemos las cadenas siguientes:

 cadena1 <- ('H','o','l','a')
 cadena2 <- ('M','u','n','d','o')

y hacemos:

cadena <- cadena1+cadena2

tendremos, en cadena:

cadena <- ('H','o','l','a','M','u','n','d','o')

y no

cadena <- ('H','o','l','a',' ','M','u','n','d','o')

puesto que al concatenar, no se a�aden espacios.

El mundo de las cadenas de caracteres es un tanto especial, y lo dejamos por ahora.

Antes, cuando he hablado de "operaciones" con vectores, he dicho que hab�a que definirlas. Veamos algunos ejemplos:

Queremos sumar dos vectores. Lo primero de todo, es que el n�mero de componentes ha de ser el mismo (si nos vamos al s�mil de alg�n espacio Rn). Llamamos U y V a nuestros dos vectores, y W al vector suma. Las componentes de W, como sabemos, las obtendremos as�:

 desde i=1 hasta i=tamanyo hacer
  W(i) <- U(i) + V(i)
 fin hacer

La resta es igualmente sencilla (y queda como ejercicio al lector ;) ). Ahora, multiplicar dos vectores... �c�mo? Si nuestro vector representara algo en R3, tenemos dos productos (conocidos) para estos vectores: el vectorial y el escalar, en otro Rn, tenemos el producto escalar. Pongamos que queremos calcular el producto escalar. Sabemos que el resultado de esa multiplicaci�n NO es un vector, sino que el resultado es un n�mero. En el caso del producto vectorial, el resultado es un vector. O podemos inventarnos nosotros el producto. Podemos querer que sea como la suma: que la componente i-�sima del vector sea el producto de las componentes i-�simas de los vectores factores. Todo depende del sentido que le queramos dar a esa operaci�n.

Por ejemplo, en el caso en que queramos que cada componente sea el producto de las otras dos, el algoritmo es un mero calco del de la suma:

 desde i=1 hasta i=tamanyo hacer
  W(i) <- U(i)*V(i)
 fin hacer

Y, en el caso, del producto escalar, tampoco tiene mucha complicaci�n.

 producto=0
 desde i=1 hasta i=tamanyo hacer
   producto <- producto + ( U(i)*V(i) )
 fin hacer

Resumiendo: no hay definidas operaciones para vectores, s�lo las que nosotros queramos usar, y para ello tendremos que programarlas.

Tambi�n podemos querer hacer otras cosas con vectores, como, por ejemplo, ORDENARLO, pero esta es una cuesti�n que podeis consultar en un curso de estructuras de datos.

Unos peque�os ejercicios:

1.- Escribid funciones que implementen las operaciones conocidas con vectores (y las que se os ocurran): suma y resta de vectores, producto de un n�mero por un vector...

2.- Dados dos vectores de caracteres, escribid una funci�n que devuelva un vector de caracteres que sea la concatenaci�n de los dos dados.

Eso es todo por ahora :)

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO