Sei sulla pagina 1di 47

2.

Algoritmos
Analizar problemas y representar su solucin mediante algoritmos.

1. Anlisis de problemas. 2. Representacin de algoritmos: grfica y pseudocdigo. 3. Diseo de algoritmos aplicados a problemas. 4. Diseo algortmico de funciones

Actividades de Aprendizaje
Explicar los conceptos bsicos para la formulacin de algoritmos, as como sus ventajas y desventajas. Generar un catalogo de problemas para su anlisis y solucin.

Resolver y analizar problemas cotidianos.


Investigar los diferentes mtodos para representar un algoritmo: diagrama de flujo, N-S (Nassi-Shneiderman), Pseudocdigo, Descripcin Narrada.

Introduccin
Clases. En el contexto del anlisis y el diseo, una clase es una categora o grupo de cosas que tienen atributos y comportamientos comunes. La accin de agrupar los objetos de acuerdo a sus caractersticas comunes se llama clasificacin y es una habilidad que utilizamos los humanos para organizar el conocimiento. La clasificacin puede verse como la accin de colocar cada objeto en un casillero etiquetado exprofeso para alojar a todos los objetos de esa clase.

Objetos. Un objeto es una instancia o caso particular de una clase. Un objeto contiene atributos y mtodos. Los atributos identifican el estado del objeto (su identidad) y los mtodos establecen su comportamiento (funcionamiento). Normalmente un objeto tiene una identidad personal que lo distingue de los dems objetos. De esta forma, un objeto tiene estado, comportamiento e identidad.

UML ( Lenguaje Unificado de Modelado ) es un lenguaje de modelado estndar que se usa para describir los planos del software. UML permite a los creadores de sistemas generar diseos que capturen sus ideas en una forma convencional y fcil de comprender, para comunicarlas a otras personas.

Diagramas de UML
http://en.wikipedia.org/wiki/Unified_Modeling_Language

Diagramas de UML
Tarea:
Buscar cuantos tipos de diagramas diferentes existen en UML Buscar ejemplos de los diagramas en UML

Diagramas UML de clases


Una clase es una categora o grupo de cosas que tiene atributos y acciones similares. El smbolo que representa a la clase es un rectngulo dividido en tres reas. El rea superior contiene el nombre, el rea central contiene los atributos, y el rea inferior las acciones.
CLASE

Nombre

Atributos
Mtodos

Al modelar un sistema orientado a objetos, el mundo puede dividirse al menos en un par de formas. En primer lugar est la divisin entre clase y objeto. Una clase es una abstraccin y un objeto es una manifestacin de una clase.
OBJETO CLASE

Los diagramas de clases facilitan las representaciones a partir de las cuales los desarrolladores podrn trabajar. Los diagramas de clases colaboran en lo referente al anlisis. Permite al analista hablarle a los clientes en su propia terminologa, lo cual hace posible que los clientes indiquen importantes detalles de los problemas que requieren ser resueltos.

Ejemplo de un Diagrama de clases

Ejemplo de la relacin de dependencia

Ejemplo de la relacin de generalizacin

Ejemplo de la relacin de agregacin

Ejemplo de un diagrama de estado

2.1 Anlisis de problemas.


Analizar el enunciado del problema Identificar funciones del sistema.

Analizar el enunciado del problema


La parte ms difcil en el desarrollo de un sistema es comprender, con suficiente grado de detalle, el problema a resolver. La descripcin inicial del problema, generalmente, suele ser incierta e insuficiente para realizar un anlisis adecuado de los requisitos de los usuarios.

El anlisis de requisitos es complejo.

Complejidad del anlisis de requisitos


Diferentes usuarios tienen distintas prioridades, a veces en conflicto. Los usuarios no suelen tener una visin clara y fcilmente expresable de lo que quieren. Por ejemplo, les resulta difcil distinguir entre lo que hace un sistema existente y lo que tiene que hacer un sistema adecuado. Es difcil imaginar un sistema del cual slo se ha visto su descripcin, por lo que los usuarios pueden pensar que la descripcin es correcta cuando en realidad falta algo vital. Los encargados de hablar con los desarrolladores pueden no tener experiencia directa en el trabajo que realizan los usuarios del sistema.

Ejemplo:
"El Tecnolgico X nos ha contratado para desarrollar un sistema de software para administrar su biblioteca. La biblioteca utiliza un programa que data de 1960, escrito en un lenguaje obsoleto. Con ese programa se llevan a cabo algunas tareas sencillas de gestin de libros y la bsqueda de usuarios por medio de un ndice de credenciales. Se requiere construir un sistema que mantenga estos dos aspectos en lnea"

Debido a que la informacin que arroja la narrativa anterior es muy escasa, se hace una investigacin ms detallada para averiguar hechos que ayuden a desarrollar un mejor sistema. Como podras obtener mas informacin? Quien es el responsable de proporcionar la informacin? Como almacenaras la informacin? Como organizaras la informacin?

Para el problema anterior:


Enumera los objetos que estn presentes en el dominio del problema Enumera los atributos y mtodos de los objetos Enumera los procesos que se efectan en el sistema Enumera los actores que interactan con el sistema Enumera las relaciones entre los objetos

Identificar funciones del sistema.


Describir por escrito a nivel tcnico los procesos relacionados con el sistema y la forma en que este ser utilizado. La documentacin que se obtenga debe ser entendible para todos los involucrados en el proceso de desarrollo. Quin usar la documentacin?
Los usuarios requieren un manual que describa la forma en como se usa el sistema. Los programadores requieren un manual con las especificaciones de los programas que implementaran.

Tarea
Traer un manual de usuario para compartirlo en la clase. Describir:
Que contiene? Como esta organizado? Para que sirve? Quienes deben leerlo? Quien lo elaboro?

2.1 Representacin de algoritmos: grfica y pseudocdigo.


Definiciones: Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. Un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecucin da una solucin de un problema.

En la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas. Ejemplos:
Usar de una lavadora (se siguen las instrucciones). Cocinar un platillo (se siguen los pasos de la receta). Lavarse los dientes. Calcular el cociente de dos nmeros. Calcular el mximo comn divisor de dos enteros positivos. Encontrar la ruta mas corta entre dos ciudades Etc.

Elementos y reglas de la representacin grfica de los algoritmos


Elementos bsicos de un algoritmo
Lectura de datos Escritura de datos Asignacin clculos Estructuras selectivas Estructuras repetitivas
Pasos en los que se efecta la lectura de un valor como un dato de entrada al problema. Pasos en los que se escribe algn resultado parcial o final del problema. Pasos en los que se asigna un valor a una variable del problema, se efecta un clculo o se le da un valor a una variable. Pasos que permiten ejecutar acciones de acuerdo a determinadas opciones. Pasos que se repiten hasta que se cumpla cierta condicin, o mientras cierta condicin se est cumpliendo.

Descripcin Narrada
Este algoritmo describe textualmente cada una de las actividades a realizar. Ejemplo 1 Algoritmo para asistir a clases:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Levantarse Baarse Vestirse Desayunar Cepillarse los dientes Salir de casa Tomar el autobs Llegar al ITC Buscar el aula Ubicarse en un asiento

Descripcin en Pseudocdigo
El pseudocdigo es una imitacin y versin abreviada de instrucciones reales para las computadoras. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programacin.

Ejemplo
Algoritmo que acepta como entrada cuatro valores numricos y calcula e imprime su producto, suma y media aritmtica.
inicio leer (a, b, c, d) producto <-- (a * b * c * d) suma <-- (a + b + c + d) media <-- (a + b + c + d) / 4 escribir (producto, suma, media) fin

Diagramas N-S
Son una herramienta que favorece la programacin estructurada y rene caractersticas grficas propias de diagramas de flujo y lingsticas propias de pseudocdigos. Constan de una serie de cajas contiguas que se leern siempre de arriba-abajo.

Estructuras selectivas

Estructuras de repeticin

Ejemplo
Algoritmo que acepta como entrada cuatro valores numricos y calcula e imprime su producto, suma y media aritmtica.

Diagramas de Flujo
Son la representacin grfica de la solucin algortmica de un problema. Se utilizan smbolos o figuras que representan a cada una de las acciones de un proceso, los cuales estn unidos por flechas que indican el flujo de ejecucin. Se dibujan de arriba hacia abajo y de izquierda a derecha. Siempre se usan flechas verticales u horizontales Evitar cruce de flujos Cada paso expresa una accin concreta

Smbolos grficos

Algoritmo que acepta como entrada cuatro valores numricos y calcula e imprime su producto, suma y media aritmtica.

2.3 Diseo de algoritmos aplicados a problemas


Algoritmos secuenciales Algoritmos con seleccin de alternativas Algoritmos con repeticin de acciones

Algoritmos secuenciales
Ejercicios de conversiones
Monedas- Pesos a dlares Temperaturas- Grados Celsius a Fahrenheit Distancia- Metros a pies Pesos- Kilogramos a libras Etc.

Clculos de figuras geomtricas


Permetros reas Volumen

Ejercicios
La empresa Todo a $10 vende a sus clientes artculos al mismo precio. Escribe un algoritmo que lea la cantidad de artculos a vender y obtenga el total a pagar, agregando el 10% de iva. Escribe un algoritmo para la CFE que reciba como entrada la cantidad de kw consumidos por un usuario y obtenga la cantidad a pagar. Para obtener la cantidad a pagar cada kw tiene un costo de $0.68 Escribe un algoritmo para obtener la cantidad a pagar de un usuario de la JAPAC, toma como entrada la cantidad de m3 de agua consumidos (cada m3 se cobra a $4.50 y se agrega el 15% de iva)

Conversiones
Multiplicar
Metros Metros Centmetros X X X

Por
3.28 39.37 0.3937 = = =

Para Obtener
Pies Pulgadas Pulgadas

Milmetros
Pies Pies Pies

X
X X X

0.0394
0.3048 30.48 300.48

=
= = =

Pulgadas
Metros Centmetros Milmetros

Multiplicar Pulgadas Pulgadas Libras Libras Kilogramos Kg/cm Lbs/Pulg X X X X X X X

Por 2.54 25.4 0.45392 453.592 2.20462 14.22 0.7031 = = = = = = =

Para Obtener Centmetros Milmetros Kilogramos gramos Libras Lbs/Pulg Kg/cm .

Algoritmos con seleccin de alternativas


Escribe un algoritmo que lea de teclado un numero entero y determine si es par o impar. Escribe un algoritmo que lea una calificacin de un alumno y obtenga como salida un mensaje si fue aprobado o reprobado (70 o mas es aprobado). Escribe un algoritmo que reciba un nmero del 0 al 10 y regrese como resultado el nmero en letras. Escribe un algoritmo que lea un numero y si este es par obtenga su mitad, si es impar, obtenga su cuadrado. Escribe un algoritmo que lea un dato numrico y dependiendo del rango donde se encuentre obtenga el resultado: Rango resultado 0-5 Malo 6-7 Regular 8-9 Bueno 10 Excelente

Algoritmos con repeticin de acciones


Lee de teclado x nmeros enteros hasta que el nmero ledo sea 0. Lee de teclado la edad de 10 personas y obtn como resultado el promedio de las edades. Escribe un algoritmo que reciba como parmetro un entero y determine si este es o no un nmero primo. Los nmeros primos son aquellos que solo tienen dos divisores (ellos mismos y la unidad) Lee de teclado nombre y sexo de 10 personas y obtn como resultado el numero de mujeres. Lee de teclado nombre y edad de 10 personas y obtn como resultado el promedio de edad de los hombres. Lee de teclado nombre, edad y sexo de 10 personas y obtn como resultado el numero de mujeres, el promedio de edad de las mujeres y el nombre de la mas joven.

2.4 Diseo algortmico de las funciones


En la fase de anlisis en el proceso de programacin se determina que hace el programa. En la fase de diseo se determina como hace el programa la tarea solicitada . Los mtodos utilizados para el proceso del diseo se basan en el conocido divide y vencers, donde la solucin de un problema complejo se realiza dividiendo el problema en subproblemas y a continuacin dividir estos subproblemas en otros mas pequeos hasta completar la solucin.

En la POO los programas son clases que contienen atributos que describen a los objetos, mtodos que definen la funcionalidad de los objetos y constructores que se utilizan para generar nuevos objetos. En la programacin estructurada un programa se compone de un bloque inicial (donde inicia la ejecucin del programa) que llama a subprogramas (funciones o procedimientos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas para solucionar un problema.

Ejercicios propuestos
1. La empresa Todo a $10 vende artculos al mismo precio. Escribe un algoritmo que lea la cantidad de artculos a vender y obtenga el total a pagar, agregando el 10% de iva, lea la cantidad pagada y obtenga en cambio que debe recibir el cliente. Escribe un algoritmo para obtener la cantidad a pagar de un usuario de la CFE, la tarifa depende de los Kw consumidos (ve un recibo de CFE) Escribe un algoritmo para obtener la cantidad a pagar de un usuario de la JAPAC, la tarifa depende de los m3 consumidos (ve un recibo de JAPAC) Escribe un algoritmo que lea de teclado un numero entero y determine si es par o impar. Escribe un algoritmo que obtenga el nmero de letras que contiene un string. Lee de teclado la edad de 50 personas y obtn como resultado el promedio de las edades.

2. 3. 4. 5. 6.

7. 8. 9. 10.

11.

12. 13. 14.

Escribe un algoritmo que lea de teclado nombre y edad de 20 personas y obtenga el nombre de la persona mayor. Lee de teclado x nmeros enteros hasta que el nmero ledo sea 0. Escribe un algoritmo que lea de teclado un string y obtenga el total de caracteres que son dgitos. Escribe un algoritmo que reciba como parmetro un nmero entero y obtenga como resultado un valor boolean, verdadero si el nmero es par y falso si es impar. Escribe un algoritmo que reciba como parmetro un entero y determine si este es o no un nmero primo. Los nmeros primos son aquellos que solo tienen dos divisores (ellos mismos y la unidad) Escribe un algoritmo que reciba un nmero del 0 al 10 y regrese como resultado el nmero en letras. Escribe una clase Alumno que contenga atributos para nombre, apellido, sexo, promedio y mtodos getNombre, getSexo, getEdad. Escribe un algoritmo que lea de teclado los datos de 50 objetos tipo Alumno y regrese como resultado el numero de mujeres que hay en el grupo.

15. Escribe un algoritmo que lea de teclado los datos de 50 objetos de tipo Alumno y regrese el promedio de todo el grupo. 16. Escribe un algoritmo que lea de teclado los datos de 50 objetos de tipo Alumno y regrese como resultado el total de alumnos reprobados con promedio menor que 70. 17. Escribe un algoritmo que lea de teclado un entero entre 0 y 99 y obtenga el nmero de decenas que contiene. 18. Escribe un algoritmo que lea de teclado una cantidad en pesos y regrese como resultado la cantidad en dlares, el tipo de cambio es 11.17 pesos por dlar. 19. Escribe un algoritmo que reciba lea de teclado una cantidad en dlares y regrese como resultado la cantidad en pesos, el tipo de cambio es 11.17 pesos por dlar. 20. Escribe un algoritmo que lea de teclado un numero y regrese como resultado un mensaje indicando si el nmero esta en el rango de 0 a 100. 21. Escribe un algoritmo que lea de teclado un string y regrese un mensaje indicando si el string es un palndromo. 22. Escribe un algoritmo que lea de teclado un string y obtenga como resultado el nmero de palabras que contiene. 23. Escribe un algoritmo que lea de teclado un nmero entero y regrese como resultado en pantalla todos sus divisores.

Potrebbero piacerti anche