Publicado el 26 de Abril del 2020
468 visualizaciones desde el 26 de Abril del 2020
379,3 KB
39 paginas
Creado hace 13a (20/08/2010)
Instrucciones estructuradas
Para escribir programas que traten problemas más arduos es
necesario combinar las acciones primitivas para producir otras
acciones más complejas.
Estos tres métodos se describen informalmente como sigue:
•La forma más simple de concatenar acciones es la composición, en
ella se describe una tarea compleja como una sucesión de tareas
más elementales.
•La selección de una alternativa tras valorar una determinada
circunstancia se refleja mediante las instrucciones if (en sus dos
formas) y case.
•Finalmente, las instrucciones repetitivas (while, for y repeat)
permiten expresar en Pascal la repetición de acciones, ya sea un
número de veces prefijado o no.
Instrucciones estructuradas
En Pascal la composición de instrucciones se realiza concatenando las
instrucciones y separándolas con el carácter punto y coma (;). La
construcción de una instrucción compleja como una sucesión de
instrucciones simples se muestra en el siguiente segmento de
programa, que intercambia los valores de dos variables numéricas a
y b sin hacer uso de ninguna variable auxiliar:
Instrucciones de selección
La instrucción if-then-else
• Es el equivalente en Pascal a una expresión condicional del tipo si
apruebo entonces iré de vacaciones y si no tendré que estudiar en
verano, con la cual se indica que dependiendo del cumplimiento o
no de una condición se hará una cosa u otra.
A efectos de la colocación de los puntos y comas debe tenerse en cuenta
que toda la construcción if-then-else corresponde a una sola instrucción,
y no es una composición de las instrucciones if, then y else; en particular,
la aparición de un punto y coma justo antes de un then o de un else dará
como resultado un error sintáctico (bastante frecuente, por cierto)
Instrucciones de selección
La instrucción case
La instrucción case permite la selección entre una cantidad variable de posibilidades, es
decir, es una sentencia de selección múltiple. Un ejemplo de esta selección en
lenguaje natural podrá ser el siguiente \menú semanal": según sea el día de la semana,
hacer lo siguiente: lunes, miércoles y viernes tomar pescado, martes, jueves y sábado
tomar carne, el domingo comer fuera de casa.
Esta instrucción consta de una expresión (llamada selector ) y una lista de sentencias
etiquetadas por una o varias constantes del mismo tipo que el selector; al ejecutarse
esta instrucción se evalúa el valor actual del selector y se ejecuta la instrucción que
tenga esa etiqueta, si no existe ninguna instrucción con esa etiqueta se produce un
error
Instrucciones de iteración
Instrucciones de iteración
Las instrucciones iterativas permiten especficar que ciertas acciones sean
ejecutadas repetidamente; esto es lo que se llama usualmente un bucle.
Se dispone en Pascal de tres construcciones iterativas (while, repeat y for), no
obstante se puede demostrar que todas ellas pueden ser especificadas
sólo con la instrucción while.
La instrucción while
• En algunas ocasiones es necesario especificar una acción que se repite
siempre que se cumpla una determinada condición; una frase en lenguaje
natural tal como mientras haga calor usar manga corta es un ejemplo de
este tipo de construcciones.
• En Pascal esta construcción se hace mediante la instrucción while.
Instrucciones de iteración
La instrucción repeat
• Cómo se podrá modificar el ejemplo anterior para que fuera válido también para
quien no sabe qué tiempo hace fuera hasta que ya es demasiado tarde?
• Una forma será llevar un jersey puesto hasta que haga calor; de este modo se
•
evitarán bastantes enfriamientos indeseados.
La instrucción repeat permite la construcción de bucles similares al de este último
ejemplo, con características ligeramente distintas a la del bucle while.
En este tipo de bucles las palabras reservadas repeat y until funcionan
como delimitadores, no siendo necesario usar begin-end para delimitar la
lista de instrucciones.
Programación estructurada
Introducción (diferentes características)
•
•
•
•
•
La corrección del programa que, obviamente, es el criterio indispensable, en
el sentido de que se desean obtener programas correctos que resuelvan El
(los) problema(s) para los que están diseñados.
La comprensibilidad, que incluye la legibilidad y la buena documentación,
características que permiten una mayor facilidad y comodidad en el
mantenimiento de los programas.
La eficiencia, que expresa los requerimientos de memoria y el tiempo de
ejecución del programa.
La flexibilidad o capacidad de adaptación del programa a variaciones del
problema inicial, lo cual permite la utilización del programa durante mayor
tiempo.
La transportabilidad, que es la posibilidad de usar el mismo programa sobre
distintos sistemas sin realizar cambios notables en su estructura.
Programación estructurada
• Las ideas que dieron lugar a la programación estructurada ya fueron
expuestas por E.W. Dijkstra en 1965, aunque el fundamento teórico
(teoremas de la programación estructurada) está basado en los
trabajos de Bóhm Jacopini publicados en 1966.
• La programación estructurada es una técnica de programación cuyo
objetivo es, esencialmente, la obtención de programas fiables y
fácilmente mantenibles. Su estudio puede dividirse en dos partes
bien diferenciadas: por un lado su estudio conceptual teórico, y por
otro su aplicación práctica.
• Por una parte, el estudio conceptual se centra en ver qué se
entiende por programa estructurado para estudiar con detalle sus
características fundamentales.
• Por otra parte, dentro del enfoque práctico se presentará la
metodología de refinamientos sucesivos que permite construir
programas estructurados paso a paso, detallando cada vez m¶as
sus acciones componentes.
Programación estructurada
Programas y diagramas de flujo
• Una práctica muy común de programación ha sido la utilización de
diagramas de flujo (también llamados organigramas) como una
descripción gráfica del algoritmo que se pretende programar. Sin
embargo, esta popularidad ha ido menguando debido al débil (o
nulo) soporte riguroso de su utilización; nosotros presentaremos los
diagramas de flujo precisamente para mostrar lo que no es
programación estructurada.
• Para comprender mejor los problemas que surgen del uso
incorrecto de los diagramas de flujo es necesario conocerlos un
poco. Un diagrama de flujo se compone de bloques (que
representan las acciones y las decisiones) y de líneas (que indican
el encadenamiento entre los bloques).
Programación estructurada
Los bloques de un diagrama de flujo
pueden ser de cuatro clases
distintas
• Símbolos terminales, que indican el
principio y el final del algoritmo. Se
representan usando óvalos.
• Símbolos de entrada y salida de
datos. Respectivamente, significan
lectura y escritura.
• Bloques de procesamiento de datos,
que realizan operaciones con los
datos leídos o con datos privados.
Se representan mediante
rectángulos que encierran la
especificación del proceso.
• Nudos de decisión, en los que se
elige entre dos o más alternativas.
Según las alternativas sean dos
(generalmente dependiendo de una
expresión lógica) o más de dos.
Programación estructurada
Diagramas y diagramas propios
Diagramas y diagramas propios
Se destaca la subclase de los diagramas propios, que representan, desde cierto punto
de vista, a los programas correctamente estructurados.
En este apartado se restringe el concepto de diagrama, que será utilizado
• más adelante en la definición de programa estructurado. Consideraremos que
•
•
un diagrama se construye usando como elementos básicos únicamente las tres
siguientes piezas:
Acción, que sirve para representar una
instrucción (por ejemplo de lectura,
escritura, asignación. . . ).
Condición, que sirve para bifurcar el flujo
del programa dependiendo del
valor (verdadero o falso) de una expresión
lógica.
Agrupamiento, que sirve, como su nombre
indica, para agrupar l¶³neas de
flujo con distintas procedencias.
Diagramas propios: Se dice que un diagrama, construido con los
elementos citados arriba, es un diagrama propio (o limpio) si reúne
las dos condiciones siguientes:
1. Todo bloque posee un único punto de entrada y otro único punto de
salida.
2. Para cualquier bloque, existe al menos un camino desde la entrada
hasta el y otro camino desde el hasta la salida.
Diagramas BJ (de Bóhm y Jacopini)
Un diagrama se dice que es un diagrama BJ
(diagrama privilegiado), si está construido
a partir de los siguientes esquemas:
Programas estructurados
Definición: Diremos que un diagrama representa a
un programa estructurado si está formado
combinando los diagramas privilegiados de
secuencia, selección y/o repetición.
Todo programa estructurado presenta una
descomposición arborescente en la que cada
nodo se corresponde directamente con una
instrucción de Pascal o con una condición.
Cualquier acción (instrucción o subprograma) de
un programa estructurado puede ser sustituida
por su descomposición arborescente y viceversa.
Equivalencia de diagramas
Dos diagramas propios se dice que son equivalentes si designan los
mismos cálculos; esto es, si para una misma entrada de datos las
líneas de flujo llevan a bloques idénticos.
Teoremas de la programación estructurada
• La corrección de un programa
estructurado se puede estudiar mediante
pasos sucesivos, examinando cada
esquema (nodo) de su estructura
arborescente y validando localmente la
descomposición realizada en ese nodo.
Aspectos metodológicos
En este apartado comienza la exposición de la técnica de diseño
descendente, que permite aplicar la teoría introducida para construir
programas estructurados.
La técnica de diseño descendente (en inglés, top-down) está basada
en un proceso de aproximación sucesiva a la solución del problema
planteado. El apelativo de diseño descendente surge del hecho de
que se parte de una es
Comentarios de: Instrucciones estructuradas (0)
No hay comentarios