Раздел « Алгоритмическая реализация» имеет следующий код:
// 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
что значит: =
:=
как «становится равным». Я на самом деле предпочитаю это,=
и==
так как "=" на естественном языке является оператором сравнения (или, по крайней мере, утверждением правды).Ответы:
: = является оператором присваивания для языков, в которых используется проверка равенства на один знак равенства. Наиболее известным из этих языков является Паскаль. Из-за влияния Си большинство языков переключилось на = для назначения и == для тестирования. Некоторые старые тексты и авторы, которые были обучены таким стилям, используют: = для псевдокода. Вы иногда видите стрелки <- также для назначения .
Из статьи:
Некоторые современные языки используют стрелки для назначения; прежде всего R , который использует его для глобального присваивания, в то время как единственное равенство (=) для локального присваивания.
Из Концепций языков программирования Себесты и заметок класса доктора К.Н. Кинга мы узнаем, что стандарты заданий уходят гораздо дальше, чем С или Паскаль. Похоже, что в 1958 году, когда разрабатывался Algol, было решено использовать: = для назначения. Комитет состоял из представителей США и Европы. Некоторые из немцев в комитете были знакомы с языком Планрадкула Конрада Цузе (который был разработан во время Второй мировой войны, но не опубликован до 1972 года и не реализован до 2005 года) и хотел, чтобы задание следовало предложенному методу назначения этого языка, который был
b+c => a
где b + c назначен a. Комитет изменил это на =: на том основании, что метод ввода программ в то время, называемый клавишным ударом, не имел «>» для использования. Таким образом, они пошли на компромисс на равных двоеточие. Тем не менее, американцы, знакомые с FORTRAN (до 1990 года у него не было строчных букв), хотели, чтобы назначение действовало влево, поскольку именно так FORTRAN делал это.Таким образом, им удалось изменить его на: = и заставить назначение работать влево, а не вправо в стиле FORTRAN (являющийся известным реализованным языком), а не Plankalkul (практически неизвестный язык за пределами Германии и не реализованный). , Алгол 60 сильно повлиял на все основные последующие императивные языки, включая Паскаль и С. Таким образом, Паскаль сохранил синтаксис ALGOL для присваивания и сохранил левосторонность присваивания.
Алгол был разработан, чтобы быть легко читаемым и близким к математическим обозначениям. Это был де-факто (и в основном де-юре) стандарт для написания алгоритмов в журналах в течение следующих 20 с лишним лет. Таким образом, инструкторы и компьютерные ученые, получившие образование с 1960 по 1980 годы, были бы знакомы с этим стилем обозначений.
Выпуск IBM 029 Keypunch в 1964 году позволил использовать символы> и <, что побудило их включить их в C среди других.
источник
:=
для присвоения. люди с математическим прошлым тоже поддержат это.Просто быстрая и педантичная нота. Псевдокод довольно неформальный, поэтому «: =» означает только то, что вы хотите, чтобы он значил. Как уже говорили другие, определенные языки, такие как Паскаль, используют «: =» для назначения, чтобы избежать путаницы с «=» для равенства, тогда как другие языки используют комбинацию «=» и «==» для той же цели.
Что касается фактического псевдокода , вы можете использовать «=», «==», «равно», «назначен», «: =», «имеет», «получает», или все, что плавает на вашей лодке, просто пока вы последовательны, а использование и контекст в вашем псевдокоде понятны.
источник
Я предполагаю, что это присваивание (я думаю, что это оператор присваивания в Delphi), поэтому в y [0]: = x [0] вы присваиваете значение x [0] для y [0].
Но в AFAIK нет такого понятия, как стандартный псевдокод , поэтому теоретически это может быть что угодно: =).
источник
=
уже имеет совсем другое значение: равенство. Использование оператора, который уже имеет понятное значение для чего-то другого, было бы чрезвычайно глупо.:=
естественный выбор, потому что в математической нотацииx := v
означает «пустьx
будетv
», а неx = v
«x
равноv
» и, следовательно, может вызвать путаницу.=
для назначения сбивает с толку. Я до сих пор помню, как много лет назад, когда я впервые научился программировать, было странно видетьx = x + 1
. После того, как вы изучили базовую математику в старшей школе,x = x + 1
выглядело как невозможное противоречивое бред. Затем я прочитал отличную книгу по информатике для широкого читателя ( я думаю, что это было так ), которая использовалась<-
для задания.x <- x + 1
гораздо проще понять.Обычно это означает то же самое, что и в математике: назначение.
источник
:=
обычно означает «определяется как» или «равен по определению».x := 1; y := 2; if (x = 1) y := 3
как если бы это было просто,y := 3
является разумной оптимизацией (при условии, что x не используется позже). Из 3 заданий 2 выполнены с помощью статического анализа. Ваше «определение» назначений - это общее утверждение, которое просто не выполняется без многочисленных допущений, от которых не должно зависеть определение этого термина.