RiA - Research in Action, un'idea per l'alternanza scuola lavoro
(Liceo scientifico G.B. Grassi di Latina)
Blockly, A JavaScript library for building visual programming editors.
...
...
JavaScript
Python
PHP
Lua
Dart
XML
1011011231194503.16410501100110011abc{textVariable}abc{textVariable}{textVariable}abcabcabcabc5{listVariable}{listVariable}{listVariable}{listVariable},100500#ff0000#3333ff0.5MatriceInTestoConverte una matrice in testo. La matrice è una lista di righe.
Parametri:
m, la matrice da convertire in testo
Valore restituito:
una stringa di testo del tipo [a11, a12, ...][a21, a22, ...] ...
strtmpi110m1strtmpstrtmp[GETFROM_STARTmi]strtmpElementoMatriceAccede all'elemento specificato della matrice.
Parametri:
m, la matrice (implementata come una lista di righe)
x, la colonna dell'elemento da recuperare
y, la riga dell'elemento
Valore resituito:
un numero (intero) contenuto nella matrice alla riga y e colonna x se l'elemento appartiene alla matrice, inf in caso contrario
ORLTEx0GTxmINFINITYORLTEy0GTxmINFINITYrowGETFROM_STARTmyGETFROM_STARTrowxImpostaElementoMatriceImposta il valore dell'elemento specificato della matrice.
Parametri:
m, la matrice (implementata come una lista di righe)
x, la colonna dell'elemento da impostare
y, la riga dell'elemento da impostare
rowGETFROM_STARTmySETFROM_STARTrowxvaloreRigheMatriceRestituisce il numero di righe di una matrice (la matrice è implementata come lista di righe)
Parametri:
m, la matrice
Valore restituito:
il numero di righe
mColonneMatriceRestituisce il numero di colonne di una matrice (la matrice è implementata come lista di righe)
Parametri:
m, la matrice
Valore restituito:
il numero di colonne
righeGETFIRSTmrigheGaussianaCalcola il valore di una gaussiana a due variabili (x, y). Usa le variabili globali mux, muy (valori attesi lungo l'asse x e lungo l'asse y), sigmax, sigmay (varianza lungo l'asse x e lungo l'asse y).
Parametri:
x, y: coordinate del punto del piano (x,y) in cui calcolare il valore della gaussiana
Valore resituito::
il valore della funzione in (x, y)
sigmaquadroADD1POWER0sigmay21POWER0sigmax2aDIVIDE11ROOT9MULTIPLY1MULTIPLY21PI1sigmaquadroesponenteDIVIDE1ADD1POWER1MINUS1x1mux21POWER1MINUS1y1muy21MULTIPLY21sigmaquadroADD1a1EXP9MULTIPLY-11esponenteGaussianaErroreCalcola il valore di una gaussiana disturbata da un errore. Se g(x,y) è il valore della gaussiana nel punto (x, y), il nuovo valore è calcolato come g(x, y) + random * noisemax * sqrt(g(x,y)). Usa la variabile globale noisemax che indica l'errore massimo e la variabile globale scala che indica la scala della funzione. Il valore calcolato è poi moltiplicato per il fattore di scala.
Parametri:
x, y: coordinate del punto in cui calcolare la funzione
Valore restituito:
il valore della funzione in (x, y) con errore, arrotondato all'intero più vicino
gaussxyerroreMULTIPLY1MULTIPLY11noisemax1ROOT9gaussROUND3.1MULTIPLY1ADD1gauss1errore1scalaMatriceEsempio5x5Crea una matrice di test (la stessa che è nel fascicolo). La matrice è implementata come una lista di righe, ogni riga è di 5 elementi, il numero delle righe è lo stesso delle colonne.
Parametri:
....
Valore restituito:
una lista contenente la matrice
mINSERTLASTmSPLIT10,11,11,5,3,INSERTLASTmSPLIT9,15,12,7,4,INSERTLASTmSPLIT10,13,10,9,4,INSERTLASTmSPLIT8,7,8,6,3,INSERTLASTmSPLIT4,5,6,4,5,mMatriceEsempio21x21Describe this function...mINSERTLASTmSPLIT24,25,46,58,115,52,148,165,163,152,252,259,236,197,79,185,156,82,37,31,25,INSERTLASTmSPLIT39,81,66,114,99,71,441,518,165,183,770,351,509,357,299,175,108,53,56,37,18,INSERTLASTmSPLIT16,60,75,162,372,403,718,791,953,1199,1548,1005,135,733,463,504,173,219,144,30,57,INSERTLASTmSPLIT62,122,173,342,381,744,755,1626,614,2076,1715,1522,1519,790,783,693,527,248,111,77,43,INSERTLASTmSPLIT25,117,365,672,506,1439,463,2016,3468,4113,3841,2981,3834,2661,1006,550,838,472,232,136,86,INSERTLASTmSPLIT133,164,236,704,811,2223,3020,5045,6666,8795,6824,5943,6024,4693,2050,1438,969,691,377,239,179,INSERTLASTmSPLIT177,379,808,477,1110,2609,4174,7612,12284,10651,9544,11267,5470,7321,4202,3755,1716,748,499,240,154,INSERTLASTmSPLIT128,332,667,1195,1258,3311,7718,10905,2897,26827,13027,21151,13172,2041,4775,5404,2466,955,1006,575,97,INSERTLASTmSPLIT316,507,1119,1769,2851,4499,7072,11173,20017,41179,44168,41586,34849,10085,9310,6038,3464,1694,616,310,231,INSERTLASTmSPLIT284,420,773,2088,4256,9935,7930,21471,28945,58317,101535,100015,32812,16648,17829,5920,4966,1124,1055,443,124,INSERTLASTmSPLIT411,290,1182,1664,4909,4589,13079,17469,57501,93548,102929,97871,14356,38568,11342,9181,3184,2352,773,858,322,INSERTLASTmSPLIT271,296,1382,2543,2914,2222,10441,6106,41400,66570,150357,53412,25296,32648,19301,9393,4433,1904,456,534,163,INSERTLASTmSPLIT322,390,448,2145,3754,5150,13712,21619,12440,50633,15583,42936,29726,22214,5133,714,4195,1701,898,519,332,INSERTLASTmSPLIT284,390,350,1817,1113,2628,5413,9634,14351,24249,21696,17640,15089,14057,9032,5741,2076,2143,357,554,174,INSERTLASTmSPLIT184,501,607,733,1766,2749,3932,6934,11154,11685,10524,15559,7820,3148,5015,2868,563,998,541,239,182,INSERTLASTmSPLIT111,112,281,478,1134,1191,2075,2867,5071,5665,7753,4343,9812,4163,1787,1218,886,656,280,189,105,INSERTLASTmSPLIT108,218,160,534,927,1715,2024,2560,2232,1637,1312,3970,1885,2940,1914,1556,954,424,268,141,69,INSERTLASTmSPLIT105,156,135,320,261,532,903,990,1705,2093,2671,2056,462,838,486,774,443,358,166,57,76,INSERTLASTmSPLIT48,63,55,235,118,473,486,577,372,1350,1103,1442,964,674,787,359,235,252,144,69,35,INSERTLASTmSPLIT21,46,130,122,188,160,119,396,433,676,617,619,396,305,533,358,121,96,59,48,31,INSERTLASTmSPLIT19,33,37,76,97,108,133,163,299,443,283,101,312,250,138,110,101,52,56,26,19,mCreaMatriceTestCostruisce una matrice in cui nella cella (riga, colonna) è il valore della gaussiana (disturbata dall'errore) calcolata nel punto (colonna, riga). La matrice è implementata come lista di righe, ogni riga è una lista di celle.
Parametri:
righe, colonne: il numero di righe e il numero di colonne della matrice
Valore restituito:
la matrice
mi110righe1rowj110colonne1INSERTLASTrowjiINSERTLASTmrowmInizializzazioneParametriInizializza le variabili globali.
Parametri:
mu_x, mu_y: valori attesi lungo l'asse x e lungo l'asse y
sigma_x, sigma_y: varianza lungo l'asse x e lungo l'asse y
noise_max: errore massimo nella matrice gaussiana con errore
scala_gaussiana: fattore di scala della gaussiana con errore
Valore restituito:
nessuno
righenumero_righecolonnenumero_colonnemuxmu_xmuymu_ysigmaxsigma_xsigmayMULTIPLY0.31sigma_ynoisemaxnoise_maxscalascala_gaussianaVicinaMaggioreRicava gli indici dell'elemento "vicino" a quello specificato a cui corrisponde il valore più grande. Gli elementi sono controllati uno alla volta in senso orario, a partire da quello in alto a sinistra.
Usa: ElementoMatrice()
Parametri:
m, una matrice (implementata come lista di righe)
x, la colonna dell'elemento centrale
y, la riga dello stesso elemento
righemcolonnemmaxMULTIPLY-11INFINITYElemento in alto a sinistraANDGTx1GTy1GTROUND3.1mMINUS1x1MINUS1y1maxx_mMINUS1x1y_mMINUS1y1maxmx_my_mElemento in alto stessa colonnaGTy1GTROUND3.1mxMINUS1y1maxx_mxy_mMINUS1y1maxmx_my_mElemento in alto a destraANDLTxcolonneGTy1GTROUND3.1mADD1x1MINUS1y1maxx_mADD1x1y_mMINUS1y1maxmx_my_mElemento a destra stessa rigaLTxcolonneGTROUND3.1mADD1x1ymaxx_mADD1x1y_mymaxmx_my_mElemento in basso a destraANDLTxcolonneLTyrigheGTROUND3.1mADD1x1ADD1y1maxx_mADD1x1y_mADD1y1maxmx_my_mElemento in basso stessa colonnaLTyrigheGTROUND3.1mxADD1y1maxx_mxy_mADD1y1maxmx_my_mElemento in basso a sinistraANDGTx1LTyrigheGTROUND3.1mMINUS1x1ADD1y1maxx_mMINUS1x1y_mADD1y1maxmx_my_mElemento a sinistra stessa rigaGTx1GTROUND3.1mMINUS1x1ymaxx_mMINUS1x1y_mymaxmx_my_mx_my_mAllineamentoA partire da una caselle specifica della matrice, si sposta fino a raggiungere la casella con il valore più alto. Si suppone che la distribuzione dei valori sia "normale" e che quindi esista un solo massimo. La matrice è implementata come una lista di righe.
Usa: ElementoMatrice(), VicinaMaggiore()
Parametri:
m, la matrice
x_0, y_0, colonna e riga della casella di partenza
Valore restituito:
una lista di caselle della matrice, il percorso dalla casella di partenza a quella contenente il massimo, ogni punto è una lista del tipo (colonna, riga)
xx_0yy_0tracciaINSERTFIRSTtracciax_0y_0WHILETRUEpuntomxyx_mGETFIRSTpuntoy_mGETLASTpuntoSe il valore del massimo "vicino" è inferiore al valore della casella attuale, quella attuale contiene il massimo: si esce dalla procedura.LTEROUND3.1mx_my_mROUND3.1mxyBREAKSe la riga attuale è uguale alla riga del nuovo massimo oppure la colonna attuale è uguale alla colonna del nuovo massimo, ci si sposta con un solo passo in una casella "adiacente".
Altrimenti ci si sposta con due passi in una casella "diagonale".
OREQxx_mEQyy_mxx_myy_mINSERTLASTLa casella in cui ci siamo spostati è aggiunta alla lista che contiene il percorso.
In questo punto andrebbero inserite le istruzioni per muovere il telescopio da (x, y) a (x_m, y_m).
tracciaxyxADD1x1MINUS1x_m1xINSERTLASTLa casella in cui ci siamo spostati è aggiunta alla lista che contiene il percorso.
In questo punto andrebbero inserite le istruzioni per muovere il telescopio da (x, y) alla casella adiacente al nuovo massimo che ha la stessa riga di quella attuale.
tracciaxyyADD1y1MINUS1y_m1yINSERTLASTLa casella in cui ci siamo spostati è aggiunta alla lista che contiene il percorso.
In questo punto andrebbero inserite le istruzioni per muovere il telescopio nella casella (x_m, y_m).
tracciaxytracciaPercorsoInTestoTrasforma la lista che contiene le caselle attraversate (da quella di partenza a quella di arrivo incluse), la lista è una lista di caselle, ogni casella è una lista del tipo (colonna, riga).
Parametri:
percorso, una lista di caselle
Valore restituito:
una stringa di testo del tipo "->(x_0,y_0)->...->(x_m,y_m)"
strtmpWHILEpercorsopunto(GET_REMOVEFIRSTpercorso)strtmpstrtmp->puntostrtmp