You are on page 1of 21

Estructuras bsicas

Estructuras bsicas
1 Programacin estructurada

La programacin estructurada es una forma de escribir programas de


computadora deforma clara, utilizando nicamente tres estructuras:
secuencia, seleccin e iteracin; siendo innecesario y no
permitindose el uso de la instruccin o instrucciones de
transferencia incondicional.

La programacin estructurada surge a finales de los aos 1960 con el


objetivo de realizar programas confiables y eficientes, y que adems
fueran escritos de manera de facilitar su comprensin posterior.

Hoy en da las aplicaciones informticas son mucho ms ambiciosas


que las necesidades de aquellos aos, por lo que se desarrollaron
nuevas tcnicas, tales como la programacin orientada a objetos y el
desarrollo de entornos de programacin que facilitan la programacin
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 programacin de computadoras.
Estructuras bsicas
1 Programacin estructurada

El teorema del programa estructurado, de Bhm-Jacopini,


demuestra que todo programa puede escribirse utilizando
nicamente las tres instrucciones de control siguientes:

Secuencia
Instruccin condicional.
Iteracin (bucle de instrucciones) con condicin al
principio.

Solamente con estas tres estructuras o patrones lgicos se


pueden escribir todos los programas y aplicaciones posibles.
Si bien los lenguajes de programacin tienen un mayor
repertorio de estructuras de control, stas pueden ser
construidas mediante las tres bsicas.
Estructuras bsicas
1 Programacin estructurada

A C C IO N 1
C o n d ic io n No
NO Condicion SI NO Condicion SI

Si

Accion Accion Accion

A C C IO N 2
A c c io n e s

A C C IO N N

1 2

A c c io n e s

C o n d ic io n No

SI
Estructuras bsicas
1 Programacin estructurada

El flujo de control de un programa

La expresin flujo de control hace referencia al orden en el que se


ejecutarn las instrucciones de un programa, desde su comienzo hasta
que finaliza. El flujo normal de ejecucin es el secuencial. Si no se
especifica lo contrario, la ejecucin de un programa empezara por la
primera instruccin e ira procesando una a una en el orden en que
aparecen, hasta llegar a la ltima.
Algunos programas muy simples pueden escribirse slo con este flujo
unidireccional. No obstante, la mayor eficacia y utilidad de cualquier
lenguaje de programacin se deriva de la posibilidad de cambiar el orden
de ejecucin segn la necesidad de elegir uno de entre varios caminos en
funcin de ciertas condiciones, o de ejecutar algo repetidas veces, sin
tener que escribir el cdigo para cada vez.
Con frecuencia, el programador necesita que el programa no se
comporte slo de modo secuencial. Por ejemplo, calcular una funcion f(x)
para los X > 0.
Estructuras bsicas
1 Programacin estructurada

El flujo de control de un programa

Tambin 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 algn clculo 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. Tambin cumplen con
este objetivo las sentencias denominadas de invocacin o salto.
Las sentencias alternativas tambin son conocidas como sentencias
selectivas porque permiten seleccionar uno de entre varios caminos por
donde seguir la ejecucin del programa. En algunos casos esta seleccin
viene determinada por la evaluacin de una expresin lgica.
Estructuras bsicas
2 Estructura de seleccin. Sentencias anidadas.

Segn lo expresado, las estructuras de decisin simple y doble


permiten seleccionar entre dos alternativas posibles. Sin embargo, la
instruccin SI-ENTONCES puede ser utilizada tambin en casos de
seleccin de ms 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 representacin en pseudocdigo es la
siguiente:
Como se puede observar, el
anidamiento de instrucciones
SI <condicin_1> ENTONCES alternativas permite ir descartando
< sentencias_1 > valores hasta llegar al bloque de
SINO instrucciones que se debe ejecutar.
SI <condicin_2> ENTONCES En las instrucciones SI anidadas, las
instrucciones ENTONCES y FIN-SI se
< sentencias_2 > aplican automticamente a la
SINO instruccin SI anterior ms prxima.
SI <condicin_3> ENTONCES A fin de que las estructuras anidadas
< sentencias_3 > sean ms fciles de leer, es prctica
habitual aplicar sangra al cuerpo de
SINO cada una.
.
.
FIN-SI
FIN-SI
FIN-SI
Estructuras bsicas
2 Estructura de seleccin. Sentencias anidadas.

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 fro Apague el equipo

ALGORITMO Sensor
INICIO
LEER temperatura
SI temperatura > 100 ENTONCES
ESCRIBIR Temperatura muy alta Mal funcionamiento
SINO
SI temperatura > 90 ENTONCES
ESCRIBIR Rango normal
SINO
SI temperatura > 50 ENTONCES
ESCRIBIR Bajo el rango normal
SINO
ESCRIBIR Muy fro Apague equipo
FIN-SI
FIN-SI
FIN-SI
FIN
Estructuras bsicas
3 Estructuras de Control. Bucles

En muchas ocasiones la forma ms apropiada de expresar un


algoritmo consiste en la repeticin de una misma instruccin de
manera controlada, una cantidad finita de veces determinada de
antemano (al disear el programa) o en tiempo de ejecucin
(cada vez que se corre el programa).
Por ejemplo, podra ser necesario disear un algoritmo similar al
de los cajeros automticos, que solicite una clave al usuario y
bloquee el acceso en caso de no ingresar la contrasea correcta
luego de tres intentos. O bien, si se desea procesar grupos de
datos ingresados por teclado o ledos desde un archivo, hasta que
no se encuentren ms datos.
Las estructuras algortmicas 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 nmero determinado de veces se denominan
repetitivas o bucles; y se denomina iteracin a la ejecucin de
cada repeticin.
Estructuras bsicas
3 Estructuras de repeticion. Bucles
Ejemplo
Se desea sumar una lista de nmeros que ingresa desde teclado
(por ejemplo, edades de los alumnos de una clase). El
algoritmo debera ingresar el valor y sumarlo a una variable
SUMA que contenga las sucesivas sumas parciales.

ALGORITMO suma
INICIO
Suma=0
LEER nmero
Suma = suma + nmero
LEER nmero
Suma = suma + nmero
.
FIN

Como podemos observar, si no utilizamos alguna instruccin de repetir,


el algoritmo deber realizar tantas lecturas y sumas como alumnos se
procesen: 10, 100, 1000,...
Estructuras bsicas
3 Estructuras de repeticion. Bucles

Es evidente que el mtodo 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 nmero
suma = suma + nmero

y la cantidad de iteraciones estar relacionada con el nmero de


alumnos que se procesen durante la ejecucin.

Entonces, las dos cuestiones importantes cuando se utilizan


estructuras repetitivas son: qu contiene el bucle? y cuntas veces
se repite?

Las estructuras repetitivas se diferencian en la forma en que se


produce la condicin de fin del bucle y deber utilizarse aquella ms
apropiada al problema particular de que se trate.

A continuacin, veremos las ms usuales:


Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.1 La estructura PARA (for)


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

INICIO
ESCRIBIR 2
ESCRIBIR 4
[]
ESCRIBIR 96
ESCRIBIR 98
FIN

Se dijo que la computadora es muy hbil para repetir tareas sencillas,


como la del problema. Cuando se necesita que la computadora repita
una operacin, con una pequea variacin cada vez, se deben identificar
las condiciones para la repeticin, y expresar esta variacin de una
forma comprensible para la mquina.
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.1 La estructura PARA (for)


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

En este caso, lo que se desea es una secuencia de nmeros pares,


que van desde 2 hasta 98. Estos nmeros pueden expresarse como 2
x k, siendo k un entero que vara entre 1 y 98/2 = 49.

Cuando se conoce exactamente la cantidad de veces que es necesario


repetir una instruccin, la estructura ms apropiada para expresarlo
como algoritmo es la estructura PARA. En este caso se puede
escribir:

INICIO
PARA k DESDE 1 HASTA 49
ESCRIBIR k * 2
FIN-PARA
FIN
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.1 La estructura PARA (for)


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

En este caso, lo que se desea es una secuencia de nmeros pares,


que van desde 2 hasta 98. Estos nmeros pueden expresarse como 2
x k, siendo k un entero que vara entre 1 y 98/2 = 49.

Cuando se conoce exactamente la cantidad de veces que es necesario


repetir una instruccin, la estructura ms apropiada para expresarlo
como algoritmo es la estructura PARA. En este caso se puede
escribir:

INICIO
PARA k DESDE 1 HASTA 49 Otra opcin sera:
ESCRIBIR k * 2 INICIO
FIN-PARA PARA i DESDE 2 HASTA 98 INCREMENTO 2
FIN ESCRIBIR i
FIN-PARA
FIN
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.1 La estructura PARA (for)


Si ahora se solicita:

Problema: Se desea un programa que muestre en pantalla


los nmeros pares entre 1 y 200.

la solucin mantiene su sencillez de expresin:

INICIO
PARA N DESDE N HASTA 200 INCREMENTO 2
ESCRIBIR i
FIN-PARA
FIN
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.1 La estructura PARA (for)


La estructura PARA en forma general es:

PARA variable DESDE inicial HASTA final [INCREMENTO incremento]


INSTRUCCIN
[]
INSTRUCCIN
FIN-PARA

Donde:
variable es el nombre de una variable de tipo numrico, en particular entero,
definida en el programa, cuyos valores se irn modificando en cada
repeticin. Es comn utilizar como nombre de esta variable i, que proviene
de la palabra ndice (index en ingls), 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 repeticin.
final es el valor que toma la variable en la ltima repeticin.
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
repeticin y antes de iniciar la siguiente. Si se omite, se considera que vale
1. Tambin puede tomar valores negativos.
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.2 La estructura MIENTRAS (whiledo) y la estructura HASTA


(repeatuntil)
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 condicin (llamada
condicin de parada). En estas situaciones se emplean estructuras
repetitivas ms generales que PARA, como las estructuras
MIENTRAS y HASTA.
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.2 La estructura MIENTRAS (whiledo) y la estructura HASTA


(repeatuntil)
Problema: Se desea un programa que calcule e informe el precio de
una llamada telefnica, a partir del nmero de minutos ingresado
por el operador, sabiendo que el precio por minuto es de $0,23.
Esta operacin 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


clculo 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.

INICIO
LEER minutos
HACER
precio = minutos * 0,23
ESCRIBIR precio
LEER minutos
HASTA minutos <= 0
FIN
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.2 La estructura MIENTRAS (whiledo) y la estructura HASTA


(repeatuntil)
Puede cuestionarse que si el operador ingresa un nmero menor que 0 la
primera vez, el programa mostrar un valor incorrecto y solicitar un
nuevo dato antes de detenerse.

Una solucin alternativa sera:


INICIO
LEER minutos En este caso, el operador puede ingresar un nmero
menor o igual a cero la primera vez que el programa
MIENTRAS minutos > 0 le solicita un dato, y el programa se detendr sin
precio = minutos * 0,23 informar un precio errneo.

ESCRIBIR precio Es importante notar que las condiciones de parada


LEER minutos son diferentes. Existen muchas posibilidades para
expresar la solucin a este problema
FIN-MIENTRAS
FIN
Estructuras bsicas
3 Estructuras de repeticion. Bucles

3.2 La estructura MIENTRAS (whiledo) y la estructura HASTA


(repeatuntil)
La estructura MIENTRAS tiene la forma:

MIENTRAS condicin
INSTRUCCIN
[]
INSTRUCCIN
FIN-MIENTRAS
Al ejecutarse se evala condicin, y en caso de resultar verdadera se
ejecutan las instrucciones del bloque, mientras condicin mantenga su valor
verdadero.

La estructura HASTA toma la forma:


HACER
INSTRUCCIN
[]
INSTRUCCIN
HASTA condicin

Se dice que MIENTRAS y HASTA son formas ms generales de iterar que


PARA porque esta ltima se puede expresar utilizando tanto MIENTRAS
como HASTA.
Estructuras bsicas
3 Estructuras de repeticion. Bucles

Problema: Se desea un programa que muestre en pantalla


los nmeros pares entre 1 y 99.
que se resolvi utilizando PARA de la siguiente manera:
INICIO
PARA k DESDE 1 HASTA 49
ESCRIBIR k * 2
FIN-PARA
FIN

tambin puede expresarse utilizando


MIENTRAS: O utilizando HASTA:
INICIO INICIO
k = 1 k = 1
MIENTRAS k <= 49
HACER
ESCRIBIR k * 2
ESCRIBIR k * 2
k = k + 1
k = k + 1
FIN-MIENTRAS
HASTA k > 49
FIN
FIN

You might also like