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

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

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

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

Programmazione dei robot

Programmazione dei robot Programmazione dei robot Concetti introduttivi Il kit Mindstorms NXT è un sistema che permette di costruire e programmare i robot Lego Mindstorms. Il componente principale del kit è un piccolo computer

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

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica 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

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

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

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

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

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

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

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

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

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 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

MACCHINA DI VON NEUMANN

MACCHINA DI VON NEUMANN I seguenti appunti non hanno la pretesa di essere esaustivi, ma hanno l unico scopo di illustrare in modo schematico i concetti necessari allo sviluppo del programma di Informatica della 1D del Liceo Scientifico

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

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

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

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

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

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

In questa puntata analizzeremo

In questa puntata analizzeremo Quarta parte Implementazione del protocollo MODBUS ASCII Quinta parte Simulatore PLC Il programma di supervisione Applicazione embedded 104 In questa puntata analizzeremo l ultima parte per quello che

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

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

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

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

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

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

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

Rete di scuole per la

Rete di scuole per la Rete di scuole per la ROBOCUP JR ITALIA ROBOCUP JR ITALIA 2011 Catania 14-16 aprile della squadra DANCE dell Istituto ITIS G.B.Pininfarina di Moncalieri (Torino) ROBOCUP JR ITALIA 2011 - Catania 14-16

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

LOGO E ROBOTICA. Tutta la vita è risolvere problemi Karl Popper

LOGO E ROBOTICA. Tutta la vita è risolvere problemi Karl Popper LOGO E ROBOTICA Tutta la vita è risolvere problemi Karl Popper molto spesso lo sforzo che gli uomini compiono per attività che sembrano completamente inutili, risulta essere estremamente importante per

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

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

Introduzione alla Programmazione

Introduzione alla Programmazione Programmazione 1: Introduzione alla Programmazione Michele Nappi, Ph.D Dipartimento di Matematica e Informatica Università degli Studi di Salerno mnappi@unisa.it www.dmi.unisa.it/people/nappi it/people/nappi

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

Sistemi e schedulazione in tempo reale

Sistemi e schedulazione in tempo reale Sistemi e schedulazione in tempo reale 1 Sistemi in tempo reale Sistemi di calcolo in cui la correttezza del funzionamento dipende criticamente dal tempo in cui i risultati sono prodotti. Possibili campi

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

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

NXT Guida rapida di utilizzo. a cura di Rob Widger

NXT Guida rapida di utilizzo. a cura di Rob Widger NXT Guida rapida di utilizzo a cura di Rob Widger Guida rapida di utilizzo NXT Indice Introduzione... 2 1. Un approccio semplice... 3 2. Impostazione dell hardware... 4 3. Utilizzo di NXT senza software...

Dettagli

Ambiente di sviluppo per applicazioni custom Atomic. Atomic - 22 marzo 2007 Pagina 1 di 20.

Ambiente di sviluppo per applicazioni custom Atomic. Atomic - 22 marzo 2007 Pagina 1 di 20. Ambiente di sviluppo per applicazioni custom Atomic Atomic - 22 marzo 2007 Pagina 1 di 20. Introduzione Atomic è un micro-linguaggio di programmazione sviluppato per la famiglia di azionamenti full digital

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 A1 - Interfacce grafiche 1 Prerequisiti Utilizzo di un sistema operativo Programmazione elementare ad oggetti Concetto di macchina virtuale Tipi di interfaccia Riferimento

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

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

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

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

Capitolo 3: Strutture dei sistemi operativi

Capitolo 3: Strutture dei sistemi operativi Capitolo 3: Strutture dei sistemi operativi Componenti del sistema Servizi di un sistema operativo Chiamate del sistema Programmi di sistema Struttura del sistema Macchine virtuali Progettazione e realizzazione

Dettagli

SOMMARIO INTRODUZIONE...XV CAPITOLO 1: PRESENTAZIONE...1 CAPITOLO 2: FONDAMENTI DI JAVA...39

SOMMARIO INTRODUZIONE...XV CAPITOLO 1: PRESENTAZIONE...1 CAPITOLO 2: FONDAMENTI DI JAVA...39 sommario 24-06-2004 10:18 Pagina V SOMMARIO INTRODUZIONE.......................................XV CAPITOLO 1: PRESENTAZIONE.......................................1 1.1 Introduzione...2 1.2 L organizzazione

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

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

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E Lezione 5: Software Firmware Sistema Operativo Architettura del Calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti: Hardware e Software Firmware: strato di (micro-)programmi

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

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag