INCONTRO DI. (Micro) Robotica. a cura di Giuseppe Callegarin con il sostegno dell IRRE del Veneto

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INCONTRO DI. (Micro) Robotica. a cura di Giuseppe Callegarin con il sostegno dell IRRE del Veneto"

Transcript

1 INCONTRO DI (Micro) Robotica a cura di Giuseppe Callegarin con il sostegno dell IRRE del Veneto ITIS C. Zuccante - Mestre 23 Novembre Struttura dell incontro 1) Presentazioni di concetti, esempi, paradigmi, strumenti, 2) Dimostrazioni (con gli studenti volontari) 3) Questioni didattiche 2 1

2 INTRODUZIONE 3 La Robotica nella Scuola La Robotica rappresenta un settore di grande importanza sia a livello scientifico che economico e culturale. Vengono assemblate competenze e tecnologie derivate da settori diversi : meccanica, elettronica, informatica, Intelligenza Artificiale, automatica, sistemistica, fisica, filosofia, psicologia, etologia, ecc.. La sua applicazione alla realtà scolastica consente di sviluppare negli studenti un atteggiamento nuovo ed attivo verso le tecnologie : l'interazione con una macchina "intelligente" e la possibilità di farla funzionare, rappresenta uno stimolo motivazionale all'apprendimento. Fonte: Scuola di Robotica 4 2

3 Definizioni tipiche di ROBOT (da dizionario ) 1) Dispositivo meccanico, a volte con sembianze umane, capace di eseguire una varietà di compiti complessi su comando o da programma. 2) Macchina che agisce in modo autonomo o da controllo remoto. 5 Cos è un ROBOT? Un ROBOT è un agente artificiale che interagisce con un ambiente (spazio a dim.) desiderata comportamento (programma) attuatori sensori 6 3

4 Componenti di ogni robot SENSORI : input dall ambiente ATTUATORI : output sull ambiente (almeno uno di tipo meccanico, altrimenti ) LOGICA PROGRAMMABILE (struttura di interpretazione per un LINGUAGGIO) Mezzo di comunicazione per i programmi Console di controllo (avvio, arresto, ecc.) eventualmente remota 7 Generazioni di robot 1) 70 : fissi, non programmabili, senza sensori. 2) 80 : con sensori e programmabili. 3) 90 : anche mobili (autonomi o ad insetto ). programmazione sofisticata, riconoscimento/sintesi della voce,... 4) 2000 : riconoscimento immagini, autoriproduzione, miniaturizzazione (nanorobots), 8 4

5 ROBOT INDUSTRIALI 1) 70 : fissi, non programmabili, senza sensori. 2) 80 : con sensori e programmabili. 3) 90 : anche mobili (autonomi o ad insetto ). programmazione sofisticata, riconoscimento/sintesi della voce,... 4) 2000 : riconoscimento immagini, autoriproduzione, miniaturizzazione (nanorobots), 9 Un esempio di robot avanzato (filmato) 10 5

6 Occorre intendersi ROBOTICA? MICROROBOTICA? NANOROBOTICA? ROBOTICA INDUSTRIALE? 11 Cos è la MICROROBOTICA? (Museo delle Scienze) La microrobotica è un ramo della robotica che si occupa delle applicazioni ludiche, educative e scientifiche di robot più piccoli per dimensione e costo rispetto ai robot industriali o degli istituti di ricerca. 12 6

7 Un esempio classico: l inseguitore di linea (filmato) 13 L inseguitore di linea: la strategia Per sempre Luce := get(sensore_luce) se Luce <= BiancoPavimento + SENSITIVITA` allora GiraDestra() altrimse Luce >= NeroLinea - SENSITIVITA` allora GiraSinistra() altrim VaiAvantiDritto() 14 7

8 Microrobotica: quando, come e dove è nata? 1) Idea dei ROBOT giocattolo fai da te MIT (Boston) 80, S. Papert, F. Martin, LEGO 2) Hobby per adulti con competenze di informatica ed elettronica anni 90, soprattutto negli USA, grazie ai progressi dei microcontrollori 15 ROBOTICA ALLO ZUCCANTE 16 8

9 ROBOTICA allo Zuccante (Prima fase - primi anni 80 : robot industriali) Manipolatore IBM impiegato in piccole catene di montaggio e/o di trasporto automatico 17 Cos è un ROBOT INDUSTRIALE? Un ROBOT è un manipolatore multifunzione ri-programmabile, progettato per muovere materiali, parti, strumenti o dispositivi speciali mediante movimenti programmati finalizzati all esecuzione di svariati compiti Robot Institute of America,

10 Esempio di codice anni 80 (AML) MAIN: SUBR; PAYLOAD (2); PMOVE (PT1); DELAY (3); PMOVE (PT2); GRASP; DELAY (2); RELEASE; DELAY (1); END -- imposta la velocità -- muoviti sul primo punto -- aspetta 3 secondi -- muoviti sul secondo punto -- chiudi la mano -- aspetta 2 secondi -- apri la mano -- aspetta un secondo 19 ROBOTICA allo Zuccante (Seconda fase : anni 80-90) Epoca dei piccoli ed economici bracci meccanici. Programmazione in Pascal, C,... SVANTAGGI: poco precisi e inaffidabili legati con dei cavi al computer (periferica di un PC) 20 10

11 ROBOTICA allo Zuccante (terza fase: la Microrobotica ) uso dei microcontrollori autonomia di movimento scopi ludici e/o dimostrativi programmazione con linguaggi concorrenti 21 Due esempi ( Area di Progetto - Terza ISF /2002) Conta piazzole (filmato) Torre di Hanoi (filmato) 22 11

12 La Tartaruga da pavimento (robot De Agostini modificato) 23 GIOCHI PER GRANDI 24 12

13 Creazioni (LEGO) 25 Altre creazioni (LEGO)

14 Non solo LEGO Quale microrobot? Mattoncino LEGO (mindstorms.lego.com) Robot De Agostini-Parallax (robot.deagostini.it) Robot Parallax (www.parallaxinc.com) Handy cricket (handyboard.com/cricket/) Altri (links in Fai da te (anche con prodotti di recupero) 28 14

15 I linguaggi Linguaggio della CPU (assembler) eventualmente mediante compilazione (C, C++) VANTAGGI : velocità di esecuzione, flessibilità nell uso della memoria e delle altre risorse Linguaggi per un interprete (tipo BASIC, LOGO, Java, RCX bytecode (LEGO),... ) VANTAGGI: 1) riduzione dei tempi di caricamento 2) facilità di programmazione 29 ASPETTI PEDAGOGICI 30 15

16 Robot già costruiti? No, grazie. 31 Fondamenti pedagogici: il costruzionismo (Papert) "I bambini adorano costruire oggetti. Così, mi dissi, scegliamo un set di costruzioni e aggiungiamogli tutto quello che serve per creare dei modelli cibernetici. se desiderano fabbricare un drago o un camion o un letto ribaltabile, devono avere anche quella possibilità. L'unico limite deve essere quello della loro immaginazione e delle loro capacità tecniche. siamo riusciti a costruire computer abbastanza piccoli da poter essere inseriti nei modelli stessi. La differenza è sostanziale; ora l'intelligenza si trova in realtà all'interno del modello non in un computer fuori scala. Inoltre i modelli possono essere autonomi. Possono muoversi a piacimento senza un cordone ombelicale. Tutto insomma appare più reale." (Papert, 1993) 32 16

17 I ROBOT giocattolo fai da te Inventare i propri giocattoli significa: 1) decidere le funzionalità e l estetica 2) progettare la parte meccanica (hardware) 3) progettare la logica di controllo (software) 4) assemblare: reperire e montare i pezzi 5) programmare: codificare e caricare il software 6) verificare le funzionalità ed eventualmente tornare ad un passo precedente 33 Perché a SCUOLA? Perché crea motivazioni allo studio di diverse discipline Perché favorisce l apprendimento cooperativo Perché aiuta a capire limiti e potenzialità del mondo tecnologico che ci circonda Perché fornisce idee per tesine, area di progetto, ecc

18 Quali ordini di scuola? Scuola d infanzia (esperimenti) (?) Scuola elementare Scuola media Scuole con: Informatica/Elettronica/Meccanica (Meccatronica? ) Altre scuole superiori Università (per ricerca e tesi) 35 Prototipi del MIT MIT F. Martin, S. Papert e altri Cricket : 2 motori, 2 sensori, porta infrarossi, dialetto del LOGO Programmable brick: per 3 motori, 6 sensori, infrarossi, vari linguaggi 36 18

19 Il mattoncino programmabile Per introdurre idee della scienza delle costruzioni a studenti delle elementari e superiori abbiamo creato il mattoncino programmabile, una nuova tecnologia, e collaborato con insegnanti al progetto e alla verifica di piani curricolari per introdurre questa tecnologia in classe. In questo modo gli studenti esplorano una varietà di concetti, come l acquisizione tramite sensori, la teoria del controllo e dei sistemi. Fondamentale per il nostro approccio è la convinzione che i bambini imparano più efficacemente quando vengono coinvolti in attività di progetto, costruzione e verifica. Fred G. Martin (MIT Media Laboratory) Far danzare con il LOGO to dance cha-cha-cha go-round end to cha-cha-cha repeat 4 [back-and-forth] ab, off end to back-and-forth ab, thisway onfor 3 ab, thatway onfor 3 end to go-round a, on thisway b, on thatway beep wait 1 beep wait 1 beep wait 60 ab, off end 38 19

20 Un esperienza in una quarta elementare (2000) (filmato) 39 Quali discipline? non in ordine di importanza (!): INFORMATICA SISTEMI E AUTOMAZIONE ELETTRONICA (e TELECOMUNICAZIONI) EDUCAZIONE TECNOLOGICA MECCANICA MATEMATICA FISICA e altre SCIENZE 40 20

21 INFORMATICA Crea motivazioni per lo studio di: linguaggi formali/interpreti/compilatori programmazione tradizionale nuovi paradigmi di programmazione algoritmi e intelligenza artificiale affidabilità (robustezza) del software 41 Giocare con i linguaggi Compilatore LX? L1 Compilatore LY? L1 Compilatore LZ? L1 Interprete per L1 (in L0) (firmware) 42 21

22 La semi-compilazione programma per il ROBOT (scritto in L2) TRADUTTORE da L2 ad L1 (su PC esterno) NOTA : parte o tutto l interprete potrebbe trovarsi in una ROM all intermo del microcontrollore es. attraverso una porta seriale ROBOT ( macchina L1) RAM libera Interprete per L1 (in RAM ) CPU RAM L0 43 Interpretazione Esempi di linguaggi solitamente interpretati: BASIC, LOGO, Java, RCX bytecode (LEGO), VANTAGGI: 1) tempi di caricamento ridotti 2) facilità di programmazione e debugging 3) assolve anche alle funzioni di Sistema Operativo 44 22

23 SISTEMI E AUTOMAZIONE Crea motivazioni per lo studio di: metodologie di progettazione dei sistemi sistemi di controllo (retroazione, controllo remoto, controllo in tempo reale, ) programmazione concorrente e S.O. sistemi di comunicazione 45 ELETTRONICA Crea motivazioni per lo studio di: tecniche di interfacciamento assemblaggio di componenti elettronici progettazione e studio di sensori e attuatori soluzione ai problemi di risparmio energetico 46 23

24 EDUCAZIONE TECNOLOGICA Crea occasioni per riflettere sulle caratteristiche degli artefatti digitali: flessibilità nel cambio delle funzionalità linguaggi d uso digitali inserimento di intelligenza 47 MECCANICA Crea motivazioni per lo studio di: componenti meccanici e movimento applicazione di schemi di progetto meccanici e pneumatici creazione di nuove soluzioni soddisfacimento di requisiti di affidabilità meccanica (equilibrio, robustezza, ecc. ) 48 24

25 MATEMATICA Crea motivazioni per introdurre/applicare: distinzione analogico/discreto approssimazioni - conversioni virgola fissa e virgola mobile medie pesate, geometria, trigonometria, probabilità,... gradienti, logica formale, logica fuzzy, FISICA e altre SCIENZE Stimolo per: statica, dinamica, cinematica principi fisici di funzionamento dei sensori e degli attuatori acquisizione ed elaborazione anche in tempo reale di dati sperimentali (fisica, chimica on line, biologia,...) 50 25

26 MECCATRONICA? E` lo studio interdisciplinare di: - meccanica - elettronica/elettrotecnica - informatica. Al giorno d oggi sono pochi i prodotti che consistono esclusivamente di meccanismi, circuiti elettrici o pura informazione. 51 DOCUMENTAZIONE disegno (automatico) inglese web fotografia video presentazione 52 26

27 IL MATTONCINO LEGO 53 Il mattoncino LEGO (1998) molto compatto computer integrato della potenza degli anni 70 flessibile e modulare linguaggi per varie esigenze relativamente economico 54 27

28 Struttura logica del mattoncino porta seriale a raggi infrarossi - programmi - messaggi porte IN Macchina RCX (Lego) A B C porte OUT display 55 Procedura di caricamento memoria programmi 56 28

29 RCX : caratteristiche hardware microcontrollore Hitachi H8 con 16K ROM 32 Kb RAM (esterna) infrarossi (2400 bit/sec) 3 unità controllo motori 57 Dettagli strutturali dell RCX Macchina virtuale RCX bytecode (LEGO) Macchina LEGO (livello minimo) da caricare all inizio una volta per tutte fino a che non si cambia il firmware o si scaricano le batterie RAM (32 K) programmi utente 6K Firmware 16K (?) RAM On-chip 16 K ROM CPU interprete RCX bytecode Microcontrollore H

30 RCX: caratteristiche del microcontrollore H8/3297 H8/300 CPU core (8/16 bit) fino a 16 MHz 16-60kBytes ROM or 32 & 60kBytes OTP 512Bytes - 2kBytes SRAM 1 x 16 bit timer 2 x 8-bit timer Watchdog timer 1 x USART 8 x 10-bit A/D converter 51 I/O pins 64 pins SDIP or QFP and 68 pins PLCC packages 59 RCX : caratteristiche software Compilazione da Linguaggi ad alto livello RCX bytecode Interpretazione (firmware) Linguaggio macchina H

31 La memoria RAM (32 Kb) 16 Kb : FIRMWARE cioè l interprete di RCX bytecode (da caricare all inizio una volta per tutte fino a che non si cambia il firmware o si scaricano le batterie) 6 Kb: liberi per i programmi da caricare di volta in volta dettagli tecnici su: 61 I programmi (con interprete RCX bytecode) Fino a 5 programmi. Ogni programma può essere avviato o arrestato. Ogni programma può avere fino a 10 task concorrenti

32 Principali linguaggi per il mattoncino LEGO Linguaggio Visuali (LEGO) Compilatore RCX-LabVIEW? RCX bytecode Compilatore RCX-code? RCX bytecode Testo (Open Source) Compilatore NQC? RCX bytecode Interprete per RCX bytecode ( in assembler H8/300) 63 Gerarchie di macchine (LEGO) RCX-code, LABView, Visual Basic, NQC,... COMPILAZIONE macchina virtuale RCX bytecode interpretazione macchina H8/

33 Il firmware RCX 2.0 (cosa è stato aggiunto...) Arrays Controllo eventi Semafori (access control) Timers ad alta risoluzione 32 variabili locali e 16 globali Display di variabili su LCD Firmware alternativi per RCX pbforth (per la programmazione in FORTH) Lejos (LEGO Java Tiny Virtual Machine) per la programmazione in un sottoinsieme di Java (tanti potrebbero proporne uno) 66 33

34 No firmware Nella RAM viene caricata una sola applicazione compilata in linguaggio H8/300 a cui vengono linkate delle funzioni API e un sistema operativo più o meno sofisticato. LegOS per C/C++ QC (Quite C) con tutti i 32 K liberi (ma no multitasking!) 67 LA PROGRAMMAZIONE (INTRODUZIONE) 68 34

35 Paradigmi di programmazione per robot per regole (se i sensori dicono questo allora fai quello ) imperativo tradizionale (assembler, Basic, C, ecc. ) imperativo concorrente (ad es. con uso di task) programmazione reattiva (1988) design patterns (ad oggetti), programmazione logica, tecniche AI, (molti ci stanno lavorando) 69 Programmazione per regole Si danno un insieme di regole che determinano il comportamento del robot. se il sensore 1 tocca allora accendi il motore A per un secondo e ferma il motore B se la temperatura è troppo bassa allora accendi lo scaldino Paradigma apprezzato dai non esperti di programmazione 70 35

36 Programmazione imperativa programma <inizializzazioni varie> per sempre esegui istruzione-1 istruzione-2... istruzione-n 71 Una soluzione in 4 linguaggi Problema: se si preme spegni il motore RCX-code NQC Visual Basic Robolab (Labview) 72 36

37 Un problema tipo Hello accendere il motore connesso ad A per un secondo 73 Soluzione LabVIEW (con ROBOLAB) 74 37

38 ROBOLAB (Lego) è un ambiente di programmazione compatibile con LABView (National Instruments Corporation) molto noto per la simulazione di circuiti elettronici. E` un LINGUAGGIO VISUALE con: 4 livelli (Pilot) con schemi di programma prefissati (scuole elementari e medie) 4 livelli (Inventor) con schemi liberi 75 Soluzione NQC (Not Quite C) /* accende una lampadina/motore per un secondo */ task main() { On(OUT_A); Wait(100); Off(OUT_A); } 76 38

39 Strumenti: Linguaggio macchina? (assemblatori/compilatori) 1) Cross assemblatore del microcontrollore 2) Cross compilatori C, C++,... VANTAGGI : - velocità di esecuzione - flessibilità nell uso della memoria e delle altre risorse 77 Linguaggio macchina? (un frammento di un esempio in assembler H8) wait_sound: mov.w r7,r6 mov.w mov.w #0x700c,r6 jsr get_sound_queue_length adds #0x2,r7 bne wait_sound jsr clear_display jsr refresh_display jsr power_off jmp power_on 78 39

40 NQC : uno standard di fatto 79 NQC (Not Quite C) (le ragioni di un successo) 1) E` gratis ( open source ) 2) Sfrutta tutte le possibilità del firmware LEGO 3) Facilita chi già programma in C, Java, JavaScript 4) E` il linguaggio più diffuso tra gli appassionati 5) Si applica ad una famiglia di microrobot (Scout, MicroScout, Cybermaster, Code Pilot, RCX) 80 40

41 NQC : struttura di un programma (informale) /* commento bla bla bla */ definizione di costanti (e macro) variabili globali eventuali sottoprogrammi (function, sub, task) task main() { corpo del principale } 81 NQC : il tipo int (unico tipo ammesso) rappresentazione: 16 bit, in complemento a 2, no overflow operazioni aritmetiche unarie : - abs(n) sign(n) operazioni aritmetiche binarie : + - * / % operazioni sui bit : >> << ~ & ^ (xor) confronto: = =! = < > <> <= >= visto come tipo BOOLEANO costanti: true ( valore? 0) e false ( valore? 0) operazioni logiche:! (not) (or) && (and) 82 41

42 NQC : costanti e variabili #define SIZE=100 int a, b=5, c =0; si possono mettere in ogni blocco { } a = SIZE-3; b = a++; a--; // --a b += 3; 83 NQC : gli array int nome[numero-elementi] indici come in C: da 0 a numero-elementi - 1 Limitazioni: per gli array globali ci sono al max 32 elementi in tutto per quelli locali vi sono limitazioni simili gli elementi non possono essere trattati del tutto come variabili 84 42

43 NQC : lettura dai sensori - 1 Prima di chiamare una serie di letture da un sensore occorre configurarlo: SetSensor(SENSOR_x, SENSOR_config) x: config: TOUCH sensore di contatto LIGHT sensore di luce ROTATION sensore di rotazione CELSIUS FAHRENEIT sensore di temperatura PULSE EDGE sensore di contatto (eventi) 85 NQC : lettura dai sensori - 2 Per la lettura dai sensori vi sono 3 macro predefinite: SENSOR_1 SENSOR_2 SENSOR_3 equiv. a SensorValue(0) equiv. a SensorValue(1) equiv. a SensorValue(2) (Nota : tutti i sensori vengono letti automaticamente ogni 3 millisecondi) Esempio: x = SENSOR_1; //legge in x il valore del sens

44 NQC : gli attuatori - 1 Gli attuatori hanno tre nomi simbolici per 3 costanti: OUT_A 1 OUT_B 2 OUT_C 4 Se ne possono indicare anche più di uno alla volta. Esempi: OUT_A + OUT_C OUT_A + OUT_B + OUT_C 87 NQC : gli attuatori - 2 Operazioni essenziali sugli attuatori: SetPower(outputs, livello) livello: N.B. la potenza effettiva dipende dalla carica delle batterie! OnFwd(outputs) OnRev(outputs) Stop(outputs) accende gli outputs avanti accende gli outputs indietro arresta gli outputs 88 44

45 NQC : strutture di controllo - 1 (prese dal C) { istr; istr; istr; } <-- BLOCCO if (cond) istr if (cond) istr else istr while (cond) do istr do istr while (cond) for(istr; cond; istr) istr switch (espr) { case } + break, continue e return 89 NQC : strutture di controllo -2 (non ereditate dal C) until (cond) istr equivalente a: while (!cond) do istr repeat (espr) istr ripeti espr volte l istr specificata 90 45

46 NQC : strutture di controllo -3 (non ereditate dal C) monitor(event-mask) istr [ catch istr ] per la programmazione ad eventi acquire(id-risorsa) istr [ catch istr ] per il controllo della competizione tra task 91 NQC : utilità di uso frequente Wait(centesimiDiSecondo) Watch() ora in minuti Random(N) genera un casuale tra 0 ed N SetRandomSeed(n) imposta il seme ad N SetUserDisplay(n,decimali) PlaySound(numero-suono) PlayTone(frequenza, centesimidisecondo) 92 46

47 NQC : i timer ClearTimer(n) n = 0, 1, 2, 3 int Timer(n) valore del timer (risoluz. 0,1 sec) SetTimer(n, value) int FastTimer(n) valore del timer (risoluz. 0,01 sec) 93 NQC : data logging CreateDatalog(n) crea un datalog per n valori AddToDatalog(x) aggiunge un valore al datalog per scaricare su PC: nqc -datalog > file.txt 94 47

48 NQC : messaggi I messaggi sono dei numeri compresi tra 1 e 255: ClearMessage() svuota il buffer dei messaggi Message() ultimo messaggio inviato (0 se non inviato) SendMessage(n) invia n mod NQC : procedure (chiamate function ) void Nome(parametri) blocco In realtà sono espanse a tempo di compilazione: 1) no ricorsione 2) occupazione duplicata per ogni chiamata parametri: int a, per valore int &b, per indirizzo 96 48

49 un esempio di procedura NQC (legge un intero piccolo da un sensore di contatto) void LEGGI(int &volte){ SetUserDisplay(0,0); SetSensor(SENSOR_1,SENSOR_TOUCH); volte=0; do { ClearTimer(0); until (SENSOR_1==1); //attende la pressione if (Timer(0)<30) {PlaySound(1);} until (SENSOR_1==0); //attende il rilascio volte ++; SetUserDisplay(volte,0); } while (Timer(0)<30); volte --; SetUserDisplay(volte,0); PlaySound(2); } 97 NQC : subroutine sub Nome() blocco Limitazioni: - no parametri - no chiamate annidate (quindi anche no ricorsione) Esempio: sub Beep() repeat (2) {PlayTone(100, 100); Wait(30); } } 98 49

50 NQC : task task NomeTask() blocco Operazioni sui task: start NomeTask stop NomeTask StopAllTasks() Li vedremo meglio più avanti. 99 NQZ

51 I problemi didattici di NQC 1) La sintassi C-like è penalizzante in certi contesti educativi: - è case sensitive - problemi con { } ; - operatori non intuitivi: = = % - può incentivare brutte abitudini di programmazione 2) La diagnostica (errori di compilazione) è in inglese, spesso è generica ( parse error ) o ridondante. 101 Possibile soluzione: NQZ (prof. M. Moschini- 2001/2002 ) Non è case sensitive Viene tradotto in NQC Si possono inserire frammenti di NQC Diagnostica in italiano e più accurata di quella di NQC Compilatore scritto in Java Esiste un file di regole che consentono di cambiare agevolmente sintassi e semantica del linguaggio E` open source

52 Esempio in NQZ (* accende una lampadina/motore per un secondo *) RCXprogram begin on(out_a) wait(100) off(out_a) end Vantaggi: no graffe, no ; no case-sensitive, 103 NQZ viene tradotto in NQC Programma in NQZ Compilatore NQZ? NQC Compilatore NQC? L1 Interprete per L1 (in L0)

53 Altro esempio in NQZ (* equivalente in NQZ del programma in 4 linguaggi *) RCXprogram begin setsensor(sensor_1,sensor_touch) forever if SENSOR_1 = 1 then off(out_a) else on(out_a) (* no case sensitive *) endif endforever end 105 traduzione in NQC /* equivalente in NQZ del programma in 4 linguaggi */ task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); while (true) { if (SENSOR_1==1) { Off(OUT_A); } else { On(OUT_A); } } }

54 un altro esempio in NQZ (* Memorizza nel Datalog NUMCAMPIONI del valore del sensore di rotazione ogni TEMPOCAMP centesimi di secondo *) RCXprogram const NUMCAMPIONI = 100 TEMPOCAMP = 10 (* centesimi di secondo *) var temp,i begin SetSensor(SENSOR_3,SENSOR_ROTATION) CreateDatalog(NUMCAMPIONI) for i:=1 to NUMCAMPIONI do temp:=sensor_3 write temp (* scrive sul display *) AddToDatalog(temp) Wait(TEMPOCAMP) endfor end 107 NQZ è flessibile NQZ è realizzato in modo che possa rappresentare un ampia famiglia di linguaggi. sintassi e semantica sono definibili a piacere solo modificando un file di regole

55 NQZ/L Programma in NQZ/L Compilatore NQZ? NQC Regole per il linguaggio L Compilatore NQC traduzione in RCX bytecode 109 un esempio di regola SINTASSI IstruzPerSempre = <Forever> {Istruzione} <EndForever> < 1 ><while (true) ><}> SEMANTICA (traduzione in NQC) traduzione induttiva di {Istruzione}

56 PROGRAMMAZIONE CONCORRENTE 111 Programmazione a task (esempio di strutturazione) task principale <inizializzazioni varie> avvia task-1 avvia task-2 <altri comandi> => Problemi di competizione/sincronizzazione task-1 task-2 avvia task-4 arresta task-5 task-n

57 Programmazione concorrente i programmi possono risultare più chiari se si individuano diverse funzioni parallele le diverse funzioni possono competere sull uso di risorse comuni del ROBOT (ad es. la porta IR). più robot possono cooperare ad uno scopo comune e necessitano dei momenti di comunicazione e sincronizzazione i robot possono competere sull uso di risorse comuni 113 Programmazione a task task principale <inizializzazioni varie> avvia task-1 avvia task-2 <altri comandi> => Problemi di competizione/sincronizzazione task-1 task-2 avvia task-4 arresta task-5 task-n

58 Un problema semplice 1) fare intermittenza con una luce con periodo 1 sec 2) fare un beep intermittente con periodo 0,6 sec 115 Una possibile soluzione con i task #define RIT1 50 #define RIT2 30 #define TONO 800 task main() { start IntermittenzaLuce; start IntermittenzaSuono; } task IntermittenzaLuce() { while(true) { On(OUT_B); Wait(RIT1); Off(OUT_B);Wait(RIT1); } } task IntermittenzaSuono(){ while(true) { PlayTone(TONO,RIT2); //la chiamata è asincrona Wait(2*RIT2);} }

59 NQC : operazioni sui task start NomeTask stop NomeTask StopAllTasks() SetPriority(numero) 0 = priorità più alta 255 = priorità più bassa Ogni task può accedere all AMBIENTE GLOBALE: variabili, sensori, attuatori, porta seriale, speaker, timers, contatori 117 Risoluzione della competizione (costrutto acquire di NQC ) acquire (numero-risorsa) corpo [ catch handler] Semantica: se numero-risorsa è libera oppure se è occupata da un task con priorità non migliore allora occupala, esegui il corpo e alla fine libera la risorsa [ esegui handler in caso di preemption o di insuccesso] preemption = abbandono prematuro della risorsa

60 Numeri di risorsa (numeri simbolici da 0 a 7 ) ACQUIRE_OUT_A o OUT_A 0 ACQUIRE_OUT_B o OUT_B 1 ACQUIRE_OUT_C o OUT_C 2 ACQUIRE_SOUND 3 ACQUIRE_USER_1 4 ACQUIRE_USER_2 5 ACQUIRE_USER_3 6 ACQUIRE_USER_ Un problema di competizione (un esempio) Problema: fare in modo che i due seguenti task possano svolgere correttamente e all infinito il loro compito: task Accendi: accendere la lampadina (porta B) per un secondo task Spegni: spegnere la lampadina (porta B) per un secondo

61 Soluzione ingenua (e scorretta...) task Accendi() { while(true) { On(OUT_B); Wait(100); } } task Spegni() { while(true) { Off(OUT_B); Wait(100); } } 121 Soluzione meno ingenua (ma sempre scorretta...) task Accendi() { while(true) { acquire(out_b){ On(OUT_B); Wait(100);} } } task Spegni() { while(true) { acquire(out_b){ Off(OUT_B); Wait(100);} } }

62 Ci siamo quasi (occorre modificare le priorità...) task Accendi() { SetPriority(0); while(true) { acquire(out_b){ On(OUT_B); Wait(100);} } } task Spegni() { SetPriority(1) while(true) { acquire(out_b){ Off(OUT_B); Wait(100);} } } non ce la farà mai! 123 Una soluzione corretta task Accendi() { while(true) { if (ta)setpriority(0); else SetPriority(1); acquire(out_b){ On(OUT_B); Wait(100); ta=!ta;}//cambio turno } } task Spegni() { while(true) { if (ta)setpriority(1); else SetPriority(0); acquire(out_b){ Off(OUT_B); Wait(100); ta=!ta;}//cambio turno } } N.B ta è una variabile globale inizializzata a true

63 I messaggi sono dei numeri compresi tra 1 e 255: ClearMessage() Message() Messaggi tra robot (sincronizzazione - RCX) svuota il buffer dei messaggi ultimo messaggio inviato (0 se non inviato) SendMessage(n) invia n mod 255 Protocollo tipico di attesa attiva: ClearMessage(); until(message ()> 0); 125 PROGRAMMAZIONE AD EVENTI

64 Programmazione ad eventi (simile alla programmazione per regole ) 1) Dire quali sono gli eventi che possono accadere 2) Dire cosa fare quando si verifica ciascuno di questi eventi 127 Gli eventi in RCX 2.0 Possono generare eventi (possibili sorgenti ): i sensori i timers i contatori il buffer dei messaggi

65 Tipi di eventi in RCX 2.0 TIPO DI EVENTO DESCRIZIONE SORGENTE EVENT_TYPE_PRESSED off? on solo sensori EVENT_TYPE_RELEASED on? off solo sensori EVENT_TYPE_PULSE off? on? off solo sensori EVENT_TYPE_EDGE off? on oppure on? off solo sensori EVENT_TYPE_FASTCHANGE il valore cambia veloce solo sensori EVENT_TYPE_LOW il valore diventa low tutte EVENT_TYPE_NORMAL il valore diventa normal tutte EVENT_TYPE_HIGH il valore diventa high tutte EVENT_TYPE_CLICK da low ad high a low tutte EVENT_TYPE_DOUBLECLICK due click entro un certo tempo tutte EVENT_TYPE_MESSAGE ricevuto un nuovo messaggio SendMessage() 129 La programmazione (schema tipico in NQC con l istruzione monitor ) SetEvent(1,sorgente-1,tipo-evento-1) SetEvent(2,sorgente-2,tipo-evento-2) sono macro che generano costanti opportune while(true) { monitor (EVENT_MASK(1) EVENT_MASK(2) ) corpo //tipicamente un {Wait(...)} [ catch (mask1)handler-1 se durante l esecuzione del corpo catch (mask2)handler-2 si verifica un evento tra quelli previsti il controllo passa all handler catch (mask-n)handler-n ] corrispondente }

66 Un esempio semplice (accende/spegne una luce tramite pressed/released) task main() { SetEvent(1,SENSOR_2,EVENT_TYPE_PRESSED); SetEvent(2,SENSOR_2,EVENT_TYPE_RELEASED); while (true) { monitor (EVENT_MASK(1) EVENT_MASK(2)) {Wait(100);} //non troppo basso! catch (EVENT_MASK(1)) { On(OUT_B);} catch (EVENT_MASK(2)) { Off(OUT_B);} }//endwhile } 131 Sentire un impulso (accende/spegne dopo un impulso sul sensore) task main() { SetSensor(SENSOR_2,SENSOR_PULSE); SetEvent(1,SENSOR_2,EVENT_TYPE_PULSE); int acceso = false; while (true) { monitor (EVENT_MASK(1)) {Wait(100);} catch { if (!acceso) On(OUT_B); else Off(OUT_B); acceso=!acceso;} }//endwhile }

67 Problema Ragno e Mosca (da risolversi possibilmente con eventi + concorrenza) Gioco del Ragno e della Mosca: Un RAGNO (un robot) si gira intorno e attira su di sé con una melodia una MOSCA (un altro robot). La MOSCA si muove e il ragno resta immobile ad attendere la preda. Ma quando questa, ormai tra le zampe del RAGNO, si accorge dell inganno cerca di allontanarsi quanto basta. 133 Video Ragno e Mosca

68 Esercitazione client/server (eventi + concorrenza) Ciascun client (due robot) può inviare due tipi di messaggi al server (un terzo robot): 1) fai avanzare il motore per 0,5 secondi, provocato da un impulso sul sensore S1 2) fai indietreggiare il motore per 0,5 secondi, provocato da un impulso sul sensore S3 Nessun messaggio deve andare perduto: ogni client deve attendere un messaggio di acknowledge (accendere la lampadina) dal server prima di inviare un nuovo messaggio. Le richieste vanno soddisfatte nell ordine in cui arrivano. 135 Ancora su client/server Miglioramento: Registrare inoltre nel DataLog le richieste: mittente (1 o 2), il tipo (avanti/indietro) e l ora di inizio del soddisfacimento della richiesta Televoto: Adattare il progetto per un sistema di televoto: i client sono telecomandi. I messaggi vanno interpretati: vota per A oppure vota per B. Sul display del server si vedono i voti di A e di B a destra e a sinistra del display. Nessun client può votare più di una volta: deve prima inviare un codice personale

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Controllare un nastro trasportatore fischertechnik con Arduino

Controllare un nastro trasportatore fischertechnik con Arduino TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Serduino - SERRA CON ARDUINO

Serduino - SERRA CON ARDUINO Serduino - SERRA CON ARDUINO 1 Componenti Facchini Riccardo (responsabile parte hardware) Guglielmetti Andrea (responsabile parte software) Laurenti Lorenzo (progettazione hardware) Rigolli Andrea (reparto

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

BAMBINI E ROBOT. Giusy Dompé, Laura Gullino, Lucia Papalia, Luisa Pezzuto

BAMBINI E ROBOT. Giusy Dompé, Laura Gullino, Lucia Papalia, Luisa Pezzuto BAMBINI E ROBOT Giusy Dompé, Laura Gullino, Lucia Papalia, Luisa Pezzuto Docenti di Scuola dell Infanzia e di Scuola Primaria Circolo Didattico Beinasco - Gramsci www.beinascogramsci.it Introduzione La

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione.

ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione. ALLEGATO al verbale della riunione del 3 Settembre 2010, del Dipartimento di Elettrotecnica e Automazione. COMPETENZE MINIME- INDIRIZZO : ELETTROTECNICA ED AUTOMAZIONE 1) CORSO ORDINARIO Disciplina: ELETTROTECNICA

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Trattamento aria Regolatore di pressione proporzionale. Serie 1700

Trattamento aria Regolatore di pressione proporzionale. Serie 1700 Trattamento aria Serie 7 Serie 7 Trattamento aria Trattamento aria Serie 7 Serie 7 Trattamento aria +24VDC VDC OUTPUT MICROPROCESS. E P IN EXH OUT Trattamento aria Serie 7 Serie 7 Trattamento aria 7 Trattamento

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

Sistemi Operativi Sincronizzazione tra Processi

Sistemi Operativi Sincronizzazione tra Processi Sistemi Operativi Processi Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un

Dettagli

Istruzioni per l uso Sartorius

Istruzioni per l uso Sartorius Istruzioni per l uso Sartorius Descrizione dell interfaccia per le bilance Entris, ED, GK e GW Indice Impiego previsto Indice.... 2 Impiego previsto.... 2 Funzionamento.... 2 Uscita dati.... 3 Formato

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Controllori a Logica Programmabile. Cos è un PLC? Cenni storici. Cenni storici. Cenni storici. Definizione dallo Standard IEC 61131

Controllori a Logica Programmabile. Cos è un PLC? Cenni storici. Cenni storici. Cenni storici. Definizione dallo Standard IEC 61131 Controllori a Logica mabile Nella presente lezione vedremo le caratteristiche principali del controllore a logica programmabile (in inglese, mable Logic Controller, o PLC). In particolare, ci soffermeremo

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test Prefazione, Contenuto Parte 1: Sviluppo di programmi Parte 2: Uso e test SIMATIC Parte 3: Descrizione del linguaggio Programmazione di blocchi Appendici Glossario, Indice analitico Manuale Numero di ordinazione

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense Linguaggio del calcolatore Circuiti e reti combinatorie ppendice + dispense Solo assenza o presenza di tensione: o Tante componenti interconnesse che si basano su e nche per esprimere concetti complessi

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode

Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode Aggiornamento del firmware per iphone con connettore Lightning compatibile con AppRadio Mode Istruzioni sull aggiornamento per i modelli di navigazione: AVIC-F40BT, AVIC-F940BT, AVIC-F840BT e AVIC-F8430BT

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

STRUTTURE (O COSTRUTTI) DI CONTROLLO

STRUTTURE (O COSTRUTTI) DI CONTROLLO Le strutture di controllo Le strutture di controllo STRUTTURE (O COSTRUTTI) DI CONTROLLO determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni

Dettagli

Corso. LabVIEW. a cura di FRANCESCO FICILI. oltre l elettronica N 144-152

Corso. LabVIEW. a cura di FRANCESCO FICILI. oltre l elettronica N 144-152 Corso LabVIEW a cura di FRANCESCO FICILI N 144-152 oltre l elettronica Sommario LEZIONI 1 9 LEZIONE 1 Iniziamo a conoscere la piattaforma software LabVIEW di National Instruments, un innovativo ambiente

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

TELECOMUNICAZIONI (TLC) Generico sistema di telecomunicazione (TLC) Trasduttore. Attuatore CENNI DI TEORIA (MATEMATICA) DELL INFORMAZIONE

TELECOMUNICAZIONI (TLC) Generico sistema di telecomunicazione (TLC) Trasduttore. Attuatore CENNI DI TEORIA (MATEMATICA) DELL INFORMAZIONE TELECOMUNICAZIONI (TLC) Tele (lontano) Comunicare (inviare informazioni) Comunicare a distanza Generico sistema di telecomunicazione (TLC) Segnale non elettrico Segnale elettrico TRASMESSO s x (t) Sorgente

Dettagli

MANUALE RADIOCOMANDO SY250 IDRO STD3 2ways2

MANUALE RADIOCOMANDO SY250 IDRO STD3 2ways2 MANUALE RADIOCOMANDO SY250 IDRO STD3 2ways2 Pag. 1 / 10 SOMMARIO: 1 INTRODUZIONE... 3 2 PANNELLO DI CONTROLLO... 4 2.1 I TASTI... 4 2.2 IL DISPLAY... 4 3 I MENU... 5 3.1 MODIFICA TERMOSTATO AMBIENTE RADIO...

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Corso di Informatica Industriale

Corso di Informatica Industriale Corso di Informatica Industriale Prof. Giorgio Buttazzo Dipartimento di Informatica e Sistemistica Università di Pavia E-mail: buttazzo@unipv.it Informazioni varie Telefono: 0382-505.755 Email: Dispense:

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

Dettagli

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory.

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory. @ PC (Personal computer): Questa sigla identificò il primo personal IBM del 1981 a cura di R.Mangini Archiviazione: Il sistema operativo si occupa di archiviare i file. Background (sfondo): Cursore: Nei

Dettagli

Manuale d'istruzioni. Alimentatore DC Programmabile 200 Watt (40 Volt / 5 Amp) Modello 382280

Manuale d'istruzioni. Alimentatore DC Programmabile 200 Watt (40 Volt / 5 Amp) Modello 382280 Manuale d'istruzioni Alimentatore DC Programmabile 200 Watt (40 Volt / 5 Amp) Modello 382280 382280 Introduzione Congratulazioni per aver acquistato l'alimentatore DC Programmabile 382280 della Extech.

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

TRACER218 MODULO DATALOGGER RS485 MODBUS SPECIFICA PRELIMINARE

TRACER218 MODULO DATALOGGER RS485 MODBUS SPECIFICA PRELIMINARE TRACER218 MODULO DATALOGGER RS485 MODBUS SPECIFICA PRELIMINARE V.00 AGOSTO 2012 CARATTERISTICHE TECNICHE Il modulo TRACER218 485 è un dispositivo con porta di comunicazione RS485 basata su protocollo MODBUS

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

Manuale tecnico Stazione Meteo Eolo Davis

Manuale tecnico Stazione Meteo Eolo Davis Descrizione Generale Manuale tecnico Stazione Meteo Eolo Davis EOLO DAVIS rappresenta una soluzione wireless di stazione meteorologica, basata su sensoristica Davis Instruments, con possibilità di mettere

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

feeling feeling rf Bedienungsanleitung Operating Manual Mode d emploi Instruzioni per l uso Instrucciones de uso Manual de instruções

feeling feeling rf Bedienungsanleitung Operating Manual Mode d emploi Instruzioni per l uso Instrucciones de uso Manual de instruções feeling feeling rf D GB F E P NL CZ Bedienungsanleitung Operating Manual Mode d emploi nstruzioni per l uso nstrucciones de uso Manual de instruções Bedieningshandleiding Návod k obsluze 2 42 82 122 162

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Manuale d'uso per Nokia Image Viewer SU-5. 9356197 Edizione 1

Manuale d'uso per Nokia Image Viewer SU-5. 9356197 Edizione 1 Manuale d'uso per Nokia Image Viewer SU-5 9356197 Edizione 1 DICHIARAZIONE DI CONFORMITÀ Noi, NOKIA CORPORATION, dichiariamo sotto la nostra esclusiva responsabilità che il prodotto SU-5 è conforme alle

Dettagli

Giocare é comunicare.

Giocare é comunicare. Giocare é comunicare. Presentazione del progetto ADIO, AdioScan (realizzazione e copyright CID, Centro Informatica Disabilità cp 61 CH 6903 Lugano (Svizzera)). Gabriele Scascighini, direttore del Centro

Dettagli

Progettazione di sistemi Embedded

Progettazione di sistemi Embedded Progettazione di sistemi Embedded Corso introduttivo di progettazione di sistemi embedded A.S. 2013/2014 proff. Nicola Masarone e Stefano Salvatori Eccetto dove diversamente specificato, i contenuti di

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

Dettagli

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Scuola Specializzazione Istruzione Superiore Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Michele Batocchi ITC Vittorio Emanuele II Perugia A.S. 2007/2008 Introduzione

Dettagli

imparare è un esperienza, tutto il resto è informazione A. Einstein istituto tecnico

imparare è un esperienza, tutto il resto è informazione A. Einstein istituto tecnico imparare è un esperienza, tutto il resto è informazione A. Einstein istituto tecnico istituto tecnico SETTORE TECNOLOGICO chimica e materiali elettronica e telecomunicazioni informatica meccanica e meccatronica

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

PROGRAMMAZIONE DIDATTICA DISCIPLINARE

PROGRAMMAZIONE DIDATTICA DISCIPLINARE MOD PROGRAMMAZIONEDISCIPLINARE REV.00del27.09.13 Pag1di5 PROGRAMMAZIONEDIDATTICADISCIPLINARE Disciplina:_SISTEMIELETTRONICIAUTOMATICIa.s.2013/2014 Classe:5 Sez.A INDIRIZZO:ELETTRONICAPERTELECOMUNICAZIONI

Dettagli

La ricorsione. Politecnico di Milano Sede di Cremona

La ricorsione. Politecnico di Milano Sede di Cremona La ricorsione Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Definizioni ricorsive Sono comuni

Dettagli

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi.

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet: la rete delle reti Alberto Ferrari Connessioni

Dettagli

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento

minilector/usb Risoluzione dei problemi più comuni di malfunzionamento minilector/usb minilector/usb...1 Risoluzione dei problemi più comuni di malfunzionamento...1 1. La segnalazione luminosa (led) su minilector lampeggia?... 1 2. Inserendo una smartcard il led si accende

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Kit Domotici fai-da-te integrabili fra di loro, semplici da installare e da utilizzare.

Kit Domotici fai-da-te integrabili fra di loro, semplici da installare e da utilizzare. Per una casa più comoda, cura e intelligente, con un solo clic. Kit Domotici faidate integrabili fra di loro, semplici da installare e da utilizzare. www.easydo.it videosorveglianza, controllo carichi

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Equilibrio Termico tra Due Corpi

Equilibrio Termico tra Due Corpi Equilibrio Termico tra Due Corpi www.lepla.eu OBIETTIVO L attività ha l obiettivo di fare acquisire allo sperimentatore la consapevolezza che: 1 il raggiungimento dell'equilibrio termico non è istantaneo

Dettagli

Indicizzazione terza parte e modello booleano

Indicizzazione terza parte e modello booleano Reperimento dell informazione (IR) - aa 2014-2015 Indicizzazione terza parte e modello booleano Gruppo di ricerca su Sistemi di Gestione delle Informazioni (IMS) Dipartimento di Ingegneria dell Informazione

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

GLI ASSI CULTURALI. Allegato 1 - Gli assi culturali. Nota. rimessa all autonomia didattica del docente e alla programmazione collegiale del

GLI ASSI CULTURALI. Allegato 1 - Gli assi culturali. Nota. rimessa all autonomia didattica del docente e alla programmazione collegiale del GLI ASSI CULTURALI Nota rimessa all autonomia didattica del docente e alla programmazione collegiale del La normativa italiana dal 2007 13 L Asse dei linguaggi un adeguato utilizzo delle tecnologie dell

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli