Меню

Първи стъпки в правене на сайтове

Влез Излез

Първи стъпки в JavaScript – част 2

Преди близо месец (извинявам се за голямото закъснение) започнах един урок (Първи стъпки в JavaScript), в който говоря за някои особености на JavaScript, ориентирани към хора, които нямат особено голям опит с него. Тъй като урокът стана твърде дълъг, реших да го разбия на части, така че тук продължаваме с втората.

В този урок ще представим някои основни възможности на JavaScript като език за програмеране. Ако преди сте срещали/работили с други езици за програмеране, тогава в този урок няма да видите нищо ново, тъй като тук ще представим идеята за променливи и константи, а в по-нататъшните части ще поговорим и за условия и цикли.

Променливи и константи

В училище по математика все ще сте срещали тези два термина. В програмирането те имат едновременно тясна връзка с математическите термини, но лично според мене е по-лесно да се разбере какъв е смисълът им (когато започнах да се занимавам с програмиране, математиката в училище/университета изведнъж ми се изясни на едно по-различно ниво).

Да започнем от там каква е идеята на една програма. По принцип можем да използваме един език за програмиране за да изпълним поредица от манипулации по предварително зададени данни и да получим резултат. Като пример можем да разгледаме случай, в който нямаме калкулатор под ръка, а ни трябва да сметнем нещо от рода на 564467 по 654664. В училище сме учили как се умножават числа, така че с помощта на лист и химикал може би ще сметнем и това, но самата идея е глупава, защото това е хамалска сметка. Едно от основните неща, с които програмирането ни помага е да не се занимаваме с хамалски работи. Всеки един програмен език има вградени възможности за извършване на основни математически операции, така че за да пресметнем въпросното число, в повечето програмни езици е достатъчно просто да напишем 564467*654664. По принцип това трябва да е съпътствано с команда за извеждане на резултата до потребителя, тъй като за момента компютъра ще си извърши умножението, но то ще си остане някъде в небитието (в момента не това е важното). Самата идея е, че ако напишем програмен код, който да пресмята това конкретно произведение, ние няма да сме написали програма. Това е поради причината, че винаги при изпълнението й ние ще получаваме един и същи програмен код. Ще имаме нещо, което да смята едно единствено произведение, но още при първото изпълнение кодът ни вече ще е безсмислен, тъй като ние имаме резултата и няма нужда да изпълняваме втори път програмния код, защото той винаги ще остане един и същ.

Какво трябва да направим тогава, за да имаме истински динамичен код? Много просто – трябва да използваме променливи. Нека имаме две променливи – a и b, на които да присвоим тези стойности. В JS извършваме това просто с

a = 564467;
b = 654664;

Изписваме името на променливата, последвана от знак за равенство и накрая изписваме стойността, която истаме на присвоим на променливата. Още нещо за JavaScript (валидно и за повечето други програмни езици) е постанявето на точка и заптая (;) на края на всяка инструкция. Както в нормалния език на края на изречението ние поставяме точка, така в JS се поставя точка и запетая. Бихме могли двете инструкции да ги въведем на един ред (стига да имаме правилното разделение с ;), но за по-добра четимост изписваме всяка инструкция на отделен ред.

След като вече имаме дефинирани променливи ние можем да извършваме действия с тях (като например умножение). За момента нашият код все още няма да върши никаква работа повече от това, което е вършел преди, тъй като на двете променливи винаги задаваме една и съща стойност и умножавайки ги е аналогично на това да умножаваме просто стойностите, които назначаваме. Разбира се, че в програмните езици има начин на променливи да се зададе стойност идваща от потребителя, но до там ще стигнем по-късно, така че нека за момента приемаме, че всеки път, когато имаме променлива тя би могла да има различна стойност.

Идеята за името им идва и от факта, че стойността им би могла да се променя в хода на изпълнение на програмния код. Да речем, че в един момент можем да зададем стойност 1 на променливата a, а по-късно да променим това на 2, после на 3 и т.н. в зависимост от това какво деиствие ще извършва нашият скрипт.

В повечето езици за програмиране съществува и друг тип съдържатели на стойности, които обаче след като бъдат дефинирани веднъж не могат да бъдат променяни. Наричаме ги константи. Въпреки, че отделям няколко реда и за тях, всъщност трябва да се каже, че в JavaScript няма константи. Тук имаме единствено променливи, чиято стойност винаги ни е позволено да променяме.

Константите имат различни приложения в програмните езици. Едно от тях е съкращаване на изписването. Да речем, че трябва да напишем програма за пресмятане на периметър на окръжност, за което имаме нужда от числото Пи, като искаме да използваме голяма точност. Всеки, който е завършил трети клас трябва да знае, че Пи (с точност до втория знак, след десетичната запетая) е 3.14. Аз лично на изуст го знам до 3.141593. Да речем, че за програмата го искаме с още по-голяма точност. В някой справочник можем да проверим стойността му и в програмния си код да използваме 3.141592653589793. Представете си сега, че имаме нужда да използваме числото Пи на няколко места. Няма да е удобно всеки път да изписваме всичко това. По-добре би било да го запишем в променлива. Тъй като стойността на числото Пи винаги е една и съща би било по-добре да го запишем дори н константа, но в JavaScript нямаме констанки, така че пак оставаме с променлива, за която просто самите ние си правим сметка, че не е редно да я презаписваме. Съществува конвенция (масово приет стил) променливите в JavaScript (и не само в JS), които са със смисъл на константи, да бъдат изписвани изцяло с главни букви. Така че бихме могли да имаме:

PI = 3.141592653589793;

Тъй като числото Пи обаче е често срещана константа, в JavaScript та е предварително дефинирана. Можем да я достъпим просто чрез Math.PI. Там числото се съдържа именно със стойността, която изписах по-горе (именно от там я взех). Да използваме тази константа е дори още по-добре, тъй като JavaScript се изпълнява така от браузърите, че всъщност не можем да променим стойността на Math.PI. Ако се опитаме ще получим съобщение, че всичко е наред, тъй като от гледна точка на синтаксис всичко би било валидно, но все пак Math.PI няма да промени стойността си.

alert(Math.PI); // стойността е 3.141592653589793
Math.PI = 3.14; // няма проблем
alert(Math.PI) // стойността пак е 3.141592653589793

Ако поясним, че с помощта на alert() изкарваме едно малко прозорче, което показва съобщението, което е в скобите (съобщението може да бъде изразено и с променлива), а с две наклонени линии (//) изразяваме коментар (говорили сме за коментари в HTML и CSS – при JavaScript коментарите се пренебрегват от интерпретатора), би трябвало да разбирате, че това, което кодът по-гори прави е следното:

  1. Показваме прозорец, изписващ стойността на Math.PI, която е 3.141592653589793
  2. Присвояваме друга стойност на Math.PI
  3. Показваме нов прозорец, който би трябвало да изведе новата стойност на Math.PI, но тъй като това е вградена в езика константа, отново виждаме 3.141592653589793

Друго приложение на константите е в случай, в който искаме да използваме някаква настройка. Първоначално задаваме стойност на константата, зависеща от някаква настройка, като програмният ни код в последствие отчита стойността на константата.

Съществуват и други случаи, в които е уместно използването на константи, но тях ще ги разгледаме когато са ни необходими или поне стигнем до състояние, в което е препоръчително да ги използваме.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax