[? DAN ARMADARAS:?] Tere, Ma olen [? Dan Armadaras?].
Täna me ei kavatse vaadates silumine.
Me mitte ainult ei kavatse rääkida mõned tehnikad,
vaid ka läheme vaatama mõned omadused sisalduvate
jooksul CS50 IDE, mis võimaldavad hõlpsasti siluda programmi.
>> Lihtsalt üks näide midagi, mida saab valesti minna
ja see on tegelikult midagi et me oleme juba näinud.
Sel juhul on tegemist C programmi mis aktsepteerib täisarv kasutaja,
jagab selle kahte ning annab väljund tagasi kasutaja.
Nüüd sellest, mida me oleme näinud varem loenguid,
me teame, et see tegelikult põhjustada konkreetset tüüpi jaotus probleeme
kui meil on paaritu arv.
>> Täpsemalt, me lihtsalt visata midagi peale koma.
Nüüd me teame, et see juhtub olema.
Ja kui võtame, siis me võime kinnitada meie kahtlusi, esimene, koostades.
Ja siis, joostes ja sisenemist paaritu arv.
>> See ei ole midagi uut.
Aga see on tegelikult Näiteks on viga, mis
võib esineda ühes suurema programmi mis muutub raskemaks tabada.
Kuigi me teame, mida küsimus on, tõsi asja tuum
võib tuvastada püüdes spetsiaalselt kus viga esineb,
tuvastada, mis seda probleemi on, ja siis millega seda.
Nii annab see näiteks mis võiks olla midagi
et me juba teame, kuid võib olla maetud jooksul muud elemendid koodi.
>> Nii avada see teine ​​allikas koodifailist näiteks,
see rajoon probleem on nüüd osa suuremast programmi.
Ikka võib olla natuke natuke kunstlik, ja me
võiks olla võimalik lihtsalt tuvastada seda, eriti
sest me lihtsalt arutame seda.
Aga me saame aru, et see probleem võib esineda ka laiemalt.
>> Kui ma koostada selle ja nüüd käivitada, sisestage paaritu arv,
näeme, et me ei saa täpselt väljund, et me oleme oodatud.
Sel juhul, võib öelda, et me
tahan loota kõik numbrid ühest kuni mõne konkreetse numbri.
Ja me näeme, et me on erinevaid küsimusi
siin, kui me väljastamist, lihtsalt, 0 ja 1, kui me anda panuse 5.
>> Nii me juba teame, et seal on probleem siin.
Aga me ei tea täpselt kus see küsimus on ka tegelikult olemas.
Nüüd üks viise, mis saame proovida seda parandada
on midagi, mida me oleme juba kasutusele võetud.
Me võime lihtsalt kasutada seda ka laiemalt.
>> On line 14, meil on Selle printf funktsiooni,
mis võimaldab meil välja printida riik kohta erinevat teavet.
Ja see on midagi, mida sa looks jooksul oma programmi
proovida välja nuputada, millised täpselt on toimub erinevate rida koodi.
Nii et isegi kui see ei ole lõpptoodangu et me tegelikult
tahavad toota välja Selles programmis, me ikka
võib-olla mõned siluda avaldused, kus me
võib proovida aru saada täpselt, mida toimub sees meie koodi.
>> Nii et kui ma lähen printf koos siluda tag.
Sel juhul on see lihtsalt siluda string
et ma olen üles-panna nii, et see muutub väga selge väljund minu kood
mis see on, et ma tahan näidata.
Ja Väljundiks arv et meil on arvutatud.
>> Sellisel juhul võin tahan täpselt teada
mis toimub enne ja Pärast mõningaid konkreetseid arvutusi.
Nii et ma võiks kasutada printf enne ja pärast seda rida koodi.
Sel juhul ma võiks isegi oleks natuke selgem
öeldes siluda enne ja siluda pärast seda
et ma ei ajage ennast mitmes reas, mis näevad välja samasugused.
>> Nüüd, kui me kompileerida see ja käivitage see, sisesta number nagu viis uuesti,
näeme, et meil on Nüüd väljund enne ja pärast
ja leiavad, et me ei ole teinud selget jagunemise või selge millel on number
et me tegelikult tahame teha.
Nüüd sel juhul, see on ei ole tõesti selge väljundi.
See ei ole tegelikult selge tulemus, et tahame välja just selle programmiga.
>> Ja see on jällegi natuke kunstlik.
Aga võib-olla üks neist asjadest, mis me võiks teha, kui kirjelduses öeldud
et me tahame jagada seda 2 ja lisage 1-- nii teisisõnu
tahame ümardada up-- siis me võiksime teada, et võiksime
seda konkreetset asja, antud juhul.
Nüüd siin me teame, et meil on võimalik lisada 1 meie poole võrra number.
>> Olgem kompileerida seda ja kinnitavad, et see
käitub nii, et me tahame.
Me näeme, et nüüd enne võttes oleme number 5.
Pärast oleme number 3, mis meie spetsifikatsioon,
on see, mida me tahtsime teha.
Aga kui me vaatame Väljundiks, saame
näha, et meil oleks teine bug kokku, mis on
et hakkame meie arv on 0.
>> Nüüd jälle, see on midagi, et me oleme näinud varem
ja me saame määrata üsna kergesti.
Aga sel juhul me Samuti oli kasu
kasutada printf avaldusega otse sees jaoks silmus
täpselt teada, kus Selle vea tekkimist.
Nii printf avaldused on väga kasulik, aidates
teil otsustada, kus, just oma lähtekoodi,
konkreetse vea tekkimist.
>> Ja see on ka oluline mõista et nagu me kirjutada koodi,
meil oleks eeldused seisundi kohta programmi.
Või me võiksime olla eeldused mida osa programmist
on tegelikult õige või vale, kui hiljem kui me ehitame selle programmi kohta
ja teha seda osa keeruline ja suurema programmi
et me mõistame, et teatud osa kohta, mis on tegelikult lollakas.
>> Kasutades printf võib tõesti aidata kitsendada ja tuvastada
piirkondade programm, mis ei tohi saab käitub täpselt nii, et me
oota, mis põhineb meie eeldused.
Aga seal on muud vahendid olemas, samuti,
mis võimaldavad meil proovida aru saada, kus viga on toimunud
ja ka konkreetselt, milliseid asju juhtub sees programm.
>> Nii kasutades printf on väga kasulik, kui me tahame
määrata kindlaks konkreetsed valdkonnad programm, mis on mõned bug.
Aga see muutub ka tüütu mõne aja pärast.
Sel juhul on see suhteliselt lihtne programm
vaid ühe või kahe muutuja.
Ja see muutub väga lihtne meile välja printida väärtus need muutujad
kontekstis suurema programmi.
>> Aga me võiksime olla erinev programm, mis on palju muutujaid.
Ja see ei pruugi olla üsna nii lihtne kasutada printf
proovida hinnata, mis toimub igaühele nendest muutujatest
kui programmi täidetakse.
Seal on programm, mis on olemas nimetatakse siluri programmi.
Sel juhul, üks, et me kasutamine on GNU siluri või GDB,
mis võimaldab meil kontrollida sisemise töös programmi palju
üksikasjalikult.
>> Me võime tegelikult ellu GDB käsurealt
siin lihtsalt kirjutada GDB ja käsk, et me tahame siluda.
Sel juhul loota.
Nüüd sel juhul me näeme, et see toob meid kiiret mis ütleb GDB.
Ja me saame tegelikult täita käske GDB
tegelikult algab täitmist Programm, lõpetage see teatud punktides,
hinnata muutujate ja kontrollida muutujaid
olemas programm riigi sel konkreetsel hetkel,
ja nii edasi ja nii edasi.
See annab palju jõudu meile.
>> Aga see lihtsalt nii juhtub et CS50 IDE ka
annab GUI või kasutajanime liides GDB, et
võimaldab meil seda teha ilma käsurida üldse
või üldse isegi.
Nii, et ma pääseb, et on kasutada siluda nuppu
tipus on CS50 IDE.
Nüüd minevikus, mis meil on näinud, et me kasutame käsku
line kompileerida ja seejärel käivitage programm.
>> Debug nupp teeb need mõlemad etapid.
Aga see ka avab siluri tab paremas servas
mis võimaldab meil kontrollida erinevaid Kinnistute programmi
nagu see on täidesaatva.
Kui ma vajutan siluda, selles juhul avab
uue kaardi konsool akna alumises servas.
>> Ja te näete, et see sakk on mõningaid andmeid tipus.
Ja me saame suuresti eirata seda.
Aga üks asi, et me tahame märgata
on, et see väljastab sama asi, et me
saaksin, kui üritasime käivitada omale C programmi terminali aknas.
>> Siin näeme, see töötab rõkkama, ja see on erinevaid lipud,
ja see on koostamas meie count.c faili mis oli valitud tab ajal
et ma tabanud siluda.
Nii et see on väga kasulik, sest nüüd kasutavad seda siluda nuppu,
saame korraga koostada ja seejärel täita programmi, et me tegelikult
taha joosta.
>> Üks lipud mis on üle oluline, sel juhul
oleme tegelikult kasutanud kõige kauem
aga ka lihtsalt tegin mõned käsi lehvitades [kuuldamatu], mis
on see üks siin.
In rõkkama, ta ütleb -ggdb3.
Sel juhul me oleme räägib rõkkama, meie koostaja,
on see, et me tahame koostada meie programmi.
Aga ka see, mis on nimetatakse sümbolit info
nii, et kompilaator tegelikult on juurdepääs to palju alusteabel
sisalduva programmi raames.
>> Täpsemalt arvu funktsioone, mis mul on,
isikute nimed funktsioone, muutujate tüübid
et need muutujad, ja erinevaid muid asju, et aidata siluri
täita oma tööd.
Nüüd on midagi muud see on oluline märkida,
Kui me arutame jooksvaid programmi sel viisil.
>> Pange tähele, et see on tegelikult üles kasvanud uus tab meie konsool
allosas.
Me ei pea enam suhelda otse terminali aknas.
Aga see uus kaart tegelikult terminali aknas.
See lihtsalt on spetsiifiline jooksmine programmi, et oleme loonud.
>> Pange tähele, et allosas, in koos mõnede väljund
poolt kolisevad koostaja ja GDB, mida saame suuresti tähelepanuta,
see tegelikult näitab väljundi Meie programm on väga alt.
Nüüd on oluline mõista et see üks aken tegelikult
näitan sulle väljund oma programmi
vaid ka nõus sisend kõnealuse programmi, samuti.
>> Nii teate, mis ütleb, sisestage number,
mis on sama tulemuse, et meil oli oli terminali aknas varem.
Aga see on nüüd toodud selle uue kaardi.
Ma ei saa sisestada number.
Ja see tegelikult funktsiooni ootame
näitab meile meie siluda, väljund, väljund, mis võiks olla bagi,
nagu me oleme näinud.
Ja väga põhjas, seda tegelikult on mõningaid täiendavaid väljund
SKPst lihtsalt öelda, et see programm on lõpetatud.
>> Nüüd, kui nägid selles eriti joosta,
see ei olnud eriti kasulik, sest isegi
kuigi meil oli siluri menu tulla up, see oli ikka töötava programmi.
Kell tal ei ole tegelikult peatada täitmise meile
saaks kontrollida kõiki muutujate sisalduvad.
Seal on midagi muud et me peame tegema, et
saada GDB tunnistama, et me tahame peatada programmi täitmiseks
ja mitte ainult et ta saaks jätkata Tavaliselt, kui me oleks muul juhul.
>> Selleks, et peatada täitmise, mingil konkreetsel liinil,
meil on vaja luua, mis on nimetatakse murdepunkt.
Ja murdepunkt on väga lihtne luua Selles CS50 IDE võttes hiirt
ja klikkides vasakule Mõne konkreetse liini number.
Kui ma seda teen, punane täpp näib, mis näitab
et see rida on nüüd murdepunkt.
>> Ja järgmine kord, kui ma saan GDB, siis peatub täitmise ajal, et murdepunkt
kui see jõuab, et rida koodi.
Nüüd on see oluline asi realiseerida
et see ei pruugi juhul, et iga koodirida
on tegelikult kättesaadav.
Kui ma oleksin luua funktsiooni siin, et example-- tühine f--
ja lihtsalt ei print line siin-- hello world-- kui ma ei helista seda funktsiooni,
see saab olema nii, et kui ma panen murdepunkt siin
funktsiooni ei saa kunagi kutsutud.
Ja seetõttu käesoleva Eelkõige murdepunkti
kunagi tegelikult peatada programmi täitmiseks.
>> Ütleme, et ma õigesti luua murdepunkt mõned koodirida
mis tegelikult toimub.
Nüüd sel juhul, see on Esimene rida põhiülesanne.
Nii et see on kindlasti tegemist et niipea kui ma hakkan täitmist,
kõige esimene rida jõutakse.
GDB peatub täitmist.
Ja siis ma saaks suhelda siluri.
>> Võimalik on määrata mitu read murdepunktid, kui soovite.
Me võime ka luua rida up siin selles segmendis koodi
et ei saa kunagi jõudnud.
Ja meil on võimalik määrata üks allpool.
Põhjusel, et meil oleks tahad seda teha jagame
läheb natuke rohkem üksikasjalikult hetk.
Nii nüüd, las ma lihtsalt keelata Nende täiendavate murda punkte
nii et saame vaadata, mis juhtub kui mul on üks vaheaeg
Punkti minu programm.
Olen teinud mõned muudatusi selles programmis.
Nii et ma pean seda salvestada.
Ma klõpsake siluda, nii et ma ei saa algab koostamise ja seejärel
täitmise siluri.
>> Me näeme, et pärast hetkedel line, et me valitud murda
punkt kollase värviga.
Samuti on märgatav, et Ülemises paremas silumist paneel
et pausiikooni on muutunud väikesesse mängu ikooni.
See tähendab, et meil paus täitmise, see on konkreetsel juhul.
Ja lööb Play nuppu oleks võimaldab meil jätkata täitmist
tollel kindlal hetkel.
>> Pange tähele, et seal on paar muud nupud selles siluda paneel,
samuti.
Samm üle, mis võimaldab mul täita, et üks rida koodi
ja astuda üle, et liini kõrval üks, mis käesoleval juhul
tähendaks, et printf avaldus täidetakse.
Ja on siis pausi täitmise kohta line 13 nagu nii.
>> Ja seal on ka samm funktsionaalsusest, mis
on kasulik, kui olen loonud muu funktsioonid mujal lähtekoodi.
Ja ma tahan astuda neid funktsioone mitte
täidab seda ülesannet tervikuna.
Aga me vaatame rohkem etapis funktsionaalsusest vaid hetk.
Nüüd märgata teisi asju, mis tegelikult olemas selle siluda paneeli.
>> Meil on selle paneeli kutsutud pinu, mis näitab meile
kus täpselt oleme.
Sel juhul oleme sees peaülesandest.
Meie script nimetatakse count.c.
Ja meil juhtub olema line 13, veerg üks, mis
Just seda rõhutas piirkonnas lähtekoodi näitab, kui hästi.
>> Nüüd märkate, et see näitab ka all kohaliku muutuja osa
kõik muutujad, mis eksisteerivad selle funktsiooni.
Oluline on tähele et kõik muutujad
Siia ilmuvad kohaliku muutuja rubriigist funktsioon,
juba enne nende määratletud.
Me näeme siin, et meil on muutuv nimetatakse num, on vaikimisi väärtus 0,
ja see on tüüpi int.
>> Nüüd, enne kui me tegelikult initsialiseerida kõiki neid muutujaid,
me ei ole tingimata tagatud, et näha väärtus 0.
Ja sõltuvalt teiste hukkamiste et olete läbi
ja riigi oma mälu, kui sa tegelikult programmi käivitada,
te võite leida, et teil ei näe väärtused 0
ja selle asemel mõni muu hull numbrid.
>> Aga ei muretse.
Ta ei kavatse olla olulised kuni sa tegelikult initsialiseerida väärtus.
Nüüd sel juhul näeme, et Olen läbi mõned väljundid.
Ja ma just nüüd, peatatud täitmise.
Aga sel juhul, mida Ma tõesti tahan teha
on nüüd samm üle selle joone koodi, nii et ma ei saa tegelikult
päringu kasutaja, et int, et tahame kasutada oma programmi.
>> Nüüd sel juhul, kui I hit samm üle, teate
et Paus või pigem Jätka nupp on muutunud selle pausinupp
sest see kood on tegelikult täidetakse.
Mis toimub just praegu on see
ootab meid sisestada mõned andmed nagu näeme meie väljundi teksti
väga põhjas.
>> Nii kohe, et see on tegelikult ei peatatud
kuigi see, omamoodi, ilmub olla, sest ei juhtu midagi.
Aga see lihtsalt nii juhtub, et minu konkreetsel juhul on line 13
Ma ootan kasutaja sisend.
Ja nii GDB ei ole võimalik kontrollida programmi, sest see töötab.
>> Nüüd järgmine kord, et ma sisestan mõned input-- nii et ma sisestage et number 5,
nagu me oleme näinud past-- tabas Return, ja me
märkate, et kohe, GDB pausid ja jälle esile järgmisele reale.
Aga teate, et nüüd, kui Tänu meie sisestanud väärtus,
oleme uuendanud, et väärtus sees Meie kohalikud muutujad, mis
Väga kasulik on täpselt teada mida see number oli mälu.
>> Nüüd ma ei luba seda programmi jätkata mängivad lõpuni selle täitmine
pihta Jätka.
Me näeme, et väga kiiresti teeb programmi lõpuni täidesaatva
sama väljundi et me oli enne, siluri sulgub,
ja nüüd on see programm täielikult seiskunud.
>> I näitavad, et ainult eesmärgil nähes, mida
juhtub, kui me tegelikult tabas Jätka.
Aga me tegelikult tahame tahan minna tagasi selle programmi
nii et saame proovida siluda täpselt, mis toimub.
Nüüd, kui ma kasutan siluri, tohib ei pea neid siluda printf avaldused.
>> Nii et ma võiks need eemaldada Ma teen nüüd lihtsalt minna tagasi meie lihtsam koodi
et meil oli hetk tagasi.
Nüüd, kui ma päästa programmeerida ja käivitada,
see jälle minna, et esialgse murdepunkti, et mul oli real 11.
Ja ma saaks kontrollida minu muutujad nagu ma tahan teha.
>> See lihtsalt nii juhtub, et see osa ei ole väga huvitav,
Ja ma tean, et ma lähen välja trükkida seda avaldust.
Palun sisestage number.
Ja siis ma tean, et ma lähen küsida kasutajalt, et täisarv.
Nii et ehk ma tegelikult tahan liikuda minu murdepunkti natuke allpool.
>> Saate eemaldada murda punkte klõpsates jälle otse
vasakule, et liin number.
See punane täpp kaob, näidates et see murdepunkt on nüüd läinud.
Nüüd sel juhul, täitmine on peatatud.
Ja nii see ei ole tegelikult läheb jätkata nii et konkreetsel juhul.
Aga ma ei saa määrata pausi punkt a little bit hiljem.
>> Ja kui ma nüüd taas minu kood, see jätkub ja öelda
punkt, et murdepunkt.
Jällegi, ma tabanud Jätka.
Ei tundu nagu midagi juhtub.
Aga see on sellepärast, et minu kood ootab sisend.
Ma sisestage number 5, Enter, ja nüüd järgmise murdepunkti tabavad.
>> Nüüd sel juhul käesoleva on rida koodi
et enne teadsime juhtus olema lollakas.
Nii saab hinnata, mis juhtub sel konkreetsel ajahetkel.
Kui liin on esile tõstetud, seda line ei ole veel täidetud.
Nii et kui näeme et mul on number, mis
Mul on täisarv nimega num, et väärtus on 5.
Ja ma lähen esituses matemaatikat kohta, et number.
>> Kui ma sammu üle, et saame märgata, et väärtus num
on muutunud vastavalt aritmeetika, et me oleme tegelikult teinud.
Ja nüüd, et me oleme sees see silmus
või nüüd, et silmus ise on rõhutanud,
näeme, et meil on uus muutuja nimega i, et
läheb tohi kasutada, et loop.
>> Nüüd mäletan enne, et ma mainis, et mõnikord sa oled
näeme mingi hull numbrid vaikimisi enne, et number
või et muutuja tegelikult vormindatud.
Näeme, et täpselt siin see muutuja
nimetatakse i, mis ei ole veel lähtestatud
ajal esile.
Aga näeme, et see on mingi number et me tegelikult ei oodanud.
>> See on OK.
Ära muretse selle pärast sest meil ei ole tegelikult
vormindatud, et number, kuni ma samm üle selle joone ja väärtust
i on vormindatud väärtusega 1.
Nii, et näha, et see on tegelikult Juhul, olgem samm üle.
Nüüd on võimalik näha, et line on täidetud.
Ja meil on nüüd esile Selle printf line.
>> Ja me võime nüüd näha, kuidas meie väärtused I ja 3 on aja jooksul muutunud.
See on väga kasulik teha, tegelikult, on samm üle joonte korduvalt.
Ja leiad, mida tegelikult juhtub sees oma silmus
ja mis juhtub muutujad sees, et loop
nagu, et programmi rakendamise esineb üks samm korraga.
>> Nüüd on see aeg, mil ma astus üle lihtsalt piisavalt
et ma nüüd olen lõpuks oma programmi.
Kui ma sammu üle, et see tegelikult lõpetada täitmist
Nagu me oleme näinud varem.
Lubage mul see taaskäivitada, veel kord, et et võin juhtida midagi muud välja,
samuti.
>> Sel juhul on nüüd minult taas
võtta vastu number, mille Ma jällegi siseneda.
Aga seekord, ma lähen sisestada suurema arvu nii, et silmus
itereerima rohkem korda.
Sel juhul ma lähen sisestada väärtus 11.
>> Nüüd jälle, sest ma seada murdepunkt real 15,
see saab rõhutada, et liin.
Me näeme, et meie number 11 on õigesti
esindatud meie kohalikud muutujad.
Astudes üle, et saame nüüd vaata, mis juhtub meie väärtus i
kui astume sees selle jaoks silmus.
Läheb suurendatakse iga kord, kui me jõuda tippu, et loop.
>> Nüüd üks asi, mis võiks kasulik teha täitmise ajal
Käesoleva programmi eesmärk on minu jaoks tegelikult muuta muutujate midstream näha
Mis juhtub minu programm.
Sel juhul ma ei saa tegelikult topeltklõps väärtus.
Pange tähele, et see muutub tekstiväljale.
>> Nüüd ma saan sisestada erinevat Väärtustame kokku
näha, kuidas minu programm käitub kui ma olen muutunud, et muutuja.
Nüüd sel juhul muutuja Nüüd sisaldab väärtust 10.
Aga programm on veel peatatud sundtäitmist.
Kui ma sammu üle, ma näen, et väärtus i, mis ma Sisestatud 10,
ei ole suurem kui väärtus num, mis kohe paneb silmus
peatada täidesaatva.
>> Nüüd see ei ole ainult Põhjus, miks te oleks
soovid muuta muutuja paigas.
Sa võid tegelikult tahavad proovida muuta seda nii,
et saate jätkata täitmise loop
või nii, et saate muuta mingi väärtus enne seda
jõuab mõne konkreetse komplekti aritmeetiline et te asute täitma.
>> Nüüd, et me tegelikult muuta väärtus i kui programm täidesaatva,
see põhjustas silmus loobuda enneaegselt, sest äkki ma
juhtus olema suurem kui väärtus NUM, mis tähendab, et see silmus
enam ei vajata, mis tuleb täita.
Peale selle juhtus olema Juhul, kui oleme muutnud väärtus i
kui liin 17 on rõhutatud, mis oli hetk,
et silmus täitmine tegelikult hinnatakse.
>> Kui ma oleksin muutunud väärtus i teisel real, ütleme 19,
oleksime näinud erinevat käitumist, sest line 19 oleks
on teostatud enne loop tingimus oli ümber hinnata.
Nüüd on see aeg, mil ma olen jälle lõpus see programm.
Ja ma ei saa lubada seda, et jätkata võimaldab oma programmi sulgumise loomulikult.
Aga seal on paar asja mis on oluline ära võtta
just selle arutelu.
Sa pead hindama oma eeldusi
kuidas kood tuleks käitub.
Iga kord, kui arvad, et mõni tükk koodi tead juhtub tööd,
mis võib olla punane lipp minna tagasi ja hinnata, ja olla kindel,
et teie eeldus kuidas see kood töötab
on tegelikult tõsi, et kuidas see on väljendas oma lähtekoodi.
>> Kuid veelgi punkti oli, Kui me kasutame siluri,
võite panna katkestuspunktid erinevat rida koodi,
mis paneb siluri peatada täitmise igas need read
nii, et saate hinnata mälu või isegi muuta see koht.
Ja jälle, pea meeles, et saate luua mitu murdepunktid, et sa
saab ka jätkata täitmist, jätke suurtel koodiosade,
ja siis see automaatselt peatada järgmisel murdepunkti.
>> Seal on tegelikult rohkem arenenud funktsioone siluri, samuti.
Aga me peame teid suunata et mõnes järgnevas videos
et tõesti tease peale, kuidas kasutada neid konkreetseid ülesandeid.
Sest nüüd, aitäh väga palju vaadates.
Ja õnne silumine.