Becomes/ru: what changed
Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | - | ||
| 1 | + | = | |
| 2 | 2 | ||
| 3 | - | ||
| 3 | + | Символ ***:=*** (состоит из символа [[Colon/ru|двоеточия]] и следующего за ним символа [[Equal/ru|равно]] без пробела или другого символа) читается как ***присвоить*** и используется в [[Pascal]] для обозначения *присваивания значения*: | |
| 4 | 4 | ||
| 5 | - | ||
| 6 | - | ||
| 5 | + | ``` pascal | |
| 6 | + | A := 4 ; | |
| 7 | + | Circle_Area := Pi * Diameter ; | |
| 8 | + | Name := 'Smith' ; | |
| 9 | + | C := 1000 - C div 2 ; | |
| 10 | + | ``` | |
| 7 | 11 | ||
| 8 | - | ||
| 12 | + | Причина использования двух символов для присваивания (вместо одного, скажем, знака **=**) состоит в том, чтобы отличать присваивание значения от проверки на равенство. | |
| 9 | 13 | ||
| 10 | - | ||
| 11 | - | ||
| 12 | - | ||
| 13 | - | ||
| 14 | - | ||
| 15 | - | ||
| 14 | + | Например, в языках программирования, кроме Pascal, можно написать так | |
| 16 | 15 | ||
| 17 | - | ||
| 16 | + | ||
| 17 | + | A = B = D ; | |
| 18 | 18 | ||
| 19 | - | ||
| 19 | + | или так | |
| 20 | 20 | ||
| 21 | - | ||
| 22 | - | ||
| 23 | - | ||
| 21 | + | A = B = D | |
| 24 | 22 | ||
| 25 | - | ||
| 23 | + | в зависимости от того, требуется ли указывать точку с запятой. | |
| 26 | 24 | ||
| 27 | - | ||
| 25 | + | В зависимости от языка программирования смысл этого выражения будет различным. Например, в языках Fortran и Basic данная инструкция будет означать "присвоить переменной A значение ответа на вопрос *равно ли B значению D?*". В языке программирования C это выражение будет означать "присвоить переменным A и B значение переменной D". Инструкция такого типа является достаточно распространенной ошибкой в языке программирования C; компилятор часто выдает предупреждение, если вы не сообщите ему, что намеренно сделали это (множественное присваивание) с помощью заключения выражения в круглые скобки. (Правильным способом получить значение результата проверки на равенство в языке C является выражение ***A = B == D;*** ). | |
| 28 | 26 | ||
| 29 | - | ||
| 30 | - | ||
| 27 | + | В языке Pascal такая путаница не происходит, потому что данное выражение синтаксически некорректно. Можно было бы написать выражение | |
| 28 | + | ||
| 29 | + | ``` pascal | |
| 31 | 30 | A := B = D; | |
| 32 | 31 | ``` | |
| 33 | 32 | ||
| 34 | - | ||
| 33 | + | которое будет означать то же самое, что в языках Fortran или Basic, т.е. присвоить переменной A значение ответа на вопрос "*равны ли переменные B и D?*" | |
| 35 | 34 | ||
| 36 | - | ||
| 35 | + | Для присваивания переменным A, B и D одинакового значения требуется явное разделение выражений следующим образом | |
| 37 | 36 | ||
| 38 | - | ||
| 39 | - | ||
| 40 | - | ||
| 41 | - | ||
| 42 | - | ||
| 37 | + | ||
| 38 | + | A := D ; B := D ; | |
| 43 | 39 | ||
| 44 | - | ||
| 40 | + | или | |
| 45 | 41 | ||
| 46 | - | ||
| 47 | - | ||
| 42 | + | B := D ; A := B ; | |
| 48 | 43 | ||
| 49 | - | ||
| 50 | - | ||
| 44 | + | или | |
| 51 | 45 | ||
| 46 | + | A := D ; B := A ; | |
| 47 | + | ||
| 48 | + | в зависимости от того, есть ли разница в выполнении или побочные эффекты (D может быть динамической переменной, такой как системный [[Port/ru|порт]], [[Function/ru|функцией]] или [[Property/ru|свойством]] [[Object/ru|объекта]], таким образом, значение [[Identifier/ru|идентификатора]] D может отличаться между первым и вторым использованием.) | |
| 49 | + | ||
| 52 | 50 | --- | |
| 53 | - | ||
| 51 | + | *From the Free Pascal wiki, page "Becomes/ru", as it stood on 2020-02-09 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
