Articulo de referencia

Range (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 define como el conjunto de valores posibles que puede contener. En el caso de un entero, la definición de la variable se limita a números enteros, y el rango abarca todos los números dentro de dicho rango (incluidos el máximo y el mínimo). Por ejemplo, el rango de una variable entera con signo de 16 bits comprende todos los enteros desde -32.768 hasta +32.767.

Rango de una matriz

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

Rango como alternativa al iterador

Otro significado de rango en ciencias de la computación es una alternativa a iterador . Cuando se usa en este sentido, rango se define como "un par de iteradores de inicio/fin empaquetados". [ 1 ] Se argumenta [ 1 ] que "los rangos son una abstracción superior" (en comparación con los iteradores) por varias razones, incluyendo 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 de fin.

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 Range < T : Comparable < T >> ( val start : T , val end : T )

Ejemplo en PHP .

clase de solo lectura Range < T > { función pública __construct ( public T $start , public T $end , ) {} }

Ejemplo en Python .

from dataclasses import dataclass@dataclass class Range [ T ]: inicio : T fin : T

Rust tiene una estructura de rango integrada en la biblioteca estándar en std::ops::Range. [ 5 ] C++std::ranges también tiene una biblioteca desde C++20 . [ 6 ]

Alcance como operador

Rust tiene los operadores .. y ..= .

let heartwarming = "¡conmovedor!" . to_string (); let warm = & heartwarming [ 5 .. 9 ];

Zig también tiene el operador ..

// Para iterar sobre enteros consecutivos, use la sintaxis de rango. var sum : usize = 0 ; for ( 0 .. 5 ) | i | { sum += i ; }

Al igual que C# , [ 7 ]

string [] items = [ " uno " , "dos" , " tres" , "cuatro" ]; string [] firstThreeItems = items [ 0..2 ];

F# , [ 8 ]

[ 1 .. 4 ] // Salidas: [1; 2; 3; 4]

Kotlin , [ 9 ]

para ( i en 1. . 5 ) imprimir ( i )

y Perl . [ 10 ]

para ( 1 .. 5 ) { imprimir }

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

Véase también

Referencias

  1. 1 2 Andrei Alexandrescu (6 de mayo de 2009). "Los iteradores deben irse" (PDF) . BoostCon 2009. Recuperado el 29 de julio de 2014 .
  2. cppreference
  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. "Biblioteca de rangos (desde C++20)" . cppreference.com . Consultado el 11 de septiembre de 2024 .
  7. BillWagner (14 de noviembre de 2023). "Explorar rangos de datos usando índices y rangos - C#" . learn.microsoft.com . Consultado el 22 de febrero de 2025 .
  8. "Operador de rango" . F# por ejemplo . 17 de febrero de 2023. Consultado el 22 de febrero de 2025 .
  9. "Rangos y progresiones - Kotlin" . Ayuda de Kotlin . Consultado el 22 de febrero de 2025 .
  10. "perlop - Expresiones Perl: operadores, precedencia, literales de cadena - Navegador Perldoc" . perldoc.perl.org . Consultado el 22 de febrero de 2025 .
  11. "Funciones integradas" . Documentación de Python . Python Software Foundation . Consultado el 17 de diciembre de 2024 .
  12. "PHP: range - Manual" . El Grupo de Documentación de PHP . Consultado el 17 de diciembre de 2024 .