Principios Fundamentales para el Proceso de la toma de decisiones
Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
1. UNIDAD 4:
METODOLOGÍA PARA EL ANÁLISIS Y
PLANTEAMIENTO DE PROBLEMAS
ALGORÍTMICAY PROGRAMACIÓN
Profa. Yenny Salazar
Identificar los métodos y pasos para realizar el
análisis y planteamiento de problemas.
2. CONTENIDO
Planteamiento del Problema
Definición del Problema
Análisis del Problema
Identificación de entradas
Identificación de Procesos
Identificación de Salidas
Diseño de la Solución
Diseño de algoritmos
Codificación
Documentación
Ejemplos
Actividades
Referencias
3. Metodología para el Análisis y
Resolución de Problemas
La metodología para analizar y resolver problemas mediante el uso de
algoritmos y programas de computadora se puede dividir en las
siguientes fases:
Planteamiento del Problema
Análisis del Problema
Diseño de la Solución
Codificación
Documentación
4. Planteamiento del Problema
El Problema:
Es una cuestión que se plantea para hallar un dato desconocido a
partir de otros datos conocidos, o para determinar el método que hay
que seguir para obtener un resultado dado. Se propone con la finalidad
y ánimo de aclarar o resolver una determinada situación, a través de
una metodología determinada.
Definición del problema
Se requiere que el problema sea definido claramente, para que el
programador pueda analizarlo con todo detalle. La definición es una
frase, oración o proposición expresada en términos positivos y no en
forma de pregunta o interrogación. Por ejemplo, frente al «problema»
de no encontrar un lápiz, no se pregunta ¿se perdió el lápiz?, sino que
se plantea: «se perdió el lápiz», porque esa es la realidad y por tanto es
fácil de entender y resolver.
El problema debe estar bien definido si se desea llegar a una solución
satisfactoria.
5. El análisis del problema exige una lectura previa del problema, a fin
de obtener una idea general de lo que se solicita.
La segunda lectura deberá servir para responder a las preguntas:
¿Qué información debe proporcionar la resolución del problema?
¿Qué datos se necesitan para resolver el problema?
La respuesta a la primera pregunta indicara los resultados deseados o
las salidas del problema. La respuesta a la segunda pregunta indicara
que datos proporcionan o las entradas del problema.
En esta fase debemos aprender a analizar la documentación
de la empresa, investigar y observar todo lo que rodea
el problema.
Análisis del Problema
6. Tiene como propósito ayudar al programador para llegar a una cierta
comprensión de la naturaleza del problema.
Esta fase, requiere que el problema esté definido claramente, donde
se contemple exactamente lo que debe hacer el programa y el resultado
o solución deseada.
Para poder identificar y definir bien las características del problema y
hallar su solución por computadora, se precisan especificaciones
detalladas de entrada y salida, por tanto es conveniente responder a las
siguientes preguntas:
¿Qué entradas se requieren? (tipo de datos con los cuales se trabaja
y cantidad).
¿Cuál es la salida deseada? (tipo de datos de los resultados y
cantidad).
¿Qué método produce la salida deseada?
Requisitos o requerimientos adicionales y restricciones a la
solución.
Análisis del Problema
7. Respondiendo acertadamente estas interrogantes, se pueden definir
las características del problema, estableciendo detalladamente las
especificaciones de entradas, procesos y salidas, sabiendo que:
Las entrada: son todos los datos que hay que ingresar para la
resolución del problema.
Los procesos: son las diferentes acciones, instrucciones y/o
procedimientos, que usaran los datos proporcionados por el usuario
en el paso anterior, para resolver el problema.
Las salidas: son los datos esperados y/o la resolución del problema.
Una buena definición del problema, junto con una descripción
detallada de las especificaciones de entrada y
salida, son los requisitos mas importantes para
llegar a una solución eficaz.
Análisis del Problema
8. Una computadora no tiene la capacidad para solucionar más que
cuanto se le proporcionan los sucesivos pasos a realizar. Estos pasos
sucesivos que indican las instrucciones a ejecutar por la máquina,
constituyen como ya sabemos, el algoritmo.
La información proporcionada al algoritmo componen sus entradas y
la información producida por el algoritmo representan las salidas.
Los problemas complejos se pueden resolver más eficazmente con la
computadora cuando se descomponen en subproblemas que sean más
fáciles de solucionar que el original.
La descomposición del problema original en subproblemas más
simples y a continuación dividir estos subproblemas en
otros más simples que puedan ser implementados para su
solución en la computadora de denomina diseño
descendente (top - down design).
Diseño de la Solución
9. El diseño tiene como palabra clave: «Cómo»
¿Cómo alcanzar la respuesta requerida?
Para realizar esta fase existen métodos que facilitan este proceso:
representar el problema mediante un algoritmo, empleando
herramientas como los diagramas de flujo o pseudocódigo. Ambas,
permiten presentar una solución para el problema, y en realidad son
intercambiables, es decir que a partir del pseudocódigo puede crearse
un diagrama de flujo, y viceversa.
El diseño de algoritmos es un método específico para poder crear un
modelo matemático ajustado a determinado problema para resolverlo.
Finalizando el desarrollo de los algoritmos es necesario
verificar que se ha incluido soluciones para todas las
formas en que se presente el problema. A este tipo
de prueba se le denomina prueba de escritorio.
Diseño de la Solución
10. Es el algoritmo traspasado a la computadora a través de un lenguaje
de programación, debe ser escrito de acuerdo a las reglas gramaticales o
sintaxis del mismo. Se genera un algoritmo, el cual se denomina
código, y al pasarlo a un lenguaje de programación se le llama código
fuente.
Compilación: el lenguaje de programación seleccionado revisa que
ya no existan errores en el código fuente.
Ejecución: ejecutar el programa después del ser compilado.
Verificación y Pruebas: revisar que el programa produzca los
resultados que el usuario requiere. Hay que verificar si se produce
algún error de tipo lógico, de semántica o de ejecución.
Depuración: corregir los errores encontrados en la
etapa anterior, si hubiese algún error se tiene que
regresar hasta la etapa que sea necesaria para que la
solución sea la que el usuario requiere.
Codificación
11. Son todos los comentarios y referencias desde que se dio el problema
hasta que se encontró la solución.
a. Documentación interna: es el encabezado,
descripción, declaración del problema, son
todos los comentarios que puedan llegar a
servir dentro del código fuente.
b.Documentación externa: son los manuales
que se hacen para una mejor ejecución del
programa, ahí se explicara como usar el
programa.
Documentación
12. Problema: Realizar un algoritmo para determinar el área de un rectángulo.
Análisis:
• El área del rectángulo se calcula multiplicando base por altura. Por lo tanto, la entrada
es el valor de la base y de la altura. El proceso lo conforma una operación aritmética
que se le asigna a una variable que denominaremos “area”. Esa operación consiste en
multiplicar el valor de la base por el valor de la altura. La salida corresponde al valor
del área del rectángulo. Se requieren tres variables: el valor de la base que se
denominará “base”, el valor de la altura que tendrá por nombre “altura” y el área del
rectángulo que se denominará “area”. En síntesis, el análisis quedaría de la siguiente
manera:
Entrada: Valor de la base (base)
Valor de la altura (altura)
Proceso: area = base * altura
Salida: Área del rectángulo (area)
Algoritmo: Calcular el área de un rectángulo
Inicio
entero base, altura, area
Leer base, altura
area = base * altura
Escribir area
Fin
Ejemplo 1
13. Problema: Realice un algoritmo que determine el área de un cuadrado
Análisis:
• El área de un cuadrado se calcula multiplicando lado por lado. Por tanto, la entrada es el
valor del lado. El proceso lo conforma una operación aritmética que se le asigna a una
variable que denominaremos “areaCuadrado”. Esa operación consiste en multiplicar el
valor del lado por lado. La salida corresponde al valor del área del cuadrado. Se
requieren dos variables: el valor del lado que se denominará “lado” y el área del
cuadrado que se denominará “areaCuadrado”. En síntesis, el análisis quedaría de la
siguiente manera:
Entrada: Valor del lado (lado)
Proceso: areaCuadrado = lado * lado
Salida: área del cuadrado (areaCuadrado)
Algoritmo: Calcular el área de un cuadrado
Inicio
entero lado, areaCuadrado
Leer lado
areaCuadrado = lado * lado
Escribir areaCuadrado
Fin
Ejemplo 2
14. Problema: Realice un algoritmo para convertir una temperatura dada en grados Celsius a
grados Fahrenheit.
Análisis:
• La converción de grados Celsius a Fahrenheit se calcula mediante la siguiente fórmula: F = (9 / 5)
C + 32, donde F son los grados Fahrenheit y C los grados Celsius. Por tanto, la entrada es el valor
en grados Celsius. El proceso lo conforma una operación aritmética que se le asigna a una variable
que denominaremos “tempF”. Esa operación consiste en multiplicar el cociente de 9 entre 5 por el
valor de los grados Celsius que se identificará con la variable “tempC” y sumarle 32. La salida
corresponde al valor en grados Fahrenheit. Se requieren dos variables: el valor de grados Celsius
que se denominará “tempC” y los grados Fahrenheit que se denominará “tempF”. En síntesis, el
análisis quedaría de la siguiente manera:
Entrada: Temperatura en grados Celsius (tempC)
Proceso: tempF = (9/5)*tempC+32
Salida: Temperatura en grados Fahrenheit (tempF)
Algoritmo: Convertir temperatura en grados Celsius a Fahrenheit
Inicio
real tempC, tempF
Leer tempC
tempF = (9/5) * tempC + 32
Escribir tempF
Fin
Ejemplo 3
15. Problema: Realice un algoritmo para determinar el monto de la comisión de un
vendedor que corresponde a un 10% de sus ventas.
Análisis:
Entrada: Monto de las ventas (ventas)
Proceso: monto_comision = ventas * 10 / 100
Salida: Monto de la comisión (monto_comision)
Algoritmo: Calcular la comisión del 10% sobre las ventas.
Inicio
real monto_comision, ventas
Leer ventas
monto_comision = ventas * 10 / 100
Escribir monto_comision
Fin
Ejemplo 4
16. Problema: Realice un algoritmo para determinar el monto a pagar a un trabajador
sabiendo que además de su sueldo base, tiene un bono especial de $ 100 por cada
año de servicio.
Análisis:
Entrada: Sueldo base (sueldo_b), años de servicio (a_servi)
Proceso: pago = sueldo_b + (a_servi * 100)
Salida: Monto a pagar (pago)
Algoritmo:
Inicio
entero a_servi
real sueldo_b, pago
Leer sueldo_b, a_servi
pago = sueldo_b + (a_servi * 100)
Escribir pago
Fin
Ejemplo 5
17. ACTIVIDADES
1.- Realizar el análisis de los siguientes problemas:
a. El CNE está interesado en saber el número de personas mayores de 18
años, tanto hombres como mujeres en el Municipio Bermúdez. Calcule e
imprima el resultado de esta investigación. Se deben leer registros que
contienen cada uno el sexo y la edad de cada persona.
b. Encuentre la calificación promedio para un gran número, aunque
desconocido, de calificaciones de exámenes. Estas vienen grabadas en
registros. La calificación más alta posible es 10.0
c. Una tienda de libros y géneros diversos al menudeo ofrecen un descuento
de cortesía del 10% para profesores. Muestre como la computadora puede
calcular e imprimir el 10% de $1.00, $1.10, $1.20, etc. hasta $25.00.
d. Un vendedor desea calcular su comisión total en bolívares, sobre la venta
de varios artículos. Al vendedor le corresponde el 5% de comisión sobre
artículos cuyo precio es menor de $20 y el 7.5% de comisión sobre
aquellos artículos cuyo precio es de $20 o más. Suponga que el vendedor
hizo N ventas.
18. ACTIVIDADES
2.- Realizar el análisis de los siguientes problemas y escribir su algoritmo en
pseudocódigo:
a. La LVBP está interesado en promover el béisbol y para ello desea listar los
siguientes datos: nombre, apellido, cédula de identidad y dirección de jóvenes
que tengan las siguientes características: edad máxima de 18 años, estatura
mínima de 1.80 metros, peso máximo de 80 kilos, de un grupo de N aspirantes.
b. Se tiene un registro con los datos de los estudiantes de una universidad: código
del estudiante, nombre del estudiante, valor por crédito, número de créditos
tomados, valor del recargo por inscripción. Se requiere leer los registros e
imprimir un listado con la siguiente información por estudiante: código, nombre
del estudiante, valor crédito, número de créditos, valor del recargo, valor total
pagado por estudiante. También se debe calcular e imprimir al final del listado el
total pagado por todos los estudiantes y el promedio por estudiante. Use código
de centinela 9999.
c. Se tiene un conjunto de registros de los empleados de una compañía, cada
registro contiene los siguientes datos: número del empleado, nombre del
empleado, salario básico por hora, horas trabajadas en el mes, deducciones. Se
requiere leer los registros e imprimir un listado con la siguiente información por
empleado: número del empleado, nombre del empleado, salario básico por hora,
horas trabajadas, deducciones, salario mensual. También se debe calcular e
imprimir al final del listado, el total de salarios pagados a todos los empleados y
el promedio salarial por empleado.
19. ACTIVIDADES
3.- Mini Proyecto (parte1)
• Seleccionar un caso de estudio, teniendo en cuenta que éste pueda
aplicarse una solución a través de un programa.
• Realizar el planteamiento del problema, definiendo detalladamente el
problema.
• Identificar entradas-procesos-salidas.
20. UNIDAD 4:
METODOLOGÍA PARA EL ANÁLISIS Y PLANTEAMIENTO DE PROBLEMAS
ALGORÍTMICA Y PROGRAMACIÓN
Profa. Yenny Salazar
REFERENCIAS
Corona, M. y Ancona M. 2011. Diseño de algoritmos y su
codificación en lenguaje C. McGraw-Hill. México.
Joyanes, L. y Zahonero, I. 2002. Programación en C.
Metodología, algoritmos y estructura de datos. McGraw-Hill.
Joyanes, L. 2008. Fundamentos de Programación, Algoritmos,
Estructura de Datos y Objetos. Cuarta edición. McGraw-Hill.
López, J. Algoritmos y Programación. 2009. Segunda Edición.
Eduteka.