Programación estructurada.
Enviado por cegakometas • 17 de Noviembre de 2016 • Apuntes • 3.612 Palabras (15 Páginas) • 265 Visitas
Tema 4.1 Programación estructurada
A finales de los años sesenta surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior: la programación estructurada.
La programación estructurada es un modelo de programación que propone que todo programa puede escribirse utilizando únicamente las tres estructuras de control siguientes:
- Secuencial.
- Instrucción condicional.
- Iteración, repetición o bucle de instrucciones.
Utilizando solamente estas tres estructuras se puede hacer cualquier programa informático.
Las ventajas que ofrece este modelo de programación son las siguientes:
- Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.
- La estructura del programa es clara puesto que las instrucciones están más ligadas o relacionadas entre sí.
- Reducción del esfuerzo en las pruebas. El seguimiento de las fallas (debugging) se facilita debido a la lógica más visible, por lo que los errores se pueden detectar y corregir más fácilmente.
- Reducción de los costos de mantenimiento.
- Programas más sencillos y más rápidos.
- Los bloques de código son autoexplicativos, lo que apoya a la documentación.
Bajo el concepto del programa almacenado que se propone en la arquitectura Von Neumann, un programa se ejecuta repitiendo los siguientes pasos:
- Se toma una instrucción.
- Se procesa y ejecuta.
- Se incrementa un puntero interno para acceder a la siguiente instrucción.
- Se vuelve al primer paso.
Esta estructura de flujo secuencial es la estructura “natural” de ejecución de las instrucciones de un programa: una tras otra en el mismo orden en que aparecen en un programa. Esto da idea de una ejecución puramente secuencial; sin embargo, la mayoría de los programas requieren condicionales y bucles.
Estructuras condicionales
En ocasiones es necesario o no ejecutar ciertas instrucciones dependiendo del cumplimiento de cierta condición; esta necesidad se implementa mediante las estructuras condicionales.
Condicional si() entonces ..finsi
Esta estructura tiene la siguiente forma:
Que tiene la siguiente semántica: i) se evalúa la condición; ii) si es verdadera, se ejecutan secuencialmente las instrucciones instruccion1 .. instrucciónn.Si la condición es falsa no se ejecuta ninguna instrucción y el flujo de ejecución continúa con la instrucción que sigue al finsi. La siguiente figura ilustra esta estructura condicional.
[pic 1]
Condicional si() entonces .. sino .. finsi
Esta estructura tiene la siguiente forma:
Que tiene la siguiente semántica: i) se evalúa la condición; ii) si es verdadera, se ejecutan secuencialmente las instrucciones instrucciónV1 .. instrucciónVn, después de lo cual la ejecución continúa con la instrucción que sigue al finsi; iii) si la condición es falsa, se ejecutan secuencialmente las instrucciones instrucciónF1 .. instrucciónFn, después de lo cual la ejecución continúa con la instrucción que sigue al finsi. La siguiente figura ilustra esta estructura selectiva.
[pic 2]
Estructuras repetitivas
Las estructuras repetitivas se utilizan para definir un bloque de instrucciones que, dependiendo de cierta condición, deben ejecutarse varias veces. Esta estructura de control tiene una condición asociada de cuyo valor lógico, Falso o Verdadero, depende que el bloque de instrucciones se repita una vez más o termine el ciclo. En este curso veremos dos de estas estructuras:
- mientras() .... fin_mientras
- repite .... hasta ()
Estructura cíclica mientras () .... fin_mientras
Esta estructura tiene la siguiente forma:
mientras(condición)
Instruc1
:
Instrucn
fin_mientras
Que tiene la siguiente semántica: i) se evalúa la condición; ii) si la condición es falsa, no se ejecuta nada y se salta a la instrucción siguiente al fin_mientras; iii) si la condición es verdadera, entonces se ejecuta una vez la secuencia de instrucciones Instruc1 .. Instrucn; iv) al final de la ejecución de esta secuencia se vuelve a evaluar la condición, como se muestra en la siguiente figura.
[pic 3]
Estructura repite ... hasta()
Es muy similar al mientras(); sin embargo, en esta estructura la condición se evalúa después de haber ejecutado una vez el bloque de instrucciones asociado. Esta estructura tiene la siguiente forma:
[pic 4]
Comparación entre mientras() y repite
En el ciclo mientras(), dado que la condición se evalúa antes de ejecutar el bloque de instrucciones, es posible que las instrucciones del ciclo no se ejecuten ni una sola vez.
En el repite, el bloque de instrucciones a repetir se ejecuta al menos una vez ya que la condición se evalúa al final del ciclo.
Programación estructurada. Disponible en:
http://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada
repite
intruc1
:
instrucn
hasta(condición)
Que tiene la siguiente semántica: i) se ejecutan secuencialmente instruc1 .. instrucn; ii) se evalúa la condición; iii) si la condición es Verdadera, se ejecuta la instrucción que sigue al hasta(); iv) si la condición es Falsa, se vuelve a ejecutar el bloque de instrucciones. La siguiente figura ilustra esta estructura cíclica.
si(condición)
entonces
instrucciónV1
:
instrucciónVn
sino
instrucciónF1
:
instrucciónFn
finsi
si(condición)
entonces
instrucción1
:
instrucciónn
finsi
Tema 4.2 Saltos incondicionales
Las instrucciones de salto incondicional ocasionan que el flujo de ejecución del programa se modifique incondicionalmente, de ahí su nombre. Los procesadores AVR manejan cuatro instrucciones de salto incondicional. Estas instrucciones se muestran en la siguiente tabla:
Mnenónico | Operandos | Descripción | Operación |
rjmp | k | Salto relativo. | PC ← PC + k + 1 |
ijmp | Salto indirecto a (Z). | PC ← Z | |
rcall | k | Llamada relativa a subrutina. | PC ← PC + k + 1 |
icall | Llamada indirecta a subrutina en (Z). | PC ← Z |
Instrucción rjmp
...