 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[ Lesson ] Переменная
| |
| Latron | Дата: Пятница, 10.02.2012, 15:05 | Сообщение # 1 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Автор урока: Latron
Переменная это не неотъемлемая часть скрипта.Она имеет свой тег и значение.
В языке PAWN один тип, это ячейка - 4 байта, ячейка равна 4 байтам, или 32 битам, что соответствует данному диапазаону (диапазон от -2147483648 до 2147483647) она является, как универсальный тип.
new - объявление переменной . Синтаксис объявления переменной - new название; или new тег название = значние; по стандарту если вы не указали тег переменной значение будет целым числом INT.
INT - целые числа, например 1,9,48,99. Еще в целых числах можно хранить символы. Например h,r,u. Пример объявления такой переменной: new name; (значение не указано,значит оно будет равно нулю),или же new name = 93. Значение будет равно 93. либо new name = 'y';
Float: - ( число с плавающей запятой ), например 1.2 или 47.797 . Для вещественных чисел применяется специальный тег Float:, именно специальный, потому что он обладает специфичным свойством, отличающим его от остальных тегов, которые в случаи присвоения вещественного числа будут давать предупрежденние компилятора о несоответствие тегов и их значений без соответствущего присвоения с первичным "сбросом" первоначального тега по-средству _:или же самого на себя. Пример объявления: new Float: название; Либо new Float: название = значение; Пример: new Float: name; (значение не указано,значит оно будет равно 0.0) или new Float: name = 47.797; будет равна 47.797.
Вывод переменных: ( покажу на примере функции printf - выводит перменные в консоль. ) Спецификатор %d - ( вывод целочисленной перменной). еще может быть %i - тоже самое что и %d. Пример. создадим перменную: new name = 33; Выведем в консоль printf( "Значение перемнной - %d", name );
Спецификатор %s - ( вывод текста ). Пример. создадим перменную: new name[5] = "text";
Выведем в консоль printf( "Значение перемнной - %s", name );
Спецификатор %f - ( вывод числа с точкой ). Пример. создадим перменную: new Float: name = 3.7; Выведем в консоль printf( "Значение перемнной - %f", name );
Спецификатор %c - ( вывод одного символа ). Пример. создадим перменную: new name = 'y'; Выведем в консоль printf( "Значение перемнной - %c", name );
Еще переменные можно объявлять через static, это статическая переменная. Она может быть использована как в локальной так и в глобальной среде. Особенность такой переменной в том что она сохраняется в локальной среде. Дело в том, что если объявить переменную в локальной среде, то при каждом вызове этой среды, переменная будет пересоздаваться, и её прошлые значения не будут сохраняться, нежели со static. К примеру: Создадим функцию без аргументов под названием "FirstFunction" Code stock FirstFunction( ) { // Локальная среда. new test; // Создадим переменную под названием "test", тип INT ( целое число ), по-умолчанию будет равной 0. printf( "После создания значение переменной равно %d", test ); // Будет равна 0. test = 33; // Меняем значение нашей переменной. } При первом вызове переменная будет равна 0, и при тоже при последующих вызовах, так как она постоянно создается заного, и её новое значение ( 33 ) не будет сохранятся. А теперь попробуем, через static: Code stock SecondFunction() { // Локальная среда. static test; // Создадим переменную под названием "test", тип INT ( целое число ), по-умолчанию будет равной 0. printf( "После создания значение переменной равно %d", test ); // Переменная равна 0 при первом вызове функции. test = 33; // Устанавливаем новое значение для нашей переменной. } При первом вызове наша переменная будет равна 0, а уже при последующих будет равна 33, так как ниже мы установили ей новое значение 33. И значение сохраняется.
Переменную нельзя использовать до её инициализации , то есть пока переменная не объявлена нельзя ей пользоваться например : Как нельзя делать: Code строка 1: mysql_real_escape_string( inputtext, pass ); строка 2: new pass[ 32 ]; В данном случае переменная в строке 1 не будет определена компилятором ( error 017: undefined symbol "pass" ) Как правильно: Code строка 1: new pass[ 32 ]; строка 2: mysql_real_escape_string( inputtext, pass );
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Воскресенье, 08.04.2012, 22:14 |
| |
|
|
| Великс | Дата: Пятница, 10.02.2012, 15:38 | Сообщение # 2 |
|
Мастер джэдай
Группа:
Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус: 
| О Господи... Нашел о чем написать в 2012 году... Quote (Latron) ( число с точкой ) Это называется "дробное число", ок. Quote (Latron) Автор урока: Latron Сомневаюсь, ибо видел похожий текст на беларусском форуме.
[cut=freestyle] ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ , СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ, ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ, ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ. УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА. ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ. ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ. ЛЕНАРУ ДАЙ УМА И ЛЕНУ НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ © Хасан [/cut]
Сообщение отредактировал velix - Пятница, 10.02.2012, 15:53 |
| |
|
|
| Latron | Дата: Пятница, 10.02.2012, 15:59 | Сообщение # 3 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Quote (velix) Сомневаюсь, ибо видел похожий текст на беларусском форуме. Не сомневайся ибо я не видел беларусского форума.Ты обвиняешь меня во лжи без весомых доказательств.
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Пятница, 10.02.2012, 16:00 |
| |
|
|
| Великс | Дата: Пятница, 10.02.2012, 16:03 | Сообщение # 4 |
|
Мастер джэдай
Группа:
Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус: 
| Quote (Latron) .Ты обвиняешь меня во лжи без весомых доказательств. Кто тебя обвинил? Я написал "ЛОЖЬ ТЫ НЕ АФФТАР!11" ?
[cut=freestyle] ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ , СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ, ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ, ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ. УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА. ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ. ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ. ЛЕНАРУ ДАЙ УМА И ЛЕНУ НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ © Хасан [/cut]
|
| |
|
|
| Imperealist | Дата: Пятница, 10.02.2012, 16:04 | Сообщение # 5 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 205
Награды: 10
Город: Санкт-Петербург
Репутация: 518
Замечания: 100%
Статус: 
| Quote (Latron) Тег bool - ( булевое значение ), такая переменная может хранить в себе только два значения 0 или 1 ( true/false ), создана для экономии памяти,булевое знчение применяется когда нужно хранить только 2 значение, например в записная книжка или права на Т.С. они либо есть,либо их нет тут пригодится bool. Пример объявления: new bool: название = значение; ( значение не указано,по умолчанию она будет равна 0 ( false ) ) либо new bool: название = значение; значение будет равно 1 ( true ) По словам тонисикса, в павн этот тег бесполезен, так как от того что он есть, объем памяти не сокращается, а остается тем же, поэтому смысла в использовании bool'евых переменных - нету!
Soviet Connection - open!
  
|
| |
|
|
| Latron | Дата: Пятница, 10.02.2012, 16:08 | Сообщение # 6 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Quote (Imperealist) По словам тонисикса, в павн этот тег бесполезен, так как от того что он есть, объем памяти не сокращается, а остается тем же, поэтому смысла в использовании bool'евых переменных - нету! щас ухожу ,вечером приду напишу про это.
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
|
| |
|
|
| Rockman | Дата: Пятница, 10.02.2012, 16:30 | Сообщение # 7 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус: 
|
Quote (Latron) new name[5] = "text"; Хорошо было бы разъяснить новичками, почему массив размерности 5, а строка длины 4.
Есть ведь еще спецификатор %i для целых чисел, в чем разница ? И хотя бы пару слов про диапазон значений.Добавлено (10.02.2012, 16:30) --------------------------------------------- А вообще молодец, хоть какие то шансы есть, что новички это прочитают и будут знать чуточку больше.
|
| |
|
|
| Latron | Дата: Пятница, 10.02.2012, 17:02 | Сообщение # 8 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Rockman, всё пояснил))) в павн вообще один тип это ячейка - 4 байта, ячейка равна 4 байтам, или 32 битам, что соответствует данному диапазаону (диапазон от -2147483648 до 2147483647) она является, как универсальный тип.
%d и %i одно и тоже. целое десятичное число это как синоним для %i так как d - decimal что в переводе с английского - десятичное а i integer . И новичкам врятле надо забивать этим голову...
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Пятница, 10.02.2012, 17:02 |
| |
|
|
| Alcoholik | Дата: Пятница, 10.02.2012, 17:23 | Сообщение # 9 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Quote (Rockman) Хорошо было бы разъяснить новичками, почему массив размерности 5, а строка длины 4. Мне объясните.
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| Великс | Дата: Пятница, 10.02.2012, 17:28 | Сообщение # 10 |
|
Мастер джэдай
Группа:
Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус: 
| Quote (RoACh) Мне объясните. завершающий символ \0 .
[cut=freestyle] ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ , СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ, ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ, ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ. УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА. ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ. ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ. ЛЕНАРУ ДАЙ УМА И ЛЕНУ НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ © Хасан [/cut]
|
| |
|
|
| Latron | Дата: Пятница, 10.02.2012, 17:33 | Сообщение # 11 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Специфичность представления строковых переменных в си-подобных языках состоит в том, что для определения строки в памяти отводится на 1 байт больше, чем требуется для самого текста. Этот самый байт отводится для нулевого символа, который определеяет конец строки т.е заполняется байтом, в двоичной записи которой одни нули.
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Пятница, 10.02.2012, 17:37 |
| |
|
|
| Alcoholik | Дата: Пятница, 10.02.2012, 17:38 | Сообщение # 12 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| для него надо выделять память?... Добавлено (10.02.2012, 17:35) --------------------------------------------- Странно ну ладно, спасибо) Добавлено (10.02.2012, 17:38) --------------------------------------------- Да, всё верно, извиняюсь тогда)
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| Rockman | Дата: Пятница, 10.02.2012, 18:17 | Сообщение # 13 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 428
Награды: 4
Город: Нижний Новгород
Репутация: 474
Замечания: 0%
Статус: 
| Quote (Latron) %d и %i одно и тоже. целое десятичное число это как синоним для %i так как d - decimal что в переводе с английского - десятичное а i integer . И новичкам врятле надо забивать этим голову...
Прочитав, твой урок, они скачают какой нибудь мод и увидят там %i, и будут думать, что либо ты не договорил, либо скриптер ошибся.
|
| |
|
|
| Latron | Дата: Пятница, 10.02.2012, 18:40 | Сообщение # 14 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Quote (Rockman) Quote (Latron) %d и %i одно и тоже. целое десятичное число это как синоним для %i так как d - decimal что в переводе с английского - десятичное а i integer . И новичкам врятле надо забивать этим голову... Но если прочитают это,врятле,только если совсем тупые
Добавлено (10.02.2012, 18:56) --------------------------------------------- Quote (Latron) Спецификатор %d - ( вывод целочисленной перменной). еще может быть %i - тоже самое что и %d. как ты и хотел )))
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Пятница, 10.02.2012, 18:57 |
| |
|
|
| Latron | Дата: Пятница, 10.02.2012, 19:02 | Сообщение # 15 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Imperealist, ну по сути он прав. это тег,одна из специфических возможностей PAWN. можно создать свой тег,например, new teg: name; и этого абсолютно ничего не изменить,кроме как вызовет ошибку при компиляции скрипта. А так bool удобен ,как коментарий что бы быстро понять что переменная использует всего два значения...
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Пятница, 10.02.2012, 19:05 |
| |
|
|
|
 |
|
 | |
| |
|