La sección titulada Implementación Algorítmica tiene el siguiente código:
// Return RC low-pass filter output samples, given input samples,
// time interval dt, and time constant RC
function lowpass(real[0..n] x, real dt, real RC)
var real[0..n] y
var real α := dt / (RC + dt)
y[0] := x[0]
for i from 1 to n
y[i] := α * x[i] + (1-α) * y[i-1]
return y
¿Qué significa: = significa?
:=
como "se vuelve igual a". De hecho, prefiero esto sobre=
y==
dado que "=" en lenguaje natural es un operador de comparación (o al menos una declaración de verdad).Respuestas:
: = es el operador de asignación para idiomas que usan pruebas de igualdad de signo de igual igual. El más conocido de esos idiomas es Pascal. Debido a la influencia de C, la mayoría de los lenguajes cambiaron a = para asignación y == para prueba. Algunos textos antiguos y autores que fueron entrenados en tales estilos usan: = para pseudocódigo. A veces ves flechas <- también para la asignación .
Del artículo:
Algunos idiomas modernos usan flechas para la asignación; más notablemente R , que lo usa para la asignación global mientras usa los iguales únicos (=) para la asignación local.
De los Conceptos de Lenguajes de Programación de Sebesta y las notas de clase del Dr. KN King, aprendemos que los estándares de asignación se remontan mucho más allá de C o Pascal. Parece que en 1958, cuando Algol estaba siendo diseñado, se decidió utilizar: = para la asignación. El comité estaba compuesto por representantes estadounidenses y europeos. Algunos de los alemanes en el comité estaban familiarizados con el lenguaje Plankalkul de Konrad Zuse (que se redactó durante la Segunda Guerra Mundial pero no se publicó hasta 1972 y no se implementó hasta 2005) y querían que la asignación siguiera el método de asignación propuesto para ese idioma, que era
b+c => a
donde b + c se asigna a a. El comité cambió esto a =: con el argumento de que el método de ingresar a los programas en el momento llamado golpe de teclado no tenía un ">" para usar. Entonces se comprometieron en los dos puntos iguales. Sin embargo, los estadounidenses que estaban familiarizados con FORTRAN (no tenía minúsculas hasta 1990) querían que la asignación operara a la izquierda, ya que así fue como FORTRAN lo hizo.Así que lograron que se cambiara a: = en su lugar, y que la tarea funcionara hacia la izquierda en lugar de hacia la derecha al estilo de FORTRAN (que es un idioma implementado conocido) en lugar de Plankalkul (un idioma prácticamente desconocido fuera de Alemania y no implementado) . Algol 60 influyó fuertemente en todos los lenguajes imperativos posteriores importantes, incluidos Pascal y C. Por lo tanto, Pascal mantuvo la sintaxis de ALGOL para la asignación y ambos mantuvieron la zurda de la asignación.
ALGOL fue diseñado para ser fácil de leer y cercano a la notación matemática. Fue el estándar de facto (y básicamente de jure) para escribir algoritmos en revistas para los próximos 20 años. Por lo tanto, los instructores y los informáticos educados desde 1960 hasta alrededor de 1980 habrían estado familiarizados con ese estilo de notación.
El lanzamiento de IBM 029 Keypunch en 1964 permitió caracteres> y <, lo que provocó su inclusión en C, entre otros.
fuente
:=
para la asignación. las personas con conocimientos matemáticos también favorecerán esto.Solo una nota rápida y pedante. El pseudocódigo es bastante informal, por lo que ": =" significa solo lo que quiere que signifique. Como otros han dicho, los lenguajes específicos como Pascal usan ": =" para la asignación para evitar confusiones con "=" para la igualdad, mientras que otros lenguajes usan la combinación de "=" y "==" para el mismo propósito.
En lo que respecta al Pseudocódigo real , puede usar "=", "==", "igual", "se asigna a", ": =", "tiene", "recibe", o lo que sea que flote su barco, solo siempre y cuando sea coherente, y el uso y el contexto dentro de su pseudocódigo sea claro.
fuente
Supongo que es una asignación (creo que es el operador de asignación en Delphi), así que en y [0]: = x [0] estás asignando el valor de x [0] a y [0].
Pero AFAIK no existe un pseudocódigo estándar , por lo que en teoría podría ser cualquier cosa: =).
fuente
=
ya tiene un significado muy diferente : igualdad. Usar un operador que ya tiene un significado bien entendido para algo diferente sería extremadamente estúpido.:=
la elección natural, porque en notación matemáticax := v
significa "dejarx
serv
" en lugar dex = v
, lo que significa "x
igualv
" y, por lo tanto, causar confusión.=
para la asignación es confuso. Todavía recuerdo, hace mucho tiempo, cuando aprendí a programar, lo confuso que era verx = x + 1
. Una vez que hayas estudiado matemáticas básicas de la escuela secundaria,x = x + 1
solo parece imposible galimatías contradictorias. Luego leí un excelente libro sobre informática para el lector general ( creo que fue esto ) que usé<-
para la asignación.x <- x + 1
Es mucho más fácil de entender.Por lo general, significa lo mismo que en matemáticas: asignación.
fuente
:=
generalmente significa "se define como" o "es igual por definición".x := 1; y := 2; if (x = 1) y := 3
como si fueray := 3
una optimización razonable (suponiendo que x no se use más adelante). De 3 asignaciones, 2 se implementan mediante análisis estático. Su "definición" de asignaciones es una declaración general, que simplemente no se cumple sin numerosos supuestos de los que no debería depender una definición de este término.