Tema 6 - 2020
Tema 6 - 2020
Tema 6 - 2020
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
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.
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.
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
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.
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.
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.
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
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,
Fórmulas matemáticas.
- Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un
resultado coherente,
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
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.
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:
Plantilla Standard Graph ISO 5807 para la elaboración manual de Diagramas de Flujo.
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.
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.
Ejemplo
Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y
media aritmética.
6.6 PSEUDOCÓDIGO
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.
Ejemplo
Se desea encontrar la longitud y el área de un círculo de radio 5.
Solución
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)
Inicio
Pi = 3.1416 [definición de un valor
constante]
A = Pi * R ^ ² [asignación del
valor del área]
L = 2 * Pi * R [asignación del
valor de la longitud]
#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));