Programazioaren oinarriak (IV): Bloke berriak sortu (funtzioak)

Iametza
2019-06-18
26
EGINGARRI
9429
BISTARATZE

Snap-en zerbait egiten duten aginduen multzoei blokeak deitzen zaie. Blokeek balioak jaso ditzakete edo ez. Jasotako balioen arabera aldatzen da egiten dutena. Kodea berrerabiltzeko aukera ematen dute, errepikapenak saihestuz. Ariketa batzuekin errazago ikusiko dugu nola erabiltzen diren.

Karratu bat marraztu Snap4Arduinon

Lehenik aginduak pausoz pauso emanez marraztuko dugu karratu bat. Hemen ikus dezakezue horretarako programa:

Erabilitako blokeen azalpena

“bandera klik egitean” blokeak gure programak noiz hasi behar duen adierazten du.

“Kontrola” atalean badaude programa hasteko beste aukera batzuk ere, adibidez, “tekla sakatzean”.

Horrelako blokeei gertaerak deitzen zaie. Gertaera horiei lotutako kodea zerbait gertatzen denean exekutatzen da, adibidez, kasu honetan bandera edo tekla bat sakatzean.

“garbitu” blokeak aurretik marraztuta zegoena garbitzen du.

“arkatza behera” blokeak marrazten hasi nahi dugula adierazten du. Momenturen batean “arkatza gora” erabiliko bagenu marrazteari utziko lioke.

“mugitu x pauso” blokeak kurtsorea x pauso mugitzen du.

“biratu x gradu erlojuaren noranzkoan” blokeak kurtsorea x gradu biratzen du.

“Itxaron 1 segundo blokeak” sartu ditugu tartean, bestela oso azkar marrazten du eta zaila zertan ari den ikustea.

Hau da emaitza:

Karratu bat marraztu begizta bat erabiliz

Baina "Programazioaren oinarriak (II): aldagaiak eta begiztak" unitatean ikusi dugun bezala badago programa hori idazteko modu hobe eta sinpleago bat.

Agindu segida berdina 4 aldiz errepikatu dugu: mugitu, biratu eta itxaron.

Begizta bat erabiliz programa hori modu laburrago batean idatz dezakegu:

 

Edozein poligono erregular marraztu

Programa era txukunago eta laburrago batean idazteaz gain orokortu egin dugu eta berrerabilgarri bihurtu. Errepikapen kopurua eta angelua aldatuz edozein poligono erregular marraztu dezakegu.

Bira osoa 360 gradu dira, marraztu nahi dugun irudiaren alde kopuruarekin zatituta errepikapen bakoitzean zenbat gradu biratu behar dugun jakin dezakegu.

 

Ze poligono?

Zenbat alde ditu?

Zenbat aldiz errepikatu?

Zenbat gradu biratu?

Triangelu aldekidea

3

3

360 / 3 = 120

Karratua

4

4

360 / 4 = 90

Pentagono erregularra

5

5

360 / 5 = 72

Hexagono erregularra

6

6

360 / 6 = 60

Orokorrean

n

n

360 / n

 

Egin proba batzuk, nahi dituzuen balioak erabiliz eta ikusi ze irudi marrazten duen.

Kuriositate bezala, alde kopurua handitzen infinituraino jarraituko bagenu zirkulu bat lortuko genuke. Errealitatean ezin dugu infinitu aldeko irudirik sortu baina probatu balio hauekin, ea zer gertatzen den:

Hasieran 2 bloke berri sartu dizkiogu, kurtsorea hasierako posizioan jartzeko:

“joan x: 0 y: 0”: Kurtsorea 0,0 puntura, hau da, erdiko puntura eramaten du.

“apuntatu norabidea: 0”: Kurtsorea goruntz begira jartzen du.

Hortik aurrerakoa aurreko adibideko kode bera da, baina balioak aldatuta:

“errepikatu 60 aldiz”: 60 aldeko poligono bat marraztuko dugu.

“mugitu 5 pauso”: Pauso kopurua txikiagotu dugu, bestela laukitik aterako bailitzateke.

“biratu 6 gradu”: 360 gradu / 60 alde = 6 gradu.

“itxaron 0 segundo”: Errepikapen asko direnez ez dugu itxaroterik nahi, bestela oso luze joko luke.

Hau da emaitza:

Edozein pligono erregular marrazten duen bloke berri bat sortu

Snap-ek norbere blokeak modu erraz batean sortzeko aukera ematen du. Poligonoak marrazteko sortu dugun kodearekin bloke berri bat sortuko dugu. Bloke berri honek 4 balio jasoko ditu eta balio horien araberako poligono bat marraztuko du.

Blokeek jasotzen dituzten aldagai horiek parametro deitzen dira eta balio lehenetsiak izan ditzakete. Gure kasuan karratua marrazteko erabilitako balioak erabiliko ditugu lehenetsi bezala.

Hauek dira blokeak espero dituen parametroak:

  • Poligonoak zenbat alde eduki behar dituen. Balio lehenetsia: 4.

  • Zenbat itxaro behar duen errepikapen bakoitzean. Balio lehenetsia: 1.

  • Errepikapen bakoitzean zenbat pauso mugitu behar duen. Balio lehenetsia: 100.

Bloke hori sortzeko pausoak:

  • 1

    “Arkatza” atalaren barruan “Sortu blokea” botoia sakatu. Kasu honetan atal egokiena hori da, baina edozein ataletan sortu daitezke bloke berriak.

  • 2

    Bloke berriari izena jarri behar diogu: “poligonoa”. Blokeak egiten duena deskribatzen duen izena jartzea komeni da.

  • 3

    Ados botoia sakatzean “Bloke editorea agertuko zaigu”. Lehenik parametroak gehituko dizkiogu, hau da, blokeak hartuko dituen balioak: alde kopurua, alde bakoitzaren pauso kopurua eta alde bakoitzaren ondoren zenbat itxaron behar duen. Horretarako sakatu poligonoa hitzaren eskuinaldean dagoen + ikur txikia.

  • 4

    Parametroaren izena idatzi, adibidez, “aldeak”. Gezitxoa sakatuz balio lehenetsia ezarri dezakegu, aldeen kasuan 4.

  • 5

    Ados sakatzean poligonoaren ondoan sortu berri dugun parametroa agertuko da.

  • 6

    Berdin egingo dugu beste 2 parametroekin:

    • “pausoak”. Balio lehenetsia 100.

    • “itxaron”. Balio lehenetsia: 1.

  • 7

    Aurreko ariketako blokeak gehituko ditugu Bloke editorean. Ondoren, balio zehatzen ordez parametroak erabiliko ditugu, edozein poligono marraztu ahal izateko. Horretarako dagokion hutsunera arrastatu eta jaregin behar dira sortu ditugun aldeak, pausoak eta itxaron parametroak (ikusi irudia):

    • errepikatu (aldeak) aldiz
    • mugitu (pausoak) pauso
    • itxaron (itxaron) segundo
  • 8

    Biraketa angeluaren kasuan 360 / aldeak jarriko dugu, kasu bakoitzean behar duen angelua kalkula dezan.

    Blokeak jasotzen dituen balioak izenez erabil ditzakegu orain. Adibidez, “errepikatu x aldiz” blokeari ez diogu zuzenean balio bat jartzen, poligonoa blokeak jasotako parametroa baizik. Berdin “mugitu x pauso” eta “itxaron x segundo” blokeetan.

    Orain arte biratu beharreko angelua eskuz kalkulatu dugu baina Eragiketak atalean zatiketak egiten dituen bloke bat dago. 360 zati emandako alde kopurua egingo du.

  • 9

    Amaitzeko Ados sakatuko dugu. Sortu dugun blokea gainerakoekin batera agertuko zaigu.

  • 10

    Sortu dugun bloke berri hau beste blokeak bezala erabil dezakegu.

    Saiatu poligono desberdinak marrazten balioak aldatuz. Adibidez, hexagono bat sortzeko:

    Hauxe da emaitza:

2019-06-18