Uberimo

Solo disponible en BuenasTareas
  • Páginas : 7 (1575 palabras )
  • Descarga(s) : 4
  • Publicado : 16 de marzo de 2010
Leer documento completo
Vista previa del texto
PROGRAMACIÓN EN PASCAL(2)
ESTRUCTURAS DE CONTROL DE FLUJO
  Hola de nuevo, en esta nueva entrega vamos a ocuparnos de las estructuras de flujo. Podeís bajar la lección pulsando aquí.
    Como ya sabéis, un programa no es más que un conjunto secuencial de instrucciones que después el ordenador ejecutará una por una. Sin embargo en muchas ocasiones nos interesa que el ordenador no ejecute todaslas instrucciones en un orden cronológico, sino que en ocasiones "salte" a una determinada instrucción, vuelva al principio, etc... Por ejemplo, si queremos que nuestro programa escriba 100 veces "Hola" podríamos teclear 100 instrucciones writeln('hola'); pero esto sería un rollo :-( y además poco elegante, lo lógico sería incluir una única instrucción writeln('hola') y después hacer que elprograma repita esta instrucción 100 veces antes de pasar a la siguiente.
 

El bucle for:

    En el ejemplo anterior queremos conseguir más o menos esto (en pseudocódigo):
    Repetir 100 veces
        (Escribir "hola")
    Seguir con la siguiente instrucción.
    En Pascal esto lo logramos con la instrucción FOR, cuya sintaxis es la siguiente:
 
    For variable:=índice to índice+x do
   begin
        *(instrucciones que queremos que se ejecuten x veces)*
    end;
   Volviendo al ejemplo anterior el programa completo sería una cosa así:
program cien; uses crt;
var
    a: integer;
begin
    for a:=1 to 100 do
    begin
        writeln('hola'); (*Aquí no sería necesario poner la instrucción entre begin y end porque sólo hay una*)
    end;
end.
    En este programahacemos uso por primera vez de una variable, por lo que es conveniente que nos detengamos un poco sobre ese punto. Podríamos definir una variable como un lugar de la memoria donde se van a guardar determinados valores de utilidad para el programa. Si volvemos al ejemplo anterior vemos que el programa tiene que ejecutar 100 veces una instrucción, pero ¿cómo sabe el programa cuántas veces ha ejecutadoesa instrucción? Pues mirando el valor que tiene una variable previamente creada para ello.
    Para hacer uso de las variables tenemos que declararlas préviamente esto se hace inmediatamente después de la cabecera del programa y antes del programa principal:
    program nombre_del_programa; uses crt;  (*cabecera del programa*)
   var                                                                    (*declearción de variables*)
        i: integer;
    begin
        (*instrucciones*)                                          (*programa principal*)
    end.
 
    Así que en el caso anterior declaramos una variable de tipo integer(entero). Sobre los tipos de variables hablaremos más adelante, por ahora diré que la variable debe ser de tipo integer (-1,0,1,2,..) porque vamos a utilizarla para contar de 1 hasta 100, por ello necesitamos que tomevalores enteros.
    Después entramos en el bucle for que se ejecutará mientras la variable que usamos como contador tome valores entre 1 y 100. Dentro de este bucle hay una única instrucción: writeln('Hola'); por lo que cada vez que se ejecute el bucle se escribirá "Hola" en la pantalla y se incrementará en 1 el valor de la variable contador. Por último cuando la variable tome un valor superiora 100 el programa saldrá del bucle y finalizará su ejecución.
 

Los bucles REPEAT y WHILE:

    Ahora bien, también es posible que no sepamos cuántas veces han de ejecutarse determinadas instrucciones, sino que éstas tienen que ejecutarse hasta que se cumpla una determinada condición. Por ejemplo puede que nos interese mantener un menú en pantalla hasta que el usuario pulse la tecla 'S'.    En este caso el pseudocódigo sería:
    Repetir
        instrucciones
    hasta condición=verdadera
    Y en Pascal:
    Repeat
        begin
            *(instrucciones)*
        end;
    until (condición)
    Un ejemplo concreto en el que se nos muestra el nombre del programa hasta que pulsamos la tecla 'S' sería:
   ...
tracking img