Está en la página 1de 11

Vector En programacin, una matriz o vector (llamados en ingls arrays) es una zona de almacenamiento continuo, que contiene una

serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lgico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensin, la dimensin principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las ms fciles de imaginar son los de una, dos y tres dimensiones. Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sera ms adecuado utilizar una lista, ya que esta estructura puede cambiar de tamao fcilmente durante la ejecucin de un programa.

Vectores dinmicos y estticos Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del lenguaje de programacin un vector podra tener una cantidad variable de datos. En este caso, se les denomina vectores dinmicos, en oposicin, a los vectores con una cantidad fija de memoria asignada se los denomina vectores estticos. El uso de vectores dinmicos requiere realizar una apropiada gestin de memoria dinmica. Un uso incorrecto de los vectores dinmicos, o mejor dicho, una mala gestin de la memoria dinmica, puede conducir a una fuga de memoria. Al utilizar vectores dinmicos siempre habr que liberar la memoria utilizada cuando sta ya no se vaya a seguir utilizando. Lenguajes ms modernos y de ms alto nivel, cuentan con un mecanismo denominado recolector de basura (como es el caso de Java) que permiten que el programa decida si debe liberar el espacio basndose en si se va a utilizar en el futuro o no un determinado objeto. Ejemplos en C Declaracin en C/C++ de un vector esttico. int main(void) {

int i, v[5]; // v[5] es un vector de 5 componentes for(i=0; i<5; i++) { v[i] = 0; // Asignamos un valor printf("%d\n", v[i]); printf("\n"); // Crea una nueva lnea } return 0 }

Declaracin en C/C++ de un vector esttico utilizando aritmtica de punteros.

Siendo el identificador del vector, un puntero constante que contiene la direccin del comienzo del vector (vector[0], primer elemento) int main(void) { int i, v[5]; // v[5] es un vector de 5 componentes for(i=0; i<5; i++) { *(v + i) = 0; // Asignamos un valor en la direccin (vector + ((ndice * sizeof (int) cantidad de bytes de desplazamiento desde la base.) printf("%d\n", *(vector + i)); printf("\n"); // Crea una nueva lnea } return 0 } Declaracin en C++ de un vector de STL: #include <vector> vector<int> v; // Si no se especifica el tamao inicial es 0 for(int i=0 ;i<5 ;i++) { v.push_back(2*i); // inserta un elemento al final del vector } El ejemplo anterior est hecho para el lenguaje C++. En C, para crear vectores dinmicos se tendran que utilizar las instrucciones malloc y realloc para reservar memoria de forma dinmica (ver biblioteca stdlib.h), y la funcin free para liberar la memoria utilizada.

Resultado: 0 1 2 3 4

0 2 4 6 8 El resultado de los dos ejemplos es el mismo vector

REDIM PRESERVE slo permite cambiar el subndice ms a la derecha Resumen Cuando se utiliza la instruccin REDIM PRESERVE redimensionar una matriz multidimensional en Microsoft Visual Basic para MS-DOS, versin 1.0; Centro bsico profesional desarrollo sistema (PDS) de Microsoft, para MS-DOS, versin 7.1, slo se permite cambiar el valor del ltimo subndice (o el valor de la primera si subndice invocar BC.EXE con la opcin/r), o se obtendr el mensaje de error "Subndice fuera del intervalo". Ms informacin La instruccin REDIM PRESERVE permite cambiar las dimensiones de una matriz en la memoria. Dado que es la opcin predeterminada en Basic almacenar matrices en orden de importancia de la columna, cambiar cualquier dimensin que no sea el subndice ms a la derecha en una matriz multidimensional produce una reestructuracin de esa matriz. Porque simplemente REDIM PRESERVE trunca la matriz en la memoria o extiende si se utiliza una dimensin mayor, no es posible una reestructuracin fsica de la matriz. Arreglos de discos se almacenan en la memoria como sigue: |0,0| |1,0| |2,0| |0,1| |1,1| |2,1| and so on.... --- --- --- --- --- --En el ejemplo anterior, cambiando el subndice izquierdo ocasionar una reordenacin de la matriz, mientras que cambiar el subndice derecho a agregar o eliminar datos nuevos al final de la matriz. Puede cambiar el subndice ms a la izquierda de la matriz si compila un programa con la opcin /R de continuidad del negocio, lo que hace a tienda bsica todos sus arreglos de discos en orden de importancia de filas. Tenga en cuenta que con PDS bsica para MSDOS, versin 7.1, puede compilar con/r. C. y /ZI (para obtener informacin de CodeView) si desea depurar un programa principal de fila en el depurador CodeView VC.EXE (como sustituto del QBX.Entorno de depuracin EXE). Tenga en cuenta que no se puede utilizar el modificador /R en VBDOS.EXE o QBX.EXE; por lo tanto, VBDOS.EXE o QBX.EXE slo puede almacenar matrices en orden de importancia de la columna.

Public: Una variable/funcin pblica puede ser accedida desde fuera de la clase. Es decir, puedo acceder desde la instancia de la clase y no slo desde el cdigo interno de la clase. Ejemplo de funciones pblicas son los mtodos de una clase. Tambin es posible crear variables pblicas, para que puedan ser manejadas desde la instancia, pero no es algo comn o recomendable, entre otras cosas porque deja un hueco de seguridad en la clase, acabando con la idea de la encapsulacin. Para declarar una variable/funcin como pblica, se le antepone la palabra clave public.

Arreglos Las estructuras de datos que hemos visto hasta ahora (listas, tuplas, diccionarios, conjuntos) permiten manipular datos de manera muy flexible. Combinndolas y anidndolas, es posible organizar informacin de manera estructurada para representar sistemas del mundo real. En muchas aplicaciones de Ingeniera, por otra parte, ms importante que la organizacin de los datos es la capacidad de hacer muchas operaciones a la vez sobre grandes conjuntos de datos numricos de manera eficiente. Algunos ejemplos de problemas que requieren manipular grandes secuencias de nmeros son: la prediccin del clima, la construccin de edificios, y el anlisis de indicadores financieros entre muchos otros. La estructura de datos que sirve para almacenar estas grandes secuencias de nmeros (generalmente de tipo float) es el arreglo. Los arreglos tienen algunas similitudes con las listas:

los elementos tienen un orden y se pueden acceder mediante su posicin, los elementos se pueden recorrer usando un ciclo for.

Sin embargo, tambin tienen algunas restricciones:


todos los elementos del arreglo deben tener el mismo tipo, en general, el tamao del arreglo es fijo (no van creciendo dinmicamente como las listas), se ocupan principalmente para almacenar datos numricos.

A la vez, los arreglos tienen muchas ventajas por sobre las listas, que iremos descubriendo a medida que avancemos en la materia. Los arreglos son los equivalentes en programacin de las matrices y vectores de las matemticas. Precisamente, una gran motivacin para usar arreglos es que hay mucha teora detrs de ellos que puede ser usada en el diseo de algoritmos para resolver problemas verdaderamente interesantes. Crear arreglos El mdulo que provee las estructuras de datos y las funciones para trabajar con arreglos se llama NumPy, y no viene includo con Python, por lo que hay que instalarlo por separado. Descargue el instalador apropiado para su versin de Python desde la pgina de descargas de NumPy. Para ver qu versin de Python tiene instalada, vea la primera lnea que aparece al abrir una consola. Para usar las funciones provistas por NumPy, debemos importarlas al principio del programa: from numpy import array Como estaremos usando frecuentemente muchas funciones de este mdulo, conviene importarlas todas de una vez usando la siguiente sentencia: from numpy import * (Si no recuerda cmo usar el import, puede repasar la materia sobre mdulos). El tipo de datos de los arreglos se llama array. Para crear un arreglo nuevo, se puede usar la funcin arraypasndole como parmetro la lista de valores que deseamos agregar al arreglo: >>> a = array([6, 1, 3, 9, 8]) >>> a array([6, 1, 3, 9, 8]) Todos los elementos del arreglo tienen exactamente el mismo tipo. Para crear un arreglo de nmeros reales, basta con que uno de los valores lo sea: >>> b = array([6.0, 1, 3, 9, 8]) >>> b

array([ 6., 1., 3., 9., 8.]) Otra opcin es convertir el arreglo a otro tipo usando el mtodo astype: >>> a array([6, 1, 3, 9, 8]) >>> a.astype(float) array([ 6., 1., 3., 9., 8.]) >>> a.astype(complex) array([ 6.+0.j, 1.+0.j, 3.+0.j, 9.+0.j, 8.+0.j]) Hay muchas formas de arreglos que aparecen a menudo en la prctica, por lo que existen funciones especiales para crearlos:

zeros(n) crea un arreglo de n ceros; ones(n) crea un arreglo de n unos; arange(a, b, c) crea un arreglo de forma similar a la funcin range, con las diferencias que a, b y cpueden ser reales, y que el resultado es un arreglo y no una lista; linspace(a, b, n) crea un arreglo de n valores equiespaciados entre a y b.

El bucle for o ciclo for es una estructura de control en la que se puede indicar el nmero minimo de iteraciones. Est disponible en casi todos los lenguajes de programacin imperativos. For en pseudolenguaje La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS Y REPETIR, es que puede determinarse al comienzo del bucle cuntas veces se iterar el mismo, lo cual muchas veces puede redundar en una optimizacin del cdigo por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programacin estructurada, y su uso es una evolucin de una sentencia de lenguaje ensamblador que ejecutaba la siguiente lnea o no en funcin del valor de una condicin. El bucle PARA se ha convertido en el bucle ms ampliamente utilizado en la programacin, ya que con la evolucin de los lenguajes la mayora de las condiciones de fin MIENTRAS NoFinDeTabla(tabla) HACER PrximoRegistro(tabla) HacerAlgo(ElementoActual(tabl

FIN MIENTRAS Es lo mismo decir: PARA i := 0 a CantidadRegistros(tabla) - 1, PASO = 1 PrximoRegistro(tabla) HacerAlgo(ElementoActual(tabla)) FIN PARA Otro uso comn es utilizar los bucles PARA para recorrer vectores de dos o ms dimensiones, en cuyo caso se anidan estas iteraciones.

Ejemplo de PARA en pseudocdigo PARA VariableControl := ValorInicial A ValorFinal, PASO = Incremento Cuerpo FIN PARA donde VariableControl, ValorInicial, ValorFinal y Paso son enteros. La(s) instruccin(es) del cuerpo se ejecutar(n) (ValorFinal - ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive. Ejemplo en C++[ int main() { int vector[10], i; for(i = 0; i < 10; i++) { vector[i] = i; } } En la definicin del for, tenemos que la variable de control i se inicializa en un valor 0, luego se entrega la condicin de control que debe ser falsa durante su ejecucin, para completar el ciclo; y por ltimo, tenemos el incrementador en una unidad. Si por ejemplo en la condicin colocamos i < 11, entonces el ciclo for se ejecutar desde [0...10], lo cual, al intentar acceder al elemento vector[10], esto generar error, ya que el vector (por definicin) va desde [0..(n-1)].

Ejemplo anterior escrito en Lexico tarea { los objetos vector[10], i son cantidades variando i desde 0 hasta 9 haga copie i en vector[i] } Bucle Por Cada (For Each) Este bucle es una evolucin del concepto del bucle Para en algunos lenguajes. Se utiliza para recorrer estructuras repetitivas de datos de forma ms simple y gil. El bucle For Each puede describirse genricamente (en pseudolenguaje) de la siguiente manera: POR CADA elemento DE tipo EN conjunto HACER Cuerpo FIN FOR EACH

Elemento: es el nombre de la variable u objeto que toma el elemento iterado en el cuerpo del bucle. Tipo de Dato: es el tipo de variable o la clase a la que pertenece el objeto que se quiere iterar. Conjunto: es la estructura de datos que se quiere iterar. El uso ms tpico es con vectores o -en programacin orientada a objetos- clases del tipo Coleccin. Cuerpo: es lo que se har en cada iteracin, pueden ser una o ms instrucciones. Si bien no se impone una obligacin al respecto, lo ms comn es que en este Cuerpo exista alguna operacin sobre el elemento iterado.

Bucle while El Bucle while o bucle mientras es una estructura de la mayora de los lenguajes de programacin estructurados cuyo propsito es repetir unbloque de cdigo mientras una condicin se mantenga verdadera. Sintaxis La sintaxis en pseudocdigo es la siguiente:

Condicin La condicin ha de ser una sentencia que devuelva un valor booleano, y esta puede ser el valor booleano en s, verdadero(true) si la condicin se cumple, o falso si esta no se cumple(false). Tambin puede contener el nombre de una variable booleana, y el valor de la expresin depender de su contenido. Se debe tener en cuenta que adems de las variables tambin puede haber llamadas a funciones que devuelvan un valor. Sentencias Comparativas La forma ms obvia tal vez, y la ms usada sin duda, son las sentencias comparativas, que usan los operandos igual, diferente, menor o igual, mayor o igual, menor y mayor. En el caso dellenguaje C, se utilizan los siguientes smbolos para representar las comparaciones anteriores: ==, !=, <=, >=, <, >, Particularidades de lenguajes En algunos lenguajes, se pueden utilizar variables no booleanas en la comparacin: Por ejemplo, si la variable vale 0 ser como si la condicin no se cumpliera, y siempre que sea diferente de 0, se considerar que la condicin se cumple. Ejemplo (usando sintaxis de C) #include <stdio.h> int main(){ int tecla = 0; while(tecla == 0){ scanf("%i",&tecla); /* Leemos el numero ingresado */ } } En este ejemplo el programa va a leer la pulsacin de una tecla mientras su valor sea igual a cero, en el momento en el que se pulse una Tecla distinta, se detendr. Ejemplo (usando el lenguaje Lexico)[editar editar cdigo] Genera y muestra los primeros 10 nmeros naturales: tarea { el objeto nmero_natural es una cantidad copie 0 en nmero_natural mientras nmero_natural < 10 haga: { copie nmero_natural + 1 en nmero_natural muestre nmero_natural }

Condicional if La estructura if nos permite ejecutar un bloque de acciones si se cumple una determinada condicin, de lo contrario nos permite ejecutar otro bloque de acciones identificado por la sentencia else, si el resultado de la condicin es distinto de 0, se ejecutarn las acciones del if, de lo contrario las del else:

000 001 002 003 004 005 006 007

<? if($var1 == 12){ echo 'La variable vale 12'; } else { echo 'La variable tiene otro valor'; } ?> Maximizar Seleccionar PHP

La condicin, se escribe entre parntesis a continuacin de la palabra if, y esta formada por operaciones PHP, sobre todo por operaciones lgicas y de comparacin. Hay otra sentencia que usamos a menudo para unir ms de un condicional if, es la sentencia elseif, sta nos permite dar otra condicin por si no se ha cumplido la primera, despus de elseif podemos volver a usar else con normalidad:

000 001 002 003 004 005 006 007 008

<? if($var1 == 12){ echo 'La variable vale 12'; } elseif($var1 == 3){ echo 'La variable vale 3'; } else { echo 'La variable tiene otro valor';

009 } 010 ?> Maximizar Seleccionar PHP

En este caso, si var1 es distinto de 12, evaluar si vale 3, si es as mostrar el segundo mensaje, si no el tercero.