Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 1/Assignment and Operations/bg: what changed

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

OldNewLine
1-<font size='5'></font>
2-
31## Присвояване и операции
42
53*(author: Tao Yue, state: unchanged)*
64
75След като декларирате променлива, вече можете да съхранявате стойности в нея. Това се нарича присвояване.
86
97За да присвоите стойност на променлива използвайте следния синтаксис:
108
119``` pascal
1210variable_name := expression;
1311```
1412
1513За разлика от други езици, чийто оператор за присвояване е само знак за равенство, Паскал използва двоеточие, последвано от знак за равенство подобно на начина, по който се прави в повечето системи за компютърна алгебра.
1614
1715Изразът отдясно може да е стойност:
1816
1917``` pascal
2018some_real := 385.385837;
2119```
2220
2321или може да бъде аритметичен израз:
2422
2523``` pascal
2624some_real := 37573.5 * 37593 + 385.8 / 367.1;
2725```
2826
2927Аритметичните оператори в Pascal са:
3028
3129| Оператор | Операция | Тип на аргументите | Тип на резултата |
3230|----|----|----|----|
3331| \+ | Събиране или унарно положително | real или integer | real или integer |
3432| \- | Изваждане или унарно отрицателно | real или integer | real или integer |
3533| * | Умножение | real или integer | real или integer |
3634| / | Дробно деление | real или integer | real |
3735| div | Целочислено деление | integer | integer |
3836| mod | Целочислен модул (остатък от деление) | integer | integer |
3937
4038**`div`** and **`mod`** работят единствено с *integers*. **`/`** работи с *reals* и *integers* но винаги дава *real* резултат. Останалите оператори работят с *reals* и *integers*. Когато се смесят *integers* и *reals*, резултатът винаги ще бъде *real* защото в противен случай може да се получи загуба на данни. Поради тази причина Pascal използва два различни оператора за дробно и целочислено деление. `7 / 2 = 3.5` (real), но `7 div 2 = 3` (и `7 mod 2 = 1` защото това е остатъка от делението).
4139
4240На всяка променлива може да бъде присвоена само стойност, която е от същия тип. По този начин не можете да присвоите реална стойност на целочислена променлива. Обаче някои типове данни ще се преобразуват в по-висок тип данни. Това се прави най-често при присвояване на целочислени стойности на реални променливи. Да предположим, че сте имали такова деклариране на променливи:
4341
4442``` pascal
4543var
4644 some_int : integer;
4745 some_real : real;
4846```
4947
5048Когато се изпълнят следните присвоявания:
5149
5250``` pascal
5351some_int := 375;
5452some_real := some_int;
5553```
5654
5755променливата `some_real` ще има стойност `375.0`.
5856
5957Промяната на един тип данни в друг се нарича **typecasting**. Съвременните компилатори на Pascal поддържат явната промяна на типа по подобие на езика C, но с малко по-различен синтаксис. Въпреки това, промяната на типа обикновено е нужна в ситуации на ниско ниво и във връзка с обектно-ориентирано програмиране и начинаещ студент по програмиране няма нужда да го използва. Още [информация за typecasting от GNU Pascal manual](http://www.gnu-pascal.de/gpc-es/Type-Casts.html).
6058
6159В Pascal знакът минус може да се използва, за да се образува отрицателна стойност. Знакът плюс също може да се използва, но обикновено се пропуска, тъй като стойностите по подразбиране са положителни.
6260
6361Не се опитвайте да използвате два оператора един до друг, като в:
6462
6563``` pascal
6664some_real := 37.5 * -2;
6765```
6866
69-Това може да ви изглежда напълно логично, тъй като се опитвате да умножите по отрицателно -2. Паскал обаче ще бъде объркан - няма да знае дали да умножава или да изважда<font color='red'>(Това не е вярно!)</font>. Можете да избегнете това, като използвате скоби, за да му изясните:
67+Това може да ви изглежда напълно логично, тъй като се опитвате да умножите по отрицателно -2. Паскал обаче ще бъде объркан - няма да знае дали да умножава или да изважда(Това не е вярно!). Можете да избегнете това, като използвате скоби, за да му изясните:
7068
7169``` pascal
7270some_real := 37.5 * (-2);
7371```
7472
7573Компютърът изпълнява операциите в ред, подобен на този, който следвате, когато правите аритметика. Умножението и делението (`* / div mod`) се извършват преди събиране и изваждане (`+ -`) и скобите винаги имат предимство. Така например, стойността на: `3,5 * (2 + 3)` ще бъде `17,5.`
7674
7775Паскал не може да изпълнява стандартни аритметични операции върху стойности от тип Boolean. Съществува специален набор от логически операции. Също така, не може да извършвате аритметични операции върху символи.
7876
7977---
8078*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 1/Assignment and Operations/bg", as it stood on 2022-08-20 after a change by Kai Burghardt, 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