Translate

domingo, 24 de mayo de 2015

MATRICES EN PROGRAMACIÓN (SEMANA 13)

DEFINICIÓN

Una matriz es una estructura de datos, o más técnicamente, un espacio de memoria que permite almacenar una colección de elementos, todos del mismo tipo. La diferencia con los arreglos está en que, en las matrices, los elementos no están organizados linealmente sino que su organización es bidimensional, es decir, en filas y columnas. Conviene imaginar una matriz como una organización de celdas de memoria, o casillas, en cada una de las cuales se puede guardar un elemento de la colección. 

La numeración de las filas y las columnas determina que cada una de las casillas de una matriz tiene asociados dos números que la identifican de manera única. A estos números se les llama índice de fila e índice de columna, respectivamente. 

En Matlab se da el comando notas=[5 3 1; 4 4 2; 3 5 5]; El acceso a los componentes de una matriz En Matlab, cada vez que se quiere hacer referencia un componente particular de una matriz vasta con dar su nombre y el índice correspondiente entre paréntesis. Por ejemplo para acceder directamente fila 2 columna 3 de la matriz notas, vasta con dar el comando notas(2,3) El acceso a todos los componentes de una matriz Para acceder a todos los componentes de una matriz solo vasta con utilizar una variable que sirva como índice sobre las filas cuyo valor cambie entre 1 y el número total de filas, y usar una variable que sirva como índice de las comunas, cuyo valor cambie entre 1 el numero de columnas. Para esto nos valemos dos ciclos para anidados.

for fila=1:3 
          for columna =1:3 
                  notas(fila, columna)=input(‘Ingrese dato: ’); 
         end 
end

En Matlab, del mismo modo que ocurre en los vectores, cuando se verifican condiciones que implican matrices, el resultado de la evaluación corresponde también a una matriz, en el que cada elemento es un 1(verdadero) o 0(falso) dependiendo del resultado de la evolución individual de la condición para cada elemento de la matriz. Por ejemplo, es el siguiente programa de Matlab 
notas=[5 3 1; 4 4 2; 3 5 5]; resultado=notas>=4; disp(resultados).
El resultado mostrado será 

5>=4
3>=4
1>=4
4>=4
4>=4
2>=4
3>=4
5>=4
3>=4

                 =                                                                                                                                                                                                              
1
 0
0
1
 1
0
0
 1
1


APLICACIONES

Las matrices cumplen muchas utilidades en el análisis macroeconomico, para calcular las cantidades de materias primas existentes y todo lo que se necesita para la producción dentro de una empresas ademas para la observación y comparación de dos empresas por parte de quien las administra.
Por otro lado en la ingeniería ambiental permite determinar puntos importantes del impacto ambiental que produciría cualquier tipo de  proyecto dentro de una comunidad. 


REFERENCIAS

https://es.scribd.com/doc/55452393/Lineal
http://www2.udearroba.co/pluginfile.
http://www.bdigital.unal.edu.co/1923/1/32144896.2009.pdf

viernes, 22 de mayo de 2015

MÉTODOS DE ACCESO Y RECORRIDO CON VECTORES (SEMANA 12)

DEFINICIÓN

Un arreglo (matriz o vector) es un conjunto finito y ordenado de elementos homogéneos. La propiedad ordenados significa que el elemento primero, segundo, tercero,…, n-ésimo de un arreglo puede ser identificado. Los elementos de un arreglo son homogéneos, es decir, del mismo tipo de datos (todos, de tipo cadena o enteros, o reales, etc.).

Arreglos unidimensionales: Operaciones con Vectores

Las operaciones que se pueden realizar con vectores durante el proceso de resolución de un problema usando la programación son:
Recorrido (acceso secuencial)
—Lectura/escritura
—Asignación
—Actualización (añadir, borrar insertar)
—Ordenación
—Búsqueda

Se puede acceder a cada elemento de un vector para introducir datos (leer) en él o bien para visualizar su contenido (escribir). A la operación de efectuar una acción general sobre todos los elementos de un vector se le denomina recorrido del vector.Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo i) se utilizan como subíndices del vector (por ejemplo S[i]). El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector.
Normalmente se utiliza la estructura de repetición desde, ya que se conoce de antemano la cantidad de veces que se desea repetir el bucle:
PARA i DESDE 1 HASTA
  ESCRIBA(‘Introduzca el elemento ‘ ,i, ‘del vector F: ’)
  LEA(F[i])
fin_PARA

También se pueden utilizar las estructuras de repetición mientras y repetir:
     i ¬ 1
     MIENTRAS i <= 20 
   ESCRIBA(‘Introduzca el elemento ‘ ,i, ‘del
                         vector F: ’)
  LEA(F[i])
    i ¬ i + 1
     fin_MIENTRAS

EJEMPLO

Se realiza una encuesta en la facultad de ingeniería de la Universidad de Antioquía en la cual se pregunta a cada estudiante en que semestre se encuentra (1-10) y en que programa estudia:

      1. Sistemas                                          6. Telecomicaciones
2. Civil                                                
7. Bioingeniería
3. Ambiental                                        8
. Sanitaria
4. Industrial                                         9. Materiales
5. Electrónica                                     10. Electrica


Se requiere que recojer  esta información y mostrar los porcentajes de distribución por semestre y carrera.

ENTRADA
carreras[10], semestre[10]:entero
carr, sem, bandera, total:entero
SALIDA
porcentaje:real

Algoritmo estudiantes

     variables: 
          carreras[10], semestre[10]:entero
          carr, sem, bandera, total:entero
          porcentaje:real

     INICIO
          PARA i DESDE 1 HASTA 10 CON_VARIACION+1
               carreras[i]=0
               semestre[i]=0
          Fin(PARA)
          bandera=0
          total=0
          MIENTRAS bandera==0
               ESCRIBA ("¿En qué semestre está?")
               LEA (sem)
               ESCRIBA ("¿En qué carrera está?")
               LEA (carr)
               semestre[sem]=semestre[sem]+1
               carreras [carr]=carreras[carr]+1
               total=total+1
               ESCRIBA ("ingrese 0 si desea continuar y otro valor para terminar")
               LEA(bandera)
          Fin(MIENTRAS)
          PARA i DESDE 1 HASTA 10 CON_VARIACION+1
               porcentaje =(semestre [i]/total)*100
               ESCRIBA ("Porcentaje semestre ", i, porcentaje")
               Fin (PARA)
  PARA i DESDE 1 HASTA 10 CON_VARIACION+1
               porcentaje =(carreras [i]/total)*100
               ESCRIBA ("Porcentaje carrera", i, porcentaje")
               Fin (PARA)
     FIN
Fin(estudiantes)


APLICACIONES 

Se aplica en la determinación de la cantidad de individuos de una población, como en los censos municipales. Ademas sirve para la clasificación estadística de estos individuos, como se mostró en el anterior ejemplo. 


REFERENCIAS 

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/colecciones/vector.htm
http://www.unavarra.es/personal/victor_dominguez/LibroMatlabWEB.pdf
http://es.slideshare.net/MonjeOneble/clase-vector


lunes, 11 de mayo de 2015

VECTORES (SEMANA 11)

DEFINICIÓN

En el contexto de algebra lineal se tiene un concepto de vector y las operaciones que se pueden aplicar sobre él. Se puede escribir un vector como la lista de sus componentes ~v = (v1, . . . , vn) o, equivalentemente, como una columna.
En los algoritmos también existe el concepto de vector, el cual al igual que en el caso del algebra lineal facilita bastante al realización de algunos cálculos. Los vectores, en algoritmos, consisten en un grupo de variables del mismo tipo donde cada una esta identificada por la su ubicación en el grupo.

  
U(1)
U(2)
U(3)
...
U(n)
1
2
3
...
n


Los numeros de arriba son los datos almacenados y los de abajo son las posiciones del vector.

Vector [i]--> indice.
Vector [2]= U2.
Esto  esta indicando que el vector en la posición 1  esta guardando a U(1)


CARACTERISTICAS DE LOS VECTORES.

- Homogeneos = Datos del mismo tipo.
- Ordenados = Siempre va en el orden de sus casillas; no se salta ninguna.
- Finito = Tiene un fin.
- Tamaño fijo. 

Note que debajo de cada valor se muestra la posición que ocupa en el vector, a este indicador de posición se le conoce como índice ya que permite identificar variables específicas dentro del grupo que componen el vector.
La expresión U(i) Constituye el identificador de una variable y se refiere a la variable que ocupa la posición i-esima dentro del grupo de variables que conforman el vector U. De otro lado el nombre del vector sin definir ningún índice (U), también constituye un identificador que se refiere al grupo completo de variables que lo conforman. 
Para aclarar este concepto es posible valerse de una analogía: El nombre de un vector a secas (ej. U) se refiere a todas las variables que lo conforman, del mismo modo que el nombre de un conjunto residencial hacer referencia a todos los apartamentos que lo conforman. El nombre de un vector seguido de un índice entre paréntesis (ej. U(2) ) se refiere a una de las variables que conforman el grupo, del mismo modo que el nombre de un conjunto residencial seguido de un número de apartamento hace referencia a una vivienda en particular.

Problema
•Censo en la ciudad de Medellín.
•Mpio: código del municipio
•Dir: dirección
•Np: número de personas vivienda
•Cmed: acumulado censo

Algoritmo censo_en_medellín

Variables:
mpio,cemd,np,bandera: enteros
dir:alfanumérica

INICIO
        cmed=0  
        bandera=0  
        MIENTRAS bandera == 0
               LEA(mpio,dir,np)
               cmed=cmed+np
               LEA(bandera)
         Fin(MIENTRAS)                                                                                                                        ESCRIBA(cmed)
    FIN
Fin(censo_en_medellín)    


APLICACIONES 

Una aplicación muy interesante de los vectores es el tratamiento digital de imágenes.  Una imagen digital (en blanco y negro) se puede representar por un conjunto de vectores (matriz de tamaño nxm), donde cada posición es un entero en el intervalo [0, 255] que contiene la luminancia en ese punto (0 = negro, 255 = blanco).


REFERENCIAS

La mayor parte de lo aquí descrito son apuntes de clase de algoritmos y programación dictado por la Universidad de Antioquia
http://iimyo.forja.rediris.es/iimyo2.pdf
http://www.unavarra.es/personal/victor_dominguez/LibroMatlabWEB.pdf

lunes, 4 de mayo de 2015

SUBPROGRAMAS (SEMANA 10)

DEFINICIÓN 

Los subprogramas son rutinas, procedimientos o conjuntos de instrucciones que realizan una labor específica. Los subprogramas o subrutinas nacieron de la necesidad de no repetir innecesariamente un trabajo ya hecho. Pueden invocarse desde el cuerpo del programa principal cuantas veces se desee. Constituyen el núcleo de lo que se denomina programación estructurada, y permiten la descomposición de un problema complejo en subproblemas más sencillos abordables de forma independiente.





Haciendo una analogía se puede decir que los subprogramas cumplen lo que las funciones matemáticas.Desde las matemáticas el concepto de función es muy común y consiste en un valor dependiente de otro y de algunas operaciones aplicadas a este mismo. 
f(x)= (x+5)/2
f(5)= (5+5)/2
f(5)= 5

La anterior expresión define que una función llamada f, al recibir como insumo un valor x produce un nuevo valor diferente del valor de x, el cual se halla aplicando un procedimiento sobre el insumo -parámetro-x.  Al invocar la expresión se indica que se requiere calcular el valor que toma la función f cuando recibe como insumo un numero, esto implica tomar el insumo -parámetro- y aplicar el procedimiento definido sobre él. De otro lado existe funciones que se usan frecuente y de las cuales generalmente no nos preocupamos del procedimiento que se desarrolla en su interior para convertir los parámetros en resultados, uno de estos casos es la función coseno, para cual  en la mayoría de las ocasiones nos valemos de la calculadora para encontrar su valor.

Del mismo modo que ocurre en las matemáticas existen dos categorías en las cuales se pueden clasificar los subprogramas desde el punto de vista de un programador:
Los subprogramas de los cuales se conocen las instrucciones que aplican: son subprogramas que construye el mismo programador, y por lo tanto él define su nombre, los parámetros que deben recibir, el procedimiento que se aplica sobre estos parámetros y finalmente el resultado que debe producir. 
Los subprogramas de los cuales NO se conocen las instrucciones que aplican: son subprogramas que están a disponibilidad del programador a través de fuentes de externas, como pueden el propio lenguaje de programación que esta utilizando, el cual incluye ya un conjunto de subprogramas pre construidos. En este caso el programador conoce el nombre del subprograma, los parámetros que debe recibir y qué es lo que el subprograma hace, pero no como lo hace. 


APLICACIONES 


Los subprogramas  son muy útiles para abordar problemas de alta complejidad ya que permiten dividir el problema en problemas mas pequeños donde cada uno se soluciona a través de un subprograma.


REFERENCIAS 

La mayoria de lo que esta escrito en este documento son apuntes de clase, dictados por la universidad de Antioquia en el area de algoritmos y programacion.
http://www2.udearroba.co/pluginfile.php/89612/mod_resource/content/2/Modulo
http://platea.pntic.mec.es/vgonzale/cyr_0708/archivos/_15/Tema_3.6.htm