miércoles, 29 de mayo de 2013
Unidad 5, Arreglos
INTRODUCCION
Un arreglo es una colección de datos (cada uno de los cuales
es del mismo tipo). Cada pieza del arreglo se llama elemento. Para acceder a un
elemento de un arreglo, utiliza el operador de corchetes ( [] ) y un índice
entero que indica la ubicación del elemento en el arreglo.
5 – ARREGLOS
Un arreglo es una colección de datos del mismo tipo, que se
almacenan en posiciones consecutivas de memoria y reciben un nombre común. Un
arreglo puede tener una colección finita, homogénea y ordenada de elementos.
Finita: Todo arreglo tiene un límite; es decir, debe determinarse cuál será el
número máximo de elementos que podrán formar parte del arreglo. Homogénea:
Todos los elementos del arreglo deben ser del mismo tipo. Ordenada: Se puede
determinar cuál es el primer elemento, el segundo, el tercero,.... y el n-ésimo
el elemento.
·
Los componentes:
Hacen referencia a los elementos que forman el arreglo, es decir, a los valores
que se almacenan en cada una de las casillas del mismo.
·
Los índices:
Permiten hacer referencia a los componentes del arreglo en forma individual,
especifican cuántos elementos tendrá el arreglo y además, de qué modo podrán
accesarse esos componentes. Existen tres formas de indexar los elementos de una
matriz:
1.
Indexación
base-cero (0): En este modo el primer elemento del vector será la
componente cero (0) del mismo, es decir, tendrá el índice '0'. En consecuencia,
si el vector tiene 'n' componentes la última tendrá como índice el valor n-1.
2.
Indexación base-uno (1): En esta forma de
indexación, el primer elemento de la matriz tiene el índice '1' y el último
tiene el índice 'n' (para una matriz de 'n' componentes).
3.
Indexación base-n (n): Este es un modo
versátil de indexación en la que el índice del primer elemento puede ser
elegido libremente, en algunos lenguajes de programación se permite que los
índices puedan ser negativos e incluso de cualquier tipo escalar (también
cadenas de caracteres).
Las operaciones que se pueden llegar a realizar con vectores o arreglos durante el proceso de resolución de un problema son las siguientes:
·
Lectura (llenar el vector): El proceso de
lectura de un arreglo consiste en leer y asignar un valor a cada uno de sus
elementos. Normalmente se realizan con estructuras repetitivas, aunque pueden
usarse estructuras selectivas.
·
Escritura (mostrar el vector): Es similar al
caso de lectura, sólo que en vez de leer el componente del arreglo, lo
escribimos.
·
Asignación (dar valor a una posición
específica): No es posible asignar directamente un valor a todo el arreglo;
sino que se debe asignar el valor deseado en cada componente. Con una
estructura repetitiva se puede asignar un valor a todos los elementos del
vector.
·
Actualización
(dar valor a una posición específica): Incluye añadir (insertar), borrar o
modificar algunos de los ya existentes. Se debe tener en cuenta si el arreglo
está o no ordenado. Añadir datos a un vector consiste en agregar un nuevo
elemento al final del vector, siempre que haya espacio en memoria.
·
Recorrido (acceso
secuencial): El acceso a los elementos de un vector puede ser para leer
en él o para escribir (visualizar su contenido). Recorrido del vector es la
acción de efectuar una acción general sobre todos los elementos de ese vector.
·
Ordenación
·
Búsqueda.
5.1 INICIALIZACIÓN Y GENERACIÓN DE ARREGLOS
Un arreglo o tabla es una colección de datos del mismo tipo;
estos datos se denominan elementos del arreglo.
Un arreglo es un espacio de memoria en la computadora que
tiene nombre, al igual que una variable, pero a diferencia de una variable que
solo puede guardar un dato, el arreglo está constituido por celdas donde
podemos guardar datos del mismo tipo.
Al igual que otras variables, los arreglos se pueden
inicializar al momento de declararse. Para hacer eso, es necesario enlistar los
valores de cada uno de los elementos del arreglo entre llaves y separados por
comas. Ejemplo:
Int b [3] = {2, 12, 1};
En casos como éste, cuando se escriben cada uno de los
valores de los elementos del arreglo, algunos compiladores permiten omitir el
tamaño del arreglo en la Declaración. Por ello, la declaración:
Int b [ ] = {2, 12, 1};
Sería equivalente a la anterior.
Antes de poder ser utilizado un arreglo para guardar datos,
es necesario declararlo para que el compilador reserve el espacio solicitado.
En la declaración del arreglo debe especificar las tres características de todo
arreglo: tipo de dato, nombre y tamaño.
sintaxis: Tipo Nombre
[Tamaño];
Ejemplo:
In A [5]; //corresponde al arreglo en la representación
gráfica.
El error más común en el manejo de arreglos es el tratar de
usar un elemento del arreglo que no existe. Este error sólo es detectado por
algunos de los compiladores de C++ y se muestra con un mensaje similar a: array
índex out of range.
5.2 ARREGLOS MULTIDIMENSIONALES
Este también es un tipo de dato estructurado, que está
compuesto por n dimensiones. Para hacer referencia a cada componente del
arreglo es necesario utilizar n índices, uno para cada dimensión
Para determinar el número de elementos en este tipo de
arreglos se usan las siguientes fórmulas:
RANGO (Ri) = lsi - (lii + 1)
No. TOTAL DE ELEMENTOS = R1 * R2* R3 * ...* Rn
donde:
i = 1 ... n
n = No. total de dimensiones
Para determinar la dirección de memoria se usa la siguiente
formula:
LOC
A[i1,i2,i3,...,in] = base(A) + [(i1-li1)*R3*R4*Rn + (i2-li2)*R3*R2*... (in
- lin)*Rn]*w
A los arreglos de dos o más dimensiones se denominan también
tablas o matrices, requieren dos índices, uno para el renglón y otro para la
columna se declara así:
Sintaxis:
Tipo Nombre [No. De renglones] [No. De Columnas];
Ejemplo:
Flota ventas [4][3];
La inicializacion de los arreglos de dos dimenciones se hace
de la siguente manera:
float ventas [4] [3] = { { 14.5, 26.7,65.1},
{ 3 1 .4, 1 5. 1
,16.5 },
{ 1 6.3, 1 4.5, 31.74 } };
{ 5.2, 1 .9, 21.6 },
Observe que los valores de cada renglón se ponen entre las
llaves separados por comas, cada renglón separado por coma excepto el ultimo y
todos los renglones entre llaves. La inicialización se puede escribir en un
solo renglón pero se escribe como se muestra para que se vea en forma de
matriz.
5.3 ARREGLOS DE CARACTERES
El uso más común de los arreglos unidimensionales es la
implementación de una cadena (conjunto) de caracteres porque recuerde que en C
no existe este tipo de datos. Por tanto, definimos una cadena en C como un
arreglo de caracteres que al final tiene un carácter nulo ('\0'). Por esta razón
es necesario que al declarar los arreglos estos sean de un carácter más que la
cadena más larga que pueda contener.
Por ejemplo si deseamos crear un cadena que contenga 5
caracteres la declaración debe hacerse como sigue:
Carácter cadena [6] pseudocódigo
char cadena[6]; en
C
Esto es con el fin de dejar el último espacio para el
carácter nulo.
5.4 UTILIZACIÓN DE ARREGLOS
En matlab existen muchas formas de crear arreglos. Una forma útil es la de crear los elementos
del arreglo con una sucesión de números.
Por ejemplo:
>> t = 1:6
t=
1 2 3 4 5 6
También es posible dar la diferencia en el salto de los
números de la sucesión
> > t = 0:0.2:1
t=
0 0,2 0,4 0,8 1
Otra manera de crear arreglos es a través de las siguientes
funciones:
zeros(m, n) crea una matriz mxn de ceros
ones(m, n) crea una matriz mxn de unos
eye(n) crea la matriz identidad nxn
Sea la matriz:
El modo general de referenciarían de los elementos de un
arreglo es: A (f,c), donde f y c son los números de fila y columna
respectivamente. Si uno de estos valores es un ’:’ entonces se asume la
totalidad de los elementos en esa dimensión. En la matriz A anterior si uno
imprime el valor A(3, 4) se mostrará el valor 12, pues 12 es el elemento de la
fila 3 columna 4 del arreglo A. Si se desea utilizar la primera fila completa
de la matriz A entonces puede referen- ciarse como A (1,:). Así por ejemplo si
escribimos en Matlab:
> >A(1,:)
ans =
1 2 3 4
éste responderá imprimiendo la primera fila de A: 1 2 3 4
De la misma forma, para imprimir la columna cuarta, se hace
así:
> >A(:, 4)
ans =
4
8
12
16
Notar que este último entrega los valores como una columna y
no como una fila de elementos (horizontales). En muchos casos Matlab no trabaja
con vectores columna sino con vectores fila y puede ser entonces necesario
transformar este arreglo columna a su equivalente fila. Para esto se usa el
comando reshape. Por ejemplo, para cambiar la columna cuarta (impresa en el
ejemplo anterior) a su correspondiente vector fila (es decir un vector con
elementos 4 8 12 16) se puede usar el siguiente comando:
> >n_vector = reshape( A(:, 4), 1, 4)
n_vector =
4 8 12 16
Como se puede apreciar n_vector es una nueva variable creada
para almacenar la cuarta columna en forma de fila. Notar que en este caso
reshape fue dado 3 argumentos: A(:, 4), 1 y 4. Esto quiere decir, que el vector
columna A(:, 4) sea transformado en un vector de 1 fila y 4 columnas.
Este término se refiere a las operaciones de aritmética
elemento por elemento, un punto (.) antes de un operador indica una operación
de arreglos elementos por elemento por elemento.
Para suma y resta, las operaciones de arreglos y las
operaciones de matrices son iguales.
El símbolo .* denota multiplicación de arreglos elemento por
elemento.
Las expresiones A./B y A. \B dan los cocientes de los
elementos individuales.
El símbolo .^ denota exponenciación elemento por elemento.
ANEXOS
CONCLUSIÓN
En la programación tradicional siempre se manejan dos tipos
de arreglos los arreglos tipo listas, vectores o unidimensionales y los
arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en
ambos casos son variables que permiten almacenar un conjunto de datos del mismo
tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de
estos tipos contiene.
Para concluir en pocas palabras, un arreglo es la mejor
solución a la hora de agrupar distintos datos que sean de un mismo tipo, estos
datos se almacenan en la memoria y reciben un nombre común para todos.
miércoles, 15 de mayo de 2013
Síntesis Unidad 3
Introducción
En este curso de algoritmos y programación, en esta tercera
unidad, hablamos sobre el control de flujo de programas.
Control De Flujo De Un Programa
Las estructuras de control nos permiten:
·
De acuerdo a una condición, ejecutar un grupo de
sentencias.
·
Ejecutar un grupo de sentencias mientras exista
una condición dada.
·
Ejecutar un grupo de sentencias hasta que exista
una condición.
·
Ejecutar un grupo de sentencias un número
determinado de veces.
Las estructuras de control tienen un único punto de entrada
y un único punto de salida. Las clasificamos en secuenciales, selectivas y
repetitivas. Por dichas razones permite que la programación se base en los
principios de la programación estructurada.
Muchas sentencias en el lenguaje C o C++ se basan en una
prueba condicional que determina si una acción de debe de llevar a cabo o no.
En C o C++ cualquier valor distinto a cero es verdadero, hasta los negativos.
El único faso es el cero.
Control Secuencial
Se define como una secuencia finita de acciones hasta llegar
a un resultado. Su ejecución es realizada en el orden en el que se presentan
las instrucciones desde el inicio hasta el fin del programa.
Control Selectivo
La estructura de selección altera la secuencia de un
programa mediante una condición lógica, podemos expresar una condición lógica
como una expresión relacional, donde cada operando puede ser una variable o una
constante.
Sentencia if: Esta estructura evalúa una condición lógica y
da como resultado un valor único, ya sea verdadero o falso. Si la condición
lógica es verdadera ejecuta la secuencia_1 y luego la sentencia_2. Y si es
falsa, sólo se ejecuta la secuencia_2.
Sentencia if-else: Aquí, si la condición lógica es
verdadera, se ejecuta la secuancia_1, y, si es falsa la secuencia_2.
La condición lógica es una expresión que será evaluada como
verdadera o falsa. La expresión puede ser simple o compuesta. Siempre se usa
paréntesis encerrando a la condición a evaluarse, y puede existir un if dentro
de otro.
Sentencia switch: Se utiliza para seleccionar una de varias
alternativas. La usamos cuando la selección se base en el valor de una variable
simple o de una expresión simple llamada selector, y su valor debe de ser
entero.
Control Repetitivo
Corresponden a la ejecución repetida de una secuencia de
sentencias un número determinado de veces, se denomina bucle. Y se llama
interacción al hecho de repetir la ejecución de una secuencia de sentencias.
En el lenguaje C existen 3 tipos:
·
While
·
Do-while
·
For
While, nos permite evaluar una condición lógica y ejecuta el
cuerpo del bucle si es verdadera. Y si es falsa no se ejecuta.
Do – While evalúa la condición lógica después de ejecutar el
cuerpo del bucle do, y lo hará en secuencia repetitiva hasta que la condición
tome un valor falso.
Esta es una instrucción para ejecutar un bloque de
sentencias un número fijo de veces, y se coloca en la cabecera del estatuto. Si
se requiere colocar más de una sentencia se deben de utilizar llaves, siempre
en pares.
Conclusión
Existen tres tipos de estructuras de control de flujo de un
programa:
®
Control Secuencial: Se define como una secuencia
finita de acciones hasta llegar a un resultado. Su ejecución es realizada en el
orden en el que se presentan las instrucciones desde el inicio hasta el fin del
programa.
®
Control Selectivo: La estructura de selección
altera la secuencia de un programa mediante una condición lógica, podemos
expresar una condición lógica como una expresión relacional, donde cada
operando puede ser una variable o una constante.
®
Control Repetitivo: Corresponden a la ejecución
repetida de una secuencia de sentencias un número determinado de veces, se
denomina bucle. Y se llama interacción al hecho de repetir la ejecución de una
secuencia de sentencias.
Suscribirse a:
Entradas (Atom)