>> SPEAKER 1: Antag nu, at jeg ønskede at give Scratch evnen
at nyse så godt.
Nå, mine første instinkter ville være som før, for at foretage en
blok, kalder dette nys.
Angive, at jeg gerne vil præcisere med en række, hvor mange gange
Scratch skulle nyse.
Derefter at klikke på OK.
Lad mig flytte dette over til højre at give mig selv noget mere plads.
>> Og så lad mig igen gå til Gentag, tvingende standard 10 med n.
Lad mig gå til sige erklæring og sige ikke "hej", men
"Achoo" i et sekund.
Derefter tage et øjebliks pusterum.
Og det er det.
>> Nu har jeg en blok kaldet nys, samt en blok kaldes hoste.
Så nu, hvis jeg vil Skrab at hoste og nys, kan jeg simpelthen angive en
nyse under hans hoste.
Tre gange, siger.
Klik på det grønne flag, og jeg vil se ja, hoste, hoste, hoste.
Efterfulgt af Achoo, Achoo, Achoo.
Mine mest realistiske nyser til dato.
>> Læg nu mærke til noget, der er dårligt om dette design.
Selvom jeg ikke ligefrem eksemplarer eventuelle puslespilsbrikker, jeg
definitivt trækkes og slippes temmelig set de samme puslespilsbrikker, der giver
den ene funktion en nogensinde så lidt andet navn end den anden, nys
versus hoste.
Så dette er en mulighed for factoring nogle fælles kode.
Faktisk mærke den eneste forskel mellem hoste og nys er, at man
har Scratch ordsprog "hoste", den andre som siger "Achoo".
>> Så kunne vi ikke en eller anden måde generalisere denne kode på en sådan måde, at vi simpelthen
specificere, hvad ord, vi ønsker at Skrab skal man bo?
Og afhængigt af det ord, vil det effektivt være en hoste eller
vil det være et nys.
Så lad os gå videre og gøre det.
Lad os lave en tredje funktion og kalder denne ene, "siger." og jeg vil have det til
acceptere, ikke bare et nummer, men denne gang en streng, ellers kendt som en
ord eller en sætning.
>> And we'll call this "word."
Og hvor mange gange skal jeg ønsker at sige dette ord?
Jamen så lad os angive et tal, kalde det igen n.
Og bare for at gøre denne blok mere læsbar, lad mig gå videre og tilføje en
label kaldet "tider". Så når du læse denne blok fra venstre til højre, er det
bogstaveligt siger "sige ord n ​​gange."
>> Lad mig nu gå videre og klik på OK.
Og lad mig nu gennemføre denne blok, igen ved hjælp af en gentagelse blok.
Angivelse, at jeg ønsker det at gentage n gange.
Angivelse, at jeg ønsker at sige noget i et sekund.
Men snarere end noget hårdt kodet ind i denne funktion, så lad os i stedet trække
og drop det ord, der er bestået i.
Lad os derefter vente et sekund.
Så lad mig gå tilbage og forfine min implementeringer af hoste og nys,
på en sådan måde, at disse to funktioner kalder denne tredje funktion, hvorved
minimere mængden af duplikere kode.
Så lad os bogstaveligt kaste denne kode væk.
Lad os smide denne kode væk.
Og denne gang, så lad os blot angive, at hoste bør gennemføres ved
sige "hoste" nogle tal n gange.
>> Og på samme måde, kan vi gå tilbage og ny at gennemføre nys så den anvender
sige med et argument af "Achoo" n gange.
Så hvad har vi gjort?
Vi har erkendt den kode, der var fælles for både vores hoste og vores
nyse funktioner, medregnes det ud i en ny tredje funktion, og derefter
omskrevet hoste og nyse i en sådan en måde, som de kalder det
tredje og nye funktion.
>> Nu har vi absolut gjort hele denne programmet mere kompliceret end det
virkelig skal være.
Efter alt, ved slutningen af ​​dagen, vi bare brug Scratch til at hoste tre gange
og nyse tre gange.
Og vi kunne have gjort det med blot et par puslespilsbrikker.
Men da vores programmer få meget mere kompliceret, og vores programmer mere
sofistikeret, denne teknik factoring ud fælles kode, eller
hierarkisk forrådnede dit program i mindre funktion, som hver
kalde andre funktioner, er en meget overbevisende teknik.
Fordi det vil sikre, at din kode, selv som det bliver mere komplekse, rester
let at opdatere og også meget læsbar.
>> Faktisk overveje slutresultatet.
Når det grønne flag er klikket, hoste tre gange, nys tre gange.
Og det er det.
Faktisk, lad os gøre netop dette.
Klik på det grønne flag, og vi får en hoste, to hoste, tre hoster.
Efterfulgt af, håber vi, engang nyse, to nyser, og en tredje nys.
Håber han får det bedre snart.