68926

Змінні і типи даних

Лекция

Информатика, кибернетика и программирование

Чому я спожив вираз Практично у всіх Існують і такі мови в яких немає змінних як таких. На щастя РНР не відноситься до таких мов він найзвичайніша мова з погляду наявності змінних. Всі дані з якими працює програма зберігаються у вигляді змінних.

Украинкский

2014-09-27

56.5 KB

0 чел.

Лекція № 2

Тема:  Змінні і типи даних

План

  1.  Правила задання змінних
  2.  Типи даних
  3.  Функції визначення і завдання типу змінних.
  4.  Логічні змінні і їх особливості в РНР

Практично у всіх мовах програмування є таке поняття, як змінна. Чому я спожив вираз «Практично у всіх»? Існують і такі мови, в яких немає змінних, як таких. На щастя, РНР не відноситься до таких мов — він найзвичайніша мова, з погляду наявності змінних.

Змінна — це область оперативної пам'яті, доступ до яких здійснюється по імені. Всі дані, з якими працює програма, зберігаються у вигляді змінних.

Правила задання змінних

Як вже наголошувалося вище, в РНР обов'язково перед ім'ям змінної потрібно ставити знак долара — так інтерпретатору легше виділити змінні з «сірої маси» тексту програми.

У офіційній документації РНР сказане, що імена змінних можуть складатися не тільки з латинських букв, але з будь-яких символів, код яких більше 127. Це означає, що імена змінних можуть містити російські букви. Проте я настійно раджу вам не використовувати російськомовні імена — адже в різних кодуваннях букви кирилиці мають різні коди.

Визначимо правила завдання змінних в РНР:

Ім'я змінної повинне починатися із знаку долара $.

Ім'я змінної не повинне містити ніяких інших символів, окрім символів латинського алфавіту, цифр і знаку підкреслення. Якщо ви використовуватимете це правило, ви істотно полегшите собі життя.

Імена змінних в РНР, як і в C, чутливі до регістра символів, тобто змінні $а і $А  — це здійснено разні змінні.

Оголошувати змінну можна в будь-якому місці програми, але до місця першого її використання.

При оголошенні змінних можна не скупитися — оголошуйте стільки, скільки вам потрібно. Звичні методи оптимізації, які застосовувалися 20 років тому (наприклад, надмірна економія пам'яті — чим менше за змінні використовує програма, тим краще), за часів перших комп'ютерів, не спрацюють: ваша програма не працюватиме швидше, якщо ви будете в збиток власному комфорту використовувати одну змінну замість 5. До того ж можна наробити помилок, які дуже важко знайти.

Типи даних

Змінні в РНР можуть містити все, що завгодно — будь-яку інформацію. Виняток становлять тільки константи, які можуть містити тільки число або рядок.

Такого поняття як покажчик (це така змінна, яка містить не конкретне значення, а указує на область пам'яті, де знаходиться це значення), добре знайомого нам з мови C, взагалі не існує. При привласненні змінна копіюється «один в один», яку б структури вона не мала. Припустимо, що у нас є дві змінні - масив і рядок. Якщо ми першою змінною привласнимо значення другій, то наш масив буде назавжди втрачений, а змінна, яка містила масив, міститиме рядок — це і означає, що копіюється не тільки значення змінної, як в інших мовах, але і структура. Правда, починаючи з 4-ої версії, в PHP з'явилися жорсткі і м'які посилання, але про них   ми поговоримо пізніше.

Розглянемо наступне оголошення змінних:

$а   =   10;

$А   =   "Hello";

Як ви бачите, при оголошенні змінних ми не вказали їх тип. Вибір типу здійснюється самим інтерпретатором. Проте іноді PHP може помилитися і зіставити змінній неправильний тип. Тому потрібно задати тип явно. Про те, як це зробити, ми поговоримо трохи пізніше, а поки розглянемо основні типи змінних.


Типи змінних в PHP

Тип змінної

Опис

integer

Ціле число. Діапазон значень: від -2 147 483 648 до 2 147 483 647 (32 біта). Даний тип відповідає типу long int в мові С (longint - в Pascal)

double

(або float)

Дійсне число дуже великої точності

string

Рядок. Це дуже важливий тип, оскільки в більшості випадків сценарії займаються формуванням рядків.

array

Масив

object

Об’єкт. Мова РНР підтримує об’єкти. Доступ до елементів об’єкту відбувається за допомогою оператора ->

bool

Логічний тип даних. Змінні цього типу можуть приймати тільки одне з двох значень: true (істина) або false (брехня)

Функції визначення і завдання типу змінних

Мову PHP   надає багато засобів для визначення типу змінних. Ви можете використовувати цілих сім функцій для визначення типу:

Is_int(Sx) або is_integer(Sx) — повертає   true, якщо передана змінна — ціле число.

Is_double($x) або is_float(Sx) — повертає true, якщо передана змінна — дійсне число.

is_string(Sx) — повертає true, якщо передана змінна — рядок.

is_array(Sx) — повертає true, якщо передана змінна — масив.

is_object($x) — повертає true, якщо змінна є об'єктом.

is_bool(Sx) — повертає true, якщо змінна оголошена, як логічна.

gettype(Sx) — повертає рядки, відповідні типу змінної:   integer,     double,     string,     object,     array,     bool  або unknown   type, якщо неможливо визначити тип (коли тип змінної не будовується в PHP, а додається за допомогою модулів, що розширюють можливості мови).

Якщо PHP неправильно визначив тип змінної, можна вказати його явно. Для цього використовується функція settype(Sx, Stype), де $type — це один з рядків, що повертаються функцією gettype(). Наприклад:

settype($x,"double");

Функція повертає значення false, якщо неможливо привести тип змінної $х до вказаного типу $type.

Логічні змінні і їх особливості в PHP

Напевно, ви відмітили, що більшість функцій для визначення типу повертають логічне значення true або false (всі функції, окрім gettype()). Зараз самий час поговорити про логічні змінні і пов'язаних з ними «підводними каменями».

У PHP істиною є не будь-яке рівне нулю число, будь-який непорожній рядок, значення true. Значення false, порожній рядок, нуль — це брехня. Для того, щоб зрозуміти це проведемо ряд експериментів з логічними змінними. При цьому ми небагато забіжимо вперед і використовуватимемо умовного оператора If. Проте, якщо ви знайомі з якою-небудь алгоритмічною мовою (Сі, Паскаль і т.п), то без зусиль зрозумієте сенс оператора. Тим паче, що текст прикладів супроводжується докладними коментарями. Інакше ви можете повернутися до цього пункту пізніше.

Отже, створіть сценарій logical.php:

<? echo   false; echo   true; ?>

Перший оператор виводить порожній рядок, тобто нічого не виводить, а другою — виведе 1. Вище було сказано, що ненульове значення приймається, як істина.

У використанні логічних змінних в PHP є ще одна особливість. Якщо в операторах порівняння (= =, !=, <,") один тип є логічним, то і другий також сприймається, як логічний. Модифікуємо наш сценарій так:

<?

$х=10;

if ($х==1) echo " Змінна рівна l\n";

if ($x==true) echo "Змінна рівна True\n";

У першому рядку змінної $х було привласнено значення 10. Потім $х порівнюється з 1 і якщо $х рівне 1, то виводиться рядок «Змінна рівна 1». Потім значення змінної $х порівнюється із значенням True. І якщо $х рівне true, то виводиться рядок «Змінна рівна True». Виходячи з приведеного вище твердження, повинна бути виведеною тільки другий рядок. Так воно і відбувається.

Розглянемо ще один приклад:

<?

$х   =   100;

$у   =   true;

echo   "x=   $х\ п";

echo   "y=   $у\ п";

if    ($x==$y)    echo   "X=Y";

?>

Ось тут вже зовсім смішна ситуація: спочатку програма повідомляє, що X = 100,   Y = 1, а потім, що X = Y.


 

А также другие работы, которые могут Вас заинтересовать

25985. Платон. Сущность философского идеализма 18.03 KB
  Выделить в творчестве Платона какойлибо аспект и систематически изложить его довольно сложно так как приходится реконструировать мысли Платона из отдельных высказываний которые настолько динамичны что в процессе эволюции мысли порой превращаются в свою противоположность.Систематическое широкое использование математического материала имеет место у Платона начиная с диалога Менон где Платон подводит к основному выводу с помощью геометрического доказательства. Значительно в большей мере чем в гносеологии влияние математики...
25986. Философия Аристотеля, ученого-энциклопедиста 38.02 KB
  Проблема человека Познание человека центральная проблема философии. Стремление человека познавать свою собственную природу является одним из главных стимулов развития философии мысли. В современной науке насчитывается более 800 дисциплин изучающих человека. неделимый соединяет в себе черты: 1 ОБЩЕЧЕЛОВЕЧЕСКИЕ присущие всем людям как членам человеческого рода вида homo sapiens; 2 СОЦИАЛЬНОТИПИЧЕСКИЕ свойственные ему как представителю конкретного общества определенной культуры народа социальной группы; 3 ИНДИВИДУАЛЬНЫЕ...
25987. Философия эллинизма 20.28 KB
  Жизнь и деятельность ВойноЯсенецкого. ВойноЯсенецкого Валентин Феликсович ВойноЯсенецкий родился в 1877 г. Его отец провизор Феликс Станиславович ВойноЯсенецкий происходил из известного с 16 века обедневшего дворянского рода. Отец ВойноЯсенецкого был католиком мать Мария Дмитриевна Кудрина православной.
25988. Основные принципы философии средневековья. Номинализм и реализм 16.6 KB
  Основные принципы философии средневековья. Возникновение средневековой философии очень частосвязывают с падением Западной Римской империи 476 год н. В средневековой философии напротив реальностью определяющей все сущщее есть Бог.э конкурируют между собой философские учения стоиков эпикурейцев неоплатоников и в это же время формируются очаги новой веры и мысли которые в последствии составят основу средневековой философии.
25989. Философия Фомы Аквинского, Наука в жизни общества 32.58 KB
  Платоническое представление Августина о человеческой душе как независимой от тела духовной субстанции обладающей способностью непосредственно усматривать вечные несотворенные истины Идеи в свете Божественного просвещения Фома заменяет восходящим к Аристотелю понятием души как формы тела. Воздействие объектов приводит к образованию в душе их чувственных образовподобий от которых интеллект абстрагирует умопостигаемые формы универсалии следы творения вещей с помощью Божественных Идей. разумная часть человеческой души являются...
25990. Возрождение Основные вопросы философии 24.92 KB
  Соловьёв Владимир Сергеевич [1628. Сын Соловьёв Владимир Сергеевич М. После речи против смертной казни в марте 1881 в связи с убийством Александра II народовольцами Соловьёв Владимир Сергеевич был вынужден оставить преподавательскую работу.Как мыслитель и утопист Соловьёв Владимир Сергеевич оказался на пересечении разных духовных течений.
25991. Основные принципы гуманизма. Э. Роттердамский и др 20.79 KB
  В данной работе мы не будем говорить ни о христианской догматике ни о христианской мистике. Мы будем говорить лишь о христианской морали то есть о том насколько христианство отвечает высоким моральным стремлениям человеческого духа здесь на земле. Уже одно то что из всех евангельских догматов самым главным является догмат о том что Бог именно изза любви к человеку Сам становится человеком терпит все человеческие невзгоды лишения и страдания вплоть до мучительной и позорной смерти и все это повторяем именно изза любви к...
25992. Научные открытия э похи Ренессанса Н. Коперник, Д. Бруно, Г. Галилей 20.66 KB
  Исходя из этого положения Коперник весьма просто объяснил всю кажущуюся запутанность движений планет но не зная ещё истинных путей планет и считая их окружностями он был ещё вынужден сохранить эпициклы и деференты древних для объяснения неравномерности движений. В первой части говорится о шарообразности мира и Земли а вместо положения о неподвижности Земли помещена иная аксиома Земля и другие планеты вращаются вокруг оси и обращаются вокруг Солнца. С гелиоцентрических позиций он без труда объясняет возвратное движение планет.Во второй...
25993. Социально-утопические учения Томаса Мора 22.4 KB
  Гуманистическое мировоззрение автора Утопии привело его к выводам большой социальной остроты и значимости особенно в первой части этого произведения. Уже эти глубокие констатации подсказали Мору основное направление проектов и мечтаний во второй части Утопии . Многие гуманисты начиная с Эразма видели в Утопии долгожданную соперницу этого величайшего творения политической мысли произведения существовавшего к тому времени почти два тысячелетия. Если ли не самую характерную определяющую черту социальнофилософской доктрины лежащую в...