[от DeviLeR] Урок 6: Изрази

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Отговори
Потребителски аватар

Автор на темата
WaLkZ HWL
Администратор
Администратор
Мнения: 664
Регистриран: 05 окт 2016, 21:13
Местоположение: Варна
Се отблагодари: 46 пъти
Получена благодарност: 57 пъти
Години: 23

[от DeviLeR] Урок 6: Изрази

Мнение от WaLkZ HWL » 06 окт 2016, 17:14

Изразите са точно такива, както звучат по математика. :wink: Те са групи от символи, които връщат една част от данните. Изразите обикновено се състоят от вмъкнати изрази и се пресмятат в определен ред (подред, първо скобите, след това умножение, деление, събиране, изваждане и т.н.). Можете да сложите изрази навсякъде. Също така можете да задавате променливи, равни на тях, или да ги придавате към функции.

Код: Избери всички

//Това е най-простият израз. Той връща числото 0.
0
//За да го направите по-лесно за четене, това също е валидно:
(0)
Ако даден израз не е равен на нула или не е „false“, той не само възвръща дадена стойност, той задава и стойността „true“ на израза. В противен случай той ще възвръща 0, което е „false“.

Код: Избери всички

//Ето още математически изрази. Математическите оператори са:
// „+“ за събиране
// „-“ за изваждане
// „*“ за умножение
// „/“ за деление
// „%“ за деление с остатък
(5+6)                       //връща 11
((5*6)+3)                   //връща 33
((((5+3)/2)*4)-9)           //връща 5
((5*6) % 7)                 //връща 2
//Ето други изрази:
(true)                      //възвръща „true“
(5.0 + 2.3)                 //възвръща 7.3, което е число с плаваща запетая

//Има и разширения за директно използване върху променливи.
new a = 5
new b = 6
//Първите са постът / предварително инкрементиране и декрементиране на оператори.
a++          //възвръща a+1 или 6. Това е пост за нарастване.
++a          //also returns a+1, or 6. Това е пост за предварително увеличение.                     
Разликата между тези два израза е много важна, тъй като може да бъде доста коварна. a++ се пресмята в израза последна, а ++a първа! Тези разлики са доста удобни при кодове, които използват „loop“ по различни начини. Важно е да запомните и че инкрементирането и декрементирането на оператори не само ще възвърне a+1, но ще зададе и стойността a+1 на променливата a.

Код: Избери всички

a--          //възвръща 4 след декрементиране 
--a          //възвръща 4, предварително декрементиране

//Наблюдаваме:
a += 1       //Това задава „a“ на „a + 1“
a -= b       //Това задава „b“ на „a - b“
a *= 0       //Това умножава „a“ по „0“
a /= 2       //Това разделя „a“ на „2“                 
Също така математическите оператори не са единствените оператори, които съществуват. Съществуват булеви оператори, които ви помагат с логическите схеми или логическите решения.

Код: Избери всички

// Операторите проверяват и двете страни(и лявата, и дясната).  
// Ако и двете са „true“, тогава се възвръща стойността „true“

//Ето примери:
(1 && 0)                    //Това е „false“, защото 1 връща „true“,а 0 връща „false“. 
                                //След като и двете не са „true“, && възвръща „false“.
(1 && 2)                    //И двете числа са „true“, следователно и изразът е „true“.
(true && false)             //Това е „false“
(false && false)            //Това е „false“
(true && true)              //Това е „true“

//Другият важен оператор е „или“. Той възвръща „true“, ако една от двете стойностти е „true“.
(1 || 0)                    //„true“, защото едната стойност е „true“
(1 || 2)                    //„true“
(true || true)              //„true“
(false || false)            //„false“
(true || true)              //„true“               
Има и други оператори, които може да не използвате много често. Операторът „bitwise and“ се възвръща, ако двоичната, малка последователност се съдържа в друга последователност. В техническите термини „и (&&)“ извършва операция на всеки бит в двете числа. Например имаме числото 9, което е 1001 в двоичен код. Ако искате да разберете дали тази последователност съдържа числото 8 (1000), може да направите това:

Код: Избери всички

//Това ще върне 8, което означава, че 8 наистина е бит от 9.
(9 & 8)
//4 (00100) не е бит в 16 (10000) и това ще върне 0.
(16 & 4)
//Следващият оператор е "bitwise or"
//„или (||)“ извършва операция на всеки бит в двете числа.
//Това ще вземе 9 (1001) и ще го свърже с 3 (0011), което впоследствие е равно на 1011, или 11.
(9 | 3)
Тези два оператора също са важни, но не са използвани често. Те са „bitwise shift“ операторите. << е левият shift, а >> е десният. Те променят битовете в число в една посока.

Код: Избери всички

//Това взима числото 3 (00011) и го променя на 3 места в двоичния код (11000) или 24.
(3 << 3)
//Това взима числото 24 (11000) и го променя на 3 места в двоичния код (00011) или 3.
(24 >> 3)
Последният оператор е „bitwise not“. Той връща точно обратното, на каквото му бъде дадено. Когато е използван върху число, той ще върне всеки бит наобратно(1 към 0 ще го върне така - 0 към 1).

Код: Избери всички

//Това връща „false“
(!true)
//Това връща „true“
(!false)
//Това взима 9 (1001) и го прави на 6 (0110).
(!(9))
Източник: amxmodx.org
Превод: DeviLeR

Потребителски аватар

Abiss32
Потребител
Потребител
Мнения: 10
Регистриран: 03 яну 2019, 12:58
Се отблагодари: 1 път

[от DeviLeR] Урок 6: Изрази

Мнение от Abiss32 » 01 фев 2019, 17:30

((5*6) % 7) //връща 2
Не мога да си обясна как връща 2 може ли да ми обясниш? :confused:

Потребителски аватар

~jeff
Потребител
Потребител
Мнения: 89
Регистриран: 24 ное 2018, 12:39
Местоположение: Kali Linux
Се отблагодари: 2 пъти
Получена благодарност: 16 пъти
Години: 22
Контакти:

[от DeviLeR] Урок 6: Изрази

Мнение от ~jeff » 01 фев 2019, 17:33

Abiss32 написа:
01 фев 2019, 17:30
((5*6) % 7) //връща 2
Не мога да си обясна как връща 2 може ли да ми обясниш? :confused:
Връща 2.1 да бъдем точни.
5x6%x7
Никой не знае какво носи едно сърце, затова преди да го счупиш помисли... може би носи теб!

Потребителски аватар

TheRedShoko ReShoko
Модератор
Модератор
Мнения: 990
Регистриран: 06 окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 4 пъти
Получена благодарност: 53 пъти

[от DeviLeR] Урок 6: Изрази

Мнение от TheRedShoko ReShoko » 01 фев 2019, 18:24

~jeff написа:
01 фев 2019, 17:33
Abiss32 написа:
01 фев 2019, 17:30
((5*6) % 7) //връща 2
Не мога да си обясна как връща 2 може ли да ми обясниш? :confused:
Връща 2.1 да бъдем точни.
5x6%x7
2 връща. % връща остатъка от делението. 5x6 = 30 / 7 = 4 и остатък 2

Потребителски аватар

~jeff
Потребител
Потребител
Мнения: 89
Регистриран: 24 ное 2018, 12:39
Местоположение: Kali Linux
Се отблагодари: 2 пъти
Получена благодарност: 16 пъти
Години: 22
Контакти:

[от DeviLeR] Урок 6: Изрази

Мнение от ~jeff » 01 фев 2019, 18:30

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последна промяна от JustyleR на 01 фев 2019, 18:41, променено общо 1 път.
Причина: Безсмислен коментар / спам
Никой не знае какво носи едно сърце, затова преди да го счупиш помисли... може би носи теб!

Потребителски аватар

<VeCo>
AMXX Скриптър
AMXX Скриптър
Мнения: 24
Регистриран: 28 яну 2019, 19:01
Се отблагодари: 1 път
Получена благодарност: 14 пъти

[от DeviLeR] Урок 6: Изрази

Мнение от <VeCo> » 01 фев 2019, 18:31

Abiss32 написа:
01 фев 2019, 17:30
((5*6) % 7) //връща 2
Не мога да си обясна как връща 2 може ли да ми обясниш? :confused:
% е оператор, който връща остатъка от деленето. (modulus на английски, ама това няма нищо общо с "модули" както го е превел XD)

30 / 7 ≈ 4
-28
---
= 2

Полезен е ако искаш да провериш дали дадено число е четно (ако остатъка от делене на 2 е 0), или да сложиш лимит около някоя стойност, така че да не може да го прескочи, а да "превърта" отначало и да брои колко пъти го прави (секунди % 60 = минути). Много тъпо го обясних, но предполагам ме разбра. XD
Последна промяна от <VeCo> на 01 фев 2019, 19:45, променено общо 1 път.
:pepo_think3:

Потребителски аватар

Abiss32
Потребител
Потребител
Мнения: 10
Регистриран: 03 яну 2019, 12:58
Се отблагодари: 1 път

[от DeviLeR] Урок 6: Изрази

Мнение от Abiss32 » 01 фев 2019, 19:23

Аха сега май го разбрах

30/7 ≈ 4
след това трябва да сметна 4*7 = 28
и да извадя остатъка м/у 30 и 28...
благодаря за вниманието!!!

Отговори

Върни се в “Полезни кодове/уроци”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост