Está en la página 1de 14

TEMA 6: RESOLUCION DE

PROBLEMAS CON
COMPUTADORAS Y
HERRAMIENTAS DE
PROGRAMACION. ALGORI TMOS
Fundamentos de programación. Fases en la resolución de problemas. Concepto y
características de algoritmos. Estrategias de resolución. Escritura de algoritmos.
Representación de algoritmos. Diagrama de Flujos. Pseudocódigos. Verificación de
la solución del problema.

Video 6.1

6.1 FUNDAMENTOS DE PROGRAMACIÓN

Los ordenadores o computadoras han revolucionado todos los aspectos de la vida en los
últimos 40 años. Hoy en día los encontramos en todos lados: escritorios de oficinas,
aviones, microondas y teléfonos celulares entre otros. Pero el equipo físico que podemos
ver es solo la mitad de la historia. Cada una de estas computadoras también necesita un
soporte lógico que le indique como realizar las tareas que esperamos que ejecute. Estas
instrucciones se codifican en una gran variedad de lenguajes de programación. Cada uno
tiene sus características específicas, sintaxis y mecanismos diferentes para llevar a cabo
diversas tareas. Sin embargo todos comparten un conjunto fundamental de características
y conceptos que deben dominar todas las personas interesadas en crear programas para
resolver problemas o realizar tareas con ordenadores.

En este proyecto de aprendizaje nos familiarizaremos con los conceptos para que
posteriormente podamos aprender con mayor facilidad uno o varios lenguajes de
programación específicos, teniendo en cuenta que las técnicas básicas para construir
programas y desarrollar algoritmos para resolver problemas serán las mismas. De esta
forma, al aprender un lenguaje nuevo, solo deberemos preocuparnos por conocer los
aspectos que los diferencian de otros lenguajes.

6.2 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 de la misma. Aunque el proceso de diseñar programa es
esencialmente creativo, se puede considerar una serie de fases o pasos comunes, que
generalmente deben seguir todos los programadores.

Informática – Año 2020 Página 1


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Las fases de resolución de un problema con computadora son:

1. Análisis del problema


2. Diseño del algoritmo
3. Codificación
4. Ejecución
5. Prueba

6.2.1 ANÁLISIS DEL PROBLEMA

El análisis consiste en estudiar el problema planteado para obtener una idea clara y
concisa de los pasos necesarios para proponer un modelo para su solución.
Para resolver un problema con un ordenador hay que disponer de los datos de entrada,
estudiar el tratamiento que se ha de realizar a dichos datos, la información que se desea
obtener como resultado y de qué manera debe presentarse. Es decir, después de analizar
el problema, se han de conocer claramente tres cosas.

Datos de Entrada de que se dispone


Proceso o Tratamiento que ha de realizarse con estos datos.
Información de salida deseada.
Una de las técnicas más empleadas recibe el nombre de H.I.P.O. (Hierarchy the plus input
process output) que consiste en esquematizar cada programa, o una parte del mismo en los
tres bloques (los descritos anteriormente).

Informática – Año 2020 Página 2


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

EJEMPLO 6.1
Por ejemplo, y sin entrar en el campo de la informática, para hacer la nómina de los
mejores alumnos de una carrera, se necesita saber:

– ENTRADA: Los datos de cada uno de los alumnos y si estos datos están en papel o
en un fichero donde está toda la información de los alumnos.
– PROCESO: La fórmula matemática para calcular el promedio de notas es:
(nota 1 + nota 2 + nota 3 + .....+ nota n) / cantidad de notas

– SALIDA: El modelo del informe donde se desean imprimir el promedio de los


alumnos.

6.2.2 DISEÑO DEL ALGORITMO

Teniendo en cuenta que un algoritmo es un método para resolver problemas, una vez
analizado el mismo se precisa diseñar un algoritmo que indique claramente los pasos a
seguir para resolverlo.

Para realizar un determinado proceso, se le debe suministrar al ordenador una fórmula


para la resolución de un problema (algoritmo), cuyo diseño debe ser independiente de la
computadora.

Dada la importancia del algoritmo en la ciencia de la computación, un aspecto relevante


será el diseño del algoritmo, el cual requiere en la mayoría de los casos, creatividad y
conocimientos profundos de la técnica de programación. Es decir, la solución de un
problema se puede expresar mediante un algoritmo.

La solución de un problema complejo puede requerir muchos pasos, es necesario dividir el


problema en subproblemas más sencillos de resolver.

Este método se denomina divide y vencerás y es aplicable a la resolución y escritura de


algoritmos y programas para computadora.

El método de división de un problema en otros subproblemas más sencillos se puede


expresar para conseguir su solución en una computadora, mediante el método
denominado diseño descendente.

Informática – Año 2020 Página 3


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

El proceso de la rotura de un problema principal en etapas o subproblemas más sencillos


se denomina refinamiento paso a paso o sucesivos

Luego corresponde realizar una representación gráfica clara y detallada que muestre la
secuencia en que se deben ejecutar las diferentes operaciones. Estas representaciones
gráficas son las herramientas de programación utilizadas para el análisis y pueden ser:
diagramas de flujo, pseudocódigos y/o tablas de decisión, entre otras.

6.2.3 CODIFICACIÓN DEL ALGORITMO

Una vez que el algoritmo de resolución del problema está definido se pasa a la fase de
codificación del programa en cualquier lenguaje (c, basic, cobol, pascal, etc.) cuyo
resultado será el programa fuente el cual sigue las reglas de sintaxis que el lenguaje
escogido exija.

Después de codificado el programa, se introduce en el ordenador mediante unos


programas especiales llamados editores.

Una vez dentro del ordenador, el programa deber ser traducido al único lenguaje que éste
entiende: Lenguaje de máquina. Dicha operación se realiza mediante el correspondiente
programa traductor o compilador del lenguaje en el que está escrito el programa. Este
proceso se repite hasta que no se producen errores, obteniéndose el programa objeto que
todavía no es ejecutable directamente.

6.2.4 EJECUCIÓN

A partir del programa objeto se instruye al sistema operativo para que realice un montaje
o enlace, carga, del programa objeto a las librerías del programa compilador. El proceso
de montaje produce el programa ejecutable, que una vez creado ya se puede ejecutar
(correr) desde el sistema operativo. Suponiendo que no existen errores durante la
ejecución (llamados errores en tiempo de ejecución), se obtendrá la salida de resultados de
programa. Ver siguiente figura.

6.2.5 PRUEBA

El hecho de haber diseñado un buen algoritmo y luego haberlo codificado en algún


lenguaje de programación no significa que el programa resuelva correctamente el
problema en cuestión.

Por eso, antes de dar por finalizada cualquier labor de programación, es fundamental
preparar un conjunto de datos lo más representativo posible del problema, que permitan
probar el programa cuando se ejecute y así verificar los resultados.

Cuanto más exhaustivas sean las pruebas de un programa, mayor seguridad se tendrá de
que éste funcione correctamente y, por lo tanto, menor posibilidad de errores y por ende,

Informática – Año 2020 Página 4


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

mayor probabilidad habrá de evitar la tarea de revisar un antiguo programa, cuando ya la


lógica que se empleó en el mismo se recuerda muy poco.
El programa se considera terminado cuando se han realizado pruebas y ensayo de su
fiabilidad con el conjunto de datos seleccionados y otros nuevos, hasta incluso con datos
reales, y no se encuentren errores de ningún tipo.

6.3 CONCEPTO Y CARACTERÍSTICAS DE ALGORITMOS

Definimos un algoritmo como un conjunto de pasos, procedimientos o acciones que nos


permiten alcanzar un resultado o resolver un problema.

Los algoritmos son independientes del lenguaje de programación en que se expresan


como así también de la computadora que se ejecuten. Un algoritmo se puede expresar en
distintos lenguajes de programación y en computadoras distintas, pero el algoritmo, los
pasos a seguir para la solución del problema es siempre el mismo. Así como, cualquier
cosa que ocurra en la vida cotidiana, por ejemplo, poner en movimiento un automóvil,
tiene un número de pasos a seguir, sea quien sea el conductor: argentino, español, alemán,
etc.- y sea cual sea el auto a conducir.
En la ciencia de la computación y específicamente en la programación, los algoritmos son
más importantes que los lenguajes de programación e incluso que las computadoras, dado
que los lenguajes de programación son solo un medio para expresar un algoritmo y las
computadoras la herramienta que los ejecuta.
Las características que debe cumplir un algoritmo son:
Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin
criterios de interpretación.
Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el
cual deberá finalizar al completarlos.
Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o
estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un
algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser
considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con
las computadoras. Existen muchos otros mecanismos susceptibles de programación que
no cuentan con una salida de resultados de esta forma. Por salida de resultados debe
entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones
del algoritmo.
Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando
nada más ni nada menos que aquello que se requiera para y en su ejecución.

6.4 ESTRATEGIAS DE RESOLUCIÓN

Las herramientas de programación utilizadas como lenguajes algorítmicos, antes de ser


convertido a lenguaje de programación, son las que utilizan algunos métodos de
representación escrita, gráfica o matemática. Los métodos más conocidos son:

 Diagramación libre (Diagramas de flujo)


 Pseudocódigo
 Diagramas Nassi-Shneiderman
 Lenguaje natural (español, inglés, etc.)

Informática – Año 2020 Página 5


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

 Fórmulas matemáticas.

El lenguaje natural puede no ser suficientemente preciso, permitiendo ambigüedades,


obteniendo una descripción no del todo satisfactoria. Las fórmulas, propias del lenguaje
matemático, son un buen sistema de representación, pero no suelen ser fáciles de
convertir en programas. Por lo tanto, trataremos en este curso los dos primeros modelos

– Pseudocódigo: es un lenguaje algorítmico, muy parecido al español/lenguaje natural


pero más conciso que permite la redacción rápida del algoritmo.
– Diagramas de flujo: ha sido la herramienta de programación por excelencia, y aún hoy
sigue siendo muy utilizada. Es fácil de diseñar pues el flujo lógico del algoritmo se muestra
en un diagrama en lugar de palabras.

6.4.1 ESCRITURA DE ALGORITMOS.

Como se comentó anteriormente, el sistema para describir (escribir) un algoritmo consiste


en realizar una descripción paso a paso de un lenguaje natural del citado algoritmo.
Recordando que un algoritmo es un método o conjunto de reglas para solucionar un
problema. En cálculos elementales estas reglas tienen las siguientes propiedades:

- Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un
resultado coherente,

- solo puede ejecutarse una operación a la vez

El flujo de control usual de un algoritmo es secuencial; consideraremos el siguiente


ejemplo:
Si a un experimentado conductor se le preguntase
¿cómo pone en movimiento su automóvil?
Contestaría: “Se pone en marcha el motor y se mete la primera”.
Efectivamente es fácil. Pero ¿Qué ocurriría si el individuo nunca condujo un automóvil?. El
resultado no sería muy efectivo debido a que según las instrucciones o pasos impartidos
anteriormente, si estuviera en algún cambio, al poner en marcha se hubiese estrellado con
lo primero que estuviese adelante o atrás.
La conclusión que se debe sacar de este ejemplo es que el conductor con experiencia no
tuvo en cuenta todas las posibilidades que se pueden presentar para obtener el resultado
de poner el automóvil en movimiento. Por lo tanto, su algoritmo sería:
 Poner en marcha el motor
 Meter la primera

El algoritmo consta de dos acciones básicas, cada una de las cuales debe ser ejecutada
antes de realizar la siguiente. En términos de computadora, cada acción se codificará en
una o varias sentencias que ejecutan una tarea particular.
El algoritmo descripto es muy sencillo; sin embargo, como ya se ha indicado en párrafos
anteriores, el algoritmo general se descompondrá en pasos mas simples en un
procedimiento denominados refinamiento sucesivo. Así por ejemplo, un primer
refinamiento del algoritmo poner en movimiento un coche se puede describir de la forma
siguiente:
 Pisar el embrague con el pie izquierdo

Informática – Año 2020 Página 6


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

 Poner en punto muerto


 Dar a la llave de contacto
 Pisar el embrague
 Meter la primera
 Quitar el freno de mano si lo tuviese puesto.
 Levantar lentamente el pie del embrague a la vez que pisa el pedal del acelerador con
el pie derecho

¿Por qué es más correcto este algoritmo?


1) Desglosa el problema en instrucciones simples y concretas, comprensibles para
cualquier individuo.
2) Indica claramente el orden en que deben ejecutarse dichas instrucciones.

6.4.2 REPRESENTACIÓN GRAFICA DE ALGORITMOS.

La representación gráfica independiza al algoritmo del lenguaje de programación elegido,


permitiendo de esta manera que pueda ser codificado indistintamente en cualquier
lenguaje. Para conseguir este objetivo se necesita que el algoritmo sea representado
gráficamente, de modo que las sucesivas acciones puedan ser traducidas fácilmente a un
programa, es decir, su codificación.

Para representar de una forma clara, concisa y esquemática la secuencia de acciones que
se han de realizar para resolver un problema se puede usar una de las técnicas más
antigua y a la vez más utilizada: diagramas de flujo, que no es más que un diagrama o
esquema que utiliza símbolos estándar y que tiene los pasos del algoritmo escritos en esos
símbolos unidos por flechas, llamados flujo de datos o líneas de flujo, que indican la
secuencia en que se deben ejecutar las órdenes, instrucciones o sentencias.

Es importante señalar que en la actualidad se utilizan técnicas más modernas para la


descripción de algoritmos. Sin embargo, la naturaleza gráfica de los diagramas de flujo
facilita inicialmente la comprensión de dichos algoritmos.

Pseudocódigo es un lenguaje de pseudoprogramación, es decir, muy parecido a un


lenguaje de programación. El pseudocódigo es muy fácil de utilizar, ya que es muy similar
al lenguaje natural.

6.5 DIAGRAMA DE FLUJO

El diagrama de flujo representa la esquematización gráfica de un algoritmo. En realidad


muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un
problema. La construcción correcta del mismo es muy importante, ya que a partir de este
se escribe el programa en un lenguaje de programación determinado. El diagrama de flujo
representa la solución del problema mientras que el programa representa la
implementación en un lenguaje de programación.

El uso de diagramas de flujo como herramienta de programación tiene beneficios que


resumidamente se detallan:

 Rápida comprensión de las relaciones


 Se pueden usar como modelos de trabajo para el diseño de nuevos programas

Informática – Año 2020 Página 7


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

 Documentación adecuada de los programas


 Produce una codificación eficaz en los programas
 Depuración y pruebas ordenadas de programas
 Fácil de traducir a cualquier lenguaje de programación.
Pero en algunas circunstancias nos encontramos con limitaciones o inconvenientes en su
uso, en forma resumida diremos:

 Los diagramas complejos y detallados suelen ser laboriosos en su planteamiento y


gráfica.

 No existen normas fijas para la elaboración de los diagramas de flujo que incluyan
todo lo que el usuario desea introducir.

SIMBOLOGÍA
La estandarización de los símbolos para la elaboración de Diagramas de Flujo tardó varios
años. Con el fin de evitar la utilización de símbolos diferentes para representar procesos
iguales, la Organización Internacional para la Estandarización (ISO, por su sigla en inglés)
y el Instituto Nacional Americano de Estandarización (ANSI, por su sigla en inglés),
estandarizaron los símbolos que mayor aceptación tenían en 1985. Los siguientes son los
principales símbolos para elaborar Diagramas de Flujo:

Informática – Año 2020 Página 8


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Plantilla Standard Graph ISO 5807 para la elaboración manual de Diagramas de Flujo.

Informática – Año 2020 Página 9


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

NORMAS PARA SU REPRESENTACIÓN


Para confeccionar un diagrama de flujo, es aconsejable respetar las siguientes reglas:
 Todo diagrama de flujo debe indicar
claramente donde comienza (INICIO o
COMENZAR) y donde termina (FIN o
PARAR).

 El orden en que deben escribirse los


símbolos es de arriba abajo y de izquierda a
derecha.

 Es aconsejable emplear un símbolo para


cada acción.

 Dentro de los símbolos no especificar


instrucciones propias de algún lenguaje de
programación.

 La secuencia se indica mediante flechas o


líneas de conexión (horizontales /
verticales), las cuales deben ser siempre
rectas, no se deben cruzar ni deben estar
inclinadas.

 A todos los símbolos (excepto al INICIO), les debe llegar una línea de conexión.

 De todos los símbolos, excepto FIN y el de DECISIÓN, debe salir una sola línea
de conexión.

 Es aconsejable usar conectores cuando las líneas de conexión entre


operaciones no adyacentes son muy largas, pero hay que tener en cuenta que
el uso exagerado de conectores dificulta el entendimiento.

 Cuando trabajamos con operaciones lógicas recurrir preferentemente a la


lógica positiva antes que a la lógica negativa. Es más claro decir si A = B, en vez
de: si no es A <> B.

 El diagrama de flujo deberá ser lo más claro posible de forma tal que cualquier
otro programador pueda seguirlo o usarlo con total facilidad de entendimiento.

 El diagrama de flujo en conjunto debe guardar una cierta simetría.

Informática – Año 2020 Página 10


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Ejemplo
Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y
media aritmética.

Informática – Año 2020 Página 11


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

6.6 PSEUDOCÓDIGO

Otra herramienta muy útil en el análisis de programación es el pseudocódigo. En donde,


pseudo o seudo significa “falso” o “imitación” y código se refiere a las instrucciones escritas
en algún lenguaje de programación; por lo tanto cuando hablamos de pseudocódigo no
estamos hablando de código sino de una imitación o simulacro de instrucciones reales
abreviadas para las computadoras.

El pseudocódigo nació como un lenguaje similar al inglés y era un medio para representar
las estructuras de control de programación estructurada que se verá en capítulos
posteriores. Se puede considerar como un primer intento de programa o como un
programa borrador, dado que el pseudocódigo por si solo no puede ser ejecutado en una
computadora sino que debe traducirse a un lenguaje de programación.

El uso de ésta herramienta tiene la ventaja en la planificación de un programa. El


programador se concentra en las estructuras de control, en la lógica y deja en este
momento de lado las reglas del lenguaje de programación al cual debe luego traducir.
Además para la corrección de errores de lógica es más fácil realizarlo desde el
pseudocódigo que desde un programa ya codificado.

El pseudocódigo original utiliza palabras en inglés – similares a las de los lenguajes de


programación - para representar acciones sucesivas, tales como start , end , stop, repeat,
until , etc. pero también se pueden usar las mismas palabras en español comienzo, fin,
parar, repetir, hasta, etc. lo cual facilita considerablemente el aprendizaje. En este curso
usaremos la terminología en español.

En la actualidad el pseudocódigo es una técnica muy utilizada sobretodo en la


programación de lenguajes estructurados como Pascal, C, o bien utilizando técnicas de
programación estructurada en otros lenguajes.

Informática – Año 2020 Página 12


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

NORMAS PARA SU ESCRITURA


No hay una forma estándar de diseñar un pseudocódigo, pero se aconseja respetar lo más
rigurosamente posible las siguientes normas:

 Todo pseudocódigo debe empezar con la


palabra reservada comenzar y debe finalizar
con la palabra reservada parar.
 Cada instrucción se debe escribir en una
línea.
 Las instrucciones utilizan para su
descripción las siguientes series de palabras
reservadas: comenzar, parar, si, entonces,
sino, fin_si, ir_a, leer, imprimir, informar grabar, mientras, fin_mientras, hasta,
fin_hasta, desde, fin_desde, etc.-
 La escritura de pseudocódigo exige la sangría o identación (en el margen
izquierdo) de diferentes líneas a los efectos de observar claramente las
dependencias de control dentro de los módulos.
 Cada estructura utilizada tendrá un solo punto de comienzo y un solo punto de fin
de estructura.
 Se escribirá en minúscula, excepto las que elige el programador como ser los
nombres de variables, ficheros, rutinas, etc., que se escribirán en mayúscula.
 Usar apóstrofos o comillas simples solo para apertura y cierre de cadenas de
caracteres, dado que podría dar lugar a confusión debido a que, por ejemplo Basic
de Microsoft usa estos caracteres para comentarios.
 Cuando se quiera colocar una línea de comentario para documentación interna del
programa usar [.
 Las rutinas o módulos serán referenciadas por su nombre en mayúscula entre los
símbolos < >.
 Usar siempre las mismas palabras reservadas para cada tipo de acción.

El mismo problema anterior escrito en pseudocódigo:


Pseudocódigo
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

Informática – Año 2020 Página 13


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Ejemplo
Se desea encontrar la longitud y el área de un círculo de radio 5.

Solución

El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio


conocido y de valor 5.

Las salidas serán entonces la longitud y el área. (Paso 5 del algoritmo) Sabemos que la
longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por
pi * radio al cuadrado. (paso 4 del algoritmo) Si definimos las variables como: (paso 1 al 3
del algoritmo)

L = Longitud; A = área; R = radio; pi = 3.1416

Se obtiene el siguiente algoritmo:

Inicio
Pi = 3.1416 [definición de un valor
constante]

R = 5 [radio constante ya que es


conocido su valor]

A = Pi * R ^ ² [asignación del
valor del área]

L = 2 * Pi * R [asignación del
valor de la longitud]

Escribir (A, L) [salida del algoritmo]


Fin

#include <stdio.h>
#include<stdlib.h>
int main()
{
#define PI=3.1415
int const radio = 5;
float area, longitud;

longitud = 2 * PI * radio;
area = (PI * (radio ^ 2));

printf("El area es %.2f \n", area);


printf ("la longitud es %.2f \n",
longitud);
system("pause");
return 0;
}

Informática – Año 2020 Página 14

También podría gustarte