Progetto Automi e Linguaggi Parser svliluppato con JLex e cup
|
|
- Alessandra Rossetti
- 2 anni fa
- Visualizzazioni
Transcript
1 Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06
2 TRACCIA DEL PROGETTO Si costruisca, utilizzando la coppia di programmi JLex e CUP, un parser in grado di riconoscere un linguaggio che descrive dei capi di abbigliamento ed attribuisca loro delle valutazioni. Il linguaggio consente delle categorie di capi di abbigliamento; per ognuna è possibile definire un insieme di attributi che si applicano ad una categoria ed assegnare agli attributi un peso, utile per la valutazione complessiva di un abbigliamento. Dopo la definizione delle categorie dei capi d abbigliamento possono comparire le descrizioni dei prodotti che assegnano una valorizzazione agli attributi. Una valorizzazione è formata da un valore, descritto con un simbolo ( '-', '+', '*'), e da un nome di attributo. Il significato dei simboli è descritto nella seguente tabella: Simbolo Significato Valore * Eccellente 3 + Buono 2 - Sufficiente 1 Il programma deve riconoscere il linguaggio descritto precedentemente e deve stampare, suddivisi per categorie, l elenco dei prodotti con il loro punteggio. Se nella descrizione non è presente un attributo presente nella definizione del capo di abbigliamento allora a tale attributo viene assegnato il valore di default 1. Quando il programma incontra un errore, sia sintattico che semantico, deve segnalarlo e terminare l'esecuzione: non è richiesta la gestione ed il recupero degli errori. Dato il seguente ingresso: // Definizione dei capi di abbigliamento: abito = [rifiniture->10, tessuto->8]; camicia = [rifiniture->10, tessuto->8];? // Descrizione dei capi di abbigliamento : abito di BOSS = rifiniture *, tessuto -: abito; abito di Valentino = rifiniture *, tessuto +: abito; camicia di Armani = rifiniture +, tessuto +: camicia; Esempio Il programma dovrebbe produrre il seguente output; il formato non è vincolante, invece le informazioni contenute lo sono: Punteggi raggiunti: Abito di Boss, 38 Abito di Valentino, 46 Camicia di Armani, 36
3 DESCRIZIONE GENERALE DEL PROGETTO Data una sequenza di simboli in ingresso, si vuole sviluppare un programma che verifica se la sequenza appartiene o no al linguaggio definito dalla grammatica. E necessario un analizzatore sintattico (parser) : un programma che è in grado di associare alla sequenza di simboli in ingresso il relativo albero di derivazione. Deve essere di tipo bottom-up (dalle foglie alla radice), un software di questo tipo è CUP. CUP è un generatore di analizzatori sintattici o parser che trasforma la descrizione di una grammatica context-free in un programma Java per riconoscere ed analizzare la grammatica stessa. Oltre alle regole sintattiche, è possibile specificare quali azioni devono essere eseguite in corrispondenza del riconoscimento dei vari simboli della grammatica. E necessario integrare il parser così generato con un analizzatore lessicale: alcune convenzioni permettono di eseguire l integrazione di Cup con lo scanner JLex in modo semplificato. Ed è stato creato uno script che effettua questo compito. Setup, verrà impostata l integrazione con JLex e le funzioni e variabili per i calcoli Terminali e Non Terminali, tutti i simboli da utilizzare nel programma Precedenze - Regole, espressioni che legano i simboli terminali e non terminali Dopo aver prodotto il sorgente si opererà in questo modo: JLEX : E un Analizzatore lessicale o scanner che si occupa di analizzare uno stream di caratteri in input e produrre in uscita uno stream di tokens(hanno un tipo e un valore) che costituiscono gli elementi base su cui andrà ad operare un analizzatore sintattico cup. I sorgenti hanno la seguente struttura User code, verranno inserite le informazioni per l integrazione con cup %% Jlex directives %% Regolar Expression Rules, tutti I simboli da intercettare Dopo aver prodotto il sorgente si opererà in questo modo:
4 INTEGRAZIONE DI CUP E JLEX I due programmi vengono interfacciati secondo il seguente schema : I passaggi sono stati automatizzati da uno script che esegue le compilazioni dei codici e alla fine esegue il codice. Script.bat del Yylex.java del sym.java del parser.java rmdir /S /Q Example La prima parte si occupa di rimuovere i codici compilati eventualmente già presenti nella directory java JLex.Main minimal.lex move minimal.lex.java Yylex.java java java_cup.main < minimal.cup javac -d. *.java java Example.parser La seconda parte segue lo schema precedente Alla fine viene lanciato il codice prodotto Lo script in formato.bat è eseguibile in sistemi di tipo DOS\WINDOWS ma con le dovute modifiche si può eseguire su sistemi GNU\Linux. Lo script richiede che sia inserito in una directory del tipo.../myjlex/j e che al suo interno vi siano le directory con i sorgenti compilati di JLEX e CUP, è anche necessario che sia impostato nel path la cartella.../myjlex/j. I due file che l utente dovrà produrre saranno esclusivamente minimal.lex e minimal.cup scelti in questo modo perché disponibili direttamente sul sito ufficiale di cup.
5 DEFINIZIONE DEL SORGENTE CUP Descrizione della grammatica Il file cup dovrà prendere in ingresso i simboli TERMINALI forniti da JLex e riconoscere se appartenenti alla grammatica tramite le produzioni dei simboli NON TERMINALI. E anche necessario compiere delle operazioni che consentano di effettuare gli opportuni calcoli previsti dalla traccia, a questo scopo sono state definite delle strutture dati e delle funzioni che agevolano tele compito. Sono proposti : in blu il codice cup, in nero le produzioni della grammatica, in corsivo i simboli non terminali e in corsivo grassetto i simboli terminali //SIMBOLI TERMINALI terminal paperta,pchiusa,pvirgola,uguale,virgola,freccia,pinter,duepunti,asterisco,piu,meno; terminal String stringa; terminal Integer numero; Questi simboli sono intercettati da JLex e costituiscono la base per la creazione di espressioni con i simboli non terminali Stringa e numero hanno una definizione propria perché dovranno essere associate a delle variabili. //SIMBOLI NON TERMINALI non terminal radice,interrog,listadef,definizione,listaattrib,attrib,listadescrizione,descrizione,listavalorattrib,valorattrib; I simboli non terminali verranno usati nelle produzioni //PRODUZIONE PRINCIPALE start with radice; Rappresenta la radice dell albero di derivazione E lecita una sola occorrenza di questa parola chiave //DEFINIZIONE DELLA GRAMMATICA radice ::= interrog listadef interrog listadescrizione interrog; radice? listadefinizioni? listadescrizioni? //PRODUZIONE DI DEFINIZIONI listadef ::= listadef definizione definizione ; definizione ::= stringa uguale paperta listaattrib pchiusa pvirgola; listaattrib ::= listaattrib virgola attrib attrib ; attrib ::= stringa freccia numero ; listadefinizioni listadefinizioni definizione definizione definizione stringa = [ ListaAttibuti ]; ListaAttrubuti ListaAttributi, attributo attributo attributo stringa -> numero //PRODUZIONE DI DESCRIZIONE listadescrizione ::= listadescrizione descrizione descrizione ; descrizione ::= stringa uguale listavalorattrib duepunti stringa pvirgola; listavalorattrib ::= listavalorattrib virgola valorattrib valorattrib ; valorattrib ::= stringa asterisco stringa piu stringa meno ; ListaDescrizione ListaDescrizione descrizione descrizione descrizione stringa = ListaValoreAttributo : stringa ; ListaValoreAttributo ListaValoreAttributo, ValoreAttributo ValoreAttributo ValoreAttributo stringa * stringa + stringa -
6 DEFINIZIONE DEL SORGENTE CUP Definizione delle strutture dati Dopo aver riconosciuto la grammatica si devono effettuare i calcoli per produre l output desiderato. La parte delle definizioni e la parte delle descrizioni creano due strutture dati sulle quali si effettueranno i dovuti calcoli per produrre la sequenza di uscita. DEFINIZIONI Dato un input come: abito = [rifiniture->10, tessuto->8]; camicia = [rifiniture->10, tessuto->8]; Dovrà produrre una tabella come: Rifiniture Tessuto Abito 10 8 Camicia 10 8 Tale tabella dovrà essere implementata fisicamente come: String capi[]; //Vettore colonna a sinistra della matrice String attibuti[]; //Vettore riga sopra alla matrice int [][]matrice ; //Memorizza informazione sui pesi dato che gli attributi e i capi sono vettori di stringhe e i pesi sono inseriti in una matrice di interi DESCRIZIONI Dato un input come: abito di BOSS = rifiniture *, tessuto -: abito; abito di Valentino = rifiniture *, tessuto +: abito; camicia di Armani = rifiniture +, tessuto +: camicia; Dovrà produrre una tabella come: Nome capo Tipo capo rifiniture tessuto abito di BOSS Abito (1) * (3) - (1) abito di Valentino Abito (1) * (3) + (2) camicia di Armani Camicia (2) + (2) + (2) Tale tabella dovrà essere implementata fisicamente come: String vettdescr[]; //Vettore dei nomi delle descrizioni int tipodescr[]; //Contiene la tipologia dei capi int [][]matriceattr; //Matrice che contiene il valore degli attributi
7 Occorre produrre un output del tipo: Punteggi raggiunti: Abito di Boss, 38 Abito di Valentino, 46 Camicia di Armani, 36 DEFINIZIONE DEL SORGENTE CUP Calcoli per produrre l output Per realizzarlo si dovrà procedere ad operare parallelamente sulle due matrici, scorrendo tutte le righe della tabella 2, per ogni riga si dovrà proporre un risultato. Per calcolare il risultato di ogni riga si dovranno allineare le tabelle con : l indice di riga della tabella 1 e il valore della riga considerata del vettore TipoCapo nella tabella 2 Dopo avere allineato le due righe delle tabelle opportunamente, si potrà effettuare la sommatoria per tutte le righe utili : Σ( Tabella1[descrizione]*Tabella2[descrizione] ) Il codice che effettua tale operazione è : int i=0; //indice di riga int k; //indice di colonna int risultato; //accumulatore dei risultati parziali for (k=1;k<=9;k++){ risultato=0; for (i=1;i<=9;i++) risultato = risultato+(matrice[tipodescr[k]][i]*matriceattr[k][i]); Stampa (risultato);
8 DEFINIZIONE DEL SORGENTE JLEX Lo scanner dovrà intercettare i simboli in input da tastiera, in caso di stringa o numero dovrà essere istanziata una nuova variabile che verrà trattata in modo opportuno da cup SIMBOLI SEMPLICI stringa=[a-za-z] %% "[" { return new Symbol(sym.paperta); "]" { return new Symbol(sym.pchiusa); ";" { return new Symbol(sym.pvirgola); "=" { return new Symbol(sym.uguale); "," { return new Symbol(sym.virgola); "->" { return new Symbol(sym.freccia); "?" { return new Symbol(sym.pinter); ":" { return new Symbol(sym.duepunti); "*" { return new Symbol(sym.asterisco); "+" { return new Symbol(sym.piu); "-" { return new Symbol(sym.meno); SIMBOLI COME VARIABILE {stringa* { return new Symbol(sym.stringa, new String(yytext())); [0-9]+ { return new Symbol(sym.numero, new Integer(yytext())); [ \t\r\n\f] { /* ignora spazi bianchi. */. { System.err.println("Carattere non consentito: "+yytext()); L integrazione con cup e in generale con il progetto è effettuata all inizio del codice con : package Example; import java_cup.runtime.symbol; %% %cup
9 package Example; import java_cup.runtime.*; action code {: SORGENTE CUP : minimal.cup pag1 //DEFINIZIONE VARIABILI GLOBALI int sezione=0; int capi_now=0; //Variabile di stato che indica a quale capo ci si riferisce(indice vet) int attrib_now=0; //Variabile di stato che indica a quale attributo ci si riferisce(indice vet) //VARIABILI PER LA DEFINIZIONE //Tabella 1 int [][]matrice ; //Memorizza informazione sui pesi String capi[]; //Vettore colonna a sinistra della matrice String attibuti[]; //Vettore riga sopra alla matrice String nomedescr; //Il nome della descrizione visualizzato in output //VARIABILI PER LA DESCRIZIONE //Formano tabella 2 String vettdescr[]; //Vettore dei nomi delle descrizioni ex AbitoDiUgoBoss int tipodescr[]; //Contiene la tipologia dei capi int [][]matriceattr; //Matrice che contiene gli attributi int postabdue = 1; //Indica in che posizione ci si trova della tabella 2 nell'input //Inizializza ed istanzia i dati void gestiscisezione() { if (sezione==1) { int i; //Scorre le colonne int k; //Scorre le righe //Tabella 1 matrice = new int[10][10]; capi = new String[10]; attibuti = new String[10]; //Tabella 2 vettdescr = new String[10]; matriceattr = new int[10][10]; tipodescr = new int[10]; //inizializza dati //Tabella 1 for (i=1;i<=9;i++){capi[i]="nullo"; for (i=1;i<=9;i++){attibuti[i]="nullo"; for (i=1;i<=9;i++){ for (k=1;i<=9;i++){matrice[i][k]=0; //Tabella 2 for (i=1;i<=9;i++){vettdescr[i]="nullo"; for (i=1;i<=9;i++){tipodescr[i]=0; for (i=1;i<=9;i++){ for (k=1;i<=9;i++){matriceattr[i][k]=0; //End SEZIONE 1 //END funzione gestiscisezione
10 SORGENTE CUP : minimal.cup pag 2 //Calcola e visualizza i risultati void stampa(){ int i=0; //indice di riga int k; //indice di colonna int risultato; //accumulatore dei risultati parziali System.out.println(""); for (k=1;k<=9;k++){ risultato=0;ù for (i=1;i<=9;i++){risultato=risultato+(matrice[tipodescr[k]][i]*matriceattr[k][i]); if(risultato==0)system.out.print(""); else {System.out.print(vettdescr[k]);System.out.print(",");System.out.println(risultato); //End funzione stampa void addattrib(string s,int n) { int i=0; int postrovato=0; //indica dove è stato trovato while (postrovato==0){ i=i+1; if (s.equals(attibuti[i])) postrovato=i; else if (attibuti[i].equals("nullo")) {attibuti[i]=s; postrovato=i; attrib_now=postrovato; matrice[capi_now][attrib_now]=n; //Riceve in input una descrizione del tipo NOME VALORE(*+-) void nuovadescr(string s,int valore) { int i=0; int postrovato=0; //indica dove è stato trovato //Trova l'indice vettore dove si trova l'attributo s while (postrovato==0){ i=i+1; if (s.equals(attibuti[i])) postrovato=i; matriceattr[postabdue][postrovato]=valore; //Da una stringa restituisce la posizione del vettore CAPO int trovacapo(string s) { int i=0; int postrovato=0; //indica dove è stato trovato //Trova l'indice vettore dove si trova l'attributo s while (postrovato==0){ i=i+1; if (s.equals(capi[i])) postrovato=i; return(postrovato);
11 SORGENTE CUP : minimal.cup pag3 //Aggiunge un attributo alla lista degli attributi void addcapo(string s) { int i=0; int postrovato=0; //indica dove è stato trovato while (postrovato==0){ i=i+1; if (s.equals(capi[i])) postrovato=i; else if (capi[i].equals("nullo")) {capi[i]=s; postrovato=i; capi_now=postrovato; :;//FINE ACTIONE CODE parser code {: public static void main(string args[]) throws Exception { new parser(new Yylex(System.in)).parse(); : //SIMBOLI TERMINALI terminal paperta,pchiusa,pvirgola,uguale,virgola,freccia,pinter,duepunti,asterisco,piu,meno; terminal String stringa; terminal Integer numero; //SIMBOLI NON TERMINALI non terminal radice,interrog,listadef,definizione,listaattrib,attrib,listadescrizione,descrizione,listavalorattrib,valorattrib; //PRODUZIONE PRINCIPALE start with radice; //DEFINIZIONE DELLA GRAMMATICA radice ::= interrog listadef interrog listadescrizione {: System.out.println(""); System.out.println("GRAMMATICA RICONOSCIUTA"); stampa(); :interrog; //PRODUZIONE DI DEFINIZIONI interrog ::= {:sezione=sezione+1; gestiscisezione(); : pinter ; listadef ::= listadef definizione definizione ; definizione ::= stringa:sdefin{: addcapo(sdefin); : uguale paperta listaattrib pchiusa pvirgola; listaattrib ::= listaattrib virgola attrib attrib ; attrib ::= stringa:sattrib freccia numero:n {: addattrib(sattrib,n); :; //PRODUZIONE DI DESCRIZIONE listadescrizione ::= listadescrizione descrizione descrizione ; descrizione ::= stringa:s1 {: vettdescr[postabdue]=s1; : uguale listavalorattrib duepunti stringa:s2{: tipodescr[postabdue]=trovacapo(s2); postabdue=postabdue+1; : pvirgola; listavalorattrib ::= listavalorattrib virgola valorattrib valorattrib ; valorattrib ::= stringa:s1 asterisco {:nuovadescr(s1,3); : stringa:s2 piu {: nuovadescr(s2,2); : stringa:s3 meno {: nuovadescr(s3,1); : ;
12 SORGENTE JLlex : minimal.lex package Example; import java_cup.runtime.symbol; %% %cup stringa=[a-za-z] %% "[" { return new Symbol(sym.paperta); "]" { return new Symbol(sym.pchiusa); ";" { return new Symbol(sym.pvirgola); "=" { return new Symbol(sym.uguale); "," { return new Symbol(sym.virgola); "->" { return new Symbol(sym.freccia); "?" { return new Symbol(sym.pinter); ":" { return new Symbol(sym.duepunti); "*" { return new Symbol(sym.asterisco); "+" { return new Symbol(sym.piu); "-" { return new Symbol(sym.meno); {stringa* { return new Symbol(sym.stringa, new String(yytext())); [0-9]+ { return new Symbol(sym.numero, new Integer(yytext())); [ \t\r\n\f] { /* ignora spazi bianchi. */. { System.err.println("Carattere non consentito: "+yytext());
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
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
Prova d Esame 07.04.2006 Compito A
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public
Prova d Esame 07.04.2006 Compito B
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public
Unità B3 Strutture di controllo
(A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture
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
Esercitazione n 4. Obiettivi
Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:
Dispensa 3. 1.1 YACC: generalità
Dispensa 3 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 un
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,
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.
con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505
tesi di laurea con ANTLR Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 Obiettivo Analisi statica di codice sorgente, realizzato in javascript,
Scrivere un programma in Java
Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/
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
Programmazione in Java (I modulo) Lezione 3: Prime nozioni
Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per
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,
Primi programmi in Java. Lezione IV
Primi programmi in Java Lezione IV Scopo della lezione Realizzare dei semplici programmi scritti in Java. Esercitarsi nelle operazioni necessarie per passare dalla scrittura di codice Java all esecuzione
Scope e visibilità per classi
Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:
ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];
ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)
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
Le command line di Java
Le command line di Java Esercitazioni di Programmazione 2 Novella Brugnolli brugnoll@science.unitn.it Ambiente di lavoro Per compilare ed eseguire un programma Java abbiamo bisogno di: The JavaTM 2 Platform,
Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse
Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina
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
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
Fondamenti di programmazione in Java. Lezione III
Fondamenti di programmazione in Java Lezione III Scopo della lezione Descrivere gli strumenti che utilizzeremo nel resto del corso per sviluppare programmi in java UltraEdit Java SDK Imparare a scrivere
Struttura di un programma Java
Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che
La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD
La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e
Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione
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,
14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
14 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
Corso di Informatica
Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio
UML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le
Appunti di Informatica www.mimmocorrado.it 1
Installare Java Il programma può essere scaricato dal seguente indirizzo: http://www.java.com/it/download/windows_ie.jsp?locale=it&host=www.java.com Per installare la JDK è necessario: 1. scaricare il
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
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
Esercitazione 4 JDBC
JDBC Obiettivi dell esercitazione Familiarizzare con l'organizzazione dell'ambiente di lavoro per la realizzazione di applicazioni Java Utilizzare i costrutti di base della libreria JDBC per 1. la gestione
Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
Linguaggi di programmazione
Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input
Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java
Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria
Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO
Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato
Laboratorio di Informatica Lezione 2
Laboratorio di Informatica Lezione 2 Cristian Consonni 30 settembre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 2 1 / 42 Outline 1 Commenti e Stampa a schermo 2 Strutture di controllo 3
Laboratorio di Informatica Lezione 4
Laboratorio di Informatica Lezione 4 Cristian Consonni 28 ottobre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 4 1 / 42 Outline 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte
Compute engine generici in RMI
Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del
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
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
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione
Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:
15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
15 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide