Friday, June 12, 2015

Buenas practicas

Por buenas practicas se entiende un conjunto coherente de acciones que han rendido excelente servicio en un determinado contexto y que se espera, que en contextos similares, rindan similares resultados
Pero, por que surge la necesidad de buenas practicas en programacion


  • Establece reglas y convenios
  • Aporta higiene al codigo
  • Estandariza el desarrollo
  • Facil lectura=Facil mantenimiento
  • Facilita la escalabilidad del codigo
  • Facilita la reutilizacion y reintegracion de manera homogenea





Cibergrafia

http://es.slideshare.net/ikercanarias/buenas-prcticas-para-la-construccin-de-software
http://image.slidesharecdn.com/buenasprcticas-120207123334-phpapp02/95/buenas-prcticas-para-la-construccin-de-software-7-728.jpg?cb=1350049979

GRAFICOS EN MATLAB

Otra de las grandes ventajas del lenguaje de programación Matlab, es la facilidad que ofrece para crear gráficos matemáticos, tanto en 2 como en 3 dimensiones.
Obviamente esta funcionalidad esta apoyada en la gestión de vectores y matrices que son el fuerte de este lenguaje de programación

 Funciones de la forma y = f(x)
 Para hacer gr´aficas de funciones de una variable con MatLab, primero tenemos que crear una tabla de valores de la variable para despu´es dibujar la funci´on.

Por ejemplo, queremos dibujar la gr´afica de la funci´on y = sen(x):
 Primero creamos una tabla de valores para x
 >>x=0:pi/100:2*pi;
 Con este comando hemos formado una tabla (el vector x) con 200 valores entre 0 y 2 ∗ π.
 Otra forma de conseguir el mismo resultado ser´ıa utilizar el comando
>>x=linspace(0,2*pi,200);

Ahora calculamos los valores de y
>> y = sin(x);


 . Gr´afica de y = sen(x). >>plot(x,y)

 Realmente lo que hemos hecho es dibujar 200 puntos de la funci´on en el intervalo [0, 2π], y posteriormente el programa los ha unido mediante segmentos. Si el numero ´ de puntos es lo suficientemente grande, como en este caso, no se aprecian los v´ertices. Veamos un ejemplo algo m´as complicado. Queremos dibujar ahora la gr´afica de la funci´on y = xe−x 2 . Definimos los valores para los que queremos hacer la gr´afica >>x=-3:.01:3; Es decir, que vamos a dibujar la gr´afica en el intervalo [−3, 3] con un paso de longitud 0.01.



Cibergrafia

http://www.mat.ucm.es/~rrdelrio/documentos/rrrescorial2002.pdf

MATRICES

Se denomina matriz a todo conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.
Matriz

Elemento de una matriz

Cada uno de los números de que consta la matriz se denomina elemento.
Un elemento se distingue de otro por la posición que ocupa, es decir, la fila y la columna a la que pertenece.

Dimensión de una matriz

El número de filas y columnas de una matriz se denomina dimensión de una matriz. Así, una matriz de dimensiónmxn es una matriz que tiene m filas y n columnas.
De este modo, una matriz puede ser de dimensión: 2x4 (2 filas y 4 columnas), 3x2 (3 filas y 2 columnas), 2x5 (2 filas y 5 columnas),...
Sí la matriz tiene el mismo número de filas que de columnas, se dice que es de orden: 2, 3, 4, ...
El conjunto de matrices de m filas y n columnas se denota por Amxn o (aij).
Un elemento cualquiera de la misma, que se encuentra en la fila i y en la columna j, se denota por aij.
En MatLab
Para introducir una matriz en Matlab se procede de la forma siguiente. 
Si por ejemplo tenemos la matriz 
A = 1 2 3 4 5 6 7 8  
se introduce como: 
>>A=[1 2 3 4; 5 6 7 8] 
A = 1 2 3 4 5 6 7 8 
O bien, 
>>A=[1,2,3,4;5,6,7,8]; 
Observemos que unas matrices especiales son los vectores, de esta forma,
 el vector fila 
v = (1.0, 1.1,1.2,1.3, . . . , 1.9,2.0), 
se escribe en Matlab como 
>>v=[1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0] 
2. Operaciones y comandos para Matrices 
Hemos visto c´omo se introducen las matrices en Matlab. 
Veamos un ejemplo para introducir algunos de los comandos b´asicos:
 Ejemplo 1 
Operaciones Elementales 
Definimos dos matrices: 
>>A=[2 1;3 2] 
A = 2 1 3 2 
>>B=[3 4;-1 5] 
B = 3 4 -1 5 
• Para sumar las dos matrices: 
>>A+B 
ans = 5 5 2 7 
• Para multiplicar una matriz por un escalar: 
8 >>3*A 
ans = 6 3 9 6 
• Producto de matrices: 
>>C=A*B C = 5 13 7 22 
Siempre que los tama˜nos de las matrices sean los adecuados. Para saber cu´al es el tama˜no de una matriz con la que estamos trabajando, 
>>size(A) 
ans = 2 2 
Que quiere decir, evidentemente, 2 filas y 2 columnas.
 • Para calcular la matriz transpuesta: 
>>A’ 
ans = 2 3 1 2 
Cibergrafia
http://www.vitutor.com/algebra/matrices/matrices.html
http://www.mat.ucm.es/~rrdelrio/documentos/practica3_200506.pdf

VECTORES

En física, un vector (también llamado vector euclidiano o vector geométrico) es una magnitud física definida por un punto del espacio donde se mide dicha magnitud, además de un módulo (o longitud), su dirección (u orientación) y su sentido (que distingue el origen del extremo).1 2 3
En Matemáticas se define un vector como un elemento de un espacio vectorial. Esta noción es más abstracta y para muchos espacios vectoriales no es posible representar sus vectores mediante el módulo, la longitud y la orientación. En particular los espacios de dimensión infinita sin producto escalar no son representables de ese modo. Los vectores en un espacio euclídeo se pueden representar geométricamente como segmentos de recta dirigidos («flechas») en el plano \R^2 o en el espacio \R^3.
Algunos ejemplos de magnitudes físicas que son magnitudes vectoriales: la velocidad con que se desplaza un móvil, ya que no queda definida tan sólo por su módulo (lo que marca el velocímetro, en el caso de un automóvil), sino que se requiere indicar la dirección y el sentido (hacia donde se dirige); la fuerza que actúa sobre un objeto, ya que su efecto depende, además de su intensidad o módulo, de la dirección en la que actúa; también, el desplazamiento de un objeto.
Vectores y MATLAB 
Esta y todas las dem´as pr´acticas est´an pensadas para ser trabajadas delante de un ordenador con MATLAB instalado, y no para ser le´ıdas como una novela. En vez de eso, cada vez que se presente un comando de MATLAB, se debe introducir el comando, pulsar la tecla “Enter” para ejecutarlo y ver el resultado. M´as a´un, se desea que se verifique el resultado. Aseg´urese de que se comprende perfectamente lo que se obtiene antes de continuar con la lectura.
 Aunque MATLAB es un entorno que trabaja con matrices, en esta pr´actica se aprender´a c´omo introducir vectores por filas o por columnas y a manejar algunas operaciones con vectores. Prerrequisitos: ninguno. 
1. Vectores fila
 La introducci´on de vectores fila en MATLAB es muy f´acil. Introd´uzcase el siguiente comando en la pantalla de MATLAB 1 >> v=[1 2 3] Hay una serie de ideas a destacar en este comando. Para introducir un vector, se escribe una apertura de corchete, los elementos del vector separados por espacios y un cierre de corchete. Se pueden usar tambi´en comas para delimitar las componentes del vector
 >> v=[1,2,3]
 El signo = es el operador de asignaci´on de MATLAB. Se usa este operador para asignar valores a variables.
 Para comprobar que el vector fila [1,2,3] ha sido asignado a la variable v introd´uzcase el siguiente comando en el indicador de MATLAB. 1
El s´ımbolo >> es el indicador de MATLAB. Se debe introducir lo que aparece tras el indicador. Entonces se pulsa la tecla “Enter” para ejecutar el comando. 333
 >> v 1.1. Rangos.
 Algunas veces es necesario introducir un vector con componentes a intervalos regulares. Esto se realiza f´acilmente con MATLAB con la estructura
 inicio:
incremento:
fin.
 Si no se proporciona un incremento, MATLAB asume que es 1.
 >> x1=0:10 
Se puede seleccionar el propio incremento. 
>> x2=0:2:10 Se puede ir incluso hacia atr´as.
 >> x3=10:-2:1 O se le puede echar imaginaci´on.
 >> x4=0:pi/2:2*pi Hay veces, sobre todo cuando hay que pintar funciones, que se precisan un gran n´umero de componentes en un vector. >> x=0:.1:10 1.2. Elimina la salida. Se puede suprimir la salida de un comando de MATLAB a˜nadiendo un punto y coma. >> x=0:.1:10; Es muy ´util cuando la salida es muy grande y no se desea verla.

Cibergrafia

http://es.wikipedia.org/wiki/Vector
http://matematicas.unex.es/~sancho/Asignatura.%20Algebra%20y%20Geometria/practicas/practica1/practica1.pdf

SUBPROGRAMAS

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

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 esta categoría 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, sin embargo no son del alcance de este curso en cuanto a
su aplicación en Matlab, ya que este lenguaje ya incluye un gran número de subprogramas pre
construidos.

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 no lo el subprograma hace, pero no como lo hace. Los
subprogramas de esta categoría son abordados en este curso principalmente a través del gran
conjunto de subprogramas pre construidos que provee el lenguaje de programación Matlab.

El lenguaje de programación Matlab cuenta con amplio conjunto de subprogramas pre construido,
no obstante normalmente se les conoce como funciones en lugar de subprogramas y la
descripción exacta de cada uno puede encontrase accediendo a la ayuda de Matlab y
seleccionando la opción “Functionlist”.

Con el fin de asegurar que utilice correctamente las funciones que provee Matlab, cuando
consulte la ayuda de este programa, asegúrese de que usted pueda responder para cada función
consultada las siguientes preguntas:

¿Qué hace la función?
¿Qué es exactamente cada uno de los parámetros que se le deben entregar?
¿Cuál es el resultado que produce?

Si después de leer la ayuda aun no puede responder con total seguridad estas preguntas, puede
apoyarse haciendo una búsqueda en internet usando como termino de búsqueda el nombre de la
función y la palabra “Matlab”. Preste especial atención a los ejemplos que puede encontrar al
realizar dicha búsqueda.

Cibergrafia

http://platea.pntic.mec.es/vgonzale/cyr_0204/ctrl_rob/flowol/subprog.htm

CICLOS PARA

CICLO PARA
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.
El valor final de la variable contadora depende mucho del lenguaje de programación utilizado, por lo tanto, no es recomendable diseñar algoritmos que utilicen el valor de la variable contadora de un ciclo para, después de ejecutar el mismo. De la definición de ciclo para se puede inferir que el bloque de acciones no se ejecuta alguna vez si el límite inferior es mayor al límite superior y que si el límite superior es mayor o igual al límite superior, el número de veces que el conjunto de acciones se ejecutará es igual a uno más el límite superior menos el límite inferior. La forma general del ciclo para es la siguiente:

para (variable) := <lim inf> hasta (lim sup) hacer 
        <bloque de instrucciones>
fin_para
Donde <variable> es la variable contadora del ciclo, la cual debe ser de tipo entero, <lim inf >es el valor inicial que toma la variable contadora, <lim sup> es el valor final que puede tomar la variable contadora y <bloque>es el bloque de acciones que es ejecutado en cada iteración, mientras la variable contadora no sobrepase el límite superior. En cada iteración, después de ejecutar el bloque, la variable contadora es incrementada (1).

EJEMPLOS.

Ejemplo 1. Calcular las primeras tres filas de la tabla de multiplicar de un número dado.
DIALOGO:
Objetos Conocidos
Un número.

Objetos Desconocidos
Tres números.

Condiciones
Los  números buscados son el resultado de multiplicar un número conocido, por los números entre uno y tres.
ESPECIFICACIÓN:
Entradas
 Enteros ( n es el número dado).

Salidas
a1, a2, a3  Enteros, (ai es el i-esimo múltiplo del número dado).

Condiciones
ai = n * i para 1  i  3
DISEÑO:
Primera Iteración:
Leer el número a calcularle la tabla de multiplicar
Para los números entre uno y tres calcular el múltiplo del número
Iteración Final:

n: enteroa: entero i: entero
escribir(“Ingrese el número a calcularle la tabla de multiplicar:”
leer)
para (i :=1 hasta 10hacer
:= n * i 
escribir
(n)
escribir(“*”)
escribir( i)escribir( “=”)
escribir( a)escribir(cambioLinea)
fin_para 
escribir(“Termino...”)
PRUEBA DE ESCRITORIO:

LINEA
n
I
A
ENTRADA
SALIDA
4
    Ingrese el número a calcularle la tabla de multiplicar:
5
3
  
3
 
6
 
1
   
 Como es la primera vez que llega a esta línea, se asigna en la variable contadora el límite inferior. Ahora se comprueba si la variable contadora es menor o igual al límite superior. En este caso es cierto entonces se ejecuta el bloque de acciones del ciclo para, es decir, se pasa a la línea    
7
  
3
  
8
    
3 * 1 = 3
9
 
2
   
 Se incrementa la variable contadora y se vuelve a la línea de inicio del ciclo para, es decir, línea 6.    
6
Se comprueba si la variable contadora es menor o igual al límite superior. En este caso es cierto entonces se ejecuta el bloque de acciones del ciclo para, es decir, se pasa a la línea 7.    
7
  
6
  
8
    
3 * 2 = 6
9
 
3
   
 Se incrementa la variable contadora y se vuelve a la línea de inicio del ciclo para, es decir, línea 6.    
6
La variable contadora es menor que el límite superior se pasa a la línea 7    
7
  
9
  
8
    
3 * 3 = 9
9
 
4
   
 Se incrementa la variable contadora y se vuelve a la línea de inicio del ciclo para, es decir, línea 6.    
6
La variable contadora no es menor que el límite superior se pasa a la línea siguiente alfin_para, es decir, a la línea 10.    
10
    
Termino...

Cibergrafia

http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_4.html

CICLOS ANIDADOS

Al igual que las instrucciones alternativas, las instrucciones repetitivas también se pueden anidar, permitiendo las siguientes combinaciones de anidamiento:

  •  mientras en mientras 
  •  mientras en hacer...mientras
  •  mientras en Para
  •  hacer...mientras en hacer...mientras
  •  hacer...mientras en Para
  •  hacer...mientras en mientras
  •  Para en Para 
  •  Para en mientras 
  •  Para en hacer...mientras




Ejemplo

Se quiere diseñar el algoritmo que muestre por pantalla la tabla de multiplicar de un número entero introducido por el usuario. El proceso debe repetirse mientras que el usuario lo desee:

Nombre del algoritmo: Tabla_de_multiplicar_de_un_número 
Variables: número,i Tipo entero
        seguir Tipo caracter 
inicio 
     hacer 
     escribir( "Introduzca un número entero: " ) 
     leer( número ) 
     escribir( "La tabla de multiplicar del ", número, " es: " ) 
     /* Inicio del anidamiento */ 
      para i ← 1 hasta 10 incremento 1 hacer 
      escribir( número, " * ", i, " = ", i * número )
      fin_para
      /* Fin del anidamiento */
       escribir( "¿Desea ver otra tabla (s/n)?: " )
        leer( seguir ) mientras ( seguir <> 'n' )
 fin

Cibergrafia

http://www.cs.buap.mx/~mtovar/doc/CiclosAn.pdf

CICLO MIENTRAS

Cuando se avanza un poco en el conocimiento de las estructuras de programacion, se empieza a necesitar de herramientas que nos faciliten ciertos procesos repetitivos que se generan al momento de desarrollar ideas de programacion. Una de estas herramientas es el llamado CICLO MIENTRAS.

 CICLO MIENTRAS

El CICLO MIENTRAS ejecuta un bloque de acciones ‘mientras’ que una condición dada se cumpla, es decir, cuando la condición evalúa a verdadero. La condición es evaluada antes de ejecutar el bloque de acciones y si la condición no se cumple, el bloque no se ejecuta. De esta manera es que el número de repeticiones del bloque de acciones sea cero, pues, si la condición la primera vez evalúa a falso, el bloque no será ejecutado alguna vez. La forma general del ciclo mientras es la siguiente:


  mientras (condición) hacer
       <bloque de instrucciones>
  fin_mientras
Donde, (condición) es la condición que determina si el bloque de acciones<bloque>es ejecutado o no. Si la condición evalúa a verdadero el bloque es ejecutado y si evalúa a falso no es ejecutado. Después de ejecutar el bloque de acciones se vuelve a evaluar la condición.

El ciclo mientras en MatLab

La sentencia while (mientras que) se usa para que MATLAB repita un bloque de instrucciones mientras que se cumpla una condición dada, la cual es evaluada cada que se termina la ultima instrucción del bloque.

 En MATLAB, la forma general de representar un ciclo es la siguiente: 

 while condicion 
 Bloque de instrucciones que se repiten mientras se cumpla la condición. 
 end

El while en la práctica es usado para realizar procesos que impliquen una secuencia repetitiva de instrucciones

Un ejemplo real puede ser que yo subo una escalera mientras haya escalones para subir, cada que subo un escalón evalúo si hay mas escalones, en el momento que no hayan escalones no subo mas. Es decir paro el ciclo, si lo fuéramos a codificar seria de la siguiente manera:

while (haya escalones)
 subir un escalón
end

Otro ejemplo de la aplicacion del mientras en MatLab es:

Crear un programa en MATLAB que imprima los números desde cero hasta un numero ingresado por el usuario. En este ejemplo debemos tener en cuenta ¿que instrucción debe repetirse?, esta es, imprimir un numero, ahora debemos conocer ¿hasta cuando se realiza la condición?, para nuestro caso es hasta que MATLAB llegue hasta el numero ingresado por el usuario. También debemos saber ¿en donde comenzaremos?, el problema nos dice que en cero.

Como nos dicen que imprimir los números desde cero hasta un numero ingresado por el usuario, entenderemos que el ciclo se incrementa de uno en uno. La solución queda de la siguiente forma:

n=input(‘Ingrese un número mayor que cero: ’);
 i=0; % esto porque el problema nos dice que comencemos en cero. Variable contadora
 while(i<=n) % esta es la condición que debe cumplirse para continuar el ciclo
 disp(i); % instrucción 1
i=i+1; % instrucción 2, conocida como incremento del contador
end

Cibergrafia

http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo3/cap_04/leccion_1.html
http://www.utp.edu.co/~jaal/clases/informaticaT2/clase13.pdf