La principal razón para que las personas aprendan a programar en general y los lenguajes de
programación en particular es utilizar la computadora como una herramienta para la resolución de
problemas. Ayudado por una computadora, la resolución de un problema se puede dividir en tres
fases importantes:
1.-Análisis del problema.
2.-Diseño o desarrollo del algoritmo.
3.-Resolución del algoritmo en la computadora.
El primer paso –Análisis del problema- requiere que el problema sea definido y comprendido
claramente para que pueda ser analizado con todo detalle. Una vez analizado el problema, se
debe desarrollar el algoritmo –procedimiento paso a paso para solucionar el problema dado-. Por
último, para resolver el algoritmo mediante una computadora, se necesita codificar el algoritmo en
un lenguaje de programación Pascal, C/++, Cobol, Fortran, etc. , es decir, convertir el algoritmo en
programa, ejecutarlo y comprobar que el programa soluciona verdaderamente el problema. Las
fases del proceso de resolución de un problema mediante computadora .
ANÁLISIS DEL PROBLEMA.
El propósito del análisis de un problema, es ayudar al programador para llegar a una cierta
comprensión de la naturaleza del problema. El problema debe estar bien definido si ase desea
llegar a una solución satisfactoria.
Para poder definir con precisión el problema se requiere que las especificaciones de
entrada y salida sean descritas con detalle. Una buena definición del problema, junto con una
descripción detallada de las especificaciones de entrada y salida, son los requisitos más
importantes para llegar a una solución eficaz.
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 resolver 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 indicará los resultados deseados a las salidas del
problema.
La respuesta a la segunda pregunta indicará que datos se proporcionan a las entradas del
problema.
Análisis.
Las entradas de datos en este problema se concentran en el radio del circulo. Dado que el
radio puede tomar cualquier valor dentro del rango de los números reales, el tipo de datos
radio debe ser real.
Las salidas serán dos variables: superficie y circunferencia, que también serán de tipo real.
Entradas: radio del circulo(variable RADIO).
Salidas: superficie del circulo(variable Area).
Circunferencia del circulo(variable
Circunferencia).
Variables: Radio, Área y circunferencia (tipo real).
DISEÑO DEL ALGORITMO.
Una computadora no tiene capacidad para solucionar problemas mas que cuando se le
proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a
ejecutar por la maquina, constituyen, como ya conocemos, el algoritmo.
La información proporcionada al algoritmo, constituye su entrada y la información
producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver mas eficazmente con la computadora,
cuando se rompen en sub problemas que sean más fáciles de solucionar que el original. Este
método se suele denominar divide y vencerás (divide and conquer) que consiste en dividir un
problema complejo en otros más simples. Así el problema de encontrar la superficie y longitud de
un circulo se puede dividir en tres problemas más simples o subproblemas (figura 2.3.) La descomposición del problema original en subproblemas más simples y a continuación
dividir estos subproblemas en otros más simples que pueden ser implementados para su solución
en la computadora se denomina diseño descendente (top-down design). Normalmente los pasos
diseñados en el primer esbozo del algoritmo son incompletos e indicaran solo unos pocos pasos (
un máximo de doce aproximadamente). Tras esta primera descripción, estos se amplían en una
descripción mas detallada con más pasos específicos. Este proceso se denomina financiamiento
del algoritmo (stepwise refinement).
El problema de calculo de la circunferencia y superficie de un circulo se puede
descomponer en subproblemas más simples: (1) leer datos de entrada, (2) calcular superficie y
longitud de circunferencia y (3) escribir resultados (datos de salida).
Subproblema Refinamiento
leer radio leer radio
calcular superficie superficie=3.141592 * radio^2
calcular circunferencia circunferencia 2 * 3.141592 * radio
escribir resultados escribir radio, circunferencia, superficie
Las ventajas más importantes del diseño descendente son:
« El problema se comprende más fácilmente al dividirse en partes más simples denominadas
módulos.
« Las modificaciones en los módulos son más fáciles.
« La comprobación del problema se puede verificar fácilmente.
Tras los pasos anteriores (diseño descendente y refinamiento por pasos) es preciso
representar el algoritmo mediante una determinada herramienta de programación: diagrama
de flujo, pseudocódigo o diagrama N.S
Escritura inicial del algoritmo.
Como ya se ha comentado anteriormente, el sistema para describir (“escribir”) un algoritmo
consiste en realizar una descripción paso a paso con un lenguaje natural del citado algoritmo.
Recordemos que un algoritmo es un método o un conjunto de reglas para solucionar un problema.
En cálculos elementales estas reglas tienen las siguientes propiedades:
l deben de estar seguidas de algunas secuencias definidas de pasos hasta que se
obtenga un resultado coherente,
l Sólo puede ejecutarse una operación a la vez.
RESOLUCIÓN DEL PROBLEMA MEDIANTE
COMPUTADORA
Una vez que el algoritmo está diseñado y representado gráficamente mediante una
herramienta de programación (diagrama de flujo , pseudocódigo o diagrama N-S) se debe
pasar a la fase de resolución práctica del problema con la computadora .
Esta fase se descompone a u vez en las siguientes subfase:
1. codificación del algoritmo en un programa .
2. ejecución del programa .
3. comprobación del programa .
En el diseño del algoritmo éste describe en una herramienta de programación tal como un
diagrama de flujo , diagrama N-S o pseudocódigo .Sin embargo , el programa que
implementa el algoritmo debe ser escrito en un lenguaje de programación y siguiendo las
reglas gramaticales o sintaxis del mismo .La fase de de programación se denomina codificación , ya que el algoritmo escrito en un lenguaje
específico de programación se denomina código.
Tras la codificación del programa , deberá ejecutarse en una computadora y a continuación
de comprobar los resultados pasar a la fase final de documentación.
Figura 2.5conversión del algoritmo en un lenguaje
REPRESENTACIÓN GRAFICA DE LOS ALGORITMOS
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho
algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser
codificado indistintamente en cualquier lenguaje . Para conseguir este objetivo se precisa
que el algoritmo sea representado gráfica o numéricamente , de modo que las sucesivas
acciones no dependan de la sintaxis de ningún lenguaje de programación , sino que la
descripción pueda servir fácilmente para su transformación en un programa , es decir ,su
codificación.
Los métodos usuales para representar un algoritmo son:
1. diagrama de flujo,
2. diagrama N-S(Nassi-Schneiderman),
3. lenguaje de especificación de algoritmos :pseudocódigo,
4. lenguaje español,
5. fórmulas .
Los métodos 4 y 5 no suelen ser fáciles de transformar en programas. Una descripción en
español narrativo no es satisfactoria , ya que es demasiado prolija y generalmente ambigua
Una fórmula , sin embargo , es buen sistema de representación . Por ejemplo , la fórmula
para la solución de una ecuación cuadrática es un medio sucinto de expresar el
procedimiento algoritmo que se debe ejecutar para obtener las raíces .
X1 =(-b+Öb2-4ac)/2a X2 =(-b-Öb2-4ac)/2a
Significa
1. Eleve al cuadrado b.
2. Toma a ; multiplicar por 4.
3. Restar el resultado de 2 del resultado de 1 , etc.
Sin embargo , no es frecuente que un algoritmo pueda ser expresado por medio de una
simple fórmula .
DIAGRAMAS DE FLUJO
Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmo
más antigua y a la vez más utilizada , aunque se empleo ha disminuido considerablemente
, sobre todo desde la aparición de lenguajes de programación estructurados . Un diagrama
de flujo es un diagrama que utiliza los símbolos (cajas) estándar mostrados en la figura 2.6
y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas ,
denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar.
La figura 2.7 es un diagrama de flujo básico.
El diagrama citado (figura 2.7) representa la resolución de un programa que
deduce el salario neto de un trabajor a partir de la lectura del nombre , horas trabajadas ,
precio de la hora , y sabiendo que los impuestos aplicados son el 25 por 100 sobre el
salario bruto.
Los símbolos estándar normalizados por ANSI (abreviatura de America National Standard
Institute) son muy variados . En la figura 2.8 se representan una plantilla de dibujo típica
donde se
Símbolos Función
Principales
Terminal (representa el comienzo, “inicio” y el final, “fin”, de
un programa. Puede representar también una parada o
interrupción programada que sea necesario realizar en un
programa).
Entrada/Salida (cualquier tipo de introducción de datos en
la memoria desde los periféricos “entrada”, o registro de la
información procesada en un periférico, “salida”).
Proceso (cualquier tipo de operación que pueda originar
cambio de valor, formato o posición de la información
almacenada en memoria, operaciones aritméticas, de
transferencia, etc.).
Decisión (indica operaciones lógicas o de comparación
no entre datos –normalmente dos- y en función del resultado
de la misma determina cual de los distintos caminos
alternativos de programa se debe seguir; normalmente
si tiene dos salidas –respuestas SI o NO-, pero puede tener
tres o mas, según los casos).
Decisión múltiple (en función del resultado de la
comparación se seguirá uno de los diferentes caminos de
acuerdo con dicho resultado).
Conector (sirve para enlazar dos partes cualesquiera de un
ordinograma a través de un conector en la salida y otro
conector en la entrada. Se refiere a la conexión en la
misma pagina del diagrama).
Indicador de dirección o línea de flujo ( indica el sentido de
ejecución de las operaciones).
Línea conectora (sirve de unión entre dos símbolos).
Conector (conexión entre dos puntos del organigrama
situado en paginas diferentes).
Llamada a subrutina o a un proceso predeterminado (una
subrutina es un modulo independiente del programa
principal, que recibe una entrada procedente de dicho
programa, realiza una tarea determinada y regresa, al
terminar, al programa principal).
Símbolos Función
Secundarios
Pantalla ( se utiliza en ocasiones, en lugar del símbolo de
E/S).
Impresora (se utiliza en ocasiones en lugar del símbolo
DE/S).
Teclado ( se utiliza en ocasiones en lugar del símbolo de
E/S).
Comentarios ( se utiliza para añadir comentarios
clasificadores a otro símbolos del diagrama de flujo. Se
puede dibujar a cualquier lado del símbolo)
Figura 2.6 símbolos del diagrama de flujo
Contemplan la mayoría de los símbolos utilizados en el diagrama ; sin embargo, los simbo_
inicio
Leer: Nombre,
hora precio
Brutoß horas
*precio
Netoß bruto- tasas
Tasas ß 0.25*bruto
Escribir: nombre,
Se desea realizar el algoritmo que resuelva el sistema siguiente:
Calculo de los salarios mensuales de los empleados de una empresa, sabiendo que éstos
se calculan en base a las hora semanales trabajadas y de acuerdo a un precio especificado por
hora. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarán a razón de
1.5 veces la hora ordinaria
Los cálculos son:
1. Leer datos del archivo de la empresa, hasta que se encuentre la
ficha final del archivo (HORAS, PRECIO_HORA, NOMBRE).
2. Si horas <= 40, entonces SALARIO es el producto de horas por
PRECIO_HORA.
3. Si HORA > 40, entonces salario es la suma de 40 veces
PRECIO_HORA más 1.5 veces PRECIO_HORA por (HORAS=40).
No hay comentarios:
Publicar un comentario