Архив за етикет: скрипт

Telerik Homeworks: JavaScript Part1 course – Arrays (Масиви)

JavaScriptОбяснение на задачите/упражненията от домашното към лекцията Масиви от курса  JavaScript Part 1 в Академията. Условията на задачите и съответно обясненията на самите алгоритми за решаване са подобни на тези от от лекцията Масиви от C# курса, затова няма да се спирам да ги обяснявам в подробности наново. По-скоро ще се концентрираме върху това как да се донагодят решенията до синтаксиса и особеностите на самия JavaScript. Файловете с решения съдържат само JavaScript код, без никакви допълнителни стилизирания, потребителски менюта в браузъра и се извеждат като резултат директно на JS конзолата (console.log)… Т.е. решенията няма да приемат входа на стойностите от потребителя, а ще е зададен като променливи в самия код.

{ Кодът с решенията към всяка една от задачите можете да видите тук }

1. Write a script that allocates array of 20 integers and initializes each element by its index multiplied by 5. Print the obtained array on the console.

ОБЯСНЕНИЕ:  Задачата е същата като от C# курса, ако решите да преизползвате кода си внимавайте да смените myArr.Length на myArr.lengt… На пръв поглед няма разлика, но пропъртито „lengt“ за достъпване дължината на масивите в JavaScript се изписва с малко „l“ (както и всички пропъртита в JS). Ако не го смените, кодът ви няма да работите и ще се чудите защо, тъй като JS кода не гърми и не хвърля ексепшъни по време на писане и компилиране на кода.

2. Write a script that compares two char arrays lexicographically (letter by letter).

ОБЯСНЕНИЕ:  За да решим тази задача първо нека уточним какво се има в предвид под лексикографско сравнение на чаровете в масивите. Ето какво пише в учебника „Въведение в програмирането“ като разяснение към тази задача: „При лексикографската наредба символите се сравняват един по един като се започва от най-левия. При несъвпадащи символи по-рано е масивът, чийто текущ символ е по-рано в азбуката. При съвпадение се продължава със следващия символ вдясно. Ако се стигне до края на единия масив, по-краткият е лексикографски по-рано. Ако всички съответни символи от двата масива съвпаднат, то масивите са еднакви и никой о тях не е по-рано в лексикографската наредба.“ При C# тази задача си е бая занимавка, но тук в JavaScript решението я е много лесно тъй като, ако просто сравним „abc“ == „abc“ ще получим true. Ако сравним „abc“ < „abc“ или „abc“ > „abc“ получаваме false. Но ако сравним „abc“ < „akl“ ще получим true!!! Т.е. стринга „abc“ лексикографски е по-напред/по-малък е от „akl“. Или казано с други думи, JavaScript има способността автоматично да сравнява лексикографски чаровете.

3. Write a script that finds the maximal sequence of equal elements in an array. Example: {2, 1, 1, 2, 3, 3, 2, 2, 2, 1} ->> {2, 2, 2}.

ОБЯСНЕНИЕ:  Алгоритъмът и обясненията са същите като от C# домашното. Накрая когато принтираме съобщението „The longest sequence is of elements is „, увеличаваме променливата longestSequence с едно,  тъй като в хода на проверката с променливата counter не сме добавили последното число от най-дългата поредица.

4.  Write a script that finds the maximal increasing sequence in an array. Example: {3, 2, 3, 4, 2, 2, 4} ->> {2, 3, 4}.

ОБЯСНЕНИЕ:  Алгоритъмът е аналогичен на този от C#.

5.  Sorting an array means to arrange its elements in increasing order. Write a script to sort an array. Use the „selection sort“ algorithm: Find the smallest element, move it at the first position, find the smallest from the rest, move it at the second position, etc. Hint: Use a second array.

ОБЯСНЕНИЕ:  Идеята тук е да не използваме готовите методи за сортиране, а сами да си разпишем алгоритъма. Инициализираме си масив с несортирани стойности и го принтираме. След това пускаме два форцикъла и сравняваме елементите един по един, когато намерим такъв който е най-малък от останалите го местим на предна позиция и продължаваме проверките за останалите елеминти.

6. Write a program that finds the most frequent number in an array. Example: {4, 1, 1, 4, 2, 3, 4, 4, 1, 2, 4, 9, 3} ->> 4 (5 times).

ОБЯСНЕНИЕ:  Алгоритъмът е същия като от C# задачата – първо си сортираме (препоръчително е да си разпишете свой алгоритъм, не да ползвате готовия) масива,
после вървим по елементите му в търсене на най-голямото повторение.

7.  Write a program that finds the index of given element in a sorted myArray of integers by using the binary search algorithm (find it in Wikipedia).

ОБЯСНЕНИЕ:  Бинарното търсене е много полезен алгоритъм, когато трябва да се търси елемент в много големи масиви. За да работи много е важно да се отбележи, че масивът трябва да бъде сортиран! Неговата бързина на търсене се изразява в това, че той започва търсенето си, не от началото на масива, а от неговата среда. В зависимост от това дали елемента е равен на средния елемент, по-малък е или по голям, се определя в каква посока ще продължи търсенето (наляво или надясно в масива), ако не сме големи късметлии да се окаже, че търсения елемент е точно средния и сме го нацелили от раз. Объркващо звучи, затова може да прегледате това разяснително видео тук – https://www.youtube.com/watch?v=j5uXyPJ0Pew

Алгоритъмът е сравнително лесен, само го нагаждаме до особеностите на JS. За да накараме .sort() да сортира правилно числата (не лексикографски, както е по подразбиране), трябва да му зададете като параметър някаква сортираща функция, чрез която да се предефинират правилата за сортиране, така че те да са приложими адекватно за числа. Също така е важно да преди да получим стойността на променливата iMidpoint, преди това да сме парснали към INT, за да можем получения резултат след делението да е целочислен. Прието е след изпълнение на binarySearch-а, функцията да върне -1, ако търсения елемент няма позиция вътре в масива.

Кодът към всяка една от задачите можете да видите тук.

Telerik Homeworks: JavaScript Part1 course – Data Types and Variables (Типове данни и променливи)

JavaScriptОбяснение на задачите/упражненията от домашното към лекцията Типове данни и променливи от курса  JavaScript Part 1 в Академията.  Доста интересна е тази тема в слабо типизиран език като JS. Файловете с решения съдържат само JavaScript код, без никакви допълнителни стилизирания, потребителски менюта в браузъра и се извеждат като резултат директно на JS конзолата (console.log)… Т.е. решенията няма да приемат входа на стойностите от потребителя, а ще е зададен като променливи в самия код.

{ Кодът с решенията към всяка една от задачите можете да видите тук }

1. Assign all the possible JavaScript literals to different variables.

ОБЯСНЕНИЕ:  В тази задача, трябва да присвоим всички възможни типове променливи в JS. Дали съм присвоил „всички възможни“ не знам, но със сигурност присвоих всички, за които успях да се сетя.

2. Create a string variable with quoted text in it. For example: ‘How you doin’?’, Joey said.

ОБЯСНЕНИЕ:  Направих два варианта. В единия ескейпвам кавичките с ‘\’, докато при втория използвам двойните кавички „“.

3. Try typeof on all variables you created.

ОБЯСНЕНИЕ:  Уловката в тази задача, е да видим как операторът typeof не връща конкретния тип на всички възможни данни в JS. Затова е добра идея човек да си направи собствена функция typeOf, чрез която да връща конкретния точен тип.

4. Create null, undefined variables and try typeof on them.

ОБЯСНЕНИЕ:  В тази задача ни се обръща внимание, че една от разликите между null и undefined, е че null (както всичко останало в JS) е обект.

Кодът към всяка една от задачите можете да видите тук.

 

Callback функция в JavaScript – разяснително видео

JavaScriptАбе, четете, четете разни разяснения какви са тези callback функции в JavaScript и как аджеба точно работят, ама нещо не ви се изясняват нещата, а? Е, ако ви се изясняват, супер, ама ако не зацепвате – ето това видео, може би ще ви е от полза. Човек с индийски акцент ще ви разясни нагледна за какво всъщност става дума (не му обръщайте внимание, че на всяко второ изречение повтаря „ОК?“. Ок?). Не гарантирам че обяснява нещата съвсем коректно, но пък горе-долу можете да придобиете представа за callback-а 😀

 

Telerik Homeworks: JavaScript Part1 course – Conditional Statements (Условни конструкции)

JavaScriptОбяснение на задачите/упражненията от домашното към лекцията Условни конструкции от курса  JavaScript Part 1 в Академията. Условията на задачите и съответно обясненията на самите алгоритми за решаване са подобни на тези от от лекцията Условни конструкции от C# курса, затова няма да се спирам да ги обяснявам в подробности наново. По-скоро ще се концентрираме върху това как да се донагодят решенията до синтаксиса и особеностите на самия JavaScript. Файловете с решения съдържат само JavaScript код, без никакви допълнителни стилизирания, потребителски менюта в браузъра и се извеждат като резултат директно на JS конзолата (console.log)… Т.е. решенията няма да приемат входа на стойностите от потребителя, а ще е зададен като променливи в самия код.

{ Кодът с решенията към всяка една от задачите можете да видите тук }

1. Write an if statement that examines two integer variables and exchanges their values if the first one is greater than the second one.

ОБЯСНЕНИЕ:  Използва се буферна променлива (var temp), чрез която да се разменят стойностите, ако (if) първия int е по-голям от втория.

2. Write a script that shows the sign (+ or -) of the product of three real numbers without calculating it. Use a sequence of if statements

ОБЯСНЕНИЕ:  И тук както при C# задачата, вместо да пиша дълги if условия, за по лесно просто използвам XOR оператора и в зависимост от това дали трите числа са едновременно четни или не се изписва дали знака да е „+“ или „-„. Ако произведението от числата е 0 изписвам, че знака е „-„, въпреки че не е коректно от математическа гледна точка.

3. Write a script that finds the biggest of three integers using nested if statements.

ОБЯСНЕНИЕ:  Имаме три случая – „а“ да е най-голямото число, „b“ да най-голямото или „c“ да е най-голямото. При първия, ако числото „а“ е по-голямо от „b“ се отправяме към вложеното if условие, при което ако „а“ е и по-голямо и от „с“, това ще рече че именно „а“ е най-голямото число от трите и изписваме това на конзолата. Ако „а“ не най-голямото се отпавяме към втория и третия случай.

4. Sort 3 real values in descending order using nested if statements.

ОБЯСНЕНИЕ:  Алгоритъмът за решение е подобен на трета задача, само че вложените if условия са малко по-дълги

5. Write script that asks for a digit and depending on the input shows the name of that digit (in English) using a switch statement.

ОБЯСНЕНИЕ:  Задачата се решава чрез обикновен switch-case.

6. Write a script that enters the coefficients a, b and c of a quadratic equation         

a*x2 + b*x + c = 0         

and calculates and prints its real roots. Note that quadratic equations may have 0, 1 or 2 real roots

ОБЯСНЕНИЕ:  Тук трябва да се използват различни if else условия с различни формули.

7. Write a script that finds the greatest of given 5 variables.

ОБЯСНЕНИЕ:  Ако съберем 5-те числа в масив и го обходим с един for цикъл, намирането на най-голямото число става доста по-лесно, отколкото чрез писането на дълги if-else условия.

8. Write a script that converts a number in the range [0…999] to a text corresponding to its English pronunciation. Examples:
0 -> „Zero“
273 -> „Two hundred seventy three“
400 -> „Four hundred“
501 -> „Five hundred and one“
711 -> „Seven hundred and eleven“

ОБЯСНЕНИЕ:  Comming soon.

Кодът към всяка една от задачите можете да видите тук.

Сложни функции (Advanced Funcitons) в JavaScript – нахвърляни бележки от лекцията

JavaScriptСитуацията с този пост е подобна на този за DOM and DOM Manipulation, а именно – след като изгледах лекцията за Сложни функции, определено мога да кажа, че това беше най-сложната лекция досега от JavaScript 1 и 2 курсовете. Затова тук отново съм си нахвърлял накой основни бележки:

Най-основното, което човек може да научи от тази лекция е, че функциите са много важни в JS. Те са обекти, които имат различни пропъртита и методи: length, caller, name, apply, call…

.length – пропърти, което връща броя на параметри, които функцията очаква (да не се бърка с броя параметри, които са й подадени) да й се подадат.

.name – пропърти, което връща името (identifier) на дадена функция. Ако функцията е анонимна и няма име – .name връща абсолютно нищо (празен стринг).

.toString – метод, който връща цялото тяло на функцията.

.call – метод, чрез който можем да изпълним някаква функция върху даден обект. Прави същото като .apply, разликата между двете е в начина на подаване на параметрите.

functionName.call(object, arg1, arg2, arg3…)

.apply – същото като .call, с разликата че когато подаваме параметрите при .call ги изброяваме със запетайки, а при .apply ги подаваме като масив.

functionName.apply(object, arrayOfargs)

Всяка функция в JS  връща резултат. Ако изрично не е казано какво да върне, то тази функция връща undefined. Всяка функция има и един много специален обект: arguments – структура подобна на масив, колекция която съдържа в себе си всички стойности подадени на функцията.

Начини за създаване на функция в JS

­Function declaration: тези функции се зареждат преди всички останали, те стават първи за използване, могат да се използват още преди да са се декларирали, подобно на C# методите. .

function printNum (number) {

console.log(number);

}

­Function expression: присвоява се функцията като стойност на някакъв обект. При expression функциите не е задължително те да имат име (може да са анонимни, но не е препоръчително). За разлика от declaration функциите, те се изпълняват тогава, когато им дойде мястото в кода т.е. не могат да бъдат използвани, преди да е дошъл техния ред. Което си има своя плюс, когато искаме да използваме if-else и в зависимост от условието да се извикват различни функции.

var printNum = function (number) {

console.log(number);

}

Function constructor: объркващи са като запис и работят по-бавно

var printNum = new Function(‘“number“, „console.log(number);’);

Immediately Invoked Function Expressions (IIFE):  функции които ги създаваме и извикваме веднага т.е. създава се функция обект и той веднага се изпълнява, не се запазва никъде. Създава се за момента функцията, извиква се () и след това изчезва. За да стане това IIFE трябва да се изполва функция израз, а не чрез декларация на функция (връща се error). Варианти за изписване на IIFE израз:

var demo= function() {

console.log(„demo“);

}();

–-

(function(){

console.log(„demo“);

}());

(function(){

console.log(„demo“);

})();

var iife = function(){ console.log(„invoked!“); }();

(function(){ console.log(„invoked!“); }());

(function(){ console.log(„invoked!“); })();

 

!function(){ console.log(„invoked!“); }();

true && function(){ console.log(„invoked!“); }();

1 + function(){ console.log(„invoked!“); }();

 

JavaScript DOM and DOM Manipulation – основни бележки от лекцията

JavaScriptИзгледах набързо лекцията за DOM and DOM Manipulation от JavaScript 2 курса в Академията и си признавам, че след края й в главата ми беше каша от толкова много информация – селектори, манипулация на елементите по DOM дървото… Затова реших да я прегледам още веднъж, тъй като това е много важна лекция за по-нататъчната работа с JavaScript… Затова реших да си водя най-обикнковени бележки, докато слушам лекцията, които в последствие реших да ги постна тук:

Всеки HTML таг си има специален елемент (обект) в JS, чрез който се достъпва в DOM дървото. Например елемента за href е HTMLAnchorElement, а за src е HTMLImageElement, за value е HTMLInputElement и т.н.
innerHTML – взима всичко, което има в съответния таг.

outerHTML – прави същото като innerHTML, само че добавя и самия външен таг.

innerText/textContent – връща самото съдържание на тага, без таговете му. Проблемът е, че не се поддържа при всички браузъри (получаваме undefined).

Как да селектираме HTML елементи

Нещо подобно, като да селектираме елементите чрез CSS, само че чрез JavaScript.

.getElementById(„header“); – селектира елемент по неговото уникално ID.

.getElementsByClassName(„inner“); – селектира и връща колекция от елементи според някакъв клас.

.getElementsByTagName(„p“); – селектиране на елементи по таг.

.getElementsByName(„gender“); – селектиране по name.

В HTML5 има и два други селектора, които работят на принципа на CSS селекторите (не се поддържат в по-старите браузъри):

querySelector – връща първото срещане на елемента в документа т.е. връща само един елемент.

document.querySelector(„#nav„);

querySelectorAll – връща колекция от всички елементи, които са открити в документа.

document.querySelectorAll(„#nav li“);

Обхождане на DOM дървото

element.parentNode – можем да хващаме родителя на даден елемент. В този ред на мисли, родителя на document е със стойност null, защото си няма родителски елемент.

element.childNodes – хваща децата на даден елемент, включително и whitespace-овете (празни елементи), които се получава между li елементите да кажем.

element.nextSibling – селектира следващия елемент. Този елемент може и да е whitespace.

element.nextElementSibling – селектира следващ елемент, като прескача whitespace, ако има такъв.

element.previousSibling и previousElementSibling – аналогични на горните, само че връщат предишен елемент.

Манипулация на DOM елементите – триене, добавяне и др.

Създаване на DOM елементи:

var demo = document.createElement(elementTAGname);

Ясно е че, ако директно се вмъкне в HTML кода някой от новите HTML5 елементи (video таг например), по старите браузъри като IE7 например няма да могат да го визуализират коректно (показва се като #text). Интересното обаче е, че ако чрез JS се създаде този HTML5 елемент (document.createElement) вече ще може да се визуализира. В общи линии това е в основата на намирането на решения, нови елементи да се поддържат от стари браузъри.

Когато по този начин се създаде елемент (той също е JS обект) той все още не се намира в DOM  дървото. За да се добави, трябва да се апендне (използва се метода appendChild) към DOM.

document.body.appendChild(demo);

Трябва да се има в предвид, че апендването на елементи към DOM е бавна операция, тъй като всеки път когато това се направи, DOM дървото се рендерира наново, с всички стилове и т.н. Затова е измислен DocumentFragment елемента, който играе ролята на хранилище, в което се апендват елементите и след като всички те са вече добавени, тогава се добавят на един път и към DOM.

demo = document.createDocumentFragment();

demo.appendChild(li);

document.body.appendChild(demo);

Премахване на DOM елементи:

Изтриването на елементи става така:

element.removeChild(elementToRemove)

Пример:
var lists = document.getElementsByTagName(„ul“)[0];

var userName = trainers.getElementsByTagName(„li“)[0];

lists.removeChild(userName);

Променяне на DOM елементи:

Първото логично нещо което трябва да направим, за да променим един HTML елемент е да го селектираме. След това можем да му задаваме стилове, да му променяме атрибутите и т.н. Можем да го преместим от едно място на друго чрез appendChild();

Стилът на HTML елементите логично се променя с пропъртито .style, което ще промени инлайн стила на HTML елемента.

NodeList

Това е върната колекция (подобно на масив (array-like), може с индески да са достъпват определени елементи, но с vor in обхождането има някой особености) от елементи след използването на DOM селекторите:
getElementsByTagName
getElementsByName
getElementsByClassName
querySelectorAll

Има два типа NodeList – Static NodeLists и Live NodeLists. Разликата между двата е, че когато се използват getElementsBy…() селекторите се връща Live NodeList, а когато се използва querySelectorAll() селектора се връща Static NodeList. Промените по DOM елементите засягат
LiveNodeList, но не и NodeList.

Telerik Homeworks: JavaScript Part1 course – Loops (Цикли)

JavaScriptОбяснение на задачите/упражненията от домашното към лекцията Цикли от курса  JavaScript Part 1 в Академията. Условията на задачите и съответно обясненията на самите алгоритми за решаване са подобни на тези от от лекцията Цикли  от C# курса, затова няма да се спирам да ги обяснявам в подробности наново. По-скоро ще се концентрираме върху това как да се донагодят решенията до синтаксиса и особеностите на самия JavaScript. Файловете с решения съдържат само JavaScript код, без никакви допълнителни стилизирания, потребителски менюта в браузъра и се извеждат като резултат директно на JS конзолата (console.log)… Т.е. решенията няма да приемат входа на стойностите от потребителя, а ще е зададен като променливи в самия код.

{ Кодът с решенията към всяка една от задачите можете да видите тук }

1. Write a script that prints all the numbers from 1 to N.

ОБЯСНЕНИЕ:  Трябва да отпечатаме числата от 1 до произволно число N. Използваме for цикъл, като в условието му задаваме, вместо i да започва от 0, да започва от 1, както се иска в условието.

2. Write a script that prints all the numbers from 1 to N, that are not divisible by 3 and 7 at the same time.

ОБЯСНЕНИЕ:  Задача като предишната, само че във for цикъла слагаме едно if условие, което да маха числата, които се делят на 3 и 7 едновременно. Ако това е вярно операторът continue ни връща отново към условието на for цикъла и прескача по този начин else условието.

3.  Write a script that finds the max and min number from a sequence of numbers.

ОБЯСНЕНИЕ:  Поредицата от числа, от които трябва да намерим най-малкото и най-голямото, я записваме в масив. Идеята е да сортираме масива във възходящ ред, след което  да достъпим чрез първия и последния му индекс съответно най-малкото число и най-голямото. Интересното при JS обаче е, че сортиращия метод .sort() на масивите, сортира елементите вътре в него по азбучен ред. Т.е. ако в масива имаме числата [33, 3, 7] нормално е да очаквате след сортирането те да се подредят в реда [3, 7, 33]… Е да ама не – след използването само на arr.sort() подредбата им ще бъде [3, 33, 7]. За да накарате .sort() да сортира правилно числа, трябва да му зададете като параметър някаква сортираща функция, чрез която да се предефинират правилата за сотртиране, така че те да са приложими адекватно за числа.

4. Write a script that finds the lexicographically smallest and largest property in document, window and navigator objects.

ОБЯСНЕНИЕ:  В тази задача, трябва да напишем скрипт, който да намира най-малкото и най-голямото лексикографски property в обектите document, window и navigator.
Ще си послужим с  for-in цикъла, който е идеален за обхождане на елементите в колекции, било то масиви или обекти, в които той обхожда пропъртитата им. Създаваме си функция, която приема като параметър object-a, който ще обхождаме (document, window или navigator). Създаваме си променливи с минимална и максимална лексикографска стойност, пускамe for-in цикъла и намираме най-малкото и най-голямото лексикографски property в обектите.

Кодът към всяка една от задачите можете да видите тук.

Telerik Homeworks: JavaScript Part1 course – Operators and Expressions (Оператори и изрази)

JavaScriptОбяснение на задачите/упражненията от домашното към лекцията Оператори и изрази от курса  JavaScript Part 1 в Академията. Условията на задачите и съответно обясненията на самите алгоритми за решаване са подобни на тези от от лекцията Оператори и изрази от C# курса, затова няма да се спирам да ги обяснявам в подробности наново. По-скоро ще се концентрираме върху това как да се донагодят решенията до синтаксиса и особеностите на самия JavaScript. Файловете с решения съдържат само JavaScript код, без никакви допълнителни стилизирания, потребителски менюта в браузъра и се извеждат като резултат директно на JS конзолата (console.log)… Т.е. решенията няма да приемат входа на стойностите от потребителя, а ще е зададен като променливи в самия код.

{ Кодът с решенията към всяка една от задачите можете да видите тук }

1. Write an expression that checks if given integer is odd or even.

ОБЯСНЕНИЕ: За да проверим дали дадено число е четно или нечетно си създаваме обикновена функция за това. Когато метода се извика, ако числото се дели на 2 без остатък е четно, ако ли не – значи е нечетно. Между другото интересното е, че когато подадем стринг към JS функцията, не получаваме NaN, както евентуално бихте очаквали, а го отчита като odd.

2. Write a boolean expression that checks for given integer if it can be divided (without remainder) by 7 and 5 in the same time.

ОБЯСНЕНИЕ: За да проверим дали едно число се дели едновременно на 7 и 5 без остатък, условието в if-а ще бъде зададено чрез оператора &&.

3. Write an expression that calculates rectangle’s area by given width and height.

ОБЯСНЕНИЕ:  Правим функцията да получи два параметъра съответно за широчината и височината на квадрата, след което ги умножаваме по формулата, за да намерим лицето му. При опит да подадем стринг като параметър към функцията и бъде умножен с число, получаваме NaN.

4. Write an expression that checks for given integer if its third digit (right-to-left) is 7. E. g. 1732 -> true.

ОБЯСНЕНИЕ: За да проверим третата цифра отдясно-наляво дали е 7, първо делим на 100, след това делим с остатък, за да сравним дали това число е равно на 7. Важно е числото, което ще се дели, за да се провери, преди това да се парсне към INT, защото само при този тип, след деление се губят цифрите след десетичната запетая.

5. Write a boolean expression for finding if the bit 3 (counting from 0) of a given integer is 1 or 0.

ОБЯСНЕНИЕ: Правим си маска със стойност 1, която шифтваме 3 позиции наляво. В result записваме резултата от израза с побитовия оператор &. След това шифтваме обратно резултата с 3 позиции надясно и в зависимост от това, дали неговата стойност е 1 или 0, принтираме един от двата възможни резултата на конзолата.

6. Write an expression that checks if given point (x,  y) is within a circle K(O, 5).

ОБЯСНЕНИЕ: В тази задача, под K(O, 5) се разбира окръжност, центъра на която е центъра на координатната система и е с радиус 5. Ще използваме формулата за намиране на точка в окръжност, която е x² + y² < r²

7. Write an expression that checks if given positive integer number n (n ≤ 100) is prime. E.g. 37 is prime.

ОБЯСНЕНИЕ: Директно използваме алгоритъма с условията, на които трябва да отговаря едно просто число от C# задачите. В зависимост от това, дали резултата е true или false принтираме един от двата възможни отговора на конзолата.

8. Write an expression that calculates trapezoid’s area by given sides a and b and height h.

ОБЯСНЕНИЕ:  Тук се изисква от нас да намерим лицето на трапец по неговата формула, която се състои от три параметъра, които ще подадем на функцията.

9. Write an expression that checks for given point (x, y) if it is within the circle K( (1,1), 3) and out of the rectangle R(top=1, left=-1, width=6, height=2).

coordinate Problem9

ОБЯСНЕНИЕ: В тази задача трябва да проверим дали координатите x и y дали се намират едновременно в дадената окръжност и същевременно извън дадения правоъгълник. За целта ще трябва да преизползваме формулата от 6-та задача за намиране на точка в окръжност: x² + y² < r² и да добавим формула, която да проверява дали координатите са извън правоъгълника.

Кодът към всяка една от задачите можете да видите тук.