basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm sentencias de control estructuras

29
Basado en: http://exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras básicas

Upload: mariano-escobar-valdez

Post on 25-Jan-2016

220 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Basado en: http://exa.unne.edu.ar/ingenieria/computacion/index.htm

Sentencias de control

Estructuras básicas

Page 2: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

Programacion estructurada. Estructura de selección. Sentencias. Sentencias anidadas. Casos particulares. Estructura de control. Bucles. Tipo: hacer mientras – hacer hasta. Incremento o decremento. Terminaciones anormales. Diseño de bucles. Bucles anidados.

Page 3: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La programación estructurada es una forma de escribir programas de computadora deforma clara, utilizando únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional.

La programación estructurada surge a finales de los años 1960 con el objetivo de realizar programas confiables y eficientes, y que además fueran escritos de manera de facilitar su comprensión posterior.

Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de aquellos años, por lo que se desarrollaron nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.

De todas formas, el paradigma estructurado tiene vigencia en muchos ámbitos de desarrollo de programas y constituye una buena forma de iniciarse en la programación de computadoras.

Programación estructurada

Page 4: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

El teorema del programa estructurado, de Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:

Secuencia Instrucción condicional. Iteración (bucle de instrucciones) con condición al

principio.

Solamente con estas tres estructuras o “patrones lógicos” se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas.

Programación estructurada

Page 5: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control Programación estructurada

ACCI O N 1

ACCI O N 2

ACCI O N N

2

Co n d ic io n

Ac c io n

S IN O Co n d ic io n

Ac c io n

S I

Ac c io n

N O

1

Condicion

Si

No

Acciones

Condicion No

Acciones

SI

Page 6: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

El flujo de control de un programa

La expresión flujo de control hace referencia al orden en el que se ejecutarán las instrucciones de un programa, desde su comienzo hasta que finaliza. El flujo normal de ejecución es el secuencial. Si no se especifica lo contrario, la ejecución de un programa empezaría por la primera instrucción e iría procesando una a una en el orden en que aparecen, hasta llegar a la última.

Algunos programas muy simples pueden escribirse sólo con este flujo unidireccional. No obstante, la mayor eficacia y utilidad de cualquier lenguaje de programación se deriva de la posibilidad de cambiar el orden de ejecución según la necesidad de elegir uno de entre varios caminos en función de ciertas condiciones, o de ejecutar algo repetidas veces, sin tener que escribir el código para cada vez.

Con frecuencia, el programador necesita que el programa no se comporte sólo de modo secuencial. Por ejemplo, calcular una funcion f(x) para los X > 0.

Programación estructurada

Page 7: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

El flujo de control de un programa

También puede ocurrir que interese que un grupo de instrucciones se ejecute repetidamente hasta que se le indique que se detenga. Por ejemplo, calcular el promedio de notas para cada uno de los alumnos de un curso, o realizar algún cálculo con cada uno de los elementos de un vector.

Para las dos situaciones planteadas existen dos soluciones: las sentencias de control selectivas y las repetitivas. Éstas permiten que el flujo secuencial del programa sea modificado. También cumplen con este objetivo las sentencias denominadas de invocación o salto.

Las sentencias alternativas también son conocidas como sentencias selectivas porque permiten seleccionar uno de entre varios caminos por donde seguirá la ejecución del programa. En algunos casos esta selección viene determinada por la evaluación de una expresión lógica.

Programación estructurada

Page 8: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

Según lo expresado, las estructuras de decisión simple y doble permiten seleccionar entre dos alternativas posibles. Sin embargo, la instrucción SI-ENTONCES puede ser utilizada también en casos de selección de más de dos alternativas. Esto es posible anidando estas instrucciones. Es decir, una estructura SI-ENTONCES puede contener a otra, y esta a su vez a otra. La representación en pseudocódigo es la siguiente:

SI <condición_1> ENTONCES< sentencias_1 >SINO

SI <condición_2> ENTONCES < sentencias_2 >SINO

SI <condición_3> ENTONCES< sentencias_3 >SINO

.

.FIN-SI

FIN-SIFIN-SI

Estructura de selección. Sentencias anidadas.

Como se puede observar, el anidamiento de instrucciones alternativas permite ir descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.En las instrucciones SI anidadas, las instrucciones ENTONCES y FIN-SI se aplican automáticamente a la instrucción SI anterior más próxima.A fin de que las estructuras anidadas sean más fáciles de leer, es práctica habitual aplicar sangría al cuerpo de cada una.

Page 9: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

Ejemplo: Un sensor toma (lee) la temperatura ambiente y de acuerdo al rango en que se encuentre, debe emitir un mensaje. La escala es la siguiente:

Mayor que 100 “Temperatura muy alta – Mal funcionamiento”

Entre 91 y 100 “Rango normal”Entre 51 y 90 “Bajo el rango normal”Menor que 50 “Muy frío – Apague el equipo”

ALGORITMO SensorINICIOLEER temperaturaSI temperatura > 100 ENTONCES

ESCRIBIR “Temperatura muy alta – Mal funcionamiento”SINO

SI temperatura > 90 ENTONCESESCRIBIR “Rango normal”

SINOSI temperatura > 50 ENTONCES

ESCRIBIR “Bajo el rango normal”SINO

ESCRIBIR “Muy frío – Apague equipo”FIN-SI

FIN-SIFIN-SIFIN

Estructura de selección. Sentencias anidadas.

Page 10: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

Estructura de condición Multiple

Cuando una condición puede tomar mas de una valor de y el flujo de las operaciones cambia para cada opcion

Segun variable_numerica Hacer

opcion_1:

secuencia_de_acciones_1opcion_2:

secuencia_de_acciones_2opcion_3:

secuencia_de_acciones_3De Otro Modo:

secuencia_de_acciones_domFin Segun

Page 11: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

Estructura de condición Multiple

Cree un algoritmo que pida dos númeroLuego debe pedir una operación aritmética a aplicar a estos dos números, aplicar la operación seleccionada y mostrar el resultado.

Proceso opcion_multiple

Escribir "Digite 2 números"Leer numero1, numero2;

Escribir "1. Sumarlos"Escribir "2. Restarlos"Escribir "3. Multiplicarlos"Escribir "4. Dividrlos"

Leer Operacion

Segun Operacion Hacer1:

resultado = numero1 + numero2

2:resultado = numero1 -

numero23:

resultado = numero1 * numero2

De Otro Modo:resultado = numero1 /

numero2Fin Segun

Escribir "El resultado es", resultado

FinProceso

Operacion

SumarRestar

MultiplicarDividir

Operacion

Page 12: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

En muchas ocasiones la forma más apropiada de expresar un algoritmo consiste en la repetición de una misma instrucción de manera controlada, una cantidad finita de veces determinada de antemano (al diseñar el programa) o en tiempo de ejecución (cada vez que se corre el programa). Por ejemplo, podría ser necesario diseñar un algoritmo similar al de los cajeros automáticos, que solicite una clave al usuario y bloquee el acceso en caso de no ingresar la contraseña correcta luego de tres intentos. O bien, si se desea procesar grupos de datos ingresados por teclado o leídos desde un archivo, hasta que no se encuentren más datos.Las estructuras algorítmicas que permiten realizar operaciones de este tipo se conocen con el nombre de estructuras repetitivas o iterativas.

Definicion: Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan repetitivas o bucles; y se denomina iteración a la ejecución de cada repetición.

Estructuras de Control. Bucles

Page 13: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

EjemploSe desea sumar una lista de números que ingresa desde teclado (por ejemplo, edades de los alumnos de una clase). El algoritmo debería ingresar el valor y sumarlo a una variable SUMA que contenga las sucesivas sumas parciales.

ALGORITMO sumaINICIO

Suma=0LEER númeroSuma = suma + númeroLEER númeroSuma = suma + número….

FIN

Como podemos observar, si no utilizamos alguna instrucción de repetir, el algoritmo deberá realizar tantas lecturas y sumas como alumnos se procesen: 10, 100, 1000,...

Estructuras de repeticion. Bucles

Page 14: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

Es evidente que el método no es óptimo, pero el ejemplo sirve para identificar las instrucciones que se repiten. En este caso, el bucle está formado por las instrucciones:

LEER númerosuma = suma + número

y la cantidad de iteraciones estará relacionada con el número de alumnos que se procesen durante la ejecución.

Entonces, las dos cuestiones importantes cuando se utilizan estructuras repetitivas son: ¿qué contiene el bucle? y ¿cuántas veces se repite?

Las estructuras repetitivas se diferencian en la forma en que se produce la condición de fin del bucle y deberá utilizarse aquella más apropiada al problema particular de que se trate.

A continuación, veremos las más usuales:

Estructuras de repeticion. Bucles

Page 15: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La estructura PARA (for)

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 99.

INICIOESCRIBIR 2ESCRIBIR 4[…]ESCRIBIR 96ESCRIBIR 98

FIN

Se dijo que la computadora es muy hábil para repetir tareas sencillas, como la del problema. Cuando se necesita que la computadora repita una operación, con una pequeña variación cada vez, se deben identificar las condiciones para la repetición, y expresar esta variación de una forma comprensible para la máquina.

Estructuras de repeticion. Bucles

Page 16: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La estructura PARA (for)

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 99.

En este caso, lo que se desea es una secuencia de números pares, que van desde 2 hasta 98. Estos números pueden expresarse como 2 x k, siendo k un entero que varía entre 1 y 98/2 = 49.

Cuando se conoce exactamente la cantidad de veces que es necesario repetir una instrucción, la estructura más apropiada para expresarlo como algoritmo es la estructura PARA. En este caso se puede escribir:

INICIOPARA k DESDE 1 HASTA 49

ESCRIBIR k * 2FIN-PARAFIN

Estructuras de repeticion. Bucles

Page 17: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Estructuras básicas

La estructura PARA (for)

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 99.

En este caso, lo que se desea es una secuencia de números pares, que van desde 2 hasta 98. Estos números pueden expresarse como 2 x k, siendo k un entero que varía entre 1 y 98/2 = 49.

Cuando se conoce exactamente la cantidad de veces que es necesario repetir una instrucción, la estructura más apropiada para expresarlo como algoritmo es la estructura PARA. En este caso se puede escribir:

INICIOPARA k DESDE 1 HASTA 49

ESCRIBIR k * 2FIN-PARAFIN

Estructuras de repeticion. Bucles

Otra opción sería:INICIO

PARA i DESDE 2 HASTA 98 INCREMENTO 2ESCRIBIR i

FIN-PARAFIN

Page 18: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Estructuras básicas

La estructura PARA (for)

Si ahora se solicita:

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 200.

la solución mantiene su sencillez de expresión:

INICIOPARA N DESDE N HASTA 200 INCREMENTO 2

ESCRIBIR iFIN-PARA

FIN

Estructuras de repeticion. Bucles

Page 19: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La estructura PARA (for)

La estructura PARA en forma general es:

PARA variable DESDE inicial HASTA final [INCREMENTO incremento]INSTRUCCIÓN[…]INSTRUCCIÓN

FIN-PARA

Donde:variable es el nombre de una variable de tipo numérico, en particular entero, definida en el programa, cuyos valores se irán modificando en cada repetición. Es común utilizar como nombre de esta variable i, que proviene de la palabra índice (index en inglés), y si se utilizan varias instrucciones PARA, emplear las letras siguientes del abecedario: j, k, l.

inicial es el valor que toma la variable en la primera repetición.

final es el valor que toma la variable en la última repetición.

incremento es el incremento que recibirá la variable entre repeticiones, es decir, el valor que se le sumará a variable cada vez que se termine una repetición y antes de iniciar la siguiente. Si se omite, se considera que vale 1. También puede tomar valores negativos.

Estructuras de repeticion. Bucles

Page 20: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La estructura MIENTRAS (while…do) y la estructura HASTA (repeat…until)

En algunos casos no se conoce de antemano la cantidad de veces que será necesario repetir un conjunto de instrucciones para solucionar el problema, o bien es conveniente que estas instrucciones sean repetidas hasta alcanzar una determinada condición (llamada condición de parada). En estas situaciones se emplean estructuras repetitivas más generales que PARA, como las estructuras

MIENTRAS y HASTA.

Estructuras de repeticion. Bucles

Page 21: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La estructura MIENTRAS (while…do) y la estructura HASTA (repeat…until)

Problema: Se desea un programa que calcule e informe el precio de una llamada telefónica, a partir del número de minutos ingresado por el operador, sabiendo que el precio por minuto es de $0,23. Esta operación debe repetirse cada vez que el operador ingrese una cantidad de minutos mayor que 0, y detenerse en caso contrario.

Como se desconoce la cantidad de veces que se repetirá el cálculo del precio, y tampoco puede solicitarse al operador que indique este dato al inicio del programa, la estructura PARA no es apropiada para resolver el problema.

INICIOLEER minutosHACER

precio = minutos * 0,23ESCRIBIR precioLEER minutos

HASTA minutos <= 0FIN

Estructuras de repeticion. Bucles

Page 22: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

6.3.2 La estructura MIENTRAS (while…do) y la estructura HASTA (repeat…until)

Puede cuestionarse que si el operador ingresa un número menor que 0 la primera vez, el programa mostrará un valor incorrecto y solicitará un nuevo dato antes de detenerse.

Una solución alternativa sería:INICIO

LEER minutosMIENTRAS minutos > 0

precio = minutos * 0,23ESCRIBIR precioLEER minutos

FIN-MIENTRASFIN

Estructuras de repeticion. Bucles

En este caso, el operador puede ingresar un número menor o igual a cero la primera vez que el programa le solicita un dato, y el programa se detendrá sin informar un precio erróneo.

Es importante notar que las condiciones de parada son diferentes. Existen muchas posibilidades para expresar la solución a este problema

Page 23: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

La estructura MIENTRAS (while…do) y la estructura HASTA (repeat…until)

La estructura MIENTRAS tiene la forma:

MIENTRAS condiciónINSTRUCCIÓN[…]INSTRUCCIÓN

FIN-MIENTRASAl ejecutarse se evalúa condición, y en caso de resultar verdadera se ejecutan las instrucciones del bloque, mientras condición mantenga su valor verdadero.

La estructura HASTA toma la forma:HACER

INSTRUCCIÓN[…]INSTRUCCIÓN

HASTA condición

Se dice que MIENTRAS y HASTA son formas más generales de iterar que PARA porque esta última se puede expresar utilizando tanto MIENTRAS como HASTA.

Estructuras de repeticion. Bucles

Page 24: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Computacion - FA.CE.NA.

Sentencias de Control

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 99.

que se resolvió utilizando PARA de la siguiente manera:INICIOPARA k DESDE 1 HASTA 49

ESCRIBIR k * 2FIN-PARAFIN

también puede expresarse utilizando MIENTRAS:

INICIO k = 1MIENTRAS k <= 49

ESCRIBIR k * 2k = k + 1

FIN-MIENTRASFIN

Estructuras de repeticion. Bucles

O utilizando HASTA:

INICIOk = 1HACER

ESCRIBIR k * 2k = k + 1

HASTA k > 49FIN

Page 25: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Estructuras básicas

Instrucción INTERRUMPIR (BREAK)

Esta instrucción se utiliza cuando se desea terminar un bucle en un lugar determinado del cuerpo del bucle sin esperar a que este termine de modo natural por su entrada o su salida. Esta instrucción corta el ciclo de ejecución, debe ser utilizada con precaución.

Ejemplo:LEER númeroHACER

IF número <= 0 INTERRUMPIRsuma = suma + númeroLEER número

HASTA número > 100

La instrucción Interrumpir sale del bucle HACER y sigue con la instrucción siguiente a la instrucción HASTA.La sentencia INTERRUMPIR (BREAK) se utiliza frecuentemente junto con una sentencia SI (IF) actuando como una condición interna del bucle.

Terminaciones Anormales

Page 26: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Computacion - FA.CE.NA.

Sentencias de Control

Instrucción CONTINUAR (CONTINUE)

Esta instrucción hace que el flujo de ejecución salte el resto de un cuerpo del bucle para continuar con el siguiente bucle o iteración. Esta característica suele ser útil en algunas condiciones.

Ejemplo:PARA i DESDE 0 HASTA 20

SI (i mod 4 = 0 ) ENTONCESCONTINUAR

FIN-SIESCRIBIR i, “ , “

FIN-PARA

En este ejemplo, si el valor de i es múltiplo de 4, no escribe ese valor en la salida.El resultado de este bucle será: 1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 18, 19.La sentencia CONTINUAR no afecta la cantidad de veces que se debe ejecutar el bucle.

Terminaciones Anormales

Page 27: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Sentencias de Control

En un algoritmo puede existir y es muy frecuente que existan 2 o más bucles. Dependiendo de la forma en que estén dispuestos, estos pueden ser anidados o independientes.

Decimos que los bucles están anidados cuando están dispuestos de forma tal que unos son interiores a otros; y los bucles serán independientes cuando son extremos unos con otros.

Así como se podían anidar estructuras de selección, también es posible insertar un bucle dentro de otro. Las reglas para construir estructuras repetitivas anidadas son iguales en ambos casos: la estructura interna debe estar incluida totalmente dentro de la externa y no puede existir solapamiento.

Diseño de bucles. Bucles Anidados

Page 28: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Computacion - FA.CE.NA.

Sentencias de Control Diseño de bucles. Bucles Anidados

I NDEPENDI ENTES ANI DADAS

PERM I TI DAS Y PRO HI BI DAS

NI DO S CRUZADO S

SALI R DEL BUCLE ENTRAR AL BUCLE

Page 29: Basado en: //exa.unne.edu.ar/ingenieria/computacion/index.htm Sentencias de control Estructuras

Estructuras básicas

Diseño de bucles. Bucles Anidados