Bucle While

Declaración de flujo de control para repetir la ejecución hasta que se cumpla una condición
Diagrama de flujo de bucle While

En la mayoría de los lenguajes de programación informática , un bucle while es una sentencia de flujo de control que permite ejecutar código repetidamente en función de una condición booleana determinada . El bucle while puede considerarse como una sentencia if repetitiva .

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 que le siguen en el bloque. Esto se repite hasta que la condición/expresión se vuelve falsa . Debido a que el bucle while verifica la condición/expresión antes de que se ejecute el bloque, la estructura de control a menudo también se conoce como bucle de pre-prueba . Compárese esto con el bucle do while , que prueba la condición/expresión después de que se haya ejecutado el bucle.

Por ejemplo, en los lenguajes C , Java , C# , [2] Objective-C y C++ (que utilizan la misma sintaxis en este caso), el fragmento de código

int x = 0 ;   mientras ( x < 5 ) { printf ( "x = %d \n " , x ); x ++ ; }        

primero verifica si x es menor que 5, lo cual es, luego se ingresa al {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, se verifica nuevamente la condición (x < 5) y se ejecuta nuevamente el bucle, repitiéndose este proceso hasta que la variable x tenga el valor 5.

Es posible, y en algunos casos deseable, que la condición siempre se evalúe como verdadera, creando un bucle infinito . Cuando se crea un bucle de este tipo intencionalmente, generalmente hay otra estructura de control (como una declaración break ) que controla la finalización del bucle. Por ejemplo:

mientras ( verdadero ) { // hacer cosas complicadas si ( algunaCondición ) romper ; // más cosas }       

Demostrandomientrasbucles

Estos bucles while calcularán el factorial del número 5:

ActionScript 3

var contador : int = 5 ; var factorial : int = 1 ;        mientras ( contador > 1 ) { factorial *= contador ; contador --; }        Printf ( "Factorial = %d" , factorial ); 

Ada

con  Ada.Integer_Text_IO ;procedimiento  Factorial  es  Contador  :  Entero  :=  5 ;  Factorial  :  Entero  :=  1 ; inicio  mientras  Contador  >  0  bucle  Factorial  :=  Factorial  *  Contador ;  Contador  :=  Contador  -  1 ;  fin  bucle ; Ada . Integer_Text_IO . Put  ( Factorial ); fin  Factorial ;

APL

contador 5 factorial 1    : Mientras contador > 0 factorial × contador contador - 1 : FinMientras         factorial  

o simplemente

! 5

Tecla de acceso rápido automática

contador  :=  5 factorial  :=  1Mientras  contador  >  0  factorial  *=  contador --Cuadro de mensaje  %  factorial

Pequeño básico

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

Contador Dim Como Entero = 5 ' inicializar variable y establecer valor. Factorial Dim Como Entero = 1 ' inicializar variable factorial            Hacer Mientras contador > 0 factorial = factorial * contador contador = contador - 1 Bucle ' el programa va aquí, hasta contador = 0               'Debug.Print factorial' Console.WriteLine(factorial) en Visual Basic .NET

Concha Bourne (Unix)

contador = 5 factorial = 1 mientras [ $contador -gt 0 ] ; hacer factorial = $(( factorial * contador )) contador = $(( contador - 1 )) hecho            eco $factorial 

C, C++

int main () { int conteo = 5 ; int factorial = 1 ;           mientras ( contar > 1 ) factorial *= contar -- ;       printf ( "%d" , factorial ); } 

Lenguaje de marcado ColdFusion (CFML)

Sintaxis del script

contador  =  5 ; factorial  =  1 ;mientras  ( contador  >  1 )  {  factorial  *=  contador -- ; }escribirSalida ( factorial );

Sintaxis de etiquetas

<cfset  contador  =  5 > <cfset  factorial  =  1 > <cfloop  condición = "contador GT 1" >  <cfset  factorial  *=  contador -- > </cfloop> <cfoutput> # factorial # </cfoutput>

Fortran

programa FactorialProg entero :: contador = 5 entero :: factorial = 1           hacer mientras ( contador > 0 ) factorial = factorial * contador contador = contador - 1 fin hacer               imprimir * , factorial fin del programa FactorialProg  

Ir

Go no tiene una declaración while , pero tiene la función de una declaración for cuando se omiten algunos elementos de la declaración for .

contador , factorial := 5 , 1    para contador > 1 { contador , factorial = contador - 1 , factorial * contador }        

Java, C#, D

El código para el bucle es el mismo para Java, C# y D:

int contador = 5 ; int factorial = 1 ;      mientras ( contador > 1 ) factorial *= contador -- ;      

JavaScript

sea ​​contador = 5 ; sea factorial = 1 ;      mientras ( contador > 1 ) factorial *= contador -- ;      consola .log ( factorial ) ;

Lua

contador  =  5 factorial  =  1mientras  contador  >  0  hacer  factorial  =  factorial  *  contador  contador  =  contador  -  1 finimprimir ( factorial )

MATLAB, Octava

contador = 5 ; factorial = 1 ;    mientras ( contador > 0 ) factorial = factorial * contador ; %Multiplicar contador = contador - 1 ; %Decrementar fin               factorial

Matemática

Bloque [{ contador = 5 , factorial = 1 }, (*localizar contador y factorial*) While [ contador > 0 , (*bucle While*) factorial *= contador ; (*Multiplicar*) contador -- ; (*Decrementar*) ];         factorial ]

Oberon, Oberon-2, Oberon-07, Componente Pascal

MÓDULO Factorial ; IMPORTAR Salida ; VAR Contador , Factorial : ENTERO ; COMIENZO Contador := 5 ; Factorial := 1 ;            MIENTRAS Contador > 0 HACER Factorial := Factorial * Contador ; DEC ( Contador ) FIN ;            Salida . Int ( Factorial , 0 ) FIN Factorial . 

Lenguaje integrado Maya

int $contador = 5 ; int $factorial = 1 ;      int $multiplicación ; mientras ( $contador > 0 ) { $multiplicación = $factorial * $contador ;          $contador -= 1 ;   print ( "El contador es: " + $contador + ", la multiplicación es: " + $multiplicación + "\n" ); }        

Nim

var counter = 5 # Establece el valor del contador en 5 factorial = 1 # Establece el valor factorial en 1        mientras contador > 0 : # Mientras contador sea mayor que 0 factorial *= contador # Establezca el nuevo valor de factorial en contador. dec contador # Establezca el contador en contador - 1.           factorial de eco 

Bucle while sin terminación:

mientras sea verdadero : echo "¡Ayuda! ¡Estoy atrapado en un bucle!"   

Pascal

Pascal tiene dos formas del bucle while, while y repeat . While repite una instrucción (a menos que esté encerrada en un bloque begin-end) siempre que la condición sea verdadera. La instrucción repeat ejecuta repetidamente un bloque de una o más instrucciones a través de una instrucción till y continúa repitiéndose a menos que la condición sea falsa. La principal diferencia entre los dos es que el bucle while puede ejecutarse cero veces si la condición es inicialmente falsa, el bucle repeat-until siempre se ejecuta al menos una vez.

programa Factorial1 ; varFv : entero ;    procedimiento hecho ( contador : entero ) ; var Factorial : entero ;     comienza Factorial := 1 ;    mientras Contador > 0 hacer comenzar Factorial := Factorial * Contador ; Contador := Contador - 1 fin ;                 WriteLn ( Factorial ) fin ; begin Write ( 'Ingrese un número para devolver su factorial: ' ) ; readln ( fv ) ; repeat fact ( fv ) ; Write ( 'Ingrese otro número para devolver su factorial (o 0 para salir): ' ) ; hasta fv = 0 ; fin .       

Perl

mi $contador = 5 ; mi $factorial = 1 ;      mientras ( $contador > 0 ) { $factorial *= $contador -- ; # Multiplicar, luego decrementar }        imprimir $factorial ; 

Los bucles While se utilizan con frecuencia para leer datos línea por línea (según lo definido por el $/separador de línea) desde identificadores de archivos abiertos:

abrir IN , "<prueba.txt" ;  mientras ( <IN> ) { imprimir ; }   cerrar EN ; 

PHP

$contador  =  5 ; $factorial  =  1 ;mientras  ( $contador  >  0 )  {  $factorial  *=  $contador -- ;  // Multiplica, luego decrementa. }eco  $factorial ;

PL/Yo

declarar  contador  fijo  inicial ( 5 ) ;
declarar  factorial  fijo  inicial ( 1 ) ;hacer mientras ( contador > 0 ) factorial = factorial * contador ; contador = contador - 1 ; fin ;             

Pitón

contador  =  5  # Establezca el valor en 5 factorial  =  1  # Establezca el valor en 1mientras  contador  >  0 :  # Mientras contador(5) sea mayor que 0  factorial  *=  contador  # Establezca el nuevo valor de factorial en contador.  contador  -=  1  # Establezca el contador en contador - 1.print ( factorial )  # Imprime el valor del factorial.

Bucle while sin terminación:

mientras  True :  print ( "¡Ayuda! ¡Estoy atrapado en un bucle!" )

Raqueta

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

#lang racket ( define contador 5 ) ( define factorial 1 ) ( let loop () ( when ( > contador 0 ) ( set! factorial ( * factorial contador )) ( set! contador ( sub1 contador )) ( loop ))) ( displayln factorial )                     

Usando un sistema de macros, implementar un bucle while es un ejercicio trivial (usado comúnmente para introducir macros):

#lang racket ( define-syntax-rule ( while cuerpo de la prueba ... ) ; implementa un bucle while ( let loop () ( when cuerpo de la prueba ... ( loop )))) ( define contador 5 ) ( define factorial 1 ) ( while ( > contador 0 ) ( set! factorial ( * contador factorial )) ( set! counter ( sub1 contador ))) ( displayln factorial )                              

Sin embargo, en Scheme y Racket a menudo se desaconseja el estilo de programación imperativo.

Rubí

# Calcular el factorial de 5 i = 1 factorial = 1    mientras i <= 5 factorial *= i i += 1 fin         pone factorial 

Óxido

fn  main () { dejar mut contador = 5 ; dejar mut factorial = 1 ;            mientras contador > 1 { factorial *= contador ; contador -= 1 ; }            println! ( "{}" , factorial ); } 

Charla informal

A diferencia de otros lenguajes, en Smalltalk un bucle while no es una construcción del lenguaje , sino que se define en la clase BlockClosurecomo un método con un parámetro, el cuerpo como un cierre , utilizando self como condición.

Smalltalk también tiene un método whileFalse: correspondiente.

| count factorial | count  :=  5 . factorial  :=  1 .
[ count  >  0 ] whileTrue: [ factorial  :=  factorial  *  count .  count  :=  count  -  1 ] . Transcripción  mostrar:  factorial

Rápido

var  counter  =  5  // Establece el valor del contador inicial en 5 var  factorial  =  1  // Establece el valor factorial inicial en 1mientras  contador  >  0  {  // Mientras contador(5) sea mayor que 0  factorial  *=  contador  // Establezca el nuevo valor de factorial en factorial x contador.  contador  -=  1  // Establezca el nuevo valor de contador en contador - 1. }print ( factorial )  // Imprime el valor del factorial.

Tcl

Establecer  contador 5 Establecer factorial 1   mientras { $contador > 0 } { establecer factorial [expr $factorial * $contador ] incr contador - 1 }             pone $factorial 

VEJAR

int contador = 5 ; int factorial = 1 ;      mientras ( contador > 1 ) factorial *= contador -- ;      printf ( "%d" , factorial ); 

Potencia Shell

$contador  =  5 $factorial  =  1mientras  ( $contador )  {  $factorial  *=  $contador -- }$factorial

Mientras (idioma)

Mientras que [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  ( C  >  1 )  hacer  F  :=  F  *  C ;  C  :=  C  -  1 ;

Véase también

Referencias

  1. ^ ab "Las sentencias while y do-while (Tutoriales de Java > Aprendizaje del lenguaje Java > Fundamentos del lenguaje)". Dosc.oracle.com . Consultado el 21 de octubre de 2016 .
  2. ^ "while (referencia de C#)". Msdn.microsoft.com . Consultado el 21 de octubre de 2016 .
  3. ^ "Capítulo 3: El lenguaje de programación While" (PDF) . Profs.sci.univr.it . Consultado el 21 de octubre de 2016 .
  4. ^ Fleming Nielson; Hanne R. Nielson; Chris Hankin (1999). Principios de análisis de programas. Saltador. ISBN 978-3-540-65410-0. Recuperado el 29 de mayo de 2013 .
  5. ^ Illingworth, Valerie (11 de diciembre de 1997). Dictionary of Computing . Oxford Paperback Reference (4.ª ed.). Oxford University Press. ISBN 9780192800466.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Bucle_while&oldid=1250397709"