Articulo de referencia

Bucle While

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 rep...

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, suele haber 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 ; 
comenzar 
    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  :=  1

Mientras  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  =  1

mientras  contador  >  0  hacer 
  factorial  =  factorial  *  contador 
  contador  =  contador  -  1 
fin

imprimir ( 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 , "<test.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 1

mientras  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 1

mientras  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  =  1

mientras  ( $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. ^ Flemming Nielson; Hanne R. Nielson; Chris Hankin (1999). Principios del análisis de programas. Springer. 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=1246985207"