UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas. 3. Acciones Estructuradas Por estructurar se entiende secuenciar las acciones primitivas sobre los datos; es decir: lectura, asignación y escritura, en tres formas o bloques básicos. Los bloques deben tener sólo una entrada y una salida. Los tres bloques básicos son: Concatenación, Alternativa e Iteración. La idea para estructurar las acciones de esta forma la introduce Dijkstra en 1965; asegurando que un programador que aplique estas técnicas podrá aumentar en 10 veces su productividad. Por otro lado Bohm y Jacopini, en Italia y también en 1965, demuestran, empleando teoría de grafos, que cualquier diagrama de flujo puede representarse empleando los tres bloques básicos. Se dice que un lenguaje de programación es estructurado si posee instrucciones que reflejen en una instrucción, es decir en una línea de código, cada bloque básico. 3.1. Concatenación. Proceso Secuencial. Se describe el diagrama de flujo, la instrucción y un diagrama de flujo estructurado. Acción 1 Acción 1 begin acción1; acción2 Acción 2 Acción 2 Esta acción ha sido descrita en 2.4.a. Prof. Leopoldo Silva Bijit. 07-07-2003 10 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas. 3.2. Alternativa. V F C if C then A1 else A2 A1 A1 A2 En castellano se lee: C V F A2 Si condición entonces A1 sino A2. Se interpreta: ♦ Se realiza la evaluación de la condición o expresión lógica C; ♦ si el resultado es verdadero se efectúa la acción A1; ♦ si el resultado es falso se efectúa la acción A2. 3.3. Iteración. V C F while condición do acción C A En castellano se lee : A Mientras condición haga acción. Se interpreta: ♦ Se evalúa la condición C, si es verdadera se efectúa la acción A. ♦ Luego de realizada la acción se vuelve a evaluar la condición. Es decir, mientras la condición tenga valor verdadero se efectuará la acción. ♦ Si la condición toma valor falso, se termina la iteración. Prof. Leopoldo Silva Bijit. 07-07-2003 11 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas. La codificación correcta de esta estructura requiere que la acción se repita el número deseado de veces, y que la iteración termine. Para esto la acción iterativa debe modificar las variables que entran en la fórmula de la condición. El razonamiento inductivo facilita la codificación de los detalles de esta instrucción. Después de haberla usado muchas veces, el programador se familiariza con la estructura y ésta le será fácil de verificar. 3.4. Diagramas de flujo estructurado. Los bloques ubicados a la derecha de la definición de las acciones estructuradas básicas fueron introducidos por Nassi y Schneiderman en 1973. Los que reflejan que es posible ir concatenando los bloques hasta llegar, por transformaciones a uno solo; que, en forma abstracta, representa como una sola acción el algoritmo. Cada bloque rectangular que representa una acción, se puede reemplazar por uno de los tres bloques básicos. Esto permite aplicar en forma sistemática una de las reglas fundamentales de la programación, que es: "Dividir para Vencer". Cada acción puede dividirse sólo en uno de los tres modos básicos. 3.5. Desarrollo jerárquico de programas. Diseño Top-Down. Top-Down significa de arriba hacia abajo, y simboliza que el método de diseño va de lo general a lo particular. De la esencia al detalle. La técnica consiste en describir, con palabras lo más simples posibles, la acción a desarrollar. Si estas palabras no existen en el lenguaje de programación que se está empleando, deberá subdividirse la acción por una secuencia más simple. En cada subdivisión van espontáneamente apareciendo necesidades de variables. Cada subdivisión debe efectuarse mediante el empleo de un bloque básico. El proceso de división debe llegar hasta que la acción pueda explicarse en términos de las instrucciones primitivas del lenguaje que se esté empleando. Prof. Leopoldo Silva Bijit. 07-07-2003 12 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas. De esta forma el proceso de diseño puede observarse en varios niveles de detalle. Lo cual está asociado a los niveles de comprensión que se tiene en una pirámide administrativa; de aquí viene el nombre de diseño jerárquico. Esta visión facilita el trabajo de equipo, ya que la acción puede ser convenientemente coordinada en diferentes niveles de detalle. Por otro lado, si se van definiendo gradualmente las variables y acciones a medida que se desciende en el nivel de detalle, es posible aplicar lo que se ha denominado programación por refinaciones sucesivas. 3.6. Otras estructuras de control. Para aumentar la flexibilidad de la programación, se introducen instrucciones de control que son un complemento de los tres bloques básicos. Como se verá, cada una de estas nuevas estructuras podrá implementarse en términos de las básicas: Concatenación, Alternativa e Iteración. a) Condicional: V C F C if C then A A V A Se interpreta: ♦ Si la condición toma valor verdadero se efectúa la acción A; ♦ Si la condición tiene valor falso, se efectúa la instrucción siguiente. Prof. Leopoldo Silva Bijit. 07-07-2003 13 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas. b) Repetición. A A repeat A until C V C C F En castellano se lee: Repita A hasta C Se interpreta: ♦ Se efectúa la acción, luego se evalúa la condición. ♦ Si la condición toma valor verdadero, termina la repetición. ♦ Si la condición toma valor falso se vuelve a realizar la acción. Es decir se repite la acción hasta que la condición sea verdadera. Existen dos cláusulas de control adicionales que se verán más adelante. Una es la selección de una acción entre muchas (case of); la otra es la repetición de una acción un número conocido de veces o lazo ( do loop en inglés. O construcción for). Prof. Leopoldo Silva Bijit. 07-07-2003 14