Estructura Vector
Estructura Vector
1
Böhm y Jacopini, Paper Flow diagrams, Turing Machines and Languages with only Two Formation Rules.
Diagramas de flujo, máquinas de Turing e idiomas con solo dos reglas de formación 1966.
2
Barbara Liskov, TDA propuso su uso en el lenguaje CLU 1975.
Página 1 de 9
Vector - Array Unidimensional
Un tipo de dato informático es un atributo de datos utilizado para indicar al
ordenador sobre la clase de datos a ser manipulado. Se trata de un ente abstracto para
permitir separar los diferentes componentes de un programa, simplificando así su
elaboración, depuración, y posteriores mejoras. Los objetos integran tanto los
procedimientos como las variables y datos referentes al objeto.
Especificación Especificación
Como usuario de esa clase no sabrá que ocurre cuando se declara y utiliza el tipo de
dato o como actúa la variable internamente. Como ser la funcionalidad de un tipo de
dato incorporado al compilador, un ejemplo típico es el número flotante el cual se
compone de un (exponente, mantisa “parte decimal”, y un bit de signo) inicializados
adecuadamente. Para prevenir errores, no se permite tener control explícito sobre estos
datos únicamente se manipulan mediante funciones especiales llamadas por el
compilador.
Página 2 de 9
Vector - Array Unidimensional
Para poder procesar la información se requiere que ésta se almacene en la memoria
de la computadora de acuerdo con la forma en que los datos se organizan y se clasifican
en:
Identificador Identificador
La principal característica de los tipos de datos simples consiste en que ocupan sólo
una casilla de memoria, por lo tanto, una variable simple hace referencia a un único
valor a la vez. En esta clasificación de datos se encuentran: números enteros, reales,
caracteres, booleanos, enumerados y subrangos. Cabe señalar que los dos últimos no
existen en algunos lenguajes de programación.
Por otra parte, los tipos de datos estructurados se caracterizan por el hecho de
poseer un nombre, -identificador de variable estructurada-, y se hace referencia a un
grupo de casillas de memoria. Es decir, un tipo de dato estructurado tiene varios
componentes cada uno de éstos elementos pueden ser un tipo de dato simple o
estructurado. Sin embargo, los componentes básicos del nivel más bajo de cualquier tipo
de datos estructurado son siempre tipos de datos simples.
Como vimos anteriormente, los tipos de datos base de Python, nos permiten definir y
por lo tanto modelar objetos de la vida real. Como en el caso de los números enteros,
disponemos de los tipos de datos “int” y sus variantes, los nombres de las personas
podrían ser modelados mediante cadenas de caracteres “string”, etc.
Si bien esto nos da las primeras herramientas para que nuestras aplicaciones sean
capaces de simular una situación del mundo, necesitaremos facilidades para relacionar
estos objetos simples y modelarlos entidades más complejas.
Página 3 de 9
Vector - Array Unidimensional
Los índices permiten acceder al valor de una posición determinada dentro del vector,
generalmente es numérico, empezando desde cero hasta el número de elementos – 1.
En el caso de un vector de 5 (cinco) elementos el primer elemento sería el de índice 0,
mientras que el último tendría como índice el 4. En algunos ámbitos matemáticos se
comienza a numerar los vectores desde el 1 en lugar de desde el 0.
Existen tres tipos de indexación (base cero, base 1 y base n), el primero su primer
elemento comienza con “0” cero hasta “n-1”, el segundo su primer elemento comienza
con “1” hasta “n”, y el tercero su primer elemento puede ser elegido libremente, en
algunos lenguajes de programación se permite que los índices puedan ser negativos.
Por ejemplo, sí debemos diseñar una aplicación capaz de gestionar los registros
máximos de temperaturas a lo largo de un mes. Hay que utilizar un conjunto de
información para representar las características de todos los elementos del conjunto
que son del mismo tipo, información numérica, con un rango aproximado de -60 a 60
centígrados. Por lo tanto, podemos representar a este conjunto de datos por medio de
un conjunto finito y cuyos elementos son de tipo “int”.
Python, nos brinda arrays por medio de los cuales podremos modelar este conjunto
de datos. Un array es una variable, como las estudiadas con anterioridad, cuya
particularidad es la posibilidad de almacenar más de un dato simultáneamente. Dentro
de este array, cada elemento ocupa una posición determinada. Estas posiciones son
numeradas desde “0 a n-1”, siendo “n” la cantidad total de elementos que nos
permitirán acceder a valores precisos dentro de este array.
Página 4 de 9
Vector - Array Unidimensional
for i in range(5):
temp.append(0)
for i in range(5):
print(f"Celda[{i}]: ", temp[i])
...
Con esta simple definición habremos creado un array, llamado temp, el cual es capaz
de contener simultáneamente 31 (treinta y un) valores enteros. Nótese que la cantidad
de elementos se coloca encerrada entre corchetes “[ y ]”. La siguiente figura
esquematiza la asignación de memoria utilizada por los vectores de una dimensión.
for i in range(10):
Inicialización de vectores
Al igual que las variables analizadas en secciones anteriores, los vectores pueden
recibir valores iniciales en el momento de la definición. Para tal efecto, podemos
emplear diferentes alternativas de sintaxis:
for i in range(10):
La lista que se encierra entre corchetes “[ y ]” conteniendo los valores con los que se
inicializará el vector, dichos valores deben ser separados por comas. La cantidad de
elementos en la lista de debe ser igual a la dimensión del vector definido. P.e. si
quisiéramos inicializar el contenido de nuestro vector temp escribiríamos:
Página 5 de 9
Vector - Array Unidimensional
...
temp = [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 ]
vector = [0] * 20
print(vector)
Página 6 de 9
Vector - Array Unidimensional
...
c= temp[0] + tmp[15] + temp[30];
temp[4]= temp[4] + 10;
temp[4]+= 10; /* Esta sentencia cumple la misma función a la anterior, pero,
expresada de forma compacta gracias a los potentes operadores de
Python.*/
...
Supongamos ahora, que debemos escribir un algoritmo que calcule el promedio de
temperaturas registradas en el vector temp. Nuestro algoritmo debe recorrer el array
desde su primer elemento hasta el último para obtener la suma y luego dividirlo por la
cantidad de días correspondientes, para simplificar el ejemplo, nuestros meses siempre
tendrán 31 días.
Existen varias formas para llegar a este resultado, para ello, utilizaremos las
estructuras de control que analizamos en la sección anterior. Los dos siguientes casos
son dos formas alternativas para llegar al mismo resultado:
CASO 1 CASO 2
... ...
DIAS = 31 DIAS = 31
sumar = 0 sumar = 0
float promedio = 0.0 float promedio= 0.0
temp = [0 for i in range(31)] temp = [0 for i in range(31)]
... ...
i= 0 for i in range(DIAS)):
while i < DIAS: sumar += temp[i]
sumar += temp[i] promedio = sumar / DIAS
i++ …
promedio = sumar / DIAS
...
Si bien los dos casos permiten resolver el problema, el caso 2, lo resuelve de una
forma más compacta y elegante. En ambos casos, utilizamos una variable “i” cuyo
valor evoluciona desde “0 hasta 31”, el valor 31 es utilizado como centinela para
finalizar el ciclo en ambos casos. Mediante esta variable recorreremos el vector en
busca de la suma total. Una vez calculada el algoritmo procede a dividirla por el total
de valores y obtener el promedio.
Página 7 de 9
Vector - Array Unidimensional
Desborde de un vector
print(vector)
...
if ( vector[2] == 6 )
{
...
}
Para una facilidad de simulación de la memoria RAM se toma los dos últimos bytes en
hexadecimal y se suman 4 bytes en win32-
Página 8 de 9
Vector - Array Unidimensional
Copia de vectores
Esta función recibe dos vectores y copia la cantidad de elementos del vector origen
al vector destino. Se detalla el siguiente ejemplo:
vectorOrigen = [20, 41, 6, 18, 23]
vectorDestino = [0 for i in range(10)]
...
vectorDestino = vectorOrigen.copy()
...
Página 9 de 9