Publicado el 20 de Mayo del 2018
2.520 visualizaciones desde el 20 de Mayo del 2018
199,0 KB
16 paginas
Creado hace 16a (02/03/2009)
Tema 5
Algoritmos y estructuras de
programación
Versión: 2 de marzo de 2009
5.1 Fases de creación de un programa
El proceso de resolución de problemas en un ordenador conduce a la escritura de un programa y
su ejecución. Las fases en el desarrollo de un programa pueden resumirse de la siguiente forma:
1. Analizar el problema consiste en conocer perfectamente en qué consiste y qué resultados se
desean obtener.
2. Planificación de la resolución del problema, dividiéndolo, si es complicado, en una secuencia de
etapas más simples. Esta fase se lleva a cabo EN UN PAPEL, estableciendo lo más claramente
posible la finalidad de cada etapa, los datos que se necesitan de entrada, los datos que producirían
en salida, los algoritmos (ver la Sección 5.2) que se utilizarán, etc.
3. Edición del código fuente, es decir, escritura del mismo utilizando un editor de textos simple (sin
formato) y un lenguaje de programación. Los programas fuente serán almacenados en ficheros
de texto, normalmente en el disco duro del ordenador.
4. Compilación y ejecución del programa al lenguaje máquina.
5. Corrección de errores del programa. Los errores se corregirán en el código fuente, repitiendo
los pasos 3 y 4 tantas veces como sea necesario. Si se producen errores en la lógica del programa,
es decir, si el programa “funciona” pero produce resultados incorrectos, hay que modificar el
algoritmo volviendo al paso 2. Estos errores son los más difíciles de detectar.
6. Documentación. Una vez que el programa funcione correctamente, es conveniente revisar el
código fuente para ordenarlos, eliminar cálculos innecesarios e incluir las líneas de comentario
necesarias, que normalmente deben incluir unas breves explicaciones al principio del código
sobre la finalidad del programa y sus argumentos de entrada y de salida.
5.2 Algoritmos
Un ordenador es capaz de realizar “sólo” determinadas acciones sencillas, tales como sumar, com-
parar o transferir datos, pero los problemas que normalmente interesa resolver son más complejos.
Para resolver un problema real es necesario, en primer lugar, encontrar un método de resolución y,
31
Algoritmos y estructuras de programación
32
posteriormente, determinar la sucesión de acciones sencillas (susceptibles de ser ejecutadas por un
ordenador) en que se descompone dicho método.
No todos los métodos de solución de un problema pueden ser puestos es práctica en un ordenador.
Para que un procedimiento pueda ser implantado en un ordenador debe ser:
Preciso: estar compuesto de pasos bien definidos (no ambiguos) y ordenados.
Definido: si se sigue dos veces, se obtiene el mismo resultado cada vez.
Finito: tener un número finito de pasos.
Un procedimiento o método para resolver un problema que cumpla los requisitos anteriores se dice
que es un algoritmo. Se puede dar por tanto la siguiente definición:
Un algoritmo es un método para resolver un problema mediante una secuencia de pasos
bien definidos, ordenados y finitos.
Para que se pueda ejecutar el algoritmo es preciso, además, que se disponga de las “herramien-
tas” adecuadas para llevar a cabo cada uno de los pasos. Si no es así, estos deberán, a su vez, ser
descompuestos en una secuencia (algoritmo) de pasos más simples que sí se puedan llevar a cabo.
Un programa de ordenador es una sucesión de órdenes que describen un algoritmo,
escritas de forma que puedan ser entendidas por el ordenador.
En un algoritmo (y por tanto en un programa) se distinguen las siguientes acciones:
Entrada: es la información de partida que necesita el algoritmo para arrancar.
Proceso: es el conjunto de todas las operaciones a realizar.
Salida: son los resultados obtenidos.
Un ejemplo elemental es el Algoritmo 5.1.
Algoritmo 5.1 Preparar una taza de té.
Entrada: tetera, taza, bolsa de té
Salida: taza de té
Inicio
Tomar la tetera
Llenarla de agua
Encender el fuego
Poner la tetera en el fuego
Esperar a que hierva el agua
Tomar la bolsa de té
Introducirla en la tetera
Esperar 1 minuto
Echar el té en la taza
Fin
Algoritmos y estructuras de programación
33
5.3 Representación de algoritmos
Las dos herramientas más utilizadas comúnmente para describir algoritmos son:
Diagramas de flujo: son representaciones gráficas de secuencias de pasos a realizar. Cada operación
se representa mediante un símbolo normalizado el Instituto Norteamericano de Normalización
(ANSI - American National Standars Institute). Las líneas de flujo indican el orden de ejecución.
Algunos de los símbolos principales se muestran en la Figura 5.1, como son: Inicio/Fin del
algoritmo, Lectura/Escritura de datos que el programa necesita o genera (por ejemplo,lectura
de datos que se teclean o escritura de datos en un fichero); Proceso conjunto de instrucciones
secuenciales; Decisión es una bifurcación en el flujo del algoritmo en base a que se verifique o
no cierta condición (ver la Sección 5.5).
Los diagramas de flujo suelen ser usados sólo para representar algoritmos pequeños, ya que
abarcan mucho espacio.
Figura 5.1: Símbolos en diagramas de flujo.
Pseudocódigos: describen un algoritmo de forma similar a un lenguaje de programación pero sin su
rigidez, de forma más parecida al lenguaje natural. Presentan la ventaja de ser más compactos
que los diagramas de flujo, más fáciles de escribir para las instrucciones complejas y más fáciles
de transferir a un lenguaje de programación. El pseudocódigo no está regido por ningún estándar.
En estos apuntes usaremos las palabras LEER/IMPRIMIR para representar las acciones de
lectura de datos (el programa recibe datos desde algún sitio) y salida de datos (el programa
escribe información en algún medio)
El Algoritmo 5.2 y la Figura 5.2 muestran respectivamente el pseudocódigo y el diagrama de
flujo del algoritmo para calcular la altura de una persona en pulgadas y pies a partir de la altura en
centímetros introducida por el teclado.
Inicio/FinLectura/EscrituraProcesoDecisiónNoSíAlgoritmos y estructuras de programación
34
Algoritmo 5.2 Calcular una altura en pulgadas (1 pulgada=2.54 cm) y pies (1 pie=12
pulgadas), a partir de la altura en centímetros, que se introduce por el teclado.
Inicio
1- IMPRIMIR ’Introduce la altura en centimetros: ’
2- LEER: altura
3- CALCULAR pulgadas=altura/2.54
4- CALCULAR pies=pulgadas/12
5- IMPRIMIR ’La altura en pulgadas es: ’, pulgadas
6- IMPRIMIR ’La altura en pies es : ’, pies
Fin
Figura 5.2: Diagrama de flujo para determinar la altura de una persona en pulgadas y pies a partir
de la altura en centímetros introducida por el teclado.
5.4 Estructura secuencial
Es aquella en la que una acción (instrucción) sigue a la otra en el orden en el que están escritas.
Su representación y el diagrama de flujo se muestra en la Figura 5.3. Los Algoritmos 5.1 y 5.2 son
ejemplos de algoritmos secuenciales.
...
Instrucción 1
Instrucción 2
Instrucción 3
...
Figura 5.3: Estructura secuencial de instrucciones.
pies=pulgadas/12pulgadas=altura/2.54LEERalturaESCRIBIRpulgadas, piesFinInstrucción 2Instrucción 1Instrucción 3Algoritmos y estructuras de programación
35
5.5 Estructuras de control: condicionales y bucles
Son parte fundamental de cualquier lenguaje. Sin ellas, las instrucciones de un programa sólo
podrían ejecutarse en el orden en que están escritas (orden secuencial). Las estructuras de control
permiten modificar este orden. Hay dos categorías de estructuras de control:
Condicionales o bifurcaciones: permiten que se ejecuten conjuntos distintos de instrucciones, en
función de que se verifique o no determinada condición.
Bucles o repeticiones: permiten que se ejecute repetidamente un conjunto de instrucciones, bien
un número pre-determinado de veces, o bien hasta que se verifique una determinada condición.
En términos de un lenguaje de programación, que se verifique o no una condición se traduce en
que una (adecuada) expresión lógica tome el valor VERDADERO (TRUE) o tome el valor FALSO (FALSE).
En los casos más sencillos y habituales la condición suele ser una comparación entre dos datos, como
por ejemplo: si a < b hacer una cosa y en caso contrario hacer otra distinta.
A continuación se describen las distintas estructuras de control. Para cada una de ellas se describe
el diagrama de flujo y la sintaxis de la sentencia correspondiente en lenguaje MATLAB. Obsérvese
que todas ellas tienen una única entrada y una única salida.
5.5.1 Estructura condicional simple: IF
Este es el tipo más sencillo de estructura condicional. Sirve para implementar acciones condicionales
del tipo siguiente:
Si se verifica una determinada condición, ejecutar una serie de instrucciones y luego seguir
adelante.
Si la condición NO se cumple, NO se ejecutan dichas instrucciones y se sigue adelante.
...
if condición
instrucciones
end
...
Figura 5.4: Estructura condicional simple: IF.
Obsérvese que, en ambos casos (que se verifique o no la condición), los “caminos” bifurcados se
unen posteriormente en un punto, es decir, el flujo del programa recupera su carácter secuencial, y se
continúa ejecutando por la instrucción siguiente a la estructura IF.
Como ejemplo de utilización de este tipo de condicional, se considera el cálculo del valor en un
punto x de una función definida por partes, como por ejemplo:
f(x) =
0
x2
si x ≤ 0
si x > 0
NoSíCondiciónInstruccionesAlgoritmos y estructuras de programación
36
El Algoritmo 5.3 muestra el pseudocódigo correspondiente.
Algoritmo 5.3 Cálculo del valor de la función f(x) = 0 si x ≤ 0, f(x) = x2 si x > 0.
Inicio
1- LEER x
2- HACER f=0
3- Si x>0
HACER f=x2
Fin Si
4- IMPRIMIR ’El valor de la funcion es: ’, f
Fin
5.5.2 Estructura condicional doble: IF - ELSE
Este tipo de estructura permite implementar condicionales en los que hay dos acciones alternativas:
Si se verifica una determinada condición, ejecutar un serie de instrucciones (bloque 1).
Si no, esto es, si la co
Comentarios de: Tema 5 - Algoritmos y estructuras de programación (0)
No hay comentarios