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 ( 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 r6,@-r7 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) {><@@@><2><###>< ><}> 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

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

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

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

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 1 Sistema software 1 Prerequisiti Utilizzo elementare di un computer Significato elementare di programma e dati Sistema operativo 2 1 Introduzione In questa Unità studiamo

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

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

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

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

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari A.A. 2012 2013 1 Introduzione Questo documento raccoglie i requisiti preliminari per il software di controllo

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

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

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

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

IRSplit. Istruzioni d uso 07/10-01 PC

IRSplit. Istruzioni d uso 07/10-01 PC 3456 IRSplit Istruzioni d uso 07/10-01 PC 2 IRSplit Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Installazione 4 3. Concetti fondamentali

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

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

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

INFORMATICA 1 L. Mezzalira

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

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili 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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo L2 1.1-Introduzione 1 Prerequisiti Concetto intuitivo di applicazione per computer Uso pratico elementare di un sistema operativo 2 1 Introduzione Uno dei compiti di un sistema

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

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari A.A. 2013 2014 1 Introduzione Questo documento raccoglie i requisiti preliminari per il software di controllo

Dettagli

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM Il computer è un apparecchio elettronico che riceve dati di ingresso (input), li memorizza e gli elabora e fornisce in uscita i risultati (output). Il computer è quindi un sistema per elaborare informazioni

Dettagli

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

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

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

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

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Le basi della programmazione ad oggetti: per costruire in modo adeguato una applicazione basata sulla programmazione ad oggetti occorre

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dell ambiente di sviluppo, compilazione ed esecuzione 1 Introduzione Java è un linguaggio

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

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Apprendere la matematica: dal problema al modello e dal modello all astrazione

Apprendere la matematica: dal problema al modello e dal modello all astrazione Apprendere la matematica: dal problema al modello e dal modello all astrazione Segui l evento su Twitter @DeAScuola hashtag ufficiale: #RTMatematica Coding in classe con Scratch Relatore: Andrea Ferraresso

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

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Civile Elementi di Informatica Programmi e Oggetti Software Settembre 2006 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il punto di

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

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

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

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

4. Un ambiente di sviluppo per Java

4. Un ambiente di sviluppo per Java pag.15 4. Un ambiente di sviluppo per Java Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori Java, in particolare si tratta di editor complessi che mettono a disposizione tools

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

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

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

Dettagli

File, Modifica, Visualizza, Strumenti, Messaggio

File, Modifica, Visualizza, Strumenti, Messaggio Guida installare account in Outlook Express Introduzione Questa guida riguarda di sicuro uno dei programmi maggiormente usati oggi: il client di posta elettronica. Tutti, ormai, siamo abituati a ricevere

Dettagli

Appunti di Sistemi Elettronici

Appunti di Sistemi Elettronici Prof.ssa Maria Rosa Malizia 1 LA PROGRAMMAZIONE La programmazione costituisce una parte fondamentale dell informatica. Infatti solo attraverso di essa si apprende la logica che ci permette di comunicare

Dettagli

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC BMSO1001 Virtual Configurator Istruzioni d uso 02/10-01 PC 2 Virtual Configurator Istruzioni d uso Indice 1. Requisiti Hardware e Software 4 1.1 Requisiti Hardware 4 1.2 Requisiti Software 4 2. Concetti

Dettagli

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate MODULO BASE Quanto segue deve essere rispettato se si vuole che le immagini presentate nei vari moduli corrispondano, con buona probabilità, a quanto apparirà nello schermo del proprio computer nel momento

Dettagli

Assegnamento di un indirizzo IP temporaneo a dispositivi Barix

Assegnamento di un indirizzo IP temporaneo a dispositivi Barix Assegnamento di un indirizzo IP temporaneo a dispositivi Barix V 1.0 GUIDA RAPIDA Introduzione L obiettivo di questa guida rapida è fornire all utente un modo per poter assegnare un indirizzo IP temporaneo

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

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

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Il Software e Il Sistema Operativo Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Cosa Impareremo Programmi e Processi Struttura del Sistema Operativo Sviluppo di Programmi I files e la loro

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 1 LABORATORIO DI SISTEMI OGGETTO: Progettare e collaudare un circuito digitale capace di copiare le informazioni di una memoria PROM in

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

PowerPoint 2007 Le funzioni

PowerPoint 2007 Le funzioni PowerPoint 2007 Le funzioni Introduzione Cos è un ipertesto L' ipertesto è un testo organizzato in link, o collegamenti ad altre parti del testo e/o altri testi, in modo da consentire all utente di scegliere

Dettagli

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE hardware Firmware, software memorizzato su chip di silicio Sistema Operativo venduto con l, comprende vari programmi di gestione del sistema Applicativo,

Dettagli

Semplice progetto con Arduino simpatico G-meter col quale misurare e registrare le accelerazioni del proprio veicolo

Semplice progetto con Arduino simpatico G-meter col quale misurare e registrare le accelerazioni del proprio veicolo Linux Day 2014 Semplice progetto con Arduino simpatico G-meter col quale misurare e registrare le accelerazioni del proprio veicolo Cos'è Arduino? Arduino è una piattaforma hardware low-cost programmabile,

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Procedura di aggiornamento del firmware Display Remoto IntellyGreenPV

Procedura di aggiornamento del firmware Display Remoto IntellyGreenPV Procedura di aggiornamento del firmware Display Remoto IntellyGreenPV 1) Introduzione Il seguente documento descrive la procedura di aggiornamento del firmware del Display Remoto IntellyGreenPV. Per eseguire

Dettagli

ISTITUTO TECNICO ECONOMICO MOSSOTTI

ISTITUTO TECNICO ECONOMICO MOSSOTTI CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche

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

I file di dati. Unità didattica D1 1

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

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI! Fondamenti di Informatica Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI! Finalità: Fornire gli elementi di base dei concetti che sono di fondamento all'informatica Informazioni Pratiche ORARIO:

Dettagli

ROBOMAT. ROBOMAT Progettare, comunicare, stabilire relazioni di tipo spaziale misurare in tipiche situazioni di problemsolving

ROBOMAT. ROBOMAT Progettare, comunicare, stabilire relazioni di tipo spaziale misurare in tipiche situazioni di problemsolving ROBOMAT Progettare, comunicare, stabilire relazioni di tipo spaziale misurare in tipiche situazioni di problemsolving Logo è un linguaggio di programmazione ideato con finalità didattiche dal matematico

Dettagli

GESGOLF SMS ONLINE. Manuale per l utente

GESGOLF SMS ONLINE. Manuale per l utente GESGOLF SMS ONLINE Manuale per l utente Procedura di registrazione 1 Accesso al servizio 3 Personalizzazione della propria base dati 4 Gestione dei contatti 6 Ricerca dei contatti 6 Modifica di un nominativo

Dettagli

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M A.A. 2014/2015 Gioco del "Mulino" Prof. Paola Mello, Ing. Federico Chesani 1 Il gioco del Mulino Stimolare la comprensione e la discussione sugli algoritmi di base

Dettagli

PROGETTO EM.MA PRESIDIO

PROGETTO EM.MA PRESIDIO PROGETTO EM.MA PRESIDIO di PIACENZA Bentornati Il quadro di riferimento di matematica : INVALSI e TIMSS A CONFRONTO LE PROVE INVALSI Quadro di riferimento per la valutazione Quadro di riferimento per i

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

CHE COS È L INFORMATICA

CHE COS È L INFORMATICA CHE COS È L INFORMATICA Prof. Enrico Terrone A. S. 2011/12 Definizione L informatica è la scienza che studia il computer sotto tutti i suoi aspetti. In inglese si usa l espressione computer science, mentre

Dettagli

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica I componenti di un Sistema di elaborazione. Memoria centrale Memorizza : istruzioni dati In forma BINARIA : 10001010101000110101... È costituita da una serie di CHIP disposti su una scheda elettronica

Dettagli

Gestione di una UART SOFTWARE.

Gestione di una UART SOFTWARE. Corso di BASCOM 8051 - (Capitolo 3 1 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. Gestione di una UART SOFTWARE. Capita, a volte in alcune applicazioni, di avere

Dettagli

1.4b: Hardware. (Memoria Centrale)

1.4b: Hardware. (Memoria Centrale) 1.4b: Hardware (Memoria Centrale) Bibliografia Curtin, Foley, Sen, Morin Informatica di base, Mc Graw Hill Ediz. Fino alla III : cap. 3.11, 3.13 IV ediz.: cap. 2.8, 2.9 Questi lucidi Memoria Centrale Un

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Problema Strategia

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Ingegneria Meccanica

Ingegneria Meccanica Ingegneria Meccanica (Classe L-9 Ingegneria Industriale) Presentazione alla matricole Prof. Gian Luca Garagnani Presidente CUCdL Area Industriale Sommario Presentazione piano di studio Come studiare a

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Dettagli