En la mayoría de los lenguajes de programación de computadoras, un bucle while es una declaración de flujo de control que permite que el código se ejecute repetidamente según una condición booleana determinada . El tiempo de bucle puede ser pensado como una repetición si la declaración .
Descripción general
La construcción while consta de un bloque de código y una condición / expresión. [1] La condición / expresión se evalúa, y si la condición / expresión es verdadera , [1] se ejecuta el código dentro de todos los siguientes en el bloque. Esto se repite hasta que la condición / expresión se vuelve falsa . Debido a que los mientras cheques bucle se ejecuta la condición / expresión antes de que el bloque, la estructura de control a menudo también se conoce como un bucle de pre-prueba . Compare esto con el ciclo do while , que prueba la condición / expresión después de que el ciclo se ha ejecutado.
Por ejemplo, en el lenguaje de programación C (además de Java , C # , [2] Objective-C y C ++ , que utilizan la misma sintaxis en este caso), el fragmento de código
int x = 0 ;while ( x < 5 ) { printf ( "x =% d \ n " , x ); x ++ ; }
primero verifica si x es menor que 5, que es, entonces se ingresa el {cuerpo del bucle}, donde se ejecuta la función printf y x se incrementa en 1. Después de completar todas las declaraciones en el cuerpo del bucle, la condición, ( x <5), se comprueba de nuevo y se vuelve a ejecutar el ciclo, repitiéndose este proceso hasta que la variable x tiene el valor 5.
Tenga en cuenta que es posible, y en algunos casos deseable, que la condición siempre se evalúe como verdadera, creando un bucle infinito . Cuando un bucle de este tipo se crea intencionalmente, suele haber otra estructura de control (como una declaración de interrupción ) que controla la terminación del bucle. Por ejemplo:
while ( true ) { // hacer cosas complicadas if ( someCondition ) break ; // más cosas }
Demostrando mientras que los bucles
Estas mientras bucles calcular el factorial del número 5:
ActionScript 3
contador var : int = 5 ; var factorial : int = 1 ;while ( contador > 1 ) { factorial * = contador ; contador -; }Printf ( "Factorial =% d" , factorial );
Ada
con Ada.Integer_Text_IO ;procedimiento Factorial es Contador : Entero : = 5 ; Factorial : Entero : = 1 ; comenzar mientras Contador > 0 bucle Factorial : = Factorial * Contador ; Contador : = Contador - 1 ; ciclo final ; Ada . Integer_Text_IO . Poner ( factorial ); fin de Factorial ;
AutoHotkey
contador : = 5 factorial : = 1Mientras contador > 0 factorial * = contador - MsgBox % factorial
Microsoft Small Basic
contador = 5 'Contador = 5 factorial = 1 ' valor inicial de la variable "factorial"Mientras contador > 0 factorial = factorial * contador contador = contador - 1 TextWindow . WriteLine ( contador ) EndWhile
Visual Basic
Atenuar contador As Integer = 5 'variable de inicialización y valor de ajuste Atenuar factorial As Integer = 1 ' inicializar variable factorialHacer Mientras contador > 0 factorial = factorial * contador contador = contador - 1 El programa de bucle va aquí, hasta contador = 0'Debug.Print factorial' Console.WriteLine (factorial) en Visual Basic .NET
Shell Bourne (Unix)
contador = 5 factorial = 1 mientras [ $ contador -gt 0 ] ; hacer factorial = $ (( factorial * contador )) contador = $ (( contador - 1 )) hechoecho $ factorial
C o C ++
int main () { int contador = 5 ; int factorial = 1 ; while ( contador > 1 ) factorial * = contador - ; printf ( "% d" , factorial ); }
CFML
Sintaxis de la secuencia de comandos
contador = 5;factorial = 1; while (contador> 1) { factorial * = contador--;}writeOutput (factorial);
Sintaxis de la etiqueta
counter = 5 > factorial = 1 > condition = "counter GT 1" > factorial * = counter - > # factorial #
Fortran
programa FactorialProg entero :: contador = 5 entero :: factorial = 1 hacer mientras ( contador > 0 ) factorial = factorial * contador contador = contador - 1 fin hacer print * , programa final factorial FactorialProg
Java , C # , D
El código para el bucle es el mismo para Java, C # y D:
int contador = 5 ; int factorial = 1 ;while ( contador > 1 ) factorial * = contador -;
JavaScript
dejar contador = 5 ; sea factorial = 1 ;while ( contador > 1 ) factorial * = contador - ;consola . log ( factorial );
Lua
contador = 5 factorial = 1while contador > 0 hacer factorial = factorial * contador contador = contador - 1 finimprimir ( factorial )
MATLAB y GNU Octave
contador = 5 ; factorial = 1 ; while ( contador > 0 ) factorial = factorial * contador ; %Multiplicar contador = contador - 1 ; %Decremento finalfactorial
Mathematica
Bloquear [{ contador = 5 , factorial = 1 }, (* localizar contador y factorial *) Mientras [ contador > 0 , (* Mientras bucle *) factorial * = contador ; (*Multiplicar*) contador - ; (*Decremento*) ]; factorial]
Oberon , Oberon-2 (lenguaje de programación) , Oberon-07 o Component Pascal
MÓDULO Factorial ; IMPORT hacia fuera ; Contador VAR , Factorial : INTEGER ; COMIENZO Contador : = 5 ; Factorial : = 1 ; MIENTRAS Contador > 0 DO Factorial : = Factorial * Contador ; DEC ( Contador ) END ; Fuera . Int ( Factorial , 0 ) END Factorial .
Lenguaje incrustado maya
int $ contador = 5 ; int $ factorial = 1 ;int $ multiplicación ;while ( $ contador > 0 ) { $ multiplicación = $ factorial * $ contador ; $ contador - = 1 ; print ( "El contador es:" + $ contador + ", la multiplicación es:" + $ multiplicación + "\ n" ); }
Nim
var contador = 5 # Establece el valor del contador en 5 factorial = 1 # Establece el valor factorial en 1while contador > 0 : # Mientras que el contador es mayor que 0 factorial * = contador # Establece un nuevo valor de factorial en contador. dec counter # Ponga el contador en contador - 1.eco factorial
Bucle while sin terminación:
while true : echo "¡Ayuda! ¡Estoy atrapado en un bucle!"
Pascal
Pascal tiene dos formas del bucle while, while y repeat . Mientras repite una declaración (a menos que esté incluida en un bloque de inicio-fin) siempre que la condición sea verdadera. La instrucción repeat ejecuta repetidamente un bloque de una o más declaraciones a través de una instrucción hasta y continúa repitiéndose a menos que la condición sea falsa. La principal diferencia entre los dos es que el ciclo while puede ejecutarse cero veces si la condición es inicialmente falsa, el ciclo repeat-until siempre se ejecuta al menos una vez.
programa Factorial1 ; var Fv : entero ; hecho de procedimiento ( contador : entero ) ; var Factorial : entero ; comenzar Factorial : = 1 ; mientras que Contador > 0 hacer comenzar factorial : = factorial * Contador ; Contador : = Contador - 1 final ; WriteLn ( factorial ) final ;begin Write ( 'Ingrese un número para devolver su factorial:' ) ; readln ( fv ) ; repetir hecho ( fv ) ; Write ( 'Ingrese otro número para devolver su factorial (o 0 para salir):' ) ; hasta fv = 0 ; final .
Perl
my $ contador = 5 ; my $ factorial = 1 ;while ( $ contador > 0 ) { $ factorial * = $ contador - ; # Multiplica, luego decrementa }imprimir $ factorial ;
Mientras que los bucles se utilizan con frecuencia para leer datos línea por línea (según lo define el $/
separador de línea) de identificadores de archivos abiertos:
abrir IN , " ">;while ( ) { imprimir ; }cerrar IN ;
PHP
$ contador = 5 ; $ factorial = 1 ;while ( $ contador > 0 ) { $ factorial * = $ contador - ; // Multiplica, luego decrementa. }echo $ factorial ;
PL / I
declarar contador fijo inicial ( 5 ) ;declarar factorial fijo inicial ( 1 ) ;hacer mientras ( contador > 0 ) factorial = factorial * contador ; contador = contador - 1 ; terminar ;
Pitón
contador = 5 # Establecer el valor en 5 factorial = 1 # Establecer el valor en 1while contador > 0 : # Mientras que el contador (5) es mayor que 0 factorial * = contador # Establece un nuevo valor de factorial en contador. contador - = 1 # Ponga el contador en contador - 1.print ( factorial ) # Imprime el valor del factorial.
Bucle while sin terminación:
while True : print ( "¡Ayuda! ¡Estoy atrapado en un bucle!" )
Raqueta
En Racket, como en otras implementaciones de Scheme , un let con nombre es una forma popular de implementar bucles:
#lang racket ( definir contador 5 ) ( definir factorial 1 ) ( let loop () ( when ( > counter 0 ) ( set! factorial ( * factorial counter )) ( set! counter ( sub1 counter )) ( loop ))) ( displayln factorial )
El uso de un sistema de macro, la implementación de un tiempo de bucle es un ejercicio trivial (comúnmente usado para introducir macros):
#lang racket ( define-syntax-rule ( while test body ... ) ; implementa un ciclo while ( let loop () ( cuando test body ... ( loop )))) ( define contador 5 ) ( define factorial 1 ) ( mientras que ( > contador 0 ) ( set! factorial ( * factorial contador )) ( set! contador ( SUB1 contador ))) ( displayln factorial )
Pero tenga en cuenta que un estilo de programación imperativo a menudo se desaconseja en Racket (como en Scheme).
Rubí
# Calcula el factorial de 5 i = 1 factorial = 1mientras que i <= 5 factorial * = i i + = 1 finalpone factorial
Oxido
fn main () { deje mut contador = 5 ; sea mut factorial = 1 ; while contador > 1 { factorial * = contador ; contador - = 1 ; } println! ( "{}" , factorial ); }
Charla
Contrariamente a otros idiomas, en Smalltalk un mientras bucle no es una construcción del lenguaje pero definido en la clase BlockClosure
como un método con un parámetro, el cuerpo como un cierre , con el mismo como la condición.
Smalltalk también tiene un método whileFalse: correspondiente.
| contar factorial | cuenta : = 5 . factorial : = 1 . [ count > 0 ] whileTrue: [ factorial : = factorial * count . cuenta : = cuenta - 1 ] . Programa de transcripción : factorial
Rápido
var counter = 5 // Establecer el valor del contador inicial en 5 var factorial = 1 // Establecer el valor factorial inicial en 1while contador > 0 { // Si bien contador (5) es mayor que 0 factorial * = contador // Establece el nuevo valor de factorial en factorial x contador. contador - = 1 // Establezca el nuevo valor del contador en contador - 1. }print ( factorial ) // Imprime el valor del factorial.
Tcl
establecer contador 5 establecer factorial 1while { $ counter > 0 } { set factorial [expr $ factorial * $ counter ] incr counter - 1 }pone $ factorial
VEJAR
int contador = 5 ; int factorial = 1 ;while ( contador > 1 ) factorial * = contador -;printf ( "% d" , factorial );
Potencia Shell
$ contador = 5 $ factorial = 1while ( $ contador ) { $ factorial * = $ contador - }$ factorial
Mientras que el lenguaje de programación
El lenguaje de programación While [3] es un lenguaje de programación simple construido a partir de asignaciones, composición secuencial, condicionales y declaraciones while, utilizado en el análisis teórico de la semántica del lenguaje de programación imperativo . [4] [5]
C : = 5 ; F : = 1 ;mientras que ( C > 1 ) haz F : = F * C ; C : = C - 1 ;
Ver también
- Hacer mientras bucle
- En bucle
- Para cada
- LOOP (lenguaje de programación) : un lenguaje de programación con la propiedad de que las funciones que puede calcular son exactamente las funciones recursivas primitivas.
Referencias
- ^ a b "Las declaraciones while y do-while (Tutoriales de Java ™> Aprendizaje del lenguaje Java> Conceptos básicos del lenguaje)" . Dosc.oracle.com . Consultado el 21 de octubre de 2016 .
- ^ "while (referencia de C #)" . Msdn.microsoft.com . Consultado el 21 de octubre de 2016 .
- ^ "Capítulo 3: El lenguaje de programación While" (PDF) . Profs.sci.univr.it . Consultado el 21 de octubre de 2016 .
- ^ Flemming Nielson; Hanne R. Nielson; Chris Hankin (1999). Principios del análisis de programas . Saltador. ISBN 978-3-540-65410-0. Consultado el 29 de mayo de 2013 .
- ^ Illingworth, Valerie (11 de diciembre de 1997). Diccionario de Computación . Oxford Paperback Reference (4ª ed.). Prensa de la Universidad de Oxford. ISBN 9780192800466.