PIC18F47J53 UN MODULO IN C PER

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "PIC18F47J53 UN MODULO IN C PER"

Transcript

1 Steve Blackbird (TardoFreak) PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 18 June 2013 Introduzione Se è vero che un programma in C lo si può scrivere all' interno di un unico file è anche vero l' utilizzo di moduli di programma da collegare a livello di linker permette di ottenere diversi vantaggi. In questo breve articolo ne descriverò uno di questi (nello specifico un modulo che contiene le funzioni a basso livello per il pilotaggio di un display alfanumerico che utilizza il famoso controller HD44780) con l' intento di fornire un' idea su come si possono organizzare i programmi che fanno uso dei moduli. Questo non è un articolo che descrive un modulo che può far parte di una libreria perché incompleto, ma uno vorrebbe essere stimolo per lo sperimentatore. Non mi soffermerò nella spiegazione del display e del suo controller poiché è già stato fatto in modo egregio da Paolino in questi due articoli: LO HAI MAI REALIZZATO CON UN PIC? - I PICMicro e i display LCD alfanumerici (parte 1) LO HAI MAI REALIZZATO CON UN PIC? - I PICMicro e i display LCD alfanumerici (parte 2) La conoscenza del controller è indispensabile e quindi la lettura del suo datasheet o degli articoli sopra indicati è una condizione necessaria per proseguire con l' articolo. Per la prova pratica del modulo e del programma utilizzerò il PIERIN PIC18, il sistema di sviluppo MPLAB con compilatore C18 partendo dal progetto di base che ho descritto in questo articolo. Il file pierin_display_alfa.rar contiene i sorgenti del progetto e l' immagine hex dell' eseguibile. I moduli in C Un modulo può essere considerato una specie di black-box da includere nel proprio programma ed utilizzare facilmente. Anche il modulo oggetto di questo articolo può essere inglobato in un progetto ed utilizzato facilmente. Una delle caratteristiche dei moduli è quella di poter nascondere informazioni, dichiarazioni e quant' altro in modo che non sia possibile vederle dall' esterno del modulo stesso. Questa caratteristica viene chiamata "information hiding" ed è molto utile per dare ordine al programma. Le informazioni non visibili all' esterno del PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 1

2 modulo vengono chiamate locali mentre quelle che potranno essere viste da altri moduli o dal programma principale vengono chiamate pubbliche. Un' altra caratteristica dei moduli è che sono compilati un ad uno ed il codice oggetto viene collegato fra di loro a livello di linker. In questo modo si possono scrivere moduli non solo in C ma anche in linguaggio assembly se necessario. Vediamo come sono organizzate le "dipendenze" del main nel progetto che fa uso del modulo per il display. Ed ora li prendiamo uno per uno per capire a cosa servono e perché sono stati scritti. main.h Contiene le definizioni (#define) dei simboli, le dichiarazioni di variabili ed i prototipi delle funzioni del programma principale che possono essere visibili ad altri moduli che ne fanno uso. In questo caso il file è vuoto ma si potrebbe palesare la necessità che alcuni moduli abbiano bisogno di utilizzare funzioni o variabili che sono dichiarate all' interno del main. Questo file serve appunto come collegamento fra il main e gli altri moduli del progetto. PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 2

3 configurazione.h E un file che potrebbe benissimo essere racchiuso dentro main.c ma il suo contenuto è stato scritto all' interno di un file a se per motivi di ordine e di leggibilità. mappa_int.h Anche questo file potrebbe benissimo rimanere all' interno del main.c ma anche in questo caso lo si è scritto all' interno di un file a se per motivi di ordine e di leggibilità. hardware_def.h Questo contiene le definizioni dei piedini di I/O e le opzioni per il moduli che fanno da driver per eventuali dispositivi esterni (display, memorie, periferiche in generale) del progetto. Tecnicamente queste dichiarazioni si potrebbero mettere all' interno del file main.h in quanto sarebbero comuni a tutto il progetto. Ho preferito fare un file a se perché... sono abituato a fare così eh eh eh. Preferisco avere un file che serva solo all' hardware ma è solo una questione di scelte personali. HD44780.h E' il file che contiene le definizioni, dichiarazioni ed i prototipi pubblici del file HD44780.c E' parte integrante del modulo e può essere incluso da tutti quei moduli che hanno bisogno di comandare il display. Essendo questo un modulo che potrà essere utilizzato in altri progetti ha alcune particolarità che vedremo più avanti quando lo analizzeremo a fondo. main.c E' il programma principale che contiene le sue definizioni, dichiarazioni, i prototipi e le funzioni locali ed infine, ovviamente, il programma principale. Il modulo HD44780 Prima di procedere con l' analisi di quello che vi è contenuto è bene cedere come è strutturato il modulo al completo. Il modulo è costituito da due files: HD44780.h e HD44780.c. Il primo contiene tutto quello che serve per poter utilizzare il modulo mentre il secondo contiene il sorgente delle varie funzioni che lo compongono. Alcune sono visibili all' esterno del modulo stesso (pubbliche) perché sono quelle che potranno essere utilizzate da altri moduli (ricordo che anche il main è un modulo!), ed altre sono visibili sono all' interno del modulo stesso per il semplice motivo che PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 3

4 non avrebbe senso renderle visibili. Questa è la struttura del modulo, o meglio le sue dipendenze. Quindi il file HD44780.c potrà essere compilato autonomamente ma ha bisogno degli altri due files. Tecnicamente deve includere solo il suo header ma quest' ultimo include anche il file di configurazione dell' hardware. HD44780.h Vediamo ora cosa c' è dentro questo file, lo analizzerò parte per parte. #ifndef HD44780_H #define HD44780_H // Inclusione del file contenente le definizioni dei pin #include "hardware_def.h" // Defines che si possono utilizzare (comandi) #define HD44780_CLR_DISP 0x01 #define HD44780_HOME 0x02 #define HD44780_SET_CGADR 0x40 #define HD44780_SET_ADR 0x80 // Prototipi visibili extern void HD44780_init(void); extern void HD44780_writeData(unsigned char n); extern void HD44780_writeCmd(unsigned char n); Le prime due righe sono le solite direttive che si usano per evitare inclusioni multiple del file. L' inclusione del file hardware_def.h viene fatta in questo file perché è più facile modificare questo file per adattarlo a progetti strutturati in maniera diversa piuttosto che mettere le mani nel file HD44780.c che contiene tutto il codice. Dopo troviamo le defines che possono essere usate dall' esterno e che in pratica sono alcuni comandi del display (non li ho messi tutti solo per questioni di tempo), quelli PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 4

5 più utilizzati. In questo modo non c'è bisogno di andarseli a cercare sul datasheet. Lascio allo sperimentatore il gusto di completare la lista dei comandi. Infine troviamo i prototipi delle funzioni pubbliche, quelle che possono essere utilizzate. In questo modulo c'è il minimo sindacale per potere visualizzare qualcosa infatti lo scopo dell' articolo non è quello di fornire un modulo completo ma di introdurre all' uso dei moduli in generale. Nella seconda parte troviamo un qualcosa che può essere interessante // Impostazioni di default. // Nel caso i segnali non siano difiniti venegono impostati di default // D4 = RD0 // D5 = RD1 // D6 = RD2 // D7 = RD3 // RS = RE0 // E = RE1 #ifndef HD44780_D4 #define HD44780_D4 LATDbits.LATD0 #define HD44780_D4_DIR TRISDbits.TRISD0 #ifndef HD44780_D5 #define HD44780_D5 LATDbits.LATD1 #define HD44780_D5_DIR TRISDbits.TRISD1 #ifndef HD44780_D6 #define HD44780_D6 LATDbits.LATD2 #define HD44780_D6_DIR TRISDbits.TRISD2 #ifndef HD44780_D7 #define HD44780_D7 LATDbits.LATD3 #define HD44780_D7_DIR TRISDbits.TRISD3 #ifndef HD44780_RS #define HD44780_RS LATEbits.LATE0 #define HD44780_RS_DIR TRISEbits.TRISE0 PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 5

6 #ifndef HD44780_E #define HD44780_E LATEbits.LATE1 #define HD44780_E_DIR TRISEbits.TRISE1 // Di default il numero di linee è impostato ad 1 #ifndef HD44780_LINES #define HD44780_LINES 1 Abbiamo una serie di compilazioni condizionate per ottenere due scopi: Essere sicuri che i simboli utilizzati dalle funzioni siano COMUNQUE dichiarati (per evitare errori di compilazione) Dare dei valori di default a questi simboli (ai pin di I/O ed il numero di linee hardware) Quindi se i due simboli che definiscono il pin (HD44780_D4 ad esempio) ed il suo bit di direzione (HD44780_D4_DIR) non sono già stati dichiarati prima vengono dichiarati in questo momento assegnando loro i rispettivi valori di default. HD44780.c Anche di questo file ne analizziamo una parte per volta #include "HD44780.h" #include <delays.h> // Esempio di adattamento ritardi per frequenze inferiori a quella massima #if ( == CLOCK_FREQ) // Ritardi per frequenza di clock 12 MHz #define delay15ms() Delay10KTCYx(45) #define delay4100us() Delay100TCYx(125) #define delay1600us() Delay100TCYx(48) #define delay120us() Delay10TCYx(36) #define delay43us() Delay10TCYx(13) #else // Ritardi per frequenza di clock 48 MHz (caso peggiore, più lento) #define delay15ms() Delay10KTCYx(180) #define delay4100us() Delay1KTCYx(50) #define delay1600us() Delay100TCYx(192) PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 6

7 #define delay120us() Delay10TCYx(144) #define delay43us() Delay10TCYx(52) La prima riga è l' inclusione del file header dove sono contenuti tutti i simboli (e su questo non c'è niente da dire) seguito dall' inclusione dell' header per utilizzare le funzioni di ritardo. La cosa che vorrei far notare è la compilazione condizionata delle definizioni delle macro per generare i ritardi. Sappiamo che il display in questione si arrabbia se non si aspetta il tempo necessario affinché lui concluda le operazioni. E' anche vero che si potrebbe testare il bit di busy ma in questa implementazione il segnale di R/W non è utilizzato quindi ci tocca aspettare un tempo sufficientemente lungo per permettergli di portare a compimento le operazioni. Visto che questi sono ritardi in cicli dipendono dalla frequenza di clock del sistema, il caso peggiore è quando il micro funziona alla sua massima velocità (48MHz) quindi vengono utilizzati quei ritardi. Supponiamo però di voler evitare di fare ritardi inutilmente lunghi il che vuol dire cambiare i valori alle funzioni di ritardo. Io ho fatto una prova con il micro che funziona a 12MHz (semplicemente non ho attivato il PLL) e quindi ho messo in compilazione condizionata anche la possibilità che il simbolo CLOCK_FREQ potesse valere , in tal caso le macro utilizzate sarebbero il primo gruppo. Proseguendo troviamo le dichiarazioni delle funzioni pubbliche // // Prototipi pubblici void HD44780_init(void); void HD44780_writeData(unsigned char n); void HD44780_writeCmd(unsigned char n); // // Prototipi locali static void writedigit(unsigned char n); static void writebyte(unsigned char n); e dopo le dichiarazioni delle funzioni locali. Nota di programmazione: Per fare in modo che una funzione sia visibile solo a livello di modulo è necessario utilizzare la classe di memorizzazione static che ha significato diverso da quello utilizzato nelle dichiarazioni di variabili. Una funzione dichiarata come static può essere vista ed utilizzata esclusivamente all' interno del modulo in cui viene scritta. Entriamo quindi nel vivo delle funzioni analizzando quelle visibili a livello di modulo PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 7

8 // // Scrive un digit nel bus dei dati del display static void writedigit(unsigned char n) // Setup che dovrebbe essere di 10ns HD44780_E = 1; // Mette il digit nelle linee da D4 a D7 if (n & 0x01) HD44780_D4 = 1; else HD44780_D4 = 0; if (n & 0x02) HD44780_D5 = 1; else HD44780_D5 = 0; if (n & 0x04) HD44780_D6 = 1; else HD44780_D6 = 0; if (n & 0x08) HD44780_D7 = 1; else HD44780_D7 = 0; //Hold time sicuramente superiore a 80ns. HD44780_E = 0; // // Scrive un byte nel display utilizzando due scritture consecutive di digit static void writebyte(unsigned char n) // Prima invia la parte alta writedigit(n >> 4); // Dopo invia la parte bassa writedigit(n & 0x0F); Salta subito all' occhio il fatto che le linee sono scritte una per una. Questo per fare in modo da poter sceglie di utilizzare qualsiasi pin per qualsiasi segnale. Il micro ci mette un po' più di tempo ma la flessibilità diventa grandissima. Queste funzioni sono state dichiarate come static perché non interessa a nessun poterne fruire. Quello che interessa è riuscire ad inviare un dato o un comando. Il come viene fatto interessa solo il modulo che funge da driver. Infine troviamo le funzioni pubbliche // void HD44780_writeCmd(unsigned char n) // Per inviare un comando la linea RS deve essere posta a 0 HD44780_RS = 0; // Invia il dato writebyte(n); PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 8

9 // Ritarda per attendere la completa esecuzione del comando // In questo caso dipende dal comando // questi ritardi sono di 1600 e 43 us massimi if (!(n & 0xFC)) delay1600us(); else delay43us(); // void HD44780_writeData(unsigned char n) // Per inviare un comando la linea RS deve essere posta a 0 HD44780_RS = 1; // Invia il dato writebyte(n); // Ritarda per attendere la completa esecuzione del comando // anche questo ritardo deve essere 43us delay43us(); // void HD44780_init(void) // inizializza le linee di uscita HD44780_D4_DIR = 0; HD44780_D5_DIR = 0; HD44780_D6_DIR = 0; HD44780_D7_DIR = 0; HD44780_RS_DIR = 0; HD44780_RS = 0; HD44780_E_DIR = 0; HD44780_E = 0; // Ritardo di 15ms per stabilizzazione VCC delay15ms(); // esegue la sequenza di reset, quella che si usa in caso di alimentazione // che non garantisce un buon reset interno. HD44780_RS = 0; // mette RS a 0 writedigit(0x03); delay4100us(); // sul datasheet e' indicato 4,1 ms writedigit(0x03); PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 9

10 delay120us(); // 120us. Il datasheet indica > 100 us. writedigit(0x03); delay120us(); writedigit(0x02); delay120us(); // Fine sequenza di reset // Programma il controller con il numero di righe da pilotare (1 o 2) // Data lenght 4 bit e font 5x8 #if (1 == HD44780_LINES) HD44780_writeCmd(0x20); #elif (2 == HD44780_LINES) HD44780_writeCmd(0x28); #else errore [HD44780] numero di righe non supportato. // Cancella il display HD44780_writeCmd(0x01); // Imposta direzione d' incremento in avanti senza shift del display HD44780_writeCmd(0x06); // lcd acceso e cursore lampeggiante a linea non visibile HD44780_writeCmd(0x0C); Il programma principale Prima di analizzare il file che contiene il programma vero e proprio diamo uno sguardo al file hardware_def.h #ifndef HARDWARE_DEF_H #define HARDWARE_DEF_H // Informazioni per i moduli // Definizione della frequenza di clock del sistema //#define CLOCK_FREQ PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 10

11 // Modulo LCD con HD44780 // Come connessioni si adottano quelle di default // Definizione numero di righe del controller #define HD44780_LINES 2 // End of file La prima parte contiene le informazioni (simboli) che possono essere utili a gli eventuali moduli del progetto. Nello specifico troviamo (sotto commento) la definizione della frequenza di clock di sistema. E' sotto commento perché l' ho utilizzata per provare le macro dei ritardi del modulo del display. Invece di toglierla l' ho lascita come esempio. Un simbolo che invece sono obbligato a definire è il numero di linee hardware (HD44780_LINES). Il valore di default è 1 ma io utilizzo un display a 4 righe che corrispondono a 2 linee hardware. Quindi ho dovuto specificarlo. Nella parte che interessa il module HD44780 non ho scritto niente perché ho tenuto la definizione di default delle linee di I/O. Nel caso avessi voluto, chessò, assegnare la linea RS al pin RB2 avrei dovuto scrivere #define HD44780_RS LATBbits.LATB2 #define HD44780_RS_DIR TRISBbits.TRISB2 In tal caso tale simbolo sarebbe stato definito da me e quindi, invece di assumere il valore di default avrebbe mantenuto il valore assegnatogli da me in questo file. L' astrazione dell' hardware Una pratica che mi piace molto è quella di fare in modo di svincolarsi dall' hardware. In pratica il principio è questo: oggi nel mio progetto uso un display alfanumerico ma potrei anche, un domani, usarne uno grafico. Voglio comunque mantenere le stesse funzioni per la scrittura di caratteri o per posizionare il cursore. Quindi, sebbeno io sappia che per scrivere un carattere sul display mi basta inviarci il codice con la funzione HD44780_writeByte preferisco scrivermi la funzione apposta. Se un giorno cambierò display dovrò soltanto modificare la funzione LCD_writeChar. Queste sono le funzioni del "layer" superiore a quello hardware che ho scritto. Da notare anche che le funzioni del modulo (specifico per il HD44780) iniziano tutte con HD4470_ mentre quelle che fanno parte del layer di astrazione iniziano con un generico LCD_. // Scrive un carattere sul display alla posizione del cursore void LCD_writeChar(char ch) PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 11

12 HD44780_writeData(ch); // Cancella lo schermo LCD void LCD_clear(void) HD44780_writeCmd(HD44780_CLR_DISP); // Imposta la posizione del cursore nel display LCD void LCD_setPos(unsigned char x, unsigned char y) unsigned char p; switch(y) case 0: p = x; break; case 1: p = 64 + x; break; case 2: p = 20 + x; break; case 3: p = 84 + x; break; p = HD44780_SET_ADR; HD44780_writeCmd(p); // Visualizza una stringa in ROM nel display LCD void LCD_writeStrC(rom const char* s) while(*s) HD44780_writeData(*s++); // Visualizza una stringa in RAM nel display LCD void LCD_writeStr(char* s) while(*s) HD44780_writeData(*s++); PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 12

13 Questa pratica mi è tornata estremamente utile al punto che per me è diventato un standard. Di solito racchiudo le funzioni di astrazione in un modulo a se ma in questo caso ho preferito evitare di incasinare il progetto. Il programma principale Iniziamo con uno sguardo all' inizio del file dove troviamo le inclusioni // File di definizione dei registri del micro. #include "p18f47j53.h" #include <delays.h> // Header del main #include "main.h" // File di configurazione dei fuses #include "configurazione.h" // Mappatura delle interrupt #include "mappa_int.h" // Definizioni hardware #include "hardware_def.h" // Header del modulo display #include "HD44780.h" Saltando poi tutte le varie parti del main che conosciamo già (sono partito dal progetto di base) andiamo direttamente alla funzione main() // MAIN FUNCTION void main(void) // Fa partire il PLL. // Anche se viene selezionato tramite i bit di configurazione // il suo funzionamento non è automatico. Ha bisogno di un comando. OSCTUNEbits.PLLEN = 1; // Attende abbastanza tempo per far stabilizzare il PLL Delay1KTCYx(100); PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 13

14 // Inizializzazione delle periferiche // Selezione ed abilitazione delle interrupt // Attivazione delle periferiche // Inizializzazione modulo display LCD HD44780_init(); // Scritte dimostrative LCD_setPos(4,0); LCD_writeStrC("PIERIN PIC18"); LCD_setPos(5,1); LCD_writeStrC("ElectroYou"); LCD_setPos(1,2); LCD_writeStrC("modulo display LCD"); LCD_setPos(5,3); LCD_writeStrC("con HD44780"); // Ciclo infinito di funzionamento for(;;) // Inserire il programma qui. Avendo inserito l' header del modulo (HD44780.h) l' utilizzo è semplicissimo. Innanzi tutto si chiama la funzione di inizializzazione e poi le funzioni per fare quello che vogliamo fare. Essendo un programma di prova si ferma nel ciclo infinito di programma. Tutto qui. Il risultato finale è questo PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 14

15 pierin_hd44780.jpg Conclusioni Come ho detto all' inizio questo articolo, almeno nelle intenzioni dello scrivente, vorrebbe essere una sorta di punto d' ingresso per la progettazione di un firmware che vada oltre il livello hobbistico. Se per sperimentare qualsiasi cosa va bene, per realizzare progetti che dovranno poi far funzionare un prodotto le cose cambiano. Purtroppo non sono capace ad insegnare, semmai posso cercare di trasmettere un po' di esperienza. Spero di esserci riuscito e mi scuso per eventuali imprecisioni o errori che spero mi vengano evidenziati in modo da poter correggere questo articolo (scritto frettolosamente). L' organizzazione del progetto è sicuramente migliorabile e non è di certo il non plus ultra, ma l' intenzione era quella di stimolare lo sperimentatore ad approfondire questo argomento che, se non ricordo male, viene definito come "ingegneria del software". E quindi siamo arrivati al punto in cui auguro di cuore una BUONA SPERIMENTAZIONE! Estratto da " index.php?title=userspages:tardofreak:pic18f47j53-un-modulo-in-c-per-pilotaredisplay-lcd" PIC18F47J53 UN MODULO IN C PER PILOTARE DISPLAY LCD 15

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Lampeggio di 8 led Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1

Dettagli

PIEDINO NOME DESCRIZIONE

PIEDINO NOME DESCRIZIONE LCD ALFANUMERICO Il display LCD afanumerico è un dispositivo che consente di visualizzare su una matrice di righe e colonne uno o più caratteri contenenti lettere, numeri simboli. Ogni carattere è composto

Dettagli

PIC18F47J53 COME FARE UN PWM FACILE E

PIC18F47J53 COME FARE UN PWM FACILE E Steve Blackbird (TardoFreak) PIC18F47J53 COME FARE UN PWM FACILE E MULTICANALE 11 June 2013 Di tanto in tanto capita che qualche utente del forum richieda un circuito per variare in modo lineare o PWM

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

GENERATORE DI BASE TEMPI

GENERATORE DI BASE TEMPI Steve Blackbird (TardoFreak) GENERATORE DI BASE TEMPI 4 October 2010 Non è passato neanche un anno dalla mia iscrizione in questo bellissimo sito ed in questo, seppur breve periodo, frequentando il forum

Dettagli

Calcolatori Elettronici T Ingegneria Informatica A2 - Gestione di una matrice di LED (8x8)

Calcolatori Elettronici T Ingegneria Informatica A2 - Gestione di una matrice di LED (8x8) Calcolatori Elettronici T Ingegneria Informatica A2 - Gestione di una matrice di LED (8x8) Giovanni Bonaccio, Stefano Mattoccia Matrice di led 8x8 Esperimento in cui vogliamo disegnare su una matrice di

Dettagli

Linguaggio di Riferimento: C

Linguaggio di Riferimento: C Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Calcolatori Elettronici T Ingegneria Informatica A3 - Gestione delle interruzioni

Calcolatori Elettronici T Ingegneria Informatica A3 - Gestione delle interruzioni Calcolatori Elettronici T Ingegneria Informatica A3 - Gestione delle interruzioni Giovanni Bonaccio, Stefano Mattoccia Arduino Interrupt Nella scheda Arduino Uno sono presenti due tipologie diverse di

Dettagli

Le sintonie elettroniche per l ATV

Le sintonie elettroniche per l ATV Le sintonie elettroniche per l ATV II Meeting ATV Magenta 18/04/2004 IW2LFD Luciano Arrigoni iw2lfd@libero.it http://digilander.libero.it/iw2lfd A.R.I. Sezione di Gallarate IQ2GM - http://www.qsl.net/iq2gm/

Dettagli

La programmazione della scheda Arduino Prima di affrontare la programmazione della scheda Arduino è opportuno chiarire che il programma che scriviamo nell'ide si chiama sorgente, è un testo umanamente

Dettagli

Introduzione al linguaggio C

Introduzione al linguaggio C Linguaggio C Introduzione al linguaggio C Sistemi di sviluppo integrati Noti anche come IDE: Integrated Development Environment Un pacchetto software che permette di scrivere, preprocessare, compilare,

Dettagli

Modulo LCD: interfacciamento e gestione

Modulo LCD: interfacciamento e gestione Modulo LCD: interfacciamento e gestione Per visualizzare messaggi o i dati relativi a misure effettuate si puo usare un display LCD. In figura e rappresentato un LCD a 2 righe e 16 colonne. Il display

Dettagli

STRUTTURA DI UN PROGRAMMA

STRUTTURA DI UN PROGRAMMA STRUTTURA DI UN PROGRAMMA File prova1.c #include ... int m; int f(int); int g(int x){ Area globale Direttive Dichiarazioni globali e prototipi di funzioni Definizioni di funzioni.../*ambiente

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

STRUTTURA DI UN PROGRAMMA!

STRUTTURA DI UN PROGRAMMA! STRUTTURA DI UN PROGRAMMA! File prova1.c Area globale #include ... int m; int f(int); int g(int x){.../*ambiente locale a g*/} int main(){...} int f(int x){.../*ambiente locale a f*/} Direttive

Dettagli

perror: individuare l errore quando una system call restituisce -1

perror: individuare l errore quando una system call restituisce -1 perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente

Dettagli

Il programmatore che c'è in noi - Lezione 4 Variabili

Il programmatore che c'è in noi - Lezione 4 Variabili Il programmatore che c'è in noi - Lezione 4 Variabili Le variabili, in un programma, sono i contenitori dentro cui memorizzare dei valori, che possono cambiare (per questo si chiamano variabili) durante

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

Introduzione al C. Unità 10 Preprocessore

Introduzione al C. Unità 10 Preprocessore Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 10 Preprocessore D. Bloisi, A. Pennisi, S. Peluso, S. Salza Processo di compilazione

Dettagli

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo

Dettagli

C:\ProgrammiC\Dino18\terminal.h

C:\ProgrammiC\Dino18\terminal.h 1. 2. 3. 4. 5 //Init e Lcd Display============================= 6 if (DisplayStatus) // se = 0 sono disabilitate tutte le routine relative al display 7 { 8 if (InitFlag) 9 /* Inizializza l'lcd e le routine

Dettagli

PIC E DISPLAY A 7 SEGMENTI CON

PIC E DISPLAY A 7 SEGMENTI CON Steve Blackbird (TardoFreak) PIC E DISPLAY A 7 SEGMENTI CON MULTIPLEXING 12 September 2010 Display a 7 segmenti I display a LED a 7 segmenti fecero apparizione più di 30 anni fa nelle prime calcolatrici

Dettagli

Progetti su più File Sorgenti

Progetti su più File Sorgenti Progetti su più File Sorgenti Sono considerate applicazioni di piccola dimensione, applicazioni con qualche migliaio di linee di codice Un applicazione anche di piccola dimensione non può essere sviluppata

Dettagli

#include <stdio.h> main() { - 1 -

#include <stdio.h> main() { - 1 - Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

Il preprocessore. Direttiva define Direttiva include Direttiva if

Il preprocessore. Direttiva define Direttiva include Direttiva if Il preprocessore Direttiva define Direttiva include Direttiva if Il preprocessore Il preprocessore è un processore di testi che elabora il contenuto di un file sorgente prima della compilazione vera e

Dettagli

deve conoscerne solo l interfaccia:

deve conoscerne solo l interfaccia: Progetti su più File Sorgenti Sono considerate applicazioni i i di piccola dimensione, applicazioni con qualche migliaio di linee di codice Un applicazione anche di piccola dimensione non può essere sviluppata

Dettagli

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

prova.c #include <stdio.h> char funzione(char); codice oggetto del main() prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp

Dettagli

PROGETTI SU PIU` FILE

PROGETTI SU PIU` FILE PROGETTI SU PIU` FILE Un applicazione complessa non può essere fatta in un unico file.c: sarebbe ingestibile Meglio dividerla in vari moduli, che si occupano di aspetti diversi Ordinamento Interfaccia

Dettagli

Detail ELETTRONICA INDUSTRIALE

Detail ELETTRONICA INDUSTRIALE Terminale Slave LCD1A manuale di riferimento aggiornamento: 05-06-03 Detail ELETTRONICA INDUSTRIALE LCD1A - manuale di riferimento Giugno 2003 Tutti i diritti sono riservati. E' vietata la riproduzione

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

Tutorial Display LCD e PIC

Tutorial Display LCD e PIC Tutorial Display LCD e PIC Si fa presente per coloro che sono a "digiuno" con la programmazione dei PIC di leggersi il tutorial in questo link http://www.grix.it/viewer.php?page=429 Descrizione Questo

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Il primo programma C++

Il primo programma C++ Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Sistemi di Elaborazione: esercizio con il D12

Sistemi di Elaborazione: esercizio con il D12 Sistemi di Elaborazione: esercizio con il D12 Un sistema basato su PIC18F8720 a 24 MHz è dotato di 32 KB di EPROM agli indirizzi alti e 64 KB di RAM statica agli indirizzi bassi. Il sistema è dotato inoltre

Dettagli

Struttura dei programmi e Variabili

Struttura dei programmi e Variabili Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita

Dettagli

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 10 Preprocessore D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Processo

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

Client - Interfaccia - Implementazione

Client - Interfaccia - Implementazione Client - Interfaccia - Implementazione Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Compilazione e Makefile

Compilazione e Makefile Compilazione e Makefile Indice Il preprocessore Le istruzioni per il preprocessore Le MACRO L ambiente linux: alcuni comandi Editor ed il compilatore g++ I makefile Il comando make I flag Il preprocessore

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Lezione 1 e 2 Fabio Scotti Laboratorio di programmazione per la sicurezza 1 Lezione 1 e 2 Fabio Scotti Laboratorio di programmazione per la sicurezza Introduzione al linguaggio C e significato della compilazione

Dettagli

Elementi di C++ di base

Elementi di C++ di base Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste

Dettagli

Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO. Modulo I: Le tavole dei simboli (TS)

Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO. Modulo I: Le tavole dei simboli (TS) Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO Modulo I: Le tavole dei simboli (TS) Stefano Guerrini A.A. 2002/03 Canale P-Z Versione del 20 giugno 2003 1 Modulo I:

Dettagli

Modularizzazione del software

Modularizzazione del software Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica

Dettagli

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Elementi di Base. Introduzione a Python.

Elementi di Base. Introduzione a Python. Elementi di Base Introduzione a Python http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Panoramica Elementi di base della sintassi (struttura,

Dettagli

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file Compilazione separata Come realizzare correttamente un piccolo progetto su piu' file 1 Programmi C su più file Tutti i programmi che abbiamo visto finora erano composti da un unico file.c Nel caso di programmi

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

CORSO DI PROGRAMMAZIONE MICROCONTROLLORI

CORSO DI PROGRAMMAZIONE MICROCONTROLLORI PROGRAMMA DEL CORSO PARTE INTRODUTTIVA LEZIONE INTRODUTTIVA 1 I NUMERI BINARI I NUMERI ESADECIMALI I DISPOSITIVI ELETTRONICI INTELLIGENTI LA MEMORIA DEI DISPOSITIVI ELETTRONICI INTELLIGENTI CENNI DI PROGRAMMAZIONE

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 Materiale disponibile sul sito http://www.fisica.unile.it/~martello/corsi/dottorato/tecnooo/tecnooo_03-04/index.html

Dettagli

Primo programma in C

Primo programma in C Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file

Dettagli

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso di programmazione Arduino DI MALVEZZI DAVIDE Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

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 Funzionamento macchina di von Neumann clock Memoria Centrale: Tutta l informazione prima di essere

Dettagli

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4

Dettagli

Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base

Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base Istituto Tecnico Industriale M. M. Milano Polistena Classe III D a.s. 2015/2016 C++ Guida Base Prof. Rocco Ciurleo - ITIS M. M. Milano Polistena - 3 D a.s. 2015/2016 1 Le Origini Il Linguaggio C++ è il

Dettagli

Architettura del calcolatore (Seconda parte)

Architettura del calcolatore (Seconda parte) Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Introduzione alle lezioni in laboratorio Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic. Corso introduttivo sui microcontrollori Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic Nicola Amoroso namoroso@mrscuole.net na_16f88_key4x4 1 Colleghiamo un tastierino a

Dettagli

Informatica per Statistica Riassunto della lezione del 21/10/2011

Informatica per Statistica Riassunto della lezione del 21/10/2011 Informatica per Statistica Riassunto della lezione del 1/10/011 Igor Melatti Costrutti del linguaggio C: ripasso Si consideri il programma C alla Figura 1 ci sono due dichiarazioni di funzioni, insertion

Dettagli

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...

Dettagli

C: primi elementi. Lezione 4

C: primi elementi. Lezione 4 C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX

Dettagli

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio Appunti di informatica Lezione 8 anno accademico 2016-2017 Mario Verdicchio Il ciclo FOR Molto spesso in un programma bisogna ripetere un operazione per un numero prefissato di volte Si tratta di un iterazione

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Le direttive del Preprocessore

Le direttive del Preprocessore Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza

Dettagli

Array. Aggragati di variabili omogenee...

Array. Aggragati di variabili omogenee... Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno

Dettagli

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file Compilazione separata Come realizzare correttamente un piccolo progetto su piu' file 1 Programmi C su più file Tutti i programmi che abbiamo visto finora erano composti da un unico file.c Nel caso di programmi

Dettagli

Preprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi

Preprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica,

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

Lezione 19: Il preprocessore

Lezione 19: Il preprocessore Lezione 19: Il preprocessore Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Struttura della lezione Il debugger gdb Il preprocessore direttive #include e #define macro con parametri

Dettagli

10. Visibilità e tempo di vita delle variabili. Andrea Marongiu Paolo Valente

10. Visibilità e tempo di vita delle variabili. Andrea Marongiu Paolo Valente 10. Visibilità e tempo di vita delle variabili Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti con

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento

Dettagli

LO HAI MAI REALIZZATO CON UN PIC? - I PICMICRO E I DISPLAY GRAFICI (SECONDA

LO HAI MAI REALIZZATO CON UN PIC? - I PICMICRO E I DISPLAY GRAFICI (SECONDA Paolo Rognoni (Paolino) LO HAI MAI REALIZZATO CON UN PIC? - I PICMICRO E I DISPLAY GRAFICI (SECONDA 2 December 2012 Dopo aver visto la struttura di un display grafico con controller KS0108, si passa ora

Dettagli

Informazioni Utili. Strumenti Utilizzati. Creazione e gestione di un progetto. Fondamenti di Informatica L-B (L-Z) Esercitazioni

Informazioni Utili. Strumenti Utilizzati. Creazione e gestione di un progetto. Fondamenti di Informatica L-B (L-Z) Esercitazioni Informazioni Utili Fondamenti di Informatica L-B (L-Z) Esercitazioni A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Orario delle Esercitazioni Lunedì 14-16 Gruppo L Q Martedì 16-18

Dettagli

Informazioni Utili. Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2005/06 Tutor: Loris Cancellieri

Informazioni Utili. Fondamenti di Informatica L-B (L-Z) Esercitazioni. A.A. 2005/06 Tutor: Loris Cancellieri Fondamenti di Informatica L-B (L-Z) Esercitazioni A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Informazioni Utili Orario delle Esercitazioni Lunedì 14-16 Gruppo L Q Martedì 16-18

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Assemblatore, Linker e Loader Francesco Lo Presti rielaborate da Salvatore Tucci Assembler, Linker & Loader 1 Compilazione q Nella prima fase, il programma ad alto livello viene

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi

Dettagli