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

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

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

La nuova generazione (NXT) di

La nuova generazione (NXT) di moria flash, 64Kbyte di RAM e clock a 48MHz. Un coprocessore Atmel AVR ad 8bit con 4Kbyte di memoria flash e 512Byte di RAM. Un CSR BlueCore 4, con 47Kbyte di RAM interna, memoria flash esterna ad 8Mbit

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Programmazione di Base Variabili Array Funzioni Strutture di controllo. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Programmazione di Base Variabili Array Funzioni Strutture di controllo. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Programmazione di Base Variabili Array Funzioni Strutture di controllo Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 3^ parte Com è fatto Arduino Programmazione da USB Nota: Firmware: Insieme

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I

Dettagli

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE IDROID 86 LAB pagg 12-13 23-04-2007 14:57 Pagina 12 I-D01 LAB UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE PROGRAMMAZIONE Alcuni comportamenti predefiniti attivabili su I-Droid01 sono facilmente riproducibili

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

I sistemi di elaborazione

I sistemi di elaborazione 2 I sistemi di elaborazione 2.0 I sistemi di elaborazione c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 2.0 0 2 I sistemi di elaborazione Architettura

Dettagli

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 1 Introduzione all informatica: algoritmi, linguaggi e programmi Indice 1. Introduzione 2. Risoluzione automatica di problemi - Algoritmi

Dettagli

Università degli studi di Roma LA SAPIENZA

Università degli studi di Roma LA SAPIENZA Università degli studi di Roma LA SAPIENZA Corso di ingegneria informatica e automatica Automazione I Realizzazione di una macchinina in grado di evitare le collisioni Di Alessandro Giuseppi All attenzione

Dettagli

Controllo remoto di SPEEDY

Controllo remoto di SPEEDY UNIVERSITÀ DI BRESCIA FACOLTÀ DI INGEGNERIA Dipartimento di Elettronica per l Automazione Laboratorio di Robotica Avanzata Advanced Robotics Laboratory Corso di Robotica (Prof. Riccardo Cassinis) Controllo

Dettagli

Java threads (2) Programmazione Concorrente

Java threads (2) Programmazione Concorrente Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and

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

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI Informatica con esercitazioni Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

progettare & costruire di GIOVANNI DI MARIA

progettare & costruire di GIOVANNI DI MARIA progettare & costruire di GIOVANNI DI MARIA Interfacciare il PC con il mondo esterno LA PORTA SERIALE DEL PC in uscita con il PIC In questa puntata interfacceremo il Personal Computer con le nostre apparecchiature

Dettagli

----------------------------------------------------------------

---------------------------------------------------------------- ---------------------------------------------------------------- utilizzo frequente di chiamate a.. A differenza del Pascal, il C permette di operare con assegnamenti e confronti su dati di tipo diverso,

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Problema e metodologie di progetto Linguaggio C: Introduzione Monica Mordonini Problema e Algoritmo

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

Il Linguaggio di Programmazione IEC 61131-3 Ladder

Il Linguaggio di Programmazione IEC 61131-3 Ladder Il Linguaggio di Programmazione IEC 61131-3 Ladder Linguaggio di Programmazione Ladder E' il più vecchio linguaggio di programmazione per PLC Si basa su simboli di provenienza "elettrica": binari di potenza

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

Fondamenti di Informatica 7. Linguaggi di programmazione

Fondamenti di Informatica 7. Linguaggi di programmazione I linguaggi di alto livello Fondamenti di Informatica 7. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto

Dettagli

A.S. 2010-2011. 1. Presentazione del materiale hardware MINDSTORMS.

A.S. 2010-2011. 1. Presentazione del materiale hardware MINDSTORMS. I.T.I.S. M.BARTOLO - PACHINO Progetto Introduzione alla robotica A.S. 2010-2011 1. Presentazione del materiale hardware MINDSTORMS. 2. Conoscenza dell unità programmabile - programmazione dei vari elementi

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

Introduzione a LabVIEW

Introduzione a LabVIEW Dipartimento di Elettronica Università di Pavia Introduzione a LabVIEW 1 Acquisizione dati e controllo remoto L acquisizione dati riveste grande importanza in tutti i campi dove sia necessario il controllo

Dettagli

Il Software... A.A. 2013-14 Informatica 96

Il Software... A.A. 2013-14 Informatica 96 Il Software... A.A. 2013-14 Informatica 96 Il software L hardware non è direttamente utilizzabile Sono necessari dei programmi per far svolgere delle funzioni all insieme di circuiti Informatica 97 Il

Dettagli

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:

Dettagli

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

LICEO SCIENTIFICO LEONARDO DA VINCI - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Modulo 1: Introduzione all informatica Fondamenti di teoria della elaborazione

Dettagli

ROBOCUP JR ITALIA 2012

ROBOCUP JR ITALIA 2012 Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2012 Riva del Garda (TN) 19-21 aprile Della squadra Another Brick Istituto ITIS Marconi di Gorgonzola La Rete di scuole per la Robocup Jr ITALIA

Dettagli

ISTITUTO DI ISTRUZIONE SUPERIORE Cigna Baruffi Garelli

ISTITUTO DI ISTRUZIONE SUPERIORE Cigna Baruffi Garelli Attività svolta 1. UNITÀ DI APPRENDIMENTO 1: RIPASSO E APPROFONDIMENTO DEGLI ARGOMENTI PRECEDENTI 1.1. Concetti elementari di informatica Algoritmo, Dato, Informazione Campi di applicazione e classificazione

Dettagli

L informatica comprende:

L informatica comprende: Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

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

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

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

DAL PROBLEMA AL PROGRAMMA

DAL PROBLEMA AL PROGRAMMA DAL PROBLEMA AL PROGRAMMA Scopo del modulo Conoscere alcuni concetti fondamentali dell informatica:algoritmo, l automa, linguaggio formale Essere in grado di cogliere l intreccio tra alcuni risultati della

Dettagli

Classe 5I2 AS. 2013/14 Niccolò Bulla Giorgia Novelli

Classe 5I2 AS. 2013/14 Niccolò Bulla Giorgia Novelli Obiettivo: Implementare un sistema che consenta la trasmissione, puramente ottica, di un messaggio in codice Morse tramite una stazione di trasmissione (sorgente) e una di ricezione. Lo scopo finale è

Dettagli

ARDUINO. Misurare e controllare. Riccardo Barberi. Dip. di Fisica Univ. Della Calabria Rende (CS), Italy

ARDUINO. Misurare e controllare. Riccardo Barberi. Dip. di Fisica Univ. Della Calabria Rende (CS), Italy ARDUINO Misurare e controllare Riccardo Barberi Dip. di Fisica Univ. Della Calabria Rende (CS), Italy Misurare In ambito scientifico le misure di grandezze fisiche permettono di studiare i fenomeni, verificare

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

Il Microcontrollore. Microcontrollore PIC

Il Microcontrollore. Microcontrollore PIC Il Microcontrollore Per realizzare un automatismo l elettronica ci mette a disposizione diverse possibilità. La prima, la più tradizionale, si basa su componenti transistor, mosfet, integrati con porte

Dettagli

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 11/01/08 Nota Questi lucidi sono

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Il PLC per tutti. Continuiamo ad approfondire il linguaggio Ladder, realizzando diversi esempi pratici per gestire relays, registri e contatori.

Il PLC per tutti. Continuiamo ad approfondire il linguaggio Ladder, realizzando diversi esempi pratici per gestire relays, registri e contatori. Quarta parte: Maggio 2007 Approfondiamo il Ladder Logic (I) Quinta parte: Giugno 2007 Approfondiamo il Ladder Logic (II) Sesta parte: Luglio/Agosto 2007 Approfondiamo il Ladder Logic (III) Settima parte:

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 25 febbraio 2015. Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 25 febbraio 2015. Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 25 febbraio 2015 1 / 42 INFORMATICA Varie definizioni: Scienza degli elaboratori elettronici (Computer Science)

Dettagli

L architettura di sviluppo per PLC presente in Laboratorio

L architettura di sviluppo per PLC presente in Laboratorio L architettura di sviluppo per PLC presente in Laboratorio Introduzione Le postazioni presenti in laboratorio sono configurate per consentire lo sviluppo e la validazione di software per PLC. Ogni postazione

Dettagli

Realizzazione di un robot olonomo

Realizzazione di un robot olonomo UNIVERSITÀ DI BRESCIA FACOLTÀ DI INGEGNERIA Dipartimento di Ingegneria dell Informazione Laboratorio di Robotica Avanzata Advanced Robotics Laboratory Corso di Robotica (Prof. Riccardo Cassinis) Realizzazione

Dettagli

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria Introduzione all Informatica 1 Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria Programma del corso Programma di

Dettagli

Introduzione a I LINGUAGGI DI PROGRAMMAZIONE

Introduzione a I LINGUAGGI DI PROGRAMMAZIONE Introduzione a I LINGUAGGI DI PROGRAMMAZIONE a cura di Francesco Galgani www.galgani galgani.itit Avvertenza: Con la presente pubblicazione, mi limiterò a introdurre sinteticamente alcuni concetti fondamentali

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Il software Dipartimento di Ingegneria dell Informazione Universitàdegli Studi di Parma SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono

Dettagli

Programmazione. Prima lezione sugli oggetti: agenda

Programmazione. Prima lezione sugli oggetti: agenda Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti (1): Principi generali ( Lezione XXV ) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università

Dettagli

Programmazione in Excel con il linguaggio Visual Basic

Programmazione in Excel con il linguaggio Visual Basic Programmazione in Excel con il linguaggio Visual Basic L'ambiente di programmazione Il foglio elettronico Excel, così come gli altri prodotti Office di Microsoft, possiede un vero e proprio ambiente di

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

Introduzione alla programmazione dei PLC. ITI Alessandro Volta - Sassuolo Anno Scolastico 2009/2010

Introduzione alla programmazione dei PLC. ITI Alessandro Volta - Sassuolo Anno Scolastico 2009/2010 Introduzione alla programmazione dei PLC ITI Alessandro Volta - Sassuolo Anno Scolastico 2009/2010 Programmazione dei PLC 1 Concetti introduttivi La scrittura di un programma per PLC si basa sull'utilizzo

Dettagli

Il PLC per tutti PRATICA

Il PLC per tutti PRATICA Settima parte: Settembre 2007 I Relays e la gestione dei dati Ottava parte: Ottobre 2007 Utilizzare il modulo Led a 7 segmenti giganti Nona parte: Novembre 2007 Applicazioni con i display a 7 segmenti

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

EOLO PF-2K : acquisire dati dall intero veicolo (2 linee K, bus CAN, sensori) rimanendo comodamente nel proprio ufficio

EOLO PF-2K : acquisire dati dall intero veicolo (2 linee K, bus CAN, sensori) rimanendo comodamente nel proprio ufficio EOLO PF-2K : acquisire dati dall intero veicolo (2 linee K, bus CAN, sensori) rimanendo comodamente nel proprio ufficio Dr Stefano Vianelli EURINS srl Categoria Automotive Prodotti utilizzati LabVIEW 6i,

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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Visual Basic Visual Basic Linguaggio di programmazione

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Eura Versione 2.0 MANUALE TECNICO

Eura Versione 2.0 MANUALE TECNICO Eura Versione 2.0 MANUALE TECNICO AEM Acotel Engeneering and Manufactoring Spa Via della Valle dei Fontanili 29/37 00168 - ROMA 06/61141000 r.a. 06/6149936 www.acotelnet.it Le informazioni contenute in

Dettagli

AUTOMI A STATI FINITI. G. Ciaschetti

AUTOMI A STATI FINITI. G. Ciaschetti AUTOMI A STATI FINITI G. Ciaschetti CONTENUTI Definizione di sistema Classificazione dei sistemi Definizione di modello Algebra degli schemi a blocchi Sistemi sequenziali Automi a stati finiti Macchina

Dettagli

La piattaforma hardware e software Arduino: parte I. Corso di autoapprendimento

La piattaforma hardware e software Arduino: parte I. Corso di autoapprendimento La piattaforma hardware e software Arduino: parte I (tempo di apprendimento previsto circa 2-3 ore) Introduzione Corso di autoapprendimento Prof. Angelo Monfroglio Questa è la prima parte di un corso di

Dettagli

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI Scienza ed industria hanno oggi costituito legami molto forti di collaborazione che hanno portato innovazione tecnologica sia a livello organizzativo-amministrativo

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Applicazioni distribuite

Applicazioni distribuite Applicazioni distribuite Maurizio Cozzetto 1 agosto 2009 Un pò di teoria Ricordiamo che un'applicazione distribuita è un'applicazione composta da più programmi (almeno 2) posti in esecuzione su macchine

Dettagli

mendiante un ciclo e finché il segnale rimane alto, si valuta il tempo T3 usando il timer del microcontrollore e una variabile di conteggio.

mendiante un ciclo e finché il segnale rimane alto, si valuta il tempo T3 usando il timer del microcontrollore e una variabile di conteggio. Svolgimento (a) Il sensore di temperatura ha un uscita digitale a 9 bit, emettendo un codice binario proporzionale al valore Temp richiesto. Possiamo pensare si tratti di un dispositivo 1-Wire. Un sistema

Dettagli

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Salerno Formazione, società operante nel settore della didattica, della formazione professionale e certificata

Dettagli

LabVIEW. E un acronimo per. "Laboratory Virtual Instrument Engineering Workbench. Ideato dalla National Instrument nel 1986 È standard mondiale per:

LabVIEW. E un acronimo per. Laboratory Virtual Instrument Engineering Workbench. Ideato dalla National Instrument nel 1986 È standard mondiale per: 1 LabVIEW E un acronimo per "Laboratory Virtual Instrument Engineering Workbench Ideato dalla National Instrument nel 1986 È standard mondiale per: l acquisizione dati (DAQ) il controllo della strumentazione

Dettagli

PLC Sistemi a Logica Programmabile

PLC Sistemi a Logica Programmabile PLC Sistemi a Logica Programmabile Prof. Nicola Ingrosso Guida di riferimento all applicazione applicazione dei Microcontrollori Programmabili IPSIA G.Ferraris Brindisi nicola.ingrosso @ ipsiaferraris.it

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

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 3ª) giugno 2013 Giorgio Carpignano I.I.S. PRIMO LEVI C.so Unione Sovietica 490 (TO) Materiale didattico: www.iisprimolevi.it Esercizio

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

LINGUAGGI COMPILATI ESECUZIONE DI UN PROGRAMMA LINGUAGGI COMPILATI LINGUAGGI COMPILATI

LINGUAGGI COMPILATI ESECUZIONE DI UN PROGRAMMA LINGUAGGI COMPILATI LINGUAGGI COMPILATI ESECUZIONE DI UN PROGRAMMA Il codice sorgente non è eseguibile dalla CPU, è necessario tradurlo in linguaggio macchina: un file binario contenente microistruzioni gestibili dalla CPU Diverse architetture

Dettagli

LOGO! Avvio alla programmazione. Versione 1.0 Guida pratica per compiere i primi passi con LOGO!

LOGO! Avvio alla programmazione. Versione 1.0 Guida pratica per compiere i primi passi con LOGO! LOGO! Avvio alla programmazione Versione 1.0 Guida pratica per compiere i primi passi con LOGO! [Digitare il testo] [Digitare il testo] [Digitare il testo] CONTENUTI 1 INTRODUZIONE... 3 2 PRIMI PASSI PER

Dettagli

CNC PER PANTOGRAFO DA TAGLIO E INCISIONE CATALOGO APPLICAZIONI. Versione 1.1 08/08/2013. ISAC S.r.l.

CNC PER PANTOGRAFO DA TAGLIO E INCISIONE CATALOGO APPLICAZIONI. Versione 1.1 08/08/2013. ISAC S.r.l. CATALOGO APPLICAZIONI CNC PER PANTOGRAFO DA TAGLIO E INCISIONE Versione 1.1 08/08/2013 ISAC S.r.l. CAPITALE SOCIALE 100.000,00 C.F. e P.I. 01252870504 VIA MAESTRI DEL LAVORO, 30 56021 CASCINA (PI) ITALY

Dettagli