Translate

lunes, 8 de junio de 2015

RECOMENDACIONES PARA LA PROGRAMACIÓN EN MATLAB (SEMANA 14)

BUENAS PRACTICAS DE PROGRAMACIÓN 

Consisten en la aplicación de un conjunto de recomendaciones que están orientadas a mejorar la calidad del software construido y la facilidad con que puede ser intercambiado y compartido por los diferentes programadores.

A continuación, una lista de prácticas que se consideran recomendables al momento de programar:

  •    Escribe tus programas lo más simple y directo posible. Keep it simple.
  •      Si trabajas con un compilador, ajusta sus opciones para que arroje la mayor cantidad de errores y advertencias posibles al compilar, de ese modo, tu aplicación tendrá menores chances de obtener errores aleatorios. En base a lo anterior, revisa cada mensaje para tomar las medidas pertinentes.
  •    Todo programa debe ser previamente comentado, explicando el propósito, funcionamiento completo y el resultado esperado.Dentro de las funciones definidas, establece un espaciado o que resalte la estructura funcional de la aplicación y facilite la lectura al programador al que le corresponda analizar el código. 
  •     Por lo general, se usa un nivel de indentación por cada bloque de código (sentencias condicionales y bucles son consideradas como bloques de código embebido dentro de otro, por lo que se recomienda la indentación), ésta indentación corresponde a una sangría que comúnmente tiene el valor de una tabulación (tecla Tab) o bien tres o cuatro espacios.
  •         Se recomienda usar nombres de variables que permitan saber de forma intuitiva cual es el dato que se almacena en cada variable. Adicionalmente se recomienda nombres compuestos para las variables remplazando en espacio en blanco por el guion bajo. Por ejemplo 
         Se recomienda usar: numero_de_filas=input(‘Entre el número de filas: ’);
                 En lugar de: m=input(‘Entre el número de filas: ’);

  •        Se recomienda usar sangría constante cada vez se abra una instrucción como SI, MIENTRAS, O PARA, esta sangría se debe eliminar cuando la instrucción se cierre. Por ejemplo Se recomienda usar:
             SI a<b
             x=b-a
             FIN(SI)
             En lugar de:
             SI a<b
             x=b-a
             FIN(SI)
  •      Con respecto específicamente a la programación en Matlab se recomienda siempre que sea posible usar las funciones vectoriales en lugar de hacer cálculos escalares repetitivos, Por ejemplo 
         Se recomienda usar: 
         suma=sum(vector) 
                 En lugar de
                suma=0 
                 for i=1:n 
                           suma=suma+vector(i)
                 end
  •      Con respecto específicamente a la programación en Matlab se recomienda siempre que sea posible crear los vectores y matrices a través de las funciones destinadas para este fin, en lugar de añadirles elementos uno por uno a través de los ciclos, Por ejemplo 
         Se recomienda usar: Vector=zeros(1,n)
                 En lugar de 
                  for i=1:n  
                          vector(i)=0  
                  end

APLICACIONES

Cuando se tienen buenas practicas en la realización de programas, se hacen programas de muchísima calidad, con mayor eficiencia y en menor tiempo, haciendo mas  fácil el trabajo del programador.


REFERENCIAS

http://www2.udearroba.co/pluginfile.php/89719/mod_resource/content/0/Modulo_16/recome
https://msdn.microsoft.com/es-es/library/dn151512.aspx
http://librosweb.es › Eventos › deSymfony 2013


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

domingo, 26 de abril de 2015

CICLO PARA (SEMANA 9)

DEFINICIÓN

El CICLO PARA permite la ejecución repetida de un conjunto de acciones. El número de veces que el bloque es ejecutado esta determinado por los valores que puede tomar una variable contadora (de tipo entero), en un rango definido por un límite inferior (inclusive) y un límite superior (inclusive). Después de ejecutar el bloque de acciones en cada iteración, la variable contadora es incrementada en uno (1) automáticamente y en el momento en que la variable sobrepasa el límite superior el ciclo termina.

La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS y repetitivos , es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo que muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programaciòn estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

ESTRUCTURA

PARA id DESDE v_inicial HASTA v_final CON_VARIACION [variable o constante]
Instrucciones
Fin(PARA)

Ejemplo 1
Algoritmo muestra_numeros
Variables:
i: entero
INICIO
PARA i DESDE 1 HASTA 10 CON_VARIACION +1
ESCRIBA(i)
Fin(PARA)
FIN
Fin(muestra_numeros)

Ejemplo 2
Algoritmo muestra_numeros
Variables:
i: entero
INICIO
PARA i DESDE 1 HASTA 10 CON_VARIACION +2
ESCRIBA(i)
Fin(PARA)
FIN
Fin(muestra_numeros)

Ejemplo 3
Algoritmo muestra_numeros
Variables:
i: entero
INICIO
PARA i DESDE 10 HASTA 1 CON_VARIACION -1
ESCRIBA(i)
Fin(PARA)
FIN
Fin(muestra_numeros)

APLICACIÓN

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, por que si se intenta leer un dato inexistente, esto genera un error de programación.


REFERENCIAS

Gran parte de lo que se encuentra aqui escrito fue tomado de la clase de algoritmos y programacion dictada por la universidad de Antioquia
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_4.html
http://es.wikipedia.org/wiki/Bucle_for