Sign in Join
Wiki copytemporary

Becomes/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Becomes/ru

OldNewLine
1+<div style="float:left; margin: 0 10px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">
2+
3+
4+=
5+
6+</div>
7+
8+Символ ***:=*** (состоит из символа [[Colon/ru|двоеточия]] и следующего за ним символа [[Equal/ru|равно]] без пробела или другого символа) читается как ***присвоить*** и используется в [[Pascal]] для обозначения *присваивания значения*:
9+
10+``` pascal
11+ A := 4 ;
12+ Circle_Area := Pi * Diameter ;
13+ Name := 'Smith' ;
14+ C := 1000 - C div 2 ;
15+```
16+
17+Причина использования двух символов для присваивания (вместо одного, скажем, знака **=**) состоит в том, чтобы отличать присваивание значения от проверки на равенство.
18+
19+Например, в языках программирования, кроме Pascal, можно написать так
20+
21+
22+A = B = D ;
23+
24+или так
25+
26+A = B = D
27+
28+в зависимости от того, требуется ли указывать точку с запятой.
29+
30+В зависимости от языка программирования смысл этого выражения будет различным. Например, в языках Fortran и Basic данная инструкция будет означать "присвоить переменной A значение ответа на вопрос *равно ли B значению D?*". В языке программирования C это выражение будет означать "присвоить переменным A и B значение переменной D". Инструкция такого типа является достаточно распространенной ошибкой в языке программирования C; компилятор часто выдает предупреждение, если вы не сообщите ему, что намеренно сделали это (множественное присваивание) с помощью заключения выражения в круглые скобки. (Правильным способом получить значение результата проверки на равенство в языке C является выражение ***A = B == D;*** ).
31+
32+В языке Pascal такая путаница не происходит, потому что данное выражение синтаксически некорректно. Можно было бы написать выражение
33+
34+``` pascal
35+A := B = D;
36+```
37+
38+которое будет означать то же самое, что в языках Fortran или Basic, т.е. присвоить переменной A значение ответа на вопрос "*равны ли переменные B и D?*"
39+
40+Для присваивания переменным A, B и D одинакового значения требуется явное разделение выражений следующим образом
41+
42+
43+A := D ; B := D ;
44+
45+или
46+
47+B := D ; A := B ;
48+
49+или
50+
51+A := D ; B := A ;
52+
53+в зависимости от того, есть ли разница в выполнении или побочные эффекты (D может быть динамической переменной, такой как системный [[Port/ru|порт]], [[Function/ru|функцией]] или [[Property/ru|свойством]] [[Object/ru|объекта]], таким образом, значение [[Identifier/ru|идентификатора]] D может отличаться между первым и вторым использованием.)
54+
55+---
56+*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).*

Back to history