81
2014 Copyright © 2014 DAVID Holding Company Курс по уеб програмиране Занятие №3 JavaScript (част 1)

Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Embed Size (px)

DESCRIPTION

Kурс по уеб програмиране (2014) Занятие №3: JavaScript (част 1/2) -- Въведение в JavaScript Коментари Запазени думи Идентификатори Типове данни Литерали Променливи Оператори, изрази и съждения Условия, условни преходи и оператори Цикли Функции

Citation preview

Page 1: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

2014Copyright © 2014 DAVID Holding Company

Курс по уеб програмиране

Занятие №3JavaScript (част 1)

Page 2: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Съдържание

• Въведение в JavaScript• Коментари• Запазени думи• Идентификатори• Типове данни• Литерали• Променливи• Оператори, изрази и съждения• Условия, условни преходи и оператори• Цикли• Функции

Page 3: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• Обектно-ориентиран, прототипен, динамичен, функционален език за програмиране

• Място на JavaScript в World Wide Web– HTML дава структура и съдържание на страниците– CSS дава тяхното оформление, външния вид на страниците– JavaScript дава поведението на страниците, взаимодействието с

потребителя, с функциите на браузера, с мрежата и т.н.

• Работи предимно в браузери, но е достъпен и на други платформи– PDF документи, специфични браузъри, настолни „джаджи” и др.– Сървърни приложения (Node.js)

Page 4: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• Историческа справка– Разработен през 1995 Brendan Eich от Netscape– През 1995 Netscape пускат първата версия на JavaScript в

Netscape Navigator 2.0– През 1996 Microsoft включват поддръжка за JavaScript в Internet

Explorer 3.0– През 1997 езикът е стандартизиран под името ECMAScript

(ISO/IEC 16262)– През 2011 е публикувана последната (засега) редакция 5.1 на

стандарта• Различните реализации на JavaScript са диалекти на

ECMAScript– Специфики в поведението в различните браузъри

Page 5: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• ВНИМАНИЕ! Шокиращ слайд!• Динамичен и слабо типизиран език за програмиране– Средата за изпълнение (т.нар. runtime) иззема редица функции

на компилатора, Just-in-Time компилиране (динамична транслация)

– Типовете данни са свързани със стойностите, а не с променливите

– Към обектите могат да се добавят, променят и премахват свойства по време на изпълнение

• Прототипно-базиран език за програмиране– В JavaScript не се създават нови типове, а се разширяват

прототипи– Обектите са реализирани като асоциативни списъци/масиви

създадени от определен обект – прототип• Средата за изпълнение се грижи за управлението на паметта

Page 6: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• ВНИМАНИЕ! Oще един шокиращ слайд!• JavaScript има функции от първи клас– Разглежда функциите като обекти от

първи клас– Функциите могат да се предават като

параметри към други функции– Функциите могат да се връщат като резултат от

изпълнението на други функции– Функциите могат да се съхраняват в променливи и

структури• JavaScript поддържа анонимни функции• „Класовете“ са прототипи, а „обектите“ - функции

Page 7: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• СТИГА ПРИКАЗКИ!• Среди за разработка на JavaScript– Всеки (не)уважаван текстов редактор

• Notepad++

– Интегрирани среди за разработка• NetBeans, Microsoft Visual Studio и др.

– Ние ще използваме Microsoft Visual Studio

• Поддържани браузери– Internet Explorer, Mozilla Firefox, Google Chrome и др.

• Допълнителни инструменти– Инструменти за разработчици на съответния браузер– Самата среда за разработка

Page 8: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• Как включваме JavaScript програмите (скриптовете) в страниците си?– Вграден в HTML в <script> таг:

<script type="text/javascript">alert("Hello world!");

</script>

(атрибутът type не е задължителен, стойността "text/javascript" се подразбира)

Page 9: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• Как включваме JavaScript програмите (скриптовете) в страниците си?– Вграден в атрибут за хипервръзка на HTML елемент:

<a href="javascript:alert('Good boy!')">Click me!</a>

– Вграден в атрибут на събитие на HTML елемент:

<input type="button" value="Click me!"onclick="javascript:alert('Good girl!')" />

(префиксът „javascript:” не е задължителен и се подразбира)

Page 10: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• Как включваме JavaScript програмите (скриптовете) в страниците си?– Като външен файл (с разширение “.js”) описан в <script> таг:

<script type="text/javascript" src="site.js"></script>

(атрибутът type не е задължителен, стойността "text/javascript" се подразбира)

Page 11: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• JavaScript конзола (или просто конзола)– Място в браузера, където JavaScript програмите могат да

записват разнообразна информация за диагностика на тяхната работа в съответния прозорец

– Конзолата е удобен инструмент за следене на работата на JavaScript програма

– Конзолата в някои браузъри дава възможност за директно въвеждане и изпълнение на JavaScript върху текущата страница

– Забележка: В Mozilla Firefox тази функционалност се нарича Web Console, докато Browser Console е конзола за целия браузер)

Page 12: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• JavaScript конзола (или просто конзола)– Как да отворим конзолата?

• В Internet Explorer:– Клавиша F12 клавишната комбинация Ctrl + 2 или панела „Console”– Клавиша F12 клавишната комбинация Ctrl + ` или бутона „Show/hide console”

• В Google Chrome:– Клавишната комбинация Ctrl + Shift + J – Клавиша F12 клавиша Esc или панела „Console”

• В Mozilla Firefox:– Клавишната комбинация Ctrl + Shift + K (или Command + Shift + K на Mac)– Клавиша F12 панела „Console” (ако е инсталиран Firebug)

• В Opera:– Клавишната комбинация Ctrl + Shift + I панела „Console”

Page 13: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• JavaScript конзола (или просто конзола)– Браузерът предоставя вградения обект “console” със следните

основни функции (останалите – тук http://bit.ly/1ilyszf):• console.assert(израз, съобщение)

Изписва съобщението съобщение, ако изразът израз не е верен• console.clear()

Изчиства конзолата• console.debug(съобщение), console.log(съобщение)

Извежда информативното съобщението съобщение в конзолата• console.warn(съобщение)

Извежда съобщението за предупреждение съобщение в конзолата• console.error(съобщение)

Извежда съобщението за грешка съобщение в конзолата• console.trace(съобщение)

Извежда “stack trace” до текущото извикване

Page 14: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript

• Методи за следене на изпълнението на програмата, откриване и отстраняване на грешки– Функцията alert – дава възможност за извеждане в

(доста примитивен) диалогов прозорец на подадено съобщение

– JavaScript конзола – дава възможност за извеждане в конзолата на различни по вид съобщения за диагностика при определени ситуации

– Вграден в браузера debugger – дава възможност за пълен постъпков анализ на изпълнението на приложението

– Вграден в Microsoft Visual Studio debugger – подобно на вградения в браузера debugger интегриран с Microsoft Internet Explorer

Page 15: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въведение в JavaScript - упражнение

1. Създайте нов файл с наименование „intro.html” и в него поставете следния HTML код:

2. Създайте нов файл с наименование „intro.js” и поставете в него следния JavaScript код:

3. Във файла „intro.html” добавете връзка към файла „intro.js”4. Добавете записване на съобщения в конзолата до всяко извикване на

„alert”

<script type="text/javascript">alert("Hello world!");

</script><a href="javascript:alert('Good boy!')">Click me!</a><input type="button" value="Click me!"

onclick="javascript:alert('Good girl!')" />

console.log('File "intro.js" was just loaded.');

Page 16: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Коментари

• Какво е „коментар“?– Коментарът е част от програмата, която не взима

предвид по време на изпълнение– Подпомага документирането на кода

• Едноредови коментари// едноредовите коментари започват с „//“// и свършват с края на реда

• Многоредови коментари/* ето така започват многоредовите коментарии завършват така */

Page 17: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Коментари

• Някои интегрирани среди за разработка взимат предвид специално форматирани коментари, за да подпомогнат разработката– Microsoft Visual Studio има поддържа IntelliSense за

JavaScript с използване на подобни коментари– NetBeans използва JSDoc коментари

Page 18: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Запазени думи

• Какво е „запазена дума“?– Дума със специално значение

• Част от самия език за програмиране• Запазената дума не може да се използва като

идентификатор• Пълен списък със запазените думи има в глава “7.6.1

. Reserved Words” на “ECMA-262” спецификацията

Page 19: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Идентификатори

• Какво е „идентификатор“?– Наименование на определена програмна единица в кода дадено

от програмиста

• Правила– Уникални в дадената област и не съвпадат със запазени думи– Започват с буква от Unicode таблицата, „_“ или „$”

• По конвенция, идентификаторите започващи с “_” указват, че дадената програмна единица не трябва да се използва от потребителите на съответния код

• Според ECMA-262, идентификаторите започващи с ”$” са за автоматично генериран код

– Продължават букви от Unicode таблицата, цифри или „_”

Page 20: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Идентификатори

• Наименованията на идентификаторите се определят от програмиста

• Свободата в избора на програмиста може да доведе до нечетим програмен код

• Принципите на доброто кодиране и конвенциитеизискват наименованията да носят смисъла натова, което идентифицират

• Спазването на конвенциите води до по-четим,по-качествен и по-разбираем програмен код

Page 21: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Типове данни

• Какво е „тип данни“?– Класификационна система на данните

• Типът данни определя–Множеството от възможни стойности– Възможните операциите извършвани с данните– Смисъла на данните– Начина на тяхното съхранение

• В JavaScript не могат да се създават нови типове данни

Page 22: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Типове данни

• Примитивни (първични) типове данни– Стойностите им се предават по стойност– Това са типовете данни

• Boolean – представя истинност на някакво твърдение (двете стойности true – за „истина“ и false – за „лъжа“)

• Number – цяло или десетично число (вътрешно всички числа се съхраняват като 64-битови десетични числа с двойна точност), NaN (не е число), +∞ (безкрайност), -∞ (отрицателна безкрайност), +0 (положителна нула) или -0 (отрицателна нула)

• String – множество от Unicode символи

Page 23: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Типове данни

• Референтни (съставни) типове данни– Стойностите им се предават по референция– Това са типовете данни

• Array – представлява множество от стойности адресирани чрез цифров или низов ключ

• Object – представлява колекция от свойства (в частност функции)– По-подробно за съставните типове данни ще говорим с

напредване на курса

Page 24: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Типове данни

• Специални типове данни– Типове данни носещи по-специално значение– Това са типовете данни

• Null – указва липсваща стойност• Undefined – указва несъществуваща/неинициализирана

променлива/свойство

Page 25: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Литерали

• Какво е „литерал“?– Запис в изходния код представящ фиксирана стойност от

определен тип

• Задаваните с литералите стойности са от примитивен и специален тип

• Разграничават се литерали от следните типове– Числови– Низови– Булеви (true или false)– Нулев литерал (null)– Недефиниран литерал (undefined)

Page 26: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Литерали

• Булеви литерали– Могат да имат две стойности – true и false съответстващи на

истинно и неистинно твърдение

• Подробна информация за булевите литерали в глава „7.8.2. Boolean Literals” на “ECMA-262” спецификацията

Page 27: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Литерали

• Числови литерали– Могат да бъдат положителни или отрицателни числа, нула, NaN, +Infinity, -Infinity, +0 или -0

– Целите числа могат да бъдат представени в десетичен, шестнадесетичен (с префикс “0x”) или осмичен (с префикс “0”) вид010

– Десетичните числа съдържат десетична точка и/или са представени в научна нотация (в експоненциален вид)0.00011e-41.0e-4

• Подробна информация за числовите литерали в глава „7.8.3. Numeric Literals” на “ECMA-262” спецификацията

Page 28: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Литерали

• Низови литерали– Множество от символи заградено в единични или двойни

кавички– Между двойни кавички може да има единични и обратно"Happy am I; from care I'm free!"'"Avast, ye lubbers!" roared the technician.'"45"'c'

– За използване на специални символи, могат да се използват възможностите за екраниране на низове със символа “\”:"The image path is \"C:\\webstuff\\mypage\\gifs\\garden.gif\"."'The caption reads, "After the snow of \'97. Grandma\'s house is covered."'"Okay, here's a new line!\nLook at me - I'm on a new line!"

• Подробна информация за низовите литерали в глава „7.8.4. String Literals” на “ECMA-262” спецификацията

Page 29: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Литерали

• Нулев литерал– Има само една стойност – null съответстваща на

невалидна стойност• Недефиниран литерал– Има само една стойност – undefined съответстваща на

недефинирана или неинициализирана променлива (или свойство)

Page 30: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Променливи

• Какво е „променлива“?– Идентификатор с асоциирана с него стойност от

определен тип, която може да бъде променяна по време на изпълнение на програмата

• Характеристики– Наименование (напр. courseName)– Текуща стойност (напр. "Курс по уеб програмиране")– Променливите нямат тип

• Типът се определя от текущата стойност на променливата

Page 31: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Променливи

• Обявяване/деклариране– Синтаксисvar идентификатор;

– Примерvar courseName;

Page 32: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Променливи

• Присвояване на стойност– Синтаксисидентификатор = израз;

– ПримерcourseName = "Курс по уеб програмиране";

• Използване на стойност– Синтаксисидентификатор

– Примерconsole.log(courseName);

Page 33: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Променливи

• Инициализация– Първоначално задаване на стойност– Преди инициализация, променливите имат стойност undefined– Синтаксисvar идентификатор = израз;

– Примерvar courseName = "Курс по уеб програмиране";

Page 34: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Променливи

• Деклариране на няколко променливи в едно съждение– Синтаксисvar идентификатор1[, идентификатор2…];

– Примерvar courseName, lecturerName;var studentName = "Иван Петканов Драганов", studentClass;

Page 35: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Променливи

• Освобождаване на паметта заемана от променлива– Става с присвояване на стойност null– По този начин garbage collector разбира, че данните адресирани

от променливата вече не се използват (от нея)– Синтаксисидентификатор = null;

– ПримерcourseName = null;

Page 36: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Оператори, изрази и съждения

• Какво е „оператор“? Какво е „операнд“?– Операторите са синтактични конструкции на езика

предназначени за извършване на операции върху определени програмни единици – операнди.

• Видове оператори според броя на операндите– Унарни – с един операнд– Бинарни – с два операнда– Тернарни – с три операнда

Page 37: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Оператори, изрази и съждения

• Видове оператори според вида на операциите– Аритметични операцииp / 2 * (p / 2 - a) * (p / 2 - b) * (p / 2 - c);

– Логически операцииtoBe || !toBe;

– Побитови операцииdrink | 2;you & me;strafeLeft << 3;

– Оператори за сравнениеfirstName == "Иванчо";

– Оператори за присвоявянеlastName = "Калпазанчо";age += 1;

Page 38: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Оператори, изрази и съждения

• Други оператори– Слепване на низове– Достъпване на свойство– Достъпване на индексиран елемент– Групиране– Условен оператор– Създаване и изтриване на обект/структура– Взимане на тип данни– Проверка за наличие на свойство– …

Page 39: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Оператори, изрази и съждения

• Какво е „израз“?– Поредица от оператори, литерали и променливи даващи като

резултат определена стойност– Изразите се изчисляват на базата на определени правила за

приоритет и асоциативност

• Приоритет на операциите– Определя реда, в който се изпълняват операциите при

изчисляване на даден израз

• Асоциативност на операциите– Набор от правила определящ реда на изпълнение на две

операции с един и същи приоритет около един и същи операнд

Page 40: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Оператори, изрази и съждения

• Какво е „съждение“?– Съждението в езиците за програмиране е аналог на

изречението – то дава смисъл на „казаното“ и инструктира компютъра да извърши определена дейност

– В JavaScript съжденията се отделят със символа “;”

• Какво е „блок“?– Блокът е поредица от едно или повече съждения– В JavaScript блоковете се оформят със затваряне на съжденията

между символите “{“ и “}”

Page 41: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Коментари, запазени думи, … - упражнение

1. Създайте нов файл с наименование „books.html”2. Създайте нов файл с наименование „books.js” и го реферирайте от файла

„books.html”3. Във файла „books.js” създайте променливи съхраняващи информация за

книга:„name”, „isbn”, „authors”, „numberOfPages”, „isAvailable”

4. Инициализирайте променливите „name”, „isbn” и „authors” с подходящи стойности съответно за наименование на книгата, ISBN и автори

5. Напишете код, който да изведе текущите стойности на всички променливи в конзолата

6. Задайте стойности на променливите „numberOfPages” и „isAvailable” с подходящи стойности съответно за брой страници и дали книгата е налична или не

7. Повторете кода от т.6 в края на програмата и наблюдавайте разликата

Page 42: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Какво е „условие“?– Израз връщащ булев резултат– Булеви променливи и литерали– Сравнения– Логически операции

Page 43: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Сравнения– Абстрактно равенство (==) и неравенство (!=)var isIvancho = (firstName == "Иванчо");var isKalpazanchev = (lastName != "Калпазанчев");Подробна информация за абстрактното сравнение в глава „11.8.5. The Abstract Relational Comparison Algorithm” на “ECMA-262” спецификацията

– Стриктно равенство (===) и неравенство (!==)var isEighteen = (age === "18");var isOtherCourse = (courseName !== "Курс по уеб програмиране");Подробна информация за стриктното сравнение в глава „11.9.6. The Strict Equality Comparison Algorithm” на “ECMA-262” спецификацията

Page 44: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Сравнения– По-малко (<) и по-голямо (>)var isShortBook = (numberOfPages < 100);var isGenius = (iq > 140);

– По-малко или равно (<=) и по-голямо или равно (>=)var isInfant = (age <= 1.5);var isAdult = (age >= 18);

Page 45: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Логически операции– Отрицание (!, логическо „не“)var isUnderage = !isAdult;

– Конюнкция (&&, логическо „и“)var isWunderkind = isUnderage && isGenius;

– Дизюнкция (||, логическо „или“)var isSmartAss = usesSarcasm || isGenius;

– Изключваща дизюнкция (^, изключващо „или“)var isRealLife = isPlayingAGoodBoy ^ isNotGoingToSunnyBeach;

Page 46: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Закони на Де Морган– Двойно отрицание!(!b1) === b1

– Отрицание на конюнкцията!(b1 && b2) === (!b1 || !b2)

– Отрицание на дизюнкцията!(b1 || b2) === (!b1 && !b2)

• „Мързеливо“ пресмятане на условията(false && b1 /* && ... */) === false(true || b1 /* || ... */) === true

Page 47: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Какво е „условен преход“?– Конструкция на езика за програмиране– Позволява изпълнението или неизпълнението на операции в

зависимост от условие– Необходими за реално приложими програми

Page 48: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Конструкция за условен преход if– Условие– Съждение/блок от операции– Ако условието е изпълнено, се изпълнява съждението или

съжденията от блока от операции при изпълнено условие– В противен случай не се изпълнява нищо

Page 49: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Конструкция за условен преход if– Синтаксисif (условие)

съждение-или-блок-при-изпълнено-условие– Примерif (a > b)

console.log(a + ' е по-голямо от ' + b);

if (a < b) { console.log(a + ' е по-малко от ' + b);

a = b;}

Page 50: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Конструкция за условен преход if…else– Условие– Операция/блок от операции при изпълнено условие– Операция/блок от операции при неизпълнено условие– Ако условието е изпълнено, се изпълнява съждението или

съжденията от блока от операции при изпълнено условие– В противен случай се изпълнява съждението или съжденията

от блока от операции при неизпълнено условие

Page 51: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Конструкция за условен преход if…else– Синтаксисif (условие)

съждение-или-блок-при-изпълнено-условиеelse

съждение-или-блок-при-неизпълнено-условие– Примерif (d >= 0) {

console.log('Квадратното уравнение има реален корен.');} else {

console.log('Квадратното уравнение няма реални корени.');}

Page 52: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Вложени конструкции за условен преход– Съжденията/блоковете в конструкциите за условен преход

могат да представляват/съдържат други конструкции за условен преход

– Примерif (rowIndex === 0) {

backgroundColor = '#555555'; color = 'White';} else { color = 'Black';

if (rowIndex % 2 == 0)backgroundColor = '#f1f1f1';

elsebackgroundColor = '#ffffff';

}

Page 53: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Вложени конструкции за условен преход– Често срещано е навързването (chaining) на такива конструкции

във вида if…else if…else… if…else…– Примерif (a > b) {

console.log('a е по-голямо от b.');} else if (a < b) {

console.log('a е по-малко от b.');} else {

console.log('a е равно на b.');}

Page 54: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Вложени конструкции за условен преход– Често се налага да се прави навързано сравнение на стойността

на една и съща променлива/израз със множество стойности (на променливи и/или изрази)

– Примерif (day == 1) {

console.log('Понеделник');} else if (day == 2) {

console.log('Вторник');} else if (day == 3) {

console.log('Сряда');} else if (day == 4) {

// …} else {

console.log('Неизвестник');}

Page 55: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Конструкция за условен преход switch-case– В гореспоменатия частен случай на навързване, може да

използваме конструкцията за условен преход switch-case– Синтаксис

switch (стойност-или-израз) {case стойност-или-израз-1:

съждение-или-блокbreak;

case стойност-или-израз-2:case стойност-или-израз-3:

съждение-или-блокbreak;

// ...default:

съждение-или-блокbreak;

}

Page 56: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Конструкция за условен преход switch-case– Пример

switch (day) {case 1:

console.log('Понеделник');break;

case 2:console.log('Вторник');break;

case 3:console.log('Сряда');break;

case 4:// ...

default:console.log('Неизвестник');break;

}

Page 57: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи и оператори

• Условен тернарен оператор (?:)– Условие– Стойност или израз, ако условието е изпълнено– Стойност или израз, ако условието не е изпълнено– Синтаксисусловие

? стойност-или-израз-1: стойност-или-израз-2

– Примерvar timeOfDay = hours > 17 ? 'evening' : 'day';

Page 58: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи… - упражнение

1. Създайте нов файл с наименование „equation.html”2. Създайте нов файл с наименование „equation.js” и го реферирайте от

файла „equation.html”3. Напишете скрипт, който декларира променливите „a”, „b” и „c”

съответстващи на коефициентите в квадратно уравнение и ги инициализирайте със стойност:

4. Ако уравнението е квадратно, декларирайте променлива „d”, в която изчислете дискриминантата. В зависимост от стойността ѝ изведете броя реални корени на уравнението в конзолата като число и текст, както и самите корени

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

6. Опитайте се да използвате условен тернарен оператор там, където това е възможно

10 - Math.random() * 20

Page 59: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Условия, условни преходи… - упражнение

1. Създайте нов файл с наименование „chinese_calendar.html” 2. Създайте нов файл с наименование „chinese_calendar.js” и го реферирайте

от файла „chinese_calendar.html”3. Напишете скрипт, който декларира променливата „year” съответстваща на

година и я инициализирайте със стойност:

4. Декларирайте променлива „sign” и изчислете стойността ѝ, като от годината „year” извадите 4 и намерите остатъка от делене на 12

5. Покажете в конзолата съобщение от вида „2003 беше годината на Козата“, „2014 е годината на Коня“ или „2092 ще бъде годината на Плъха“ според това дали годината е в миналото, настоящето или бъдещето, като имате предвид, че според стойността на променливата „sign” годините са: „плъх“ (0), „вол“ (1) „тигър“ (2), „заек“ (3), „дракон“ (4), „змия“ (5), „кон“ (6), „коза“ (7), „маймуна“ (8), „петел“ (9), „куче“ (10) и „прасе“ (11)

2000 + Math.floor(Math.random() * 100)

Page 60: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• Какво е „цикъл“?– Конструкция на езика за програмиране– Позволява многократното изпълнение на една и съща поредица

от операции– Итерация – еднократно изпълнение на операциите в цикъла– Условие за преустановяване на цикъла– Необходими за реално приложими програми

• Видове цикли– Цикли с предусловие– Цикли с постусловие– Крайни цикли– Безкрайни цикли

Page 61: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• Цикъл с предусловие (while)– Условие– Блок от операции– Условието се проверява преди изпълнението на итерацията– Нула или повече итерации– Синтаксисwhile (условие) {

тяло-на-цикъла;}

– Примерvar i = 0;while (i < 10) {

console.log(++i);}

Page 62: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• Цикъл с постусловие (do…while)– Блок от операции– Условие– Условието се проверява след изпълнението на итерацията– Една или повече итерации– Синтаксисdo {

тяло-на-цикъла;} while (условие);

– Примерvar i = 0;do {

console.log(++i);} while (i < 10);

Page 63: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• For цикъл (for)– Инициализация – операции изпълнявани преди първата

итерация на цикъла (разделени със запетая)– Условие – условие, при което да се изпълни следваща итерация– Актуализация – операции изпълнявани след всяка итерация на

цикъла (разделени със запетая)– Тяло на цикъла – операции, които трябва да изпълнят– Всяка една от частите на цикъла може да липсва– Нула или повече итерации

Page 64: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• For цикъл (for)– Синтаксисfor (инициализация; условие; актуализация) {

тяло-на-цикъла}

– Примерfor (var i = 0; i < 10; i++) {

console.log(i);}

Page 65: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• Прекратяване на цикъл– Прекратяване на текущия цикъл със запазената дума break– Прекратяване на текущата итерация със запазената дума continue

• Безкраен цикъл– Безкраен цикъл е този, при който условието е винаги изпълнено– В такива случаи от цикъла може да се излезе с break– В случай, че от цикъла не се излезе, се получава «зацикляне»– Обикновено могат да се реализират и като крайни цикли– Често обаче правят кода по-прост, бърз и/или четим

Page 66: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли

• Вложени цикли– Блокът с операции на един цикъл може да съдържа и други

цикли– Във всяка итерация на външния цикъл се изпълнява целият

вътрешен цикъл– Пример

for (var i = 0; i < 10; i++) {for (var j = 0; j < 10; j++) {

console.log(i + ' * ' + j + ' = ' + i * j);}

}

Page 67: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли - упражнение

1. Създайте нов файл с наименование „prime_numbers.html” 2. Създайте нов файл с наименование „prime_numbers.js” и го реферирайте от

файла „prime_numbers.html”3. Напишете скрипт, който показва в конзолата всички прости числа между 0

и 100 4. Напишете скрипт, който генерира произволно просто число между 0 и 100 и

го извежда в конзолата

Page 68: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Цикли - упражнение

1. Създайте нов файл с наименование „factorial.html” 2. Създайте нов файл с наименование „factorial.js” и го реферирайте от

файла „factorial.html”3. Напишете скрипт, който декларира променливата „n”, инициализирайте я с

произволно число между 0 и 15, намерете и покажете в конзолата факториел от това число

Page 69: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Какво е „функция“?– Функция е подпрограма, която извършва конкретна дейност и

може да бъде извиквана от друга част от програмата– Функциите могат да приемат един или повече параметри– Функциите могат да връщат единична стойност като резултат– Аргумент е стойността подавана на даден параметър– Процедури наричаме функции, които не връщат резултат

Page 70: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Приложение на функциите– Разбиване на скрипта на по-конкретни задачи– Преизползване на програмния код– Разделяне на отговорностите и по-добра поддръжка– Подобрена разбираемост на кода

• Характеристики на функциите– Наименование– Параметри– Връщана стойност

• JavaScript предоставя базова библиотека от функции подпомагащи разработчика

Page 71: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Деклариране на функции– Ключовата дума „function”– Наименование– Списък от параметрите (в обикновени скоби)– Тяло на функцията– Синтаксисfunction наименование([параметър-1[, параметър-2…]]) {

тяло-на-функцията;}

– Примерfunction getArithmeticMean(x1, x2) {

return (x1 + x2) / 2;}

Page 72: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Използване на функции– Наименование на обект, ако функцията е свойство на друг

обект– Наименованието на функцията– Списък от аргументи (в обикновени скоби)

• Не е задължително подаването на стойности за всички параметри• Параметрите без подадени стойности остават със стойност undefined

– Синтаксис[обект.]наименование([аргумент-1[, аргумент-2…]])

– Примерconsole.log(getArithmeticMean(5, 3));

Page 73: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Изпълнението на функцията започва при нейното извикване

• Изпълнението на функция приключва:– при достигане на края ѝ– при достигане на ключовата дума return– при възникване на грешка

• След изпълнение на функция, изпълнението продължава от мястото, на което е била извикана– Как се случва това?

• Върнатата от една функция стойност може да се използва в израз

Page 74: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Локални променливи за една функция са тези декларирани в нейното тяло

• В тялото на една функция не могат да бъдат декларирани повече от една променливи с едно и също наименование

• Локалните променливи не могат да бъдат достъпвани извън функцията

• Параметрите имат статут на локални променливи• Аргументите могат да се разглеждат и като масив– Във функциите автоматично се генерира променлива с

идентификатор „arguments”, която съдържа информация за извикването, в т.ч. за всички подадени аргументи

Page 75: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Функциите могат да връщат само една стойност• Ако искаме да върнем повече?!– Връщаме стойностите в променлива от сложен (композитен)

тип– Като аргументи подаваме променливи от сложен тип

Page 76: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Често използвани функции – символни низове– Взимане на дължината на низ – String.length– Превръщане между малки и големи букви – String.toLowerCase() и String.toUpperCase()

– Извличане на подниз – String.substr() и String.substring()– Търсене на подниз в низ – String.indexOf(), String.lastIndexOf()

– Замяна на низ в низ – String.replace()– Подкастряне на низ – String.trim()– Слепване на низове в низ – String.concat()– Съединяване на масив от низове в низ – Array.join()– Разделяне на низ на масив от низове – String.split()

Page 77: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Често използвани функции – превръщане на данни– Превръщане на стойност в низ – Object.toString()– Превръщане на низ в цяло число – parseInt()– Превръщане на низ в десетично число – parseFloat()

• Често използвани функции – математически операции– Генериране на произволно число – Math.random()– Повдигане на степен – Math.pow()

Page 78: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции

• Често използвани функции – взаимодействие с потребителя– Извеждане на съобщение – alert()– Извеждане на потвърждение – confirm()– Извеждане на питане – prompt()

• Често използвани функции – манипулиране на HTML– Добавяне на HTML към страницата – document.write()

Page 79: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Функции - упражнение

1. Създайте нов файл с наименование „prime_numbers2.html” 2. Създайте нов файл с наименование „prime_numbers2.js” и го реферирайте

от файла „prime_numbers2.html”3. Копирайте скрипта от програмата „prime_numbers.js” и изнесете

проверката за просто число като функция с наименование „getIsPrimeNumber”

Page 80: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Въпроси?

Page 81: Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)

Copyright © 2014 DAVID Holding Company

Благодаря!

• Валери Дачев– [email protected]– @vdachev– https://facebook.com/vdachev

• ДАВИД академия– [email protected]– http://acad.david.bg/– @david_academy– https://facebook.com/DavidAcademy