Съдържание:
1. Изрази
2. Условия
2.1. If .. then .. else if ... else
2.2. Switch
3. Цикли
3.1. For
3.2. While
4. Директиви
Изрази
Сега ще ви обесня за изразите в pawn.
.. изрази, да правилно прочетохте Ноооо изразите в любимия ви предмет - математиката
Те обхващат събирането, умножението, разделянето, изваждането и т.н.
Можете да сравнявате и преравнявате дадени изрази, и дори да ги прекарате във функция като параметър.
Ако даден израз не е 0, или не е false (говорихме в миналия урок за
TRUE/FALSE), не само че връща някаква стойност, а и връща "true".
В противен случай ще върне 0, което ще рече "false".
Математическите оператори в pawn са:
1. + "събиране"
2. - "изваждане"
3. * "умножение"
4. / "деление"
5. % "за намиране на остатък" (примерно 5/2 = 2,5 и остатък = 1)
Код: | |
1 2 3 4 5 6 7 | (5+6) // връща 11
((5*6)+3) // връща 33 ((((5+3)/2)*4)-9) // връща 7 ((5*6) % 7) // връща 2 (true) // връща true (5.0 + 2.3) // връща 7.3 като плаващо число |
Код: | |
1 2 3 4 5 | new a = 5
new b = 6 // тук първите две променливи са пост/предаврително увеличаващи оператора a++ // връща а + 1 => 6 (пост увеличаващи) ++a // също връща а + 1 => 6 (предварително увеличаващи) |
Код: | |
1 2 3 | new x = 0
log_amx("Stoinosta na x pri ++ e = %d", x++) log_amx("Stoinosta na x sled ++ e = %d", x) |
Код: | |
1 2 3 | new x = 0
log_amx("Stoinosta na x pri ++ e = %d", ++x) log_amx("Stoinosta na x sled ++ e = %d", x) |
Код: | |
1 | a++ |
Код: | |
1 2 3 | a = a + 1
a = a OP y a OP= x |
Код: | |
1 2 3 4 | a += 1 // Така слагаме на а стойност а + 1
a -= b // Така слагаме стойност на а, а - b a *= 0 // Така умножаваме а с 0 a /= 2 // Така делим а на 2 |
Код: | |
1 2 3 4 | a = a + 1
a = a -b a = a * 0 a = a / 2 |
Код: | |
1 2 3 4 5 6 7 | // Това е false, тъй като 1 означава true, а 0 - false
// И тъй като и двете не правят true, && връща false (1 && 0) (1 && 2) // Двете числа са "true", следователно израза е верен (true && false) //false (false && false) //false (true && true) //true |
Код: | |
1 2 3 4 5 | (1 || 0) //true, тъй като една от стойностите е true
(1 || 2) //true (true || false) //true (false || false) //false (true || true) //true |
Код: | |
1 2 3 4 5 6 7 8 | // Така ще върнете 8, което ще рече че 8 се съдържа в 9
(9 & 8) //4 (00100) не е бит в 16 (10000) и затова ще върне 0. (16 & 4) // Следващия оператор който ще разгледаме е "bitwise or" (|) // Което всъщност е същото като "или ||" оператора и го изпълнява върху всеки бит в двете числа // По този начил ще вземем 9 (1001) и ще го сравним с 3 (0011), резултата ще бъде в 1011, или 11. (9 | 3) |
Код: | |
1 2 3 4 | // Така ще вземем числото 3 (00011) и ще му обърнем посоката с три места в бинарния си код (11000), което ще рече 24.
(3 << 3) // Така ще вземем числото 24 (11000) и ще обърнем посоката му с три места (00011), което ще рече 3. (24 >> 3) |
Код: | |
1 2 3 4 5 6 7 | // Ще върне false
(!true) // Ще върне true (!false) // Така ще вземем 9 (бинарно: 1001) и ще го направим 6 (бинарно: 0110). // Това е "bitwise complement" оператора, който изпълнява !(НЕ / БЕЗ) върху всеки бит. (~(9)) |
Код: | |
1 2 3 4 5 6 7 | new a = 1
new b = 1 if ( a + b == 2 ) { log_amx("a+b e ravno na 2 !") } else { log_amx("a+b ne e ravno na 2 !") } |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | new a = 1
new b = 2 if ( a > b ) { log_amx("a e po-golqmo ot b, toest b e po-malko ot a") } else { log_amx("a e po-malko ot b, toest b e po-golqmo ot a") } if ( a >= b ) { // когато а е по-голямо или равно на b } else { // когато а не е по-голямо или равно на b } if ( a <= b ) { // когато а е по-малко или равно на b } else { // когато а не е по-малко или равно на b } if ( ((a+b) / 2) >= c ) { // Кода който ще се изпълни при условие когато а + b, разделени на 2 ще е равно или по-голямо от стойността на променливата c } if (a != 4) { // когато а е РАЗЛИЧНО от 4 } if (a >= 5 && a <= 10) { // съставихме обхват, при който, ако а е равно или по-голямо от 5 И е равно или по-голямо от 10, да се изпълни някакъв код } else { // Ако ли не.. някакъв друг код } // Връща TRUE и за двете стойности (тоест изпълнява кода преди ELSE) if (a && b) {} // Връща TRUE ако 7.5 е по-голямо от c if ( ((5*3)/2) > c) {} // Винаги ще върне true if (true) {} // Никога няма да върне true if (false) {} |
Код: | |
1 2 3 4 5 | new masiv_a[3]
new masiv_b[3] if (masiv_a == masiv_b) { .. } |
Код: | |
1 2 3 4 5 | if ((masiv_a[0] == masiv_b[0]) &&
(masiv_a[1] == masiv_b[1]) && (masiv_a[2] == masiv_b[2])) { .... } |
Код: | |
1 2 3 4 5 6 7 | if (a == 6) {
// код, който да се изпълнява при а = 6 } else if (a > 100 && a < 150) { // код, който да се изпълнява при а по-голямо от 100 и по-малко от 150 } else { // код, който да се изпълнява при краен случай. Тоест, ако стойността на а не попада никъде в предишните условия } |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | switch (a)
{ case 5: { // място за кода, който ще се изпълни при условие, че стойността на "a" е 5 } case 6: { // място за кода, който ще се изпълни при условие, че стойността на "a" е 6 } case 7: { // място за кода, който ще се изпълни при условие, че стойността на "a" е 7 } default: { // Кода, който ще се изпълни в случай, че "a" не приема никаква стойност, която е описана в switch-а, като отделен случай } } |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | switch (a)
{ case 3, 4, 5: { // място за кода, който ще се изпълни при условие, че стойността на "a" е 3, 4 или 5 } case 6, 7, 8: { // място за кода, който ще се изпълни при условие, че стойността на "a" е 6, 7 или 8 } case 9, 50, 17: { // място за кода, който ще се изпълни при условие, че стойността на "a" е 9, 50 или 17 } default: { // Кода, който ще се изпълни в случай, че "a" не приема никаква стойност, която е описана в switch-а, като отделен случай } } |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | switch (a)
{ case 0 ... 10: { // място за кода, който ще се изпълни при условие, че стойността на "a" е между 0 и 10 } case 20 ... 30: { // място за кода, който ще се изпълни при условие, че стойността на "a" е между 20 и 30 } case 100 ... 500: { // място за кода, който ще се изпълни при условие, че стойността на "a" е между 100 и 500 } default: { // Кода, който ще се изпълни в случай, че "a" не приема никаква стойност, която е описана в switch-а, като отделен случай } } |
Код: | |
1 2 3 4 5 6 | new broiach
new suma for (broiach=1; broiach<=10; broiach++) { suma += broiach } |
Код: | |
1 2 3 4 | for (първоначална стойност; условие; инкрементиране)
{ // вашият код } |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | sum_of_array(moqMasiv[], размер)
{ // Бъдете сигурни че сте написали точният размер на масива, за да не го "прелеем" (в миналия урок за масивит съм обяснил този термин) new i, sum // Цикълът ще започне от 0 и ще спред точно, когато стигне целия размер на масива // Ако потребителя е написал точния размер на масива, // цъкъла ще почне от 0 до {размера}-1 // Така ще пасне точно според слотовете с масива for (i=0; i<size; i++) { // Всеки път, когато се изпълнява този цикъл // i ще бъде число от 0 до {размера}-1 // Добавяме стойността на слота (i) от масив в sum // Когато преключи, sum ще съдържа // сумата от всички слотове на масива sum += moqMasiv[i] } return sum } new NumberArray[4] NumberArray[0] = 3 NumberArray[1] = 1 NumberArray[2] = 4 NumberArray[3] = 1 new answer = sum_of_array(NumberArray, 4) //отговора ще бъде 3+1+4+1, или 9 |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | bool:compare_arrays(array1[], array2[], size)
{ new i for (i=0; i<size, i++) { // Ако слота не съвпада, спираме изпълнението на функцията и връщаме false. if (array1[i] != array2[i]) { return false } } // Ако функцията стигне до тази точка, то връщаме TRUE, тоест масивите са напълно еднакви ! return true } |
Код: | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | new i=0
new sum while (++i <= 10) { sum+=i } sum_of_array(masiv[], razmer) { new i=0, sum // Изпълняваме цикъла, докато i е по-малък от {размера} // i се инкрементриа в края на тялото на цикъла while (i++ < size) { sum += masiv[i] } return sum } bool:compare_arrays(masiv1[], masiv2[], size) { new i while (i++ < size) { if (masiv1[i] != masiv2[i]) { return false } } return true } |
Код: | |
1 2 3 4 5 6 7 8 9 | // За да сложите някаква стойност към символ е нужно да напишете
#define SIMVOL STOINOST // примерно: #define MAX_STRING 250 new String[MAX_STRING] #define INFO "Uroka e napisan ot hateYou specialno za аmxmodxbg.org" new INFO[MAX_STRING] = INFO |
Код: | |
1 2 3 4 5 6 7 | #if defined LINUX
// Този код ще бъде компилиран ако е дефиниран LINUX (#define LINUX) execute_command("ls -l") #else // А този, ако не е .. execute_command("dir") #endif |
Код: | |
1 2 3 | #pragma dynamic 4096
// Така ще създадете 16k (което си е и по дифаулт). // Измерва се в блокове от 4 байтови клетки |
Код: | |
1 | #pragma semicolon 1 |
Код: | |
1 2 3 4 5 | #pragma ctrlchar ''
// така ще промените контролният символ на наклонена черта. Също като при ( c/c++/c#/java/php... и т.н. ) // сега ще трябва да ползвате вместо ^ // примерно: client_print(id, print_chat, "Uroka e napisan specialno za ^"amxmodxbg.org^" !") // сега трябва да е: client_print(id, print_chat, "Uroka e napisan specialno za "amxmodxbg.org" !") |