Tečaj E − Funkcije 1 − Jednostavna funkcija za superjunaka

U ovoj ćeš se lekciji upoznati s pojmom funkcija.

  • Computer-science
  • Functions
Print lesson
  • Starosna dob 9+
  • 65+ minute
  • Javascript Blocks

Uvod

U ovoj ćeš se lekciji upoznati s konceptom funkcija. Funkcije su dijelovi uputa ili kôda za koje znamo da ćemo ih ponovno upotrebljavati. Umjesto kopiranja i lijepljenja (copy-paste) koristimo se funkcijama. Imenujemo naš blok kôda i potom, kada želimo pozvati kôd, jednostavno pozovemo funkciju prema njezinom imenu.

U ovoj lekciji, pozvat ćemo jednostavnu funkciju i koristit ćemo se tipkama za kreiranje radnji koje superjunak može učiniti.

Svaki put kada poželiš ponoviti kôd, trebaš razmotriti petlje ili funkcije. Postoji nekoliko prednosti za korištenje funkcija.

Prva je ta da nam funkcije pomažu kada želimo često ponavljati kôd na različitim mjestima u našoj aplikaciji. Samo ga trebamo jednom napisati i potom ga pozvati po imenu. Koristi će biti detaljnije pokazane u drugoj lekciji ove serije koja se zove 'FUNKCIJE ZA DIGITALNOG LJUBIMCA'.

Budući da ne ponavljamo kôd tako često, funkcije nam omogućuju da napišemo kôd koji je po veličini manji te lakši za čitanje. Također je tako lakše praviti izmjene.

Posluži se sljedećim primjerom kako bi vidio koliko je jednostavnije napraviti izmjene pomoću funkcija.


let KilometersRan = 0
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
})
input.onButtonPressed(Button.B, () => {
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
}

Ovdje dvije tipke čine upravo isto. Ako pritisneš A ili B obje će pokazivati treperavi broj 5. Recite učenicima da se umjesto toga prikaže broj 3. Koliko promjena trebamo napraviti za tipku A? (1 promjena) Koliko promjena trebamo napraviti za tipku B? (5 promjena!) Mnogo je jednostavnije promijeniti funkciju nego veliki programski blok.

U našem slučaju funkcije za našeg superjunaka pomažu nam da ostvarimo drugu važnu korist koju pružaju funkcije. Funkcije nam omogućuju organiziranje našega kôda na smislene načine koji se povezuju s projektima u stvarnom životu za koje programiramo. U ovoj ćeš lekciji primijetiti da možemo podijeliti naš kôd u radnje koje bi naš superjunak mogao učiniti. To olakšava razmišljanje o problemu koji želimo riješiti i omogućuje vizualiziranje rada kôda.

Predavačima se predlaže da učine sljedeće u prvoj lekciji o funkcijama.

  1. Prvo se usredotočite na demonstriranje. Učenici uglavnom gledaju i slušaju. (Objašnjenje početnog kôda / Izazov 1)
  2. Nastavnik nastavlja izvoditi veći dio lekcije dok učenik pomaže. Nastavnik daje povratnu informaciju o pomoći. (Izazov 2 − Samostalna vježba)

Za lekciju dva, 'FUNKCIJE ZA DIGITALNOG LJUBIMCA', predavači zatim mogu ili ponoviti gore navedeno ili polako omogućiti veću odgovornost učenicima.

Naravno, to će ovisiti o učenicima, ali takvo organiziranje učenja može olakšati razumijevanje tih pojmova.

Naše micro:bit lekcije prilagođene su za primjenu znanja dobivenih iz Code.org CS Fundamentals (Code.org osnove računalne znanosti). Prije nego što učenici počnu s ovom lekcijom, potičemo ih da, kao preduvjet, prvo završe sve gradivo iz Osnova računalne znanosti. Učenici bi trebali biti upoznati s funkcijama iz Code.org osnova računalne znanosti.

Osnova

Učenicima izrazito preporučujemo da prvo završe sljedeće:

Nastavniku se izrazito preporuča da pročita donji tekst i završi sljedeće:

Vodič za nastavnike

Otvorite

Aktivnost

Ono što će vam trebati

  • 1 − micro:bit
  • 1 − USB kabel
  • 1 − pakiranje AAA baterija (nije obvezatno)
  • 2 − AAA baterije (nije obvezatno)

Dokumentacija


function doSomething()  {
    basic.showString("Hello!")
}

doSomething()
            

function

Funkcija ti omogućuje da kreiraš dio kôda koji možeš ponovno upotrijebiti u programu.

basic.showIcon(IconNames.Heart)

showIcon

Prikazuje odabranu ikonu na LED zaslonu


input.onGesture(Gesture.Shake, () => {

})
            

onGesture

Pokreni upravljača događaja 'handler' (dio programa koji će se pokrenuti kada se nešto dogodi). Ovaj upravljač (handler) radi kada napraviš neku gestu (na primjer, kada protreseš micro:bit).


input.onButtonPressed(Button.A, () => {

})
            

onButtonPressed

Pokreni stanje 'handler' (dio programa koji će se pokrenuti kada se nešto dogodi, npr. kada je pritisnuta tipka)

4 koraka

Vodič za vježbu

Za micro:bit ćemo napraviti online upute ili kôd. Potom, idi na: makecode.microbit.org

let KeepRunning = false
let KilometersRan = 0
let XRunningPosition = 0
let YRunningPosition = 0
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 0
    KeepRunning = true
    XRunningPosition = 0
    YRunningPosition = 0
    for (let YRunningPosition = 0; YRunningPosition <= 5; YRunningPosition++) {
        for (let XRunningPosition = 0; XRunningPosition <= 5; XRunningPosition++) {
            led.plot(XRunningPosition, YRunningPosition)
            led.unplot(XRunningPosition - 1, YRunningPosition - 1)
            basic.pause(70)
        }
    }
}
input.onButtonPressed(Button.B, () => {
    MagicUsedToConjure()
})
function Object_Your_Superhero_Can_Conjure()  {

}
function MagicUsedToConjure()  {
    for (let index = 0; index <= 4; index++) {
        Object_Your_Superhero_Can_Conjure()
        basic.clearScreen()
        basic.pause(150)
    }
}

Ovaj kôd poziva neke prilično složene funkcije (Run_FasterThan_A_Speeding_Bullet, Magic-Used-To-Conjure), ali pojedinosti o tome kako te dvije funkcije rade nisu zapravo važne za ovu lekciju. Postavljanje poziva na te funkcije je ključ ove lekcije. Gdje i kako pozivaš ove funkcije? Gdje bi trebali početi određeni blokovi kôda?

Namjera je ove lekcije također i pokazati primjerom kako funkcije mogu pomoći u organiziranju problema s kodiranjem.

Za ovu ćemo lekciju to vidjeti na primjeru superjunaka.

Pritisak na A poziva našu funkciju Run_FasterThan_A_Speeding_Bullet function. Ovo pokazuje LED diodama da "trče preko ekrana". Naš se junak stvarno može micati.

Pritisak na B i protresanje micro:bita omogućit će superjunaku da ima druge super moći. To je ono što treba pomoći učenicima da razviju u izazovima. Pritisak na B omogućuje da superjunak dozove ili stvori objekt. To bi trebala biti treperava ikona ili slika prikazana 'show' LED diodama ili 'show' ikonom. Zadatak je da učenici odrede što superjunak može dozvati i također trebaju smisliti priču koja govori o tome zašto bi se superjunak trebao koristiti ovom sposobnošću. Izazov 'on shake' je sličan.

Gotov kôd je dostupan ovdje.

Jednostavni izazovi s funkcijom

Izazov 1

Možeš li učiniti to da superjunak dozove neki predmet? Izmisli priču povezanu s ovom idejom.

Trik: Postavi nešto u funkciju Object_Your_Superhero_Can_Conjure. Pokaži što se može proizvesti takvom čarolijom.

Pogledaj kôd

Primjer − Koristio sam blok ikone 'show ghost'. Moj superjunak može dozvati duhove i uplašiti ljude. To je zabavno u dizalima.

let YRunningPosition = 0
let XRunningPosition = 0
let KeepRunning = false
let KilometersRan = 0
input.onButtonPressed(Button.B, () => {
    MagicUsedToConjure()
})
function MagicUsedToConjure()  {
    for (let index = 0; index <= 4; index++) {
        Object_Your_Superhero_Can_Conjure()
        basic.clearScreen()
        basic.pause(150)
    }
}
function Object_Your_Superhero_Can_Conjure()  {
    basic.showIcon(IconNames.Ghost)
}
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 0
    KeepRunning = true
    XRunningPosition = 0
    YRunningPosition = 0
    for (let YRunningPosition2 = 0; YRunningPosition2 <= 5; YRunningPosition2++) {
        for (let XRunningPosition2 = 0; XRunningPosition2 <= 5; XRunningPosition2++) {
            led.plot(XRunningPosition2, YRunningPosition2)
            led.unplot(XRunningPosition2 - 1, YRunningPosition2 - 1)
            basic.pause(70)
        }
    }
}
input.onGesture(Gesture.Shake, () => {

})

Gotov kôd je dostupan ovdje

Izazov 2

Možeš li učiniti da superjunak napravi nešto drugo kada protresemo micro:bit? Izmisli priču povezanu s tom idejom.

Pogledaj kôd

Primjer − Odgovori će varirati... Primjer je da micro:bit pokazuje ikonu iznenađenja. Junak je iznenađen kada bilo tko protrese micro:bit.

let YRunningPosition = 0
let XRunningPosition = 0
let KeepRunning = false
let KilometersRan = 0
input.onButtonPressed(Button.B, () => {
    MagicUsedToConjure()
})
function MagicUsedToConjure()  {
    for (let index = 0; index <= 4; index++) {
        Object_Your_Superhero_Can_Conjure()
        basic.clearScreen()
        basic.pause(150)
    }
}
function Object_Your_Superhero_Can_Conjure()  {
    basic.showIcon(IconNames.Ghost)
}
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 0
    KeepRunning = true
    XRunningPosition = 0
    YRunningPosition = 0
    for (let YRunningPosition2 = 0; YRunningPosition2 <= 5; YRunningPosition2++) {
        for (let XRunningPosition2 = 0; XRunningPosition2 <= 5; XRunningPosition2++) {
            led.plot(XRunningPosition2, YRunningPosition2)
            led.unplot(XRunningPosition2 - 1, YRunningPosition2 - 1)
            basic.pause(70)
        }
    }
}
input.onGesture(Gesture.Shake, () => {
    basic.showIcon(IconNames.Surprised)
})

Primjer kôda je dostupan ovdje

Samostalna vježba

Napravi svog vlastitog micro:bit superjunaka mijenjajući postojeće blokove funkcija i upravljač događajima 'handler'. Tvoj superjunak bi trebao proizvesti 3 nove super moći. Promjenom ikona ili LED dioda može se kreirati novi superjunak. Budi spreman ispričati priču o novom junaku i o tome zašto izvodi radnje koje si odabrao.

Početni kôd se može naći ovdje.

Kviz

Posluži se ovim pitanjima kako bi razmotrio aktivnost i izazove.

Pitanje 1

Što je jedna od mogućih prednosti upotrebe funkcija?

Prikaži odgovor

Bilo koji od ovih odgovora je prihvatljiv

  1. Funkcije nam omogućuju ponavljanje kôda bez ponovnog unosa pa je kôd manji.
  2. Trebamo li napraviti izmjene, moramo samo promijeniti naš kôd na jednom mjestu.
  3. Funkcije nam omogućuju bolju organizaciju našeg kôda.

Pitanje 2

Što je stanje koje pokreće/poziva funkciju u ovom kôdu?

Prikaži odgovor
on shake
on button A pressed
on button B pressed

Pitanje 3

Zamisli nešto za što bi se mogao koristiti koncept funkcija (razdvajanje ponavljajućih radnji u dijelove koji se mogu ponovno upotrijebiti) i navedi radnje koje možeš postaviti u funkcije. Primjer može biti igraća konzola.

Prikaži odgovor
Game Console Functions
Start Game
Show Menu
Save Game
etc

Drugi primjer može biti izrada korneta za sladoled.

Making Ice Cream Cone Functions
Choose Flavor
Grab Cone
Scoop Ice Cream
Put Scoop on Cone
EAT!!!