Dispensa YACC: generalità
|
|
|
- Eugenio Ippolito
- 10 anni fa
- Visualizzazioni
Transcript
1 Dispensa YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un appropriata sintassi genera automaticamente un parser LALR del linguaggio. Più precisamente, poiché alle produzioni della grammatica possono essere associate delle azioni (cioè frammenti di programmi scritti in linguaggio C), quello che Yacc genera è un traduttore input/output che oltre a fare l analisi sintattica di costrutti input ne fa anche la traslazione in un determinato output come specificato dalle azioni. L architettura software che mostra il contesto d uso di Yacc è la seguente. Nell architettura i nomi dei files generati (y.tab.c e a.out) sono dipendenti da sistema, per esempio in questo caso si è considerato il sistema Unix. <nome_file>.y Yacc y.tab.c y.tab.c Compilatore C a.out input a.out output Nota: Invocando Yacc con l opzione v viene generato un file contenente una rappresentazione testuale degli items calcolati in accordo al metodo LALR. Compilando il file y.tab.c con l opzione -ly viene caricato da libreria il parsing program LR. Come si può notare dall architettura, l utente si deve concentrare essenzialmente sulla specifica sorgente Yacc (il file.y in cui è scritta la grammatica), tutto il resto, infatti, è implementato poi automaticamente. Il formato generale di un programma sorgente Yacc è costituito da tre sezioni ed ha la seguente struttura: DICHIARAZIONI %% REGOLE DI TRASLAZIONE %% PROGRAMMI La sezione REGOLE DI TRASLAZIONE è il cuore della specifica Yacc in quanto è in essa che è scritta la grammatica. I simboli speciali %% ne delimitano l inizio e la fine. Nel seguito descriviamo queste tre sezioni. 1.2 La sezione DICHIARAZIONI : sintassi Questa sezione consiste di due parti: - Nella prima parte vi è tutto il blocco di dichiarazioni C. Sostanzialmente vi vengono inserite le normali dichiarazioni di variabili che saranno usate nelle sezioni delle Regole e dei Programmi, e in
2 più vi possono essere direttive di compilazione del tipo #define oppure #include. Questa parte è delimitata dai simboli speciali %{ e %} - Nella seconda parte si dichiarano i token della grammatica attraverso la direttiva Yacc %token seguita dalla lista dei token. (Si noti che nella sintassi Yacc è convenzione usare lettere maiuscole per i token e lettere minuscole per i non-terminali, al contrario di quanto si fa normalmente nella stesura di una grammatica) Esempio: %token ID NUMBER 1.3 La sezione REGOLE DI TRASLAZIONE : sintassi In questa sezione vengono scritte le produzioni della grammatica. La sintassi è la seguente: una produzione: <ParteSinistra> <ParteDestra> in formato Yacc è scritta così: <ParteSinistra> : <ParteDestra> ; All interno di una produzione, Yacc considera come terminali o stringhe di caratteri dichiarate come token nella sezione Dichiarazioni (es. NUMBER) oppure singoli caratteri racchiusi tra apici (es. + ). Questi ultimi tipi di terminali il parser se li aspetta così come sono nell input (si pensi appunto al simbolo + che apparirà proprio così in una stringa sorgente del compilatore); invece i valori dei terminali dichiarati come token (si pensi ad esempio al token ID che non appare così nel sorgente ma attraverso i suoi valori, cioè i lessemi) saranno passati al parser dall analizzatore lessicale. Ogni stringa di caratteri che appare nelle produzioni e che non è stata dichiarata come token, viene assunta da Yacc essere un non-terminale. Esempio: la produzione: E E + number in formato Yacc diventa: e : e + NUMBER ; In essa NUMBER viene considerato token (se supponiamo che ce ne sia la dichiarazione nella prima sezione), + viene considerato come terminale (essendo un singolo carattere racchiuso tra apici), infine e viene considerato per esclusione un non-terminale. Nota: per comunicare a Yacc chi è lo start symbol, ossia il non-terminale di partenza della grammatica, si può inserire la dichiarazione %start seguita dal nome del non-terminale nella seconda parte della sezione Dichiarazioni oppure, se questa dichiarazione si omette, Yacc assume per default come start symbol il non-terminale sinistro della prima produzione listata nella sezione Regole. 1.4 Azioni Il formato generale di una produzione Yacc è il seguente: <ParteSinistra> : <ParteDestra> { AzioneSemantica} ;
3 dove un azione semantica è una sequenza di istruzioni scritte in linguaggio C e racchiuse tra parentesi graffe. Nelle produzioni Yacc i simboli grammaticali hanno attributi semantici, cioè valori, e le azioni servono proprio a gestire questi valori. Yacc usa la pseudo-variabile $$ per far riferimento al valore dell attributo semantico del non-terminale sinistro di una produzione, e le pseudo-variabili $i per il valore dell attributo dell i-esimo simbolo grammaticale della parte destra (per es. $3 si riferisce al valore dell attributo del terzo simbolo grammaticale nella parte destra). Le azioni nelle produzioni Yacc oltre a contenere specifiche routines che implementano la particolare traduzione input/output richiesta, servono soprattutto per calcolare $$ in funzione dei $i. Ad esempio, la produzione che specifica il costrutto dell addizione vista prima può essere completata dalla seguente azione che ne calcola il valore parziale del risultato: e : e + NUMBER { $$ = $1 + $3;}; In definitiva, i valori degli attributi dei non-terminali sono computati dalle azioni semantiche; mentre i valori degli attributi dei token (cioè i lessemi) sono comunicati a Yacc dall analizzatore lessicale attraverso la pseudo-variabile yylval, come vedremo nel paragrafo 1.5. Va anche considerato che: - Se un azione è inserita alla fine della parte destra di una produzione, allora essa sarà eseguita quando, durante il parsing, quella produzione sarà ridotta. - Le azioni possono essere inserite anche all interno della parte destra di produzioni; è chiaro che in questo caso nell azione il computo di $$ può far riferimento solo ai $i dei simboli grammaticali alla sinistra dell azione. - Yacc ha un azione di default che è { $$ = $1;}. Pertanto se si scrive una produzione senza azioni semantiche, comunque Yacc esegue la sua azione di default quando il parser ridurrà quella produzione. 1.5 La sezione PROGRAMMI : sintassi In questa sezione vi sono tutte le routines di supporto utili al corretto funzionamento del parser. In particolare le tre routines più importanti e che devono necessariamente essere presenti in questa sezione sono: l analizzatore lessicale yylex(), la funzione principale main() e la funzione di gestione errori yyerror(). - L analizzatore lessicale Yacc si aspetta un analizzatore lessicale di nome yylex() che ritorna al parser le tipologie di token dichiarati nella sezione Dichiarazioni e ne comunica il valore (il lessema) tramite la variabile yylval. Pertanto il nucleo fondamentale di questa routine in un programma Yacc sarà sempre la coppia di istruzioni: yylval = return ( ) L analizzatore lessicale può essere implementato in due possibili modi: o si scrive esplicitamente all interno della sezione Programmi una procedura yylex() in C oppure si usa un programma
4 separato Lex per generare l analizzatore lessicale, e in questo caso si dovrà inserire nella prima parte della sezione Dichiarazioni del programma Yacc la direttiva #include lex.yy.c per stabilire l aggancio fra Yacc e Lex. - La funzione main() La funzione principale main() fa partire il procedimento di lettura, parsing e traduzione I/O di un input. All interno del programma Yacc si può usare semplicemente: main() { yyparse(); } dove yyparse() è il parser generato da Yacc che invoca ripetutamente yylex() innescando l interazione parser analizzatore lessicale. - La funzione yyerror() La sezione Programmi deve contenere una funzione che gestisce eventuali errori sintattici. Per semplicità, può essere usata la seguente funzione provvista da Yacc che stampa syntax error se viene riscontrato un errore: yyerror(char *s) { { fprintf(stderr, %\n, s); } 1.6 I costrutti union e return(0) Nel seguito accenniamo a due importanti problematiche: la gestione dei tipi di dato degli attributi semantici dei simboli grammaticali e la gestione della fine dell input. - il costrutto union Yacc assume per default che i valori degli attributi dei simboli grammaticali (e quindi il tipo della variabile esterna yylval e dei $i e $$) siano di tipo integer. Pertanto nel caso i tipi siano interi non bisogna fare nulla, altrimenti la gestione di tipi diversi dagli interi è possibile grazie al costrutto %union { } che va scritto nella seconda parte della sezione Dichiarazioni e in cui si possono definire nuovi tipi di dato usando la sintassi C (es. char tipo). - Quando si usa la union, i token che sono del nuovo tipo di dato vanno dichiarati nella sezione Dichiarazioni nella nuova forma: %token <tipo> TOKEN1 TOKEN2 - Anche il tipo di un non-terminale, se usato, va dichiarato con una direttiva (sempre nella sezione Dichiarazioni) della forma: %type <tipo> NONTERMINALE1 NONTERMINALE2 Nota: Se un token ha attributi di tipo non intero (ossia è stata usata la union ), allora l analizzatore lessicale ne dovrà restituire il valore attraverso l estensione yylval.tipo
5 - il costrutto return(0) Per terminare correttamente la sua esecuzione (ossia l interazione parsing analisi lessicale fra yyparse() e yylex()), Yacc si aspetta l istruzione return(0) che indichi quando l input è stato completamente esaminato. Infatti, nella sintassi Yacc 0 è un token riservato corrispondente all end-marker $. Per semplicità, si può assumere che questa istruzione sia posizionata come ultima azione a destra della produzione iniziale nella sezione Regole in modo che essa sia sicuramente eseguita a fine del processo di parsing. 1.7 Yacc e grammatiche ambigue Yacc risolve i conflitti usando le seguenti due euristiche di default: 1) Un conflitto reduce/reduce è risolto scegliendo la produzione conflittuante listata prima nella specifica Yacc 2) Un conflitto shift/reduce è risolto in favore dello shift La prima regola dà potere al programmatore, il quale dopo aver studiato la semantica delle azioni conflittuanti organizza appropriatamente le produzioni nell ordine desiderato, la seconda regola è adatta a risolvere correttamente l ambiguità in molti costrutti pratici quali ad esempio il dangling else. Se queste regole non sono ciò che il programmatore vuole, Yacc offre un meccanismo più generale per risolvere i conflitti shift/reduce assegnando associatività e precedenze ai terminali e alle produzioni della grammatica, e quindi scegliendo tra le azioni conflittuanti quella con precedenza più alta. - Associatività ai terminali Per assegnare associatività ai terminali della grammatica si usano le direttive Yacc (nella seconda parte della sezione DICHIARAZIONI): %left assegna associatività sinistra %right assegna associatività destra %nonassoc forza un operatore a essere non associativo (ossia è scorretta la sua combinazione) - Precedenze ai terminali Per assegnare precedenze ai terminali della grammatica si usano queste regole: i) Quando assegniamo le associatività si ha che tutti i terminali sulla stessa linea hanno lo stesso livello di precedenza ii) Le linee sono listate in ordine di precedenza maggiore dal basso Per esempio, se si considera il seguente frammento di programma Yacc:
6 %left A B %right C %left D possiamo dedurre che i token A, B e D sono associativi sinistri mentre il token C è associativo destro; inoltre D è il token con precedenza più alta, poi C e poi A e B che hanno la stessa precedenza. - Associatività e precedenze alle produzioni Per default Yacc assegna a ogni produzione della grammatica una associatività e una precedenza che sono le stesse del suo terminale più a destra. Questa regola è adeguata in molti casi pratici, tuttavia se il terminale più a destra non fornisce un livello di precedenza adatto la regola si può forzare attaccando nella specifica a fine produzione la direttiva Yacc: %prec <nome terminale> in modo da assegnare alla produzione lo stesso livello di precedenza e la stessa associatività del terminale specificato. In conclusione, possiamo riassumere la metodologia generale che Yacc usa per risolvere i conflitti: - Se ci sono conflitti shift/reduce e/o reduce/reduce e né i terminali né le produzioni della grammatica hanno assegnate associatività e precedenze, allora vengono usate le due euristiche Yacc di default - Se c è un conflitto shift/reduce e i terminali e le produzioni della grammatica hanno assegnate associatività e precedenze, allora il conflitto è risolto in favore dell azione (shift o reduce) che ha precedenza più alta - Se le precedenze sono le stesse allora si sceglie: - l azione di reduce se l associatività della produzione è sinistra - l azione di shift se l associatività della produzione è destra se invece la produzione è non associativa si ha errore
Dispensa YACC. 1.1 YACC: generalità
Dispensa YACC 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in
Analizzatore lessicale o scanner
Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,
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
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
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
Corso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
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.
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
EXPLOit Content Management Data Base per documenti SGML/XML
EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per
Inizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
Modulo 3 - Elaborazione Testi 3.5 Stampa unione
Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.5 Stampa unione Maria Maddalena Fornari Stampa Unione Processo che permette di unire dati provenienti da tipi
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à
void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
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
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
Linguaggio C - Stringhe
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
Introduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
Introduzione. Informatica B. Daniele Loiacono
Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione
Verifica che una grammatica sia Context Free nel GrammaReader
Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare
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
Excel. A cura di Luigi Labonia. e-mail: [email protected]
Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
Mon Ami 3000 Varianti articolo Gestione di varianti articoli
Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione
Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015
Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle
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
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
Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
MECCANISMI E POLITICHE DI PROTEZIONE 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
Amministrazione classi
Amministrazione classi Guida breve per il docente che amministra la classe Premessa Le classi vengono creata solo dall amministratore della Scuola. Il docente che è stato inserito nella classe come moderatore
Prova di Laboratorio di Programmazione
Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare
Amministrazione gruppi (all interno della Scuola)
Amministrazione gruppi (all interno della Scuola) Guida breve per il docente che amministra il gruppo Premessa Il gruppo viene creato solo dall amministratore della Scuola. Il docente che è stato inserito
Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
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.
Programmare in Java. Olga Scotti
Programmare in Java Olga Scotti Linguaggi di programmazione linguaggio macchina assembler linguaggi ad alto livello Linguaggi ad alto livello istruzioni comprensibili linguaggio simile a quello naturale
risulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
Amministrazione gruppi (Comunità)
Amministrazione gruppi (Comunità) Guida breve per il docente che amministra il gruppo Premessa Di regola i gruppi sono creati all interno della Scuola. Nel caso in cui vi fosse la necessità di aprire un
Mac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
RISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
Database. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione
Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento
Alcune regole di base per scrivere un programma in linguaggio C
Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza
COSTER. Import/Export su SWC701. SwcImportExport
SwcImportExport 1 Con SWC701 è possibile esportare ed importare degli impianti dal vostro database in modo da tenere aggiornati più Pc non in rete o non facente capo allo stesso DataBase. Il caso più comune
Metodologie di programmazione in Fortran 90
Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di
Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.
Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL. 2ELHWWLYL GD UDJJLXQJHUH SHU JOL VWXGHQWL alla fine dell esercitazione gli studenti dovranno essere in grado di: 1. utilizzare
1 ACCESSO AL NET@PORTAL... 3 2 CARICAMENTO DELLE RICHIESTE/PRESTAZIONI... 4 3 MONITORAGGIO DELLE RICHIESTE... 8 4 DOWNLOAD ESITI...
MANUALE UTENTE NET@PORTAL ADEGUAMENTO DEL. 185/08 Sommario 1 ACCESSO AL NET@PORTAL... 3 2 CARICAMENTO DELLE RICHIESTE/PRESTAZIONI... 4 2.1 CREAZIONE DEL FILE CSV PER IL CARICAMENTO MASSIVO DELLE RICHIESTE...
5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record
5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1
Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
Yet Another Compiler-Compiler. Generazione automatica di analizzatori sintattici
Yet Another Compiler-Compiler Generazione automatica di analizzatori sintattici 2 YACC Yet Another Compiler-Compiler YACC (Bison) è un generatore di analizzatori sintattici a partire dalla descrizione
ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++
ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è
Raggruppamenti Conti Movimenti
ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli
NOZIONI BASE PER ESERCITAZIONI
NOZIONI BASE PER ESERCITAZIONI Shahram Rahatlou Laboratorio di Calcolo, Anno Accademico 2015-16 http://www.roma1.infn.it/people/rahatlou/labcalc/ Sistema Operativo Hardware Software n Routine e programmi
FtpZone Guida all uso Versione 2.1
FtpZone Guida all uso Versione 2.1 La presente guida ha l obiettivo di spiegare le modalità di utilizzo del servizio FtpZone fornito da E-Mind Srl. All attivazione del servizio E-Mind fornirà solamente
Veneto Lavoro via Ca' Marcello 67/b, 30172 Venezia-Mestre tel.: 041/2919311
Veneto Lavoro via Ca' Marcello 67/b, 30172 Venezia-Mestre tel.: 041/2919311 INDICE 1. INTRODUZIONE... 3 1.1 SCADENZA... 3 1.2 CAUSALE DA UTILIZZARE... 3 2. MODALITÀ OPERATIVE DI COMUNICAZIONE DATI... 4
Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati
Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Lezione 10 - Modulo 1 Perchè
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
Descrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
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
Capitolo 4 Pianificazione e Sviluppo di Web Part
Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,
Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza
I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.
UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d
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.
Strutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
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
Gestione Risorse Umane Web. Gestione della foto in stampa unione. Versione V01
Gestione Risorse Umane Web Gestione della foto in stampa unione Versione V01 1 Sommario...2 Premessa...3 Gestione manuale del modello di stampa unione...4 Definizione dei campi che compongono l estrazione...4
Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
Modellazione dei dati in UML
Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):
La selezione binaria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per
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
Progettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
Esercitazioni di Linguaggi e Traduttori
1 Linguaggi CF e Riconoscitori 2 Introduzione a Yacc Introduzione a YACC Definizione dei simboli Codifica della grammatica Formato del programma prodotto da YACC Ambiguità e conflitti Conflitti shift-reduce
Cenni su algoritmi, diagrammi di flusso, strutture di controllo
Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni
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
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
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
connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI
Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti
Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass
0_Iniziare con GRASS Avvio di Grass e creazione della cartella del Database di GRASS Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass
La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete
La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication
Organizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Progetto Automi e Linguaggi Parser svliluppato con JLex e cup
Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la
Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari
Programmazione C Massimo Callisto De Donato [email protected] www.cs.unicam.it/massimo.callisto
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato [email protected] www.cs.unicam.it/massimo.callisto LEZIONE
7.4 Estrazione di materiale dal web
7.4 Estrazione di materiale dal web Salvataggio di file Salvataggio della pagina Una pagina web può essere salvata in locale per poterla consultare anche senza essere collegati alla Rete. Si può scegliere
UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)
Codice documento 10091501 Data creazione 15/09/2010 Ultima revisione Software DOCUMATIC Versione 7 UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO) Convenzioni Software gestionale
Protezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
FtpZone Guida all uso
FtpZone Guida all uso La presente guida ha l obiettivo di spiegare le modalità di utilizzo del servizio FtpZone fornito da E-Mind Srl. All attivazione del servizio E-Mind fornirà solamente un login e password
Presidenza del Consiglio dei Ministri
Manuale utente (front office) Aggiornato al 14 luglio 2011 Sommario 1. INTRODUZIONE... 3 2. MODALITÀ OPERATIVA... 4 2.1 Utenti ammessi alla trasmissione del file XML... 4 2.2 Controllo effettuato dal sistema
Manuale Utente. Gestione Richieste supporto Data Warehouse. Della Ragioneria Generale dello Stato. Versione 1.0. Roma, Ottobre 2015
Manuale Utente Gestione Richieste supporto Data Warehouse Della Ragioneria Generale dello Stato Versione 1.0 Roma, Ottobre 2015 1 Indice 1 Generalità... 3 1.1 Scopo del documento... 3 1.2 Versioni del
10 - Programmare con gli Array
10 - Programmare con gli Array 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
SOMMARIO... 3 INTRODUZIONE...
Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
PORTALE CLIENTI Manuale utente
PORTALE CLIENTI Manuale utente Sommario 1. Accesso al portale 2. Home Page e login 3. Area riservata 4. Pagina dettaglio procedura 5. Pagina dettaglio programma 6. Installazione dei programmi Sistema operativo
Libero Emergency PC. Sommario
Emergenza PC (Garantisce le funzionalità di base delle operazioni di prestito e restituzione in caso di problemi tecnici sulla linea o di collegamento con il server) Sommario 1. Emergency PC...2 2. Iniziare
Editor vi. Editor vi
Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta
Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software
Volume GESTFLORA Gestione aziende agricole e floricole Guidaall uso del software GESTIONE AZIENDE AGRICOLE E FLORICOLE Guida all uso del software GestFlora Ver. 2.00 Inter-Ware Srl Viadegli Innocenti,
