viernes, 29 de abril de 2016

Proyecto Final

Descripción del problema:
A usted lo han contratado para realizar el sistema de la biblioteca “El mejor lector”, allí, le piden que el sistema debe presentar diferentes opciones, tanto para  los usuarios que prestan los libros, como para los bibliotecarios que se encargan del funcionamiento de la biblioteca. A usted le solicitan que el sistema debe pedir un usuario y una contraseña para entrar, y dependiendo de si es bibliotecario o usuario, se le mostraran diferentes menús al ingresar.
El menú del bibliotecario debe poseer principalmente las opciones de inventario de libros y de préstamos a usuarios.  En la opción de inventarios se le debe pedir al bibliotecario el ISBN del libro, y cuando el bibliotecario lo ingrese, debe mostrar el nombre del libro, la cantidad de libros en existencia que tiene la biblioteca, el autor o autores del libro y la cantidad de ejemplares en préstamo. En la opción de préstamos a usuarios, debe mostrar las opciones de regresar ejemplar y de mostrar los ejemplares prestados por un usuario.
El menú del usuario, debe tener las opciones para solicitar el préstamo de un libro, y la opción para ver todos los libros que tiene la biblioteca.

Entregables:
1)      Levantamiento de requerimientos
2)      Prototipos de la aplicación
3)       Modelo de casos de uso
4)       Modelo entidad relación
5)       Modelo relacional
6)      Diagramas de secuencia
7)      Diagrama de clases
8)      Programa completamente funcional en PSEINT

Además de los entregables, debe preparar una presentación de diapositivas para realizar la sustentación del proyecto.

jueves, 14 de abril de 2016

Taller para el lunes 18 de abril

TALLER DE PROGRAMACIÓN 1
Lunes 18 de abril de 2016
1)      Escribir un pseudocódigo que pida 3 notas al usuario, si el promedio de las 3 notas es superior a 3.5 debe mostrar aprobado, en caso contrario debe mostrar reprobado.
2)      Conversión de temperatura
a)       Escriba un pseudocódigo que le pida al usuario la temperatura en grados centígrados y la muestre en grados kelvin.   Formula:  K = °C + 273.15
b)      Escriba un pseudocódigo  que le pida al usuario la temperatura en grados Fahrenheit  y luego la muestre en grados centígrados.                                           Formula: °C = (°F – 32)/ 1,8000
3)      Escribir un pseudocódigo que muestre un menú con las opciones para sumar, restar, multiplicar y dividir. Si se presiona la primera opción se debe pedir por teclado dos números  los cuales se sumarán. Esto mismo se hará para las opciones de restar multiplicar y dividir.
4)      Calcular el IVA:
Escribir un pseudocódigo donde se pida el valor de un producto,  y se muestre por pantalla el valor del producto con el iva aplicado. Valor del iva = 16 %.
5)      Índice de masa corporal (IMC):
a)      Escribir un pseudocódigo donde se pida el peso y la estatura de una persona y muestre el índice de masa corporal de dicha persona.
b)      Modifique el programa anterior, además del peso y la altura, se debe pedir la edad de la persona,  y muestre por pantalla cual es el riesgo de la persona.
Nivel de riesgo:


6)      Años Bisiestos



        ¿Por qué?

Porque la Tierra gira sobre sí misma 365.242375 veces al año pero un año normal tiene 365 días, así que hay que hacer algo para "alcanzar" esos 0.242375 días al año.
Así que cada cuatro años tenemos un día extra (el 29 de febrero), lo que hacen 365.25 días al año. Esto es bastante exacto, pero habrá 1 día de diferencia cada 100 años.
Así que cada 100 años no tenemos año bisiesto, y eso da 365.24 días al año (1 día menos cada 100 años = -0.01 días al año).
¡Todavía no es lo suficientemente exacto! Así que otra regla es que cada 400 años hay un año bisiesto. Con esto son 365.2425 días al año (1 dia recuperado cada 400 años = 0.0025 días al año), lo que está bastante cerca de 365.242375 como para que no importe mucho.
Realizar un pseudocódigo que le pida al usuario un año, y determine si el año es bisiesto o no.
7)      Escribir un pseudocódigo que muestre 150 veces la palabra “Hola Mundo” por pantalla.
8)      Escribir un pseudocódigo que muestre los números del 0 al 99 por pantalla.
9)      Escribir un pseudocódigo que muestre los números de 8 en 8 hasta el 1000
10)   Escribir un pseudocódigo que muestre los números del 1 al 10000 que son múltiplos de  3 y de 7 al mismo tiempo.
11)   Escribir un pseudocódigo que lea un número por teclado, y muestre la tabla de ese número desde el 1 hasta el 100.
12)   Escribir un pseudocódigo que muestre los números impares del 1 al 1000
13)   Realizar un algoritmo que lea un número por teclado. En caso de que ese número sea 0 o menor que 0, se saldrá del programa imprimiendo antes un mensaje de error. Si es mayor que 0, se deberá calcular su cuadrado y la raiz cuadrada del mismo, visualizando el número que ha tecleado el usuario y su resultado (“Del numero X, su potencia es X y su raiz X” ).

14)   Teniendo en cuenta que la clave es “eureka”, escribir un algoritmo que nos pida una clave. Solo tenemos 3 intentos para acertar, si fallamos los 3 intentos nos mostrara un mensaje indicándonos que hemos agotado esos 3 intentos. Si acertamos la clave, deberá mostrar un mensaje que diga “Su clave es correcta” 

martes, 12 de abril de 2016

Taller pruebas de escritorio

Taller programación 1  (Lunes 11 de abril de 2016)
Tema: Pruebas de escritorio
1)
Proceso sin_titulo
                n1 <- 0
                n2 <- 2
                Si n1 < n2 Entonces
                               Escribir n1
                Sino
                               Escribir n2
                FinSi
FinProceso

2)
Proceso sin_titulo
                Leer palabra
                Si palabra = "Hola Mundo" Entonces
                               Escribir "Estas iniciando"
                Sino
                               Si palabra = "Hellow World" Entonces
                                               Escribir "You are starting"
                               Sino
                                               Escribir "Ya has avanzado..."
                               FinSi
                FinSi
FinProceso

3)
Proceso sin_titulo
                Leer num
                Si num % 7 = 0 Entonces
                               Escribir num, " Es multiplo de 7"
                Sino
                               Escribir num, " No es multiplo de 7"
                FinSi
FinProceso



3)
Proceso sin_titulo
                num <- 10
                Si num % 2 = 0 Entonces
                               Si num % 5  = 0
                                               i <- 1
                                               Mientras i <= 20 Hacer
                                                               x <- num + num
                                                               Si i % x = 0 Entonces
                                                                              num <- x / 2
                                                                              num <- num /2
                                                               FinSi                                                    
                                                               i <- i + 1
                                               FinMientras
                                               Si num > 5 Entonces
                                                               Escribir num
                                               Sino
                                                               num <- num * (20 % 2) * 11 * 15 * 2048 / 1028
                                                               Si num >= 15 Entonces
                                                                              Escribir "Has llegado al final"
                                                               Sino
                                                                              Escribir "Has llegado a otro final"
                                                               FinSi
                                               FinSi
                               Sino
                                               num <- num + (10 / 2)
                                               Escribir num
                                               Escribir "Final alterno"
                               FinSi
                Sino
                               Escribir num = 17
                FinSi
FinProceso







4)
Proceso sin_titulo
                Dimension x[10]
                i <- 1
                Mientras i <= 10 Hacer
                               x[i] <- azar(100)
                               Escribir x[i]
                               i <- i + 1
                FinMientras
                //Aqui deben dibujar el vector
                i<-1
                aux <- 0
                Mientras i <= 10
                               j <- 1
                               Mientras j < 10
                                               Si x[j] > x[j+1] Entonces
                                                               aux <- x[j]
                                                               x[j] <- x[j+1]
                                                              x[j+1] <- aux
                                               FinSi
                                                               
                                               j<-j+1
                               FinMientras      
                               i <- i +1
                FinMientras      
               //Aqui deben de volver a dibujar el vector

FinProceso

Nota: Para el ultimo ejercicio, deben dibujar el vector con los números que tiene en un principio, y luego deben dibujar el vector con los números que queda después de haber finalizado el ejercicio.


Ayudas en video:




martes, 1 de marzo de 2016

Ciclo de vida del software

Ciclo de vida del software



Levantamiento de requerimientos:
Es la etapa del ciclo de vida del software, donde se analizan y describen cuáles son las necesidades específicas a las cuales debe responder el software que se va a crear.

Análisis y diseño:
En la etapa de análisis y diseño se toman los requerimientos que quedaron en el documento de requerimientos del primer paso del ciclo de vida. Se analizan y se estructuran mediante diagramas UML para de esta forma tener bien estructurado el software.

Construcción del software:
En esta etapa, tomamos todo el análisis y diseño (diagramas UML) que fueron resultado de la etapa anterior, y se empieza a programar el software siguiendo todas las especificaciones que fueron resultado de la etapa de análisis y diseño.

Pruebas del software
Al llegar a esta etapa se realizan pruebas al software que ya está construido, para verificar que esté dando cumplimiento a los requerimientos planteados, y que su funcionamiento sea correcto.

Integración del software
En esta etapa se pone en funcionamiento el software y se verifica que no altere ningún otro software que se tenga en funcionamiento.

Mantenimiento del software
Esta etapa sirve para dar soporte a los clientes del software, lo que incluye la reparación de fallos (bugs) que no se hubiesen detectado en la etapa de pruebas, así como asesoría en el correcto manejo del software. En esta etapa también disponemos cuáles son las nuevas funcionalidades que debe tener el software, así que cuando se solicitan nuevas funcionalidades para actualizar el software, se vuelve de nuevo a la etapa de levantamiento de requerimientos para así empezar de nuevo todo el proceso con las funcionalidades a incluir.

Levantamiento de requerimientos

Es la etapa del ciclo de vida del software, donde se analizan y describen cuáles son las necesidades específicas a las cuales debe responder el software que se va a crear.
Los requerimientos están divididos en dos grandes grupos:
  • Requerimientos Funcionales
  • Requerimientos No Funcionales
Los requerimientos funcionales, se identifican debido a que son funciones que debe cumplir explicitamente el software que se este desarrollando, como por ejemplo en un sistema de denuncias el software debe permitirle a los administradores del sistema generar un reporte diario con la cantidad de denuncias hechas.

Los requerimientos NO funcionales, se identifican porque estos son restricciones que el cliente impone sobre el sistema y no son funciones explicitas que debe cumplir un sistema. Por ejemplo el sistema debe tener una interfáz gráfica agradable ó el sistema debe ser seguro.

A continuación se muestra un video realizado por el SENA para dar mayor claridad a la clasificación de requerimientos funcionales y no funcionales:


Los requerimientos se deben enumerar, de tal manera que se tenga una manera única de identificar cada requerimiento.

Ejemplo de requerimientos

El problema:
El colegio sol solecito le ha solicitado a usted, que le desarrolle un software en el cual los profesores del colegio puedan realizar el registro de notas de cada una de sus asignaturas por internet, así como que los estudiantes puedan ver las notas correspondientes que cada uno de los docentes registran en sus asignaturas. Además de esto le solicitan que los alumnos puedan subir sus trabajos (Archivos Word y Excel) al software.
Fuera de lo anterior le exigen que el software debe ser seguro y debe soportar una cantidad mínima de 200 personas conectadas al mismo tiempo.

Solución:

Requerimientos Funcionales:

  1. El software debe permitirle a los profesores, registrar las notas de cada una de sus asignaturas a travez de internet.
  2. El software debe permitirle a los alumnos visualizar las notas de cada una de sus asignaturas.
  3. El software debe permitirle a los alumnos subir trabajos (Archivos Word y Excel) al software.
Requerimientos No Funcionales:

       4. El software debe tener un buen nivel de seguridad.
       5. El software debe soportar una cantidad mínima de 200 usuarios conectados concurrentemente.






UML

UML


El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables.
(Fuente : http://users.dcc.uchile.cl/~psalinas/uml/introduccion.html)



domingo, 28 de febrero de 2016

Algoritmos


Introducción a diagramas de flujo

¿Qué es un diagrama de flujo?

Un diagrama de flujo es una representación gráfica de un algoritmo. Cada paso del algoritmo es representado por un símbolo diferente que contiene una breve descripción de la etapa del algoritmo. Los símbolos gráficos del flujo del algoritmo están unidos entre sí con flechas que indican la dirección de flujo del algoritmo.

Símbolos de un diagrama de flujo


Simbolos de diagrama de flujo


Diagramas de flujo en DFD



Ejemplo #1
Realizar un diagrama de flujo en donde a 2 variables se les asigne valore numéricos, y en una tercera variable se sumen las dos variables anteriores, depués se debe mostrar el valor de la suma por pantalla.

Para realizar este ejemplo, debemos analizar que es lo que nos está pidiendo el problema. Después de leer el problema, observamos que nos esta pidiendo crear dos variables en donde le asignemos valores numéricos, así que eso es lo primero que debemos hacer en el diagrama de flujo.
Para poder crear las variables y asignarles un valor vamos a utilizar el símbolo de asignación de la siguiente manera: 
Bueno, ahora que ya hemos realizado el primer paso, debemos seguir analizando que nos pide el problema. Al continuar leyendo el problema, nos damos cuenta que se nos solicita crear una tercera variable en donde se sumen las dos variables anteriores.
Hasta ahora tenemos que hemos creado tres variables, la primera le hemos dado por nombre Numero1 y en ella hemos almacenado el número 5, la segunda variable la hemos denominado Numero2 y en ella hemos almacenado el número 9 y la tercera y última variable la hemos denominado Suma y en ella hemos almacenado el resultado de sumar Numero1 y Numero2. Recordemos que Numero1 es solo el NOMBRE de la variable no quiere decier que valga 1, Numero1 vale 5 que es el valor que le hemos dicho que almacene.

Continuando con el ejercicio, lo último que se nos pide es que mostremos el valor de la suma por pantalla, por lo cual lo único que debemos hacer es utilizar el símbolo de salida por pantalla, indicandole que nos muestre la variable Suma.

En este preciso instante hemos terminado con lo que el problema nos solicita, por lo que lo único que nos queda es probar el algoritmo para verificar que esté funcionando correctamente.
Para esto damos click en el botón ejecutar

Y por ultimo comprobamos que nos muestra una salida por pantalla con el valor de la suma que para este caso es 9+5 = 14.

Operadores Aritméticos

¿Qué son los operadores aritméticos?

Los operadores aritméticos, son aquellos que nos permiten realizar operaciones matemáticas ya sea entre dos valores numéricos, entre dos variables que contengan valores numéricos o entre un valor numérico y una variable que contenga un valor numérico.

Operadores aritméticos en DFD
Ejemplo de operadores aritméticos:


Así por ejemplo si quisieramos calcular el área de un triángulo, podríamos hacer uso de los operadores aritméticos para realizar dicho cálculo.
Tenemos que la formula para hallar el área de un triángulo es:
Donde A, es el área, b es la base y h es la altura.
Para poder realizar esto en DFD se deben declarar tres variables, que yo llamaré Area, base y altura.
a las variables base y altura les asigno un valor numérico cualquiera.
A la variable Area le voy a asignar la formula para calcular el área de un triangulo, haciendo uso de los operadores aritmeticos multiplicación y división.
Como podemos ver en esta formula estamos multiplicando dos variables, y a su vez el resultado de esa multiplicación lo estamos dividiendo entre un valor numérico que en este caso es 2.

______________________________________________________________________________


________________________________________________________________________________
_________________________________________________________________________________
De esta manera podemos realizar todas las operaciones matemáticas que necesitemos, solo hace falta identificar cuál es la operación que deseamos realizar y posteriormente fijarnos en la tabla que aparece al principio para saber como escribirlo en DFD.

Operadores Relacionales y Operadores Lógicos

Operadores Relacionales


Los operadores relacionales sirven para realizar comparaciones, siendo el resultado de una comparación un valor verdadero o falso. Por ejemplo podemos comparar si una variable es mayor que un número o que otra variable.


Operadores Lógicos

Los operadores lógicos sirven para combinar condiciones basados en tablas de verdad.


Operadores relacionales y lógicos en DFD


Tablas de verdad





Ejemplos de operadores relacionales y lógicos

Ejemplo 1:

Realizar un diagrama de flujo en donde se ingrese por teclado la edad de una persona y se muestre por pantalla si esa persona es mayor de edad o no, considerando que la mayoría de edad se cumple a los 18 años.

Para resolver este problema lo primero que haremos, es pedir la edad de la persona y almacenarla en una variable.


Despues de haber realizado estos pasos, tenemos almacenado en la variable Edad, el numero que el usuario ha puesto como su edad, con lo cual solo nos queda comparar si la variable Edad es mayor o igual a 18 para de esta manera poder decir si es mayor de edad o no.
Por lo tanto lo que debemos hacer es verificar en la tabla de operadores relacionales, cuál corresponde al mayor igual. Al verificar la tabla podemos observar que el símbolo que le corresponde es ( >=  )
Por lo tanto el algoritmo quedaría de la siguiente manera:

Ejemplo 2:
En este ejemplo, se pretende mostrar el uso de los operadores lógicos, para lo que tomaremos como base el problema anterior, pero esta vez lo que se necesita determinar es si una persona tiene la edad suficiente para adquirir una licencia de conducción. Para hacer esto, asumiremos que la edad para poder adquirir una licencia de conducción debe ser mayor igual a 16 y menor igual a 80.

Para realizar esto lo único que debemos hacer es cambiar la condición con la cual estamos comparando la edad. En este caso debemos tener dos condiciones donde se utilicen operaciones relacionales unidas por un operador lógico. Para este ejemplo en concreto el operador lógico que necesitamos es el AND.