stringtranslate.com

Numeración basada en cero

La numeración de base cero es una forma de numeración en la que al elemento inicial de una secuencia se le asigna el índice  0, en lugar del índice 1, como es típico en circunstancias cotidianas no matemáticas o de programación. En la numeración de base cero, el elemento inicial a veces se denomina elemento cero , [1] en lugar de primer elemento; cero es un número ordinal acuñado correspondiente al número cero . En algunos casos, un objeto o valor que no pertenece (originalmente) a una secuencia determinada, pero que podría colocarse naturalmente antes de su elemento inicial, puede denominarse elemento cero. No existe un amplio acuerdo con respecto a la corrección del uso de cero como ordinal (ni con respecto al uso del término cero ), ya que crea ambigüedad para todos los elementos posteriores de la secuencia cuando carece de contexto.

Las secuencias de numeración que comienzan en 0 son bastante comunes en notación matemática, en particular en combinatoria , aunque los lenguajes de programación para matemáticas generalmente indexan desde 1. [2] [3] [4] En informática , los índices de matriz generalmente comienzan en 0 en los lenguajes de programación modernos , por lo que los programadores podrían usar cero en situaciones en las que otros podrían usar primero , y así sucesivamente. En algunos contextos matemáticos, la numeración de base cero se puede utilizar sin confusión, cuando las formas ordinales tienen un significado bien establecido y un candidato obvio debe ir primero ; por ejemplo, una derivada cero de una función es la función misma, que se obtiene derivando cero veces. Tal uso corresponde a nombrar un elemento que no pertenece propiamente a la secuencia pero que la precede: la derivada cero no es realmente una derivada en absoluto. Sin embargo, así como la primera derivada precede a la segunda derivada , también la derivada cero (o la función original misma) precede a la primera derivada .

Programación de computadoras

Origen

Martin Richards , creador del lenguaje BCPL (precursor de C ), diseñó arrays iniciando en 0 como posición natural para iniciar el acceso al contenido del array en el lenguaje, ya que el valor de un puntero p usado como dirección accede a la posición p + 0 en memoria. [5] [6] BCPL se compiló por primera vez para IBM 7094 ; el lenguaje no introdujo búsquedas de indirección en tiempo de ejecución , por lo que la optimización de indirección proporcionada por estas matrices se realizó en tiempo de compilación. [6] Sin embargo, la optimización fue importante. [6] [7]

En 1982 Edsger W. Dijkstra en su pertinente nota Por qué la numeración debería comenzar en cero [8] argumentó que los subíndices de las matrices deberían comenzar en cero, ya que este último es el número más natural . Discutir posibles diseños de rangos de matrices encerrándolos en una desigualdad encadenada, combinando desigualdades agudas y estándar en cuatro posibilidades, demostrando que, según su convicción, las matrices de base cero se representan mejor mediante rangos de índices no superpuestos, que comienzan en cero, en alusión a los abiertos . , intervalos semiabiertos y cerrados como ocurre con los números reales. El criterio de Dijkstra para preferir esta convención es en detalle que representa secuencias vacías de una manera más natural ( ai < a  ?) que "intervalos" cerrados ( ai ≤ ( a − 1) ? ), y que con semi- "intervalos" abiertos de naturales, la longitud de una subsecuencia es igual al límite superior menos el límite inferior ( ai < b da ( ba ) valores posibles para i , con a , b , i todos los números enteros).

Uso en lenguajes de programación

Este uso se deriva de opciones de diseño integradas en muchos lenguajes de programación influyentes , incluidos C , Java y Lisp . En estos tres, los tipos de secuencia (matrices C, matrices y listas Java, y listas y vectores Lisp) se indexan comenzando con el subíndice cero. Particularmente en C, donde las matrices están estrechamente ligadas a la aritmética de punteros , esto hace que la implementación sea más simple: el subíndice se refiere a un desplazamiento desde la posición inicial de una matriz, por lo que el primer elemento tiene un desplazamiento de cero.

Hacer referencia a la memoria mediante una dirección y un desplazamiento se representa directamente en el hardware de la computadora en prácticamente todas las arquitecturas de computadora, por lo que este detalle de diseño en C facilita la compilación, a costa de algunos factores humanos. En este contexto, utilizar "ceroth" como ordinal no es estrictamente correcto, pero es un hábito muy extendido en esta profesión. Otros lenguajes de programación, como Fortran o COBOL , tienen subíndices de matriz que comienzan con uno, porque estaban pensados ​​como lenguajes de programación de alto nivel y, como tales, tenían que tener una correspondencia con los números ordinales habituales que son anteriores a la invención del cero por mucho tiempo.

Pascal permite que el rango de una matriz sea de cualquier tipo ordinal (incluidos los tipos enumerados). APL permite configurar el origen del índice en 0 o 1 durante el tiempo de ejecución mediante programación. [9] [10] Algunos lenguajes recientes, como Lua y Visual Basic , han adoptado la misma convención por la misma razón.

El cero es el valor entero sin signo más bajo, uno de los tipos más fundamentales en programación y diseño de hardware. En informática, el cero se utiliza a menudo como caso base para muchos tipos de recursividad numérica . Las pruebas y otros tipos de razonamiento matemático en informática suelen comenzar con cero. Por estas razones, en informática no es inusual numerar desde cero en lugar de uno.

En los últimos años, este rasgo también se ha observado entre muchos matemáticos puros , donde muchas construcciones se definen como numeradas a partir de 0. [ cita necesaria ]

Si se utiliza una matriz para representar un ciclo, es conveniente obtener el índice con una función módulo , que puede dar como resultado cero.

Propiedades numéricas

Con la numeración de base cero, un rango se puede expresar como el intervalo medio abierto , [0, n ) , en contraposición al intervalo cerrado, [1, n ] . Los rangos vacíos, que suelen aparecer en los algoritmos, son difíciles de expresar con un intervalo cerrado sin recurrir a convenciones obtusas como [1, 0] . Debido a esta propiedad, la indexación basada en cero reduce potencialmente los errores de uno por uno y de valla . [8] Por otro lado, el recuento de repeticiones n se calcula de antemano, lo que hace que el uso de contar de 0 a n − 1 (inclusive) sea menos intuitivo. Algunos autores prefieren la indexación basada en uno, ya que se corresponde más estrechamente con cómo se indexan las entidades en otros contextos. [11]

Otra propiedad de esta convención está en el uso de la aritmética modular implementada en las computadoras modernas. Por lo general, la función de módulo asigna cualquier módulo entero N a uno de los números 0, 1, 2, ..., N − 1 , donde N ≥ 1 . Debido a esto, muchas fórmulas en algoritmos (como la que se utiliza para calcular índices de tablas hash) se pueden expresar elegantemente en código usando la operación de módulo cuando los índices de matriz comienzan en cero.

Las operaciones de puntero también se pueden expresar de manera más elegante en un índice de base cero debido a la lógica subyacente de dirección/desplazamiento mencionada anteriormente. Para ilustrar, supongamos que a es la dirección de memoria del primer elemento de una matriz e i es el índice del elemento deseado. Para calcular la dirección del elemento deseado, si los números de índice cuentan desde 1, la dirección deseada se calcula mediante esta expresión:

donde s es el tamaño de cada elemento. Por el contrario, si los números índice cuentan desde 0, la expresión se convierte en

Esta expresión más simple es más eficiente de calcular en tiempo de ejecución .

Sin embargo, un lenguaje que desee indexar matrices desde 1 podría adoptar la convención de que cada dirección de matriz está representada por a ′ = as ; es decir, en lugar de utilizar la dirección del primer elemento de la matriz, dicho lenguaje utilizaría la dirección de un elemento ficticio situado inmediatamente antes del primer elemento real. La expresión de indexación para un índice basado en 1 sería entonces

Por lo tanto, el beneficio de eficiencia en tiempo de ejecución de la indexación basada en cero no es inherente, sino que es un artefacto de la decisión de representar una matriz con la dirección de su primer elemento en lugar de la dirección del elemento cero ficticio. Sin embargo, la dirección de ese elemento ficticio bien podría ser la dirección de algún otro elemento en la memoria no relacionado con la matriz.

Superficialmente, el elemento ficticio no se adapta bien a matrices multidimensionales. Indexar matrices multidimensionales desde cero hace que una conversión ingenua (contigua) a un espacio de direcciones lineal (variando sistemáticamente un índice tras otro) parezca más simple que cuando se indexa desde uno. Por ejemplo, al asignar la matriz tridimensional A[ P ][ N ][ M ] a una matriz lineal L[ M⋅N⋅P ] , ambas con elementos M ⋅ N ⋅ P , el índice r en la matriz lineal a acceder a un elemento específico con L[ r ] = A[ z ][ y ][ x ] en indexación de base cero, es decir, [0 ≤ x < P ] , [0 ≤ y < N ] , [0 ≤ z < M ] , y [0 ≤ r < M ⋅ N ⋅ P ] , se calcula mediante

Organizar todas las matrices con índices basados ​​en 1 ( [1 ≤ x′P ] , [1 ≤ y′N ] , [1 ≤ z′M ] , [1 ≤ r′M ⋅ N ⋅ P ] ), y suponiendo una disposición análoga de los elementos, se obtiene

para acceder al mismo elemento, que posiblemente parezca más complicado. Por supuesto, r ′ = r + 1, ya que [ z = z ′ – 1], [ y = y ′ – 1] y [ x = x ′ – 1]. Un ejemplo sencillo y cotidiano es la notación posicional , que hizo posible la invención del cero. En notación posicional, las decenas, centenas, millares y todos los demás dígitos comienzan con cero, sólo las unidades comienzan con uno. [12]

Esta situación puede generar cierta confusión en la terminología. En un esquema de indexación de base cero, el primer elemento es el "elemento número cero"; asimismo, el duodécimo elemento es "elemento número once". Aparece, por tanto, una analogía de los números ordinales con la cantidad de objetos numerados; el índice más alto de n objetos será n − 1 y se refiere al n.ésimo elemento. Por esta razón, a veces se hace referencia al primer elemento como elemento cero , en un intento de evitar confusión.

Ciencia

En matemáticas , muchas secuencias de números o de polinomios están indexadas por números enteros no negativos, por ejemplo, los números de Bernoulli y los números de Bell .

Tanto en mecánica como en estadística , se define el momento cero , que representa la masa total en el caso de la densidad física , o la probabilidad total, es decir, uno, para una distribución de probabilidad .

La ley cero de la termodinámica se formuló después de la primera, segunda y tercera leyes, pero se considera más fundamental, de ahí su nombre.

En biología, se dice que un organismo tiene intencionalidad de orden cero si no muestra "ninguna intención de nada en absoluto". Esto incluiría una situación en la que el fenotipo genéticamente predeterminado del organismo resulta en un beneficio de aptitud para sí mismo, porque no "tenía la intención" de expresar sus genes. [13] En el mismo sentido, una computadora puede considerarse desde esta perspectiva una entidad intencional de orden cero, ya que no "tiene la intención" de expresar el código de los programas que ejecuta. [14]

En experimentos biológicos o médicos, se dice que las mediciones iniciales realizadas antes de que haya transcurrido el tiempo experimental corresponden al día 0 del experimento. [ cita necesaria ]

En genómica, se utilizan sistemas basados ​​en 0 y 1 para las coordenadas del genoma. [ cita necesaria ]

El paciente cero (o caso índice ) es el paciente inicial en la muestra poblacional de una investigación epidemiológica .

Otros campos

El año cero no existe en el ampliamente utilizado calendario gregoriano ni en su predecesor, el calendario juliano . Según esos sistemas, al año 1 a.C. le sigue el 1 d.C. Sin embargo, hay un año cero en la numeración de años astronómicos (donde coincide con el año juliano 1 a.C.) y en ISO 8601:2004 (donde coincide con el año gregoriano 1 a.C.), así como en todos los calendarios budista e hindú .

En muchos países, la planta baja de los edificios se considera el piso número 0 en lugar del "primer piso", la convención de nomenclatura que se encuentra habitualmente en los Estados Unidos de América. Esto forma un conjunto consistente con pisos subterráneos marcados con números negativos.

Si bien el ordinal 0 se utiliza principalmente en comunidades directamente relacionadas con las matemáticas, la física y la informática, también hay casos en la música clásica. El compositor Anton Bruckner consideró que su primera Sinfonía en re menor no era digna de incluirse en el canon de sus obras, y escribió gilt nicht ("no cuenta") en la partitura y un círculo con un travesaño, con la intención de que significara "inválido". Pero póstumamente, esta obra pasó a ser conocida como Sinfonía n.° 0 en re menor , aunque en realidad fue escrita después de la Sinfonía n.° 1 en do menor . Hay una Sinfonía en fa menor aún anterior de Bruckner, que a veces se denomina n.º 00 . El compositor ruso Alfred Schnittke también escribió una Sinfonía n.º 0 .

En algunas universidades, incluidas Oxford y Cambridge, la "semana 0" u ocasionalmente la "semana cero" se refiere a la semana anterior a la primera semana de clases de un trimestre. En Australia, algunas universidades se refieren a esto como "O semana", que sirve como un juego de palabras con " semana de orientación ". Paralelamente, las semanas de introducción a la educación universitaria en Suecia generalmente se denominan nollning (reducción a cero).

La Fuerza Aérea de los Estados Unidos inicia el entrenamiento básico cada miércoles, y se considera que la primera semana (de ocho) comienza el domingo siguiente. Los cuatro días anteriores a ese domingo a menudo se denominan "semana cero".

Los relojes de 24 horas y la norma internacional ISO 8601 usan 0 para indicar la primera hora (cero) del día, en consonancia con el uso de 0 para indicar el primer minuto (cero) de la hora y el primer segundo (cero) del minuto. . Además, los relojes de 12 horas utilizados en Japón utilizan 0 para indicar la hora inmediatamente después de la medianoche y el mediodía, en contraste con el 12 utilizado en otros lugares, para evitar confusión sobre si las 12 a. m. y las 12 p. m. representan el mediodía o la medianoche .

Los dibujos de Robert Crumb para el primer número de Zap Comix fueron robados, por lo que dibujó un número completamente nuevo, que se publicó como número 1. Más tarde volvió a entintar sus fotocopias de la obra de arte robada y la publicó como número 0.

La carretera de circunvalación de Bruselas en Bélgica tiene el número R0. Se construyó después de la carretera de circunvalación que rodea Amberes , pero se consideró que Bruselas (al ser la capital) merecía un número más básico. De manera similar, la autopista de circunvalación (inacabada) que rodea Budapest en Hungría se llama M0 .

El cero se utiliza a veces en direcciones de calles , especialmente en esquemas donde los números pares están en un lado de la calle y los impares en el otro. Un ejemplo de ello es Christ Church en Harvard Square , cuya dirección es 0 Garden Street.

Antiguamente en la Fórmula Uno , cuando un campeón del mundo defensor no competía en la temporada siguiente, el número 1 no se asignaba a ningún piloto, sino que un piloto del equipo campeón del mundo llevaría el número 0, y el otro, el número 2. Este Esto sucedió tanto en 1993 como en 1994, con Damon Hill llevando el número 0 en ambas temporadas, ya que el campeón defensor Nigel Mansell renunció después de 1992 y el campeón defensor Alain Prost renunció después de 1993. Sin embargo, en 2014 la serie pasó a los pilotos que llevaban el número 0 personalizado durante toda su carrera. números, en lugar de números asignados por el equipo, aparte de que el campeón defensor aún tenga la opción de llevar el número 1. Por lo tanto, el 0 ya no se usa en este escenario. No está claro si está disponible como número elegido por el conductor, o si deben estar entre 2 y 99, pero hasta la fecha no se ha utilizado bajo este sistema.

Algunos deportes de equipo permiten elegir el 0 como número de uniforme del jugador (además del rango típico de 1 a 99). La NFL votó para permitir esto a partir de 2023.

Una precuela cronológica de una serie puede numerarse como 0, como por ejemplo Ring 0: Birthday o Zork Zero .

Los Ferrocarriles Federales Suizos numeran determinadas clases de material rodante desde cero, por ejemplo Re 460 000 a 118.

En el ámbito de la ficción, Isaac Asimov finalmente añadió una Ley Cero a sus Tres Leyes de la Robótica , convirtiéndolas esencialmente en cuatro leyes.

Una rueda de ruleta estándar contiene el número 0 y del 1 al 36. Aparece en verde, por lo que no se clasifica como número “rojo” ni “negro” a efectos de apuestas. El juego de cartas Uno tiene cartas numéricas que van del 0 al 9 junto con cartas especiales, dentro de cada palo de color.

Ver también

Referencias

Citas

  1. ^ M. Seed, Graham (1965). Introducción a la programación orientada a objetos en C++ con aplicaciones en gráficos por computadora (2ª ed.). Biblioteca Británica: Springer. pag. 391.ISBN _ 1852334509. Consultado el 11 de febrero de 2020 .
  2. ^ Steve Eddins y Loren Shure. "Indización matricial en MATLAB" . Consultado el 23 de febrero de 2021 .
  3. ^ "Cómo: obtener elementos de listas". Wolframio . Consultado el 23 de febrero de 2021 .
  4. ^ "Indexación de matrices, matrices y vectores". Arcesoft . Consultado el 23 de febrero de 2021 .
  5. ^ Martín Richards (1967). El manual de referencia de BCPL (PDF) . Instituto de Tecnología de Massachusetts. pag. 11.
  6. ^ abc Mike Hoye. "Cita necesaria" . Consultado el 28 de enero de 2014 .
  7. ^ Tom Van Vleck (1995). "El IBM 7094 y CTSS" . Consultado el 28 de enero de 2014 .
  8. ^ ab Dijkstra, Edsger Wybe (2 de mayo de 2008). "Por qué la numeración debería comenzar en cero (EWD 831)". Archivo EW Dijkstra . Universidad de Texas en Austin . Consultado el 16 de marzo de 2011 .
  9. ^ Brown, Jim (diciembre de 1978). "En defensa del origen del índice 0". ACM SIGAPL APL Cotización Cuádruple . 9 (2): 7. doi :10.1145/586050.586053. S2CID  40187000.
  10. ^ Hui, Roger. "¿Es el origen del índice 0 un obstáculo?". jsoftware.com . JSoftware . Consultado el 19 de enero de 2015 .
  11. ^ Programación Microsoft® Visual C# 2005 por Donis Marshall.
  12. ^ Sal Khan. Matemáticas 1er grado / Valor posicional / Cuadrícula numérica. Academia Khan . Consultado el 28 de julio de 2018 . Título de Youtube: Cuadrícula numérica / Contar / Matemáticas tempranas / Khan Academy.
  13. ^ Byrne, Richard W. "El mono pensante: orígenes evolutivos de la inteligencia" . Consultado el 18 de mayo de 2010 .
  14. ^ Dunbar, Robin. "La Historia Humana - Una nueva historia de la Evolución de la humanidad" . Consultado el 18 de mayo de 2010 .

Fuentes