Articulo de referencia

Rango (programación informática)

En informática , el término rango puede referirse a una de tres cosas: Los posibles valores que se pueden almacenar en una variable . Los límites superior e inferior de una matr...

En informática , el término rango puede referirse a una de tres cosas:

  1. Los posibles valores que se pueden almacenar en una variable .
  2. Los límites superior e inferior de una matriz .
  3. Una alternativa al iterador .

Rango de una variable

El rango de una variable se da como el conjunto de valores posibles que esa variable puede contener. En el caso de un número entero, la definición de la variable se limita únicamente a números enteros y el rango abarcará todos los números dentro de su rango (incluidos el máximo y el mínimo). Por ejemplo, el rango de una variable entera con signo de 16 bits son todos los números enteros desde −32.768 hasta +32.767.

Rango de una matriz

Cuando una matriz está indexada numéricamente, su rango es el límite superior e inferior de la matriz. Dependiendo del entorno, se producirá una advertencia, una excepción fatal o un comportamiento impredecible si el programa intenta acceder a un elemento de la matriz que está fuera del rango. En algunos lenguajes de programación , como C , las matrices tienen un límite inferior fijo (cero) y contendrán datos en cada posición hasta el límite superior (por lo que una matriz con 5 elementos tendrá un rango de 0 a 4). En otros, como PHP , una matriz puede tener agujeros donde no se define ningún elemento y, por lo tanto, una matriz con un rango de 0 a 4 tendrá hasta 5 elementos (y un mínimo de 2).

El rango como alternativa al iterador

Otro significado de rango en informática es una alternativa a iterador . Cuando se utiliza en este sentido, rango se define como "un par de iteradores de inicio/fin empaquetados juntos". [1] Se argumenta [1] que "los rangos son una abstracción superior" (en comparación con los iteradores) por varias razones, incluida una mayor seguridad.

En particular, dichos rangos son compatibles con C++20 , [2] las bibliotecas Boost C++ [3] y la biblioteca estándar D. [4]

Rango como tipo de datos

Una clase genérica que representa un rango, contiene una propiedad de inicio y una propiedad final.

Se puede implementar un tipo de datos para rangos utilizando genéricos .

Ejemplo en C# .

registro público Rango < T > ( T Inicio , T Fin ) donde T : IComparable ;         

Ejemplo en Kotlin .

clase de datos Rango < T : Comparable < T >> ( val inicio : T , val fin : T )        

Ejemplo en PHP .

 clase  de solo lectura Rango < T >  { 
    función pública  __construct ( pública T $inicio , pública T $fin , ) {} } 
          
          
     

Ejemplo en Python .

desde  dataclasses  importar  dataclass

@dataclass 
clase  Rango [ T ]: 
    inicio :  T 
    fin :  T

Rust tiene una estructura de rango incorporada en la biblioteca estándar en std::ops::Range . [5]

Rango como operador

Rust tiene los operadores .. y ..= .

deje que reconfortante = "¡conmovedor!" . to_string (); deje que caliente = & conmovedor [ 5 .. 9 ];   
   

Zig también tiene el operador ..

// Para iterar sobre números enteros consecutivos, utilice la sintaxis de rango. 
var suma : usize = 0 ; for ( 0 .. 5 ) | i | { suma += i ; }    
   
      

Python y PHP no tienen ningún operador de rango, pero sí tienen una rangefunción. [6] [7]

Véase también

Referencias

  1. ^ por Andrei Alexandrescu (6 de mayo de 2009). "Iterators Must Go" (PDF) . BoostCon 2009. Consultado el 29 de julio de 2014 .
  2. ^ cppreferencia
  3. ^ Documentación de Boost.Range
  4. ^ Módulo std.range de la biblioteca de tiempo de ejecución de Phobos
  5. ^ "Rango en std::ops - Rust". doc.rust-lang.org . Consultado el 17 de octubre de 2024 .
  6. ^ "Funciones integradas". Documentación de Python . Python Software Foundation . Consultado el 17 de diciembre de 2024 .
  7. ^ "PHP: range - Manual". The PHP Documentation Group . Consultado el 17 de diciembre de 2024 .


Retrieved from "https://en.wikipedia.org/w/index.php?title=Range_(computer_programming)&oldid=1263634736"