ALGORITMOS DFD
-
Upload
wilson-bautista -
Category
Documents
-
view
4.769 -
download
1
Transcript of ALGORITMOS DFD
ALGORITMOS
Introducción, Seudocódigo, Estructura Secuencial, Estructura Selectiva y Estructura Iterativa.
____________________________________________________
Introducción
Formular y resolver problemas constituye una actividad esencial de la vida del ser humano.No se trata de almacenar en memoria problemas y sus correspondientes soluciones, sino de desarrollar una capacidad para hacer frente con éxito a situaciones nuevas o desconocidas en la vida del hombre. Ante situaciones nuevas, el que no sabe buscar soluciones se sentirá confuso y angustiado y entonces no buscará una estrategia, dará una primera solución para poner punto final a su agonía. El que sabe buscar soluciones, selecciona la estrategia que le parece más cercana a la requerida y hace una hábil adaptación que se ajusta a la nueva demanda.
Los grandes problemas se pueden subdividir en problemas más simples para solucionarlos, utilizando la filosofía de "dividir para conquistar". Se parte del principio de que es más fácil solucionar varios problemas simples (subproblemas) como parte de un todo que seguir una idea de "todo o nada". _______________________________________________________________Desarrollar la capacidad de formular y resolver problemas nos prepara para enfrentar situaciones desconocidas._______________________________________________________________Se puede afirmar que todo problema consta de las siguientes partes: Datos, Operaciones y Objetivo (solución)
Una metodología para análisis de problemas incluye las siguientes etapas:
1. Definición y análisis del problema
2. Diseño de la solución (Algoritmo)
3. Verificación de la solución
Especificación de un Problema
Partimos del hecho de que un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo proceso de desarrollo de software consiste en tratar de entender el problema que tiene el cliente, y expresar toda la información que él suministre, de manera que cualquier otra persona del equipo de desarrollo pueda entender sin dificultad lo que espera el cliente de la solución. Esta etapa se
denomina análisis y la salida de esta etapa la denominamos la especificación del problema.
Esto se aplica también a cualquier disciplina, a otras áreas que comparten problemáticas similares. Por ejemplo, considere el caso de un ingeniero civil que se enfrenta al problema de construir una carretera. Lo primero que él debe hacer es tratar de entender y especificar el problema que le plantean. Para eso debe tratar de identificar al menos tres aspectos del problema: <1> los requerimientos del usuario (punto de origen y punto destino de la carretera, número de carriles que debe tener, tipo de tráfico), <2> El mundo en el que debe resolverse el problema (tipo de terreno, temperatura), y <3> las restricciones y condiciones que plantea el cliente (presupuesto máximo, que los pendientes no sobrepasen el 5%). Sería una pérdida de tiempo y de recursos para el ingeniero civil, intentar construir la carretera si noha entendido y definido claramente los tres puntos antes mencionados. Y más que tiempo y recursos, habrá perdido algo muy importante en una profesión de servicio como es la ingeniería, que es la confianza del cliente.
En general, todos los problemas se pueden dividir en estos tres aspectos. En el caso de la programación de computadores, un requerimiento funcional hace referencia a un servicio que el programa debe proveer al usuario. Si usted va a escribir un programa para una empresa, no le es suficiente entender la funcionalidad que éste debe tener, sino que debe entender también algunas cosas de la estructura y funcionamiento de la empresa. Si hay un requerimiento funcional de calcular el salario de un empleado, la descripción del problema debe incluir las normas de la empresa para calcular un salario.
_______________________________________________________________ En el campo de las Ciencias de la Computación, la solución de problemas se describe mediante el diseño de procedimientos llamados Algoritmos, los cuales posteriormente se implementan como programas en el computador (utilizando lenguajes de programación como C++, Java, PHP, Perl, Ruby, Delphi, Visual FoxPro...) _______________________________________________________________
El algoritmo es un conjunto de pasos o acciones que nos permiten alcanzar un resultado o resolver un problema en términos de: 1. Las acciones a ejecutarse, y 2. El orden en el cual se deben ejecutar esas acciones.
La solución del problema a través de éste conjunto de pasos o acciones ordenadas, se logra con un algoritmo, el cual se divide en tres secciones (bloques):
1. ENTRADA (datos de entrada)
2. PROCESO (operaciones)
3. SALIDA (resultados)
Los algoritmos se pueden clasificar en computacionales y no computacionales.Es importante aclarar que el computador es un medio y no es el fin en la solución de problemas. En otras palabras, no es el computador el que soluciona los problemas, somos nosotros quienes lo hacemos y de alguna manera le contamos cómo es el asunto para que él, con su velocidad y exactitud, trabaje con muchísimos datos.
En algoritmia, la Lógica para solución de problemas se puede representar mediante las siguientes herramientas de programación:<> Algoritmo<> Diagrama de flujo (DFD)<> Seudocódigo
Conceptos básicos de Programación
a) Identificadoresb) Declaración de Variables\Constantesc) Tipos de Datos - Numéricos : Entero : Real - Alfanuméricos : Caracter : Cadena - Lógicos o Booleanosd) Operadores - Aritméticos - Relacionales - Lógicose) Instrucción de Asignaciónf) Instrucciones de Entrada\Salidag) Estructuras de Control de Flujo (Secuencial, Selectiva, Iterativa).
Ejercicios
Escribir un algoritmo para cada uno de los siguientes casos:
1) Llamar a un amigo(a) desde un teléfono celular público2) Determinar cuántas letras "e" hay en un texto dado3) Calcular la edad promedio entre las edades de sus tres mejores amiga(o)s4) Determinar el número más pequeño de tres números diferentes5) Usted va a comprar un artículo en la tienda del barrio; según el costo del producto y la cantidad de dinero que usted paga, calcule el cambio (o las 'devueltas') que el tendero debe entregarle (Asuma que el pago es mayor al precio del artículo).
Ejemplo de CLASE y ALGORITMO
ANÁLISIS DEL PROBLEMA Nr. 5
Datos de entrada cospro: Costo del productopago : Pago realizado por el cliente
Datos de salidacamb : Valor devuelto al cliente
________________________________________________________________________________
La siguiente es la forma de representar gráficamente una Clase: Un rectángulo dividido en tres secciones.
Nombre de la Clase
Datos oAtributos
Operaciones oMétodos
Compra_Tienda
cospro
pago
camb
leer( )
calcular_camb( )
mostrar( )
________________________________________________________________________________
SOLUCIÓN ALGORÍTMICA
Algoritmo Compra_TiendaINICIO 1. Crear el objeto Cambio 2. Leer cospro y pago 3. Hacer la operación (camb = pago - cospro) 4. Mostrar cambFIN
____________________________________________________
Seudocódigo
El seudocódigo es un lenguaje artificial e informal para codificar los algoritmos. Esta versión es la más parecida a un programa de computador. (El color azul corresponde a todos los símbolos y palabras reservadas de nuestro lenguaje informal de programación).
clase Compra_Tienda {
privado: cospro, pago, camb : real
publico: Cambio( ) { cospro= pago=camb=0 } leer( ) { leer (cospro, pago) } calcular_camb( ) { camb = pago - cospro } mostrar( ) { mostrar (camb) }
}
INICIO 1. Compra_Tienda Cambio 2. Cambio.leer( ) 3. Cambio.calcular_camb( ) 4. Cambio.mostrar( )FIN
Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:
Area de un rectánguloArea de un círculoVelocidad de un carro
Después de presentar la solución de problemas a través del algoritmo y su correspondiente Diagrama de Flujo, ahora se modelará la solución de un problema hasta escribir el programa en el lenguaje denominado seudocódigo.
* Un cliente compró una camioneta en ColombiAutos. El vendedor le ofreció un descuento del 3% y también calculó el porcentaje del IVA. Determinar e imprimir el valor neto pagado por el cliente.
Lo primero, hacer un buen análisis del problema y especificarlo a través de un MODELO DE DATOS:
Nombre del dato Identificador Tipo Var\Const Entra\Sale Restricciones
Valor del vehículo vlr_veh R V E >0
Porcentaje del IVA por_iva E V E >0
Porcentaje del descto. por_des R C E = .03
Valor neto a pagar vlr_net R V S
Segundo, describir los pasos lógicos de la solución en un algoritmo:
Algoritmo VehiculoINICIO Conocer el valor del vehículo Conocer el porcentaje del IVA y del descuento Calcular el iva (valor del vehículo x porcentaje del IVA) Calcular el descuento (valor del vehículo x 0.03) Calcular el valor neto a pagar (valor vehículo + iva - descuento) Mostrar el valor neto a pagarFIN
_________INICIO
_________ ↓
______________Leer
vlr_veh, por_iva______________
↓___________________________________________
vlr_net = vlr_veh + (vlr_veh * por_iva - vlr_veh * 0.03)___________________________________________
↓______________
imprimirvlr_net
______________↓
_________FIN
_________
A continuación, una solución del problema en lenguaje SEUDOCÓDIGO.
Programa Venta_vehiculo// Un primer programa escrito en seudocódigo// Autor : Usted// Fecha : 09/09/2006
Var // declaración de variables vlr_veh, vlr_net : Real por_iva : EnteroConst // declaración de constantes por_des = 0.03
INICIO escribir("ColombiAutos Ltda.") //ENTRADA escribir("Valor del vehículo : $") leer(vlr_veh) escribir("Porcentaje del IVA ?") leer(por_iva) //PROCESO vlr_net = vlr_veh + (vlr_veh * (por_iva/100) - vlr_veh * por_des) //SALIDA escribir("Valor pagado por el cliente -> $", vlr_net)FIN // fin del programa
Diseñar la clase y escribir el anterior seudocódigo con orientación a Objetos:
____________________________________________________
Estructura Secuencial
Como lo sugiere su nombre, en una estructura secuencial las instrucciones se ejecutan en el mismo orden en que están escritas. Una secuencia de instrucciones son pasos sucesivos, uno seguido de otro.
Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:
Costo de un vidrioCosto total de balonesLadrillos para una pared
Escribir un Seudocódigo para solucionar c/u de los siguientes problemas simples de computación:
* Giovanni compró un terreno en Argentina. La extensión del terreno está especificada en Acres. Leer la extensión del campo en Acres y calcular e imprimir su extensión en Hectáreas. (1 Acre = 4047 metros cuadrados. 1 Hectárea = 10000 metros cuadrados).
Algoritmo Terreno // Otro ejemplo en lenguaje de seudocódigo // Autor : Otra vez Usted// Fecha : 14/10/2003Var // declaración de variables ext_acres, ext_hecta : RealConst // declaración de constantes Acre1 = 4047 Hect1 = 10000Inicio escribir ("Digite la extensión del terreno en Acres : ") leer(ext_acres) // entrada de datos ext_hecta = (ext_acres * Acre1) / Hect1 // Proceso escribir ("Extensión del terreno en hectáreas = ", ext_hecta) // salida de datosFin
// A continuación, la solución en seudocódigo orientado a objetos:
clase Terreno {
privado: ext_acres, ext_hecta : real
publico: Terreno( ) { ext_acres= ext_hecta=0 } leer( ) { mostrar ("Digite la extensión del terreno en Acres : ")
leer (ext_acres) } calcular_ext_hecta( ) { ext_hecta = (ext_acres * 4047) / 10000 } mostrar( ) { mostrar ("Extensión del terreno en hectáreas = ", ext_hecta) }
}
INICIO 1. Terreno Lote 2. Lote.leer( ) 3. Lote.calcular_ext_hecta( ) 4. Lote.mostrar( )FIN
_________________________________________________
1. Calcular e imprimir el área de un trapecio.
2. Solucionar el problema que tienen en una bomba de gasolina 'TERPEL'. Los surtidores de la gasolinera registran el combustible en galones, pero el precio de la gasolina está fijado en litros. Calcular e imprimir el valor que se le debe cobrar al cliente. (1 galón tiene 3.785 litros).
3. Las tarifas de un transporte intermunicipal se incrementaron en un 10%. Diseñar un seudocódigo para calcular e imprimir el valor actual de un pasaje a Chaparral-Tolima.
4. Si un poste de alumbrado público, de 14 m de altura, proyecta una sombra de 7 m, ¿cuál será la sombra proyectada por una persona?
5. En N días 5 programadores desarrollan una aplicación. ¿En cuántos días podrían desarrollar el mismo software 8 programadores?
6. Un buque de la Armada, de N marineros, tiene víveres para 2 meses. Si queremos que los víveres duren 10 días más, ¿cuántos marineros habría que dejar en la base naval?
7. Calcular e imprimir el número de segundos que hay en un determinado número de dias.
8. Leer por teclado el radio y la altura de un cilindro y calcular e imprimir el área y su volumen.
9. Desde un globo se deja caer un objeto. Diseñe un seudocódigo para calcular e imprimir su distancia y velocidad al cabo de un tiempo t.
10. Leer la cédula, nombre, sexo, horas trabajadas y valor de la hora de un trabajador y deducir e imprimir su salario neto aplicando una bonificación del 5% y un aporte del 7% a la EPS.
11. Convertir una cantidad de pulgadas a centímetros. Imprimir los dos valores.
12. Leer por teclado tres números enteros y calcular e imprimir: a) Su producto, b) Resta, c) División cociente del primero por el segundo, d) División residuo del primero por el tercero, e) raíz cuadrada del segundo y f) la media aritmética de los tres números.
13. Leer la longitud de los catetos de un triángulo rectángulo y determinar e imprimir su hipotenusa.
14. Don David es el dueño de una Casa de Cambio y necesita un programa que permita leer por teclado una cantidad expresada en dólares y convertir e imprimir esa cantidad en pesos colombianos.
15. En una copa de ron hay 8 onzas. Convertir una cantidad de onzas en copas e imprimir los dos valores.
16. Un comerciante compra CD's a N pe$os. ¿A qué precio debe venderlos para ganar el 20% del costo?
17. Leer por teclado las tres notas de un alumno de Lógica Computacional y calcular e imprimir su definitiva correspondiente al primer 60%. Los porcentajes de las notas son 15, 20 y 25, respectivamente.
18. Laura Lucía debe pagar un interés del 4% mensual por los N millones de pesos que le prestó la "Corporación SINFONDOS". Escriba un seudocódigo para determinar e imprimir el valor mensual de interés que ella debe pagar.
____________________________________________________
Estructura Selectiva
Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. Las utilizamos cuando en el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.
En un diagrama de flujo, la toma de decisión se expresa con un rombo y se basa en la evaluación de una o más condiciones que nos señalarán como alternativa o consecuencia, la rama o el camino a seguir.
Hay situaciones en las que la toma de decisiones se realiza en forma de cascada. Es decir, se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar otra decisión y así sucesivamente. Para solucionar el problema debemos aplicar prácticamente un árbol de decisión.
Las estructuras algorítmicas selectivas que se utilizan para la toma de decisiones lógicas se pueden clasificar así:
- Estructura selectiva simple (SI ENTONCES) - Estructura selectiva doble (SI ENTONCES / SINO) - Estructura selectiva múltiple (SI MÚLTIPLE: SI / SINO / SI...) - Estructura selectiva múltiple abreviada (EN CASO DE)
Todas estas estructuras se pueden combinar.
Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:
Número mayorLanzamiento de monedaConversión de días
Codificar los siguientes algoritmos computacionales aplicando estructuras SELECTIVAS o CONDICIONALES:
Escriba un programa (seudocódigo) que lea la edad de una persona y determine si puede votar o no en las próximas elecciones.
Algoritmo Votacion
Var edad : Entero
Inicio
escribir("Por favor, digite su edad => ")
leer(edad)
si (edad >= 18) // condicional
escribir("Puedes votar en las próximas elecciones...")
sino
escribir("Eres menor de edad... y no puedes votar!!!")
fsi // fin del condicional
escribir("Hasta pronto!")
Fin
// A continuación, la solución en seudocódigo orientado a objetos:
clase Edad_voto {
privado: edad : entero
publico: Edad_voto( ) { edad=0 } leer( ) { mostrar ("Por favor, digite su edad : ")
leer (edad) } mostrar( ) {
si (edad >= 18)
mostrar("Puedes votar en las próximas elecciones...")
sino
mostrar("Eres menor de edad... y no puedes votar!!!")
fsi
}
INICIO 1. Edad_voto Edavot 2. Edavot.leer( ) 3. Edavot.mostrar( )FIN
_________________________________________________
2. Calcular el valor del peaje a pagar por un vehículo en la vía Ibagué - Alvarado. Los automóviles pagan un valor de $3500; los camiones pagan $5000; los buses pagan $4000 más un porcentaje del 1% por cada pasajero. El tiquete de cobro del peaje a generar debe contener: Nombre del tipo de vehículo, Nro. de pasajeros y valor del peaje.
3. Dados dos números enteros, determinar si un número es divisor del otro.
4. Un taxista trabaja en la empresa "PengüiTAXI" en la cual le asignan 3 rutas: Ruta A con un valor de $3000, Ruta B con valor $5000 y Ruta C con valor $7000. Además, debe cobrar un recargo de $500 si está trabajando entre las 20:00 y las
05:00. Si es festivo, hay un recargo de $100. ¿Cuánto debe pagar un usuario que tome el servicio?
5. Determinar e imprimir si un número entero X es positivo, negativo o cero.
6. Calcular las raíces reales, de ser posible, de una ecuación de segundo grado: (ax² + bx + c = 0)
7. Determinar si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo, 1984). Los años múltiplos de 100 no son bisiestos, salvo si ellos son también múltiplos de 400 (2000 es bisiesto, 1800 no lo es).
8. Determinar e imprimir si un número entero X es par, impar o nulo.
9. Examinar el valor de una variable real llamada HORA y visualizar distintos mensajes a diferentes horas del día: a) "Buenos dias", b) "Buenas tardes", c) "Buenas noches".
10. Examinar el valor de una variable real llamada TEMP y visualizar uno de los siguientes mensajes: a) "Hielo", si el valor de TEMP es menor que 0, b) "Agua", si el valor de TEMP se encuentra entre 0 y 100, c) "Vapor", si el valor de TEMP es mayor que 100.
11. Hallar la solución de una ecuación de la forma: ax + b = 0.
12. Calcular e imprimir el área de un círculo, rectángulo o triángulo. Utilice una escalera si-sino-si.
13. Leer los tres lados de una figura y determinar si es un triángulo. En caso afirmativo, calcular e imprimir el área según sus lados.
14. Leer por teclado tres números diferentes y determinar cuál es el número mayor.
15. El costo de las llamadas internacionales depende de la zona geográfica en la que se encuentre el país destino, y del número de minutos hablados. En la siguiente tabla se presenta el costo por minuto en cada zona, a la cual se le ha asociado un código o clave.
CLAVE ZONA PRECIO
12 América del Norte 2
14 América Central 2.2
18 América del Sur 4.6
19 Europa 3.7
23 Asia 6
25 Africa 6
27 Oceanía 5
Escriba un seudocódigo para calcular e imprimir el costo total de una llamada.
____________________________________________________
Estructura Iterativa
En los algoritmos es muy común encontrar operaciones que se deben ejecutar un número repetido de veces. Aunque las instrucciones son las mismas, los datos sobre los que se opera varían. El conjunto de instrucciones que se ejecuta reiteradamente se llama ciclo o bucle.
Todo ciclo debe terminar de ejecutarse luego de un número finito de veces, por lo que en cada iteración se requiere evaluar las condiciones necesarias para decidir si debe seguir ejecutándose o debe detenerse. En todo ciclo, siempre debe existir una condición de parada o fin de ciclo.
Por lo general, los lenguajes de programación contienen las siguientes estructuras algorítmicas repetitivas:
- Estructura repetitiva mientras (while)- Estructura repetitiva hacer mientras (do while)- Estructura repetitiva para (for)
Todas estas estructuras también se pueden combinar.
Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:
Alumnos admitidos (ciclo Mientras)Alumnos admitidos (ciclo Para)Suma de números positivosSuma de edadesSuma de sueldosCompra de productosCuántas mujeres y hombres
Codificar los siguientes problemas de computación en Lenguaje Seudocódigo, utilizando estructuras ITERATIVAS o REPETITIVAS:
Escriba un programa (seudocódigo) para leer la estatura de los N jugadores del Deportes Tolima y determinar e imprimir cuál es la estatura promedio del equipo.
Algoritmo Promedio
Var
estat, sume, prome : Real
n, conte : Entero
Inicio
sume = 0
escribir("¿Cuántos jugadores tiene el equipo? => ")
leer(n)
escribir("Digite la estatura de los ", n, " futbolistas: ")
conte = 1
mientras (conte < = n) hacer // ciclo
leer(estat)
sume = sume + estat
conte = conte + 1
fmientras // fin del ciclo
prome = sume / n
escribir("La estatura promedio del equipo es: ", prome)
Fin
_________________________________________________
1. Calcular e imprimir los valores que toma la ecuación Y = X² + 4X + 3 cuando X va de 1 a 7.
2. Leer por teclado N números enteros y calcular e imprimir la media de los números pares y la media de los impares. Utilizar un ciclo Mientras.
3. Leer el valor de N pensiones. Si el valor de la pensión es superior a 4 salarios mínimos, se debe calcular el IVA correspondiente. Determinar y visualizar el valor total del impuesto a las pensiones.
4. Leer por teclado 27 números enteros y determinar e imprimir cuántos números son primos.
5. Construir un ciclo indeterminado para calcular e imprimir el tiempo de conducción dada la distancia y la velocidad media.
6. Generar e imprimir las tablas de multiplicar.
7. Leer por teclado 24 números reales que representan las temperaturas tomadas en Ibagué en un período de 24 horas. Imprimir la temperatura promedio y las temperaturas más alta y más baja del día.
8. Adriana Marcela es la propietaria del almacén de artículos deportivos "SportPengüin" y necesita un programa para determinar cuántos balones de fútbol-5 y cuántos uniformes y guayos para niños (calzado ≤ 30) se vendieron al final del mes. Implementar un ciclo indeterminado e imprimir también el valor general de venta$.
9. La empresa "TOLModels" desea seleccionar para un evento local a un grupo de personas que cumplan los siguientes requisitos: Mujeres con edad igual o superior a 17 años e inferior a 20 años, con un peso menor a 55 kg y estatura entre 1.70 y 1.75 m. Hombres con edad entre los 18 y 21 años y con estatura superior a 1.75 m. a) Cuántas mujeres fueron seleccionadas, b) Porcentaje de hombres seleccionados, c) Estatura promedio de todos los aspirantes, y d) Peso de la mujer más joven seleccionada.
10. Una aplicación interesante de las computadoras, es dibujar gráficos de barra (a veces llamados "histogramas"). Escriba un programa que lea 10 números (cada uno de ellos entre 1 y 30). Para cada uno de los números leídos, su programa deberá imprimir una línea, conteniendo dicho número en asteriscos adyacentes. Por ejemplo, si se lee por teclado el número 8, el programa deberá imprimir ********.