Hacer bucle while

AjustarCompartirImprimirCitar
Declaración de flujo de control de programación
Do Mientras el diagrama de flujo de bucle

En muchos lenguajes de programación de computadoras, un bucle do while es una declaración de flujo de control que ejecuta un bloque de código y luego repite el bloque o sale del bucle dependiendo de una condición booleana determinada.

La construcción do while consta de un símbolo de proceso y una condición. Primero se ejecuta el código dentro del bloque. Luego se evalúa la condición. Si la condición es verdadera, el código dentro del bloque se ejecuta nuevamente. Esto se repite hasta que la condición se vuelve falsa.

Los bucles while verifican la condición después de ejecutar el bloque de código. Esta estructura de control puede conocerse como bucle post-prueba. Esto significa que el ciclo do- while es un ciclo de condición de salida. Sin embargo, un bucle while probará la condición antes de que se ejecute el código dentro del bloque.

Esto significa que el código siempre se ejecuta primero y luego se evalúa la expresión o condición de prueba. Este proceso se repite siempre que la expresión se evalúe como verdadera. Si la expresión es falsa el ciclo termina. Un bucle while establece la verdad de una declaración como condición necesaria para la ejecución del código. Un bucle do- while proporciona la ejecución continua de la acción hasta que la condición ya no sea verdadera.

Es posible y, a veces, deseable que la condición siempre se evalúe como verdadera. Esto crea un bucle infinito. Cuando se crea intencionalmente un bucle infinito, normalmente existe otra estructura de control que permite la terminación del bucle. Por ejemplo, una declaración de interrupción permitiría la terminación de un bucle infinito.

Algunos idiomas pueden utilizar una convención de nomenclatura diferente para este tipo de bucle. Por ejemplo, los lenguajes Pascal y Lua tienen un "repetir hasta" bucle, que continúa ejecutándose hasta la expresión de control es verdadera y luego termina. En contraste, un "tiempo" El bucle se ejecuta mientras la expresión de control es verdadera y termina una vez que la expresión se vuelve falsa.

Construcciones equivalentes

do {} do_work();} mientras ()condición);

es equivalente a

do_work();mientras ()condición) {} do_work();}

De esta manera, el bucle do... while guarda el "cebado del bucle" con do_work(); en la línea antes del bucle while.

Siempre que no se utilice la instrucción continue, lo anterior es técnicamente equivalente a lo siguiente (aunque estos ejemplos no son el estilo típico o moderno utilizado en las computadoras cotidianas):

mientras ()verdadero) {} do_work(); si ()!condición) descanso;}

o

LOOPSTART: do_work(); si ()condición) Goto LOOPSTART;

Demostración de bucles do while

Estos programas de ejemplo calculan el factorial de 5 usando sus respectivos idiomas' sintaxis para un bucle do- while.

Ada

con Ada.Integer_Text_IO;procedimiento Factorial es Contrato : Integer := 5; Factorial : Integer := 1;Comienzo bucle Factorial := Factorial * Contrato; Contrato := Contrato - 1; Salida cuando Contrato = 0; final bucle; Ada.Integer_Text_IO.Put ()Factorial);final Factorial;

BÁSICO

Los primeros BASIC (como GW-BASIC) usaban la sintaxis WHILE/WEND. Los BASIC modernos como PowerBASIC proporcionan estructuras WHILE/WEND y DO/LOOP, con sintaxis como DO WHILE/LOOP, DO UNTIL/LOOP, DO/LOOP WHILE, DO/LOOP UNTIL y DO/LOOP (sin pruebas externas, pero con un EXIT LOOP condicional en algún lugar dentro del bucle). Código fuente BÁSICO típico:

Dim factorial As IntegerDim contra As Integerfactorial = 1contra = 5Do factorial = factorial * contra contra = contra - 1Loop Mientras tanto contra  0Imprimir factorial

C, C++, D

int contra = 5;int factorial = 1;do {} factorial *= contra--; /* Multiply, luego decremento. */} mientras ()contra  0);printf()"factorial de 5 es %dn", factorial);

Las sentencias Do- while(0) también se utilizan comúnmente en macros de C como una forma de envolver varias sentencias en una sentencia normal (en lugar de una compuesta). Crea un punto y coma necesario después de la macro, proporcionando una apariencia más similar a una función para programadores y analizadores simples, además de evitar el problema de alcance con si. Se recomienda en la regla PRE10-C del estándar de codificación CERT C.

Fortran

Con el Fortran 77 heredado no existe la construcción DO-WHILE, pero se puede lograr el mismo efecto con GOTO:

 INTEGER CNT,FACT CNT=5 FACT=1 1 CONTINUACIÓN FACT=FACT*CNT CNT=CNT-1 IF ()CNT.GT.0) GOTO 1 PRINT*,FACT FIN

Fortran 90 y versiones posteriores tampoco tienen una construcción do- while, pero sí una construcción de bucle while que utiliza las palabras clave "do while" y, por tanto, en realidad es lo mismo que el bucle for.

programa Factorial Prog entero :: contra = 5 entero :: factorial = 1 factorial = factorial * contra contra = contra - 1 hacer mientras ()contra  0) ! Valor de la verdad se prueba antes del bucle factorial = factorial * contra contra = contra - 1 fin do impresión *, factorialprograma final Factorial Prog

Java

int contra = 5;int factorial = 1;do {} factorial *= contra--; /* Multiply, luego decremento. */} mientras ()contra  0);Sistema.Fuera..println()"El factorial de 5 es " + factorial);

Pascal

Pascal usa la sintaxis repetir/hasta en lugar de hacer mientras.

factorial := 1;contra := 5;repetición factorial := factorial * contra; contra := contra - 1; // En Objeto Pascal uno puede utilizar el dec (contratador);hasta contra = 0;

PL/I

La declaración PL/I DO incluye las funciones del bucle posterior a la prueba (do Until), el bucle previo a la prueba (do while) y el for bucle. Todas las funciones se pueden incluir en una sola declaración. El ejemplo muestra sólo la opción "hacer hasta" sintaxis.

Declara contra fijo inicial()5);Declara factorial fijo inicial()1);do hasta()contra . 0); factorial = factorial * contra; contra = contra - 1;final;#()factorial);

Raqueta

En Racket, como en otras implementaciones de Scheme, un "named-let" es una forma popular de implementar bucles:

#lang raqueta()definir contra 5)()definir factorial 1)()Deja bucle () ()¡Listo! factorial ()* factorial contra) ()¡Listo! contra ()sub1 contra) ()cuando () contra 0) ()bucle))()displayl factorial)

Compare esto con el primer ejemplo del bucle while para Racket. Tenga en cuenta que un let con nombre también puede aceptar argumentos.

Racket y Scheme también proporcionan un bucle de ejercicio adecuado.

()definir ()factorial n) ()do (()contra n ()- contra 1) ()resultado 1 ()* resultado contra)) (()= contra 0) resultado) ; Detener la condición y el valor de retorno. ; El cuerpo del bucle está vacío. )

Charla trivial

Silencio contra factorial Silenciocontra := 5.factorial := 1.[contra  0] whileTrue:[factorial := factorial * contra. contra := contra - 1].Transcripción Mostrar: factorial estampado

Contenido relacionado

ALGOL Y

ALGOL Y fue el nombre dado a un sucesor especulado del lenguaje de programación ALGOL 60 que incorporaba algunas características radicales que fueron...

Filosofía de la inteligencia artificial

La filosofía de la inteligencia artificial es una rama de la filosofía de la tecnología. Esta se centra en investigar la inteligencia artificial y sus...

Red troncal

Una red troncal o central es una parte de una red informática que interconecta redes y proporciona un camino para el intercambio de información entre...

Historial de versiones de macOS

La historia de macOS, el actual sistema operativo Mac de Apple anteriormente llamado Mac OS X hasta 2011 y luego OS X hasta 2016, comenzó con el proyecto de...

Historia de la supercomputación

El término supercomputación surgió a fines de la década de 1920 en los Estados Unidos en respuesta a los tabuladores de IBM en la Universidad de Columbia....
Más resultados...
Tamaño del texto: