PROGRAMACIÓN ESTRUCTURADA

download PROGRAMACIÓN ESTRUCTURADA

of 28

description

PROGRAMACIÓN ESTRUCTURADA

Transcript of PROGRAMACIÓN ESTRUCTURADA

  • PROGRAMACIN ESTRUCTURADA

    En programacin, la utilizacin de variables se hace imprescindible, sobre todo si se desea que un programa no se limite a trabajar con unos datos concretos, sino que el usuario, o el propio programa, pueda intervenir en estos datos para modificarlos y variar as el resultado final del programa.

    Por otra parte, los programas as de crearse siguiendo una estructura secuencial, ya que de este modo ser ms sencillo su diseo, escritura e interpretacin. Adems de esta estructura secuencial, existen otras, entre las que destacan las estructuras selectivas y las estructuras repetitivas, que proporcionan tcnicas de trabajo muy interesantes.

  • Tipos de datos y declaracin de variables

    Tanto en el mundo real como en informtica, los datos pueden ser de distintos tipos: textos, nmeros enteros, nmeros decimales, fechas, etc.; por este motivo, y aunque en el tema anterior no se tuvo en cuenta, conviene declarar, mediante las instrucciones necesarias, el tipo de cada uno de los datos que se vaya a procesar en un programa.

    Por otra parte, los datos pueden comportarse de dos modos diferentes en un programa:

    Como constantes; su valor no cambia nunca durante la ejecucin del programa. Como variables; su valor vara tantas veces como sea necesario.

    A la hora de nombrar un dato, hay que tener en cuenta que:

    Se puede utilizar cualquier carcter alfanumrico, pero siempre debe comenzar con una letra.

    No se pueden incluir espacios en blanco, por lo que es frecuente utilizar el carcter guin bajo (_) para nombres compuestos.

    La longitud del nombre no puede ser superior a 32 caracteres. No se pueden utilizar puntos ni otros caracteres especiales, ni tampoco palabras

    clave del lenguaje: text, caption, for, and,

    De los distintos tipos de datos con los que se puede trabajar, los ms importantes son los de la siguiente tabla: Tipo de dato Declaracin en

    Basic Descripcin

    Cadena de caracteres

    String Este dato ser una cadena de caracteres de hasta 64 Kb de longitud

    Entero Integer Este dato podr ser cualquier nmero entero comprendido entre -32 768 y 32 767

    Entero largo Long Este dato podr ser cualquier nmero entero comprendido entre -2 147 483 648 y 2 147 483 647

    Decimal Single Cualquier nmero decimal comprendido entre -3,41038 y 3,41038

    Decimal doble precisin

    Double Cualquier nmero decimal (con doble precisin) comprendido entre -1,7910308 y 1,7910308

    Fecha y hora Date Este dato puede ser la fecha de cualquier da y hora de cualquier momento

    La declaracin de variables se realiza mediante la sentencia Dim, en la que se deben especificar el nombre de la variable y el tipo de dato que va a almacenar. Por defecto, las variables numricas comenzarn con valor cero, y las variables alfanumricas, con el carcter nulo (vaco). A continuacin se muestran unos ejemplos de utilizacin:

  • Dim artculo As String Dim cantidad As Integer Dim precio As Single Dim importe As Single

    Y de una manera ms resumida:

    Dim artculo As String Dim cantidad As Integer Dim precio, importe As Single

    Declaracin de constantes

    Existen valores que permanecen inalterables en un programa; si estos se utilizan con frecuencia en el programa, y adems su valor es difcil de recordar o escribir, sera muy interesante poderlos definir de algn modo para que resultara ms secillos incluirlos en las expresiones.

    Con esta intencin se pueden definir, en Visual Basic, constantes con las mismas caractersticas que las variables, salvo una importante diferencia: el valor de una constante no puede ser modificado durante la ejecucin del programa.

    Las sentencias para definir constantes son similares a las utilizadas con las variables, aunque ahora hay que utilizar la instruccin Const:

    Const nombre = valor Const nombre As Tipo de dato = valor

    Utilizacin de constantes y variables con controles

    Adems de poder asignar valores a las variables mediante sentencias de asignacin, las variables pueden utilizarse conjuntamente con distintos controles, de modo que, por ejemplo, sea posible asignar a una variable el contenido de un cuadro de texto o imprimir el valor de otra en una etiqueta. En el siguiente programa se muestra un ejemplo.

    Primero se declara la constante y las variables que se van a utilizar en el programa, y en el caso de la constante, se le asigna un valor.

    El procedimiento asignado al evento hacer clic del botn Calcular (CommandButton1) permite asignar el valor del cuadro de texto a la variable radio, calcular el valor de la longitud y el rea de la circunferencia y el rea del crculo, y mostrar los valores resultantes en las etiquetas preparadas para ello (Label4 y Label5).

    Observa en la siguiente figura el aspecto del formulario, una vez que se ha introducido un valor de radio en el cuadro de texto y se ha hecho clic sobre el botn Calcular. En l se indican, como referencia, los nombres de los controles agregados al formulario.

  • Prctica 7: Realiza el programa anterior y gurdalo como vbtunombre7.

    Label1

    Label2

    Label3

    TextBox1 (introducir los decimales con coma)

    CommandButton1

    Label4

    CommandButton2

    Label5

    Aqu, los decimales se ponen con punto

  • Operaciones aritmticas y de asignacin

    La funcin de los operadores aritmticos es la de permitir realizar, con los datos de las distintas variables, las clsicas operaciones de sumar, restar, multiplicar, dividir, as como otras no tan elementales.

    Los operadores aritmticos bsicos son los que se muestran en la siguiente tabla:

    Operacin Operador Caracterstica Suma + Calcula la suma de dos o ms datos o variables Diferencia - Calcula la diferencia entre dos datos Multiplicacin * Multiplica el valor de las variables Divisin / Calcula el valor de la divisin de dos datos o variables

    numricas Potenciacin ^ Calcula el valor de la divisin de dos datos o variables

    numricas Cociente de la divisin

    \ Calcula el cociente de la divisin de dos datos o variables numricas

    Resto de la divisin

    Mod Calcula el resto de la divisin entre los datos indicados

    Las prioridades a la hora de realizar una operacin aritmtica son las habituales:

    1. Potencias 2. Multiplicaciones y divisiones 3. Sumas y restas

    Cuando existen varias operaciones con la misma prioridad, se efectuarn de izquierda a derecha. Para alterar la prioridad, hay que utilizar parntesis.

    Observa el siguiente formulario, diseado para efectuar los principales clculos aritmticos con los nmeros que se introducen en los cuadros de texto. El formulario consta de diecisis etiquetas, dos cuadros de texto y dos botones de accin.

    En las etiquetas que muestran el resultado de alguna operacin (Label10,, Label16) se ha seleccionado el color Sombra iluminada del botn para la propiedad BackColor.

  • Analiza las sentencias del procedimiento del programa que muestra la siguiente figura y comprenders mejor el significado de algunas operaciones no tan triviales.

    Prctica 8: Realiza el programa anterior y gurdalo como vbtunombre8.

    Val es una funcin de Visual Basic que permite tratar un dato como valor numrico

    Hay que teclear dos veces y borrar una vez para que salga ^

    Con Alt Gr, en la tecla a la izquierda del 1

  • Curiosidad acerca del operador suma (+)

    Al observar el cdigo del programa anterior, se puede comprobar que para calcular la suma de dos datos se utiliz una sentencia que inclua la funcin Val, la cual obliga al programa a tratar un dato como un valor numrico.

    Si no se hubiera utilizado esta funcin, el resultado de sumar los dos valores no hubiera sido correcto, ya que el programa hubiera concatenado los dos valores. Comprueba el resultado con la siguiente prctica:

    Prctica 9: reduce el programa anterior a calcular solo la operacin SUMA; prescinde de la funcin Val en la lnea de cdigo correspondiente. Ejecuta el programa y observa el resultado. Guarda el documento como vbtunombre9.

    Asignacin de valores

    La operacin consiste en dar valor a una variable. En Visual Basic, la asignacin de variables se realiza utilizando el carcter del signo igual (=), tal y como has comprobado en los programas anteriores.

    Esta operacin de asignacin podra parecer equivalente a la igualdad matemtica; sin embargo, aunque el carcter utilizado sea el mismo, tiene funciones totalmente diferentes.

    En matemticas, el operador de igualdad se utiliza para indicar que dos expresiones son exactamente iguales.

    13 + 4 = 17

    En informtica, el operador de igualdad se utiliza para asignar un valor a una variable, por lo que pueden darse distintas situaciones.

    A = 13 + 8 SUMA = A + B

    Existe una operacin que en matemticas no tiene sentido y, sin embargo, en informtica se utiliza en un gran nmero de ocasiones, como, por ejemplo, para incrementar el valor que tenga en ese momento una variable ms/menos otro que se especifique.

    A = A + 1

    A continuacin, se va a crear un programa que permitir comprobar cmo es posible, en informtica, utilizar el operador de asignacin para modificar el valor de una variable con el resultado de una operacin en la que est implicado el valor de la propia variable.

    Adems, se va a aprovechar la ocasin para estudiar la funcin InputBox, y aprender as otro modo de introducir datos en un programa y asignarlos a ciertas variables que estuvieran definidas previamente. La sintaxis de la funcin, de forma resumida es as:

  • InputBox (mensaje,[ttulo])

    El argumento que se muestra entre corchetes es optativo, por lo que no hay obligacin de utilizarlo. El significado de los argumentos es:

    Mensaje: este texto aparecer en el cuadro de dilogo para informar al usuario de qu debe introducir

    Ttulo: este texto de aparecer en la barra de ttulo del cuadro

    Observa el siguiente programa:

    El resultado de ejecutar este programa sera:

    El valor que se introduzca en cada cuadro de dilogo quedar almacenado en la variable a la que se haya asignado la funcin

    En matemticas, esta expresin no tendra sentido; un valor nunca puede ser igual a s mismo ms otro. Sin embargo, en informtica es perfectamente vlida: la variable tomar el valor resultante de sumar el valor que tenga en ese momento ms el que se haya indicado como incremento.

  • ,

    Prctica 10: Realiza el programa anterior. Gurdalo como vbtunombre10.

  • Estructuras selectivas

    Estructuras bsicas de control

    La programacin estructurada proporciona una serie de tcnicas que facilitan la tarea de programar, ya que reducen el tiempo requerido para escribir, verificar, depurar y modificar los programas.

    Esta programacin se basa en la utilizacin de ciertas estructuras bsicas, como son las estructuras secuenciales, las estructuras selectivas y las estructuras repetitivas.

    Estructuras secuenciales. Las estructuras secuenciales permiten que la ejecucin del programa se realice siguiendo un orden determinado. Por este motivo, las sentencias han de escribirse de forma secuencial, una tras otra, en el mismo orden en el que deban interpretarse al ejecutar el programa.

    Estructuras selectivas. Las estructuras selectivas se utilizan para tomar decisiones lgicas, por lo que tambin se las conoce con el nombre de estructuras de decisin o alternativas. En ellas se evala

    una condicin, y en funcin de su resultado, se realizan unas u otras acciones.

    TOTAL > 0

    INSTRUCCIN 1 INSTRUCCIN 2

    INSTRUCCIN 3 INSTRUCCIN 4

    NO

    S

    NUM 1 = 0 NUM 2 = 0 SUMA = 0

    Leer teclado NUM 1 + NUM 2

    SUMA = NUM1 + NUM2

  • Estructuras repetitivas. Este tipo de estructuras, tambin denominadas bucles, se caracterizan por repetir una secuencia de instrucciones un nmero determinado de veces.

    Por otra parte, se conoce con el nombre de iteracin a la ejecucin de todas las acciones o instrucciones que forman un bucle. Hay que tener en cuenta que en toda estructura repetitiva debe existir una condicin que controle cundo deben finalizar las iteraciones del bucle.

    Sentencia If

    En Visual Basic, como en todos los lenguajes de programacin, existen varias instrucciones condicionales o selectivas, llamadas as porque evalan una condicin y, dependiendo de su resultado, seleccionan un conjunto de instrucciones para ejecutar.

    La sentencia if evala una condicin y, en caso de cumplirse, ejecuta una serie de instrucciones determinadas; en caso contrario seguir ejecutndose el programa o se realizarn otras instrucciones alterativas.

    El formato general de esta sentencia es:

    If condicin Then sentencia1 [Else sentencia2] [End If]

    Si la condicin es cierta, se ejecutar la sentencia1 y no se ejecutar la sentencia2, aunque se hubiera escrito.

    En caso de que la condicin sea falsa, no se ejecutar la sentencia1 y s lo har, si se hubiera escrito, la sentencia2.

    Leer del teclado NUM TOTAL = TOTAL + NUM

    TOTAL 100

    INSTRUCCIN 1 INSTRUCCIN 2

    Cuerpo del bucle

    Condicin del bucle. El bucle se repetir mientras la suma de los nmeros introducidos sea menor o igual a 100.

  • A continuacin se muestra un formulario con su cdigo que muestra cul de los dos nmeros introducidos es mayor.

    Prctica 11: copia el programa anterior y gurdalo como vbtunombre11.

    Existen diversas mejoras que se pueden plantear para el programa anterior; una de ellas ser la de conseguir que el programa diferencie si los datos son iguales, o si el segundo dato es mayor que el primero. La solucin para esta cuestin es muy sencilla: utilizar tantas sentencias If (sin argumentos Else) como posibilidades haya en el programa.

    Como puede verse, se han utilizado tres sentencias If para abarcar las tres posibilidades que surgen al comparar dos datos.

    Puesto que las tres sentencias If son independientes, se evaluarn por separado y, como las condiciones son excluyentes entre s, solo se cumplir una de ellas, dando al final un solo resultado.

    Prctica 12: copia el programa anterior y gurdalo como vbtunombre12.

    condicin Instruccin que se ejecutar si se cumple la condicin

    Esta es la instruccin que se ejecutar si no se cumple la condicin

  • Operadores relacionales

    Como se ha visto anteriormente, en las condiciones se pueden utilizar los habituales operadores relacionales: mayor que, menor que, menor o igual que

    Operador Escritura Descripcin Igual que = La expresin a = b toma valor verdadero si a es igual que

    b, y falso si a es distinto que b. Mayor que > La expresin a > b toma valor verdadero si a es mayor

    que b, y falso si a es menor o igual que b. Menor que < La expresin a < b toma valor verdadero si a es menor

    que b, y falso si a es mayor o igual que b. Mayor o igual que

    >= La expresin a >= b toma valor verdadero si a es mayor o igual que b, y falso si a es menor que b.

    Menor o igual que

  • Prctica 13: evala las siguientes expresiones como verdaderas o falsas, teniendo en cuenta que a = 1, b = 2, c = 3 y d = 4.

    1. a > b And c > d 2. a > b Or c > d 3. b > a And c > d 4. b > a And d > c 5. Not a = b 6. c > a or not b = d 7. c = d

    Copia las anteriores expresiones en la primera columna de una tabla de Word y en la segundo columna pones Verdadero o Falso, segn proceda. Guarda el documento (aqu no hay ningn programa de Visual Basic) como vbtunombre13.

    Estructura If

    Cuando se vayan a ejecutar varias sentencias, tanto en el caso de que se cumpla la condicin de la sentencia If como en el de que no se cumpla, lo mejor es utilizar una estructura alternativa que permita ver mejor la secuencia del programa. Adems, esta estructura facilita la utilizacin de varias sentencias anidadas, es decir, unas dentro de otras.

    El formato general de esta estructura es el siguiente:

    If condicin Then Sentencia Sentencia

    Else Sentencia Sentencia

    End If

    En el siguiente programa se comparan tres nmeros introducidos en otros tantos cuadros de texto para obtener algunos de los posibles resultados de esta comparacin. Como puede verse, se han utilizado varias estructuras If que se comentan a continuacin:

  • 1. Todas las sentencias forman una estructura If, que a su vez tiene otra estructura If dentro de su clusula Else. Cada estructura If debe acabar con la sentencia End If.

    2. Solo se ejecutar si los tres valores son iguales (se ha utilizado el operador Y). 3. Solo ocurrir si los tres valores no son iguales (est dentro de la clusula Else

    del If anterior) y si hay dos iguales (se ha utilizado el operador O). 4. Solo ocurrir si los tres valores no son iguales (est dentro de la clusula Else

    del If externo) y si no hay dos iguales (est dentro de la clusula Else del If interno).

    5. Este If cierra la estructura If anidada o interna, llamada as porque est dentro de otra estructura.

    6. Este If cierra la estructura If externa. 7. Estas sentencias If son independientes del resto; tambin realizan varias

    acciones al cumplirse la condicin, pero estas se han escrito en la misma lnea separadas por el carcter dos puntos (:).

    2

    1 3

    4 5

    6

    7

  • Al ejecutar el programa se obtendr el resultado expuesto en la siguiente figura; en ella se han detallado los nombres de los controles empleados. Observa que el texto de la etiqueta 7 ser aquel que resulte de la evaluacin de las estructuras If anidadas, mientras que la colocacin de los valores en las etiquetas 8, 9 y 10, vendr determinada por la ejecucin de la sentencia If independiente que corresponda.

    Prctica 14: crea el programa anterior y gurdalo como vbtunombre14.

    Label1

    Label2

    Label3

    Label4

    Label5 y Label6

    Label7

    Label8

    Label9 Label10

    Textbox1, Textbox2 y Textbox3

    CommandButton1

    CommandButton2

  • Estructuras repetitivas

    Una de las principales ventajas de utilizar los ordenadores es que la repeticin de ciertas acciones se puede realizar de forma automtica, utilizando las estructuras repetitivas.

    Las instrucciones repetitivas o bucles permiten ejecutar un conjunto de instrucciones mientras se cumpla una determinada condicin; a estas instrucciones se las denomina cuerpo del bucle.

    Son varias las sentencias de Visual Basic que permiten crear bucles: For Next, While Wend, Do Loop, Goto, For Each Next. Aunque todas ellas tienen una funcin similar, sus particularidades hacen que cada una de ellas sea la ms adecuada para situaciones determinadas. A continuacin, se van a utilizar algunas de ellas, las ms frecuentes, para realizar diferentes planteamientos en los que se requiere la utilizacin de estructuras repetitivas.

    Control lista

    La finalidad general de un control del tipo lista es ofrecer una lista de elementos para que el usuario pueda seleccionar uno, aunque tambin puede utilizarse solo para mostrar un conjunto de datos en forma de lista. Con esta intencin vamos a utilizarlas a partir de este momento en algunos de los prximos programas.

    Las listas de elementos que muestran los controles del tipo lista no son estticas, sino que es posible agregar nuevos elementos, eliminar otros, e incluso, borrarlos todos y dejar la lista vaca. Para estas operaciones hay que utilizar algunos de los siguientes mtodos:

    AddItem; agrega un nuevo elemento a la lista. RemoveItem; borra un elemento concreto de la lista. Clear; borra todos los elementos y deja la lista vaca.

    Los controles del tipo lista se agregan mediante el botn de la Caja de herramientas.

    Sentencias For Next

    La sentencia For Next permite crear bucles con un nmero de iteraciones (repeticiones) definidas previamente; por lo tanto , se utiliza en aquellos casos en los que se sabe el nmero exacto de veces que deben repetirse las instrucciones que constituyen el cuerpo del bucle.

    El modo de controlar el nmero de veces que ha de repetirse el bucle se consigue utilizando una variable contador; esta comienza con un valor determinado, que va

  • aumentando a medida que se completan los bucles y que, al alcanzar un valor final, paraliza la repeticin del bucle.

    El formato general de esta sentencia es:

    For variable = valor inicial To valor final [Step incremento] Sentencia-1 Sentencia-2

    Next [variable]

    A continuacin, se indican algunas observaciones que deben tenerse en cuenta a la hora de utilizar la sentencia For Next:

    La expresin variable = valor inicial se utiliza para inicializar el contador del bucle, es decir, para indicar con qu valor comienza la variable contador; esta asignacin se realiza una sola vez, al principio de la sentencia For.

    La expresin Step incremento, que es optativa, permite indicar cmo debe aumentar o disminuir la variable cada vez que finalice un bucle; si no se especifica un incremento, la variable aumentar en una unidad.

    La expresin To valor final especifica en qu valor de la variable debe detenerse el bucle; el programa har la comprobacin cada vez que vaya a realizar las sentencias del bucle (incluso la primera vez) y, cuando el valor de la variable llegue o sobrepase el especificado, el bucle no volver a ejecutarse y continuar el programa.

    La expresin Next enva al programa a la primera lnea del bucle, para que realice las comprobaciones pertinentes y ejecute, si as tuviera que ser, el bucle de nuevo.

    Lo mejor para comprender el funcionamiento de esta sentencia es comprobar cmo se utiliza en un programa que permitir imprimir los cincuenta primeros nmeros enteros. El formulario que se va a utilizar en este programa solo contendr un control de tipo lista, en el que se imprimirn los nmeros. Por lo tanto, lo primero que hay que hacer es agregar un control lista al formulario y modificar su tamao hasta que sea similar al de la figura.

    Una vez diseado el formulario, habr que escribir el cdigo del nico procedimiento que tiene el programa, asociado a la ejecucin del programa:

  • El resultado es la obtencin de una lista cuyos elementos son los 50 primeros nmeros enteros. Puesto que los elementos de la lista son ms de los que esta puede mostrar, aparece automticamente una barra de desplazamiento vertical para poder ver aquellos que estn ocultos.

    Prctica 15: disea el programa anterior y gurdalo como vbtunombre15.

    A continuacin, se muestra otro ejemplo de utilizacin de la sentencia For Next, en este caso para obtener la suma de los nmeros enteros comprendidos entre los dos que se especifiquen en sendos cuadros de texto.

    Segn se observa en el formulario, este devolver el valor de la suma de todos los nmeros enteros comprendidos entre los dos escritos. Adems, no se ha incluido ningn botn de accin, ya que el procedimiento se realiza automticamente al introducir el nmero del segundo cuadro de texto.

    La variable contador comienza con valor 1

    Cuando la variable tome el valor 50, el bucle se ejecutar por ltima vez.

    Cada vez que se realiza el bucle, la variable contador aumenta en un valor. Como el aumento es de una unidad, se podra haber omitido esta expresin.

    Aade a la lista el valor que tiene la variable contador en el momento en que se ejecuta la instruccin. Puesto que esta instruccin se va a realizar varias veces (50), se agregarn 50 nmeros.

    Ya que solo se utiliza una variable como contador, no hace falta especificar ninguna variable en la sentencia Next

  • Observa en el cdigo todas las variables que se han utilizado: dos para almacenar los valores introducidos en los cuadros de texto, una que almacenar las sumas de los nmeros y otra que llevar el control del nmero de veces que ha de realizarse el bucle.

    Prctica 16: crea el programa anterior y gurdalo como vbtunombre16.

    El procedimiento est asignado al evento modificar del segundo cuadro de texto.

    A la variable que va a acumular la suma se la inicializa con valor 0, para evitar que pueda comenzar con algn valor existente en memoria.

    La variable suma, que empieza con valor 0, ir acumulando (sumando) los valores que vaya teniendo la variable contador e cada ejecucin del bucle.

    Cuando finalice el bucle, se ejecutar la siguiente sentencia, asignndose el valor que tenga en ese momento la variable suma a la etiqueta preparada para tal efecto.

  • Sentencias Do Loop

    La sentencia Do Loop repite la ejecucin de un bucle mientras se cumpla una condicin determinada (While), o hasta que se cumpla la condicin (Until). Adems, la condicin puede ser evaluada al principio o al final del bucle, dando de este modo una amplia variedad de posibilidades para esta sentencia, que quedan resumidas en la siguiente tabla:

    Do While (condicin)

    Sentencias

    Loop

    Do Until (condicin)

    Sentencias

    Loop

    Do

    Sentencias

    Loop While (condicin)

    Do

    Sentencias

    Loop Until (condicin)

    El bucle se realizar mientras se cumpla la condicin, que se evaluar al principio.

    El bucle se realizar hasta que se cumpla la condicin, que se evaluar al principio.

    El bucle se realizar mientras que se cumpla la condicin, que se evaluar al final.

    El bucle se realizar mientras que se cumpla la condicin, que se evaluar al final.

    Do While Loop

    En la sentencia Do While Loop, el control del bucle se hace mediante una condicin que se evala al iniciarse este. Mientras la condicin se cumpla, el bucle se realizar; en el momento en que la condicin resulte falsa, el bucle dejar de ejecutarse y proseguir con las instrucciones siguientes al bucle.

    Puesto que la condicin se evala al comenzar el bucle, incluso la primera vez, es posible que este no llegue a ejecutarse ni una sola vez porque la condicin no se cumpla.

    A continuacin, se va a utilizar la sentencia Do While Loop para crear un bucle que permita obtener, en una lista, todos los nmeros enteros comprendidos entre dos que se indiquen. En este caso, y para utilizar algunas de las mltiples posibilidades de trabajo, los valores extremos se introducirn mediante sendos cuadros de entrada, y los nmeros se obtendrn ordenados en orden descendente.

    El formulario que se va a utilizar para este programa tendr un diseo similar al de la prctica 13, por lo que se puede crear a partir de aquel, realizando las modificaciones necesarias en el cdigo.

  • 1. Se declaran las variables necesarias del tipo Entero. Dos de ellas almacenarn los valores extremos introducidos con los cuadros de entrada, mientras que la tercera se utilizar como variable cambiante del bucle.

    2. Se asignan los valores introducidos en los cuadros de entrada a las variables a (el valor mayor) y b.

    3. Se le asigna a la variable cambio el valor de la variable a, que era el nmero mayor.

    4. Las sentencias del bucle se realizarn mientras el valor de la variable cambio sea mayor o igual que el de la variable b (el ms pequeo de los introducidos).

    5. Se aade un nuevo elemento a la lista, con el valor que tenga en ese momento la variable cambio.

    6. El valor de la variable cambio disminuye en una unidad. 7. Enva de nuevo al comienzo del bucle para que se evale la condicin y, si

    resulta cierta, vuelva a realizar otra iteracin.

    La secuencia de la ejecucin del programa sera la que se muestra a continuacin:

    1

    2

    3 4 5

    6 7

  • Prctica 17: crea el programa anterior y gurdalo como vbtunombre17.

  • Do Until Loop

    En la sentencia Do Until Loop, el control del bucle se realiza mediante una condicin, que se evala al principio, del siguiente modo: el bucle se estar repitiendo hasta que la condicin se cumpla, momento en el que el bucle finalizar y proseguir el programa con las sentencias escritas tras el Loop correspondiente.

    En el siguiente ejemplo se utiliza esta sentencia para calcular el factorial de un nmero que se introducir mediante un cuadro de texto.

    1. Se declaran las variables a y contador del tipo entero y la variable producto como decimal de doble precisin.

    2. Si la variable producto se declarara como entero, o como entero largo, habra muchos casos en los que el programa dara un error por desbordamiento, puesto que solo podra obtener valores que no fueran muy altos.

    3. Se asigna a la variable a el nmero del que se quiera calcular su factorial. 4. Se inicializan las variables contador y producto con valor 1. 5. El bucle se repetir hasta que la variable contador tome un valor superior al de

    la variable a. 6. El valor de la variable producto se actualizar con el resultado de multiplicar su

    propio valor por el que tenga la variable contador en ese momento. 7. Aumenta la variable contador en una unidad. 8. Enva el programa al comienzo del bucle para que se evale de nuevo la

    condicin. 9. Cuado finalice el bucle, se imprimir el resultado en este cuadro.

    El resultado es el que se muestra a continuacin:

    1 2

    3

    4 5

    6 7 8

    9

  • Prctica 18: crea el programa anterior y gurdalo como vbtumombre18.

    Do Loop While

    En el caso de la sentencia Do Loop While, el control del bucle se realiza mediante una condicin que se evala al finalizarse cada iteracin del bucle. Mientras la condicin se cumpla, el bucle seguir repitindose; en el momento en que la condicin resulte falsa, el bucle se detendr y el programa proseguir con las siguientes instrucciones.

    Puesto que la condicin se evala al final del bucle, este siempre se ejecutar, como mnimo una vez.

    En el siguiente programa se utiliza esta sentencia para calcular la suma de los nmeros que se introduzcan mediante distintos cuadros de entrada; adems, el programa pregunta previamente cuntos nmeros se quieren sumar.

    1

    2

    3 4

    5 6

    7 8

    9

  • 1. Se definen dos variables del tipo entero: contador para llevar el control del bucle y nmero para almacenar el nmero de datos que se va a sumar.

    2. Se definen dos variables del tipo decimal: dato, para almacenar temporalmente cada uno de los nmeros que se quiera sumar, y suma, para ir calculando las sumas parciales y definitiva de los datos.

    3. El programa solicita el nmero de datos que se van a sumar, valor que se asigna a la variable nmero.

    4. Se inicializan las variables con los valores adecuados. 5. Comienzo del bucle que, al no tener condicin al principio, se realiza por lo

    menos, una vez. 6. Esta variable va acumulando la suma de los nmeros introducidos. 7. La variable contador aumenta en una unidad cada vez que se ejecuta el bucle. 8. Mientras la variable contador sea menor o igual que el nmero de datos que se

    quiera sumar (variable nmero), el programa volver a repetir el bucle. 9. Cuando finalice el bucle, aparecer el resultado de la suma.

    El resultado ser como se muestra a continuacin:

  • Prctica 19: crea el programa anterior y gurdalo como vbtunombre19.

    Do Loop Until

    Una de las aplicaciones ms frecuentes de las sentencias Do Loop While y Do Loop Until es el control de los datos que se introducen durante la ejecucin del programa; la nica diferencia entre ellas es la condicin (son contrarias), ya que una sentencia repetir el bucle mientras se cumpla la condicin, y la otra sentencia repetir el bucle hasta que se cumpla la condicin.

    En el siguiente programa, que permite calcular la raz cuadrada de un nmero, se utiliza la sentencia Do Loop Until para evitar que el usuario pueda introducir valores negativos, que produciran un error en el clculo de su raz cuadrada.

    1. Se declara la nica variable que hace falta para almacenar el nmero que se introduzca en el cuadro de entrada. Se ha definido del tipo Double para que pueda calcularse, con precisin, races cuadradas de nmeros decimales.

    2. Se ejecuta el bucle y se solicita un nmero al usuario, que queda almacenado en la variable a.

    1 2

    3

    4 5

  • 3. El bucle (solicitar nmero) se repetir hasta que el nmero que se almacene en la variable a sea igual o mayor que cero.

    4. El resultado se imprime en un cuadro de texto. 5. Esta expresin calcula la raz cuadrada de la variable a.

    Al ejecutarlo, el programa mostrar el tpico cuadro de entrada para que se introduzca el nmero, operacin que repetir hasta que el nmero introducido sea igual o mayor que cero.

    Prctica 20: crea el programa anterior y gurdalo como vbtunombre20.