-
Нека говорим за цикли. Тук имам while-цикъл и само с няколко реда код
-
мога да напиша това съобщение надолу по целия екран.
-
Ако отида и променя съобщението така, за да го направя по-добро,
-
всичките се променят.
-
И как работи това? Е, можем да разгледаме този код отново след момент.
-
Но нека първо се върнем стъпка назад и помислим как можем да напишем тази програма,
-
с помощта само на това, което знаем до момента, без да използваме цикли.
-
За да направим това, просто ще пишем някакъв текст отново и отново и отново, нали?
-
Ще напишем text, в скобите message, ще го сложа на първо място,
-
и сега всичко опира просто до повтаряне на това
-
достатъчно пъти, че в крайна сметка да стигнем до най-долу.
-
И това изисква доста работа, нали?
-
Защото долният край е много далеч. И е още по-зле, ако
-
после ми кажеш, "хей, това не беше 70, трябва да е по-близо, някъде около 60".
-
И сега това оказва влияние върху това, защото то също трябва да бъде по-малко,
-
и това продължава по-нататък, колкото повече извиквания на text имаме.
-
Всъщност по този начин ще ни отнеме още повече време да стигнем до долу.
-
И това наистина е болка, но за щастие на помощ ни идват циклите.
-
Оттук нататък, винаги когато видиш повтарящ се код като този, първата ти мисъл трябва да бъде:
-
"Мога ли да ползвам цикъл?"
-
Цикълът ще ни позволи да повтаряме тази част от кода отново и отново и
-
отново, като правим само малки промени всеки път.
-
Ето как бихме могли да пренапишем този код с цикъл. Като начало трябва да напишем "while",
-
малки скоби и къдрави скоби. Ще получим това съобщение, но
-
това е само защото не сме готови още. Не се притеснявай, ще се махне, щом приключим.
-
Всеки път, когато пишеш цикъл, трябва да отговаряш на три основни въпроса.
-
И ето ги:
-
първият въпрос е: "Какво искам да повтарям?".
-
И това, което искаме да повтаряме, трябва да влезе между къдравите скоби.
-
Искаме да повтаряме извикването на text, затова го слагаме вътре.
-
Но е малко глупаво, нали? Защото сега просто ще повтаряме
-
едно и също извикване на text отново и отново, което не ни помага много, нали? Трябва нещо
-
да се променя. Това ни води до въпрос две, който е: "Какво искам да променям всеки път?".
-
Искаме да променим тази y позиция, нали? Искаме да стане 60 и после искаме
-
да стане 80. Тогава ще направим това променлива,
-
наречена у, защото това е позицията по у. ще декларирам променлива
-
тук горе. Тя ще започва от 40. И сега, най-накрая, просто трябва
-
да променяме у. Можем да направим това тук долу , можем да кажем "у става у + 20"
-
и тогава ще става по-голямо всеки път. И всъщност можем да използваме
-
урока за лесния начин за инкрементиране тук. Можем просто
-
да използваме прекия път. Това е страхотно и сега
-
ни остава само третият въпрос, който е: "Колко дълго трябва да повтарям това?".
-
Искаме да правим това отново и отново и отново, но не искаме да го правим завинаги, нали?
-
Ако го правим завинаги, първо, това е доста дълго време за чакане,
-
второ, възможно е дори да блокира браузъра ти.
-
Да се надяваме, че няма да стане. В действителност искаме
-
да правим това само докато достигнем края на страницата, нали?
-
Което значи, че искаме да го правим докато у е по-малко от 400.
-
Просто слагаме това тук вътре и сме готови!
-
Това съобщение се изписва надолу по целия екран.
-
И виждаш, че е много по-просто по този начин, отколкото по предишния, който
-
ни отнемаше много време за написване, но дори не бяхме свършили една четвърт от работата.
-
Тогава можем да махнем това и програмата ни е готова.
-
Нека се опитаме да придобием по-добро разбиране за това какво се случва. За да направим това, ще
-
принтирам у всеки път. Ще напиша "у сега е " и после тук долу
-
ще залепвам стойността на у в края на съобщението, за да я виждаме.
-
В момента стойността се променя през 20 и можем да променим това,
-
като просто променим тази променлива тук. Или можеш да го направиш например
-
50. И сега те се променят през 50. Подобно на това,
-
можем да си играем с тези стойности и да ги променяме.
-
И можеш да видиш как това променя къде спира програмата.
-
За да разбереш това, можеш да го мислиш като нещо подобно на
-
условна конструкция с if. Имаме булев израз тук вътре
-
точно както учихме. И после правим тялото на конструкцията,
-
тази част, само ако булевият израз е верен, иначе просто прескачаме
-
до края. Интересното е, че с while-цикъл всъщност
-
има нещо тайно най-долу, което ти казва "върни се в началото
-
на цикъла". И тази тайна инструкция означава,
-
че вместо да излезем и да продължим нататък, както при
-
конструкция if, всеки път когато изпълним тялото на цикъла, ще се връщаме и ще проверяваме дали
-
условието все още е вярно. И ако е, просто ще повторим още
-
веднъж. И точно както предполагаш, и при второто повторение ще направим същото,
-
ще проверим: "хей, върни се в началото; у все още ли е по-малко от"
-
279?" И ако е, ще повторим още веднъж и ще продължим да проверяваме.
-
И ако не е, ще се върнем в началото ето тук. И най-накрая
-
ще избягаме и ще продължим с нашата програма.
-
Супер, има още много интересни начини за използване на цикли, които ще научим скоро, но
-
засега това е отлично начало.