Clase parte I

Anuncio
Resolución de problemas con computadora y herramientas de programación
Contenido de la segunda parte del curso:
•Fases de la resolución de problemas
•Programación modular
•Programación estructurada
•Escritura de algoritmos
Fases en la Resolución de problemas
El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la
misma . Aunque el proceso de diseñar programas es esencialmente un proceso creativo, se pueden considerar una serie de
fases o pasos comunes, que generalmente deben seguir todos los programadores. Las fases de resolución de un problema
con computadora son:
•Análisis del problema: El problema se analiza teniendo presente la especificación de los requisitos dados por el cliente de
la empresa o por la persona que se encarga del programa.
•Diseño del algoritmo: Una vez analizado el problema, se diseña una solución que conducirá a un algoritmo que resuelva el
problema.
•Codificación (implementación): La solución se escribe en la sintaxis del lenguaje de alto nivel y se obtiene un programa.
•Compilación, ejecución y validación: El programa se ejecuta, se comprueba rigurosamente y se eliminan todos los errores
(‘bugs’ en inglés).
•Depuración y mantenimiento: El programa se actualiza y se modifica cada vez que sea necesario.
•Documentación: Escritura de las diferentes fases del ciclo de vida del software, esencialmente el análisis, diseño y
codificación, unidos a manuales de usuario y referencia.
Analisis del problema
La primera fase de resolución de un problema con computadora es el análisis del problema. Esta fase requiere una clara
definición, donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada.Para definir
un buen problema es conveniente responder a las siguientes preguntas:
•¿Qué entradas se requieren? (tipo y cantidad).
•¿Cuál es la salida deseada? (tipo y cantidad).
•¿Qué método produce la salida deseada?
Ejemplo01:
Diseñe un algoritmo para para buscar una palabra en el diccionario.
Buscar palabra
1.Inicio
2.Ubicar en la parte superior de cualquier hoja del diccionario las primeras tres letras con las que
comienza la palabra a buscar.
3.Una vez localizadas, buscar en la columna correspondiente la palabra de arriba-abajo o de abajoarriba.
4.Leer significado.
5.Terminar
1
By: Maxx
Ejemplo02:
Diseñe un algoritmo para encender la computadora y comenzar a trabajar con Word.
Trabajar con Word
1.Inicio.
2.Encender CPU.
3.Encender monitor.
4.Una vez inicializado el sistema, ubicar el acceso directo de Word, o buscarlo en el menú de inicio.
5.Dar clic en el Icono de Word.
6.Esperar a que se cargue en memoria.
7.Comenzar a escribir.
8.Terminar.
Ejemplo03:
Se desea obtener una tabla con las depreciaciones acumuladas y dos valores reales de cada año de un
automóvil comprado en $86,000.00 en el año 1996, durante los seis años siguientes suponiendo que un
valor de recuperación o rescate de $6,500.00. Realizar el análisis del problema, conociendo la fórmula
de la depreciación anual constante D para cada año de vida útil.
D= Costo - Valor de recuperación / Vida útil
D= 86,000.00 - 6,500.00 / 6
D= 13,250.00
Entrada
Costo original
Vida útil
Valor de recuperación
Proceso
Depreciación acumulada
Cálculo de la depreciación acumulada por cada año
Calculo del valor del automóvil en cada año
Salida
Depreciación anual por año
Depreciación acumulada por año
Valor del automóvil en cada año
Tabla Solicitada
Año
Depreciación
Depreciación Acumulada
Valor Anual
1
2
3
4
5
1996
1997
1998
1999
2000
13,250.00
13,250.00
13,250.00
13,250.00
13,250.00
13,250.00
26,500.00
39,750.00
53,000.00
66,250.00
72,750.00
59,500.00
46,250.00
33,000.00
19,750.00
6
2001
13,250.00
79,500.00
6,500.00
Diseño del algoritmo
En la etapa de análisis del proceso de programación se determinaqué hace el programa. En la etapa de diseño se determina
cómo hace el programa la tarea solicitada.
Los métodos más eficientes para el proceso de diseño se basan elen conocido divide y vencerás. Es decir, la resolución de
un problema complejo se realiza dividiendo el problema en subproblemas y a continuación dividir estos subproblemas en
otros de nivel más bajo, hasta que pueda ser implementada una solución en la computadora.
Este método se conoce técnicamente como diseño descendente(top -down) o modular. El proceso de romper el problema en
cada etapa y expresar cada paso en forma más detallada se denomina: Refinamiento Sucesivo.
Cada subprograma resuelto mediante un módulo(subprograma) que tiene un solo punto de entrada y un solo punto de
salida.
2
By: Maxx
Herramientas de programación
Las dos herramientas más utilizadas comúnmente `para diseñar algoritmos son: diagramas de flujo y pseudocódigos.
•Diagramas de flujo
Un diagrama de flujo (flowchart) es la representación gráfica deun algoritmo. Los símbolos utilizados han sido
normalizados por elInstituto Norteamericano de normalización (ANSI), y los más frecuentemente empleados se muestran a
continuación:
Terminal
Subprograma
E/S
Si
Decisión
No
Proceso
Conectores
Un diagrama de flujo (flowchart) es la representación gráfica deun algoritmo. Los símbolos utilizados han sido
normalizados por elInstituto Norteamericano de normalización (ANSI), y los más frecuentemente empleados se muestran a
continuación:
Pseudocódigo
El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al
español o al inglés, que facilitan tanto la escritura como la lectura de programas. En esencia, el pseudocódigo se puede
definir como un lenguaje de especificaciones de algoritmos.
El pseudocódigo que resuelve el problema anterior es:
Previsiones de depreciación
Introducir: Costo, Vida útil y Valor Final de rescate (recuperación)
Imprimir: Cabeceras
Establecer: El valor inicial del año
Calcular: Depreciación
mientras número de año <= Vida útil Hacer
Calcular depreciación acumulada
Calcular valor actual
Inicio
Imprimir una línea en la tabla
Incrementar el valor del año
Fin de mientras
Costo
Vida útil
Valor de rescate
Valor actual ← Costo
Depreciación ← (Costo – Valor de rescate)/Vida útil
Año < Vida útil
Fin
Acumulada ← Acumulada + Depreciación
Valor actual ← Valor actual + Depreciación
Año ← Año + 1
3
By: Maxx
Diseño Descendente
Es la descomposición del problema original en subproblemas más simples y a continuación la división de esos
subproblemas en otros más simples que pueden ser implementados para su solución en la computadora.
Refinamiento del algoritmo
Es un proceso que, tras esa primera descripción (top –down), estos se amplían en una descripción más detallada con pasos
más especificos.
Ejemplo01:
El problema del calculo de la circunferencia y superficie de un circulo se puede descomponer en
subproblemas más simples:
Algoritmo
1.Inicio.
2.Leer datos.
3.Calcular la superficie y la longitud de la circunferencia.
4.Escribir resultados.
5.Fin.
Refinamiento
1.Inicio.
2.Leer radio.
3.Calcular circunferencia.
4.Escribir resultados
5.Fin
Algoritmo
1.Inicio.
2.Superficie = 3.141592 * radio exp 2
3.Circunferencia = 2 * 3.141592 * radio
4.Escribir radio, superficie y circunferencia.
5.Fin.
Diagrama del diseño descendente de la resolución de un problema
Cálculo de la superficie y longitud
De una circunferencia
Entrada de datos
Cálculo de la
superficie
Calculo de la
longitud
Entrada
Radio (R)
S= pi * R exp 2
L= pi * R * 2
4
Salida de
resultados
Salida
R
Salida
S
Salida
R
By: Maxx
Ejemplo01:
Calcular el valor de la suma 1 + 2 + 3 + … + 100
Algoritmo
1.Inicio
2.Establecer contador a 1
3.Establecer Suma a 0
4.MientrasContador <= 100 hacer
Sumar Contador a Suma (Suma ←Suma + Contador)
Incrementar Contador en 1
fin mientras
5.Visualizar suma
6.Fin
Ejemplo02:
Calcular la paga neta de un trabajador conociendo el número de horas trabajadas, la tarifa horaria y
tasa de impuestos. Realizar su análisis de Entradas, Procesos y salida, Su pseudocódigo y su diagrama
de flujo.
Algoritmo
1.Leer Horas, Tarifa y Tasa.
2.Calcular Pago bruto, la fórmula es: Pago bruto = Horas * Tarifa
3.Calcular Impuestos, la fórmula es: Impuestos = Pago bruto * Tasa
4.Calcular Pago neto, la fórmula es: Pago neto = Pago bruto –Impuestos
5.Visualizar Pago bruto, Impuestos y Pago neto.
Ejemplo03:
Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del
cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario rechazará el
pedido.Redactar el pedido correspondiente.
Algoritmo
1.Inicio.
2.Leer el pedido del cliente.
3.Examinar la ficha del cliente.
4.Si el cliente es solvente aceptar el pedido, de lo contrario rechazarlo.
5.Fin.
*Ejercicio: realizar el algoritmo refinado (top down)
Ejercicios propuestos
•Escribir un algoritmo que calcule la superficie de un triángulo en función de la base y la altura.
(también diseñe su diagrama de flujo)
•Realizar un algoritmo que calcule la suma de los enteros 1 y 10, es decir,1+2+3+4+5+…+10. (también
diseñe su diagrama de flujo)
•Definir un algoritmo para intercambiar los valores de dos variables numéricas. (también diseñe su
diagrama de flujo)
•Diseñe un algoritmo para capturar una palabra clave en un sistema. La palabra clave es “UDL”. Si la
clave es correcta se accede al sistema, en caso contrario se vuelve a capturar. (también diseñe su
diagrama de flujo)
5
By: Maxx
Descargar